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

标签: 学习 编程语言 | 发表时间:2011-08-17 16:19 | 作者:程序员 蒋冰
出处:http://www.jobbole.com/blog.php
  注:本文转载自flyfy1的博文

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

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

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

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

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

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

  a new concept is added when programs become complicated for technical reasons unrelated to the problem being solved(在编程语言中一个新概念的出现,通常是因为在要解决的问题中,出现了一些 和问题本身无关的需要用复杂的技术手段解决的问题)。

  我想,这种“新概念”,在浅层次可以是一些人们常用的API,在深一点的层次,可以是一种大的编程概念,比如面向对象,递归,解释性编程。通过合适地利用这些新概念、API,可以更加容易的解决一个现有问题。

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

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

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

  最后,展望一下理想的状态。

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

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

 
   
  -------------------------------------------------------------------
  你可能对以下文章也感兴趣

  jQuery的deferred对象详解
  为什么我喜欢富于表达性的编程语言
  重构代码的7个阶段
  Node.js-究竟是什么?
  静态类的原罪
            
  -------------------------------------------------------------------

  

相关 [学习 编程语言] 推荐:

编程语言教程书该怎么写: 向K&R学习!

- kapster - 为之漫笔
原文地址:Lax Language Tutorials. 每年在评审Jolt Awards图书的时候,我都会被一些语言教程类图书弄得心力交瘁. 从这些年的评审经验来看,这些语言类教程的写得都不错,但除此之外,少有亮点. 换句话来说,这些书都很严谨、很精密,如果读者有足够的定力,通过它们掌握一门语言的编程技术还是不成问题的.

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

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

2014年值得学习的编程语言

- - 编程 - 编程语言 - ITeye博客
经过数据分析和研究Jobs Tractor的45000个开发人员招聘职位数据,我们得到了上图的结果: 自上一年,主要的变化如下:. PHP和Java换了位置,但是仍旧是高居不下. Java的Android已经取代了SQL并且接近Objective-C. Javascript已经超过了Ruby. ActionScript下降了2位.

对于初学者 哪几种编程语言最值得你去学习

- - 外刊IT评论
有几个人曾经问我,有哪些最有用或最好的编程语言适宜学习. HTML/CSS不谈,我认为答案取决于你想通过编程来做什么. 对只用一种语言来构建某个项目的情况而言,Javascript和它的框架是非常有用的. Angular.js可以控制展示给用户的网站前端. Node.js将作为管理网站所有内容的网络服务器.

[转][转]Clojure 编程语言

- - heiyeluren的blog(黑夜路人的开源世界)
简介: Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况. Clojure 是一种运行在 Java™ 平台上的 Lisp 方言,它的出现彻底改变了这一现状. 如今,在任何具备 Java 虚拟机的地方,您都可以利用 Lisp 的强大功能. 在本文中,了解如何开始使用 Clojure,学习它的一些语法,同时利用 Eclipse 的 Clojure 插件提供帮助.

如果编程语言是汽车……

- 康爷 - Wow! Ubuntu
原文: If programming languages were cars... http://www.cs.caltech.edu/~mvanier/hacking/rants/cars.html,有筛减. 本文是一系列把编程语言和汽车对比的老笑话合集,添加了几种最近流行的语言. 注:似乎 Digg/Reddit/StumbleUpon 对本文进行了挖掘/阅读/踩,结果我收到了一大坨儿的新建议.

如果编程语言是一条船…

- will - cnBeta.COM
Turing绝对是一个双人皮划艇.

杂谈现代高级编程语言

- 卡飞菲 - Yi Wang's Tech Notes
几个月之前,Slashdot转载了Robert Harper教授的一篇博客,说卡内基梅隆大学计算机系把”面向对象编程“从大一新生的必修课中删掉了,其原因是. 这两个原因(anti-modular和anti-parallel)都是很重的指责了;尤其是anti-modular,因为OO的基本思想通常被理解成“封装”,从而实现模块化.

你喜欢什么编程语言?

- Sean - 不周山
OpenParty回来,重看了一下自己的讲稿,觉得还是挺乱的,想传递的东西很多,仓促之间也没有把内容组织好,对周六冒着桑拿天赶到现场,还在一间没有空调的挤了一百多号人的房间里听我唠叨了近一个小时的同学们深感有愧. 这里摘要一下,也许能同时弥补一下因为我口音不纯带来的表意不清. 其实主要是两部分的内容,一是我认为R能极大提高算法与数据工作人员的快乐程度及工作效率;二是R的发展历史中呈现出来的六张面孔.

年度编程语言锁定Objective-C

- ndv - 《程序员》杂志官网
虽然2011年才刚过半,但随着iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新,从市场占有的趋势来看,Objective-C成为年度编程语言无疑. TIOBE编程语言排行榜每年初都将统计评出上年度的最佳编程语言大奖,获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩.