Syntax 什么使语言可读或不可读?
我听说人们说一年后他们可以理解python代码,但不能理解XYZ代码。为什么?我不知道python语法的优点是什么,也不知道另一种语法的缺点是什么。我喜欢C#,但我觉得VB.NET代码更容易阅读。我在做语言设计,所以你觉得代码/语法/语言可读还是不可读?当一个字符就足够时需要一个词-Pascal和VB花园中的一块石头 比较:Syntax 什么使语言可读或不可读?,syntax,language-design,whitespace,readability,Syntax,Language Design,Whitespace,Readability,我听说人们说一年后他们可以理解python代码,但不能理解XYZ代码。为什么?我不知道python语法的优点是什么,也不知道另一种语法的缺点是什么。我喜欢C#,但我觉得VB.NET代码更容易阅读。我在做语言设计,所以你觉得代码/语法/语言可读还是不可读?当一个字符就足够时需要一个词-Pascal和VB花园中的一块石头 比较: Block () Begin // Content End vs 它需要额外的大脑处理来阅读一个单词,并在心理上将其与一个概念联系起来,而单个符号会立即被其图像识别出
Block ()
Begin
// Content
End
vs
它需要额外的大脑处理来阅读一个单词,并在心理上将其与一个概念联系起来,而单个符号会立即被其图像识别出来
这与自然语言、普通文本语言和带有象形文字的符号语言(亚洲组)的区别是一样的。第一组的处理速度较慢,因为基本上文本被解析为一组概念,而象形文字则表示概念本身。将其与您已经知道的内容进行比较—从XML进行序列化/反序列化是否比在二进制格式上进行自定义搜索更快?体验 在我看来,重要的事情之一是显著的空白。块缩进有很长的路要走,像Python和F#这样提供大量空白的语言有助于提高可读性
像Java和C这样的代码往往是结构化的,可读性成为它如何开始编码的焦点,而不是语言本身的焦点。我试着说,代码的简单性使其可读 你必须第一眼看到它的作用和目的。为什么要写一千行代码,而只有少数代码可以完成所需的工作
例如,这就是像F#这样的函数式语言的精髓。这就是干净的代码 保持它的小型、简单、命名良好和格式化
class ShoppingCart {
def add(item) {
println "you added some $item"
}
def remove(item) {
println "you just took out the $item"
}
}
def myCart = new ShoppingCart()
myCart.with {
add "juice"
add "milk"
add "cookies"
add "eggs"
remove "cookies"
}
对我来说,这主要是语言是否允许你开发更具可读性的抽象,从而避免在细节中迷失方向的问题。
这就是OOP在隐藏细节方面非常方便的地方。如果我可以将任务的详细信息隐藏在具有共同概念(即C++中的迭代器)行为的接口后面,我通常不必阅读实现细节。通常认为Python可读的是它强制标准化缩进。这意味着您永远不会被迫怀疑自己是否处于if块或函数中,这一点非常清楚。因此,即使编写得很糟糕的代码也变得显而易见 <> P>一个我通常认为难以阅读的语言是PHP,因为同样的原因(或者相反,它是相反的)。由于程序员可以随意缩进,并将变量存储在任何地方,因此它可能会很快变得复杂。此外,由于PHP历史上没有区分大小写的函数名(我相信PHP<4.4.7),这意味着核心语言的实现也不一致。。。(别误会我的意思,我喜欢这种语言,但一个糟糕的程序员真的会把事情搞得一团糟) JavaScript对于没有纪律的开发人员也有很多问题。您会发现自己想知道变量是在哪里定义的,您在什么范围内。代码不会放在一个整合的地方,而是分布在多个文件中,并且经常潜伏在意外的地方 动作脚本3稍微好一点。一般来说,大家都在使用类似的语法,Adobe甚至定义了自己的标准,并使其易于访问和通用。盈利公司支持的ECMAScript实现如何优于通用的ECMAScript实现并不需要太多时间。我认为,语言设计(针对普通语言,而不是brainfuck:)并不重要。要使代码可读,您应该遵循标准、代码约定,并且不要忘记重构 我听说人们说一年后他们可以理解python代码,但不能理解XYZ代码。为什么? 首先,我不认为人们仅仅根据语法来说。还有许多其他因素需要考虑,仅举几个例子:
嗯,这就是我对Python可读性的看法。嗯,计算机语言越像口语,它的可读性就越强。举个极端的例子,比如J、空格或Brainfuck。。。未经训练的眼睛完全看不懂
但一种类似英语的语言更容易理解。正如COBOL所证明的那样,这并不是说它是最好的语言。我认为它更多地与编写代码的人有关,而不是与实际语言本身有关。您可以用任何语言编写非常可读的代码,也可以用任何语言编写不可读的代码。即使是复杂的正则表达式也可以格式化和注释,以使其易于阅读 我的一位同事曾经说过一句话:“你可以用任何语言编写垃圾代码。”我喜欢这句话,今天想与大家分享。什么使代码可读?这是我的想法
class ShoppingCart {
def add(item) {
println "you added some $item"
}
def remove(item) {
println "you just took out the $item"
}
}
def myCart = new ShoppingCart()
myCart.with {
add "juice"
add "milk"
add "cookies"
add "eggs"
remove "cookies"
}
expr = if not (ConditionA and ConditionB) then ... else ...
expr = (!(conditionA && conditionB)) ? ... : ...
foreach line in lines:
if (line =~ /regex/):
// code
... if /regex/ foreach(@lines);
x = length [ x | x <- [1..10], even x ]
int x = 0;
for (int i = 1; i <= 10; ++i)
if ((i&&1)==0) ++x;
// PHP
foreach ($array as $variable) ...
// Ruby
array.each{ |variable| ... }
// Python
for variable in array ...
// Java
for (String variable : array)
// PHP
foreach ($user as $_user) ...
if [1,2,3].include? variable then ... end
if (variable != 1 || variable != 2 || variable != 3) { ... }
(loop
do for tweet = (master-response-parser (twitter-show-status tweet-id))
for tweet-id = tweet-id then (gethash in-reply-to tweet)
while tweet-id
collecting tweet)
listOfFacs = [x | x <- [1 ..], x == sumOfFacDigits x]
where sumOfFacDigits x = sum [factorial (x `div` y) | y <- [1 .. 10]]