Delphi versus C ++ Builder - ¿Cuál es la mejor opción para un programador de Java que hace Win32?

StackOverflow https://stackoverflow.com/questions/180358

Pregunta

Soy un programador Java bastante experimentado que ha estado haciendo un montón de cosas sobre Win32 en los últimos años. Principalmente he estado usando VB6, pero realmente necesito moverme a algo mejor.

He pasado más o menos un mes jugando con Delphi 2009. Me gustan las cosas de VCL GUI, Delphi parece más adecuado para las llamadas de API de Windows que para VB6, me gusta mucho el hecho de que es mucho mejor en OO que en VB6, y yo como el marco de pruebas unitarias que viene con el IDE.

Pero realmente me cuesta el hecho de que no haya un recolector de basura muy utilizado para Delphi. Tener que liberar cada objeto manualmente o usar interfaces para todo parece tener un impacto bastante grande en la forma en que puedes hacer las cosas de manera efectiva en una Orientación a objetos. Además, no estoy especialmente interesado en la sintaxis, o en el hecho de que tiene que declarar las variables en la parte superior de un método.

Puedo manejar a Delphi, pero me pregunto si C ++ Builder 2009 podría ser una mejor opción para mí. Sé muy poco sobre C ++ Builder y C ++, pero también sé muy poco sobre Delphi. Sé que hay mucho en el lenguaje C ++, pero sospecho que solo es necesario conocer un subconjunto para hacer las cosas de manera productiva ... He oído que el C ++ de hoy en día es mucho más productivo para programar que el C ++ de Hace 10 años.

Estaré haciendo nuevos desarrollos solo para no tener que dominar todos los aspectos del lenguaje C ++. Si puedo encontrar un equivalente para cada una de las funciones de lenguaje de Java, seré lo suficientemente feliz. Podría empezar a mirar un poco más las cosas más avanzadas. (Lo siento si eso suena dolorosamente ingenuo, si es así, por favor, hágamelo saber).

Entonces, para un programador de Java que es nuevo tanto para Delphi como para C ++ Builder, ¿cuál consideraría que es una mejor opción para el desarrollo productivo de exs y dlls de Win32, y por qué? ¿Qué ves para ser los pros y los contras de cada uno?

¿Fue útil?

Solución

Delphi o C ++ Builder: ¡es una elección difícil!

Como saben, básicamente son muy similares, desde el punto de vista de IDE y RAD.

Los pros y los contras de cada uno, independientemente de los antecedentes, son algo así. Ambos comparten un gran diseño y marco de formulario (VCL) RAD de dos vías que son ideales para el desarrollo nativo de Windows.

Delphi:

  • PARA: Comunidad grande, activa y entusiasta
  • PARA: Delphi 2009 es la mejor versión desde hace muchos años
  • PARA: Delphi " unidades " hacer que los pares de archivos fuente / cabecera de C parezcan arcaicos
  • EN CONTRA: No hay destrucción automática a medida que los objetos salen del alcance, por lo tanto, hay un montón de 'finalmente en su código
  • EN CONTRA: el idioma puede ser 'wordy', que es una cuestión de gusto
  • EN CONTRA: el uso de DLL de terceros o bibliotecas en otros idiomas (especialmente C) requiere que se escriban los archivos de encabezado de Delphi

C++Builder

  • PARA: C ++ Builder 2009 es probablemente la mejor versión de todos los tiempos
  • PARA: el lenguaje RAII simplifica enormemente la administración de la memoria
  • PARA: Las plantillas son increíblemente útiles y potentes, incluso si la implementación de C ++ Builder tiene algunos errores con ellos.
  • PARA: Soporte para BOOST y otras bibliotecas modernas basadas en plantillas (aunque el soporte de Boost no es 100%)
  • PARA: La gran interoperabilidad con Delphi significa que la mayoría de los componentes de Delphi se pueden usar fácilmente.
  • PARA: Fácil de usar con DLL / bibliotecas de terceros con encabezados C / C ++.
  • PARA: C ++ puede verse mejor en un CV que Delphi.
  • EN CONTRA: CB2009 es " solo unicode " - Las implicaciones de esto para la portabilidad del código son diferentes y menos bien pensadas que para Delphi
  • EN CONTRA: la base de usuarios de C ++ Builder es mucho más pequeña que Delphi. Tal vez el 20% o menos.
  • EN CONTRA: Borland / Inprise casi mató a BCB hace unos años, y solo resucitó después de grandes esfuerzos de la comunidad. (Sin embargo, el compromiso de Codegear / Embarcadero parece impresionante)
  • EN CONTRA: C ++ Builder no está en la parte superior de la pila dentro de Codegear.
  • EN CONTRA: los proveedores de componentes de terceros no siempre entienden / apoyan C ++ Builder

