PDA

Ver la versión completa : ¿C o C++?



mog_ur
15/10/2005, 22:27
Estoy empezando en esto del desarrollo con SDL para cuando llegue la GP2X, no se por donde he leído q la GP32 no se llevaba bien con C++ , sabéis si le pasará lo mismo a la Nueva maquinita?

Gracias

PD: ya quedamenos :babea:

Puck2099
15/10/2005, 22:43
Estoy empezando en esto del desarrollo con SDL para cuando llegue la GP2X, no se por donde he leído q la GP32 no se llevaba bien con C++ , sabéis si le pasará lo mismo a la Nueva maquinita?

Gracias

PD: ya quedamenos :babea:

En principio no creo que haya problemas :)

syrou
23/10/2005, 03:57
Será el usuario el que no se lleve bien con C++ (si no se entiende toda la teoría del mundo de la POO). Creo que lo suyo es empezar con C, y una vez dominada la programación (al final lo que importa es la algorítmia y las estructuras de datos), dar el salto a C++. Al ser tanto uno como otro un lenguaje compilado, mientras uses un compilador cruzado para ARM no debe darte problema alguno el código máquina ejecutandose en el bicho.

hectorblanco
10/11/2005, 02:33
No deberian haber problemas, ya que linux suele ir muy bien con ambos lenguajes.
Yo casi aconsejaría empezar con C++. este no es más que una ampliación con mas bien pocos cambios respecto a C.

mog_ur
10/11/2005, 03:53
Pocos cambios? yo creo que el modo de programar es totalmente diferente aunque la sintaxis seca prácticamente igual

hectorblanco
10/11/2005, 03:59
Yo tengo desarrollados dos juegos, y para portarlos de Linux a Windows sólo he tenido que recompilarlos.
Lo único que sí habria que controlar para hacer juegos para la consola es el tema del mapeo de controles, ya que evidentemente el teclado y el raton no estan presentes. Pero esto se puede tener definido a parte, y dependiendo de la plataforma a la que vayamos a compilar, activar unas opciones u otras.
Pero la forma de programar no deberia de ser muy diferente. Lo dicho: el tema de controles, y claro está, hacerlo para la resolución de la consola ...etc.

Whitehat
10/11/2005, 05:52
Pocos cambios? yo creo que el modo de programar es totalmente diferente aunque la sintaxis seca prácticamente igual

Me parece increible que digas que tiene muchos cambios.
Lo primero porque C++ es simplemente C puro, con un par de librerias nuevas
"stdio" o "iostrem" (dependiendo de la plataforma) y "string".
Pero la base para empezar a programar es la misma, puedes llegar a hacer maravillas
con C++ sin tener que meterte en Objetos.
Ademas que para el "novato" en programacion le es de gran ayuda estas librerias
ya que el scanf() y el printf() son mu cansinos y la facilidad de cin y cout, o el mero hecho
de q algo tan normal y aclarativo como es el tipo bool no exista en C, le da mayor potencia
para ser un lenguaje de alto nivel de aprendizaje.
Ahora que si quieres un lenguaje que no es de tan alto nivel pero que es muy bueno
usa Python, o si te atreves LISP.
Y siempre piensa eso que no es pbligatorio programar en lo que lo hace todo el mundo
sino en lo que te sea mas comodo a ti ^^.

Eskema
10/11/2005, 06:01
En mi opinion el c++ sí necesita del uso de objetos, de hecho no veo ningun interes en usar c++ si no se usa la poo.
Lo mas recomendable es usar el lenguaje con el q mas comodo uno se sienta.

hectorblanco
10/11/2005, 07:32
Y siempre piensa eso que no es pbligatorio programar en lo que lo hace todo el mundo
sino en lo que te sea mas comodo a ti ^^.

Ahí ahí. Siempre he dicho eso de JAVA. Soy uno de sus mayores detractores.



En mi opinion el c++ sí necesita del uso de objetos, de hecho no veo ningun interes en usar c++ si no se usa la poo.
Lo mas recomendable es usar el lenguaje con el q mas comodo uno se sienta.


C++ lleva más cosas a parte del paradigma OO. Solo por la clase string y la gestión de punteros ya vale la pena.
Y el tema de clases, incluso sin complicarte mucho con ellas, te puede solucionar bastantes cosas.

