转载地址:http://blog.csdn.net/i10630226/article/details/41460383

谈到这个话题,一定会有两种人跳出来。 
一种人说,PHP 是世界上最好的编程语言;另一种人说,编程语言都大同小异,掌握了思想,什么都简单了。

首先我认为所有切实存在,功能重叠的事物,都是可以比较优劣的,有时不说出真相,只是真相太残酷。『优秀』并非是主观的,而是客观存在的,世界上存在着被广泛认同的『优秀』。否则,作家,设计师,设计编程语言的科学家,应该以什么为目标来工作呢?

那么什么又是编程的思想呢?是循环,回调,面向对象这些么?但似乎并非每个编程语言都有这些元素。我在知乎『优秀的程序员应该掌握多少门编程语言』中列举了几种我了解的,各自具有代表性的编程语言:

  • C, 使用原始的内存管理的系统编程
  • Java, 工业级的面向对象的,静态类型的虚拟机语言
  • Python, 脚本语言,动态类型的虚拟机语言
  • Javascript, 基于事件回调的函数式编程
  • HTML/CSS, 声明式的语言
  • Golang, 并发编程

可以看到,它们风格迥异,使用的领域似乎完全没有重叠。

非要找共性的话,大概是它们都具有『抽象』的能力,描述『算法』的能力,这也是有些人口中的『思想』,但我不认同。 
抽象是为了找到解决问题的方法,而编程语言是为了将解决问题的过程(算法)表达出来。 
知道如何解决问题,不代表就能够用编程语言表达出来;掌握编程语言,也不代表知道如何解决问题。

我们学习一门编程语言本身的时间并不多,更多的时间在学习它的函数库,以及特定编程环境下的限制。 
例如学习 C 语言,我们需要知道计算机如何管理内存,如何实现函数调用,还要学习如何通过标准库进行输入输出,而 C 语言本身的语法,完全可以用一个小时描述清楚。

所以,我们抛开这一切,去寻找世界上最好的编程语言呢。但结果是不存在,因为现在流行的编程语言设计者目光都太短浅。 
没错,优秀的不一定是用的人最多的,不一定应用得最广泛,所以编程语言的设计者需要折中,拿出不那么优秀的设计作为最终方案。

比如 php 之所以流行,是因为支持 PHP 的虚拟主机最便宜。 
比如 C 之所以流行,只是因为有太多项目一开始是用 C 写的。 
比如 Python 之所以流行,只是因为库足够多。 
比如 JavaScript 之所以流行,因为在浏览器里这是唯一选择。

他们都不是因为语言本身被设计得有多么优秀而流行的。

我认为世界上最好的编程语言需要有这样的特征:

  • 核心足够小
  • 可以扩展语法
  • 围绕一种数据结构展开
  • 优秀的抽象能力
  • 可以被编译成本地代码

世界上最好的编程语言应当是全能的,否则如何和其他编程语言做比较呢?要做到这一点,就要保证这个语言的核心部分是最小的,不偏向于任何一个领域,也减少学习成本。

这方面的正面例子有 Lisp, Lisp 中的一切都是列表,核心部分仅包括不到十个基本运算符。从这个角度来看,你根本不知道 Lisp 是被设计用于什么领域的——这是世界上最好的编程语言所必须的要素。

但是 Lisp 没有火起来,因为有个笑话说的是一个 Lisp 程序末尾要有整整一页的括号。

所以世界上最好的编程语言需要能够灵活地扩展语法,这个概念通常被称为元编程,例如 Ruby 就号称支持元编程,虽然我没有体验过。 
除了扩展语法之外,最好还要能够改变程序在编译时的行为,这会加强元编程的能力,也会对提升性能有一定帮助。 
比如 PHP 和 python 都支持用 C 编写扩展,如果这种语言支持用自己本身来写扩展,并且能够干预编译器的行为,那么这种改造会让它适合几乎所有领域的编程。虽然干预编译器的行为是很危险的行为,只有少数人会编写这种扩展,但是这总要比设计一门新的领域特定的语言要容易。

可以扩展语法,这是保证世界上最好的编程语言能够快速适应各种特定领域编程的重要条件。

世界上最好的编程语言应该内置一种数据结构,能够方便地在程序内,甚至包括程序外进行数据交换,让整个语言围绕着这种核心的数据结构展开,具有一种『一致性』的美感。 
这方面正面的例子是 Lisp 和 javascript, 但 Javascript 做得还不够好,类型系统中有很多陷阱。

世界上最好的编程语言还应该有优秀的抽象能力,比如 C 的抽象能力就不够,组织大型项目会非常麻烦。Lisp 的抽象手段又太单一,Java 和 C++ 的特征又过于复杂。

『可以被编译成本地代码』这才是最具有挑战性的一个特征,前面我提了很多变态的需求,它们都需要在可以被编译成本地代码的条件下实现。可以被编译成本地代码,表示这种语言不需要虚拟机,可以自行提供各种功能,性能上也有更多的优化空间。

在发表这篇日志之前,又看了一遍王垠写的『如何掌握程序语言』,顿时觉得自己的日志似乎没必要发了,但是既然写了,还是发出来好了。

如何掌握程序语言:https://news.cnblogs.com/n/573342/

