Aprender a programar

bigotaussen

Buenas noches. Abro este tema porque necesito de vuestra ayuda. Siempre he estado interesado en el tema de la programación, de hecho estoy estudiando la carrera de informática en la universidad, pero apenas estoy en el primer año y estoy con fundamentos de programación y la verdad es que me esta aburriendo un poco, tengo ganas de entrar un poco más en materia. El problema es que me pongo a buscar en internet y no saco ninguna conclusión de donde empezar.

Este primer año en teoría empezaremos en Java. Mi objetivo final es aprender a programar en el mundo de los videojuegos, pero actualmente quiero aprender de todo un poco para poder saber a ciencia cierta hacia donde tirar, ya que puede pasarme de que a lo largo del camino me de por cambiar de opinion.

La cosa es si me podéis dar una directrices hacia que lenguajes tirar para comenzar en las distintas ramas de la programación. Se que estoy poniendo algo muy genérico, pero agradecería que me echarais una mano

eZpit

La teoría es muy importante. Asentar unas buenas bases es más importante que aprender un lenguaje en particular. Una vez tengas una base teórica de como funciona todo, aprender un lenguaje es trivial.

Dado que vas a trabajar con Java y ademas te molan los videojuegos, empieza a mirarte la programación orientada a objetos. Si quieres un lenguaje en particular, pues Java o C++

PD: Como te ha dicho #3, si no te apetece estudiar teoría a pelo, lo mejor que puedes hacer es ponerte a hacer un juego con cualquier lenguaje (java mismamente) e intentar profundizar en todas las cuestiones y dudas que vayas encontrando para ir asimilando y asentando teoría y conocimientos.

1
Maaarc

Pues si te enseñan java, profundiza en java, con las cuatro cosas que sepas hacer ya puedes hacer juegos muy simples y aprender a manejar mejor bucles y demás, tampoco creo que te hayas de liar con librerias especificas si no dominas java, así que mi consejo es ese, con lo que ya sabes haz un "space invaders" o "Hundir la flota" que yo los hice en C a pelo así que supongo que en java también se podran hacer.

1 respuesta
B

Resuelve los problemas de uno en uno.

Como te dicen por arriba, si este primer año estáis usando Java, te haces un favor profundizando a tope en el. Aprende a usar bien Eclipse, porque te va a ser muy útil para hacer las prácticas y, también, cuando programes juegos.

Hay un libro, Invent With Python (http://inventwithpython.com/chapters/), que tiene ideas de juegos para programar solo con las estructuras básicas del lenguaje y print. No te servirá al 100% porque usa alguna azúcar sintáctico de Python, pero el tipo de juegos al que apuntaría serían esos.

Pero, y te lo digo yo que llevo 10 años programando en C++, Java es un buen lenguaje para empezar a hacer juegos. Pero yo todavía no me liaría a mirar librerias para hacer juegos (tipo libgdx) hasta que no tengas un poco de soltura escribiendo código, depurando y moviendote por la documentación.

Si quieres un libro bastante bueno para ponerte con Java, mirate Head First Java. Que no te den miedo los dibujitos y el aspecto, es un libro muy bueno.

Johnny_Darko

Aquí otro novato más o menos igual. En mi poquísima experiencia, te puedo decir que hagas caso a lo que dicen los compañeros. Yo he empezado con Python y un curso de programación de videojuegos de Coursera, y acabé desesperado. Porque faltaba la teoría y la base, más que nada. Ahora, después de terminar el curso, estoy como loco intentando averiguar por dónde pillar una base de conocimientos y "buenas prácticas" para arreglar las manías que ya he ido pillando. En cualquier caso un mundillo apasionante esto de programar (yo tengo formación científica, así que nada de base de informática).

DantePD

Hace un tiempo cree un post sobre aprender a programar en python.

http://www.mediavida.com/foro/estudios-trabajo/aprender-a-programar-python-465965

Tengo que actualizarlo y crear uno sobre Ruby y Rails que es lo que estoy aprendiendo ahora.

IMHO para aprender a programar tienes que programar. Tirarse la mitad de la carrera sin tocar codigo es un sinsentido.

1 respuesta
Josekron

No te calientes la cabeza y sigue con Java porque es un lenguaje fácil, potente y dispone de muchos frameworks. Además, en la inmensa mayoría de las asignaturas acabarás usando Java por lo que te servirá para desenvolverte mejor y así en próximos años o en verano poder dedicarle tiempo a C++ que es lo que verdaderamente se usa si quieres llegar a ser un profesional. Ponerte con C++ sin base no te lo recomiendo porque vas a perder mucho tiempo y vas a dejar de lado tu prioridad que es centrarte en la carrera.

Y por último, ve ahorrando para un buen master en videojuegos para cuando acabes xD

B

#6: Tirarse la mitad de la carrera sin tocar codigo es un sinsentido.

Esto no pasa actualmente. De todas formas no generalicemos, hay mil ramas dentro de la informática y lo cierto es que para ser un maestro de, por ejemplo, Machine Learning o Formal Methods no tienes que estar todo el día picando código. Cometemos el error de pensar que la carrera es una fábrica de code monkeys (léase no en el sentido de ser gilipollas, si no en el sentido de programar pero no tener ni idea de nada remotamente matemático), y para eso ya está la FP.

1 respuesta
B

Con Java podrás probar tus programas y/o juegos en tu móvil Android :)

