PDA

Ver la Versión Completa : C++ Builder vs Delphi


mutant09
24-05-2004, 12:19:08
Hola a todos,

Me di cuenta de que por la red hay más material de Delhi que de C++ Builder. Por ejemplo, en lo que respecta a componentes.

Mi pregunta es la siguiente:
¿cual es mejor?
¿y el más rápido?

delphi.com.ar
24-05-2004, 15:51:58
¿cual es mejor?
Podemos discutir eternamente eso, es como discutir si el español es mejor al inglés (Esa explicación se la he "robado" a Kinobi (http://www.clubdelphi.com/foros/showthread.php?t=3101&page=2) )

¿y el más rápido?
El compilador es prácticamente el mismo, puedes comparar código compilado en Delphi y en Borland C++ y verás como lo resuelve prácticamente igual.

Particularmente prefiero Delphi por su código sencillo y agradable, sabiendo que tienen prácticamente la misma potencialidad.

Saludos!

jachguate
24-05-2004, 17:49:46
Creo que depende de lo que querras hacer, aunque para el 99% de las aplicaciones, la potencia de delphi es equiparable a la de c++, y el código compilado es tan optimo en uno como en otro, y delphi tiene la ventaja de un código mas sencillo.

Ahora, para cierto tipo de aplicaciones... drivers de dispositivos por ejemplo, claro que la opción a elegir es c++.

santana
25-05-2004, 15:09:10
Hola.

Recuerdo haber tratado este tema con Jachguate en privado hace tiempo.

Particularmente prefiero Delphi por su código sencillo y agradable, sabiendo que tienen prácticamente la misma potencialidad.
Permíteme.......discrepar :D

Para muchas cosas prefiero C++, sobre todo por la sintaxis (justo lo que muchos rechazan), que aunque a simple vista parece más complicada luego cuando llevas 10 minutos programando es más de lo mismo, pero mucho más potente en lo que a sintaxis se refiere.


// Equivalente de StrCmp en C
long CompararCadenas(char *c1, char *c2) {
if (!c1 || !c2) return c2 - c1;
while (*c1 && *c2 && *c1 == *c2) {
c1++;
c2++;
}
return (*c1 || *c2)?(*c1 - *c2):0;
}



// Equivalente de StrCmp en Delphi
function comparaCadenas(c1, c2: PChar): integer;
begin
if (c1 = nil) or (c2 = nil) then
result := Integer(c2) - Integer(c1)
else begin
while (c1^ <> #0) and (c2^ <> #0) and (c1^ = c2^) do begin
Inc(c1);
Inc(c2);
end;
if (c1^ <> #0) or (c2^ <> #0) then
result := Integer(c1^) - Integer(c2^)
else
result := 0;
end;
end;


A mi me gusta más la primera que además aun se puede optimizar más, lo que pasa es que si la optimizas más en cuanto a sintaxis, no obtienes mejor resultado, en el caso de esta función obtendrías el mismo código máquina pero peor legibilidad. Y comparando la de Delphi con la de C lo que sí te puedo decir es que el código maquina resultante no difiere mucho el uno del otro.

Una vez hice unas pruebas de velocidad con una rutina que repetía 10000 veces la búsqueda de un texto en una cadena de más de 1Mb. El primer algoritmo lo hice en C tardaba unos 19 Segs., el segundo en Delphi (tardaba casi 2 segs más), luego en ensamblador embebido en Delphi hice 2 o 3 versiones y todas le sacaban más de 4 segundos a la versión de C, pero una de ellas creo que le sacaba 9 o 10 Segs. Y yo con eso y poco más me lo paso bomba y soy feliz :D

jachguate
25-05-2004, 17:31:57
Y yo con eso y poco más me lo paso bomba y soy feliz :D
Es que vos sos una maniatica... y te has buscado un ejemplo que hace parecer que delphi está en clara desventaja...

Claro que habrán contraejemplos. Sobre todo en la sintaxis relacionada con punteros (que a mucha gente le asusta), y alguna otra cosilla que no tengo en mente ahora...

Creo, al final de cuentas, y como ya he dicho antes, que es una cuestión de gustos...

Hasta luego.

;)

kalimero
25-05-2004, 18:17:48
Hola a todos.

Pues recientemente hemos migrado una aplicacion desrrollada incialmente en C++ Builder a Delphi y puedo decir que la velocidad de compilación de Delphi supera con creces a la de C++ Builder.

Saludos.

kinobi
25-05-2004, 18:49:39
Hola,

... y puedo decir que la velocidad de compilación de Delphi supera con creces a la de C++ Builder.

¿Qué versión de Delphi y qué versión de C++ Builder?

Saludos.

kalimero
25-05-2004, 19:15:04
Hola.

En ambos casos la version 6.

Saludos.

delphi.com.ar
25-05-2004, 19:22:58
Para muchas cosas prefiero C++, sobre todo por la sintaxis (justo lo que muchos rechazan), que aunque a simple vista parece más complicada luego cuando llevas 10 minutos programando es más de lo mismo, pero mucho más potente en lo que a sintaxis se refiere.Tu misma lo dices...

Te cuento que yo he probado ver el código compilado de algoritmos sencillos y es el mismo.

Saludos!

santana
25-05-2004, 23:26:45
Para muchas cosas prefiero C++, sobre todo por la sintaxis (justo lo que muchos rechazan)
Tu misma lo dices...

Bueno, me ha dado la vena y la he mejorado (aunque mi compilador me da el famoso warning de la asignación dentro de expresiones y no me acuerdo de cual es la opción para quitarlo) :p



long CompararCadenas(char *c1, char *c2) {
if (!c1 || !c2) return c2 - c1;
int comp = 0;
while (!(comp = *c1 - *c2) && *c1++ && *c2++) { }
return comp;
}


Y con esto y un bizcocho.....

Un saludo ;)

roman
25-05-2004, 23:33:32
Bueno, pero sí de lo que se trata es de ser crípticos entonces ciertamente Delphi es muy inferior y no le ganará a C (que por cierto sobra el ++) ningún concurso de código compacto. Pero yo prefiero desperdiciar algunas líneas en blanco, una que otra variable innecesaria, etc. con tal de leer más confortablemente el código.

// Saludos

santana
25-05-2004, 23:39:13
Bueno, pero sí de lo que se trata es de ser crípticos.... Pues no, en realidad de lo que se trataba era de haceros rabiar un poco :D y a ser posible, provocarle una nueva úlcera de estómago a Jachguate ;)

Saludos :rolleyes:

PD: El ++ es algo que se me escapa de vez en cuando sin pretenderlo :( :p

roman
25-05-2004, 23:40:40
Pues no, en realidad de lo que se trataba era de haceros rabiar un poco

No creo que nos hagas rabiar ya que nosotros somos felices leyendo código Delphi.

:D

Julià T.
26-05-2004, 00:03:25
//creo que realmente la funcion en delphi seria como la siguiente
function comparaCadenas(c1, c2: string): integer;
begin
result:=integer(C1<>c2);
end;

// Equivalente de StrCmp en Delphi
function comparaCadenas(c1, c2: PChar): integer;
begin
if (c1 = nil) or (c2 = nil) then
result := Integer(c2) - Integer(c1)
else begin
while (c1^ <> #0) and (c2^ <> #0) and (c1^ = c2^) do begin
Inc(c1);
Inc(c2);
end;
if (c1^ <> #0) or (c2^ <> #0) then
result := Integer(c1^) - Integer(c2^)
else
result := 0;
end;
end;

santana
26-05-2004, 02:13:53
//creo que realmente la funcion en delphi seria como la siguiente

function comparaCadenas(c1, c2: PChar): integer;
begin
if (c1 = nil) or (c2 = nil) then
result := Integer(c2) - Integer(c1)
else begin
while (c1^ <> #0) and (c2^ <> #0) and (c1^ = c2^) do begin
Inc(c1);
Inc(c2);
end;
if (c1^ <> #0) or (c2^ <> #0) then
result := Integer(c1^) - Integer(c2^)
else
result := 0;
end;
end;




function comparaCadenas(c1, c2: PChar): integer;
begin
if (c1 = nil) or (c2 = nil) then
result := Integer(c2) - Integer(c1)
else begin
while (c1^ <> #0) and (c2^ <> #0) and (c1^ = c2^) do begin
Inc(c1);
Inc(c2);
end;
if (c1^ <> #0) or (c2^ <> #0) then
result := Integer(c1^) - Integer(c2^)
else
result := 0;
end;
end;

Sí, creo que sí. ;)
Saludos.

roman
26-05-2004, 04:00:12
¿Qué esto es como eso de encuentra diferencias en dos dibujos?

Julià T.
26-05-2004, 04:58:28
Originalmente publicado por roman
¿Qué esto es como eso de encuentra diferencias en dos dibujos?
no la funcion sólo compara cadenas, quizá evolucione y pueda comparar dibujos :)

Supongo que la culpa fue mía al no distinguir detalladamente la función original de santana al estilo C de la equivalente al estilo delphi.

santana
26-05-2004, 09:26:38
Nosotros nos hemos entendido y eso es lo que importa ;)

Un saludo.

Gabo
23-11-2007, 14:29:36
Hace tiempo leí este comentario:


C++ Builder tiene un hermano mayor llamado Delphi que es una herramienta RAD.


¿Es cierta esa información? Ya que por lo leído en éste hilo no parece haber una diferencia sustancial entre ambos como para decir que uno sea el hermano mayor del otro.

Estas consultas las hago a raíz de éste otro (http://www.clubdelphi.com/foros/showthread.php?t=50631) hilo. No quiero equivocarme con mi elección y en estos momentos estoy en la disyuntiva de elegir entre C++Builder o Delphi. ¿Qué me dicen? Yo estoy muy acostumbrado a C++Builder, pero si es cierto que de Delphi encuentro mucho más material y componentes (y foros :p).

Ñuño Martínez
26-11-2007, 01:25:47
Yo, personalmente, te diría que depende. Yo me guío por el lenguaje más que por la herramienta. Si es una cosa de alto nivel, para usuarios finales, utilizo Pascal (Delphi, en tu caso), pero si es algo de bajo nivel, como una librería o la optimización manual de un algoritmo (a veces es rentable), pues utilizo C (no me gusta C++).

Ya sé que no es clarificador, pero en este caso, en el que ambos entornos son tan similares y que permiten instalar componentes del otro entorno aunque no sean del mismo lenguaje (al menos yo he conseguido instalar componentes Builder C++ en mi Delphi 6) considero que es más importante cómo te manejas con el lenguaje.

Gabo
26-11-2007, 11:27:36
Creo que llevas razón Ñuño.

Yo al menos me aclaro mejor con C. Estoy más acostumbrado.

Con lo de los componentes me "abriste el apetito". ¿Se pueden instalar componentes de Delphi en C++Builder? Si alguien lo sabe, le agradecería la información, asi podría utilizar los "CCD" y otros que he visto interesantes por la web.

jachguate
08-12-2007, 01:17:17
Con lo de los componentes me "abriste el apetito". ¿Se pueden instalar componentes de Delphi en C++Builder?

Si, si se puede. Aunque dado que no utilizo c, no tengo idea de cómo se hace. Es decir.. si se instala directamente o hay que hacer algún proceso previo.

Me parece que no es necesario (http://www.delphipages.com/threads/thread.cfm?ID=104439&G=104428&SAR=TRUE)

Hasta luego.

Gabo
08-12-2007, 11:20:29
¡¡¡Gracias por el enlace Juan Antonio!!! :)

Este lunes, en cuanto llegue a casa me pondré a probar lo que dice...

Espero no estar haciéndome falsas ilusiones... :( aunque no lo veo para nada ilógico siendo ambos productos de la misma empresa.

jachguate
08-12-2007, 11:24:01
aunque no lo veo para nada ilógico siendo ambos productos de la misma empresa.

jeje... ¡y que empresa!, porque si se tratase de Micro$oft... quien sabe.. :D:D:D

Lepe
08-12-2007, 13:49:56
Hace tiempo leí este comentario:

C++ Builder tiene un hermano mayor llamado Delphi que es una herramienta RAD.

[LEFT][FONT=TimesNewRoman]¿Es cierta esa información?

Que alguien me corrija si me equivoco. Hace años que instalé C++ para probar y creo recordar algunas cositas.

Borland lanzó primero Delphi, y después Borland C++. En lugar de reconstruir toda la VCL desde cero, usó la que ya tenía creada para Delphi.


De ahí que se diga, que el hermano mayor es Delphi.

La diferencia entre ambos lenguajes, creo es la sintaxis, el tipificado de variables, etc. Esto es toda una filosofía distinta de programación:

int * id = 3;
char * Nombre = CreateNombre(3);

... eso sí lo echo de menos en delphi, definir una variable y asignar valor.

Saludos

Gabo
10-12-2007, 17:05:31
Acabo de probar lo de instalar componentes de Delphi en C++Builder y en principio, sí funciona. :)

Seguiré probando, pero puedo comentar que no he tenido problemas para crear archivos bpl.

Por cierto: ¡Gracias Juan Antonio!