C ++是否适合作为第一语言?[关闭]


26

一家当地大学正在向没有编程经验的一年级大学生(16岁)教授C ++。

作为第一门编程语言,C ++适合吗?


56
任何语言都可以是第一语言。没关系。
亚当李尔


19
@Anna Lear:当然,任何一种语言都可以是第一语言,但这不能使C ++成为良好的第一语言。如果您的答案是实际答案,那么我将其视为无济于事。
艾德·詹姆斯

6
@Doug:我正在以C ++为生...您的意思是?
Matthieu M.

9
@Dough-当今有70%的计算项目涉及为嵌入式系统和微设备编写软件。猜猜这些项目使用什么语言?猜猜谁最适合入门级职位?当然不是Java或.NET一招小马。听起来很苛刻,但学校仅对30%的编程工作市场进行培训,从而对整个CS毕业生都造成了极大的伤害。我们在应用领域的程序员过多(占30%),而在系统领域的软件短缺(占70%)。这些数字无处不在。未来的职业机会?是的,对。
luis.espinal,2011年

Answers:


61

强调没有

对于学生来说,对于任何目标,另一种语言或一系列语言都会变得越来越快。例子。

“学生需要理解底层概念。”

“低级”编码不包括从中获取对象new,将它们反馈回delete,以及偶尔有一个指针指向不应指向的位置。函数,类和模板不是低级的。RAII,12分的方式使用conststd::ostream::operator<<protectednew是不是低层次的概念。这些东西具有低级的含义,您将跳过它们几个月,或者直到以后的课程再学习C ++语义学。

我建议汇编器具有良好的环境和教学材料,例如MIPS或MMIX。如果您很着急,请绕道教C至少看看汇编器输出。这将使您对C ++的所有底层理解,然后再更快一些。

“学生需要了解面向对象的知识。”

C ++内置的面向对象的方法过于复杂,无法教授OO概念或几乎所有其他高级概念。有关潜在原因的详尽清单,请参见C ++常见问题解答。您要么必须花所有的时间,而对于新程序员来说这将需要非常非常长的时间。否则,您将不得不跳过很多内容,从而使新的程序员陷入困境-实际上,并不是真正了解C ++!

如果您必须教C ++,我建议您首先使用对象(Python,Ruby,Squeak,Common Lisp,Racket)来学习一种更简单的高级语言。除此之外,还可以通过访问功能语言来学习多态作为与OO分离的概念。

“学生需要了解模板和模板元编程。”

没有人真正问过这个问题,但我希望他们会这样。C ++有不错的模板,STL很酷,但是它们不应该成为优先教C ++的优先级。无论如何,先教OCaml或Haskell类型系统,然后对这些概念进行改造可能会更快。

“学生需要学习解决问题的能力。”

是的,您可以使用任何一种语言来获得此信息,如果使用除C ++之外的几乎任何语言都可以得到更多信息,因为可以减少行李负担。同样,请参阅C ++常见问题解答,以获取学生将要学习的所有事情的列表,而不是解决问题的技能。

“以上所有内容,我们只需要使用一种语言即可。” “雇主想要”。“我们需要一种C风格的语言。” 要么...

教一种以上的语言。

通过只教一种语言来节省时间或精力的想法简直是荒谬的。它基于这样的思想,即学习任何一种给定的语言都需要X个月的时间(HINT!HINT!),其中X是一个数字或每种语言一个数字。这几乎与您可以通过跳过所有“需求”和“测试”垃圾来节省时间和金钱的想法完全相同。

至于多种语法,如果让学生疯狂地偏向其他语言,如果他们教他们期望使用每种语言的C语法,则会危及学生的生命。

几乎所有路径都比从C ++开始更快,更好。学习一种简单的高级语言,然后学习C ++会更快。学习汇编程序,然后学习C ++会更快。除了C ++外,其他任何东西都可以使学生更快到达那里,并且他们将知道更多的启动方法。只是不要先教C ++。


