C, C++ o Java.

ReBeNTuk0

Buenas! He estado estudiando este curso C (modulo superior de ASI) y en las dos semanas de despues del insti me he metido a crear un jueguecito con SDL. Mi duda ahora es, que mis profesores me han dicho que me recomiendan estudiar Java en veranito. Mi objetivo en principio no es trabajar como programador sino como administrador de redes que es lo que estoy estudiando, pero me gusta mucho la programacion pero por mi cuenta en principio.

No es que sepa muchisimo de C pero algo me defiendo y ahora quiero ampliar mis conocimientos pero no se si seguir en C y/o C++ o pasarme a Java. Me han dicho que las empresas piden casi todo Java pero realmente no se que diferencias hay a la hora de realizar las aplicaciones. Me gusta la opcion de Java de poder crear tambien juegos como SDL y C/C++. Supongo que C/C++ sera para aplicaciones mucho mas grandes y que necesiten mas recursos y mas velocidad que Java, pero creo que en Java hacer las cosas es mas facil.

Tambien he pensado mirarme algo del lenguaje D, que no se si esta ya disponible o aun no. Espero que me podais recomendarme y decirme los porques. Gracias.

r2d2rigo

Sigue con la familia C/C++ y luego da el salto a C#, isi&fast.

NOTA: la opinion de este usuario puede ser no valida debido a su odio visceral hacia Java y todo lo que le parezca.

yarviT0

Java tiene mucho uso actualmente, si no te gusta o prefieres otra cosa mirate .net.

MTX_Anubis

el lenguaje te da igual, pasarte de c++ a java tardas 4 días contados. Java es más fácil eso sí, quita mucha morralla de memoria que tiene c++

por otro lado, sé un visionario y empieza con aspectsj!

LOc0

Mi objetivo en principio no es trabajar como programador sino como administrador de redes que es lo que estoy estudiando, pero me gusta mucho la programacion pero por mi cuenta en principio.

Teniendo en cuenta eso, yo seguiría con C hasta que lo tengas más machacado. Y con machacado no me refiero a programar el Half-Life 3, sino a por ejemplo ver esto y saber decir qué salida produce:

int i=1337;

printf("%d %d %d %d", i++, ++i, ++i, i++);

Después conseguiría un buen libro sobre POO y me tiraría a C++

Una vez que sepas C++ de verdad, ya te pueden venir con el Ñ++ que sabrás usarlo.

Salu2 ;)

r2d2rigo

#5, si nos ceñimos a los estandares-taliban (hola gcc!) tu codigo daria cualquier salida, junto con un bonito warning de "Variable i is being used without having been initialised" :D

LOc0

/\
||
||

Con las prisas se me olvidó inicializar i, pero creo que se entiende la idea xD

Salu2 ;)

cm07

#2 Todo lo que se le parezca no, recomiendas C# que guarda mas de una y más de dos similitudes importantes con Java.

IAF

Java mola xD

La cosa es aprender algun lenguaje orientado a objetos

cabron

Lo primero, tienes que diferenciar entre programar por hobby, o programar por profesión. Como hobby, elige lo que te guste, hay gente que le da por hacer sudokus, a otros por ir en bici a la montaña, y si a ti te gusta programar usando un editor hexadecimal, pues adelante.

Ahora, como profesional, pues entonces cada lenguaje está valorado de forma diferente según las posibilidades que tiene en el momento actual para los proyectos que les piden a las empresas.

Desde el punto de vista profesional, más o menos la cosa está así:

  • C

Hoy en día es un lenguaje obsoleto, ya que no tiene soporte para nuevas técnicas de programación como la programación orientada a ojbetos, y cualquier tarea requiere mucho esfuerzo, ya que se trabaja a un nivel bastante bajo.

Su uso principal es para:

  • Mantener los millones de programas que están todavía en uso escritos en C

  • Escribir cosas de bajo nivel sin tener que recurrir al ensamblador (drivers, kernels,etc)

  • Programar para dispositivos empotrados que tienen recursos limitados.

  • Java

Java va en la línea de lenguajes como C#, Vb. net, etc.

Su objetivo es ser un lenguaje potente con el que poder hacer cualquier cosa, pero tardando lo menos posible.

Dan soporte a técnicas modernas de programación, y su objetivo principal es la productividad, conseguir más con menos esfuerzo.

  • C++