优秀的程序员应该掌握几种语言?https://www.zhihu.com/question/22339358#answer-6300033

好的程序员应该掌握几门语言?http://blog.csdn.net/candy1232009/article/details/8049611

世界上最好的编程语言(没有绝对)相关推荐

  1. python真的超过java了吗-JAVA会被Python超越成为世界上第一大编程语言吗?

    关键时刻,第一时间送达! 这个路还还长,暂时不会,未来5年不会,10年有可能,就看现在小学生.初中生学习的怎么样.最近,也在观注这方面的,偶尔看到新闻说python纳入到高考中,想想如果真纳入了,过4 ...

  2. java多语言编程语言_为什么很多程序员信仰“Java是世界上最好的编程语言”

    看到这个标题,估计有不少PHPer要跳进来打我膝盖,跪请各位Java程序员保我周全. 因为PHP是所有web开发中使用最多的语言,也被称为最有生命力的语言,所以也就自然而言有了"PHP是世界 ...

  3. 世界上最好的编程语言是……

    最近,随着 Apache Log4j 2 被曝存在"核弹级"漏洞之后,大家又开始讨论要不要将编程语言进行统一,以及争论哪一个编程语言才是最好的编程语言. *内容来源CSDN文章评论 ...

  4. PHP编程语言大全,关于“PHP是世界上最好的编程语言”的几个段子

    首先我要问PHP真的是世界上最好的编程语言吗?我相信你给不出确切的答案,因为每一种编程语言都有它自己的特点,都能找到自己的领域归宿,这就好比Python常用于写脚本或者爬虫而不是网站前端一样,当然dj ...

  5. 我才是世界上最好的编程语言

    周末的Hello World咖啡馆还是热闹非凡. Ruby 一边喝咖啡一边和对面的Python聊天: "兄弟,我觉得这届程序员真的不行!" "此话怎讲?" &q ...

  6. 生日快乐编程代码_世界上最好的编程语言,刚刚度过了25周岁生日

    机器之心报道 机器之心编辑部 PHP,祝你 25 岁生日快乐. 「只要是用过 PHP 的程序员,都知道两件事:第一,这是一种糟糕的语言,如果有其他选择,自己绝不会再使用 PHP:第二,历史上一些非常成 ...

  7. “我才是世界上最好的编程语言!”

    作者丨刘欣 责编 | 伍杏玲 本文经授权转载自码农翻身( ID:coderising) 别惊讶!人工智能时代即将到来! https://edu.csdn.net/topic/ai30?utm_sour ...

  8. 用“世界上最好的编程语言”制作的敲诈者木马揭秘

    360安全卫士 · 2016/06/22 14:53 你永远叫不醒一个装睡的人.但,快递小哥可以! 虽说是一句戏言,但确实多少反映出了快递在大家心中的重要性.如果你收到一个带有快递公司发来的电子邮件通 ...

  9. 谁是世界上最好的编程语言?--编程语言70年浅谈

    1.编程语言发展史纵览 严谨起见,本文提到的编程语言指的是「第三代高级编程语言」. 首先,我们从时间维度入手聊聊编程语言.一图胜千言,我们从目前主流的编程语言中,挑选出流行的.具有历史影响力的语言.把 ...

最新文章

  1. SpringJDBC的简单应用
  2. 放弃深圳1.5万月薪,我准备回农村了!
  3. 封装php连接数据库返回方法
  4. Python.Scrapy.12-scrapy-source-code-analysis-part-2
  5. python使用字典格式化字符串-Python字符串格式方式 %s format()
  6. mysql 5.5 5.6 主从_mysql5.6+主从集的版本号(mysql5.5主机和从机载带后,5.5在设置有一定的差距)...
  7. python 获取 特定日期 6个月前的日期_牛,复旦计算机博士小姐姐用图解Python,这也太秀了...
  8. 2019-02-26-算法-进化(字符串转换成整数)
  9. 汇编题目:编写包含多个功能子程序的中断例程
  10. 太极怎么用html写出来,如何用css实现太极图
  11. 非常不错的Coding-iOS开源项目
  12. gitlab服务器性能,gitlab服务器搭建
  13. Java讲解贪心算法案例
  14. 生物信息学数据库导航
  15. Chapter 2 multi-armed Bandit
  16. A065_运行前端_跨域_列表_删除
  17. 学习《笨办法学phyton》(0)
  18. 图像处理中的用于消除高斯噪声的加法运算
  19. emWin 2天速成实例教程012_基于STM32单片机的全键盘中文汉字拼音输入法
  20. char类型与short类型

热门文章

  1. Android入门——WebView使用及Java和JavaScript交互小结
  2. 解释某宝的一段混淆视听的代码
  3. FlyAI小课堂:深度学习论文翻译解析(4):Support Vector Method for Novelty Detection
  4. (25)打鸡儿教你Vue.js
  5. 2018-09-14 工作日报和第一周总结
  6. mmdetection multi_apply
  7. UltraEdit添加删除右键菜单项
  8. 消息转发机制与Aspects源码解析
  9. 【小程序基础】小程序内置组件
  10. Java对姓名, 手机号, 身份证号, 地址进行脱敏