4
好答案!确实,许多C ++功能根本与低级编程无关。
Marco Mustapic 2011年

7
+1,很好的答案。确实,有时C ++的异想天开被错误地等同于“低级”。您已链接到C ++常见问题解答,但我还建议人们看看C ++ FQA(或“常见问题解答”:P)
Andres F.

2
哇。这让我想起了Java IAQ ...
Jesse Millikan

完全同意。对于初学者来说,即使Malbolge也会比C ++更好。
正确的

2
我唯一的保留-您可以做很多事情而不必深入了解大多数仅与开发图书馆的人有关的细节。只要您清楚地表明您只在做基本的C ++,但是话又说回来,您教过什么了吗?
Steve314

54

不,即使对于有经验的C ++开发人员来说,C ++也是一种困难的语言。即使是最简单的算法,您也必须解释许多语言的细微差别。考虑一个Hello World示例:

#include <iostream>

int main()
{
  std::cout << "Hello World!" << std::endl;
}

那是什么#include命令?什么是std::cout。为什么::呢?什么<<啊 哦,这是个超负荷的操作员!什么是重载运算符?如此ints,它确实会发生位移,但无论如何std::cout,它将内容输出到控制台。哦,std::cout是一个流,并且流的<<>>运算符已重载。

让我们看一下Python中的相同示例:

print("Hello World!")

就是这样,让我们​​开始编写一些算法。


15
Python将适合七年级学生。一个大学生可以掌握更多。
Gulshan

13
可以,但是我们正在谈论一种第一语言。与其他语言相比,C ++以难以学习和掌握而著称。为什么用它来教编程?当学生了解一些编程基础知识之后,便可以稍后学习C ++。
Marco Mustapic 2011年

8
您甚至没有提到<<取决于参数的查找方法:)
MetricSystem

6
您无需完全了解任何一种语言的入门知识。cout <<任何东西;“行之有效”,直到稍后涉及操作员重载等问题之前,您无需深入了解细节。
科伦

6
我会在一周中的任何一天使用Python代替C ++作为入门语言。
jprete 2011年

21

它可能不是一种好的第一语言:复杂的语法,很多规则,旧语言,易于出错的内存管理。最好教给学生更多类似于OO的东西,例如Smalltalk,或者更好地使用Python编程,或者像Haskell这样的功能。

在学习了更好的语言之后,他们可以在以后的生活中学习C ++(如果他们不能帮助的话)。


5
Haskell作为第一语言将是一个有趣的实验。
拉里·科尔曼

剑桥大学的CS课程@Larry教授SML作为第一语言。
彼得·泰勒

1
函数式编程使您不知所措-我知道麻省理工学院很早就开始使用Scheme,但是我很高兴直到两年后在学校采用过程/ OO混合风格才开始进行函数式编程。
justkt 2011年

11
@justkt:所有语言都会扭曲您的大脑。只是您要如何扭曲它的问题。
David Thornley,

+1,但我不会将C ++以外的语言归类为必然“更好”。
greyfade

18

简短的回答:是的!

我会说任何一种语言都是合适的开始,但特别是C ++(或同等语言)。如今,C#和Java是使用中的主要语言,通过它们您可以快速学习以依赖API和IDE进行编程,但是使用C ++可以从头开始学习编程,包括性能优化等。

在您盲目地依赖于.Sort()内置的语言之前,学习编程,循环和排序的基础知识从来都不是一个坏主意。


11
循环和排序,是的。您可以使用任何语言来做到这一点。但是,为什么可以避免使用指针和奇怪的语法呢?当您有更多编程经验时,可以稍后学习所有这些内容。
Marco Mustapic 2011年

4
@Marco:Stroustrup的入门教科书“ Programming:使用C ++的原理和实践”在这本书的中间介绍了一些指针。您可以在C ++中做很多事情而无需引入指针。
David Thornley,