Te permite hacer lo mismo que Java, C#, etc, pero con más potencia y más control, así que se usa en proyectos más críticos. La parte mala, es que el lenguaje es más complejo, y al tener más control, tienes más posibilidades de cagarla, y te tienes que ocupar tu mismo de detalles que en otros entornos ni te enteras que están ahí.

2
ReBeNTuk0

Pues realmente no se que programar. Mis profesores me dijeron lo de Java porque es lo que piden en las empresas. No se mucho de programacion, me he iniciado en C y es un lenguaje que me gusta. He tenido que entender (no aprender mucho, solo entender el funcionamiento de C++) para poder programar un jueguecito. He seguido un manual y he modificado he creado un jueguecito con SDL y C/C++ con una programacion lo mas basica posible. Por ahora y por diversion y para aprender a implementar funciones y "pensar" un poquito mas en programitas mas dificil, me he decantado a empezar con esto de los jueguecitos en 2D.

Se que C/C++ es muy lioso si no sabes mucho y hacer algoritmos buenos es dificil. Mis algoritmos son muy pobres, no suelo usar malloc para asignar memoria dinamica ni free para liberarla. De todas formas, en ordenadores de hoy en dia (el mio tiene 3 años y va perfecto el juego) van demasiado sobrados como para que con un juego de 1500 lineas vaya lento. Ya se que no hago los mejores codigos pero por ahora es lo que se. He visto el mismo manual para hacer un juego parecido en Java para moviles, por lo que es una parte que tambien me gusta mucho y como he leido y decis, con Java es mas dificil cometer errores.

Otra cosa que no entiendo mucho, es para programar en Java, si tengo que bajar el J2SE o el J2EE. Supongo que para aplicaciones normales e incluso jueguecitos asi en 2D con J2SE me valdra, pero tampoco se realmente bien la diferencia. Y otra cosa ya que estamos, he bajado el IntelliJ IDEA y el NetBeans para utilizar Java, pero cuando quiero crear un nuevo proyecto o lo que sea, me da muchas opciones y no las entiendo. Para programar en C utilizo el Dev-C++ que simplemente le doy a Nuevo --> Codigo Fuente y ya empiezo a programar. A ver si me podeis recomendar alguno sencillito que almenos al principio no me coma mucho la cabeza.

PD: Ya que estamos, os dejo una screen de mi juego xD
http://img247.imageshack.us/my.php?image=avionesab4.jpg

PD2: #5 Eso si lo entiendo los preincrementos, posincremento y eso aunque nunca lo he usado.

Riu

#1 elige programar en c vida vida, por que te vas a dejar la espalda como te guste programar xdd
y por aprender, aprende visual basic.net , asp .net c#..., si adquieres cierto nivel con ellos y bases de datos tienes trabajo.

cabron

"Otra cosa que no entiendo mucho, es para programar en Java, si tengo que bajar el J2SE o el J2EE."

Te lo aclaro un poco; Java, es un lenguaje y una plataforma.

El lenguaje Java, es la sintaxis, es decir, las palabras y símbolos que utilizas para escribir código, y las normas que tienes que seguir para su uso.

La plataforma Java, son las librerias que puedes importar, y que ya tienen funcionalidad hecha lista para usar (Swing, JNDI, etc).

J2SE es una plataforma Java, y J2EE, es otra plataforma Java. ¿Por qué hay dos? Pues por que cada una contiene librerías pensadas para objetivos diferentes.

J2SE es la plataforma genérica, la que usarías para casi cualquier aplicación que se te ocurra.

J2EE es una plataforma específica para aplicaciones de negocio. Los programas que usan las empresas internamente, la mayoría van de lo mismo; acceder a información con bases de datos, que solo tengas acceso a cierta información según tu nivel de seguridad, etc. La plataforma J2EE está diseñada específicamente para este tipo de tareas.

Salvo que te quieras dedicar a escribir aplicaciones empresariales (no te lo recomiendo, yo trabajo con tecnología basada en J2EE creando aplicaciones para bancos, y es un autentico coñazo xD), si quieres programar con Java, necesitas J2SE.

maRc

#11, la gracia de lo de #5 es que no se sabe que resultado produce, porque el orden de evaluación de los parámetros depende de la máquina/compilador que uses.

A mi me pilló, cuando lo compilé y no me daba lo que esperaba xD.

MTX_Anubis

#11 si te sirve, yo en java uso eclipse que también sirve para c/c++ entre otros lenguajes

1
cabron

