yre*_*uta 30 language-agnostic history
奇怪的问题,但在这里.现代语言"自动化"的编程概念是什么?我的意思是你以前手动做的概念.这是一个例子:我刚读过C语言,你手动进行垃圾收集; 然而,对于"现代"语言,编译器/解释器/语言本身会处理它.你知道其他什么,或者还没有?
Nat*_*man 22
优化.
在最长的时间内,有必要手工完成.现在大多数编译器可以比任何人都能做得更好.
注意:这并不是说仍然没有完成手工优化,正如评论中所指出的那样.我只是说过去手工完成的一些优化现在都是自动的.
Ion*_*rel 12
对集合的迭代:
foreach (string item in items)
{
// Do item
}
Run Code Online (Sandbox Code Playgroud)
数据库访问,查看Ruby中的ActiveRecord模式.
邪恶的goto.
列表中的第一个,扩展方法.促进流畅的编程
例外,程序尝试做什么(尝试阻止)以及如果某些事情失败(catch阻止)将会做什么的区分,使得编程更加精简.而在此之前,您应始终保持警惕,以便在程序语句之间进行散布错误处理
属性,使语言非常以组件为中心,非常现代.但遗憾的是,这会让Java变得不现代.
Lambda,捕获变量的函数.而之前,我们只有函数指针.这也排除了对嵌套函数的需求(Pascal具有嵌套函数)
方便循环收集,即foreach,而在你必须为obj-> MoveNext,obj-> Eof制作设计模式之前
使用像break,continue,return这样的现代构造进行无字节编程.而在之前,我记得在Turbo Pascal 5中,没有中断继续,VB6有Exit Do/For(类似于break),但它没有继续
C#-wise,我爱的分化out和ref,因此编译器能及早发现编程错误
反射和属性,使程序/组件能够发现彼此的功能,并在运行时调用它们.而在C语言之前(我不知道在现代C中,很长一段时间没有使用C),这件事是不可思议的
远程方法调用,如WebServices,Remoting,WCF,RMI.计算机之间通信的低级TCP/IP管道的日子已经一去不复返了
在C和C++等单通道编译器语言中,声明必须先于函数的使用.更现代的语言使用多遍编译器,不再需要声明.遗憾的是,C和C++的定义方式很差,因为多路传输编译器是可行的,所以它们不能弃用声明.