4
“这是从来没有一个坏主意,学习的基础知识......之前......”你有任何的研究来支持这个要求?我知道许多聪明人都把“自下而上”是唯一的真正教学方法称为常识,但这是一个非常有争议的观点,也是我所知道的唯一(当然非常有限的)教学研究,它指向相反的结论。
康拉德·鲁道夫

1
@David:问题是,在没有指针的情况下执行“ C ++中的许多工作”甚至更糟。没有指针,所有对象都将在堆栈上声明,这是有史以来最糟糕的编程思想之一。值类型和继承/多态性不会混合在一起,而试图将它们混合在一起会导致错误的整个类别,而这些错误在设计更好的语言中是不存在的。
梅森惠勒

9
哦,天哪!为什么要在不必要的C ++特质上烧毁有限的大脑周期?当目标是学习编程中的基本概念时,为什么要专注于不相关的低级内容(例如内存管理)?为什么跳入深渊?!
Maglob

14

实际上,出于非常实际的原因,我认为作为第一语言可能是一个不错的选择:学习C ++之后,您遇到的任何其他语言似乎都变得轻而易举。


10
归功于Dijkstra,几乎不可能向以前接触过C ++的学生教授良好的编程。作为潜在的程序员,他们在精神上被肢解,无法重生。;)
Mason Wheeler

3
他们将不得不从C ++中学习很多不良习惯。再举一个例子,了解汇编程序会使您成为更好的Java程序员吗?我会说不是。
Andres F.

16
@AndrésF .:不同意这一点。无论您用什么编写程序,了解汇编程序都会使您成为一个更好的程序员,因为这样您就可以了解实际情况。
梅森惠勒

2
@Andres:我已经看到太多Java / C#程序员使用其他语言并将所有内容塞入对象中……他们缺乏经验。
Matthieu M.

3
@AndresF。-在使用Java的12年中,我遇到了很多Java程序员,他们真正地因为没有接触资源分配,RAII,不知道如何编写对gc友好的应用程序,了解汇编语言和编译语言,无需自动垃圾支持,并支持OO以外的其他范例(C,C ++,Ada或Algol系列中的几乎所有编译语言),可以教您如何用Java 编写高效的大型系统, C#,Python,请命名。另外,C ++中的对象模型根本不类似于Java。
luis.espinal 2011年

10

15-16岁时,我自学了C ++。

最好将魔力留给他人,自己学习事物的内部运作。


坦率地说,如果您不能弄清入门级的C ++语法和语义,您的计算机就不是那么好。没那么难。没有充分的理由避免使用“带有类的C”。

如果您希望学生开始着手进行模板元编程,推导多态调用并弄清多个继承层次结构,那么对于使用任何一种语言的入门级课程而言,这都是荒谬的。

想要掩盖学生编程的复杂性的趋势非常差。最终效果不佳(请参阅Spolsky的Java Schools论文)。如果他们不敢直截了当,那么这些人最终将成为DailyWTF成员。抽象泄漏,当(如果不是)抽象泄漏时,比必须处理它更糟。我担任入门级C ++学生的助教。要么必须将事物一直隐藏起来,要么必须将它们带入检查的视野。魔术是学习者的敌人。

如果我不得不推荐一种编译为机器代码的起始语言,那么Pascal变体可能是最好的方法。我记得,它比C族采用更常规,更结构化的方法。


1
@Ed:不是。我已经掌握了QBASIC的If和Goto,仅此而已。指针,数组,函数,类等都在我的C ++未来中。递归也是不可理解的。
保罗·内森

5
等等,没有人希望有人在不了解 C ++的情况下使用C ++进行项目!确实,这将导致值得TheDailyWTF的代码。但出乎您的要求,这是平凡的学习C ++(这不是“带类的C”,要么)。C ++具有巨大的,令人费解的,有时是无意义的语法和语法,以及无穷的关键字和规则。一开始这是一种可怕的语言。作为一种教学语言,它很糟糕,因为它会使学生认为C ++的缺陷在编程世界中是自然而不可避免的。
Andres F.

