模块2:编程语言
终于到了我们开始讨论"真正的"开发者内容的时候了!在这个模块中,我们将系统地讨论编程语言。换句话说,我们将讨论以下问题:
- 什么是编程语言?为什么我们需要编程语言?
- 有哪些类型的编程语言?每种类型的特点是什么?
- 现代编程语言中常见的概念、语法和特点有哪些?这样设计的原则是什么?
此外,还将提供一些"迷你编码实验"来让你亲自动手编程,以及在本教程结束时将有一个展示如何使用编程语言创建软件的最终项目。
如何学习本模块?
本模块旨在面向初学者,但这并不意味着它是一个语言教程。由于本课程的设计理念是"省略一切可以通过人工智能(2023年)或搜索引擎轻松找到的内容",我不会在解释概念或代码实验中详细讨论特定编程语言的实际语法。因此,在学习过程中,我会假设你有访问人工智能助手(如ChatGPT)的权限,你应该随时向他/她(或Google)询问这些内容的解释。在开发者眼中,通过互联网(以及从2022年底开始使用的AI)寻找答案是一项非常重要的能力,我强烈鼓励你从一开始就开始培养这种能力。
以下是你向ChatGPT寻求帮助的一个例子:
你:
请你简明扼要地解释一下 C++ 中原始变量类型及其大小(以字节为单位)。
ChatGPT:
当然,这里是关于 C++ 中原始变量类型及其大小的简洁解释:
1. **char**:通常为1个字节。用于表示单个字符。
2. **int**:通常为4个字节。用于表示整数。
3. **float**:通常为4个字节。用于表示单精度浮点数。
4. **double**:通常为8个字节。用于表示双精度浮点数。
5. **bool**:通常为1个字节。用于表示布尔值(`true`或`false`)。
6. **short int**(short):通常为2个字节。用于较小的整数。
7. **long int**(long):通常为4个字节(在某些系统上可能为8个字节)。用于较大的整数。
8. **long long int**:通常为8个字节。用于更大的整数。
9. **unsigned int**:通常为4个字节。与`int`类似,但只能表示正值。
10. **long double**:通常为12或16个字节。用于扩展精度浮点数。
值得注意的是,这些类型的确切大小可以根据编译器和计算机体系结构而变化。以上提到的大小是常见的,但并不保证适用于所有环境。C++标准定义了这些类型的最小大小,但允许编译器使用更大的大小。
你:
谢谢!
ChatGPT:
不客气!如果你还有更多问题,无论是关于C++还是其他任何内容,请随时提问。祝你编程愉快!
在学习本模块的过程中,大量进行编程练习也非常重要。截至2023年,频繁编写代码仍然是学习编程不可或缺的一部分。"熟能生巧"在编程中也同样适用。
如果你不知道该编写什么代码,一个好的起点是学习一个框架。例如,你可以学习Unity,这是一个游戏引擎,可以在学习编程的同时创建出色的游戏;或者你可以学习Flutter,它可以轻松创建漂亮的应用程序。你还可以向人工智能咨询其他框架的建议。
尽早转向Linux!
此外,我强烈推荐你尽早安装Linux操作系统并熟悉终端(如果你不知道终端是什么,问问人工智能)。如果你真的非常担心搞砸了你的计算机,可以先从虚拟机、Docker或WSL开始,但当你准备好时,我建议你切换到"本机"安装(如双重引导)。
使用Linux操作系统的原因如下:
- Linux可以帮助你更好地了解计算机硬件、操作系统和软件的工作原理。这是因为Linux是专为开发者设计的,而Windows则是为非开发者、"普通"用户设计的。因此,Windows对操作系统、软件、硬件等抽象了太多细节,包括开发者应该了解的细节,而Linux操作系统通常并不会这样做。例如,在Linux上轻松控制CPU核心频率,而在Windows上很难做到。
- Linux上的开发生态系统要好得多。许多框架和软件只支持Linux;即使不是这种情况,通常在Linux上配置开发环境(即软件开发套件)要容易得多。另一方面,在Windows上配置任何开发者工具都是非常困难的。即使是微软自己的集成开发环境(IDE)Visual Studio Code也是如此。
你可能注意到我在上面使用了"基于Linux的操作系统"这个术语。没错,Linux本身不是一种操作系统;相反,有许多基于Linux的操作系统,比如Debian、Ubuntu、Arch Linux和Deepin。
个人建议初学者使用最新的LTS(长期支持)版本的Ubuntu,原因如下:
- 它易于安装和适合初学者(不要过于自信尝试Arch Linux,你会在安装过程中感到绝望)。
- 它拥有强大的生态系统。在大多数情况下,如果某个开发者工具不支持Ubuntu,那就不要指望它能在其他任何操作系统上工作。
以下是一些帮助你入门Linux的资源:
- 麻省理工学院"Missing Semester"课程的第一和第二讲:这些讲座是一个很好的入门教程,涉及shell。如果你觉得这些内容太冗长,你也可以向人工智能寻求指导。
- Nushell:一种现代化的shell(如果你不知道什么是shell,可以问问人工智能)。我个人已经用nushell取代了bash,而且我相信像nushell这样的面向数据的shell将不可避免地取代像bash这样的面向文本的shell,后者是目前(2023年)的事实标准。然而,目前(2023年)nushell还处于初期阶段,缺少一个成熟的生态系统,我建议在尝试之前先熟悉bash。
- Oh My Posh:你可以使用它来使你的终端看起来更美观。它适用于许多shell,包括nushell(可能需要一些调整)。如果你使用其他shell,也有其他"oh-my-"系列的成员,比如"oh-my-bash"和"oh-my-zsh"。
- 将Ubuntu定制成macOS Monterey:教你如何使Ubuntu看起来像mac(没错,我制作了那个视频)。如果你喜欢mac样式的美感,你可以尝试一下这个。
接下来,我们将讨论什么是编程语言以及主要的编程语言家族。