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