C语言
  虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是很好的选择。
  C 良好的可移植性也为它加了分。不过现在很多其他的语言可移植性越来越好,C在这方面的优势可能会逐渐丧失。
  现有的很多程序可以产生非常棒的C代码,比如语法分析器、GUI Builder 等,这时候C语言也是有吸引力的,因为你所需要编写的代码只是整个程序的一小部分。
  再有,我们当然应该认识道,C语言对于程序员来说具有无可替代的价值。就我这里讨论的每一种语言而论,只要你发掘的足够深,到最后你会看到它们的内核都是用纯正的、可移植的C写成的。
  到了今天这个时候,我们最好把C看成是 UNIX 虚拟机上的高级汇编语言。
  就算是其他的高级语言完全可以满足你的工作需要,抽出时间来学习C语言也仍然有益,它能帮助你在硬件体系的层次上思考问题。
  即使到了今天,最好的C语言教程仍然是 1988 年出版的K&R第二版 The C Programming Language.
  总结:C最出色的地方在于其高效和贴近机器,最糟糕的地方在它的内存管理地狱。
======================
  C++
  C++最初发布于 1980 年代中期,当时面向对象语言被认为是解决软件复杂性问题的银弹。C++的面向对象特性看相去使其全面超越了C,支持者认为 C++ 将迅速把上一代语言挤到陈列馆里去。
  但是历史并非如此。究其原因,至少有一部分归咎于 C++ 本身。为了与C兼容,C++被迫作出了很多重大的设计妥协,结果导致语言过分华丽,过分复杂。为了与C兼容,C++并没有采用自动内存管理的策略,从而丧失了修正C最严重问题的机会。
  另外一部分原因,恐怕要算到面向对象身上。看起来 OO 并没有很好的达成人们当年的预期。我就这个问题调研过,我发现使用 OO 方法导致组件之间出现很厚的粘合层,并且带来了严重的可维护性问题。今天让我们来看看开放源码社区,你会发现 C++ 的应用还是集中在 GUI,游戏和多媒体工具包这些方面,在其他地方很少用到。要知道,面向对象也只是在这些领域被证明非常成功,而开放源码社区的选择,很大程度上体现了程序员的自由意志,而不是公司管理层的胡乱指挥。
  也许 C++ 实现 OO 的方法有问题。有证据表明 C++ 程序在整个生命周期的开销高于相应的C,Fortran 和 Ada 程序。不过,究竟这是否应该归咎与 C++ 的 OO 实现上,还不清楚。
  最近几年,C++加入了很多非 OO 的思想,其异常思想类似 Lisp,STL 的出现是非常了不起的。
  其实 C++ 最根本的问题在于,它基本上只不过是另一种传统的语言。STL 中的内存管理比先前的 new/delete 和C的方案要好的多,但是还是没有解决问题。对于很多应用程序而言,其 OO 特性并不明显,相比与C,除了增加复杂度之外没有获得很多好处。
  总结:C++优点在于作为编译型语言,把效率与泛型和面向对象特性结合起来,其缺点在于过于华丽复杂,倾向于鼓励程过分复杂的设计。
=====================
  Java
  Java 的设计很聪明,它采用了自动内存管理,这是最大的改进,支持 OO 设计带来的好处虽然不那么突出,不过也很值得赞赏,相比C++,其 OO 设计规模小而且简单。
  相对于 Python 而言,Java 有一些明显的失误。有些地方设计的还是太复杂,甚至有缺陷。Java 的类可见性和隐式 scoping 规则太复杂了。Interface 机制是为了避免多继承带来的问题而设计的,但是要理解和使用它还是挺难。内部类和匿名类导致令人困惑的代码。缺乏有效的析构机制,使得除了内存之外的其他资源(比如互斥量和锁)管理起来很困难。Java 的线程不可靠,其I/O机制很强大,但是读取一个文本文件却非常繁琐。
  Java 没有管理库版本的机制,从而形式上重蹈了了 Windows DLL 地狱的覆辙。在类似应用服务器这样的环境里,这引起了大量的问题。
  总体而言,我们可以说除了系统编程和对效率要求极高的程序之外,Java 在大部分领域优于C++。经验表明,Java 程序员似乎不太容易象 C++ 程序员那样构造过度的 OO 层,不过在 Java 中这仍然是个严重问题。
  Java 是否优于诸如 Perl,Python 这样的语言?我们还不是很清楚,很大程度上似乎跟程序规模有关。其擅长的领域基本上于 Python 相似,在效率上无法跟C/C++相提并论,在小规模的、大量使用模式匹配和编辑的项目里也无法匹敌 Perl。在小项目里,Java 显得过分强大了。我们猜测 Python 更适合小项目,而 Java 适合大项目,不过这一点并没有得到有力的证明。