newage
10/11/2005, 07:50
Ahí ahí. Siempre he dicho eso de JAVA. Soy uno
de sus mayores detractores.Java esta orientado 100% a la
extensibilidad con clases y toda la teoría de ingeniería del software que
esto conlleva.

Java no es mas que la mejor herramienta para hacer aplicaciones a bajo
coste y con una proyección de diseño perfecta. Mucha teoría pero es
un lenguaje perfecto en todos sus sentidos.

Claro esta, teniendo en cuenta que esta un nivel de abstracción en
ejecución por encima de los programas del SO y por tanto. Vamos que
no puede hacer las cosas que se pueden hacer en un programa en
ensamblador o C. Pero eso es algo implícito al marco de ejecución
que quiere abarcar y del que es líder.

Un buen programador debe conocer ensamblador genérico, C/Pascal, C++ y Java
Abarcando todos los niveles de ejecución a excepción del del SO claro.
Esto ya es algoritmia pura y ser muy friki.

Bueno, voy a llamar a los de Sun a que me den mi comisión. [wei4]

WinterN
10/11/2005, 07:52
Me parece increible que digas que tiene muchos cambios.
Lo primero porque C++ es simplemente C puro, con un par de librerias nuevas
"stdio" o "iostrem" (dependiendo de la plataforma) y "string".
Pero la base para empezar a programar es la misma, puedes llegar a hacer maravillas
con C++ sin tener que meterte en Objetos.

Claro, si a un coche le quitas la carrocería, los asientos traseros, el del acompañante y las ruedas de la derecha puede llegar a parecerse a una moto... :p

Como C++ es retro-compatble con C, te puedes mantener en un punto intermedio, y me parece estupendo que cada cual programe como más comodo se sienta (descartando el caso de que luego el código lo tenga que mantener otro).

Pero decir que C++ es C con cuatro cositas más es de locos... :loco:

Aiken
10/11/2005, 08:08
Pocos cambios? yo creo que el modo de programar es totalmente diferente aunque la sintaxis seca prácticamente igual

nisiquiera la sintaxis es igual, yo creo que solo coinciden en los parentesis y las llaves :D

Aiken

Aiken
10/11/2005, 08:13
Pero la base para empezar a programar es la misma, puedes llegar a hacer maravillas
con C++ sin tener que meterte en Objetos.



en C se pueden hacer maravillas, programando todo en ensamblador embebido :D pero eso solo deberia considerarse un 1% programar en C y un 99% seria progracion en ensamblador. :) vamos que si hicieras eso dirias que programas en ensamblador, no?

Pues eso, que yo soy el primero que programo en C++ y el 80% de las cosas las escribo con sintaxis de C standard, pero al menos usar la POO porque sino para que demonios compilar C++ si todo es C? poder se puede pero? de hecho yo de C++ solo uso las clases y la poo, las classes de string y demas ni las toco :)

Aiken

Aiken
10/11/2005, 08:16
Ahí ahí. Siempre he dicho eso de JAVA. Soy uno de sus mayores detractores.


ahi le has dao! Java al principio no se comio una rosca durante años, y de hace un tiempo aqui sufre de un favoritismo producto de las modas que parece que si no lo programas en java no mola.

Aiken

Aiken
10/11/2005, 08:19
Bueno, voy a llamar a los de Sun a que me den mi comisión. [wei4]


Si lo que has escrito lo has escrito sin plagiar nada o sin que sea algo que tenias memorizado lo que tendrian que darte es un premio por tu elegancia a la hora de hablar (eso si, ha sonado a prefabricado, y a marketing cansino, que te cagas :D)

Aiken

WinterN
10/11/2005, 08:36
ahi le has dao! Java al principio no se comio una rosca durante años, y de hace un tiempo aqui sufre de un favoritismo producto de las modas que parece que si no lo programas en java no mola.

Aiken

Creo que Java a día de hoy está donde está por méritos propios. Veo un poco absurda la comparación entre C/C++ y Java ya que, aunque sean semánticamente muy parecidos, tienen finalidades muy distintas. A nadie se le ocurriría hacer un driver, un SO, una aplicación de rendimiento crítico en Java, al igual que hoy en día es de locos hacer una aplicación web a base de CGI's y C/C++.