Drhaegar

Te recomiendo que empieces por Java, es uno de los lenguajes más versátiles y la curva de dificultad no es muy alta. Además, si te atascas y no sabes como hacer algo hay miles de tutoriales en español.

Te recomiendo que empieces por aquí, tiene un motón de ejercicios explicados paso a paso.

http://www.javaya.com.ar/

bigotaussen

Muchisimas gracias por vuestra ayuda. Creo que con lo que me habeis comentado al menos tengo entretenimiento hasta cuando la carrera tenga un poco mas de sustancia. Saludos!

B

#8 Cometemos el error de pensar que la carrera es una fábrica de code monkeys (léase no en el sentido de ser gilipollas, si no en el sentido de programar pero no tener ni idea de nada remotamente matemático), y para eso ya está la FP.

Jaja.

¿Has pasado por ambos? ¿Harías un FP si no pudieses permitirte una carrera universitaria?

2 respuestas
Josekron

#12 Yo si he pasado por ambos (FP superior y este año espero terminar la carrera) y lleva razón. No en el mal sentido, simplemente dos años no dan para mucho y te enseñan a programar. En la carrera te enseñan a solucionar problemas.

1 respuesta
B1x1t0

#13 La carrera en lo que a código se refiere se toca bien poco es verdad... se centra más en metología, saber llevar el proyecto, y miles de algoritmos. Pero lo de que para picar código está la FP no lo veo así :/

2 respuestas
Josekron

#14 Me pasé del plan antiguo al nuevo y te aseguro que eso ha cambiado bastante, ahora se programa mucho más. Pero en general si, la carrera se centra más en la metodología, en analizar un problema y encontrar la mejor solución. El lenguaje a usar no debería ser un problema.

Eso es como todo, habrá ingenieros que no sepan hacer nada y técnicos que sean unos profesionales. De hecho, en mi carrera los que vienen de FP no les va nada mal. Pero hay que dejar claro la diferencia entre ambos y no sentirse ofendido.

1 respuesta
B1x1t0

#15 Yo también empecé en la antigua, lo deje y me metí en el FP superior y ahora estoy terminando el nuevo grado de informática... No me siento ofendida por ninguna de las partes, no te preocupes :P

También creo que nadie puede 'enseñarte' a programar, puede darte la metodología, enseñarte a no hacer código espagueti y mil cosas. Pero creo que es algo que te tiene que gustar ante todo y tener capacidad de ser autodidacta.

bornex

Ya que habláis aquí del tema de librerías en Java, he probado LibGDX y Slick2D y sinceramente me manejo mejor con Slick2D, que me recomendáis, ¿alguien que sepa como hacer una buena clase de físicas para un juego de plataformas?

PD: #1 Yo estoy en 3º de Grado en Ing. Informática, y me enseñaron Java. Un consejo, haz todas las practicas y estudia Java a fondo porque es con el que te vas a examinar. Una vez apruebes EDA 1 y EDA 2 (asignaturas de 2º) tendrás base suficiente para hacer lo que te de la gana. Al final y al cabo puedes usar Java y luego cambiarlo a C++ así que por eso no te preocupes.

EDIT: #14 ¿En la carrera se toca poco código? ¿Estas seguro? Porque yo he tocado muchísimo código tanto en las asignaturas puramente de programación como en otras asignaturas como Tecnologias web, IA, y en modelado y diseño de software también.

2 respuestas
B1x1t0

#17 Yo estoy ya en cuarto y si se toca código, pero no lo picas. Te centras en lo importante. Pero es lo que sigo diciendo, que lo dan de manera más metódica. Ellos no te van a dar lo que te gusta ni a profundizar de ciertas maneras.

1 respuesta
B

#12: No, no he pasado por ambas. Si no pudiese permitirme hacer la carrera utilizaría las becas, si no pudiese entonces haría FP y utilizaría medios como Coursera para aprender un mínimo de estructuras de datos y algoritmos (a nivel matemático), amén de otras disciplinas.

Si solo sabes traducir algoritmos a código vas a comer mierda toda tu vida. No me imagino a un tío de FP haciendo prácticas en el CERN, pero sí que me imagino a uno de carrera (ya sea informática, teleco o matemáticas).

En mi facultad los de ciclo en general son bastante malos estudiantes. No todos, ojo. Y desde luego que creo que la FP es una fábrica de code monkeys, es que es lo que es. Es más, incluso la carrera es una fábrica de code monkeys porque hay muchos que la aprovechan de la manera equivocada (vamos a aprender herramientas, no a pensar).

Casi toda la gente que me ha defendido los ciclos por encima de las carreras no conocían otra cosa, me explico: si eres un tío espabilado con las bases que te den en el ciclo y tu trabajo llegas a donde quieras, y a lo mejor has llegado lejos pero no lo suficientemente como para impresionar a alguien con mucha ambición. El problema es que aquí se cree espabilado hasta el tato, y lo cierto es que en general nadie es un genio. Cuánto más aprendas y cuánto más te esfuerces por aprender mejor.

