Delphi vs C # para programación GUI [cerrado]

20

Vengo de PHP y Python con poco conocimiento de C, he hecho muchas aplicaciones basadas en la web ahora estoy pensando en la aplicación de escritorio para la plataforma de Windows.

Un amigo me dijo que fuera por Delphi y otros dicen que C # es lo mejor, bueno, lo que estoy buscando es

  1. Sencillez
  2. Productividad
  3. Buena documentación API
  4. Velocidad
  5. Arrastrar y soltar
  6. Multi Threading & Good Network API

Gracias

elf1984
fuente

Respuestas:

20

Delphi, definitivamente:

  1. Simplicidad: la sintaxis de Delphi se basa en Pascal, que fue diseñado explícitamente para que sea fácil de aprender, y puede cumplir esa promesa. C # se basa en la familia C, que ... bueno ... no lo era .
  2. Productividad: Delphi es descendiente de Turbo Pascal, y todavía tiene el compilador más rápido conocido por el hombre, lo que aumentará enormemente su productividad. Además, tiene el depurador. Visual Studio desea que su depurador sea como cuando crezca. Especialmente en la última versión de Delphi, la depuración es mucho más fácil.
  3. Buena documentación de API: "API" es una palabra bastante vaga en estos días, que abarca todo tipo de cosas. Supongo que te refieres a bibliotecas, y aquí es una especie de cambio. Tanto el framework .NET como las bibliotecas estándar de Delphi tienen buena documentación en línea y documentación fuera de línea mediocre y difícil de usar. (Una consecuencia de que el equipo de Delphi eligió usar el mismo horrible sistema de ayuda que Visual Studio, del que con suerte se alejarán en la próxima versión).
  4. Velocidad: Delphi gana fácilmente. Se compila en código nativo (ejecución más rápida y arranque mucho más rápido porque no hay fase JIT), y no utiliza punteros administrados, por lo que el acceso a objetos es más rápido y menos amigable con la caché.
  5. Arrastrar y soltar: una función integrada de VCL.
  6. Subprocesamiento múltiple: Delphi tiene una clase de subproceso integrada, pero si desea hacer cosas complejas con concurrencia, hay mejores opciones. Primoz Gabrijelcic, miembro de la comunidad de Delphi, ha estado trabajando en una excelente biblioteca de concurrencia a la que he ayudado a contribuir. Proporciona soporte de alto nivel para objetivos comunes de subprocesos, como agrupación de tareas, bucles FOR paralelos y procesos de canalización de etapas múltiples.
  7. Buena API de red: Delphi se entrega con Indy, una biblioteca madura de código abierto que hace que las conexiones a Internet sean fáciles de configurar y administrar. Lo usamos en el trabajo para proporcionar la capa de comunicaciones para una aplicación líder en la industria de la que probablemente nunca haya oído hablar a menos que trabaje en medios de difusión.
  8. Implementación: esto no estaba en su lista, pero vale la pena mencionarlo. Todavía hay sistemas por ahí que no tienen el marco .NET preinstalado. Por defecto, Delphi compila su biblioteca estándar en el EXE, luego usa un enlace inteligente para eliminar las partes que no usa, lo que resulta en pequeños EXE que no dependen de bibliotecas de tiempo de ejecución masivas que pesan cientos de MB que sus usuarios tendrán. para descargar e instalar por separado.
Mason Wheeler
fuente
2
@Elf: Puede haber más trabajos disponibles en C #, pero también hay muchas más personas compitiendo por ellos. Los desarrolladores expertos de Delphi no tienen problemas para encontrar trabajo.
Mason Wheeler
55
C # no se basa solo en C ++, sino también en Delphi y Java. También aprendí programación en Pascal, y veo mucha de su filosofía en C #. Con respecto a los punteros administrados, lo tiene al revés, no hay gastos generales de acceso a los datos a través de punteros administrados, y cambiarlos es más rápido que en un sistema que utiliza el recuento de referencias.
Guffa
12
La sintaxis de Delphi es fácil de aprender es una declaración completamente subjetiva. Me enfureció la sintaxis de Delphi, y decidí no aprenderla por ese motivo.
Tjaart
8
-1: Esta respuesta está sesgada como loca. El depurador de Visual Studio es al menos tan bueno, si no mejor, que Delphi. La documentación de Delphi es inexistente en comparación con MSDN como la mejor documentación de la historia.
marco-fiset
44
Despliegue - falla total. Deplhi requiere Windows, por lo que es un paso atrás de C #. C # es portátil y multiplataforma gracias a Mono. Delphi no lo es. No necesita comprar Windows para ejecutar un programa escrito en C # que no utiliza explícitamente las bibliotecas Win32. Simplicidad, también fracaso. La sintaxis de C # es muy fácil de leer, muy concisa y fácil de escribir. Delphi no lo es. Documentación de API - ¡demonios no! Si escribo "servicio web C #" obtengo toneladas de resultados relevantes. No hay tales cosas para Delphi. Velocidad, subprocesos, especialmente el depurador, también falso.
TheLonelyCoder
15

