初学者:我应该从高级还是低级开始?

3

我相对于编程还比较新,希望能够制作适用于Linux和Windows的本地C++程序。

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


3
如果你想编写高级程序,就要学习高级语言。没有其他更多的要求。 - Daniel
1
如果你的最终目标是学习C ++,你不必先学习C,事实上,在我看来,你应该从C ++开始。 - gliderkite
1
请帮个忙,在学习C之前 不要 先学习C ++。如果您先学习C++,然后再学习C将成为更好的程序员。 - Mooing Duck
C++并不比C更高级,因为它具有C的所有低级特性。 - August Karlstrom
2
我真的不明白为什么你将vim与C联系起来,将IDE与C++联系起来。为什么不能在IDE中使用C或在vim中使用C++呢? - sepp2k
1
为什么不使用实际的高级语言?谁在乎应用程序是否“本地化”? - abarnert
7个回答

10

如果你想学习C++,就要直接学习C++。先学习C语言或汇编语言不仅浪费时间,而且通常会教授相对较差的习惯,这需要你努力去学习和纠正,才能很好地使用C++。

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


5
如果您的最终目标是学习C ++,那么学习C并不是必须的前提条件。虽然您可以学习C,但您并不需要。重要的是做自己感觉最舒适的事情。

4
实际上,SO C++社区的许多成员建议,如果你想学习现代C++(而不是名为“C/C++”的杂交版C++),最好避免使用C语言。 - In silico
1
我对于初学者这个建议没有任何问题,但是我想指出的是,最终你需要学习至少一些C语言才能成为C++专家。 - John Dibling
1
我同意,但我们现在谈论的是一个初学者。 :-) - In silico
1
@JohnDibling:成为C++专家所学的一些知识也适用于C语言,但除非您也想了解C语言,否则您无需关心哪些部分适用于C语言,哪些部分完全不适用,哪些部分几乎适用,但又略有不同。 - Jerry Coffin
@JohnDibling:是的,但是“了解C规范的一些位”甚至不能与“了解C”同义。 - Jerry Coffin
显示剩余2条评论

3
C++不是(真正的)高级编程语言。您仍在手动管理内存,并且每当您犯一个小的编程错误时,就会获得未定义的环境特定行为。除此之外,C++对于新程序员来说是非常不友好的语言,因为它既过于复杂,又(在我看来)设计得非常糟糕。
我建议从Java、Python或C#这样的实际高级语言开始学习,并结合使用一个花哨的IDE。如果您想更专注于低级别方面而不是一般的编程技术和范例,也可以从C开始学习。
如果您想开始编程,您不必学习vim,像gedit或Notepad++这样的简单编辑器也完全可以胜任。专门为您的语言设计的IDE可能是最舒适的选择。
编辑:正如Jerry Coffin正确指出的那样,如果您的目标是编写C++应用程序,这些建议并不真正有用。尽管我仍然建议先从一种更容易的(高级)语言入手,以获得一般的编程技能,然后再开始学习C++。如果C++对于您想要实现的事情并不绝对必要,那么重新考虑是否实际上需要使用该语言也不是一个坏主意。

+1 对于 C++ 说实话 - August Karlstrom
楼主说:“我想为Linux和Windows编写本地的C++程序。”你的建议并没有告诉他如何实现他的目标,只是在说:“不,你真的不需要这样做。我不喜欢这个想法,所以你也不会真正想要它。” - Jerry Coffin
@Kranklin:指出可能有其他方法可行可能算是一个不错的评论,但显然不是一个答案(是的,你的“答案”本质上是一样的——一个评论,而不是一个答案)。 - Jerry Coffin
1
C ++ 可以 是一门高级编程语言。 令人困惑的是它也可以是低级语言。 我建议初学者尽可能学习现代的C ++变体,并尝试从一开始就使用良好的编程实践。 通常情况下,初学现代C ++ 不应使用宏或裸指针。 - bdow
2
你在现代C++中不再需要手动管理内存了。 - fredoverflow
显示剩余3条评论

2
如果你想学习C++,就从C++开始。你不需要先学习C,因为这实际上会有些适得其反,当你转向C++时,你将不得不“去学习”一些东西。
C和C++是不同的语言,具有不同的目标和哲学。一个良好编写的C++程序看起来和行为都与一个良好编写的C程序不太相似。
一旦你熟悉了高级C++特性,那么你可以开始深入了解更低层次的细节。

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

不要重复造轮子。

从尽可能高和抽象的角度开始,只有在没有其他方法可以前进时才回到核心。


1

你的问题似乎更多关于学习编程。语言选择可能次要于学习编程范式/概念。

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

OOP可以在C++中教授,也可以在Java等其他语言中教授,这在那个阶段并不重要。

一旦你的思维方式“定向”了,那么实际编程将更多地涉及使用现有库(API),这实际上需要比语言本身更多的学习。

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


并不是所有的东西都必须面向对象,有时候这只会增加不必要的复杂性。 - weronika

0
JavaScript是我学习的第一门语言,我感到很幸运。通过它,我能够跳过其他语言的许多复杂性和障碍,如静态类型、指针和编译。使用JavaScript,您甚至不需要安装任何东西,只需在这里尝试一下:http://jsfiddle.net/X4PpW/
当我对JavaScript有了牢固的掌握后,在C中使用指针和类的概念就变得容易了。另一个好的起点语言是Python。
此外,您打算制作什么?并非所有桌面应用程序都必须用C编写。实际上,一些新的框架借鉴了Web应用程序的思想,甚至允许将网站中的HTML嵌入到您的应用程序中。
游戏:Unity3d http://unity3d.com/(使用此编写的游戏可以移植到移动设备或Web,但需要插件)
带有UI的通用应用程序:QT http://qt.nokia.com/products/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接