`
flyfy1
  • 浏览: 74175 次
  • 性别: Icon_minigender_1
  • 来自: Singapore
社区版块
存档分类
最新评论

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

阅读更多

// 引子:
今天选了下学期要学的一门课,叫做编程语言。据说是两周学习一门新的语言,很有挑战性。以及这门课的课本是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的难度。
语言是一种抽象形式。理想状态下高级语言的抽象,可以清楚地展示解决问题的思路本身。

最后,展望一下理想的状态。
编程实际上是在创造一个工具去解决用户的问题。面对一个要解决的问题,对于将要使用的编程语言的分析,应该像算法分析一样,知道一个语言的优势、劣势;使用这个语言能够带来的好处,以及产生的副作用。而要实现这些分析,需要对不同类型的编程语言有充分的了解,才能事半功倍。
总之,没有最好的语言,对于一个特定的问题,只有最合适解决问题的编程语言;而了解这些不同的解决问题的工具,是相当必要的——在合适的时候,一个好的语言可以节省下一个程序员无数的时间。

 

4
5
分享到:
评论
1 楼 jilen 2011-08-06  
"一个好的语言可以节省下一个程序员无数的时间",说得不错,高阶集合函数可以让Java程序代码漂亮很多。希望Brain goetz同学在JDK8里把这部份做的很好

相关推荐

    怎样去学习一门编程语言,总结的很好!

    ### 如何高效学习一门编程语言 #### 一、选择合适的编程语言 在开始学习之前,首先...总之,学习编程语言需要耐心和毅力。通过合理规划学习路径、充分利用资源、不断实践和反思,最终将能够成为一名出色的程序员。

    单片机编程语言_学习哪种编程语言好?

    选择合适的编程语言对于开发高质量的单片机应用程序至关重要。本文旨在对比单片机领域的几种常用编程语言,帮助读者根据自身需求挑选最适合的语言。 #### 二、单片机编程语言分类 单片机的编程语言大致分为三类:...

    编程语言原理(第10版

    根据提供的标题“编程语言原理(第10版)”及描述“编程语言原理(第10版 编程语言原理)”,我们可以推断出这本书主要讲述了编程语言的基础理论与实践应用,是学习和理解编程语言设计与实现的重要参考资料。...

    自制编程语言基于C语言郑钢源代码

    总的来说,《自制编程语言基于C语言郑钢源代码》是一个深入学习编程语言和C语言实现的宝贵资源,它提供了从零开始构建一个语言的实践平台,帮助开发者拓宽视野,提升技术素养。通过这个项目,你可以亲身体验到编程...

    zemax编程语言.pdf

    为了适应这种情况,Zemax提供了一种专有的编程语言——Zemax编程语言(ZPL),让设计师们能够更深入地开发和利用Zemax软件。 Zemax编程语言(ZPL)是一种专门为光学设计软件Zemax设计的脚本语言。它允许用户编写...

    阿里云大学编程语言学习内容集锦

    8. 持续学习的重要性: 《程序员修炼之道》一书中提到,激励开发者每年学习一种新语言,以打开新的世界大门。掌握新技能,理解新业务,以及在解决问题时有更多思考方向,都是推动开发者持续学习的重要因素。 总的来...

    如何学习一门编程语言.docx

    安装一些有必要的软件也是学习编程语言的重要一步。许多编程语言都需要编译器来将代码转换成机器能理解的语言。一些语言使用即时编译,而不需要编译。IDEs 是集成开发环境,提供代码编辑器、调试器和翻译等功能。 ...

    编程语言原理(第10版)

    本书涵盖了编程语言的基础概念、设计选择、语法结构以及实现机制等多个重要方面,旨在帮助读者理解和创建自己的编程语言。 在编程语言原理的学习中,首先会接触到的是语言的**基础概念**,这包括变量、数据类型、...

    Dart编程语言.7z

    Dart语言自2011年发布以来,已经在开发社区中获得了广泛的认可,尤其在Flutter框架的推动下,Dart在移动应用开发领域的重要性日益凸显。 在《Dart编程语言》这本书中,作者深入浅出地讲解了Dart的核心概念和技术,...

    各种编程语言集合各种编程语言集合

    总之,理解和掌握不同的编程语言是成为一名全面的IT专业人士的关键。无论是JDBC这样的数据库编程技术,还是对各种编程语言的深入学习,都能增强开发者解决问题的能力,适应不断变化的技术需求。持续学习和实践是IT...

    编程之魂:与27位编程语言创始人对话

    考虑到这本书可能覆盖了多种编程语言,我们也能了解到不同语言之间的教学和学习方法是否存在差异。 关于编程语言如何顺应时代发展,书中可能会探讨一些话题,例如编程语言是如何适应新的计算范式(如云计算、大数据...

    ML编程语言

    学习编程语言的目的是为了使我们成为更好的软件开发者,无论是在哪种编程语言中。本课程中提到的“教学”三种语言ML、Racket和Ruby,实际上是为了通过这些语言来学习不同的编程范式和概念。通过使用这些语言,我们...

    高手教你快速学习编程语言-育儿知识.doc

    他也强调了阅读别人的代码的重要性,认为学习编程语言和学习一门外语是类似的。 Paul 还分享了他是如何快速学习编程语言的。他认为学习编程语言需要实际操作和实践,不能只是学习语法和理论。他会选择自己已经用...

    最流行的编程语言排行.txt

    根据提供的文件信息,我们可以梳理出一个关于“最流行的编程语言排行”的详细分析。虽然原始文本可能存在一些...随着技术的不断进步,新的编程语言和框架也会不断涌现,因此保持学习和适应新技术的能力是非常重要的。

    编程语言快速记忆手册_通用版

    综上所述,《编程语言快速记忆手册_通用版》不仅强调了学习编程语言对于站长来说的重要性,还提供了一套系统的英语单词快速记忆方法,旨在帮助读者更高效地掌握编程语言中的关键术语。无论是对于初学者还是有一定...

    自制编程语言-基于c语言--源码vc2013编译通过

    此外,跨平台的实现也强调了了解不同操作系统内核和API的重要性,这对于成为一个全面的开发者至关重要。 总的来说,这份资源不仅提供了自制编程语言的实际代码,还涵盖了从Linux到Windows的移植过程,是一次难得的...

Global site tag (gtag.js) - Google Analytics