Eso es todo. Solo para indicar mi posición, soy un usuario feliz de BCB2007 / 2009 (desde BCB5), y también con poca frecuencia utilizo Delphi. Hace unos años, consideré un cambio de C ++ a Delphi, pero la falta de lenguaje RAII fue lo único que me resultó difícil de aceptar.

Otros consejos

Vaya con Delphi y puede usar la API del recolector de basura Boehm escrita por Barry Kelly para que pueda tener recolección de basura en Delphi. Barry escribió esto antes de ir a trabajar para CodeGear como un arquitecto compilador. Tiene problemas con aplicaciones realmente grandes y lo más probable es que no funcione con Delphi de 64 bits. Habla un poco sobre esto en esta entrevista de podcast .

Incluso si no usas el gestor de memoria de recolección de basura, recomendaría Delphi sobre C ++. La única ventaja que C ++ le brinda para el desarrollo general es la sintaxis de corsé. Si no te importa la sintaxis de Delphi, para la mayoría de las cosas, la encontrarás mejor. Concedido, C ++ Builder tiene la totalidad de Delphi VCL y RTL, por lo que no es tan malo como Visual C ++, pero sigo pensando que Delphi sería una mejor opción.

Para los complementos de Excel (como mencionó en su comentario), recomendaría Delphi sobre C ++ Builder porque tiene mejor soporte de COM (que creo que necesita para complementos de Excel).

Delphi será mucho más fácil para usted llegar a un acuerdo, seguro que tiene que administrar su memoria, pero es muy simple

MyObj = TMyObj.Create;

try
  MyObj.DoSomething;
finally
  MyObj.Free;
end

En Delphi, todos tus objetos se asignan en el montón, por lo que la regla es muy simple: si la creas, la liberas.

C ++ con su pila y sus objetos basados ??en el montón significa que tiene un poco más que aprender y más posibilidades de meterse en problemas.

Después de trabajar con los complementos de Borland C y C ++ desde BCC 4.1 / DOS y Delphi desde el 3.0 hasta el 2007, puedo decirte honestamente que de todos modos te espera una gran aventura. Pasar de C / C ++ en Borland's Builder y RAD IDE es un cambio de paradigma sustancial (y curva de aprendizaje) de VC ++, C ++ y .NET de Microsoft (han usado VC desde la primera versión de MS-DOS: las mini carpetas de tres anillos beige).

La elección entre C ++ y Delphi es una que sugiero que haga después de mojarse los pies en algunos proyectos pequeños o medianos en ambos idiomas. Comencé con un programador en C y después de unos cinco años cambié a Delphi (V3.0) cuando el VCL simplemente hizo que la programación de Windows fuera mucho más fácil y más productiva.

Tenga cuidado, Delphi es un lenguaje seductor para programadores que vienen de otros lenguajes como COBOL, FORTRAN, VisualBasic porque su sintaxis y reglas de código impone un tipo de disciplina que lo mantiene fuera de problemas. La brusquedad y la potencia del metal en bruto de C lo convierten en un gran lenguaje de programación de sistemas (controladores de dispositivo, código O / S, programación integrada en tiempo real), pero en manos inexpertas puede morderlo.

El C ++ Builder de Borland (VCL de Delphi agregado al compilador de C ++) quita muchos de los bordes afilados de C ++ y es mi segundo idioma favorito. Desde Borland agregó soporte .NET a ambos idiomas hay un fuerte argumento para usar Builder en lugar de VC ++ para la programación de marcos de MS. Aunque C # tiene una buena cantidad de "simpatía" incorporada en comparación con C ++, si me presionaran, me quedaría con Delphi o Builder si estuviera empezando.

Para aprender las cuerdas, para la creación de prototipos y los programas de concepto rápido, simplemente no existe un lenguaje que pueda vencer a Delphi, especialmente con la VCL y los componentes de terceros. Sin exageraciones, solo hechos.

Personalmente, creo que hay otras consideraciones importantes aparte de las diferencias entre los idiomas. Por ejemplo, el IDE de Delphi es totalmente increíble para crear GUI de una manera WYSIWYG. No he usado el IDE del generador de C ++, pero me sorprendería mucho si tuviera un generador de GUI que fuera tan bueno como Delphi.

