C#语言名称的由来


76

我是C和C ++程序员,现在正尝试学习C#。我已经购买了Wrox出版的《Professional C#》一书。

从C迁移到C ++时,我不确定为什么++要添加到C。后来我意识到,这++是一个增量运算符,它被添加到C中只是为了提供“面向对象的扩展”。

在C#中,意义#何在?


26
给C-sharp-haters一个机会,称为D-flat。
Mehrdad Afshari 2010年

1
C ++中加号的来源与增量运算符无关。AFAIK Bjarne在早期将其称为“带课程的C”,直到有队友累了并开始将其称为“ C加号”。
Cecil的名字是2010年

2
实际上,它最初被称为C哈希。在这种情况下,我们尝试改进C并对其进行完整的哈希处理;-)
Chinmay Kanchi 2010年

8
实际上,它最初的发音是C-OCTOTHORPE,就像我们要说的OCTOTHORPE。尝试一下:octothorpe octothorpe octothorpe!
埃里克·利珀特

Answers:


117

“ C锋利”这个名称的灵感来自于音乐符号,其中的“锋利”表示应将音符的音高调高一半。[6] 这类似于C ++的语言名称,其中“ ++”表示变量应加1。尖锐的符号也类似于四个“ +”符号的连字(在2乘2的网格中),进一步暗示该语言是C ++的增量。

由于显示器(标准字体,浏览器等)的技术限制,以及标准键盘上不存在尖锐符号(♯,U + 266F,MUSIC SHARP SIGN)的事实,数字符号(#,U + 0023) ,NUMBER SIGN)表示为编程语言书面名称中的尖锐符号。[7] 该约定反映在ECMA-334 C#语言规范中。3 但是,在可行的情况下(例如,在广告中或在美术中[8]),Microsoft使用预期的音乐符号。

来自维基百科

另外,在这次采访中,安德斯·赫斯伯格(Anders Hejlseberg)说:

“我们想以该名称引用该语言的C遗产,并最终决定使用C#。我还记得其他一些候选人,例如eC,Safe C,C-square,C-cube,C-prime,C-star和Cesium。 ……看上去,现在我对我们的选择感到非常满意。”

最后,内奥米·汉密尔顿Naomi Hamilton)直接问安德斯·海斯伯格(Anders Hejlseberg)这个问题

[NH]为什么该语言最初命名为Cool,是什么促进了对C#的更改?

[AH]代号为Cool,代表“ C像面向对象语言”。我们有点喜欢这个名字:我们所有的文件都叫做.cool,真是太酷了!我们认真考虑了保留最终产品的名称,但是从商标的角度来看这是不可行的,因为那里有太多有趣的东西。

因此,命名委员会必须开始工作,我们有点喜欢在其中固有地引用C的概念,并且在C ++上稍作改动,因为您可以将尖锐的符号视为四个优点,所以它是C ++++ 。音乐方面也很有趣。所以是C#,实际上我对这个名称非常满意。它很好地为我们服务。


9
之所以命名为C#,是因为贝多芬的《月光奏鸣曲》是比尔·盖茨的最爱,而安德斯·海斯伯格则用C#小写。丹麦人安德斯(Anders)也可能已经意识到有关丹麦法院国王弗雷德里克六世(King Frederik VI)是否是订阅贝多芬的米莎·索莱姆尼斯,作品Opus 123的十个“皇家法院”之一的争论:也许他知道最近学术研究证实丹麦人的订阅存在于哥本哈根档案中。当C#命名时,乔恩·斯基特(Jon Skeet)仍然只是“休眠人类形式”;尚未从形而上地转变为DotNetVerse的Hierophant。:)
BillW

8
顺便说一句,C#源代码中包含签入测试套件的目录仍称为“ safec”。没有人愿意改变它。
埃里克·利珀特

1
我大多同意安德斯(Anders)的观点,但是C-素数-很好。
Michael Petrotta 2010年

我暗中希望我的假设是正确的,因为他们将使用C ++ ++(因此,C ++再次增加,但这看起来很愚蠢),因此他们将+号排列成2 x 2的网格。证实我的怀疑真棒!
Mike Devenney '17

7

