`
flyfy1
  • 浏览: 72136 次
  • 性别: 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里把这部份做的很好

相关推荐

    各种编程语言的特点

    在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在巨大的智利浪费,大家把大量的精力用在编写别人已经实现的程序代码上。看看,文本编辑器有多少,看看ftp程序有多少,看看字处理程序有多少...

    简单的中文编程语言青语言是一门完全基于中文语言习惯打造的编程语言,主要面向青少年、儿童和非专业人士

    这一现在现状的原因包含多个方面,但我们认为其中存在一个基础性的问题,中国没有良好的学习编程的”土壤“。当前主流的编程语言均以英文为载体,各种语言文档、使用手册也均使用英文,这对于母语非英语的人群造成了...

    Mojo编程语言概述、原理及应用.pdf

    Mojo是一种新兴的编程语言,旨在解决当前编程领域...总的来说,Mojo编程语言是一种兼具易用性和高性能的编程语言,它能够为开发者提供一个更加高效和灵活的编程环境,帮助他们更好地应对复杂的数据科学和机器学习任务。

    C++在编程语言界的地位如何?学好C++可以做些什么?.docx

    除了掌握基本的编程概念,你还需要了解面向对象编程的概念,如封装、继承和多态,这些是理解C++的重要性。在学习过程中,可以通过编写各种小程序来巩固自己的知识。同时,也可以参加一些线下或线上的课程、培训或...

    JAVA学习视频之Java8高级编程(3)

    Java作为一种面向对象的编程语言,具有强大的跨平台性和丰富的开发工具和框架支持。在我们日常的软件开发过程中,高级编程技术在提升效率和代码质量方面起着重要的作用。本学习视频资料包括多线程编程、反射机制的...

    JAVA学习视频之Java8高级编程(2)

    Java作为一种面向对象的编程语言,具有强大的跨平台性和丰富的开发工具和框架支持。在我们日常的软件开发过程中,高级编程技术在提升效率和代码质量方面起着重要的作用。本学习视频资料包括多线程编程、反射机制的...

    JAVA学习视频之Java8高级编程(1)

    Java作为一种面向对象的编程语言,具有强大的跨平台性和丰富的开发工具和框架支持。在我们日常的软件开发过程中,高级编程技术在提升效率和代码质量方面起着重要的作用。本学习视频资料包括多线程编程、反射机制的...

    机器人编程语言python-10大热门机器人编程语言,你掌握了哪种?.pdf

    不过在 ⼈⼯智能编程领域它还是相当重要的。ROS的⼀部分是⽤LISP写的,虽然你不需要掌握这个来使⽤ROS。 3. 硬件描述语⾔(HDL) 硬件描述语⾔⼀般是⽤来描述电⽓的编程⽅式。这些语⾔对于⼀些机器⼈专家来说是⾮常...

    Go语言圣经,golang学习入门到精通

    Go项目包括编程语言本身,附带了相关的工具和标准库,最后但并非代表不重要的,关于简洁编程哲学 的宣言。就事后诸葛的角度来看,Go语言的这些地方都做的还不错:拥有自动垃圾回收、一个包系统、 函数作为一等公民、...

    Java语言教程&案例&相关项目资源

    这篇文章是一份全面且详尽的Java语言学习资源指南,旨在帮助读者系统地学习Java编程语言,并通过案例和项目实践,提升编程能力和实际应用水平。 文章首先介绍了Java语言教程的重要性,强调了学习教程是掌握Java语言...

    Python 备忘单是一页展示 Python 3 编程语言精华的参考表.rar

    近年来随着数据科学的出现,Python 的重要性成倍增加,它已成为数据科学和开发的主要编程语言,具有独特、灵活、语法非常简单并且拥有强大的社区等特点。一些全球知名的应用程序如 BitTorrent、DropBox 和 YouTube ...

    机器学习算法编程学习.zip

    机器学习历经70年的曲折发展,以深度学习为代表借鉴人脑的多分层结构、神经元的连接交互信息的逐层分析处理机制,自适应、自学习的强大并行信息处理能力,在很多方面收获了突破性进展,其中最有代表性的是图像识别...

    适合初学者学习的优秀项目:c/c++/python/java等等

    以下是一些入门学习项目对于编程学习的重要性: 1. **理论与实践相结合**:学习项目可以帮助初学者将理论知识应用到实际问题中,加深对编程概念的理解。 2. **培养解决问题的能力**:通过解决实际问题,学习者可以...

    python编程与应用a课程的学习体会和建议.docx

    首先,我觉得python语言之所以要比我想象的要简单有趣一些,主要是因为老师在讲课过程中并没有把语法放在一个极其重要的位置,而是强调了经验和实际应用的重要性。而这种教学方式既不会让我感觉到特别枯燥难懂,又...

    PERL语言编程

    从 Perl 最早的文本处理语言开始,它已经发展成为一种非常复杂的,通用的编程语言,以及完整的开发环境,包括调试器,调节器,交叉引用,编译器,库,语法提示编辑器,以及所有其它“真正”的编程语言所具有的所有...

    一文讲解深度学习语言自然语言处理(NLP).zip

    标题:深度学习之语言自然语言处理(NLP):让机器读懂你的话 内容概要:本文为初学者提供了一份详尽的学习路线,...此外,文中还强调了跟进最新研究和技术的重要性,鼓励读者在深度学习和NLP的世界中不断探索和进步。

    基于随机森林的回归分析代码,输出因子重要性和误差曲线

    基于MATLB编程的随机森林回归分析代码,代码可以进行自变量的重要性分析,输出误差曲线,和预测值,代码可以直接运行,代码精简,数据完整,主要代码有注释,方便扩展到其他数据,

    Visual Basic 2008编程参考手册

    本书是世界级VB专家Rod Stephens奉献给广大程序员的编程心得与忠告,是学习Visual Basic 2008编程绝佳的参考手册。本版对上一版进行了大量的扩充,新增了有关WPF、LINQ、UAC安全、WCF等方面的内容。书中的基础部分...

    D程序设计语言.(美)Andrei.Alexandrescu著

    D语言是一种通用的系统和应用编程语言,...《D程序设计语言》不仅适合于D语言初学者,对于想学习编译器实现的研究人员、想拓展学生的编程语言知识面的教师以及想深入了解编程语言设计的人,也能提供很好的帮助和指导。

    Python 编程基础:深度解析

    每一次学习新的编程语言之旅都始于最基本的步骤。本文旨在综合整理Python编程中常见的语法规则和基础概念,逐个深入探讨每个知识点,帮助读者从入门到进阶。 Hello World! Python 中的问候世界 在任何编程语言中,...

Global site tag (gtag.js) - Google Analytics