谈谈编程语言(一)

  

        标题加个(一)是因为可能还有(二),可能。

        外行人恐怕是很难理解程序员们因为编程语言(programming language)而引发的战争(Linus Torvalds炮轰C++是一种糟糕的语言;Paul Graham则认为使用Java的公司不足为惧) 。夸张点的说,有两个人的地方就有政治,有两个程序员的地方就有关于编程语言的争论。我在这儿真真切切发表的纯粹是个人意见,主观看法与客观事实不完全挂钩,因此有什么看法可以交流交流,切勿争论……


 

        C:我觉得C语言的设计是精良的。对机器的抽象恰到好处,又没有什么多余的部分。C非常适合用于设计操作系统,Ken Thompson和Linus Torvalds已经证明了这一点。不过C的现状是被绝大部分(中国的)学校用来作为新程序员蛋子的入门语言,我认为非常不合适。一般来说一个对计算机一无所知的新手能够顺利的接受指针(pointer)的概念吗?我的意见与MIT以前的做法一样,Scheme是个再合适不过的选择,我认为这门语言非常能够让新手们专注于用编程来解决问题,而不是记得在每一条语句后面加个分号。不过MIT最近把训练新手的任务交给了Python,至少比C好。


 

        C++:这东西虽然够强大但很难用好,大多数人(可能除了Scott Meyers)没什么意见吧……我写过的代码中有不少C++的,虽然引用(reference)和能在任何地方定义变量(i不用在循环外定义)确实给我带来不少方便,不过我认为STL给了我更多的便利(有位大哥认为C++如此流行的原因是因为能用//来注释,我跟他可不一样)。C++非常庞大,机制越多,出错的机会也就越多。举个例子

        c b;

        如果在C语言里看到这句话,那么我心里是很有数的,要是这里出错了,无非是溢出了或者类型不太对。如果是C++呢?要考虑的东西可能包括:

        一、ab是自定义类型还是内建类型?

        二、如果是自定义类型,那么重载的+正确定义了吗?会不会抛出异常?

        三、c又是什么?

        四、复制赋值函数正确定义了吗?会不会抛出异常?

        五、有没有发生隐蔽的类型转换?

        六、等等等等

        当然,Scott Meyers会用两本书来告诉你世界上有许许多多C++的高手会妥善地处理好这些问题,我想说的是,对付这些问题难道不会分散程序员的精力吗?C++在抽象性以及提高程序员效率这些方面真的比C高出好几个数量级吗?


 

        Java:所谓树大招风,本人对于Java这棵超级大树的了解是——几乎为零。是的我从来就没有(主动地)用Java写过一行代码,主要原因是我根本就不会,次要原因是我根本就不打算会。而根本不打算会的主要原因是,用Java写个hello world居然要写这么多代码:

public class Hello {

    public static void main(String[] args) {

        System.out.println("Hello, world!");

    }

}


 

        我勒个去,如果随便干点什么都要建个类,真是折煞我也。另外一个原因是,Java对我来说实在不是很有趣,没什么吸引力。不过对于这个热门语言,Joel Spolsky和Paul Graham都有犀利得多的看法。如果这篇文章有(二),我不介意继续谈谈这棵我不懂的大树,因为它实在够大。


 

        Python:现在公认的看法是:程序员的时间比CPU的时间宝贵得多。我想如今大部分的应用都不会对程序的效率达到苛求的地步。这种时候人们应该更看重编程语言对于程序员的效率的影响,而不是CPU的。毫无疑问,我认为用Python能大大提高我的效率,大部分情况下对于程序运行时间是0.001毫秒还是0.1秒,我可不关心。Python的优点还包括不用干什么都建个类,连main都不需要,以及只要我愿意,变量a可以先等于100然后再等于"foobar"用Python编程的时候我感到轻松而好玩~


 

        Scheme:我目前没认为Scheme有什么明显的缺点,而Paul Graham对它的描述是“优雅,但呆板”。优雅?呆板?我确实承认,接触Scheme之前我没见这么优雅的代码,不过可能一个人的脑子灵活到一定程度才会觉得Scheme呆板吧,我还没到那个程度,这也许是个遗憾。在《计算机程序的构造和解释》里我看到的代码给我更多的感觉是“震撼”,居然有这么小的内核,居然有这么干净的代码,居然有抽象级别这么高的语言,居然有组合能力这么强的函数……我始终认为如果一个程序员一辈子都泡在命令式语言(imperative programming)的世界里,每天为了变量的状态而纠结,却完全不知道程序设计的另一个世界,实在是一个莫大的遗憾。


 

        再次声明本文纯属个人喜好……

 

——TT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL编程基础和存储过程已经在前面回答过了,这里我来谈谈MySQL与其他编程语言的弊端对比。 MySQL的弊端: 1. 数据类型的限制性:MySQL只支持有限的数据类型,例如整数、浮点数、日期等,而其他编程语言支持更多的数据类型,如字符、数组、结构体等。 2. 复杂的安装和配置:MySQL需要安装和配置数据库服务器,这可能会导致一些问题,例如配置错误,安全漏洞等。 3. 数据库访问效率低下:MySQL在处理大量数据时效率较低,因为它需要对每条记录进行磁盘访问,而其他编程语言可以使用内存来加速数据访问。 其他编程语言与MySQL的对比: 1. PythonPython支持多种数据类型,包括字符串、列表、元组和字典。它也支持面向对象编程,并且有很多成熟的数据库访问库,例如SQLAlchemy和Django ORM。Python还可以使用Pandas库来处理大型数据集。 2. JavaJava是一种面向对象编程语言,它支持多种数据类型和数据结构。Java有很多成熟的数据库访问库,例如Hibernate和Spring Data JPA。Java还可以使用Apache Spark等框架来处理大量数据。 3. C++:C++是一种高性能的编程语言,它可以使用STL库来处理多种数据类型和数据结构。C++还可以使用Boost库来访问数据库。 4. JavaScript:JavaScript是一种广泛使用的编程语言,它可以使用Node.js来访问数据库。Node.js还可以使用Express.js等框架来简化应用程序开发。 总的来说,MySQL虽然是一种成熟的数据库管理系统,但在某些情况下可能不是最佳选择。其他编程语言和框架可以提供更好的性能、更多的功能和更简化的开发体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值