Herkunft des C # -Sprachennamens


75

Ich bin ein C- und C ++ - Programmierer und versuche jetzt, C # zu lernen. Ich habe das Buch Professional C # von Wrox Publications gekauft.

Während der Migration von C nach C ++ hatte ich Zweifel, warum ++es zu C hinzugefügt wurde. Später wurde mir klar, dass ++es sich um einen Inkrementoperator handelt, der zu C hinzugefügt wurde, um eine 'objektorientierte Erweiterung' bereitzustellen.

Welche Bedeutung hat C # in C # #?


26
Um C-Sharp-Hassern die Möglichkeit zu geben, es D-Dur zu nennen.
Mehrdad Afshari

1
Der Ursprung der Pluspunkte in C ++ hängt nicht mit dem Inkrementoperator zusammen. AFAIK Bjarne nannte es in den frühen Stadien "C mit Klassen", bis ein Kumpel müde wurde und anfing, es "C plus plus" zu nennen.
Cecil hat einen Namen

2
Eigentlich sollte es ursprünglich C-Hash ausgesprochen werden. Wie in haben wir versucht, C zu verbessern und haben einen kompletten Hash daraus gemacht ;-)
Chinmay Kanchi

8
Eigentlich sollte es ursprünglich C-OCTOTHORPE ausgesprochen werden, wie in, wir sagen gerne OCTOTHORPE. Probieren Sie es aus: Octothorpe Octothorpe Octothorpe!
Eric Lippert

Dieser datierte Artikel argumentiert gut - theregister.co.uk/2002/07/04/why_microsoft_makes_a_complete
Biswajeet

Antworten:


118

Der Name "Cis" wurde von der Notenschrift inspiriert, bei der eine scharfe Note angibt, dass die geschriebene Note einen halben Schritt höher in der Tonhöhe sein sollte. [6] Dies ähnelt dem Sprachnamen von C ++, wobei "++" angibt, dass eine Variable um 1 erhöht werden soll. Das scharfe Symbol ähnelt außerdem einer Ligatur von vier "+" - Symbolen (in einem Zwei-mal-Zwei-Raster) Dies bedeutet, dass die Sprache ein Inkrement von C ++ ist.