C # generalmente tendrá una base de usuarios más grande, más desarrollo en el futuro y las herramientas para el desarrollo de RAD a través de Visual Studio son increíbles.

  1. La sintaxis será similar a la que usó en PHP y C.
  2. Visual Studio con sus herramientas e IntelliSense es extremadamente productivo.
  3. MSDN
  4. Una vez más, VS tools + Intellisense, pero la velocidad realmente proviene de la familiaridad de su idioma y sus características.
  5. Diseñador VS para WinForms, WPF.
  6. System.Threading y System.Net

No tengo mucha experiencia con Delphi, y solo estoy hablando de mis experiencias con C # en general. Donde trabajo, tengo plazos extremadamente ajustados previstos por los no programadores, y puedo bombear aplicaciones de escritorio de línea de negocio extremadamente rápido. En las últimas tres semanas, pasé de la especificación al despliegue en dos aplicaciones LOB de winforms. La productividad para el desarrollo de GUI en C # con VS es una locura.

bunglestink
fuente
44
Gracias, según una publicación en daniweb.com/forums/thread54305.html , la integración de API Win32 y la completitud en Delphi supera incluso C
elf1984
2
Realmente debería investigar en Delphi si cree que C # es el mejor entorno de desarrollo para crear aplicaciones de escritorio rápidamente. Personalmente odio cuando tengo que crear cosas de escritorio con Visual Studio, pero hoy en día no siempre tengo una opción (desafortunadamente).
Wouter van Nifterick
1
Las herramientas RAD (diseño de formularios) de Visual Studio apestan, francamente.
Warren P
1
@WarrenP ¿Podrías dar más detalles?
Tjaart
1
¡Cree una aplicación de servidor en C # y cree una aplicación de escritorio en Delphi, porque delphi produce código nativo que es más difícil de descifrar!
justyy
14

Ambos tienen los 6 puntos que desea, pero creo que C # tiene la ventaja en la mayoría, si no en todos.

Para pasar por los puntos:

  1. Delphi requiere administración de memoria, por lo que podría argumentar que solo hace que C # sea más simple. La respuesta aceptada menciona la sintaxis aquí, bueno, la sintaxis de C # es similar tanto a PHP como a Java, por lo que si desea comenzar a trabajar más rápido desde cualquiera de esos fondos, entonces C # tiene la ventaja.
  2. Productividad, creo que puedes hacer más cosas más rápido en C #. La biblioteca .net le brinda tanto que en los viejos tiempos, tenía que buscar componentes de Delphi de terceros para proporcionar.
  3. Documentación, Delphi's siempre fue bueno, MSDN es mejor, además encontrará una comunidad más grande para soporte, vea mi análisis de Stack Overflow a continuación.
  4. Velocidad, Delphi puede tener la ventaja en esto, pero el ensamblaje triunfa sobre todo, por lo que no suele ser una buena razón para elegir un idioma. Una cosa que señalaría es que he escuchado a personas citar que C # es interpretado. No lo es, nunca lo ha sido, siempre ha tenido un JIT.
  5. Arrastrar y soltar, disponible en ambos.
  6. Multithreading, Delphi es bueno, pero C # es excelente con construcciones integradas como lock(){}extensiones paralelas y lo nuevo await.

Punto extra, el título de la pregunta es programación de GUI, para esto soy un gran fanático de .nets WPF, que, lo único que Delphi tenía que estaba a medio camino era Bold , que era un dolor para domar y ahora estaba muerto.

Tamaño de la comunidad, al comparar el número de preguntas sobre esto y el desbordamiento de pila en las etiquetas Delphi y C #, verá que el tamaño de la comunidad C # es mucho mayor.

Desbordamiento de pila:

  • Delphi 17K
  • C # 367K
  • Java 312K
  • c 73K

He agregado c, para mostrar que no es un problema con la edad de los idiomas y Javasolo para comparar.

