¿De qué maneras específicas influyó Delphi en el lenguaje C #?


8

Estoy buscando específicamente las influencias del lenguaje (en oposición al marco). A primera vista, C # parece ser una evolución de C / C ++ o Java. Pero sabemos que C # tiene el mismo diseñador que Delphi, e incluso reconoció algunas similitudes y dijo que "las buenas ideas no desaparecen". El único ejemplo que veo de algo en C # que no está en Java o C / C ++ son las propiedades. ¿Es asi? ¿Hay otros?


Es una verdadera pena que algunos de ellos lo hayan hecho. Mire cuánto tiempo le tomó a la gente de .NET reimplementar las capacidades dinámicas que Delphi's tenía disponibles en el varianttipo desde casi siempre ...
Mason Wheeler

Afortunadamente no se quedaron con el COMIENZO y el FIN ...
Newtopian

2
@Newtopian: ¿Entonces prefieres la puntuación sobre las palabras legibles? ¿Más de un tipo de programador APL?
Jim McKeeth

Turbo Pascal (antepasado de Delphi) fue escrito por Anders Hejlsberg , arquitecto jefe del lenguaje C # en Microsoft. Conecta los puntos.
Robert Harvey

55
APERSANDJim COLON yesCOMMA me gusta mucho más sobre su puntuacion pronounciationEXCLAMATIONMARK Inglés porque creo que hace que todo sea mucho más readablePOINT COLON DASH COMA
Newtopian

Respuestas:


4

No es mucho lo que es visible para el programador, pero detrás de escena, bastante, pero muchos de ellos estaban en el diseño de control de formularios IDE y Windows, en lugar del lenguaje en sí, he estado usando Delphi 7 durante aproximadamente 10 años y C # durante aproximadamente 5, así que he recogido algunos:

1) La propiedad de anclajes es idéntica a Delphi

2) La posición predeterminada del formulario

3) La jerarquía de objetos para los controles.

4) El diseñador de formularios en general se siente muy similar: no puedo señalarlo con precisión.

He notado algunas cosas en el lenguaje en sí:

1) Ciertos tipos de datos, también conocidos como Moneda / Decimal

Algunas cosas en el lenguaje que son muy diferentes:

1) Herencia del constructor (Delphi solía heredar todos los constructores a los objetos base que no tenían que definirse nuevamente en las clases descendientes)

2) Delphi tenía la capacidad de degradar la visibilidad de un método o propiedad en las clases descendientes, pero mantener intacto el polimorfismo, C # no permite esto (lo extraño mucho)

Probablemente me haya perdido un montón de cosas, agréguelas si piensa en ellas.


Deseo que los diseñadores de idiomas reconozcan como distinta la interfaz del mundo exterior heredada de la clase base, la interfaz del mundo exterior de la clase derivada y la interfaz que la clase base presenta a la clase derivada. Si varias clases tendrán conjuntos de habilidades superpuestas, es mucho más fácil envolver una clase base común o interfaz que exponga todas esas habilidades junto con el miembro para decir cuáles son realmente utilizables, que envolver una variedad de clases que exponen diferentes combinaciones de esas habilidades; sin embargo, no hay razón por la cual las clases derivadas deberían tener que ...
supercat

... exponer, como miembros de su propio tipo (en oposición al tipo base), miembros que en realidad no serán utilizables con su propio tipo. Si un contrato de clase base dice que cualquier clase derivada cuya CanWoozlepropiedad devuelve verdadero debe proporcionar una Woozle()implementación utilizable , pero una clase derivada en particular siempre devuelve falso CanWoozley tiene una Woozleimplementación legítimamente inutilizable , no hay razón para que la clase derivada deba exponer a su Woozlemiembro .
supercat

2

Anders estuvo con Borland hasta Delphi 3: fue el arquitecto original de Delphi y de Turbo Pascal. Si carga Delphi 1, abra el cuadro acerca de y escriba Y obtendrá una imagen de Anders que le guiña un ojo.

Cuando salió de Borland para MS, inicialmente hizo J ++ que "molestó" un poco a Sun Luego creó C #. Los puntos a los que debe unir van desde Borland Object Pascal -> Java / J ++ -> C #

C # es el intento de Microsoft de crear una mejor Java. Como viejo codificador de Delphi, aceptaría que probablemente tuvieron éxito.


1
No estoy de acuerdo con que C # sea un intento de "mejorar Java". Aunque hay expertos en Java en el equipo de diseño de C #, rara vez hacemos comparaciones explícitas con Java al diseñar funciones de lenguaje.
Eric Lippert
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.