Aufgrund technischer Einschränkungen der Anzeige (Standardschriftarten, Browser usw.) und der Tatsache, dass das scharfe Symbol (♯, U + 266F, MUSIC SHARP SIGN) auf der Standardtastatur nicht vorhanden ist, wird das Nummernzeichen (#, U + 0023) angezeigt , NUMBER SIGN) wurde ausgewählt, um das scharfe Symbol im geschriebenen Namen der Programmiersprache darzustellen. [7] Diese Konvention spiegelt sich in der ECMA-334 C # -Sprachenspezifikation wider. 3 Wenn dies jedoch sinnvoll ist (z. B. in der Werbung oder in der Box Art [8]), verwendet Microsoft das beabsichtigte Musiksymbol.

Aus Wikipedia .

Auch in diesem Interview sagt Anders Hejlseberg:

"Wir wollten im Namen einen Hinweis auf das C-Erbe der Sprache haben und haben uns schließlich für C # entschieden. Einige andere Kandidaten, an die ich mich erinnere, waren eC, Safe C, C-Quadrat, C-Würfel, C-Prime, C-Stern und Cäsium … Schauen und die jetzt bin ich ziemlich zufrieden mit unserer Wahl. "

Schließlich stellte Naomi Hamilton Anders Hejlseberg die Frage direkt :

[NH] Warum wurde die Sprache ursprünglich Cool genannt und was hat den Wechsel zu C # gefördert?

[AH] Der Codename war Cool und stand für 'C like Object Oriented Language'. Dieser Name hat uns irgendwie gefallen: Alle unsere Dateien hießen .cool und das war irgendwie cool! Wir haben ernsthaft versucht, den Namen für das Endprodukt beizubehalten, aber aus Sicht der Marken war dies einfach nicht möglich, da es viel zu viele coole Dinge gab.

Das Namenskomitee musste sich also an die Arbeit machen, und wir mochten die Vorstellung, einen inhärenten Verweis auf C zu haben, und ein kleines Wortspiel in C ++, da man das scharfe Zeichen als vier Pluspunkte betrachten kann, also ist es C ++++ . Und der musikalische Aspekt war auch interessant. Also war es C # und ich war wirklich sehr glücklich mit diesem Namen. Es hat uns gut gedient.


10
Benannt C #, weil Beethovens "Moonlight Sonata", Favorit von Bill Gates, und Anders Hejlsberg, in c # Moll geschrieben ist. Anders, ein Däne, war sich möglicherweise auch der akademischen Debatte darüber bewusst, ob König Frederik VI. Vom dänischen Hof einer der zehn "königlichen Gerichte" war, die Beethovens Missa Solemnis, Opus 123, abonniert hatten: Vielleicht war ihm dies kürzlich bekannt akademische Untersuchungen bestätigten, dass das dänische Abonnement in einem Kopenhagener Archiv existiert. Als C # benannt wurde, war Jon Skeet immer noch nur in "ruhender menschlicher Form"; noch nicht metaphysisch in den Hierophanten der DotNetVerse verwandelt. :)
BillW

8
Das Verzeichnis in den C # -Quellen, das die Check-in-Testsuiten enthält, heißt übrigens immer noch "safec". Niemand hat sich jemals die Mühe gemacht, es zu ändern.
Eric Lippert

1
Ich stimme Anders größtenteils zu, aber C-prime - das ist ziemlich nett.
Michael Petrotta

Ich hoffte insgeheim, dass ich in meiner Annahme richtig lag, dass sie sich für C ++ ++ entschieden (also wurde C ++ noch einmal erhöht, aber das sieht dumm aus), also ordneten sie die + -Zeichen in einem 2 x 2-Raster an. Es ist großartig, meinen Verdacht bestätigt zu haben!
Mike Devenney

7

1991 führte Al Stevens D-Flat im Dr. Dobbs Journal (DDJ) ein. Ein DOS-basiertes, ereignisgesteuertes Framework zum Erstellen von Benutzeroberflächen (siehe http://www.ddj.com/184408553 ). Zu dieser Zeit wurde D-Flat in C geschrieben, weil Al Stevens die C-Programmierspalte für DDJ schrieb. Der Name C ++ wurde bereits vergeben und er hatte C-Sharp in Betracht gezogen, war jedoch überzeugt, dass bereits jemand daran gedacht hatte (siehe http://www.ddj.com/184410858 ). Meiner Meinung nach hat Al Stevens lange über den Namen C-Sharp nachgedacht, weil D-Flat keine Laune war und er so viel Spracherfahrung hat.


7

Angesichts der Tatsache, dass es sich um eine Programmierer-Website handelt, ist es möglicherweise interessant, die "echten Namen" aufzulisten, die Namen, die die Microsoft-Programmierer bei der Arbeit an den Projekten verwendet haben. Diese Namen werden in der Regel wie archäologische Aufzeichnungen im Quellcode für die CLR (Rotor), die SDK-Headerdateien und die Referenzquelle angezeigt.

C # begann als COOL (C-like Object Oriented Language). Die Rotor-Makefiles zeigen, dass früher C # -Code möglicherweise in Dateien mit der Dateinamenerweiterung .cool geschrieben wurde. Es gibt jedoch auch mehrere Stellen, an denen es COOLC heißt.

Die CLR hatte mehrere Namen. Es begann als ein Projekt innerhalb der Gruppe, die mit Windows 2000 COM + arbeitete. Der CLR-Quellcode enthält viele Verweise auf "ComPlus". Der Ausnahmecode für eine verwaltete Ausnahme lautet 0xe0434f4e, 0xe0 + "COM" +1. In der Datei WinError.h verwenden CLR-Fehlercodes "URT", "Universal Run Time". Die Kontraktion "Cor" erscheint an vielen Stellen in den Hosting-Schnittstellen "COM Object Runtime". CLR-Quellcode verwendet sehr häufig das EE-Akronym, das sich von COR unterscheidet, kurz für Execution Engine und Teil der Änderungen in der CLR-Codebasis, damit verwalteter Code ausgeführt wird.

Interne Projektnamen, die ich gesehen habe:

  • Rainier: Visual Studio 2002
  • Everett: Visual Studio 2003
  • Whidbey: Visual Studio 2005
  • Orcas: Visual Studio 2008
  • Hawaii: Visual Studio 2010 (sehr früh)
  • Rotor: Shared Source-Version der CLR
  • Avalon: WPF
  • Indigo: WCF
  • Yukon: SQL Server 2005
  • Katmai: SQL Server 2008
  • Strike: Eine benutzerdefinierte Debugger-Erweiterung zum Debuggen der ersten Version der CLR, die zu SOS (Son of Strike) entwickelt wurde.

3
EE ist keine "Ausführungs-Engine" im C # -Compiler, obwohl es in der CLR sein könnte, würde ich nicht wissen. Im C # -Compiler ist EE "Ausdrucksauswerter" - das EE-Zeug im Compiler sind die Teile des Compilers, die das Fensterverhalten "watch" und "local" im Debugger implementieren. Sie geben ihm beim Debuggen einen Ausdruck, und der EE bewertet ihn anhand des Kontexts des laufenden Programmstatus. Ich wäre (leicht) überrascht, wenn es in den CLR-Quellen etwas anderes bedeuten würde.
Eric Lippert

2
Die Eigenschaft "Dateibeschreibung" für die Informationsquelle "Dateiversionsinfo" in mscoree.dll lautet "Microsoft .NET Runtime Execution Engine".
Hans Passant


2

Das '#' soll eigentlich ein musikalisches scharfes Symbol sein - wie ++ anzeigt, dass C ++ C-erhöht ist, # anzeigt, dass C ++ inkrementiert ist oder C ++++; Eine Sprache mit C-Syntax, die übergeordnete Funktionen bietet.

Lesen Sie dazu den Wikipedia-Artikel .


1

Es ist nur ein Name. Das # -Zeichen stammt aus der Notenschrift, was bedeutet, dass C # (Cis) eine halbe Note über C liegt.

C # basiert teilweise auf C / C ++, aber auch auf Java und Pascal (Delphi). Wie Java ist C # eine objektorientierte Sprache, während C ++ und Pascal prozedurale Sprachen mit zusätzlichen Funktionen zur Objektorientierung sind.


1

C # ist ein musikalisch inspirierter Name und es gibt auch Polyphonic C #


1

Das '#' soll eigentlich ein musikalisches scharfes Symbol sein - wie ++ anzeigt, dass C ++ C-erhöht ist, # anzeigt, dass C ++ inkrementiert ist oder C ++++; Eine Sprache mit C-Syntax, die übergeordnete Funktionen bietet.


1
Warten Sie, ist dies nicht nur eine Kopie der Antwort, die @ljs 14 Monate zuvor hinzugefügt hat?
Mike Devenney

1

Beachten Sie zusätzlich zu den an anderer Stelle angegebenen musikalischen Referenzen, dass '♯' und '#' wie zwei überlappende '+' - Symbole aussehen.

Am Ende war es zwar eine Marketingentscheidung, aber keine technische.

(Nebenbei bemerkt: Zu der Zeit dachten wir, es sei eine schlechte Wahl, weil Suchmaschinen "Sonderzeichen" ignorieren würden und Sie Ergebnisse für "C" erhalten würden. Jetzt sind Suchmaschinen schlauer.)


3
Es sind 4 +Symbole, die sich tatsächlich überlappen :)
Gregory Pakosz

2
@ GregoryPakosz: Nur zwei, obwohl sie asymmetrisch sind und es unklar ist, wo sie sind. Es könnte eine der oberen linken sein, die sich weiter nach rechts und unten als nach oben und links erstreckt, und eine andere nach unten und rechts davon, die sich weiter nach oben und links als nach unten und rechts erstreckt, oder die beiden Symbole könnten in sein unten links und oben rechts.
Supercat

-1

Nun, während c ++ c mit "Object Oriented Extension" ist, basiert c # andererseits nicht nur auf c der Syntax und ist total objektorientiert und kompiliert nach msil, während natives c ++ nach nativem Binärcode kompiliert ...


2
total objektorientiert?
Kugel

1
Alles ist in einer weichen Klasse / Struktur enthalten
Peter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.