Origen del nombre del lenguaje C #


75

Soy un programador de C y C ++ y ahora estoy tratando de aprender C #. He comprado el libro Professional C # de Wrox publications.

Al migrar de C a C ++, tenía una duda de por qué ++se agregó a C. Más tarde me di cuenta de que ya ++es un operador de incremento y se agregó a C solo para proporcionar una 'Extensión orientada a objetos'.

En C #, ¿cuál es el significado de #?


26
Dar la oportunidad a los que odian el Do sostenido de llamarlo D bemol.
mmx

1
El origen de las ventajas en C ++ no está relacionado con el operador de incremento. AFAIK Bjarne lo llamó 'C con clases' durante las primeras etapas, hasta que un compañero se cansó y comenzó a llamarlo 'C plus plus'.
Cecil tiene un nombre

2
En realidad, originalmente estaba destinado a pronunciarse C-hash. Al igual que en, intentamos mejorar C y lo hicimos un hash completo ;-)
Chinmay Kanchi

8
En realidad, originalmente estaba destinado a pronunciarse C-OCTOTHORPE, como en, nos gusta decir OCTOTHORPE. Pruébelo: octothorpe octothorpe octothorpe!
Eric Lippert

Este artículo con fecha, argumenta bien - theregister.co.uk/2002/07/04/why_microsoft_makes_a_complete
Biswajeet

Respuestas:


118

El nombre "C sostenido" se inspiró en la notación musical donde un sostenido indica que la nota escrita debe tener un tono medio tono más alto. [6] Esto es similar al nombre del lenguaje de C ++, donde "++" indica que una variable debe incrementarse en 1. El símbolo agudo también se parece a una ligadura de cuatro símbolos "+" (en una cuadrícula de dos por dos), además lo que implica que el lenguaje es un incremento de C ++.