1
Andr:您坚持要使用错误的二分法:“〜C ++或All C ++”。那是谬论。
保罗·内森

1
@Paul:足够公平。但是请考虑一下:即使简化的C ++的语法和语法也很复杂,因为它必须支持完整语言的所有功能。因此,即使您以较简单的形式教它,您也已经在使用丑陋的语言时妥协了。我假设您不只是用某种语法糖(也称为“带有类的C”)在C中进行编码,因为在这种情况下,最好由纯C服务!
Andres F.

2
@安德:不是。与C89相比,C ++可以大大简化语法。此外,对于入门级而言,对于我能想到的所有情况而言,事情都非常简单...
Paul Nathan

8

我会说“不”-我有学习编程的渴望和渴望,并且马上就开始了我的大学入门课程,当时C ++马上就到了。加上一位正在教C ++的老师,好像它是另一门语言(对他们来说有意义的概念,不一定是该语言或现实世界应用程序的概念),并且每周都会对我们投掷项目,我因此而崩溃并被烧死一半的班级。到我什至可以消化,试验和应用所学内容的时候,我就为项目功课作了挣扎,而功课却是测试的两倍。我认为这是200级课程而不是100级课程。

我真的尽力了。我没有要求同情,我知道这将是一个挑战,但老师甚至都不会帮助我。就像我一直在做的那样,只是叫我去读教科书。

我会(有些人会不同意)认为Ruby或Python是一种更好的语言,可以将某人打入编程世界。干净,简洁,易读,更清晰的语法。


8
如果讲得不好,任何语言都是不好的第一语言。
David Thornley,

3
@David Thornley:但是,即使正确地讲授了一些语言,作为第一语言也是一个糟糕的选择。例如,Cobol。
Andres F.

我确实同意,我觉得有了一个更好的老师,一个愿意与他人互动,而不仅仅是以闪电般的速度完成课程资料的老师,结果可能会有所不同。它对我来说太快了。
凯文

@AndrésF .:我不同意这一点。但是,凯文(Kevin)的说法是关于一位糟糕的老师,而一位糟糕的老师却可能将Python或Scheme当作第一语言(我两个人提名了第一语言)。
David Thornley,

2
@Chris:我已经在Cobol中编程了,很可惜:)
Andres F.

8

没有。

作为一种教学语言,C ++仅比C稍好,后者是周围最差的教学语言之一。它预先引入了很多复杂性,该语言的某些部分是非常不直观的,并且在大多数时候,您对C ++的了解要比对编程的了解更多。

这并不是说C ++(或C)是不好的语言,或者不值得学习。只是有更好的教学语言,例如Python。


1
C是一种难于教学的语言,但无疑是最糟糕的语言之一。COBOL和Java认为蛋糕是最差的,比C差得多。关于C的好处是,您必须预先处理内部的金属(而不必深入研究汇编程序)。人们已经成功地将C作为主要语言来进行教学。当然,还有其他更优雅的选择,例如Python或Ruby(或任何多范式的语言,即使是最简单的任务也不需要将OO向前推。)C并不是最糟糕的教学之一选择,而不是远射。
luis.espinal 2011年

1
略胜一筹?你如何看待?C ++接受了所有不利于C的东西,并以此为基础
梅森惠勒2012年

1
@MasonWheeler:主要是因为C ++提供了一种诚实的string数据类型,与需要在C中进行字符串处理的方式相比,它重载了,和操作符+,这是学生或多或少希望学生做的事情。因此,“略微” 。我也不推荐任何一种教学语言。===
约翰·波德

7

专上教育有两种基本类型:大学和商学院。区别在于您毕业后要准备做什么。在汽车领域,无论您是机械师还是机械工程师。

话虽这么说,如果您想成为一名工程师,C ++是一门很棒的第一语言,而如果您想成为一名相当于机械师的编程,那么它就是一本烂书。

C ++入门类将花费大量时间讨论数据类型,定义,声明,指针,内存分配等。如果您打算花费几个学期来学习如何做任何有用的事情,那么这是一个很好的基础,但是想知道,一旦到达那里,您就具有处理任何程度的复杂性的基础。

