Dan*_*ski 16 syntax language-features language-design
我有兴趣阅读一些最近的语言与语言问题... Perl与Python,Python与Java,一种语言可以比另一种语言更好吗?
我注意到的一件事是我们很多人都有不喜欢语言的非常肤浅的理由.我们乍看之下注意到了这些事情,他们拒绝了我们.如果我们烦恼的话,我们可以避免在2秒内学会爱或忽略的功能,这些功能可能是完美的语言.
好吧,我和下一个人一样愧疚,如果不是更多的话.开始:
puts
命令,这是一种幼稚的意第绪语解剖术语.因此,即使我应该,也不能认真对待Ruby代码.Dim
用于声明变量的东西,因为我记得当它仅用于维度数组时,GW-BASIC的好日子.什么语言没有看我的权利乍一看?Perl,C,QBasic,JavaScript,汇编语言,BASH shell,FORTH.
好的,既然我已经播放了我的脏衣服......我想听你的. 你的语言挂断是什么?什么肤浅的功能打扰你?你是如何克服它们的?
Way*_*yne 32
我讨厌Hate HATE"End Function"和"End IF"以及"If ... Then"部分的VB.我更愿意看到一个大括号.
Dea*_*her 22
PHP的函数名称不一致.
// common parameters back-to-front
in_array(needle, haystack);
strpos(haystack, needle);
// _ to separate words, or not?
filesize();
file_exists;
// super globals prefix?
$GLOBALS;
$_POST;
Run Code Online (Sandbox Code Playgroud)
lou*_*dej 19
我从来没有真正喜欢在一些脚本shell中拼写的关键字
if-then- fi是不够糟糕的,但是case-in- esac只是变得愚蠢
帕斯卡Begin
和End
.太冗长,不受括号匹配的影响,更糟糕的是,并不是Begin
每一个End
,例如.
Type foo = Record
// ...
end;
Run Code Online (Sandbox Code Playgroud)
虽然我主要是一个PHP开发人员,但我不喜欢那些不能让我在线内做足够事情的语言.例如:
$x = returnsArray();
$x[1];
Run Code Online (Sandbox Code Playgroud)
代替
returnsArray()[1];
Run Code Online (Sandbox Code Playgroud)
要么
function sort($a, $b) {
return $a < $b;
}
usort($array, 'sort');
Run Code Online (Sandbox Code Playgroud)
代替
usort($array, function($a, $b) { return $a < $b; });
Run Code Online (Sandbox Code Playgroud)
我喜欢面向对象的风格.因此,我在Python中看到len(str)获取字符串的长度,或者将split(str,"|")等字符串拆分为另一种语言.这在C中很好; 它没有物体.但Python,D等确实有对象,并使用obj.method()等其他地方.(我仍然认为Python是一种很棒的语言.)
不一致对我来说是另一个重要的问题.我不喜欢在同一个库中使用不一致的命名:length(),size(),getLength(),getlength(),toUTFindex()(为什么不toUtfIndex?),Constant,CONSTANT等.
.NET中的长名有时会困扰我.他们不能以某种方式缩短DataGridViewCellContextMenuStripNeededEventArgs吗?那么ListViewVirtualItemsSelectionRangeChangedEventArgs呢?
而且我讨厌深层目录树.如果一个库/项目有一个5级深度目录树,我将遇到麻烦.
C和C++的语法有点古怪.他们将操作符重用于不同的东西 你可能已经习惯了它,你没有考虑它(我也不是),但考虑括号有多少含义:
int main() // function declaration / definition
printf("hello") // function call
(int)x // type cast
2*(7+8) // override precedence
int (*)(int) // function pointer
int x(3) // initializer
if (condition) // special part of syntax of if, while, for, switch
Run Code Online (Sandbox Code Playgroud)
如果你在C++中看到了
foo<bar>(baz(),baaz)
Run Code Online (Sandbox Code Playgroud)
你会不知道没有定义的含义foo
和bar
.
愚蠢的是,其他语言已经复制了其中一些特征!
Java及其检查的异常.我离开Java一段时间,住在.NET世界,然后最近又回来了.
感觉有时,我的throws
条款比我的方法内容更加庞大.
世界上没有什么比仇恨更多的东西了.
我厌恶Java的锅炉板冗长.
那些与Java使用惯例有关的东西veryLongVariableNames
,有时会让我觉得我回到80年代,写IDENTIFICATION DIVISION.
在我的程序的顶部.
提示:如果您可以在IDE中自动生成部分代码,那么这是一个很好的提示,即您正在生成样板代码.使用自动化工具,写入并不是一个问题,但每次有人必须阅读该代码时,这是一个障碍 - 这更常见.
虽然我认为在类型官僚机构方面有点过分,但Scala已成功解决了其中一些问题.
目标C中的所有[] s和@s.它们的使用与底层C的原生语法有很大的不同,我第一次看到它时给人的印象是所有的面向对象都是笨拙地拴在后面.