No soy un fanático de C # o Java, fui un gran admirador de Delphi, desarrollador profesional puro de Delphi durante 7 años, pero realmente lo arruinaron desde 2005 en adelante con su incursión en .net que arruinó la estabilidad del IDE incluso para compilación nativa de 32 bits. Delphi 7 era el pico del lenguaje en mi opinión.

Weston
fuente
¿Qué tal una respuesta con ese voto negativo?
Weston
1
No soy el votante negativo, pero diría que no estás respondiendo la pregunta. Solo está evaluando la popularidad de Delphi en stackoverflow. Seguro que haces un punto, pero en mi humilde opinión es bastante menor. Ser el único en utilizar una tecnología no siempre es algo malo.
Simon Bergot
@Simon fair point, ahora he respondido a todos los puntos e integro el análisis de la cantidad de preguntas en un punto más amplio sobre el tamaño de la comunidad.
Weston
Se podría argumentar que el lenguaje que genera más preguntas es más complicado de usar. ;-) ¿En qué se parecía Bold a WPF? He usado WPF y no vi ninguna similitud.
Jim McKeeth
@JimMcKeeth Tanto Bold como WPF proporcionan un marco para vincular datos a los controles de la interfaz de usuario para que cuando los datos cambien, la interfaz de usuario se actualice y viceversa si es necesario.
Weston
8

Cuando estaba en la universidad, me enseñaron programación con Delphi. Estoy un poco oxidado, pero actualmente estoy leyendo mucho código Delphi para portarlo a una aplicación C #.

Prefiero el OO con inclinaciones funcionales de C # sobre el procedimiento con inclinaciones OO de Delphi. Debe considerar cómo prefiere codificar al elegir entre ellos. No creo que haya mucho en lo que respecta a la simplicidad, solo lo que le resulta más fácil. Lo mismo vale para la productividad.

En términos de RAD (desarrollo rápido de aplicaciones) no hay mucho entre winforms y el diseño de GUI de Delphi. Me recuerdan el uno al otro.

WPF, por otro lado, es algo que prefiero a ambos por su estilo declarativo.

No creo que haya mucha diferencia entre la calidad y la cobertura de la documentación proporcionada por el proveedor para C # o Delphi. Creo que encontrará más información que no es de proveedores sobre C #, pero eso podría deberse a que realmente no he buscado mucho en el camino de Delphi.

No he tenido que hacer ninguna programación roscada con Delphi, y cualquier red que hice fue hace años y no puedo recordar.

Las bibliotecas .NET para procesamiento paralelo, eventos y otros trabajos de subprocesamiento son buenas. Entonces no te perderás por ahí. Existe una gran cantidad de soporte cuando se trata de redes, por lo que nuevamente es muy recomendable.

En general, me gustaría ir con C # /. NET. Esto se debe en parte a WPF, pero también prefiero el código que escribo en C #. Por lo que sé, Delphi no tiene nada como Linq, lo cual me parece invaluable.

Matt Ellen
fuente
Gracias por tu maravillosa respuesta. ¿Qué libro leíste como principiante? ahora comenzaré C # 4 y .NET 4 en VS 2010
elf1984
44
Tenga cuidado al intentar portar una aplicación de Delphi a C #. Cada vez que escucho de alguna compañía que lo intenta, terminan validando cada punto que Joel hizo en "Cosas que nunca debes hacer, Parte 1" y terminó en un desastre para el producto y la compañía que lo posee.
Mason Wheeler
Lo siento, realmente no puedo aconsejarle sobre un libro para principiantes para c # 4. No estoy seguro de tener uno cuando comencé c # (en los 1.1 días. Estoy seguro de que hubo algunos, pero no leí ninguno). Cuando comencé, creo que el primer libro que utilicé fue Teach Yourself C ++ en 21 Days de Jesse Liberty, que leí antes de comenzar la universidad. Me llevó años superarlo, pero aprendí mucho. Otro buen libro que tuve fue Discover Delphi, ese fue el libro del curso. Un libro que recomiendo es Object Thinking de David West, ya que realmente te hace pensar en OOP y OOD, también Effective C # de Bill Wagner ...
Matt Ellen
... No son realmente libros para principiantes, pero una vez que tienes los fundamentos, entonces tienen excelentes consejos y sugerencias sobre cómo convertirte en un mejor programador.
Matt Ellen
Por cierto, si estás buscando LINQ en Delphi, echa un vistazo a la biblioteca DeHL de Alexandru Ciobanu. Proporciona colecciones y operadores de estilo LINQ. La sintaxis LINQ (el material pseudo-SQL) aún no está en Delphi, pero aparentemente el equipo compilador está trabajando en ello para un lanzamiento futuro.
Mason Wheeler