另一方面,如果您希望能够更快地执行有用的操作,但是不介意域和复杂性是否受到限制,那么将所有时间花在那些较低级别的概念上将是浪费。有很多程序员可以编写出色的html表单验证器,但不知道如何设计设备驱动程序。


5

当然。我的第一语言是C,但这实际上只是为了简化我们的C ++课程。我上大学后,Java变得更容易处理。C ++的学习曲线可能会稍微陡一些,但是如果教得正确,它应该没问题。


4

不,C ++不适合作为第一语言。如此处所示,许多专业程序员都同意这种观点,但这也是专业教师的观点。

卡内基梅隆大学(Carnegie Mellon University)院长的一份报告对使用C ++进行新生编程入门做了以下说明:

诸如C或C ++之类的标准语言不适合本课程,因为它们的复杂性和不足会阻碍非正式的和机械化的推理技术。

CMU提供两种入门课程,一门必修课和一门实用课。选择SML进行功能编程。我不知道为命令性课程选择了什么,但是报告提到使用C的子集。


2

当然。还有其他语言可能会使一年级学生更容易掌握。但是,教师可以通过某些方式慢慢地用C ++引入概念。


2

绝对可以C ++是第一语言。但这是关于它的教学水平。

大家都说,第一语言应该很容易掌握。但我的意思是,大多数人都开始在本科层次上编程。因此,您可以教他们可以掌握的知识。使用C ++,您可以从较低级别的编程进入较高级别的编程。


但是,为什么不从更高级别的编程开始呢?这是我们解决大多数问题的级别(当然,某些特定领域的问题除外)。然后,如果他们需要得到更接近金属,他们可以学习C ++,汇编等
安德烈斯F.

我同意,这是关于它的教学水平!
加里·威洛比

2

不,绝对不会。

如果我愿意的话,我几乎不允许在学术环境中使用它。不是因为与已经提出的原因相反,而是因为太多的人认为C ++(或其变体)几乎可以解决所有问题,因为您几乎可以在任何情况下使用它。它是编程的螺丝起子。

有些人用它来拧紧螺丝,这是完成工作的理想工具。其他人像撬棒一样使用它,虽然通常很有效,但并不十分理想,因为螺丝刀(不管您父亲会告诉您什么)都不是撬棒,并且由于滥用柄而造成的灾难性失败是因为柄的组成不是故意制造的对于撬杆会遇到的那种力量。还有其他人可能会尝试将其用作打孔器或凿子,并且它们几乎总是会遇到问题,因为螺丝刀的手柄并不是为打孔器或凿子设计用来承受这种冲击而制造的。

我认为,程序员的工作通常是将实际问题转化为自动化,从而在一定程度上提高效率(减少对任务的资源投入),速度(减少执行任务的时间),可预测性(提高可重复性)任务)或组织(提高对任务之间关系的认识)。

虽然可以理解,每个编程人员都应该对计算机的低级操作(尤其是设备IO和内存分配)具有一些常识,但确实很少真正需要在很大程度上利用该知识,更不用说将其用于绝大多数任务。试图在不了解问题的更广泛背景的情况下这样做会给工作带来不必要的风险。

荒谬的是,第一种编程语言应该是C / C ++或近似变体,因为C及其派生词所解决的问题类别肯定不适用于当前和将来任意比例的问题(除非必须挽救)一个以前用螺丝刀编写的程序),而实际上更多的只是一小部分即将到来的问题。尽管小型移动互联设备越来越流行,但大多数程序员永远不会接近开发核心OS功能或直接设备接口。大多数人会像我们一样工作和生活。修复并逐步淘汰已经使用了两代以上的代码,或者在已经表现出年龄的技术上实施,或者在killer(x + 1)应用程序的技术边缘进行工作。