Pues sinceramente, lo de #5, no me parece nada importante.

Programar se divide en dos partes:

1- Tener capacidad para resolver problemas usando principios de programación (diseño estructurado, diseño orientado a objetos, etc). Esto es algo general que tienes que dominar sin importar con que tecnología trabajes

2- Conocer las peculiaridades de la tecnología con la que trabajas. Cosas tipo, en C si no pones break en un case de un switch, se ejecutan todos los case que haya debajo, si un for, if, o while tienen una única sentencia no hace falta poner los { }, etc.

Lo que te hace ser bueno programando y va a marcar la diferencia en tu puesto de trabajo, es lo primero, por que lo segundo es cuestión simplemente de empollarte las reglas concretas de tu lenguaje. Si te da un error al compilar, o las cosas no funcionan como deberían, solo tienes que revisar un manual para ver que has hecho mal. Casi nadie se sabe de memoria el 100% de las reglas del lenguaje con el que trabaja, todos miramos manuales, guardamos notas, preguntamos en foros, etc.

Ahora, si tu problema es que no sabes como leches diseñar una buena solución al problema que tienes que resolver, ningún manual ni foro te lo va a resolver (salvo que seas de esos que postean esperando que se lo hagan, y siempre hay alguno que se lo hace...).

Que en C y C++ no se garantiza el orden de evaluación de parámetros, es algo que no tiene nada que ver con ningún principio de programación, es simplemente una regla de una tecnología en concreto que hay que memorizar.

LOc0

#16 -> De acuerdo ;) (Te ha quedado muy didáctico)

En #5 lo que pretendía es ejemplificar lo que YO entiendo por dominar un lenguaje en particular (lo de conocer las peculiaridades de la tecnología que mencionas arriba).

Salu2 ;)

ElKedao

Si es para un futuro profesional, no lo dudes:

Java > C++

¿Por qué? sencillo, pagan mucho más y hay bastantes mas ofertas.

kittet

Hasta hace poco estaba buscando curro de programador y almenos en mi zona (tarragona) a la única gente q buscan es que sepan java o .net. No ví ni un anuncio ni de C ni de C++. Supongo que en Madrid o Barcelona habrá de todo pero vamos aquí hay esto.

Pero claro sino te kieres dedicar a esto, aprende con el que mejor te caiga ;)

GaN2

Yo empece con Pascal en la universidad, continue con C++ en segundo (aun sueño con el puto Borlad, que pesadilla), y este año he aprendido C#,y lo veo muy muy sencillo. Mi proximo objetivo es Java y la certificación SCJP de Programador Java, asi que como opinión personal te recomendaría Java.

De todos modos si quieres programar profesionalmente y tienes los huevos pelaos, aprende Cobold, que trabajo no te faltará xD

Josepanaero

#20, dios, el puto Borland... A mí me lo enseñó un amigo y es un infierno, qué entorno de trabajo más malo... Encima usa sus propias librerías propietarias... No sé, una basura. Se lo desaconsejo a todo el mundo.

RikuTheRonin

Buenas!

Yo aun no se Java, así que te hablo desde la familia de C.

Como te han dicho, C++ es un lenguaje algo más complejo que Java, o demás lenguajes más de moda (vease Python, Perl, etc...), pero te da un mayor control sobre el código, y por tanto una mejor eficiencia (si haces las cosas bien con los mallocs y demas)

http://labloguera.net/blogs/aclemente/archive/2008/01/24/c-c-y-los-punteros-perdemos-las-buenas-costumbres.aspx en este articulo habla sobre eso, y la pérdida de las buenas costumbres en programación, es bastante interesante.

Mi recomendación: sigue en C++, al ser más complicado, cuando te domines bien con los punteros, iteradores, contenedores de la STL, herencia y demás... serás capaz de aprender cualquier lenguaje en 2 dias.

PD: Usa Linux para programar, es bueno para el alma del programador xD

GaN2

No estoy del todo de acuerdo con ese artículo. En la Complutense empezabamos con Pascal, y en segundo tenías C++ en 2 asignaturas, una llamada POO en la que se supone que te enseñaban a programar en C++ y otra que era de prácticas. El tema de punteros y demás se empieza a dar en Pascal muy por encima y se termina de dar en POO creo recordar.

