将C#作为第一语言学习是错误的吗?[关闭]


26

我知道这里也有类似的问题,我已经阅读过,但是最近我读了Joel Spolsky的这篇文章:

如何教一个没有编程经验的聪明人,如何编程?

这让我开始思考自己的学习方式,从长远来看是否真的有害。

我已经涉猎各种语言,但是C#是我的第一个认真的语言,我读过“ Head First C#”并创建了一些项目。但是,在阅读了上面的文章之后,我发现我可能全都错了,这让我有些沮丧,很显然,我尊重乔尔的观点,这让我有些不满。

我已经开始按照阅读清单中的建议阅读“代码”,尽管很难过,但我发现它很难。我觉得它已经摆脱了我在Visual Studio中“愚蠢的骇客”的光芒。

所以现在我不确定应该走什么路?我应该退后一步,按照乔尔的建议开始阅读吗?

我想我的主要目标只是像其他所有人一样成为一名优秀的程序员,但是当我尊重的人认为这是有害的时,我不希望通过学习.NET语言而陷入不良实践。

有什么想法吗?


4
可以通过艰苦的方式学习CS,但前提是您要有一个好的老师。
工作

5
C#不是我的第一语言VB.net,我可以告诉您,这不是您如何开始的重要。我认为C#将是一门伟大的入门语言,只是要记住总是问自己为什么事情按原样进行。
丹尼尔·利特尔

23
不会。任何语言作为第一语言都有助于学习计算科学理论。当然,为了成就自己的职业,有些语言要比其他语言要好,但是出于学习目的,任何事物都是好的。我认识的一些最好的程序员都是从C64,Apple II或TI-99 / 4A上的BASIC开始的。它并没有使他们的大脑腐烂,而是敦促他们继续学习下一种语言,然后再学习下一种语言。
Jesse C. Slicer

5
而且,这取决于您打算如何使用该知识。C#每天都在我工作的地方解决业务问题。我已经20多年没有看C语言了,如果需要,我会感到恶心。
Jesse C. Slicer

19
学习东西永远都不 是错误。总比不学习好得多。
SK-logic

Answers:


80

我用过各种语言,但是C#是我的第一个认真的人,我读过“ Head First C#”并创建了一些项目。但是,在阅读了上面的文章之后,我发现我可能全都错了,这让我有些沮丧,很显然,我尊重乔尔的观点,这让我有些不满。

我也尊重Joel的观点,但仅此而已:观点。使用C#作为起始语言绝对没有错。

最大的意见,我可以给你,或任何人做任何编程(即使他们在香草!C已经开始)是不停滞,不为宗教。我不在乎您使用的是哪种编程语言,或者该语言是多么纯正或正义?在当今时代,您不能只坐在编程世界中。

例如,我十几岁时就开始使用PHP3进行编程。我用它构建了一些小型Web应用程序和一些网站。我以为自己是一个天才的程序员,并且我可以使用PHP3 做任何事情,而对那些完全了解ASP或BASIC的人不屑一顾。男孩,我错了。

直到我开始拓展视野并研究其他编程语言和概念之前,我才真正开始成为开发人员。在高中时,我学习了一些RealBASIC,然后学习了Visual Basic。商学院毕业后,当我成为专业开发人员时,我开始认真学习C#和Javascript。

现在,在这里不要误会我-我不是在提倡您尝试成为万事通。从本质上讲,无论是在贸易方面,我还是一名PHP程序员。PHP是我的生计,我从里到外都知道。但是,我的PHP技能并没有变成他们只是在做PHP。这是一些非常重要的概念,尽管我专业地从事PHP工作,但我并没有从中掌握这些概念。

  • Javascript:闭包
  • jQuery(是的,单独使用):DOM和Ajax
  • Visual Basic:面向对象的编程
  • C#:泛型和闭包
  • Ruby(在Rails上):MVC设计的力量

我可以继续下去,这个网站上的许多其他日子也可以继续。即使我是一名PHP程序员,我仍然能够将所有其他精彩的概念带回到我每天所做的工作中。

我有什么意思 学习C#。成为C#的大师 -您将拥有长期成功的职业生涯,并且可能会完成一些令人惊奇的事情。但是,不要为自己打洞。旅途,品尝其他语言,环境和概念。


