Language agnostic 编程概念是;“自动化”;用现代语言
奇怪的问题,但在这里。现代语言“自动化”的编程概念是什么?我的意思是你以前必须手动完成的概念。这里有一个例子:我刚刚读到在C中,您手动执行垃圾收集;然而,对于“现代”语言,编译器/解释器/语言本身会处理它。你知道还有其他的吗,或者没有了?优化。 在很长的一段时间里,必须用手来做这件事。现在,大多数编译器可以做得比任何人都好得多Language agnostic 编程概念是;“自动化”;用现代语言,language-agnostic,history,Language Agnostic,History,奇怪的问题,但在这里。现代语言“自动化”的编程概念是什么?我的意思是你以前必须手动完成的概念。这里有一个例子:我刚刚读到在C中,您手动执行垃圾收集;然而,对于“现代”语言,编译器/解释器/语言本身会处理它。你知道还有其他的吗,或者没有了?优化。 在很长的一段时间里,必须用手来做这件事。现在,大多数编译器可以做得比任何人都好得多 注意:这并不是说手工优化还没有完成,正如评论中指出的那样。我只是说,过去手工完成的许多优化现在都是自动的。数据收集 哈希表、链表、可调整大小的数组等 所有这些之前都必须手
注意:这并不是说手工优化还没有完成,正如评论中指出的那样。我只是说,过去手工完成的许多优化现在都是自动的。数据收集 哈希表、链表、可调整大小的数组等
所有这些之前都必须手工完成。行号
没有更多的基础,没有更多的牌组 如果你回到汇编,你会发现更多的东西,比如类的概念,你可以在一定程度上模仿,但很难实现。。。甚至在一行中有多个语句,比如说“intc=5+10/20”;实际上是在一行中放了许多不同的“指令”
除了简单的汇编,您可以想到的几乎都是(范围、继承和多态性、重载、“运算符”等概念。基本汇编之外的任何东西都是现代语言、编译器和解释器已经自动化的东西。)我认为编写机器代码值得一提。对一个集合进行迭代:
foreach (string item in items)
{
// Do item
}
数据库访问,查看Ruby中的ActiveRecord模式
邪恶的转到- 列表中的第一个是扩展方法。促进流畅的编程
- 异常,将程序试图做什么(try块)和失败时它将做什么(catch块)划分开来,有助于更理智的编程。而以前,您应该始终保持警惕,在程序语句之间穿插错误处理
- 属性,使语言非常以组件为中心,非常现代。但遗憾的是,这将使Java变得不现代
- Lambda,捕获变量的函数。而以前,我们只有函数指针。这也排除了嵌套函数的需要(Pascal有嵌套函数)
- 方便的收集循环,即foreach,而在您必须为obj->MoveNext、obj->Eof创建设计模式之前
- 使用现代构造(如break、continue、return)进行少转到编程。而之前,我记得在Turbo Pascal 5中,没有中断-继续,VB6有退出Do/For(类似于中断),但它没有继续
- C#wise,我喜欢区分
和out
,因此编译器可以更早地捕获编程错误ref
- 反射和属性,使程序/组件能够发现彼此的功能,并在运行时调用它们。然而在以前的C语言中(我不知道在现代C语言中,有很长一段时间没有使用C),这是不可思议的
- 远程方法调用,如WebServices、Remoting、WCF、RMI。用于计算机间通信的低级别TCP/IP管道的日子一去不复返了
在您必须自己实现观察者模式之前。现在(至少在.NET中),您可以简单地使用“委托”和“事件”以及用于排序的内置函数(如冒泡排序、快速排序等)。 尤其在Python中,“容器”是一种功能强大的数据结构,在其他高级和现代编程语言中也需要几行代码来实现。在Python描述中可以找到许多此类示例。多线程
该语言(如java)中对多线程的本机支持使其比将其添加为外部库(如C中的posix线程层)更“自然”。它有助于理解这个概念,因为有许多示例、文档和工具可用。动态库 动态库自动在进程之间共享公共代码,节省RAM并加快启动时间 插件
一种非常干净高效的扩展功能的方法。数据绑定。一定要减少布线,手动将数据移入和移出UI元素。愚蠢 这是我从现代编程语言中得到的很多帮助。有些编程语言一开始就是一团糟,所以您不需要花费精力来无缘无故地胡乱处理。好的现代库通过强迫程序员进入其框架并编写冗余代码来实施愚蠢。Java特别帮助了我的愚蠢,它强迫我进入OOPS框。
在C和C++的单遍编译语言中,声明必须先于函数的使用。更现代的语言使用多通道编译器,不再需要声明。不幸的是,C和C++的定义是如此糟糕,以至于现在不能声明声明,因为多遍编译器是可行的。
< P> <强>函数。< /强>过去,您需要手动将所有参数放入堆栈,跳转到定义函数的代码段,然后手动处理其返回值。现在您只需编写一个函数 类型推断 在F#或Haskell等语言中,编译器推断类型,使
match myList with
| [] -> "empty list"
| 2::3::tl -> "list starts with elements 2 and 3"
| _ -> "other kind of list"
(myList.Count == 0) ? "empty list" :
(myList[0] == 2 && myList[1] == 3 ? "list starts with elements 2 and 3" :
"other kind of list")
volatile bool run = true;
void thread1()
{
while(run)
{
doHeavyWork();
yield();
}
}
void thread2()
{
run = false;
}