网站工程前端,免费链接生成器,商丘网站建设推广公司,瓦力工厂少儿编程加盟“第一门编程语言学C靠谱吗#xff1f;”“C还有未来吗#xff1f;”“我应该考虑学C吗#xff1f;”“C太老了吧#xff01;”你是否也听过类似的话语#xff1f;听说过无数次#xff0c;有些是面对面的交谈#xff0c;而有些来自某个论坛。虽然答案无非是“取决于具体… “第一门编程语言学C靠谱吗”“C还有未来吗”“我应该考虑学C吗”“C太老了吧”你是否也听过类似的话语听说过无数次有些是面对面的交谈而有些来自某个论坛。虽然答案无非是“取决于具体情况”但以我的拙见学习C编程是非常宝贵的经验。我想通过这篇短文向你展示C伟大的一面。01C的精神首先我想引用文档C99RationaleV5.10中的一句话C89委员会始终将保留C的传统精神作为主要目标。C的精神体现在很多方面但其本质在于社区对C语言所依赖的基本原则的看法。C的精神可以总结为以下几个方面相信程序员。不阻碍程序员完成任务所需的工作。保持语言短小精悍。仅提供一种操作的方法。保持高速即使无法保证可移植性。下面我将进一步讨论上述几点。02中级编程语言编程语言可以大致分为两个级别低级和高级。低级语言靠近硬件比低级语言更接近 CPU 的就只有电流了。这些语言又分为为机器码和汇编两种。前者是原始数据流通常是二进制数据。为了便于人类使用通常我们以“可读”的十六进制形式进行处理。第二代语言汇编在机器码之上提供了一层抽象。这些语言大部分是人类可读的符号包括符号地址、操作码、地址、数字常量、字符串等的映射。而且每个处理器各有不同。相较而言高级语言提供了哪些抽象根据维基百科与低级编程语言相比高级语言使用了自然语言元素更易于使用而且还可以自动化甚至完全隐藏计算机系统中的重要领域例如内存管理从而简化程序的开发过程而且也比低级语言更易于理解。编程语言提供的抽象数量决定了其“高级”程度。 简而言之低级语言更加靠近机器高级语言更加人性化。C 是高级编程语言但在 C 刚刚创建的时候大多数功能仍然是通过低级的汇编完成的。因此与其他广泛使用的语言相比C 拥有更底层的抽象级别因此我喜欢将其称为“中级编程语言”。你可以轻松地将 C 代码编译成汇编而不是二进制代码并检查 CPU 执行的指令在这个过程中C语言不会加入太多语言特有的代码。此外如果有需要流行的 C 编译器还提供了更低级的选项允许你使用内联汇编完全掌控 CPU。纵观编程领域能够做到这一步的编程语言可谓少之又少。03简 洁低级语言的编程难度很高。不是因为这些语言过于复杂而是因为这类编程很容易出错因此需要投入更多精力、记忆和心思。C 是中级编程语言因此“根据定义” C 语言编程更加容易。但令人惊讶的是与高级语言相比C 语言的学习非常简单。为什么因为 C 语言的语法非常简单还有结构化的范例。循环、函数、结构、指针、变量、类型等核心基础知识的学习都非常容易。大约只需一周的努力学习即可入门。剩下的就是数学和计算机科学理论了。但是不要误会我的意思如果想完全掌握 C 语言你需要付出大量的努力事实上学习任何东西都需要付出大量的努力04快速、轻量级与其他语言例如 Java 相比标准 C 库很小所以你完全可以记住所有的功能。虽然有些功能应该在很久以前就弃用了但是 C 语言的性能仍然非常出色。如果连 libc 都觉得太大怎么办即便你完全不用 libc 也没有关系。只要不包含括任何头文件即可甚至连简单的 printf() 都不使用。你可以将其替换成其他库。C 语言非常成熟重视对内存的管理拥有内联汇编、少量抽象且语言没有过度膨胀因此程序员能够很好地控制程序。因此C 语言成为了 OS 内核Linux、Windows NT 或 macOS 的 XNU 等以及其他语言例如 Python的理想选择。这也是为什么 C 在嵌入式系统上如此受欢迎的原因因为嵌入式系统不允许浪费任何资源。05无所不在可移植性你能否想到任何没有 C 编译器的重大平台除了有些只运行汇编的平台我从未听说过没有 C 编译器的平台。高端游戏 PC、NASA 航天器、售票机等各种平台都使用了 C 编程。真的是无所不在C 软件遍布全世界。如上所述对于围绕在我们日常生活中的微控制器和其他形式的嵌入式系统来说C 语言是主流选择。你听说过FFI吗事实证明许多编程语言都可与 C 兼容。你不必担心是否可在某些工作中使用 C 语言99%的情况下你都可以使用 C尽管这并不意味着你应该在所有工作中都使用 C……。尽管 C 语言的代码并非100可移植但你可以成为可移植的程序员。06影响力C 语言直接或间接地影响了无数语言比如 C 、Java、Go、D、Rust、Perl甚至是 PHP 和 Python。显然学习这些语言的时候你并不需要 C 的知识有时甚至还不能使用C的最佳实践。然而我认为记住编程语言的根源很重要。而且如果你熟悉 C那么就会有一些优势尤其是 C 的学习。07丰富的库我怀疑以上对于 C 语言的快速、轻量级、中级编程语言、汇编等方面的讨论可能会给你一个错误的想法你需要实现所有的功能。虽然 C 确实没有 Java中的 linkedHashMap 或其他功能如垃圾收集器但 C 语言也不至于那么落后。