对于第一种语言,我将看一下Lego NXT,它是LabView的轻量级但功能丰富的变体。尽管Lego NXT在商业企业中并未得到广泛使用,但它将展现以“传感器丰富”的方式进行编程的基本性质。我可能将其与某种平台无关的脚本语言(例如Javascript或TCL / TK)配对。就执行非常基本但有效的任务所必须发现的内容而言,这两种方法的影响相对较小,而在反馈回路和灵活性方面具有很高的回报率,从而可以引入和解决不同程度的问题复杂性。另外,它还为学生提供了一个很好的机会,使他们不断探索超越罐头环境所提供的潜力:有机会尝试在黑暗,潮湿,

在他们学会了自动驱动四缸发动机之后,如果他们真的很感兴趣和有动力,就将他们提升到大型v8手动hotrod。如果乔尔(Joel)在脚下的任何石头下都找不到摇滚明星程序员,那么他可能不得不继续寻找其他地方,或者重新考虑为什么他的工具箱中可能需要很多螺丝刀。


1

初学者容易在C ++中犯错误的几点是:

在您要测试的地方进行分配= vs ==

失踪 ;

大括号的可读性与Pascal Begin-End的对比

然后,所有包含文件,宏,内存管理等都会引起混淆。

因此,我想说C ++并不是最好的语言-但是,毫无疑问,当您了解它之后,它可能会非常有用。

我会-正如其他人也建议的那样-使用C#,Java甚至VB-以及具有语法高亮,调试器等的良好IDE,以帮助您更轻松地从错误中恢复。


1

当我上大学时,C ++是整个大学一年级所教授的基础语言。从理论上讲,它包含一些复杂的编程概念,因此,如果您掌握了它,就可以使用其他语言。它为我打下了良好的基础。

话虽如此,在我大四的时候,我曾担任一个委员会的委员,以确定是否将核心语言切换到Java。在与几位杰出的雇主和该系的一些校友交谈之后,人们决定改用Java是学生的最大利益。我们与雇主交谈的人希望人们能使用他们所用的语言来雇用他们。我相信,十年后的今天,他们仍将Java作为其核心语言。

与此类似,我们一直在寻求聘用几位具有非常出色的C ++技能的大学毕业生。我们找不到任何东西。


1

我会说是的。但是任何一种语言都可以真正成为第一语言。我认为C ++很好,因为尽管它很复杂且有时很困难,但它向您展示了您真正可以做的事情(较少的限制)。而且,它具有一些面向对象的设计,可以帮助您准备使用其他语言。

C ++是我的第一语言,我很高兴它是。这让我很早就想到了OOP的思维方式,对此我感到非常感谢。但是最后,它实际上取决于您想要做什么。语言无关紧要,因为如果您能熟练使用一种语言,那么选择另一种语言就不会有任何问题。你想让我做什么?做游戏?手机程式?每个人都会拥有更适合它的工具和语言。


1

C ++是一种专家语言,而不是初学者……首先要说C,而不是Java,C#或Python……为什么?因为C教您注意内存和一些棘手的概念,例如所有语言都“隐藏”但无处不在的指针。我见过很多年轻的开发人员,他们甚至不理解为什么有时应该释放内存,并认为垃圾收集器并不是清除所有编码难题的小矮人:即使它们具有XXXXGb,它们也会实例化,实例化并使其爆炸。 RAM ...但是他们不明白为什么垃圾回收器不能简单地神奇地清理所有东西!而且我已经看到这种开发人员使用C ++(甚至在Corba中甚至更疯狂)进行编码,这真是个大招!!!!!!因此,我建议您学习C语言中的编码,然后使用Python / Java / C#了解对象概念以及所有相关知识。然后,当您了解了所有这些内容之后,您便会使用C ++,您会感受到C ++的强大功能,但同时也发现了C ++的所有危险以及为什么任何人都不应使用它;)


1

没有。C ++有很多东西,这使得新手很难理解。不要陷入“所有编程语言都是平等的”谬论。