Java ha sufrido un crecimiento tan amplio en cuanto a extensiones y librerías que abarca prácticamente todos los ambitos de la programación. La plataforma .NET, a pesar de ser técnológicamente superior a Java, las está pasando canutas para mantenerse. Incluso el nuevo Java 5.0 (aka 1.5) le está costando trabajo sustituir a su hermano mayor... (yo no apostaría a que llegue a hacerlo algún día).

Vamos, que yo no diría que Java es una moda...

miq01
10/11/2005, 10:19
Me parece increible que digas que tiene muchos cambios.
Me parece increíble que digas que tiene pocos cambios... :)

Como bien han dicho, usar C++ sin OO es perfectamente válido (aunque sólo sea por el hecho de no tener que declarar variables al principio de las funciones o por la mejora en el tratamiento de cadenas de caracteres), pero si usas C++ al 100%, lo único que tiene que ver con C es que es retrocompatible (que ya es mucho), y absolutamente nada más.

timofonic
10/11/2005, 11:34
Java esta orientado 100% a la
extensibilidad con clases y toda la teoría de ingeniería del software que
esto conlleva.

Java no es mas que la mejor herramienta para hacer aplicaciones a bajo
coste y con una proyección de diseño perfecta. Mucha teoría pero es
un lenguaje perfecto en todos sus sentidos.

Claro esta, teniendo en cuenta que esta un nivel de abstracción en
ejecución por encima de los programas del SO y por tanto. Vamos que
no puede hacer las cosas que se pueden hacer en un programa en
ensamblador o C. Pero eso es algo implícito al marco de ejecución
que quiere abarcar y del que es líder.

Un buen programador debe conocer ensamblador genérico, C/Pascal, C++ y Java
Abarcando todos los niveles de ejecución a excepción del del SO claro.
Esto ya es algoritmia pura y ser muy friki.

Bueno, voy a llamar a los de Sun a que me den mi comisión. [wei4]

Aiken, ¿lo has dicho de coña? Como han dicho aquí, parece que te has memorizado los discursitos que da Sun en las universidades y lo que dicen los profesores, y luego amigos universitarios me dicen cosas muy parecidas a lo que tu me dices. Sun y Oracle son muy buenos lavando cerebros en la universidades, a Microsoft le queda un paso pero lo está consiguiendo con su .NET...


Creo que Java a día de hoy está donde está por méritos propios. Veo un poco absurda la comparación entre C/C++ y Java ya que, aunque sean semánticamente muy parecidos, tienen finalidades muy distintas. A nadie se le ocurriría hacer un driver, un SO, una aplicación de rendimiento crítico en Java, al igual que hoy en día es de locos hacer una aplicación web a base de CGI's y C/C++.

Java ha sufrido un crecimiento tan amplio en cuanto a extensiones y librerías que abarca prácticamente todos los ambitos de la programación. La plataforma .NET, a pesar de ser técnológicamente superior a Java, las está pasando canutas para mantenerse. Incluso el nuevo Java 5.0 (aka 1.5) le está costando trabajo sustituir a su hermano mayor... (yo no apostaría a que llegue a hacerlo algún día).

Vamos, que yo no diría que Java es una moda...
Sí vamos, finalidades muy distintas :D

Para hacer una aplicación web se puede usar PHP, AJAX, PERL, PYTHON Y RUBY por ejemplo.

Losiento por tí y por que te creas todas esas panochadas que te han metido en la cabeza, pero si es una moda, ya que se ha vuelto algo guay y Sun quiere que la gente lo use para todo, pero mucha gente, sobretodo en el open-source, no le gusta Java y con mucha razón, sobretodo porque está controlado por Sun y no hay JVM decente open-source, hay alternativas que en mi opinión son mucho mejores sin contar que son multiplataforma y por defecto la mayoría permiten que su código esté en diferentes formas (interpretado, bytecode, binario nativo).


ahi le has dao! Java al principio no se comio una rosca durante años, y de hace un tiempo aqui sufre de un favoritismo producto de las modas que parece que si no lo programas en java no mola.

Aiken

Jeje, te he pillado. Tienes razón, entre tú y WinterN decíis los argumentos de los Javaneros, que defienden a java por todo y al final quieren programar TODO en Java, porque dicen que lo más importante no es la eficiencia y hoy en día no hace falta optimizar con la potencia actual de las CPUs, je...

