小编zhx*_*n17的帖子

Sublime Text 3如何更改文件侧边栏的字体大小?

虽然我试图在包"Theme-Default"中修改"Label_control"和"sidebar_control"等类中的"font.size",但编辑器的字体大小根本不会改变.崇高的text3有什么不同吗?

sublimetext sublimetext3

110
推荐指数
7
解决办法
9万
查看次数

编程语言中的类型声明从何而来?

当我们在 C/C++ 中定义一个函数时,我们输入类似

int add(int a, int b){
    return a+b;
}
Run Code Online (Sandbox Code Playgroud)

然而,我们在函数中实际做的事情是获取两个可求和的东西的总和并返回其值。在许多早期创建的编程语言中,例如 Algol、C、pascal,您应该先声明变量的类型,然后再对其进行一些操作。此外,这在很多主流语言中都是必需的,例如 Java、C#(尽管它有诸如“var”之类的关键字)。

在 Python 等许多动态编程语言中,我们将之前的函数重写为:

def add(a,b):
    return a+b
Run Code Online (Sandbox Code Playgroud)

没有函数和参数的“类型标识符”。我在想的是,与C/C++等语言相比,Python版本似乎更接近程序员心目中的原始想法:只是封装了两个数字相加并返回总和的行为。

另一方面,在实践中,这些类型声明对我减少错误有很大帮助,例如,如果我只想要两个数字的总和,我不会将字符串传递给“add”函数。如果我传递两个字符串,编译器会将其视为错误。在这个例子中,类型声明似乎是对代码的保护。

但让我感到困惑的是,为什么这么多早期创建的语言需要对变量进行类型声明?为什么大多数具有类型声明的语言出现得更早,而大多数具有更简单语法版本的语言出现在历史上?

我知道我们无法确定哪种方法“更好”,而且它们都是图灵完备的,但我很好奇为什么早期的语言创建者不选择更直观、更简单的语法,即 100% 专注于函数的实现,但选择添加类型标识符作为语言的必需部分(问题 1)?另外,在早期,人们对代码应该是什么样子的印象非常模糊,所以我猜类型标识符的想法一定来自某个地方。我的第二个问题是类型声明的想法从何而来(数学?实践?还是其他地方?)?我想如果我知道答案,我会对“类型”有更好的理解。

types programming-languages

2
推荐指数
1
解决办法
221
查看次数

像“clojure.lang.PersistentVector$ChunkedSeq”这样的类型在clojure中是什么意思?

在 clojure REPL 中,当我输入

(type (seq [0 1 2 3]))
Run Code Online (Sandbox Code Playgroud)

并评估它,我得到了“clojure.lang.PersistentVector$ChunkedSeq”,但“clojure.lang.PersistentVector”本身是clojure中的一个类。为什么有“$ChunkedSeq”,符号“$”是什么意思?

谢谢!

clojure

0
推荐指数
1
解决办法
644
查看次数