+1:@toleero-C#或Java可以很好地开始学习。乔尔(Joel)和保罗·格雷厄姆(Paul Graham)超越平均水平试图克服开发人员对所选语言停滞不前的观点,指出这太普遍了。
贾斯汀·

顺便说一句,Objective-C也教MVC,但它的惯例不那么传统。
Moshe

4
+1。我认为,如果不学习和使用其他语言,就无法真正成为出色的开发人员和主要语言的掌握者。这是扩展您的知识并真正欣赏主要语言的强项的最好方法。
Niklas H

3
+1。关键是他选择了加粗的字眼。学习Java,C#甚至C之类的东西,花10年的时间以自己的方式编写代码太容易了。推动自己,每年学习一种新语言。对您所做的事情提出疑问,尝试寻找更好的方法。最重要的是,继续参与程序员和StackOverflow。
Andrew T Finnell

您可以在C#中完成所有这些示例。Dom / ajax:C#xml和ajax库。面向对象?校验。MVC?ASP.NET MVC框架。
卡拉

21

当我尊重的人认为这是有害的时。

这使我想起一个涉及理查德·费曼的故事。加州理工学院的一名学生问了著名的宇宙学家迈克尔·特纳,他偏爱某种粒子作为构成暗物质的候选者的“偏见”是什么,费曼大声说道:“为什么你想知道他的偏见?形成自己的偏见! ...不要关注权威,请自己考虑。”

程序员来自各行各业。如今,许多高中和大学都在教授Java,但是在Joel Spolsky上学时甚至还没有发明过Java 。成为一名优秀的程序员,没有“一条真实的道路”。当然有一些经典的东西,例如SICP,大多数程序员在某个时候会偶然发现,但是没有严格的标准。主要的事情是从某个地方开始,并专注于构建概念。一个伟大的程序员曾经说过:

糟糕的程序员专注于代码,优秀的程序员专注于算法。

我认为C#是一门很好的语言,但是我警告您要警惕Visual Studio。它是一个很棒的IDE,但是如果将a拖动DropDownList并绑定GridView到a ObjectDataSource并使用Button控件进行DropDownList基础搜索,则大部分工作都是由IDE完成的,而您并不是真正的编程人员。充分利用IDE工具,但始终尝试构建概念和发展知识。


很棒的答案。
Yasir

3
首先,您说“优秀的程序员专注于算法”,然后说“工作是由IDE完成的,而您并不是真正的编程者”。哪有 我可以编写一个程序,正确地执行工作流程,而不在乎诸如GridView和DropDown之类的“实现细节”(假设我足够了解选择正确的细节,以及如何正确地实现它们)。对于其余的问题,+ 1,但是使用IDE并不妨碍您成为一名优秀的程序员。
WernerCD 2011年

@WernerCD-当我说“工作由IDE完成”时,我指的是我给出的特定示例。如果您带一个从未做过任何编码的孩子,并且让他按照IDE中的逐步说明进行操作,那么他将创建一个工作页面,但他没有编程。我认为IDE对于编程工作非常有用,但是作为一个完整的新手,您最好学习什么是递归而不是拖拽控件。
BlackJack

2
@Graham-对不起,但我不同意。他不是在学习IT或软件开发,而是在学习编程。我认为,IDE工具最好是在您实际上是一名合格的程序员之后再使用。
BlackJack

16
关键在于,优秀的开发人员不相信魔术。IDE(或任何其他工具)完成的工作是一种便利,快捷方式,但不能代替理解
Bevan

7

我只是一个初中生,但出于谦卑和对那些经验丰富的人的尊重,我不得不承认我也没有这种态度。

一个程序员评论下面乔尔的回答是:“ 谁的人不得不在桌子上的拍起了头‘谁过来极力推荐他们的C#技能的程序员’,但不能做简单的事情,就像实现一个非常有据可查的基类,发现C和C ++程序中的内存泄漏 ...

但是,为什么对于从未声称了解C ++的人来说,在C ++应用程序中发现内存泄漏必须很简单?:)我不明白。这就像批评心理学家缺乏牙医技能。我当然不是一个好的程序员,但是我觉得这不是因为我不了解C ++,而是因为我对使用的框架和语言不够了解。