1991年,Al Stevens在Dobbs Journal(DDJ)博士中引入了D-Flat。基于DOS的事件驱动的框架,用于构建用户界面(请参见http://www.ddj.com/184408553)。当时,D-Flat用C编写,因为Al Stevens为DDJ编写了C编程专栏。已经使用了C ++这个名字,他曾经考虑过使用C-Sharp,但是确信有人已经想到了它(请参阅http://www.ddj.com/184410858)。我的观点是,史蒂文斯(Al Stevens)一直在考虑C-Sharp这个名字,因为D-Flat并不是一时兴起,他拥有丰富的语言经验。


7

鉴于这是一个程序员的网站,列出“真实姓名”(Microsoft程序员在项目上工作时使用的名称)也许很有趣。这些名称倾向于像考古记录一样,显示在CLR(转子),SDK头文件和参考源的源代码中。

C#从COOL(类似于C的面向对象语言)开始。Rotor生成文件显示,早期的C#代码可能已写入扩展名为.cool的文件中。但是,在许多地方也将其命名为COOLC。

CLR有几个名字。它最初是在Windows 2000的COM +上工作的小组中的一个项目,在CLR源代码中有很多对“ ComPlus”的引用。托管异常的异常代码为0xe0434f4e,0xe0 +“ COM” +1。在WinError.h文件中,CLR错误代码使用“ URT”,“通用运行时”。收缩“ Cor”出现在宿主接口“ COM Object Runtime”的许多位置。CLR源代码通常使用EE首字母缩写词,与COR不同,它是执行引擎的缩写,也是CLR代码库中的部分更改,以使其可以执行托管代码。

我见过的内部项目名称:

  • 雷尼尔:Visual Studio 2002
  • 埃弗里特:Visual Studio 2003
  • Whidbey:Visual Studio 2005
  • 逆戟鲸:Visual Studio 2008
  • 夏威夷:Visual Studio 2010(很早)
  • 转子:CLR的共享源版本
  • 阿瓦隆:WPF
  • 靛蓝:WCF
  • 育空地区:SQL Server 2005
  • Katmai:SQL Server 2008
  • Strike:一种自定义调试器扩展,用于调试CLR的第一个版本,已演变为SOS(Son of Strike)。

3
EE在C#编译器中不是“执行引擎”,尽管它可能在CLR中,但我不知道。在C#编译器中,EE是“表达式评估器”-编译器中的EE内容是编译器的一部分,它们在调试器中实现“监视”和“本地”窗口行为。您在调试时给它一个表达式,然后EE根据正在运行的程序状态的上下文对其求值。如果这在CLR资料来源中有不同之处,我将感到(惊讶)。
埃里克·利珀特

2
mscoree.dll中文件版本信息资源的文件描述属性是“ Microsoft .NET Runtime Execution Engine”。
汉斯·帕桑


2

“#”实际上是一个音乐上的尖锐符号-++表示C ++递增C,#表示C ++递增或C ++++;具有C语法的语言,提供更高级别的功能。


1
等等,这不只是14个月前添加的答案@ljs的副本吗?
迈克·德文尼

2

“#”实际上是一个音乐上的尖锐符号-++表示C ++递增C,#表示C ++递增或C ++++;具有C语法的语言,提供更高级别的功能。

查看有关此内容的维基百科文章


1

这只是一个名字。#字符取自音符,表示C#(C尖锐)比C高半个音符。

C#部分基于C / C ++,但也基于Java和Pascal(Delphi)。像Java一样,C#是面向对象的语言,而C ++和Pascal是具有附加功能的面向对象的过程语言。


1

C#是受音乐启发的名称,也有和弦C#


1

除了在其他地方提到的音乐参考文献外,请注意,“♯”和“#”看起来像两个“ +”符号重叠。

最后,尽管这是一项营销决定,而不是一项技术决定。

(顺便说一句:当时,我们认为这是一个糟糕的选择,因为搜索引擎会忽略“特殊”字符,而您会得到“ C”的结果。现在,搜索引擎更加智能。)


3
+实际上是重叠的4个符号:)
格雷戈里·帕科斯

2
@GregoryPakosz:只有两个,尽管它们是不对称的,目前尚不清楚它们在哪里。它可以是一个左上角,其向左下方延伸的距离比向上和向左延伸的距离大;而另一个向下和右面的上方和向左延伸的距离则比向下和向右方向的延伸更大,或者两个符号可以位于左下和右上。
2015年

-1

很好,虽然c ++是带有“面向对象扩展”的c,但另一方面,c#并非仅基于c的语法,而是完全面向对象的,可以编译为msil,而本地c ++可以编译为本地二进制代码...


2
完全面向对象?
Kugel 2010年

1
一切都包含在某些类/结构中
彼得
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.