No conozco a nadie de ciclo trabajando en Google, Yahoo o Microsoft (ojo, y sí que hay mucha gente sin carrera en estas empresas), pero sí conozco a muchos con ingenierías. Es más, si quiero a un informático competente prefiero pillar a un licenciado en matemáticas que sepa pensar y enseñarle a programar, que pillar a un tío que sepa programar y enseñarle a pensar. Y creedme que estas empresas también lo prefieren.

RPV: Lo que quiero decir con todo esto es que eso de criticar a la carrera por no tocar código es absurdo. Aprender a programar es profundamente fácil (cualquier panoli de industriales te tira cientos de líneas). Obviamente aprender a programar bien es mucho más complicado, y no creo que puedas considerarte un buen programador sin saber mucho de diseño, de metodologías y de algoritmos y estructuras de datos (y esto es prácticamente lo único que preguntan en las mejores empresas del mundo).

En el ciclo esto no existe, o en una forma muy light. Lo tengo discutido con muchos compañeros que han hecho ciclo y es mi conclusión. Vaya por delante que respeto a muchísima gente con (o sin) ciclo, que son auténticos máquinas y sienten una gran pasión por lo que hacen. Muchos son más inteligentes y con más experiencia que yo, y solo podría aprender de ellos.

#20: En realidad a veces tienen más que ver de lo que parece. Hay niveles técnicos donde no puedes acceder sin saber la ciencia que hay detrás. Aunque en general estoy de acuerdo contigo, y es lo que estoy diciendo. Hay gente que quiere programar webs, disfruta haciéndolo y es buena en ello (y gana su buen dinero); y después hay gente a la que le gustaría más demostrar formalmente por qué el coche este que conduce solo no se va a estrellar si encuentra a una señora con un bebe delante. A mí me gustan ambas cosas, y no me gusta que se critique la carrera por no ser un FP de 5 años.

1 1 respuesta
Spacelord

Yo tengo la esperanza de que, algún día, la gente entienda que no es lo mismo un técnico que un ingeniero, que no se les forma para lo mismo y que ambas disciplinas sólo se intersectan lo justo.

Yo soy técnico porque no quiero ser ingeniero. Pero desmerecer una opción por ser mejor que la otra, cuando apenas tienen que ver, es de ser muy mandril.

5 1 respuesta
bornex

#18 Si te refieres a coger y hacer un AVL desde 0 o implementar los RedBlack desde cero en eso tienes razón, pero joder, yo código he picado como un negro. También es verdad que, no te enseñan ha programar juegos ni mucho menos, pero con la base que te dan en menos de 1 mes deberías saber.

Ronso

Ya empezamos con el tu mas... centremonos pls.

1
B

#17 Supongo que sabes que las "físicas" de los juegos de plataforma son "de mentira". Los mejores plataformas usan físicas "tuneadas" para que el juego se controle mejor. Usar física de verdad no suele ser muy buena idea (aunque quizás quieras utilizar un motor de física como Box2D para detectar las colisiones). Tienes un montón de tutoriales: http://koboldkit.com/2013/08/indie-roll-guides-making-2d-platformer-games/

#19 A mi me cae un poco lejos la carrera (10 años), pero diría que, por lo que recuerdo no había mucha diferencia entre la gente de FP y Bachiller. Lo que "perdían" por el lado de mates, lo ganaban en las asignaturas de "programación" y tener 2 años más de madurez que, a los 18, se nota(ba) bastante. Al final, nos acabamos sacando la carrera gente de los dos lados y, seguramente, por cifras, en porcentaje acabaron más de los de FP (pero esta estadística tampoco tiene mucho sentido).

Yo también soy un gran defensor de la carrera, al menos como estaba planteada cuando yo la hice. Toda la teoría de algoritmos, estructuras de datos, grafos, complejidad o compiladores son útiles. La cosa es que hay cierta obsesión por comparar la "employability" sin experiencia previa de un ingeniero vs un FP tan sólo en base a su habilidad desarrollando aplicaciones CRUD. No tengo nada claro que utilidad tiene esto cuando, a la hora de la verdad, al menos aquí en Barcelona, tenemos consultoras a expuertas.

Lo que me parece más interesante, es como dice oip mirar las empresas en las que quieres trabajar (que no tiene porque ser Google, Yahoo o Microsoft) y ver que piden. Si en estas empresas quieren ingenieros programando quizás tienen algún muy buen motivo. Y, ojo, no cualquieras. Algunos de los programadores más conocidos (Rob Pike, Douglas Crockford, Herb Sutter) están en estas empresas.

Si discrepo, por eso, sobre el argumento de "solo preguntan sobre algoritmos y estructuras de datos". Es en gran parte cierto, no lo niego. Pero eso es una limitación del formato de la entrevista. Las empresas necesitan algún tipo de prueba que pueda hacerse en 45 minutos. Así que es eso, a medias con preguntas sobre diseño orientado a objetos.

1

Usuarios habituales