第47周星期二

今天再次为MyEclipse启动报错感到苦恼,发现java开发工具IDE真是难用,启动报错让直接查询日志,找到日志基本上不能明显看出启动的问题,不得已又尝试使用Eclipse,一些好的操作没有,不习惯的操作依然存在,用的真不爽,晚上看了两篇好文章。

我心目中的编程高手(完整版)

Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vicsh的作者。 2003年9月,Bill Joy离开Sun。当时Sun公司的股票也应声下跌了3.2%。后来,Bill Joy在接受《连线》杂志的采访时高兴地说"嗨,我辞职了!"。可是这并不意味着他的职业生涯就此结束。除了每天在家中面壁沉思外,他还在考虑着未来的技术。说不定哪一天这个网络的爱迪生又会带给我们新的惊喜。

 John CarmackID SoftwarefounderLead Programmer,各大图形卡厂家一有了新产品就要向他"进贡",不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MSDirect3D也得听取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以上,也是偶们凡人望尘莫及的。

David CutlerVMSWindows NT的首席设计师,去微软前号称硅谷最牛的kernel开发员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然后说:"who can't write an OS in a week?"

 Donald E. Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,不可原谅啊。

 Ken ThompsonC语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR)Belle(一个厉害的国际象棋程序)的作者之一,操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)

Rob Pike, AT&T Bell LabMember of Technical Staff,现在google研究操作系统。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开发Unix的猛人,UTF-8的设计人。

 Dennis M. Ritchie 既然Ken Thompson是我的偶像,新闻组上人称DMRDennis M. Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前身是B,而BKen Thompson一手做出来的)

 Edsger Wybe Dijkstra 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。

 Anders HejlsbergDelphi/C#之父):微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手做出了Turbo Pascal,也是Delphi, J++(尤其是WFC),C#和.NET的主要作者。

综述:编程语言的发展趋势及未来方向里面讲的好,虽然是2010年的,但很多概念值得我学习思考

在Anders眼中,如今影响力较大的趋势主要有三种(如下图),它们分别是"声明式的编程风格"(包括"领域特定语言"及"函数式编程")、过去的五年非常火热的"动态语言" (其最重要的方面便是"元编程"能力)以及多核环境下的"并发编程。此外随着语言的发展,原本常用的"面向对象"语言,"动态语言"或是"函数式"等边界 也变得越来越模糊,例如各种主要的编程语言都受到函数式语言的影响。因此,"多范式"程序设计语言也是一个愈发明显的趋势。

目前常见的编程语言大都是命令式(Imperative)的,例如C#,Java或是C++等等。这些语言的特征在于,代码里不仅表现了"做什么 (What)",而更多表现出"如何(How)完成工作"这样的实现细节,例如for循环,i += 1等等,甚至这部分细节会掩盖了我们的"最终目标"。声明语言便是能让代码包含更多的"What",而不是"How",这样执行环境便可以更加聪明地去适应当前的执行要求。关于声明式的编程风格,Anders主要提出了两个方面,第一个方面是DSL(Domain Specific Language,领域特定语言)。DSL不是什么新鲜的玩意儿,我们平时经常接触的SQL,CSS,正则表达式等等都属于DSL。有的DSL可能更加专 注于一个方面,例如MathematicaLOGO等等。这些语言的目标都是特定的领域,与之相对的则是GPPL(General Purpose Programming Language,通用目的编程语言)。

便是能让代码包含更多的"What",而不是"How",这样执行环境便可以更加聪明地去适应当前的执行要求。

动态语言不会严格区分"编译时"和"运行时"。对于一些静态编程语言(如C#),往往是先进行编译,此时可能会得到一些编译期错误,而对于动态语言来说这 两个阶段便混合在一起了。常见的动态语言有JavaScript,Python,Ruby,LISP等等。动态语言和静态语言各有一些优势,这也是两个阵 营争论多年的内容。不过Anders认为它们各自都有十分重要的优点,而未来不属于其中任何一方。他表示,从编程语言发展过程中可以观察到两种特点正在合 并的趋势,未来应该属于两者的杂交产物。近几年出现的一些动态虚拟机或引擎将此类情况改善了许多。如今大部分的JavaScript引擎使用了JIT编译器,于是便省下了解释器的开销,这样性能 损失便会减小至3到10倍。而在过去的两三年间,JIT编译器也变得越来越高效,浏览器中新一代的适应性JIT编译器,如TraceMonkeyV8,还有微软在IE 9中使用的Chakra引 擎。这种适应性的JIT编译器使用了一部分有趣的技术,如Inline Caching、Type Specialization、Hidden Classes、Tracing等等,它们可以将开销降低至2到3倍的范围内,这种效率的提升可谓十分神奇。在Anders看来,JavaScript引 擎可能已经接近了性能优化的极限,我们在效率上可以提升的空间已经不多。不过他同样认为,如今JavaScript语言的性能已经足够快了,完全有能力作 为Web客户端的统治性语言。

nders还提到了他在思考并发语言特性时所遵循的原则:一个语言特性不应该针对某个特定的并发模型,而应该是一种通用的,可用于各种不同的并发场景的特 性,就像隔离性、纯洁性及不可变性那样。语言拥有这样的特性之后,就可以用于构建各种不同的API,各种并发方式都可以利用到核心的语言特性。

完整内容

原文地址:https://www.cnblogs.com/doit8791/p/2779694.html