Hi,您好,欢迎来到西安盛图软件科技有限公司!

首选 C++,彻底麻了!

发布时间:2024-01-03 10:15:28

“作为初学者,我应该选择什么语言?”

本文将围绕以下四点展开:

一、这是个陷阱!

通常来说,选择 C++作为你的初始语言并不是一个好主意。在用 C++工作了很长一段时间,并尝试了许多不同的编程语言之后,我觉得 C++就像是用劣质胶带粘在一起的一团乱麻,不知怎么地仍然坚持着,甚至可能在最近的变化中朝着相对较好的方向发展,但对于初学者来说,真的算不上一个好选择。

二、你为什么要这么做?

在大多数情况下,我总是会听到一些具体的论点,试图努力地证明选择 C++作为入门也不错。比如:

1,它非常快!

这是很常见的误解。语言本身并没有快慢之分。当然,有些语言可以比其他语言更快地解析或解释,但这并不意味着用语言 A 编写的程序总是比用语言 B 编写的程序快,反之亦然。一个好的做法是问自己“为什么?”和“什么时候?”为什么用 A 语言编写的程序可能比用 B 语言编写的同等程序更快/更慢?它在多大程度上对性能有意义?但这不是新手应该关心的事情。一般来说,作为初学者,你不应该关心“语言性能”,因为这是你在学习编程时最不需要担心的事情之一。一开始,真正的性能主要取决于代码中使用的数据结构和算法,而不是语言的选择。   

2,学习 C++会教你一些底层的概念,比如指针和手动内存管理!

它的确可以,但是问题在于:你大多数时候不需要知道这些低级的概念来编写软件和学习编程。每天都有成千上万的程序员在不知道指针是什么,或者如何手动管理内存的情况下编写出完美而有效的代码。这并不是为了编写工作代码而必须知道的东西。这对你来说可能永远都没有用。固然,知道指针和手动内存管理在很多情况下是有用的,但对于初学者来说,这不是刚需,因为即使在 C++中,你通常也不想手动管理原始指针和内存分配。

3,游戏编程是在 C++中完成的——通常伴随着“性能”参数。

这个论点有时也站不住脚,因为有许多非常流行的游戏引擎提供了一种更适合新手的游戏开发方法。Godot 是最好的例子之一,因为它有自己的工具集,可以使用自己的 GDScript 语言,也可以与其他语言和工具一起使用。我知道有很多人在使用 C++进行游戏开发,他们也有自己的观点——相对接近硬件。但我仍然坚信,如果你想学习“编程”和“游戏开发”,这可能适得其反,因为在学习你真正想学的东西之前,它带有“必须学习 C++”的沉重包袱。

4,我懂一些 C 语言,所以 C++只是一个扩展,所以我会学习它。

事实并非如此,这样的想法会迫使你走上一条很难回头的道路。注意,不要把 C++看作是 C 的补充,因为这就像把龙看作是他珍贵的金山的补充一样愚蠢。如果执意如此,你将目睹你无法理解的恐怖。

三、那么,还有什么其他选择呢? 

除了 C++之外,还有什么选择?关于这个问题,我将根据个人观点来回答,我也会努力解释为什么我是这样想的。

1.Python

有些人会告诉你 Python 很烂。然而,我要告诉你,我喜欢 Python,因为它很少让我失望。当我需要写一个简单的工具来自动做一些事情,我希望它在任何地方都能工作时,Python 就是我的梦中情“语”。

它的长期支持、庞大的社区、包管理器和现有的工具使我很难不向初学者推荐这门语言。它的语法确实非常具体,有些人甚至会说它很奇特,但是在使用它一段时间后,只有当我不得不将代码块移动到不同的位置并手动修复每个缩进时,它才会让我感到恼火。它甚至有类型提示和易于使用的工具,以确保你遵守键入规则,有些人可能会觉得非常有用。

不过,对于初学者来说,你很可能希望将重点放在庞大的 PyPI 存储库上,以便为自己编写一些有用的东西。它的文档也相对不错,甚至有一个教程让你入门,但如果你完全是 IT 新手,建议寻找一个更适合你的知识水平的入门教程,因为“官方”的教程不是很面向新手。

2.JavaScript

它是通往广阔 Web 应用程序世界的非常简单的门户,但不仅如此,因为现在你几乎可以在任何地方插入 JavaScript......我个人不是这种语言的粉丝,但从我所看到的,我发现从 JavaScript 开始的人有一定的“自由”,可以在他们想要的任何地方使用这种语言。我更支持 JavaScript 作为初学者,而不是 C++,但是要注意这种语言自带的许多陷阱。这基本上适用于任何语言,但大开发不会告诉你这一点!

3.Kotlin

如果你想学习 Java,不管你有什么紧迫的理由,尽量放弃 Java,学习 Kotlin 吧!如果你想制作 Android 应用程序,并且你更愿意使用官方工具而不是一些 web 开发工具,Kotlin 就是你的理想之选。它的 Java 遗产使它成为一种相当不错的入门语言,因为你既有一门漂亮的现代语言,也有很好的现代语法和有用的功能,使用起来非常愉快,还有一个庞大的库存储库,其中一些库在 Kotlin 出现之前很久就编写了。我很少使用这门语言,但我几乎享受使用它的每一刻。

4.C

你想和你的硬件保持密切的关系吗?如果是,这就是一门合心意的语言。平心而论,C 确实缺乏真正的泛型,但这并不妨碍人们现在使用它。

这份清单绝不是全面的。有很多被认为“适合初学者”的语言没有出现在这个列表中,只是因为我从来没有使用过它们,或者工作了太久,以至于我的知识储备已经不适应其当前的发展状态(比如 C#,我想说点什么,但我真的不能)。

请注意,我在这里的重点是推荐一种相对容易学习和使用的语言,基本标准是它有一个大的社区和大量的学习资源。C++在这些方面都缺乏,这使得以“正确”的方式学习现代 C++变得异常困难。而且,公平地说,这使得在 C++中做任何事情都变得不合理地复杂和痛苦。

曾经尝试过从头开始设置具有自动单元和集成测试的 C++项目吗?我做了,但都以失败告终。不是因为这是不可能的,而是因为我宁愿选择一种支持开箱即用的语言(至少是单元测试)。


以上为本次所有分享内容

640.png

上一篇:深入解析 Linux 进程管理机制
下一篇:Linux 中 tar 命令的用法