=====================
  Python
  Python 是一种脚本语言,可以与C紧密整合。它可以与动态加载的C库模块交换数据,也可以作为内嵌脚本语言而从C中调用。其语法类似C和模块化语言的杂合,不过有一个独一无二的特征,就是以缩进来确定语句块。
  Python 语言非常干净,设计优雅,具有出色的模块化特性。它提供了面向对象能力,但不强迫用户进行面向对象设计。其类型系统提供了强大的表达能力,类似 Perl,具有匿名 lambda 表达式,这点又让 Lisp 黑客们感到亲切 Python 依靠 Tk 提供方便的 GUI 界面开发能力。
  在所有的解释型语言里,Python 和 Java 最适合多名程序员以渐进方式协同开发大型项目。在很多方面,Python 比 Java 要简单,它非常适合与构造快速原型,这一点使得它对于 Java 有独特优势:对于那些既不很复杂,又不要求高效率的程序,Python 十分合适。
  Python 的速度没法跟C/C++相比,不过在今天的高速 CPU 上,合理地使用混合语言编程策略使得 Python 的上述弱点被有效地弥补。事实上,Python 几乎被认为是主流脚本语言中最慢的一个,因为它提供了动态多态性。在大量使用正则表达式的小型项目,它逊于 Perl。对于微型项目而言,shell 和 Tcl 可能更好,Python 显得太过强大了。
  总结:Python 最出色的地方在于,它鼓励清晰易读的代码,特别适合以渐进开发的方式构造大项目。其缺陷在于效率不高,太慢,不但跟编译语言相比慢,就是跟其他脚本语言相比也显得慢。

转载于:https://www.cnblogs.com/Thermo/p/4216466.html

【转载】著名黑客雷蒙评价几种编程语言相关推荐

  1. python语言怎么学-Py列为黑客应该学的四种编程语言之一 新手该怎么学

    在开始前先简单和大家说一说:Python是什么.呢? 也许最初设计Python这种语言的人都没有想到今天Python会在工业和科研上获得如此广泛的使用.著名的自由软件作者Eric Raymond在他的 ...

  2. 您应该在2020年首先学习哪种编程语言? ɐʌɐɾdıɹɔsɐʌɐɾ:ɹǝʍsuɐ

    Most people's journey toward learning to program starts with a single late-night Google search. 大多数人 ...

  3. 程序员的噩梦:世界上最难的5种编程语言

    导读:每个程序员都熟悉许多编程语言.许多编程语言都是高级的,它们的语法是人类可读的.然而,也有一些低级语言,对于一个人来说,读起来很困难,但是可以理解.您是否遇到过一种既不可读又不可理解的编程语言? ...

  4. 未来 12 个月,哪种编程语言将会流行?

    作者 | Ekaterina Novoseltseva 译者 | 明明如月,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) 以下为译文: 今年 Api ...

  5. 2020年,最适合AI的5种编程语言

    来源 | medium 编译 | 张涛 责编 | Carol 出品 | AI科技大本营(ID:rgznai100) AI系统的开发必须有计算机代码,而计算机程序的开发有不同类型的编程语言可以选择.本文 ...

  6. 漫画:7 种编程语言的学习曲线

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 程序员 Dobiasd 绘制七种编程语言的学习曲线图. 这 ...

  7. 会写代码的AI开源了!C语言写得比Codex还要好,掌握12种编程语言丨CMU

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 比Codex还 ...

  8. 测试 C、Python、Java 等 16 种编程语言的 Hello World:7 种存在 Bug?

    译者 | 张洁 责编 | 屠敏 出品 | 程序人生 (ID:coder _life) Hello World 可能是最常用的计算机程序.几十年来,许多人在开始使用新的编程语言时,编写的第一个程序通常是 ...

  9. 42岁著名黑客去世,曾拯救互联网:揭开索尼“罪行”、发现DNS漏洞

    子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一则噩耗席卷了黑客圈: 著名黑客丹·卡明斯基(Dan Kaminsky)于当地时间4月23日离世,年仅42岁. 我想现在无法再掩饰了.昨天, ...

  10. Java vs Big data 哪种编程语言更好?

    为什么80%的码农都做不了架构师?>>>    互联网产业跨越式发展,带来了无限的商机和可能.越来越多的人将目光对准了编程.很多人想要掌握一技之长,想在IT圈子中崭露头角!于是,有朋 ...

最新文章

  1. python 安装库 报错 SSL: CERTIFICATE_VERIFY_FAILED 解决方法
  2. 【数理知识】神仙文章(回忆大学所学)常微分方程
  3. Windows xp/Vista/Linux的内核映射以及内存置换算法
  4. Jquery中绑定select的change事件自动填充input的value值
  5. 使用SSH反向隧道进行内网穿透
  6. 【RabbitMQ】2、心得总结,资料汇总
  7. LFDMM源码剖析(融入词向量的概率图模型)
  8. 怎样才能成为一名优秀的教师博客呢?
  9. Android之内容提供者ContentProvider的总结
  10. linux交叉编译 i2c-tools
  11. 计算机二级修改并应用基本简历模板,如何通过Office模板轻松快捷创建简历
  12. CGI-plus_x86_x64_自适应版系统安装和备份工具参数案例笔记
  13. 微信发红包的测试点有哪些? 评论/点赞/分享/收藏/收索/上传/下载
  14. 朱老师Study210开发板刷系统实验(Win10系统)
  15. 研究了1天的ckfinder记录
  16. java验证密码_java实现验证用户账号密码的功能
  17. 益智java单词游戏_java实现单词搜索迷宫游戏
  18. 业务员应熟记的应酬劝酒词大全
  19. 机器人程序设计入门(C++/Arduino/ROS)(转载2020版)
  20. (附源码)node.js中小学生中文写作网 毕业设计 250623

热门文章

  1. Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行 (转)
  2. 判断目标主机和自己是否是一个子网的方法
  3. Amoeba新版本MYSQL读写分离配置
  4. 利用Java-JACOB操作WORD文档2
  5. 通过程序得到数据库表之间的关联关系
  6. 阿里开源代码质量检测工具!
  7. REST API 的安全认证,我放弃OAuth 2.0 ,选择 JWT 令牌
  8. 2019年最新移动互联网全行业排行榜!
  9. Linux inode的正确理解
  10. 西部数据暂停与华为的合作关系及发货