Debido a limitaciones técnicas de visualización (fuentes estándar, navegadores, etc.) y al hecho de que el símbolo nítido (♯, U + 266F, MUSIC SHARP SIGN) no está presente en el teclado estándar, el signo de número (#, U + 0023 , SIGNO NUMÉRICO) fue elegido para representar el símbolo agudo en el nombre escrito del lenguaje de programación. [7] Esta convención se refleja en la Especificación del lenguaje C # ECMA-334.3 Sin embargo, cuando es práctico hacerlo (por ejemplo, en la publicidad o en el arte de la caja [8]), Microsoft usa el símbolo musical deseado.

De Wikipedia .

Además, en esta entrevista , Anders Hejlseberg dice:

"Queríamos tener una referencia a la herencia C del lenguaje en el nombre y finalmente nos decidimos por C #. Algunos otros candidatos que recuerdo fueron eC, Safe C, C-cuadrado, C-cube, C-prime, C-star y Cesium ... Mirando y esos ahora estoy bastante feliz con nuestra elección ".

Finalmente, Naomi Hamilton le hizo a Anders Hejlseberg la pregunta directamente :

[NH] ¿Por qué el lenguaje originalmente se llamó Cool y qué promovió el cambio a C #?

[AH] El nombre en clave era Cool, que significa "C como lenguaje orientado a objetos". Nos gustó ese nombre: todos nuestros archivos se llamaban .cool y ¡eso fue genial! Consideramos seriamente mantener el nombre del producto final, pero simplemente no era factible desde una perspectiva de marca registrada, ya que había demasiadas cosas interesantes por ahí.

Así que el comité de nomenclatura tuvo que ponerse a trabajar y nos gustó la idea de tener una referencia inherente a C allí, y un pequeño juego de palabras en C ++, ya que puede ver el signo agudo como cuatro ventajas, por lo que es C ++++ . Y el aspecto musical también fue interesante. Así que fue C #, y de hecho estoy muy feliz con ese nombre. Nos ha servido bien.


10
Nombrado C # porque "Moonlight Sonata" de Beethoven, el favorito de Bill Gates y Anders Hejlsberg, está escrito en C # Minor. Anders, un danés, también pudo haber estado al tanto del debate académico en curso sobre si el rey Federico VI de la Corte de Dinamarca había sido una de las diez "cortes reales" que se suscribieron a la Missa Solemnis de Beethoven, Opus 123: tal vez estaba al tanto de que recientemente La investigación académica confirmó que la suscripción danesa existe en un archivo de Copenhague. Cuando se nombró a C #, Jon Skeet todavía estaba solo en "forma humana inactiva"; aún no transformado metafísicamente en el Hierofante del DotNetVerse. :)
BillW

8
Por cierto, el directorio en las fuentes de C # que contiene las suites de prueba de registro todavía se llama "safec". Nadie se molestó en cambiarlo.
Eric Lippert

1
Estoy mayormente de acuerdo con Anders, pero C-prime, eso es bastante bueno.
Michael Petrotta

Secretamente esperaba tener razón en mi suposición de que iban a utilizar C ++ ++ (entonces, C ++ se incrementó una vez más, pero eso parece estúpido) por lo que organizaron los signos + en una cuadrícula de 2 por 2. ¡Impresionante tener mis sospechas confirmadas!
Mike Devenney

7

En 1991, Al Stevens introdujo D-Flat en Dr. Dobbs Journal (DDJ); un marco basado en DOS, impulsado por eventos para crear interfaces de usuario (consulte http://www.ddj.com/184408553 ). En ese momento, D-Flat estaba escrito en C, porque Al Stevens escribió la columna de programación en C para DDJ. El nombre C ++ ya estaba tomado y había considerado C-Sharp, pero estaba convencido de que alguien ya lo había pensado (ver http://www.ddj.com/184410858 ). Mi opinión es que Al Stevens había estado pensando en el nombre C-Sharp durante mucho tiempo, porque D-Flat no era un capricho y tiene mucha experiencia con el idioma.


7

Dado que este es el sitio web de un programador, quizás sea interesante enumerar los "nombres reales", los nombres que los programadores de Microsoft usaron cuando trabajaron en los proyectos. Estos nombres tienden a aparecer, como registros arqueológicos, en el código fuente del CLR (Rotor), los archivos de encabezado del SDK y la Fuente de referencia.

C # comenzó como COOL (lenguaje orientado a objetos similar a C). Los archivos MAKE de Rotor muestran que el código C # temprano podría haberse escrito en archivos con la extensión de nombre de archivo .cool. Sin embargo, también hay varios lugares donde se denomina COOLC.

El CLR tenía varios nombres. Comenzó como un proyecto dentro del grupo que trabajaba en COM + de Windows 2000, hay muchas referencias a "ComPlus" en el código fuente de CLR. El código de excepción para una excepción gestionada es 0xe0434f4e, 0xe0 + "COM" +1. En el archivo WinError.h, los códigos de error CLR usan "URT", "Universal Run Time". La contracción "Cor" aparece en muchos lugares en las interfaces de alojamiento, "COM Object Runtime". El código fuente de CLR comúnmente usa el acrónimo EE, distinto de COR, abreviatura de Execution Engine y parte de los cambios en la base del código CLR para que ejecute código administrado.

Nombres de proyectos internos que he visto:

  • Rainiero: Visual Studio 2002
  • Everett: Visual Studio 2003
  • Whidbey: Visual Studio 2005
  • Orcas: Visual Studio 2008
  • Hawái: Visual Studio 2010 (muy temprano)
  • Rotor: versión de origen compartido del CLR
  • Avalon: WPF
  • Índigo: WCF
  • Yukón: SQL Server 2005
  • Katmai: SQL Server 2008
  • Strike: una extensión de depuración personalizada utilizada para depurar la primera versión de CLR, evolucionada a SOS (Son of Strike).

3
EE no es un "motor de ejecución" en el compilador de C #, aunque podría estar en CLR, no lo sabría. En el compilador de C #, EE es un "evaluador de expresiones"; el material de EE en el compilador son las partes del compilador que implementan el comportamiento de la ventana de "observación" y "local" en el depurador; le da una expresión en el momento de la depuración, y EE la evalúa contra el contexto del estado del programa en ejecución. Me sorprendería (levemente) si significara algo diferente en las fuentes de CLR.
Eric Lippert

2
La propiedad Descripción de archivo para el recurso de información de versión de archivo en mscoree.dll es "Microsoft .NET Runtime Execution Engine".
Hans Passant


2

El '#' está destinado a ser un símbolo musical agudo, ya que ++ indica que C ++ se incrementa en C, # indica que C ++ se incrementa, o C ++++; un lenguaje con sintaxis C, que ofrece una funcionalidad de nivel superior.

Consulte el artículo de wikipedia sobre esto.


1

Es solo un nombre. El carácter # se toma de la notación musical, lo que significa que C # (C sostenido) es media nota por encima de C.

C # se basa en parte en C / C ++, pero también en Java y Pascal (Delphi). Como Java, C # es un lenguaje orientado a objetos, mientras que C ++ y Pascal son lenguajes de procedimiento con capacidad adicional para la orientación a objetos.


1

C # es un nombre inspirado musicalmente y también hay Polyphonic C #


1

El '#' está destinado a ser un símbolo musical agudo, ya que ++ indica que C ++ se incrementa en C, # indica que C ++ se incrementa, o C ++++; un lenguaje con sintaxis C, que ofrece una funcionalidad de nivel superior.


1
Espera, ¿no es esto solo una copia de la respuesta que @ljs agregó 14 meses antes?
Mike Devenney

1

Además de las referencias musicales señaladas en otro lugar, observe que '♯' y '#' parecen dos símbolos '+' superpuestos.

Al final, aunque fue una decisión de marketing, no técnica.

(Como comentario al margen: en ese momento, pensamos que era una mala elección porque los motores de búsqueda ignorarían los caracteres "especiales" y obtendría resultados para la 'C'. Ahora, los motores de búsqueda son más inteligentes).


3
en realidad son 4 +símbolos superpuestos :)
Gregory Pakosz

2
@GregoryPakosz: Solo dos, aunque son asimétricos y no está claro dónde están. Podría ser uno en la parte superior izquierda que se extiende más hacia la derecha y hacia abajo que hacia arriba y hacia la izquierda, y otro hacia abajo y a la derecha que se extiende más hacia arriba y hacia la izquierda que hacia abajo y hacia la derecha, o los dos símbolos podrían estar en la parte inferior izquierda y superior derecha.
supercat

-1

bueno, mientras que c ++ es c con "Object Oriented Extension", c # por otro lado no se basa en c solo la sintaxis y está totalmente orientado a objetos y se compila en msil mientras que el nativo c ++ se compila en código binario nativo ...


1
todo está contenido en algún software de clase / estructura
Peter
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.