【问题标题】:Beginner: Should I start High Level or Low Level? [closed]初学者:我应该从高级别还是低级别开始? [关闭]
【发布时间】:2012-06-08 18:51:53
【问题描述】:

我对编程比较陌生,希望能够为 Linux 和 Windows 制作原生 C++ 程序。

我只是想知道,作为一个初学者,我应该首先学习低级语言,例如在 vim 中的 C 和汇编,还是应该直接从带有 C++ 的 IDE 开始?

【问题讨论】:

  • 如果你想写高层次的程序,学高层次的……没什么。
  • 如果你的最终目标是学习 C++,你不必先学习 C,事实上,在我看来,你应该从 C++ 开始。
  • 请帮我们一个忙,不要在 C++ 之前学习 C。如果你先学习 C++,然后学习 C,你会成为一个更好的程序员。
  • 我真的不明白为什么要将 vim 连接到 C 并将 IDE 连接到 C++。为什么 IDE 中的 C 或 vim 中的 C++ 不是选项?
  • 为什么不使用真正的高级语言呢?谁在乎应用程序是否“原生”?

标签: c++ c vim ide


【解决方案1】:

如果您想学习 C++,请学习 C++。首先学习 C 或汇编语言不仅是浪费时间,而且通常会教给你相对较差的习惯,在你用好 C++ 之前,你需要努力避免学习。

这并不是说了解 C 或汇编语言就不可能很好地使用 C++ —— 但每种语言都需要截然不同的思维方式,因此会产生额外的工作。

【讨论】:

    【解决方案2】:

    如果你的最终目标是学习 C++,那么先学习 C 并不是先决条件。你可以,但你不必这样做。

    最重要的是,做你觉得最舒服的事情。

    【讨论】:

    • 事实上,SO C++ 社区的许多成员都建议,如果您想学习现代 C++(而不是被称为“C/C++”的 C++ 混蛋版本),那么您应该避免像瘟疫一样避免使用 C。
    • 对于学习这门语言的人的建议我没有意见,但我要指出的是,最终你至少需要学习一些 C 才能成为 C++ 专家。
    • 我同意,但这是我们在这里谈论的初学者。 :-)
    • @JohnDibling:你学习成为 C++ 专家的一些东西也适用于 C —— 但除非你也想了解 C,否则你不需要特别关心哪些部分适用于 C,它根本没有,几乎可以,但有细微的不同。
    • @JerryCoffin:我想起了this。如果不了解 C 规范的某些内容,您将无法真正知道链接帖子中问题的答案。
    【解决方案3】:

    C++ 不是(真的)高级编程语言。每当您犯了一个小的编程错误时,您仍然需要手动管理您的内存并获得未定义的特定于环境的行为。除此之外,C++ 对新程序员来说是一种非常不友好的语言,因为它既过于复杂又(在我看来)设计糟糕。

    我建议从 Java、Python 或 C# 等实际的高级语言开始,并结合花哨的 IDE。如果您想更多地关注低级方面而不是通用编程技术和范例,那么从 C 开始也是一种选择。

    如果你想开始编程,你也不必学习 vim,一个简单的编辑器,如 gedit 或 Notepad++ 也可以很好地工作。不过,专为您的语言设计的 IDE 可能是最舒适的。

    编辑:正如 Jerry Coffin 正确指出的那样,如果您的目标是编写 C++ 应用程序,这个建议并没有真正的帮助。尽管我仍然建议您在开始使用 C++ 之前先使用一种更简单(高级)的语言来获得一般的编程技能。如果 C++ 对于您想要实现的目标不是绝对必要的,那么重新考虑您是否真的要使用该语言也不是一个坏主意。

    【讨论】:

    • +1 说出 C++ 的真相
    • -1 OP 说:“我 [...] 想为 Linux 和 Windows 制作原生 C++ 程序。”你的建议并不是告诉他如何达到他的目标——更多的只是说:“不,你真的没有。我不喜欢这个主意,所以你也不是真的想要它。”
    • +1 OP 说他是新手,想学习。我不认为直接进入 C++ 是一个好主意。之后他可以学习 C++,也许他误以为他必须使用 C++ 来编写桌面应用程序。
    • C++ 可以是高级编程语言。人们感到困惑的是,它是一种低级语言。我建议初学者尽可能学习现代的 C++ 变体,并从一开始就尝试使用良好的编程实践。根据经验,开始现代 C++ 不应使用宏或原始指针。
    • 仍然在现代 C++ 中手动管理你的内存。
    【解决方案4】:

    如果您想学习 C++,请从 C++ 开始。你不需要先学习C;这实际上会适得其反,因为当您迁移到 C++ 时,您必须un学习一些东西。

    C 和 C++ 是不同的语言,具有不同的目标和理念。一个编写良好的 C++ 程序在外观或行为上都不会像一个编写良好的 C 程序。

    一旦您熟悉了高级 C++ 功能,然后您就可以开始深入研究较低级别的细节。

    【讨论】:

      【解决方案5】:

      “如果我看得更远,那就是站在巨人的肩膀上。” -艾萨克·牛顿爵士

      不要重新发明轮子。

      从核心开始,尽可能从核心抽象出来,只有在没有其他方法可以推进时重新审视核心。

      【讨论】:

        【解决方案6】:

        在我看来,您的问题更多的是关于学习编程。 语言选择可能次要于学习编程范式/概念。

        因此,如果您的重点是编程,那么您可以先学习面向对象编程 (OOP) 的概念,这样您就不必像人们通常采用过程方法那样“采用”它们。然后,如果需要,您可以深入研究过程方式和一些 C 习惯用法/技巧和低级方法。

        OOP 可以用 C++ 教授,就像用 Java 等一样。在那个阶段并不重要。

        一旦你的心态是“面向”的,那么实际的编程将更多地使用现有的库 (API),这实际上需要比语言本身更多的学习。

        所以我的建议是先学习 OOP 概念,然后再回顾你未来的语言偏好。玩得开心!

        【讨论】:

        • 并非一切都必须面向对象,有时它只是增加了不必要的复杂性。
        【解决方案7】:

        Javascript 是我学习的第一门语言,我感到很幸运。有了它,我能够跳过其他语言的许多复杂性和障碍,例如静态类型、指针和编译。使用 javascript,您甚至无需安装任何东西,只需前往此处即可开始尝试:http://jsfiddle.net/X4PpW/

        在我掌握了 Javascript 之后,理解在 C 中使用指针和类的概念对我来说很容易。另一种好的语言是 Python。

        另外,你打算做什么?并非所有桌面应用程序都必须用 C 编写。事实上,一些新框架借鉴了 Web 应用程序的想法,甚至允许将来自网站的 HTML 嵌入到您的应用程序中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-17
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-31
          • 2017-03-03
          相关资源
          最近更新 更多