Damizean
10/11/2005, 14:23
Saying that Java is good because it works on all OSes, is like saying butt sex is good because it works on all genders

Ahi queda to

Gammenon
10/11/2005, 16:40
Saludos
La diferencia entre C y C++ es abismal cuando te pones a programar, es un paradigma totalmente diferente (si usas la POO claro, aunque simplemente lo de poder declarar las variables cuando quieres es un salto brutal).
En cuanto a lo de usar C++ y SDL en la gp2x no lo veo tan claro... Hay alguna garantia? Porque en la gp32 yo no he acertado a dibujar nada usando las SDL y C++, y para hacerlo funcionar parece que hay que hacer la filigrana que comenta uno en los foros de www.gp32x.com que ya puse en otro hilo.

Hasta pronto :)

Eskema
10/11/2005, 16:43
Habra q esperar q salga la consola para confirmarlo, yo por el momento sigo con c pelado, y si luego podemos usar c++ pues daremos el salto xD

hectorblanco
10/11/2005, 17:30
En la web oficial de la consola se dice que el SDL vendrá de serie. Y no hay que olvidar que la consola corre con un Linux, y no como la GP32, que va con uno propietario. SDL para linux ya existe, así que la faena de GPH es portar las librerias a su hard, lo que no creo que les haya destrozado intelectualmente. Al ser un linux tendria que ser relativamente (ojo) sencillo portar cosas. Sólo necesitariamos un buen compilador y linker de la gp2x.

oankali
10/11/2005, 19:17
... aunque simplemente lo de poder declarar las variables cuando quieres es un salto brutal...

¿Qué le veis de tan interesante como para calificarlo de salto brutal?
Personalmente odio esa manía de declarar las variables en medio del código. Prefiero las declaraciones al principio de funciones, en caso excepcional al principio de un bloque anidado. Es mucho más legible según mi punto de vista.

miq01
10/11/2005, 19:45
¿Qué le veis de tan interesante como para calificarlo de salto brutal?
Personalmente odio esa manía de declarar las variables en medio del código. Prefiero las declaraciones al principio de funciones, en caso excepcional al principio de un bloque anidado. Es mucho más legible según mi punto de vista.

Hombre, al menos C++ permite declarar las variables donde te apetezca, así que eso ya me parece una ventaja: si te parece ilegible declarar las variables a mitad de código las declaras al principio y ningún problema. A mi particularmente un código se me hace más legible cuando las variables se declaran justo cuando se necesitan y no antes. Y sólo en el caso en que esas variables se utilicen en varias partes de la función la declaro al principio.

Y, bueno, que sea un salto brutal no significa necesariamente que sea muy interesante. Sólo que C++ respecto a C es un cambio bastante grande, aunque sólo sea por la OO.

oankali
10/11/2005, 20:02
Hombre, al menos C++ permite declarar las variables donde te apetezca, así que eso ya me parece una ventaja: si te parece ilegible declarar las variables a mitad de código las declaras al principio y ningún problema. A mi particularmente un código se me hace más legible cuando las variables se declaran justo cuando se necesitan y no antes. Y sólo en el caso en que esas variables se utilicen en varias partes de la función la declaro al principio.

Y, bueno, que sea un salto brutal no significa necesariamente que sea muy interesante. Sólo que C++ respecto a C es un cambio bastante grande, aunque sólo sea por la OO.

No sé, no sé. Eso de tener que buscar dentro del código en dónde has declarado una variable para recordar de qué tipo era no lo veo muy práctico. Si todos los programadores prefixaran correctamente sus variables, sería diferente, pero no es el caso.
Supongo que mientras programas será más práctico, pero no lo tengo tan claro al cabo de unos meses cuando tienes que volver a retocar el código.

De todas formas, considero que el C y el C++ son muy diferentes. Tan diferentes como cualquier lenguage no OOP en relación a uno OOP de verdad, aunque las sintaxis de base es muy parecida.

Personalmente, uno de mis lenguages OOP favoritos es el Delphi (Object Pascal).

Gammenon
10/11/2005, 20:24
Saludos
A mi me parece mas legible que se declaren las variables justo antes de usarlos, porque asi me aporta mas informacion sobre lo que esta haciendo el programa y no tener las variables arriba del todo y tener que recordar de que tipo es cada uno.

