This commit is contained in:
许大仙 2024-08-12 08:35:48 +08:00
parent 9bdc946fc6
commit ceff9b59b0

View File

@ -468,7 +468,7 @@ int main() { // 定义主函数
# 第四章C 语言的学习技巧 # 第四章C 语言的学习技巧
## 4.1 概述 ## 4.1 如何学习 C 语言?
* 对于大部分的初学者, 学习 C 语言的目的可能是为了成为一名合格的程序员,开发出优秀的软件。但是,在学习了 C 语言的基本语法后,却发现只能在`控制台``黑底白字`)上玩玩,没有漂亮的用户界面以及人性化的交互。于是,开始学习数据结构、算法、数据库、操作系统,越陷越深,越来越迷茫,不知道学习 C 语言能做什么,认为学习编程很难,开始怀疑自己,直到放弃!!! * 对于大部分的初学者, 学习 C 语言的目的可能是为了成为一名合格的程序员,开发出优秀的软件。但是,在学习了 C 语言的基本语法后,却发现只能在`控制台``黑底白字`)上玩玩,没有漂亮的用户界面以及人性化的交互。于是,开始学习数据结构、算法、数据库、操作系统,越陷越深,越来越迷茫,不知道学习 C 语言能做什么,认为学习编程很难,开始怀疑自己,直到放弃!!!
* 其实C 语言本身就是一门非常简单的语言,提供的实用功能不多,大部分的时候需要`借助`操作系统、第三方库以及以及一些硬件才能发挥它的威力!!! * 其实C 语言本身就是一门非常简单的语言,提供的实用功能不多,大部分的时候需要`借助`操作系统、第三方库以及以及一些硬件才能发挥它的威力!!!
@ -484,7 +484,7 @@ int main() { // 定义主函数
* 单片机和嵌入式属于软硬件的结合,是使用 C 语言最多的地方。 * 单片机和嵌入式属于软硬件的结合,是使用 C 语言最多的地方。
* 开发系统组件或服务,用于支撑上层应用。 * 开发系统组件或服务,用于支撑上层应用。
* …… * ……
* 既然 C 语言的应用很多,为什么感觉学习它还是做不了什么?答案就是`生态`。 * 貌似感觉 C 语言的应用还是很多的啊,那为什么感觉学习 C 语言还是做不了什么?原因除了 C 语言通常都是开发最`底层`的应用之外,最重要的一点就是`生态`。
> [!IMPORTANT] > [!IMPORTANT]
> >
@ -493,13 +493,13 @@ int main() { // 定义主函数
> * ① 很多编程语言都自带`标准库`语言本身提供的开箱即用Java、Go 等。 > * ① 很多编程语言都自带`标准库`语言本身提供的开箱即用Java、Go 等。
> * ② 很多编程语言都有自己的`包管理器`用于管理第三方库解决方案Java 中的 Maven、Gradle、Go 中的 go modules JavaScript 的 npm 等。 > * ② 很多编程语言都有自己的`包管理器`用于管理第三方库解决方案Java 中的 Maven、Gradle、Go 中的 go modules JavaScript 的 npm 等。
> >
> 遗憾的是C 语言的`标准库`非常简单,只有`输入输出`、`文件操作`、`日期时间`、`字符串处理`、`内存管理`,对于`网络编程`、`GUI`、`数据库`、`并发`等`需要`大量的`第三方库`来扩展 C 语言的功能Java 语言、Go 语言等其他的现代化高级编程语言都是直接将这些常见的开发场景内置到标准库中极大的降低了软件开发的难度。C 语言的`第三方库`非常稀少,更别提缺少自己的包管理器。 > 遗憾的是C 语言的`标准库`非常简单,只有`输入输出`、`文件操作`、`日期时间`、`字符串处理`、`内存管理`,对于`网络编程`、`GUI`、`数据库`、`并发`等`需要`大量的`第三方库`或`操作系统的功能`来扩展 C 语言的功能Java 语言、Go 语言等其他的现代化高级编程语言,都是直接将这些常见的开发场景内置到标准库中,开箱即用,极大的降低了软件开发的难度。C 语言的`第三方库`也不是很多(和其它现代化高级编程语言相比),社区也不是很活跃(和其它现代化高级编程语言相比),更别提缺少自己的包管理器。
> >
> 不过,现在 C 语言社区也开始诞生了一些包管理器Conan 和 vcpkg 也有自己的项目构建工具cmake 、xmake 等。 > 不过,现在 C 语言社区也开始诞生了一些包管理器Conan 和 vcpkg 也有自己的项目构建工具cmake 、xmake 等。
> [!NOTE] > [!NOTE]
> >
> JavaScript 的作者 Brendan Eich布兰登·艾奇 曾经这么说:“与其说我爱 JavaScript不如说我恨它。它是 C 语言和 Self 语言一夜情的产物(致敬 C 语言)。十八世纪英国文学家约翰逊博士说得好:"它的优秀之处并非原创,它的原创之处并不优秀。"” > JavaScript 的作者 Brendan Eich布兰登·艾奇 曾经这么说:“与其说我爱 JavaScript不如说我恨它。它是 C 语言和 Self 语言一夜情的产物(`致敬 C 语言`)。十八世纪英国文学家约翰逊博士说得好:"它的优秀之处并非原创,它的原创之处并不优秀。"”
> >
## 4.2 项目构建工具和包管理器 ## 4.2 项目构建工具和包管理器
@ -522,8 +522,8 @@ int main() { // 定义主函数
* MavenJava一个流行的构建工具和依赖管理工具广泛用于 Java 项目。 * MavenJava一个流行的构建工具和依赖管理工具广泛用于 Java 项目。
* GradleJava、Kotlin、Groovy一个灵活的构建工具支持声明式的构建脚本和多种语言。 * GradleJava、Kotlin、Groovy一个灵活的构建工具支持声明式的构建脚本和多种语言。
* MakeC/C++):一个经典的构建工具,使用 `Makefile` 来定义构建规则和依赖关系。 * MakeC/C++):一个经典的构建工具,使用 `Makefile` 来定义构建规则和依赖关系。
* ~~AntJava早期流行的 Java 构建工具,通过 XML 配置文件定义构建过程。~~
* CMakeC/C++一个跨平台的构建系统帮助生成标准的构建文件Makefile 或 Visual Studio 项目文件。 * CMakeC/C++一个跨平台的构建系统帮助生成标准的构建文件Makefile 或 Visual Studio 项目文件。
* ……
### 4.2.3 包管理器 ### 4.2.3 包管理器
@ -537,12 +537,10 @@ int main() { // 定义主函数
* 常见的包管理器: * 常见的包管理器:
* npmNode.js用于管理 JavaScript 和 Node.js 项目的包和模块。 * npmNode.js用于管理 JavaScript 和 Node.js 项目的包和模块。
* pipPython用于安装和管理 Python 的软件包。 * pipPython用于安装和管理 Python 的软件包。
* ComposerPHP用于管理 PHP 项目的依赖库。
* NuGet.NET用于管理 .NET 平台上的包和库。
* RubyGemsRuby用于管理 Ruby 的库和工具包。
* CargoRustRust 编程语言的包管理器和构建工具。 * CargoRustRust 编程语言的包管理器和构建工具。
* YarnJavaScript是 npm 的替代品,提供更快和更可靠的包管理体验。 * YarnJavaScript是 npm 的替代品,提供更快和更可靠的包管理体验。
* HomebrewmacOS用于 macOS 系统下的命令行工具和库的管理。 * HomebrewmacOS用于 macOS 系统下的命令行工具和库的管理。
* ……
### 4.2.3 注意事项 ### 4.2.3 注意事项
@ -551,7 +549,7 @@ int main() { // 定义主函数
> [!NOTE] > [!NOTE]
> >
> * ① Gradle 也支持原生项目的开发C 和 C++ 。 > * ① Gradle 也支持原生项目的开发C 和 C++ 。
> * ② 不过,业界开发 C/C++ 项目的项目构建工具和包管理器,通常使用 Cmake 和 Conan 。 > * ② 不过,目前而言,业界开发 C/C++ 项目时,使用最多的项目构建工具和包管理器是 Cmake 和 Conan 。