首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习C、C++和C#

学习C、C++和C#
EN

Software Engineering用户
提问于 2011-02-07 22:28:25
回答 11查看 5.8K关注 0票数 5

我相信你们已经厌倦了这个问题,但是在经历了几个小时的类似帖子和问题之后,我真的没有在我的具体问题上取得任何进展。

我希望你们能在我决定采取行动之前,先弄清楚我有几个问题。

背景:我想注册某种类型的程序来学习编程语言/获得证书/学位在这个领域工作。高中时,我一直很感兴趣,买了一本关于VB的书,并涉猎其中。现在我想在一个巨大的停顿之后变得严肃起来。

问题1:我读到,首先学习C,然后学习C++或C#是适得其反的,因为你养成了坏习惯。在我看过的很多大学课程中,学习C/C++是必修课。我应该学C吗?在一个相关的问题上,我真的不理解C和C++,或者C#之间的区别,只是它合并了.NET (据我所知,这是一个工具和库的编译,使编程变得更容易和更快)。

问题2:你们在哪里学会编程的?你推荐什么地方?是否有可能找到一份自学成才的职业编程?我的最佳机会是Is技术还是普通大学?我本来打算去参加JC的,但是我不知道该怎么做。

最后一个问题:)我听说C++正在被“移植”到.NET。是吗?如果是这样的话,这是否会使C++成为一种可靠的、有需求的语言来学习?

谢谢你找我。:)

EN

回答 11

Software Engineering用户

发布于 2011-02-07 22:56:09

这真的取决于你如何看待你的职业发展。如果您认为您希望使用收缩包装的软件(如Office ),或者是像操作系统这样的低级软件,那么当然可以,首先学习C和C++。但是,如果你在寻找一种职业写作软件,这可能是大多数入门级工作的地方,比如C#就更有价值了。

C/C++与C#之间存在着千千万万的差异。但到目前为止,你关心的有三大问题:

(1) C#提供了一个干净的、相当容易使用的对象模型,其形式是.NET运行时(及其各种Silverlight/WP7兄弟);C和C++是独立于平台和框架的。举一个例子来说,这意味着他们没有任何定义的处理字符串的方法,因此,多年来,程序员已经想出了大约1000种方法来处理字符串,但没有一种方法与其他方法完全兼容。相反,如果您想在C#中使用字符串,只需使用内置的Microsoft " string“类,就可以完成了。是的,这是大约1%的限制,但约100倍的方便。

(2) C#通常不会让您仔细考虑内存管理的细节。如果创建一个对象,通常不需要担心删除对象来释放它正在使用的内存。相反,您将花费大量时间在C或C++中,以确保您在正确的时间和顺序删除对象。如果你犯了最轻微的错误,你就会用严重的运行时崩溃来弥补这些错误。

(3) MS C#编译器提供了相当好的错误消息。典型的C和C++编译器给出了非常糟糕的错误消息。当我在C#中搞砸了一行代码时,编译器几乎总是给我一个错误:“这是你搞砸的代码行。”如果我在C或C++中执行类似的操作,编译器会经常给我带来上千个不同的错误,实际上没有一个错误指向我所犯的错误。对于普通程序员来说,对于哪个环境更有效率,您可以得出自己的结论:-)。

其最终结果是,尽管C#比C或C++稍慢,而且对于某些任务(例如视频编解码)也不太好,但是对于几乎每个您能想到的业务级应用程序,您在它中的生产率将比C或C++高出大约10倍。

我不知道有哪一种方法可以学习编程,除了所有这些方法都包含了大量的编程。我认识的一些最差劲的程序员拥有计算机科学博士学位,还有一些最优秀的程序员从未从高中毕业。根本就没有一种方法可以做到。正如其他人所建议的,一个合理的开始方式是买几本书,找到一个你想要实现的宠物项目(一个网站将是一个好的开始),然后开始黑客攻击。你会犯上千个错误,但唯一不可原谅的就是用你最初的方式设计你的第二个网站。然后继续前进。

至于其他语言: Java非常类似于C#,在学习完另一种语言之后,学习另一种语言的速度应该很快。现在,您还应该至少学习一种“动态”语言,例如Python、JavaScript或Ruby。(对C#来说,动态语言大致相当于C#对于C的含义:非常有表现力,在更高的抽象级别上工作,使您对实现细节考虑得更少,但也倾向于更慢,并可能鼓励更多的坏习惯。)你可能会以做一种或另一种形式的web开发为生,而这三种语言都是当今这一领域的重要语言。您几乎肯定会在某个时候学习JavaScript,但是它几乎完全是一种前端语言:几乎没有人使用它来编写后端的东西。

票数 11
EN

Software Engineering用户

发布于 2011-02-07 22:55:58

我不推荐你的清单中的任何一种作为第一语言。从Python红宝石JavaScript开始--是的,它们都是同时出现的。它们非常相似,技能会从一种传承到另一种,但又有足够的不同,你可以通过研究这些差异来学习编程语言在一般情况下如何工作的有价值的东西。

一旦你有了这些,你应该继续C. C教你你的计算机如何在最低的水平工作,这对于任何语言的编程都是有价值的。(但试着在“循环是什么”的基础上学习呢?)这就是为什么你在学习高级编程之后就这么做的原因。)

我不会费心学习任何其他C-家庭语言,直到你需要他们做一个项目。它们的问题是,它们是巨大的,每个项目都会选择不同的子集--因此,在一个项目中,C++意味着模板和标准容器,但在不同的项目中完全处于困境,这意味着深入嵌套的继承层次结构和COM。

票数 4
EN

Software Engineering用户

发布于 2011-02-07 22:54:10

首先,你需要知道你想做什么。您对操作系统之上的软件开发感兴趣吗?还是想对硬件进行编程?如果您正在寻找程序硬件,您可能需要了解纯C和汇编语言。但是,如果您想开发平台软件,C++是一种相当通用的语言。C#本身也很好,但我不推荐它作为起点(虽然可能比C++容易,但您将在C++中学习更多的基础知识,而C#往往在后台这样做)。

此外,请记住,没有语言(无论是C,C++,C#,Java等)。很容易学习,因为这是一种技能,它必须随着时间的推移而发展。无论是否接受学校教育,要想获得好成绩都需要时间。

在进入大学之前,我完全是自学的(大约7年的编程经验和大约3年的专业经验)。我学到的编程数量是非常有限的;你不应该依赖于任何一所学校(除非你去一所学校学习一个特定的“编程”专业,但我不确定这些程序)来教你编程语言。也许他们会在某些语用方面帮助你,但作为一个开发人员,这主要取决于你的学习(网络上有很多很棒的指南,教授可以为你指明正确的方向)。也就是说,不管怎么说,在计算机科学中,你可以学到很多关于系统是如何运作的,当应用到你的编程中时,它肯定能提高你的代码的效率。

考虑到这一点,这并不意味着一个好的小文凭不会帮助你在谷歌获得你想要的工作(我肯定会的)。然而,对于一家公司来说,该行业的资质远比单纯的“书呆子”更有价值。你可以在学校里学到你想学的所有东西,但是如果你能做的就是用一组条件来解决家庭作业编程问题,那么当现实世界冲击你的时候,你就有麻烦了;你需要预测并发现你自己的错误/错误,等等。

最后,我不经常使用.NET框架,因此我无法验证或否认此声明。然而,C++是一种非常坚实和有用的学习语言。

致以敬意,

丹尼斯M.

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/45202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档