我班上提出了关于C和C#的争论。
我说过说C&是正确的。 C#是相同的(意思是:功能相同,但不是概念)。
不同的概念:C#意味着比C编程更容易.C更具描述性。 功能相同:使用C#制作的所有内容 - 您也可以使用C(包括OOP)制作。
是吗?
编辑:
在阅读答案时,我注意到我的问题不明确。
请参阅语言的语法。 好像我在问:C程序员学习C#会非常容易吗?或者它就像一个全新的语言(就像汇编有很大的不同)......
从这个意义上讲,我会说C和C#几乎相同。
(抱歉不明白)
答案 0 :(得分:13)
嗯,他们都是图灵完成的。
答案 1 :(得分:12)
C是一种针对系统编程的通用语言。
C#是一种针对应用程序编程的通用语言。
两者都提供了比其他领域更好地完成所需工作的工具。所以,没有他们是不同的。
@Don我想我必须澄清我的答案。
当你说:
C#意味着更容易编程 比C.更具描述性。
错,取决于。对于操作系统程序员,我会说C会更容易玩。甚至Singularity也有一些用C语言编写的部分。
功能相同:你的一切 使用C#制作 - 你也可以制作 C(包括OOP)。
再次,你能告诉我如何在C中写Lambda吗?....
在一天结束时,两者都是图灵完成,这意味着,任何可以使用第一个计算,可以使用第二个计算。我不明白这个问题是计算理论的一个练习,如果这就是问题的意义,那就很抱歉。
答案 2 :(得分:4)
如果你想了解它的细节,那么用于编程的绝大多数语言都能够用另一种语言完成任何事情。有一个特定的术语用来描述这个,Turing Complete,当应用于一种语言时,意味着任何可计算的问题都可以通过该语言解决。
话虽如此,在处理适合某些方法的问题的适当方法方面存在显着差异。 C主要用于提供有用的语言结构,同时仍与计算机内部工作方式保持密切关系,更适合程序开发。另一方面,C#是一种更高级别的语言,具有更高的抽象级别,内存寻址和管理的显着抽象,以及对OOP和一些功能结构的内置支持。
在另一个中无法做到的事情(包括C#中的程序编程,或OOP中的程序编程或C语言中的函数编程)都无法做到,但语言的设计有助于某种风格。
答案 3 :(得分:2)
这不完全正确。 C#和C的不同之处在于C#需要一个底层框架来编译。即使您要剥离标准C库,也可以使用指向内存的指针来调用操作系统甚至是低级硬件。 C#是一种托管语言,因此需要处理其内存管理,例如垃圾处理。 (你最后一次告诉C#什么时候删除一个对象?)C是一种非托管的低级语言。
尝试用C#编写操作系统......这是不可能的。即使你要将C#编译为机器代码而不是MSIL,首先你必须用另一种语言编写一个可以解决C#管理问题的经理。
答案 4 :(得分:2)
你需要问问自己这个问题究竟有多重要。将语言与完全不同的设计目标进行比较既不公平也不有用(阅读Soustroup的C ++常见问题解答关于C ++这个主题的论文)。
许多其他答案将Turing Completness称为功能:我不相信这确实有用。尽管是编程语言能力的理论基础,但它并不是任何语言适合特定任务的指标。我宁愿看一下库和语言概念能让你轻松实现的目标(分别是应用程序和系统编程)
关于范例:您可以使用两种语言编写相同的范例,但每种语言都可以使它们的设计更容易。 (许多语言都是如此。)
毕竟,我认为你的问题的答案没有任何意义。
答案 5 :(得分:0)
我会说它们都是程序性语言。但是,C#也具有OOP功能。但是这两个程序位使得它们非常相似并且处理它们中的问题非常相似。
尽管如此,C#更多的是多范式,因为C#具有lambda表达式(因此也就是匿名函数)所以它有一些函数式编程(包括foreach),并且具有比C更严格的类型系统。
所以我会说C具有与C#相同的功能,但并非相反。 (除非您将低级编程视为功能的一部分)
答案 6 :(得分:0)
这是绝对正确的。
您甚至可以将其扩展到所有语言,因为使用一种图灵完备语言可以完成的所有内容都可以使用另一种图灵完备语言来完成...
C和C#当然是图灵完成的。
答案 7 :(得分:0)
只要语言图灵完整,您就可以完成相同的任务,因此它们就是您所谓的“功能相同” - 通常,您可以在 x 中创建的所有内容EM>ÿ。
然而,除了这种广泛的一般性,我不会称它们为“相同” - 因为存在差异 - C完全编译并且C#在CLR内部运行 - 这意味着您可以编写低级别的东西,如引导加载程序,操作系统C等但不能用C#。 (从技术上讲,你可以制作C#的完全编译版本并在其中编写操作系统,或者在CLR中运行C - 但这不是当前实现的方式。)
答案 8 :(得分:0)
为什么呢?因为两者都有“C”? C是一种过程编程语言,C#是面向对象的。 C有明确的内存管理,C#有垃圾回收。仅这两个特征意味着这两种语言相距甚远,与其他语言相比具有更多的共同点。
答案 9 :(得分:0)
简短的问题,简短的回答。
对于硬件以外的任何东西,当然,C和C#在功能上是等效的。对于处理硬件,如果你需要比C#提供更多的功能,C赢。