# 3.3 如何选择编程语言 ## 编程语言的工具属性 在回答这个问题之前,需要各位同学明确的一点是,编程并不是一个独立的学科,像数学那样做题是学不好的。 编程语言的选择更像是锤子与扳手之间的选择,更大程度上看的是你需要解决什么样的问题。当你需要砸钉子的时候,使用螺丝刀总归是不顺手的,因此了解不同语言的特性,针对任务进行选择是非常有必要的。 ## 编程语言特性 首先附上一张经典老图 ![](https://cdn.xyxsw.site/boxcnW0YQY58RXhwdtRj5k6ndlc.jpeg) ### C 语言/C++ C 语言/C 艹一脉同源,从图中来看,C 和 C 艹都像多功能瑞士军刀,说明其是用来做细活的工具,C 上面的优盘说明其可以进行硬件开发的相关工作。 不少同学对可能会感到困惑,为什么要从 C 语言学起(因为学校菜教不了别的) C 语言其实是一门优秀的承上启下的语言,既具有高级语言的特点,编写不依赖特定的计算机硬件应用程序,应用广泛,又具有底层汇编的特点,其指针可以让此语言操纵更为底层的内存空间。 但是其功能毕竟受限,有时候用起来会苦恼其操作受限以及各种奇奇怪怪的 bug 问题。 如果为了增强自身的编程能力和计算机素养,培养解决问题的能力,C 语言的你的不二选择。在这里强烈推荐 jyy 老师的各类课程。([http://jyywiki.cn/](http://jyywiki.cn/) 我们的任务一部分会使用 C 语言,一方面培养大家编程能力,一方面辅助大家期末考试。 ### C++ 现代 C++ 程序可看成以下三部分组成。 - 更接近底层的语言,大多继承于 C - 更高级的语言特征,可自定义数据类型 - 标准库 C++ 既有 C 面向过程的特点,又拥有面向对象的特性,是一门系统级的语言。 编译器、操作系统的开发,高性能服务器的开发,游戏引擎的开发,硬件编程,深度学习框架的开发......只要是和底层系统或者是与性能相关的事情,通常都会有 C++ 的一席之地。 ## Python Python 在图里是电锯,适合干比较“狂野”的任务,也是深度学习的主要编程语言。其在数据处理方面具有诸多出色成熟的库,编程语言也较为简单。 但是过度的包装可能造成出现意想不到的错误,出现的结果看不懂等等。 使用缩进控制语句是此语言的特点。 作为深度学习的主要使用语言,我们将以Python 为主。 ## JAVA 一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承,指针等概念,因此 java 语言具有功能强大和简单易用两个特征。 他太老了,虽然不少框架都依托于 Java,但是不得不说,一些地方略有落后。 频繁应用于Web 开发,安卓应用等等。 ![](https://cdn.xyxsw.site/boxcnPv2FcyQxGLjYHThSaJNwRf.jpeg) 当然还有各种形形色色的编程语言等着同学们去探索。