如果您使用的是“最佳编程语言”,那么您会发现许多博客列出了他们的最佳建议。 但是,他们的“最佳”总是等同于“最受欢迎”。 人气并不是达到最佳效果的唯一指标。 语言设计的质量如何? 程序员的生产率如何? 那有趣的因素呢? 如何适合教学或教学目的?
受欢迎程度意味着获得这些语言的工作变得更容易。 但是,这种重商主义的态度剥夺了您使用Elixir,Haskell,Julia,Rust和Smalltalk等高级技术的所有好处。 而且,在某些情况下,流行程度会使您感到不愉快或更令人沮丧的编程体验,例如PHP,Javascript和C ++ 。 保持流行是阻碍编程技术进步的未来。
Slant是产品推荐社区,其目标是不费吹灰之力为您找到最佳产品,应用或游戏。 使用充满论坛和评论的选项卡,无需再花费大量时间进行产品研究。
在选择一个好的开发工具时, Slant可能非常有用。 我在Slant发现了两个有趣的问题,它们提供了惊人的答案。 首先 ,
什么是“最佳”(提高生产力,精心设计和简洁,而不仅仅是受欢迎或久经考验的)编程语言?
其次 ,
首先学习的最佳编程语言是什么?
对于第一个问题,排名前十的结果是(于2017年10月23日更新):
- 短暂聊天
- 蟒蛇
- 尼姆
- 长生不老药
- 球拍
- 方案
- 普通口齿不清
- 哈斯克尔
- 锈
- 榆树
对于第二个问题,排名前十的结果是:
- 蟒蛇
- 短暂聊天
- 球拍
- 方案
- C
- 红宝石
- a
- 榆树
- 的Javascript
- 高朗
Smalltalk在两者中都表现出色,应有的表现。 Smalltalk是一种非常好的编程语言。 这是一种极其高效,优美的语言。 尽管目前尚不流行,但它肯定经过了时间的考验,因为Smalltalk已经被全球范围内的企业商业使用了三十多年,其中包括摩根大通,Desjardins,UBS,佛罗里达电力与照明,德克萨斯州等仪器公司,阿根廷电信公司, 东方海外集装箱运输公司 ,西门子公司, ALLSTOCKER等。 在我的祖国,Smalltalk被加拿大国家加密机构Communications Security Establishment(CSE)使用。
实际上,在2000年代初期,Smalltalk被美国联合军方用来编写名为JWARS的百万行作战模拟程序。 它实际上胜过了美国空军用C ++编写的称为STORM的类似模拟。 这本身就是对语言功能的惊人证明。
Smalltalk在教授编程方面也很出色。 它是由Alan Kay和他在Xerox PARC的团队设计的 , 旨在教年轻人。 它的语法非常简单,可以在明信片的背面进行总结! 而且由于Smalltalk是最高级的面向对象语言,所以没有更好的方法来学习这一非常重要的编程范例。
人群确实是明智的。 最新的StackOverflow调查也显示了这种智慧。 在“最受欢迎的语言”下,Smalltalk排名第二(在Rust之后,TypeScript,Swift,Go,Python,Elixir和C#之前)。 这表明使用Smalltalk的人喜欢这种语言,并且忠于这种语言。
通过推断,它还表明编程社区并不了解Smalltalk有多好。 社区中的大多数人对此一无所知。 如果他们尝试Smalltalk编程,那么该语言很可能会变得流行。
我认为这是一个非常合理的假设。
但是,我发现有些人群智慧值得怀疑。 为什么推荐使用C(#5)作为初学者的语言? 我无法想象为什么。 这是一种源于过去的古老语言。 它使用头文件进行模块化,因此非常基于文件归档; 头文件带来了各种各样的依赖问题。 它对手动内存管理的依赖与现代编程实践不符。 其他每种主要语言都使用垃圾回收或引用计数。 对于初学者来说,使用内存指针是有问题的。 指针很危险。 它的预处理器和宏系统简直令人难以置信。 它完全缺乏对面向对象编程或函数式编程的支持,这是当今业界最重要的两个范例。 C纯粹是一种过程编程语言; 您再也不会过时了。
是的,C可以教您有关底层计算机体系结构的知识。 汇编语言也可以。 此主题最好留作以后的高级主题。
不要误会我的意思:我爱C。在我的职业生涯中,这为我的早退休付出了代价! 但是我很肯定不会推荐它作为初学者的母语。
为什么建议将Javascript(#9)用作初学者的语言??? 对于初学者来说,Javascript是一种可怕的第一语言。 它会教各种不良习惯。 语言有很多方面的缺陷。 我需要指出的众多WAT S和WTF S代表其Javascript的已对接的行业 笑话 ? Javascript充满内部不一致和陷阱( Jeff Walker称之为“雷区” )。
尽管ECMA TC39对语言进行了所有“改进”,但它们仍未修复从根本上破坏了的语义。 而且他们不能,除非没有中断网络。 ES5.1,ES6,ES7,ES8…都只是在猪上涂上了口红。
看,我明白了。 如果必须进行Web编程,则必须学习一些 Javascript。 (而且我强调“一些”;我进行Web开发,但是我很少使用Javascript。)但是,这并不能使Javascript成为一种好的教学语言。
最后,我对Common Lisp(#7)的建议感到困惑,因为它是一种提高生产率,精心设计且简洁的编程语言。 许多著名的程序员会强烈反对。 如果您喜欢Lisp,我强烈建议您使用Scheme或Racket,而不是Common Lisp。
人群中可以找到智慧,但人群并非万无一失。
From: https://hackernoon.com/the-wisdom-of-the-crowd-c7aff954bd5f