Pero bueno, de nada sirve discutir esto, es como si discutieramos como indentamos los bloques de codigo (cosa que hace que con Python se pierda menos tiempo al no haber discusiones sobre este tema, segun dicen sus autores :shock: ). Son cosas personales, como el color de fondo del IDE (yo lo tengo negro, alguien mas? [wei4])

Yo por lo menos tengo claro que no voy a hacer nada en C puro y duro para la GP32 o GP2X, es demasiado pelado para mi gusto (ahora mismo).

Hasta pronto ;)

WinterN
10/11/2005, 21:12
Sí vamos, finalidades muy distintas :D

Para hacer una aplicación web se puede usar PHP, AJAX, PERL, PYTHON Y RUBY por ejemplo.

Losiento por tí y por que te creas todas esas panochadas que te han metido en la cabeza, pero si es una moda, ya que se ha vuelto algo guay y Sun quiere que la gente lo use para todo, pero mucha gente, sobretodo en el open-source, no le gusta Java y con mucha razón, sobretodo porque está controlado por Sun y no hay JVM decente open-source, hay alternativas que en mi opinión son mucho mejores sin contar que son multiplataforma y por defecto la mayoría permiten que su código esté en diferentes formas (interpretado, bytecode, binario nativo).


Bueno, si vamos a entrar en el tema del open source no me queda más remedio que darte la razón en todo. Pero el hecho de no ser OpenSource no hace que un lenguage o plataforma sea menos potente. Por ejemplo, a mi me gusta más el Opera que el Firefox, aunque no sea libre. Espero que algún día el Firefox sea para lo que yo considero importante mejor que el Opera, entonces me cambiaré, porque la filosofía del Firefox va mas acorde con mis convicciones personales, pero como usuario me decanto por lo que mejor me va.

AJAX no es un lenguage de servidor, sino de cliente, es Javascript. De hecho yo lo utilizo AJAX con Java. PHP es muy potente, pero está muy lejos de seguir el modelo MVC. PERL es poco mejor que C para aplicaciones web y las aplicaciones son dificiles de mantener. PYTHON también es muy potente, pero no deja de ser un lenguaje script. RUBY no lo conozco...

PD: Y no recibo ningún tipo de subvención de Sun :p

NoobLuck
19/11/2005, 00:10
A mi los streams de C++ y la forma de trabajar con ficheros no me gusta nada, uso las librerias de C de toda la vida, que ademas saben los parametros leidos de la linea del fichero etc...

Sin embargo para escribir codigo más reutilizable la programación orientada objetos ofrece unas herramientas sensacionales. Más aun si vamos a ponernos aqui a trabajar muchas personas en un proyecto, cada uno puede hacer una parte, y con solo leer las cabeceras de las funciones ya sabemos el interfaz para trabajar con las funciones que está diseñando fulano, sin tener que conocer la implementación. Esto tb se puede hacer en C, pero sin herencia ni polimorfismo ni sobrecarga de funciones ni operadores. Además toda la información está mas estructurada y permite al programador separar mejor la parte estatica de la dinámica.

Yo no entiendo los que dicen empezar directamente con C++, no me gusta, luego no sabes escribir codigo en C, por que no sabes hasta donde llegan sus extensiones, no es la primera vez que veo un programa en C con inicializvacion de variables en mitad del codigo o con comentarios "//", que igual un compilador de C lo admite, pero otro no. Además puede haber cosas de C++ que no te gusten por que en vez de hacerlo más claro la lian más como renombramientos o dominios :ametra: :shock: que si no hay cuidado...

Yo creo que lo mejor es apreder C y el paradigma imperativo, despues estudiar el paradigma orientado a objetos y C++, pero sin la teoria no sabemos lo que C++ nos ofrece, y pensamos que es para liar. Si programas BIEN en C++, haces un programa y sin dorte cuenta has hecho una buena libreria que exportar a otro programa, y a los 2 años no te acuerdas de la implementación nada, y miras los .h y a volar!!!!

Va nenitas a programar en C++ que:
"SDL is written in C, but works with C++ natively", no nos va a ir peor por usarlo (y no hace falta todo sólo una parte, ni todo el códgo necesita clases, la lógica lo va diciendo).