En la que estoy ahora, en Introducción a la Programación se da C#, y por lo menos a mi, me parece bastante mejor que darte un lenguaje obsoleto como es Pascal. Antes de que os podais echar las manos a la cabeza, comentar que en esa asignatura se empieza con pseudocódigo y enseñando al alumno a como resolver problemas de programación con la cabeza y sin usar código, luego esos conocimientos se aplican a programar a C#, y luego en otras asignaturas se explica bastante sobre la programación y los lenguajes de programación en general.

En resumidas cuentas, no se ve nada de punteros en 1º (y creo que en el resto de la carrera en contadas ocasiones), y tampoco me parece que la gente que entre nueva ya empiece siendo malos programadores...

MTX_Anubis

#23 para enseñar programación estructurada, que es lo que te enseñan en cualquier sitio al principio, te da igual que lenguaje sea ni que tenga 50 años y esté obsoleto.

GaN2

Al alumno le motiva bastante más que el lenguaje de programación sea relativamente actual y que pueda empezar a hacer sus primeros pinitos con algo más atractivo que un lenguaje de hace la ostia y un compilador que da miedo. Por lo menos es mi forma de verlo.

MTX_Anubis

#25 pos a mí me parece una tontería, el que se haga algo en casa porque le gusta programar se lo hará le enseñen c, pascal, ada o el que quieras. Al que no le gusta, dar c/c++ su primer año se la sudará que le seguirá sin gustar y vamos es lo que tengo comprobado por mí y toda la gente que conozco xD

pero vamos, que se trata de cómo se aprender mejor y para eso te da igual el lenguaje, cada uno tiene sus cosillas pero si sabes programación estructurada pues te da igual, es tan simple como hacerlo en pseudocódigo, coger un tutorial de un lenguaje que no has visto en tu vida y ale, a traducir. A grandes rasgos es eso, luego cada uno tiene sus cosas claro.

bLaCkH0Le

pasar de c a c++ es cuestion de dias y lo mismo con java. si sabes c, te manejas en c, c++,c#,java. Hace unos dias acabe un trabajo en c# y no lo habia todaco jamas antes. No me supuso ningún problema.

porcierto, gracias Gan2 por la ayudita

Riu

#25 yo creo que el problema son las primeras impresiones yo creo que cualquier lenguaje sea cual sea con el que se empieza a programar te resultara un tremendo coñazo, no por que sea o deje de ser actual, sino por que te requiere esfuero y desde que empiezas a usarlo hasta que te manejas pueden pasar meses dependiendo de la persona, y es ahi cuando ves los resultados.
a mi en particular me parecen todos los lenguajes iguales a la hora de programar , algunos tendran unas opciones o formas de hacer las cosas mas faciles y otros no , pero viene a ser lo mismo si sabes hacer una cosa en uno lo sabes hacer en otro aunque no sea la misma sintaxis o el metodo de hacerlo cambie un poco , solo tienes que ir a google.es y mirar como lo ha hecho otra persona antes que tu y a seguir con otra cosa..

CricK

Mi recomendación es que si en principio te lo estás tomando como un hobby, y una vez que has aprendido c, es pasar a aprender c++.

Me gustaría comentar que cuando se dice que sabiéndote la sintaxis de x lenguaje ya se sabe programar casi en cualquier lenguaje que te pongan delante, es una verdad a medias, y personalmente me parece que es una afirmación bastante desafortunada sobre todo por las implicaciones que pueden tener en la gente que es novata.

Y me explico: puedes coger algún código que hayas hecho con c, compilarlo con g++, y tachan, ya podrás decir que programas en c++, después te leerás algún tutorial de clases, y cambiarás tus structs por class, y dirás tachan tachan, ya se programación orientada a objetos. Efectivamente, ya te sabrás la sintaxis de c++, habrás aprendido ciertas cosas nuevas, pero realmente seguirás siendo el mismo programador de c programando en otro lenguaje..

Esto último, no tiene porque pasarte a ti, lo comento porque es uno de los consejos que me hubiese gustado que me dijeran cuando empecé. Y obviamente si te lo tomas como un hobby, puedes ir aprendiendo las cosas poco a poco como te parezcan sin profundizar en los matices.

Mi briconsejo es que el juego que tienes hecho lo portes a c++, intentando aprender bien en qué consiste realmente c++, que uses clases, la stl, etc, e incluso si te animas, ya que sabes utilizar la sdl, pruebes a utilizar opengl para la parte gráfica. Y por supuesto, sacia tu curiosidad mirándote un manual de java para saber de qué va.

IS4kO

Hazte funcionario, no trabajes

i've said