“不能做简单的事情,例如实现一个很好记录的基类(...),或者仅仅自己解决一个问题或以中等速度学习新想法”

好的,但是-关联并不意味着因果关系,是什么让我们假设他们缺乏通用编程技能-我对此毫不怀疑-是他们选择语言的结果

还是C#成为他们首选的语言?

我可以看到其他可能的解释(也许是C#只是时髦的,因此它吸引了很多新手的......大多数人而言,C#是第一语言还没有编程很长的所有,而更多的是一种障碍的而不是从未使用其他某种语言进行编程……等等。


这更像是批评只能使用电动工具的木匠。即使使用垃圾收集的语言,了解变量应该挂多久也是一项基本技能。如果您不能直截了当地free盯着眼睛认出变量的预期寿命,那么如何用不提供此类线索的语言编写的程序来识别变量呢?
Karl Bielefeldt

1
我明白你的意思。我知道变量的寿命非常基本的(只是尽可能多的,因为我可能需要在C#中每天的基础上:范围usingIDisposable,事件处理程序引用他们的听众等),但我不能甚至严重尝试诊断内存在C ++应用程序中泄漏,因为我什至都不熟悉语法!我不知道星号代表什么。
康拉德·莫劳斯基

5

我想说学习一种语言,并坚持与它比决定你应该启动哪些语言更多的是错误的。当然,您可以学习一些语言,但是比较容易,但是最好尝试并开始学习一种您会经常使用的语言(在学校设置中,语言选择已经由学校决定了)。在正确学习一种语言并在几个月后积极使用它之后,您应该尝试另一种编程语言并进行比较。

在.NET中,使用两种(某种)不同的编程语言很容易,因为您可以在Visual Basic和C#之间进行切换。因此,您可以学习Visual Basic,看看有什么区别。在这个级别上,您应该精通具有三种基本编程结构的基本过程编码,如果您能对它们全部有所创造(并且知道如何使用变量),那么您就可以成为一名优秀的程序员:

  • 顺序-代码按照您指定的方式依次执行,依次定义(定义“跳转”,逐步和提示)
  • 有条件的-代码可以具有决策点(定义if语句,switch-case语句)
  • 循环/重复-代码可以根据某些决定重复自身(这是上述两者的扩展,定义了for-,do-while循环)

无论您的辅助编程语言是否是最活跃的,都没关系,只要知道编程语言(尤其是它们遵循相同的范例)是非常相似的,并且细微差别实际上可以走很长一段路让您了解软件编程的工作原理。

因此,至少每年一次,尝试学习一种遵循另一种编程范例的新编程语言。您不需要完全跟上新语言,但是了解其他范例也有一些好处。有几种范例,有些编程语言在许多范例之间混杂在一起(请注意,C#实际上具有以下三个子集):

您应该了解的最重要的事情是,许多编程语言都遵循它们自己的习惯用法和基本的API。因此,当您学习一种新语言时,请尝试学习这些习语和API的技巧,并且在构建内容时会很好。一个很好的理由是,您将在设计和解决编程问题上变得更好。一种语言的成语可能会给您一些有关如何解决主要语言问题的见解。

还应该知道还有另一个很好的理由,为什么您应该学习其他编程语言,而不是最常使用的主要语言:您的就业机会就更大。


5

问题的重点和许多答案都在C#上。来自维基百科

C#语言旨在成为一种简单的,现代的,通用的,面向对象的编程语言。

仅以此为基础,可以肯定地说,您可以将C#作为第一语言学习而不会对大脑造成任何长期损害。我不认为乔尔是谴责整个语言,不过,当他写道

尝试捷径直接进入想要立即学习的确切知识的尝试(例如从C#和ASP.NET开始)注定了失败。

问题不是语言,而是捷径。人们经常通过遵循分步教程或“ 24小时内学习所有内容”的书来尝试快速达到最终目标。您无需花太多时间在Stack Overflow上,就可以注意到以下问题:“我一生中从未写过任何代码,但是我正在使用iPhone编程!有人可以给我逐步指导以完成我想做的事情吗?谢谢!” 我并不是说您正在采用这种方法,但这是您必须提防的事情。

如果您想发展扎实的编程技能,则应该从学习基本技能开始。如果您尝试直接跳至OOP和GUI应用程序之类,那么您可能会错过这些基础知识。乔尔所指的书确实非常好。我只浏览了C#的黄皮书(PDF),但看起来它比我在商店中看到的大多数C#书籍更好地介绍了编程。


我想指出的是,措辞不是“不学习C#”,而是“ C# ASP.NET”(强调后加)。我不是C#程序员,但是.NET和CLR是一个开始学习的好平台。
forivall

5

对我来说,另一篇文章中的这些内容散发出些被精英阶层吓到的东西。是的,我经常向确实希望变得更好的认真的开发人员推荐SICP,但仅向那些想要超越“规范”并学习深刻魔术的开发人员推荐SICP。确实,多年来,SICP是MIT新生的标准编程文本。但是,许多精干的程序员从来没有机会参加那家优秀而又昂贵且高度挑剔的机构。

那么,我建议,在回答你的问题?从拥有的东西开始,学习如何像程序员一样思考,而不仅仅是学习一些特定的语言。

如果您碰巧可以使用C#实现,那么我可以告诉您,对于像我这样的僵硬人来说,这是一种完美的语言-Java,JavaScript,Python,Ruby,Scala,Scheme和我拥有的许多其他语言多年的经验教训。最后,我尝试为手头的特定工作选择正确的语言和工具,这意味着要切换帽子之类的语言。

使用有趣的学习方式并没有错,例如通过Why's Poignant GuideShoes接触Ruby (就像我在最近的另一篇文章中推荐的那样)。有一些神秘而神秘的道路,例如在前往SICP的路上将头撞向小计划者经验丰富的计划者。许多现代思想家会让您跳过所有较旧的学术和“企业”知识,而直接进入JavaScript,JQuery和HTML5。有很多入门方法,所以不要浪费太多时间。只需选择一个即可获得编码!

实际上,我相信这些天很少有工作的专业人士会带您退一步来首先学习Assembler或C / C ++。坦率地说,如果他们这样做了,我不认为他们会为您提供很多服务。

因此,为了稍微修饰“从您拥有的内容开始”,我还有三点建议:

  • 选择一种对您来说很酷的编程语言,以及一种看似有意义的学习方法,并全力以赴。运用您选择的语言识字;阅读尽可能多的好代码!
  • 立即将手放在键盘上,并在学习时开始编码。自己完成编程书籍中的所有基本练习,并用手指高兴地单击以使它们真正起作用,练习可以找到的所有教程。您将为修复示例中的错误而获得的技能感到惊讶,这些错误本来是可以正常工作的代码,但不是!
  • 将大部分精力花在学习优秀的程序员如何解决问题上的方式上。了解如何分析和分解复杂的问题和系统,将其分解,直到您真正理解它们为止。然后学习合成和设计自动化解决方案,进行构建,以便使地球上的某些人更容易完成某些任务。

我从FORTRAN IV和QBASIC开始,如果那些没有毁了我,C#也不会伤害您!祝您好运,并确保您在学习时开心!


您可以在此处找到Abelson&Sussman的原创
BlackJack

4

我认为,当有人问“我应该学习哪种语言?”时,这是我见过的最好的建议。很简单:一个好的程序员可以用任何语言工作。

我敢肯定,有人反对这种说法,但重点是:首先要学习成为一名优秀的程序员,而不是语言专家。建造商并不擅长在仅一块土地上建造,而是学习贸易技能并将其应用到所需的任何一块土地上。


我会+1。它类似于我平时建造摩托车的类比。您可以通过在装配线上工作并遵循本书来制造出像样的摩托车,但真正的确凿的建设者是菜刀匠,他们知道自行车内外的内脏,因此您会得到一些奇妙的东西。
Jarrod Nettles

3

有时候,我怀疑选择的语言与我们的性格有很多关系,它们使我们联系在一起,而与我们考虑的实际或学术方面的联系则少得多。

也就是说,学习新东西永远不会有害。当您开始意识到一切都有手册时,您就会知道您已经跨过了进化的大脑甚至可能是大脑破裂的门槛(我想这全都是透视图)。如果您有一定的才能,并且实际上对做事而不是程序员的职业兴趣感兴趣,那么您最终可以真正做任何您想做的事情。

至少弄乱了Python和JavaScript。真正能够写代码并观看它在文件I / O可访问的控制台环境(例如IDLE)或沙箱环境(例如浏览器)中立即运行,这是一个绝对的学习优势。我对C#和Java不满意的是,即使您实际上只是在编写一个带有无意义包装的简单函数,以使您的同伴或过于严格的编译器满意,它们仍希望将所有内容限制在类中。我喜欢JS和Python的另一件事是,它们确实允许您设置自己的范例。许多开发人员的偏爱有点太灵活了。我仍然不确定如何考虑重载基本运算符的智慧,但是我敢肯定,我喜欢Python允许使用该选项。

同样不要因为选择工作清单最多的主要语言而感到残酷。最好是在中等水域中按自己的喜好做一条大鱼,而不是成群的大多是mostly脚的,令人难以忍受的鱼,这些鱼会使每个工作搜索更多地成为彩票而不是匹配过程。


作为在我的日常工作中从那群令人难以忍受的鱼中雇用的人,我必须同意。在此讨论中,有很多非常有用的反馈。我希望@toleero觉得它有用,并且不会灰心。在我看来,虽然乔尔是个天才,我们不应该接受一切有人说是福音。他推荐的书很有用。但是,每天编写代码并获得实践经验也是如此。用少数几种语言(例如C#和不像C的东西-Basic,也许,Python或Ruby)来做到这一点,您至少会成为和许多人一样出色的开发人员:o)
Owen Blacker

3

在相当大的程度上,C#不如Java差。他们对许多概念提供了更好的支持,例如函数式编程,泛型编程,确定性销毁和值类型,运算符重载等。尽管如此,他们对这些功能的支持仍会花费很多工作,但是即使它比Java更好,它不是C ++。

其次,我认为您误读了乔尔所说的话。如果您可以掌握指针和递归,那么现在使用哪种语言都没关系。最重要的事情是使用一些unsafe代码,掌握unsafe quicksort一些知识,然后再返回到普通C#的其余部分。

哦,继续阅读:)


2

对我有帮助的第一语言是C#。虽然我上学时曾在Foxpro上摆弄过东西,而在大学时却在弄C。对于任何人来说,C#都是很好的起点。它遵循程序设计的一般基础知识,例如强类型,封装,继承等,我相信无论是否使用它们,人们都应该经常学习。以后,您可以随时转向不遵循基本编程标准的其他语言,例如Python。

人们没有真正添加到C#学习方面的另一个附加因素是,对于我所见过的任何语言,都可以使用最佳IDE。Eclipse IDE也很好,但是一旦使用Visual Studio,您将感谢Microsoft。

与C相比,C#得到了增强,从而确保您无需事先学习其他语言。十多年来,所有语言都是从C的本质演变而来的,甚至是JAVA。

因此,可以断定C#是一个很好的起点,使您能够在将来快速学习其他语言。


Eclipse对我来说比Visual Studio好得多。但是我同意你的观点-C#是一种很棒的语言,特别是如果它不是由邪恶的专有标准所拥有并锁定在邪恶的专有标准(摧毁Redmond的黑暗霸主)中的话
Thomas W

2

只要您早晚学习并开始学习第二种语言,将C#作为第一语言学习就没有错。这更重要。如果第二语言与C#稍有不同(在这方面javascript或ruby会比Java更好),那就更好了。每种语言都有其优缺点,而从长远来看,正是这些差异才能使您成为更好的程序员。


1

正如我建议您学习多种语言一样(其他人也建议这样做),请确保您了解一种(几种)语言,并且学很好。

知道多种语言的风险是,当您真正想解决问题时,您可能永远不会学习完全导致沮丧的语言。

知道for循环的构造是很多种语言,这很有趣,但是如果您不知道如何处理其中的任何错误,那将毫无用处。


1

不必担心自己碰巧首先学习C#。类似于担心您的第一步是用左脚还是右脚。首先学习托管语言之间的唯一区别是,您不得不延迟学习指针和详细的内存管理的时间。这实际上可以对您有利,因为当需要学习C时,您唯一需要担心的新内容就是内存管理-您也不会费力地尝试学习控制结构,函数的概念等,并且会能够完全专注于指针和内存管理。

刻板印象之所以存在,是因为有些托管语言程序员从没有做过第二部分,而是学习过C和C ++,然后将其应用于C和C ++作业。

这就像学习一种乐器一样,第一个是困难的,因为您正在尝试学习阅读书面音乐的技巧以及表达一种乐器来完成自己想要的事情的物理技巧。对于第二本及其后的工具,您可以将精力完全集中在使该工具与您已经知道的不同的方面。


1

毫无疑问,对新手来说很难。我已经完成了vb,javascript,PL / SQL,T-SQL,Uniface和一些C#,仅举几例。

之前有人提到Visual Basic是他们学习面向对象编程的地方,并且说实话,VB.NET具有我见过的任何语言中最容易理解的语法。最好的功能是关键字与所描述的概念相匹配。

例如,函数myHandler()处理myButton.click

或Class Human Extends扩展哺乳动物实现IntelligentLifeform

认真地说,对于新手来说,为了提高可读性,您还希望语法看起来像什么?

当您寻找属性和方法(以及子函数之间的区别)时,在VB中阅读起来要容易得多。

声明变量时类似

Dim myString作为字符串-明显的是类型和实例

C#区分大小写对我来说是一个严重的坏习惯,在类和实例中使用相同的名称,其中一个字母大写,另一个字母小写。

例如

人类人类

  • 您的词汇表中是否真的有那么少的单词,您必须重用现有的大写单词?

如果您调用human.think,很容易将实例误认为一个类,并一眼就认为您在调用静态方法。扫视通常是我们如何看待代码,我们没有时间将鼠标悬停在每个元素上,让编辑器告诉我们发生了什么。

C#可能有一些优点,但是即使保存了输入内容,也很难启动。这就是为什么必须在两种语言中都放一个地方。


人为+1。通过一本书将c#作为第二种语言(面包和黄油= Delphi),而不是对现有代码有任何深厚的经验,这总是让我的大脑有些不明白。尽管我确实很喜欢该语言的某些部分,但是从C语言区分大小写是一个大错误,恕我直言。
马特·奥伍德

当然可以,因为Dim myHuman as Human好多了吗?:D
scrwtp

0

我可以看到的最大缺点是,Visual Studio和关联的工具非常非常好-诸如智能感知和代码完成之类的东西很容易变成拐杖。我通常会争辩说,环境可能是如此的友好和支持,以至于当您需要在文本编辑器中修改红宝石代码时,您往往会感到有些迷茫。哦,您通常也会错过linq之类的东西。


0

C#非常适合开始编程。

这是我被告知的开始,甚至没有机会涉足其他任何东西(除了Java中的Hello World,一些基本的LOGO东西以及Scratch中的一些东西,但没有“ Serious”)。

总体而言,这可能很困难-很多事情似乎都不直观,并且确实有局限性,但是我认为它鼓励良好的编码,并且一旦掌握了它就很棒。我的意思是,它给您带来了更多的功能,并且比Python(通常建议使用)更加专业,这将带来很大的不同-在C#之后尝试C ++并不是很痛苦,但是如果我是从Python开始的,那么即使在语法级别上,这确实是一个很大的障碍。

而且,它以Mono的形式提供了良好的跨平台支持(对于那些认为Mono没什么大不了的人-Unity游戏引擎允许您在它的版本中进行编码)。对于游戏脚本,网页设计或Windows应用程序之类的大多数事情,它也非常有用。当然,某些语言会更好地适应某些行,因此这取决于您打算采用的一般方向-例如,如果您是朝着Web方向发展,那么C#(ASP.NET)肯定是好主意。如果您打算玩游戏,那么应该考虑使用C ++。

最后,即使您最终没有使用它来支持Python的简单性或Java的过时特性(因为Java的发布周期确实很慢),还是值得学习的-您将学习良好的编码练习,而对于新手来说并不太复杂。


这篇文章很难阅读(文字墙)。您介意将其编辑为更好的形状吗?
2013年

1
那个怎么样?还是很难看,还是现在好吗?顺便谢谢你的注意。
Sbspider

-1

要成为一名程序员,您需要充满激情。我认识的程序员是竭尽所能去学习和注意行业变化的程序员。我从Commodore Vic 20(是的旧版本)的基础上开始编程,然后继续使用其他新语言。我编程的一部分时间甚至还包括COBOL。我还开始注意到,某些语言在某些过程中相对于其他语言而言效果最好。我对您的建议是学习任何语言并了解基本的编程概念,例如循环,方法,比较。大多数语言都支持这三个概念。您永远不要说“这是最好的方法”,而应该说“我该如何改善”。最后一句话最糟糕的是,您可能会陷入工程学的困境。编程很有趣,请使其有趣!互联网开辟了一种全新的体验编程的方式,因为我们今天对信息的访问水平惊人。对于我来说,在上互联网之前,我必须先上书架,阅读GREY IBM编程书籍并学习。今天,您可以简单地在Google和Whammo中输入内容。


2
这篇文章很难阅读(文字墙)。您介意将其编辑为更好的形状吗?
t

-3

哇,答案很多。这是我的观点:

C#是学习计算机科学的地方。我认为这是一个非常糟糕的主意。我将在下面列出我的一些担忧。

  • C#是一种Microsoft语言。并不是说我在这里评判MS,只是在MS世界之外几乎没有吸收。如果您只想对MS硬件进行编程,那么请继续,但是我认为这不是一种扎实的计算机科学方法。
  • 我不是学习使用托管语言编程的忠实粉丝。我相信它们对于学习如何管理程序存储器和数据结构的构造非常有价值。

太累了,无法继续如此快速地选择另一种语言。


我能理解您是否认为将自己与MS绑定对您的职业有害。但是,这与学习计算机科学有什么关系?CS与平台或公司无关。
svick

-3

我建议使用C#或任何提供以下三项核心功能的语言:

全类型已编译且完全面向对象。

提供这三个核心的第一语言将教很多有关程序流,语法以及如何以更结构化的方式解决问题的知识。我在一堆没有这些属性的伟大语言中生活和呼吸,但是如果我教某人一种语言,我会选择一种具有这三个要求的语言。


-6

不,这个答案很糟糕。为什么?好吧,他确实开了一些您应该阅读的好书,但是如果没有课堂工作和实验室(计算机实验室)的工作,您将会迷失和沮丧。您需要与其他一群新程序员一起进行试验,因为除了这些书中的内容之外,还有很多东西要学习。我并不是说您必须去学习BSCS,但是当任何事情在任何时候都可能出错时,例如编译器问题,构建环境……您都需要它,您还需要一位知识渊博的讲师。您将不会是一个真空工作的程序员。只要您选择一所中等的学校,您所需要的任何书籍就足够了。

因此,报名参加一些课程,这将带来更多的乐趣!另外,如果您打算以程序员的身份工作,则需要联系,并且您会听到有关在校园招聘公司的所有嗡嗡声等。

最后,正规教育非常重要,因为编程需要大量的理论背景知识来理解事物在所有级别上的运作方式(硬件/硬件),因此您可以弄清楚如何解决问题。几乎所有事物都是一个黑匣子,因此您必须能够弄清楚为什么某些事物的行为方式如此,以便您可以在黑暗中采取下一个逻辑方法。如果没有至少2年的编程学位(无论您叫什么名字),您将处于劣势。

PS:除非您体验过Java,否则我不会接近.Net或C#。C#令人不悦。这是凌乱和混乱的代码。.Net IDE令人难以置信。处于IDE标准的黑暗时代。Java:C#〜数据:Lore


10
我和你在一起直到最后一段。它以一种煽动性的方式陈述了您对C#美学的看法,以至于它似乎并不属于其他应有的答案。
亚当李尔

9
即使在最后一段之前,这也是胡说八道。有些人在教室环境中学习得很好,但对另一些人则是浪费时间。学习理论背景很重要,但这不一定需要教室或正规的教育-它们可以帮助某些人,但不能(甚至是接近)每个人。
杰里·科芬

意见就是这样。这不是事实的陈述。因此,不要感到冒犯。
汤姆·琼斯,

您误解了正规教育的建议。您需要一个提出问题并与实验室中的同事进行协作的地方。协作是关键概念。抱歉,如果您是C#用户,即使对那些热情洋溢的技术人员来说这是不可能的,但我冒犯了您。
汤姆·琼斯,

1
对于许多无法上大学但需要社区支持的人来说,Stackoverflow已成为“实验室”。和班上一样吗?当然不是。够好吗?你打赌
BlackJack
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.