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

    编程语言原理(第10版)

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

    plc标准编程语言之一ST语言

    结构化文本(ST)作为一种高级编程语言,在PLC编程领域中发挥着重要作用。它不仅提高了编程的效率和准确性,还为开发者提供了一个更为直观和灵活的编程环境。无论是对于有经验的程序员还是初学者来说,掌握ST语言都...

    软件开发与编程语言

    在当今数字化时代,软件开发与编程语言的重要性日益凸显。无论是企业级应用还是个人项目,都需要通过编程语言来构建软件解决方案。因此,理解和掌握编程语言及其应用变得至关重要。 #### 计算机的多样性与编程语言...

    Dart编程语言.7z

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

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

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

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

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

    ML编程语言

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

    CFC编程语言

    CFC编程语言作为SIMATIC S7系列PLC的重要组成部分,凭借其图形化编程、模块化设计和实时监控等特点,为自动化控制领域提供了强大的编程工具。通过对CFC语言的学习和掌握,工程师能够更加高效地完成控制系统的设计与...

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

    在当今这个信息化的时代,编程语言已成为...选择合适的编程语言,理解核心概念,配置开发环境,实践编程项目,并有效利用网络资源,是系统学习编程语言的必经之路。只要坚持不懈,持之以恒,终将成为一名优秀的程序员。

    不同编程语言对计算机应用软件开发的影响分析.docx编程资料

    综上所述,不同编程语言的选择直接影响到软件项目的整体规划、开发人员的专业技能要求以及软件的平台适应性等多个方面。合理选择编程语言可以极大地提高软件开发效率,降低开发成本,同时也能够确保软件产品的质量和...

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

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

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

    本文将由经验丰富的技术培训师Paul带领我们快速学习编程语言的同时,也分享了他的育儿经验,以期帮助家长理解如何在育儿过程中培养孩子的编程兴趣和能力。 Paul的职业生涯始于中学时期对编程的热爱。那时,他通过...

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

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

Global site tag (gtag.js) - Google Analytics