学习不同编程语言的重要性

开发 前端
没有最好的语言,对于一个特定的问题,只有最合适解决问题的编程语言;而了解这些不同的解决问题的工具,是相当必要的——在合适的时候,一个好的语言可以节省下一个程序员无数的时间。

今天选了下学期要学的一门课,叫做编程语言。据说是两周学习一门新的语言,很有挑战性。以及这门课的课本是MIT出的《Concepts, Techniques, and Models of Computer Programming》(一下简称《CTMOCP》),今天看了一部分它的前言部分,联系我以前读过的《黑客与画家》里面有两章对编程语言的讨论,发现学习不同的编程语言还是相当有必要的。

***,学习多门编程语言可以避免自己的思维被一种语言所限制。

《黑客与画家》:如果你长期使用某种语言,你就会慢慢按照这种语言思维。

在《CTMOCP》一书也有一个例子:学习Java的人认为concurrency很难操作,并且很消耗计算机资源,于是会尽量避免使用concurrency;但实际上,如果语言本身能够很好的处理concurrency,就可以把它变成一个很好的工具——比如Unix的“管道”就是一种很好用的concurrency形式。

这和生活中实际用着的语言很类似——不同文化语言的差异,会限制这个文化中的人想问题的方式(这里有很多例子:http://beyondidea.cn/index.php/archives/501)。更激烈的一个例子,是在小说《1984》里面,当局通过限制人们的用词来限制人们的思维——所以大家都被强迫讲“新语”。

第二,学习多门编程语言可以找到更加适合解决问题的那一种语言

在《CTMOCP》一书中,对于一个编程语言中一个新概念出现的原因,做了很好的说明:

a new concept is added when programs become complicated for technical reasons unrelated to the problem being solved(在编程语言中一个新概念的出现,通常是因为在要解决的问题中,出现了一些 和问题本身无关的 需要用复杂的技术手段解决 的问题)。我想,这种“新概念”,在浅层次可以是一些人们常用的API,在深一点的层次,可以是一种大的编程概念,比如面向对象,递归,解释性编程。通过合适地利用这些新概念、API,可以更加容易的解决一个现有问题。

第三,一门良好的语言能更清晰的描述问题,从而加快编码和沟通的速度。

在《黑客与画家》里面,这句话写得很好:一个操作所需的代码越多,就越难避免bug,也越难发现他们。对于我的一些低级应用来说,在用惯了Java的高级库函数之后,如果去用C做一些ACM题目,是一件很困难的事情(同时也是因为自己对于C++不够了解)——算法可以想出来,但对于基本的数据结构,比如哈希表、树、栈 等等,都需要自己来实现——随便一个小错误都会导致bug,无疑增加了debug的难度。

语言是一种抽象形式。理想状态下高级语言的抽象,可以清楚地展示解决问题的思路本身。

***,展望一下理想的状态。

编程实际上是在创造一个工具去解决用户的问题。面对一个要解决的问题,对于将要使用的编程语言的分析,应该像算法分析一样,知道一个语言的优势、劣势;使用这个语言能够带来的好处,以及产生的副作用。而要实现这些分析,需要对不同类型的编程语言有充分的了解,才能事半功倍。

总之,没有***的语言,对于一个特定的问题,只有最合适解决问题的编程语言;而了解这些不同的解决问题的工具,是相当必要的——在合适的时候,一个好的语言可以节省下一个程序员无数的时间。

原文:http://flyfy1.iteye.com/blog/1141398

【编辑推荐】

  1. 编程巨星成长的唯一秘诀
  2. 8月编程语言排行榜:以总统为名的语言新贵Lua
  3.  四周时间与二小时在编程上的差别
  4. 每一门编程语言都是上辈子折翼的天使
  5. Erlang语言作者告诉你什么才是编程***的方法
责任编辑:陈贻新 来源: flyfy1的博客
相关推荐

2009-09-07 09:03:05

思科认证CCNA学习的重要性

2009-09-28 13:23:00

CCNA学习方法CCNA

2010-07-30 16:28:06

2023-10-24 11:07:57

2023-05-24 16:08:45

深度学习工业4.0

2021-12-28 00:29:00

网络安全Java编程语言

2023-09-04 09:00:00

机器学习算法

2021-12-08 14:02:46

小数据机器学习人工智能

2009-09-14 15:50:17

CCNA学习方法

2020-08-27 07:00:00

代码软件应用程序

2017-12-29 10:14:48

IT项目

2013-08-08 10:10:06

备份策略全备份增量备份

2011-07-05 18:30:44

站内优化

2009-12-25 15:00:48

WPF软件

2023-06-14 15:46:10

综合布线医疗保健

2009-03-03 17:25:41

2016-08-29 20:31:17

2022-11-04 14:13:54

2014-04-23 11:36:29

运维日志

2009-11-25 17:36:38

PHP函数includ
点赞
收藏

51CTO技术栈公众号