从Basic或Pascal(忽略“它们已被弃用”的东西)开始,然后从C / C ++ / Java / C#/ Perl开始。或者,如果有机会,请先使用Logo&Karel,然后再使用Basic或Pascal。

PD一些大学和同事开设了编程语言用法和比较课程,而且碰巧我曾教过该课程;-)


0

您可以选择任何语言来学习编程的基础。我用C / C ++学习了东西。但是7年后,我的学校改变了工具/语言,他们更喜欢Java / C#。语言仅仅是工具。您需要变得更好的是基础。例如,在MIT,人们使用python学习算法基础知识。例如Java可能对Web编程很有用。但是C / C ++非常适合服务和高性能应用程序。因此,这取决于您的情况。


0

如果“适当”代表“可能”,则为是。如果说“好”,绝对不会。

可能甚至喜欢甚至喜欢C ++,但为此,您最好学习几种语言,并使用烂尾烂烂的代码库工作数十年,并获得“制作可实际使用的非凡软件”的经验-然后C ++将具有魅力。

处女时,不要一开始就摆弄一些小而简单的问题(但据说很有趣)。

我将从python开始,然后是SICP(方案)或类似的东西。可能颠倒或交错。有了这些,您就可以解决问题。与其在系统中作斗争,不如走进深渊,学习各种不合逻辑的怪癖及其历史原因。

稍后,当您已经可以从纸袋中编程出路时,切换到裸机:学习组装方式和几种架构,以及Knuth's Mix。我并不是要记住操作码或做很多实际的事情,只是为了了解内存,寄存器,ALU,缓存,中断以及达到读取级别。

这样,您便可以使用其他语言,包括C ++。在两者之间添加一些“语言的历史和演变”也许是个好主意。


0

我从中学开始使用C ++。我拿起了这本书的副本:Deitel和Deitel撰写的C ++ How to Program。这本书相当不错。

坦率地说,这里没有对与错的答案,我个人发现C ++是可以理解的。我一直到OOP都学到了这一点(我被“ this”绊倒了,但现在我不明白我怎么也无法理解)。试试吧,不要灰心。如果遇到困难,请检查其他语言,并继续学习新语言。这个想法是,当您以2-3种不同的形式看到相同的概念时,您会更好地理解它们。就像我说的那样,“ this”指针的概念使我感到困惑,但是当我在Python中看到相同的东西(取而代之的是self)时,这对我来说很有意义,因为我已经在C ++中理解了它。如果您能像许多大学一样学习Java,请一定要学习。一定要学习python或ruby,因为它是您的语言,如果您可以探索更多特定市场/新事物,例如Clojure(以及所有其他lisps),Haskell,Scala ...


-1

不,我将从Java或C#开始。如果您想学习C ++,则在学习了基础知识(例如什么是类,如何执行循环和派生(if,then语句)等)之后,可能会更容易。学习如何看待C ++更为重要。问题或数学方程式进行编程,然后确定是否释放了所有内存或其他内容。


2
为什么在Python更简单的情况下使用Java或C#?
David Thornley,

-3

这个问题背后的假设似乎是“ C ++看起来是如此复杂,一个16岁的孩子能够将其作为第一语言(计算机编程)吗?”

到我们4岁或5岁时,我们便会掌握母语中的大多数结构,并通过倾听他人的说话而充分接触它。造好句子要花一辈子,毫无疑问。

与大多数人类语言相比,C ++肯定不会那么复杂/复杂。16岁的孩子应该一定能够捡起它。他们会用它编写出色的代码吗?等着看。


4
人类语言可以承受复杂的语法,因为如果您掌握语法或拼写错误,人们仍然可以理解您。计算机语言并非如此。
dan04 '02

-3

初学者需要首先欣赏“编程”。根据我培训初学者的经验,他们首先赞赏他们最了解的内容。像Python与C#一样,他们喜欢Python,因为它非常高级,并且不像C#那样使用符号,这意味着它非常接近人类语言,也非常接近英语。因此,我建议您学习从高级到低级的编程。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.