Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 说";C&;C“在功能上相等,但在概念上不相等”;_C#_C - Fatal编程技术网

C# 说";C&;C“在功能上相等,但在概念上不相等”;

C# 说";C&;C“在功能上相等,但在概念上不相等”;,c#,c,C#,C,我班上有人就C和C#提出了一个论点 我说过,说C&C是相同的(意思是:功能相同,但概念不同)是正确的 概念不同:C意味着比C更容易编程。C更具描述性。 功能相同:使用C#生成的所有内容—也可以使用C生成(包括OOP) 是这样吗 编辑: 在阅读答案时,我注意到我的问题不清楚 请参考语言的语法。 就好像我在问:对于一个C程序员来说,学习C#会非常容易吗?或者它会像一种全新的语言(比如汇编语言,它有着显著的不同) 从这个意义上说,C和C差不多 (很抱歉不明确)我想说它们都是过程语言。然而,C#也有OO

我班上有人就C和C#提出了一个论点

我说过,说C&C是相同的(意思是:功能相同,但概念不同)是正确的

概念不同:C意味着比C更容易编程。C更具描述性。 功能相同:使用C#生成的所有内容—也可以使用C生成(包括OOP)

是这样吗

编辑:

在阅读答案时,我注意到我的问题不清楚

请参考语言的语法。 就好像我在问:对于一个C程序员来说,学习C#会非常容易吗?或者它会像一种全新的语言(比如汇编语言,它有着显著的不同)

从这个意义上说,C和C差不多


(很抱歉不明确)

我想说它们都是过程语言。然而,C#也有OOP特性。但这两个程序位使它们非常相似,处理它们中的问题也非常相似

尽管如此,C#更具多范式,因为C#有lambda表达式(因此也有匿名函数),所以它有一些函数编程(包括foreach),并且比C有更严格的类型系统


所以我想说C与C具有相同的功能,但不是相反。(除非将低级编程作为功能的一部分)

好吧,它们都是图灵完整的。

这是绝对正确的

您甚至可以将其扩展到所有语言,因为可以用一种图灵完备语言完成的所有操作都可以用另一种图灵完备语言完成


当然,C和C是图灵完备的。

C是一种用于系统编程的通用语言

C#是一种通用语言,旨在进行应用程序编程

两者都提供了在各自领域比其他工具更好地完成所需工作的工具。所以,不,他们是不同的


@我不认为我必须澄清我的答案

当你说:

C#意味着更易于编程 比C.C更具描述性

错了,这要看情况。对于一个操作系统程序员来说,我认为C更容易使用。甚至有些部分是用C写的

功能相同:您所需要的一切 用C#制作-你也可以用C#制作 C(包括OOP)


再说一遍,你能告诉我如何用C写Lambda吗


在一天结束时,两者都是图灵完成的,这意味着任何东西都可以用第一个来计算,也可以用第二个来计算。我没有把这个问题理解为计算理论的练习,如果这是问题的意思,很抱歉。

如果你想深入了解它的本质,绝大多数用于编程的语言都能够用另一种语言完成任何事情。有一个特定的术语用来描述这一点,当应用到一种语言时,这意味着任何可计算的问题都可以通过该语言解决

也就是说,在处理适合于某些方法的问题的适当方法上存在着显著的差异。C主要用于提供有用的语言结构,同时仍然与计算机内部的工作方式保持密切关系,更适合于过程开发。另一方面,C#是一种更高级的语言,它具有更高的抽象级别,对内存寻址和管理进行了重要的抽象,并内置了对OOP和一些功能结构的支持


在其中一种语言中,没有什么是不可能在另一种语言中完成的(包括C#中的过程编程,或C中的OOP或函数编程),但是语言的设计适合于某种风格

只要语言是图灵完成的,你就可以用它们完成同样的任务,所以它们就是你所说的“功能相同”——一般来说,你可以在x中制作的所有东西都可以在y中制作


然而,在这种广泛的通用性之外,我不会称它们为“相同的”——因为它们之间存在差异——C是完全编译的,C#在CLR中运行——这意味着你可以用C编写低级的东西,如引导加载程序、操作系统等,但不能用C#编写。(从技术上讲,你可以制作一个完全编译的C版本,并在其中编写一个操作系统,或者让C在CLR中运行——但这不是目前实现的方式。)

这并不完全正确。C#和C的不同之处在于,C#需要一个底层框架来编译。即使要去掉标准C库,也可以使用内存指针调用操作系统甚至底层硬件。C#是一种托管语言,因此需要一些东西来管理它的内存,比如垃圾处理。(你最后一次告诉C什么时候删除对象是什么时候?)C是一种非托管的低级语言


试着用C#编写一个操作系统。。。这是不可能的。即使你要将C编译成机器代码而不是MSIL,首先你必须用另一种语言编写一个管理器来解决C的管理问题。

你需要问问自己这个问题到底有多重要。将语言与完全不同的设计目标进行比较是不公平的,也没有用处(阅读Soustroup的C++ FAQ作为有关C++的主题的论文)。 许多其他答案将图灵完整性称为功能性:我不认为这真的有帮助。尽管它是编程语言能力的理论基础,但对于特定任务来说,它不是任何语言适合性的指示器。我想看看库和语言概念能让您轻松实现什么(分别是应用程序和系统编程)。
关于范例:您可以用两种语言编写相同的范例,但每种范例都使它们的设计更加容易。(这对于l来说是正确的