Aunque superficialmente la sintaxis de C ++ se parece más a la de Java, el modelo de objetos de Delphi es en realidad más cercano al de Java. Aunque los punteros existen en Delphi, en la práctica las referencias a objetos (como las de Java) se usan el 99% del tiempo. Incluso en C ++ moderno, no creo que sea posible evitar los punteros. No es que haya algo malo con los punteros, pero en la práctica ...

En una nota personal, en su mayoría soy un hombre de Java en estos días, pero pasé 2 años trabajando con Delphi y volvería a eso en un abrir y cerrar de ojos. En contraste, solo tengo una experiencia muy limitada con C ++ y preferiría limpiar los inodoros que volver a ese idioma :)

Por supuesto, la sintaxis de java se parece más a c ++ que a delphi, pero creo que el modelo de objetos es más similar a delphi:

  • herencia única. Las interfaces existen, pero se parecen más a COM que a las interfaces Java.
  • los objetos se asignan en el montón y se accede por referencia

puede encontrar un documento comparando los tres idiomas aquí

Creo que si vas con Delphi, te resultará más fácil después de varias veces de uso, también tiene más soporte de terceros y algunas de las características introducidas en Delphi antes de C ++ Builder

También leí este blog de ex-Java y ahora el responsable de la mayoría de las bases de datos y el trabajo de datos en Delphi Steve Shaughnessy, sobre su experiencia en la programación de Delphi después de 10 años de Java :-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/ 30193

No hay nada que no haya podido hacer en C ++ VCL que no pudiera hacer con Delphi VCL y casi todos los componentes de Delphi funcionan bien en C ++ Builder. Como programo para Windows y UNIX, C ++ es más portátil.

Si usa C ++ STL u otra biblioteca bien diseñada para sus contenedores, la recolección de basura se convierte en un punto discutible, y de lo contrario el GC manual no es difícil (uno aprende rápidamente los buenos hábitos, que debe practicar de todos modos independientemente de un GC). Mientras use RAII siempre que sea posible, mantenga la administración de la memoria encapsulada en contenedores, sea claro en cuanto a la propiedad de los objetos y solo use los punteros como referencias en línea (todo lo que también debería estar haciendo independientemente del idioma), GC no debería ser un problema. problema.

" Por ejemplo, el IDE de Delphi es totalmente increíble para la creación de GUI de una manera WYSIWYG. No he usado el IDE del generador de C ++, pero me sorprendería mucho si tuviera un generador de GUI que fuera tan bueno como Delphi. & Quot;

En realidad, el editor de GUI de C ++ Builder es exactamente el mismo editor y funciona de la misma manera. Es fantástico.

.Net tiene una gran cantidad de clases, como Java. C # tiene una sintaxis similar a la de Java y debido a la enorme biblioteca de clases funciona de manera similar. Y es un entorno perfectamente adecuado para la programación. Pero, francamente, Delphi es un lenguaje mucho más agradable, IDE y entorno general para trabajar. C # fue diseñado por la misma persona que diseñó Delphi y " se siente " muy similar en muchos aspectos, así que no asumas que porque Delphi compila a código nativo (aunque también puedes usar Delphi .Net) es fundamentalmente más difícil de usar. No es, en absoluto.

Mi recomendación personal sería para Delphi, porque es un lenguaje genial. Sin embargo, si está interesado en aprender C ++, C ++ Builder es probablemente la mejor manera de hacerlo.

Programé profesionalmente en Delphi durante los últimos 10 años y tengo un buen conocimiento de C ++. Iría a la manera de Delfos. La sintaxis es mucho más simple y la administración de memoria también. Ese GC para Delphi nativo no lo he escuchado todavía ... Aunque no me gustaron mucho las trampas en el código Delphi.Net introducidas debido a .NET gc, no me gustan mucho los gcs; -)

Una cosa que olvidé mencionar antes:

Desde una perspectiva de costos, realmente no necesita para elegir. Compre el paquete RAD Studio , y por un modesto costo adicional sobre un idioma individual, obtendrá las personalidades de Delphi y C ++ Builder en el mismo IDE.

Y vale la pena mencionar que el paquete C ++ Builder incluye el compilador de Delphi, y puede escribir / agregar archivos .pas de Delphi e incluirlos como parte de sus proyectos de C ++.

Si vas a hacer mucha programación de Windows, aprende C ++. ¿Aprenderías alemán en preparación para un viaje a Francia? C / C ++ es el idioma nativo de la API de Windows. Tratar con las estructuras de datos y llamadas de WinAPI es mucho más sencillo en C / C ++. En cuanto a RAD, he usado MSVC durante aproximadamente 13 años y puedo armar una aplicación GUI tan rápido como cualquiera que use el editor GUI de Visual Studio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top