不知道C语言可以开始学习C#吗?

23

在了解一点点C语言(仅限一些基础知识)甚至没有了解C语言的情况下,是否建议直接使用C#?


36
最好你不要学习C语言,因为它的表达方法与其他语言非常不同。有些人在使用C#时还保留了很多C语言的表达方式,这样他们写的代码会让人感到很难读懂。 - Gabe Moothart
我完全是新手 .net .. 我其实是一名学生(对电子学感兴趣,喜欢使用嵌入式系统(微控制器)进行各种操作).... 我家里的人都太倾向于 .net、Java 等等,这让我的思维混乱,并且增加了我对他们使用语言解决问题的好奇心.. 我的内心告诉我:“你也可以尝试一下 - 因为没有什么是不可能的”。 - Dharavk
1
C#和C在编程范式方面有着如此根本的不同,以至于如果你当前的目标是学习其中之一,那么学习C#可能会更好。 - Corey D
3
如果你对嵌入式编程感兴趣,最好先学习C语言。因为在学习C#之后再学习C可能会有些困难。 - lune
如果你要做嵌入式开发,我会毫不犹豫地推荐C语言。几乎所有的微控制器都可以用C语言编程。但是对于C#来说情况就不同了。 - Skurmedel
显示剩余2条评论
22个回答

38

C#和C是非常不同的,它们共享语法,但编程风格却有很大的区别。学习C并不会对你有害,但如果你的目标是学习C#,那就从C#开始。

学习C将会让你更多地了解计算机的工作原理,并给你一个低级别的理解。C#是一种高级语言,具有较低的学习曲线来获得图形化界面。

Joel和Jeff经常讨论学习C的价值,stackoverflow播客#2就是一个例子。


那个播客的音频真的很糟糕。 - Anthony

22

是的,学习C#编程语言并不需要预先掌握C编程语言。了解一些C语言会有助于你快速掌握C#语法,但除此之外两者相似之处并不多。


14

当然。C#从C中借鉴了语义约定,但是并没有必要学习它。

事实上,您将跳过试图将C#用作C的阶段。


8

如果你的目标是学习第一门编程语言,并且不想成为专业程序员,那么请学习你将要使用的语言。

如果你将要成为专业程序员,你真的应该在某个时候精通C语言。我不知道从C#开始还是从C开始会更难,无论何时接触C都是具有挑战性的。

如果你已经了解了一些语言,但不包括C或C#,那么现在就学习C#,然后再学习C。

关键在于C是一种更简单的语言,但要在其中完成重要的任务需要使用更复杂的结构。有些在C#中容易完成的事情在C中会很困难,尽管C是更广泛和多功能的语言。


1
如果你想成为一名专业程序员,你真的应该在某个时候精通C语言。<br/> 我不同意。如果你的目标是成为一名专业的C#开发人员,但你还不熟悉C语言,那么就应该把注意力集中在学习C#上。与其花时间变得精通C语言,不如在.NET领域拓展自己的技能。首先要扎实掌握面向对象的实践。学习设计模式、架构。在业余时间了解低层次的工作原理——代码和机器内部的真正运行情况。这些步骤将更好地实现成为一个熟练的开发人员的目标。 - Mark Maslar
1
你为什么认为“严肃的程序员”应该学习C语言?冒着显得短视的风险,我目前只在.NET上开发(未来可能不会一直这样),但我的个人发展重点是.NET框架的总体,更好地使用模式和最佳实践,并且我想学习一种函数式语言(F#是一个候选)。此时此刻,我真的看不出为什么我应该学习一种我自己不打算使用的语言。我错过了什么吗? - Nathan Koop
@Mark:C语言是开发对低级别事物的理解的一部分,你似乎同意这是一件好事。@Nathan:学习不同的编程语言将扩大你的思维范围,并使你成为更好的开发人员。 - David Thornley
2
嵌入式系统的专业程序员,如Dharavk可能希望成为的那样,应该一定要学习C语言。在嵌入式系统上,你通常只有C、ASM或者一种奇怪的神秘语言可选,这些语言你可能甚至在尝试使用特定的嵌入式系统之前都没有听说过。少数更高级的嵌入式系统支持其他语言(例如Java虚拟机),但这只是个例外而非规律。 - Brian
C语言是一个很好的学习语言,因为要理解它为什么是这样的,需要让你熟悉计算机的真正工作方式。 - Sinan Ünür
最近我完成了一门C++课程,从基础到Actionscript到C#再到C++。我在初中就已经知道了字节、位等的相关知识,但是当我最终在C++中正确地看到它们被应用时,我对其他所有语言的性能理解忽然变得更加清晰了。 - Chris Barry

7
当然可以。C#使用类似C的语法,但我认为您会发现它比C更容易学习。

6

我会重复很多答案,但我想以比其他人更具体的方式表达一些内容。

我认为作为第一门语言,跳入C#或任何其他面向对象的语言都是可以的。事实上,许多人认为如果您想成为OO方面的专家,则应该将OO语言作为您的第一门语言,因为这样您就不会被限制在过程式思维中。

话虽如此,好的程序员如果没有至少一个基本的工作模型来了解计算机内部发生的事情,那就是稀有且难以找到的。这意味着,最终您应该学习计算机如何管理内存、指针、CPU如何执行指令等等... 最终阅读一本C语言书和一本汇编语言书是个好主意。我认为您不需要精通它们;您只需要对计算机和编程语言的基本工作原理有一个基本的了解即可。


3

虽然C语言是一种很好的通用编程语言,但我认为学习它并不能帮助你学习C#。


2
我的问题是,你是否想要选择一门编程语言来学习编程?(C#是其中之一)或者你已经掌握了其他编程语言,认为在学习C#之前需要先学习C语言?
如果你不打算学习编程,那么我建议你跳过C语言,直接学习C#。但如果你是第一次学习编程,我不会推荐这两门语言。尝试一门脚本语言,可以让你更快地编写代码。

我出于好奇写过汇编和嵌入式C程序(如if...else,do,while等类型),并向前迈了一步,提出了这个问题.... - Dharavk
如果你已经做到了这一点,那么你已经基本学会了C语言将要教给你的内容。尝试学习C#吧。 - David Thornley

2

是的。当我开始学习 C# 时,我没有任何 C 的经验。


2
许多新手程序员常犯的一个错误是他们想要做什么?你想做一些简单的东西,比如"hello world"? 还是你想做一些更复杂的东西,比如GUI应用程序或者视频游戏?
这很重要的原因是并非每种编程语言都适合每个任务。正如其他人所提到的,C是一个出色的系统和驱动程序语言(或者任何需要低层次接口或极端性能的东西), 而C#则专门设计用于构建从文本编辑器到庞大的多层企业解决方案之间的桌面应用程序。尽管这些语言的名称相似,但它们真正共享的只是类似的名称和一些共同的语法。
我建议先从C#入手,将C留到以后学习。您可以使用许多免费工具快速开始工作,例如 Visual Studio Express C#。如果以后您想开始处理像Linux内核、编译器或硬件驱动程序之类的东西,也可以很快地学会C。C仍然是一个值得学习的语言。

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