Principios de Programación

ratontm

Hola, buenas, mirar este año empiezo en la universidad en ingeniería multimedia y resulta que en la carrera hay programación. Pues bien, yo de programar tengo más bien poca idea (algo en html pero muy básico), el tema es si sabéis si quizás me vendría bien leer algo o aprender un poco de programación antes de entrar en la carrera (si es así, alguna recomendación no me vendría mal).

Y, vosotros si habéis hecho o estáis en alguna carrera del tipo cuando empezasteis teníais algo de idea de programar?

Saludos!

1
eisenfaust

Si vas en serio:

Bájate esto http://racket-lang.org/

Y lee esto http://www.htdp.org/

No hay abosultamente NADA mejor para iniciarse.

Después prueba con Structure and Interpretation of Computer Programs. Si no te gusta, tienes Concepts, Techniques, and Models of Computer Programming.

Si sudas del tema y sólo quieres aprobar prueba con http://learnpythonthehardway.org/book/ para ir abriendo boca y ver de qué va esto.

1 2 respuestas
ratontm

#2 Gracias. Otra duda que me surge, conozco varios lenguajes de programación (c/c+ y tal) pero por ejemplo racket-lang, es un lenguaje? Y con lo que descargo (ahora no he podido descargarlo porque no tengo ahora mismo una buena conexión) es para escribir código? Pero que códigos escribo si no conozco ese lenguaje?

Y python sería otro lenguaje, no?

(Igual estoy diciendo burradas pero es que estoy bastante perdido. xD)

1 respuesta
eisenfaust

#3 Racket es básicamente un entorno para desarrollar en Scheme (realmente no, es algo más, pero con esa explicación te sobra xD).

El lenguaje lo aprenderás siguiendo el libro de HtDP, pero la gracia de ésto no es aprender un lenguaje, sino fundamentos de programación.

BLZKZ

#2 para que aprenda racket de ese que se meta con c ¬¬" , ademas de coger las nociones básicas le servirá casi seguro, porque c++/java/c# maman directamente de c

EDIT: y de segundas le metes python, en serio? Macho quieres recomendarle cosas de uso mayoritario?

C = estructurada+modular algo que le servirá para aprender conceptos y orden para luego dar el salto a las que he dicho, que son las de uso común en una carrera.

1 2 respuestas
eisenfaust

#5 Lo que pide son principios de programación, y en mi opinión no hay nada mejor que eso.

¿Por qué debería empezar con C y Java? ¿Qué va a aprender exactamente de ellos? ¿A hacer el capullo con variables y sistemas de tipación mediocres? ¿Coger malos hábitos? ¿Patrones de diseño obsoletos? Tristísimo que en una carrera se den esos lenguajes. Un poco más y le recomiendas Pascal.

2 respuestas
BLZKZ

#6 he dicho c, y ya he explicado el porqué, si no eres capaz de leer no es mi problema. Y los sistemas de tipacion mediocres como tu dices, y uso de variables es lo que se usa en el 99% de los casos, tanto en el ambito universitario como el laboral. Que te guste mas o menos no es mi problema, no me verás aqui recomendandole haskell por muy cojonudo que me parezca, dado que su aplicación tiende a cero y encima el paradigma de programación que aprenderías seria totalmente contrario al que usará durante el curso :)

1 1 respuesta
B

Otro voto para C. Ya que quieres empezar, empieza por lo más sencillo y que va a tener utilidad más adelante.

Lo que puedes hacer? Pues cualquier tontería con la que probar lo que has hecho, no es que tenga que tener una finalidad como los programas que usas. No te agobies porque en todas las carreras enseñan a programar desde 0. Es más, si miras algo por tu cuenta luego seguramente te aburras yendo al paso de tus compañeros. Cuando deberías esforzarte es mientras lo estás dando, no antes.

LOc0

http://algoritmia.net/

Yo aprendí a programar en C cuando llegué a la uni, pero claro, combinándolo con otras asignaturas como algoritmia y estructuras de datos. Por eso, estoy con #5 (qué raro). Para las "chorradas" que se escriben al principio mejor que lo haga en C y de paso aprende una sintaxis que se usa en todos lados. Pero repito: ALGORITMOS Y ESTRUCTURAS DE DATOS de la mano y si es posible con un profesor (o profesora :P) de carne y hueso. (Hay libros cojonudos, pero para aprender de cero no lo recomiendo).

Salu2 ;)

eisenfaust

#7 Pues visto lo visto, hice bien en estudiar fuera :)

1 respuesta
elkaoD

#10 sure... ¿Me explicas qué te aporta para el ámbito empresarial? Me parece genial para un Ingeniero Informático conocer diferentes paradigmas, ahí radica el poder del I.I., en el conocimiento hasta de la más oscura tecnología que (podría) ser la idónea en el caso correcto. Por eso se dan paradigmas en la Ingeniería Informática, y hemos tocado Haskell y Lisp entre otras historias, pero...

¿Para qué quiere todo eso un Ingeniero Multimedia o lo que cojones vaya a hacer #1?

Para lo que va a tocar él, C y posteriormente Java o C++ son sus únicas opciones. No es que sea recomendable, es que es lo necesario. Pregúntate esto: un ingeniero multimedia, ¿qué va a programar?

eisenfaust

La verdad es que suena jodidamente Dilbert eso de ingeniero multimedia.

B

Por lo que he leido esa carrera está enfocada al desarrollo y diseño web,publidad,etc.
www.ua.es/oia/es/grados/ingenieria_multimedia.pdf

De toda la vida de dios en las ingenierias se da modula/2 como introducción, c y luego java. Como está enfocada al diseño dudo que te las metan así que yo aprenderia php o asp. De todas formas en el primer año de ingenierias no se toca programación, te comerás mil libros de conceptos matemáticos físicos.

Gusete

#1 No te preocupes, si tu carrera no tiene como prerequisito que sepas programar (no se de ninguna), te lo enseñaran en la carrera. Aunque es beneficioso, no creo que te vaya a suponer mucha ventaja. Si te preocupa mucho, mira a ver que lenguaje usan en la asignatura de programacion y echale un ojo.

Mi consejo, si decides desarrollar por tu cuenta, hazlo porque te divierte no como una obligacion.

De todas formas, y abro paraguas, creo que el primer lenguaje que deberia aprender un ingeniero informatico es ensamblador y de ahi para arriba. Es de verguenza que un ingeniero salido de la carrera no tenga conceptos basicos sobre arquitectura pero si sepa como hacer una aplicacion web en N lenguajes diferentes.

4 respuestas
B

#14 Hombre teniendo en cuenta que en el 99% de los casos un desarrollador NO tocara ensamblador a no ser que se meta a programar dispositivos embebidos es normal. De todas formas no se como estará ahora pero en la ingenieria informática el primer año tenias arquitectura de computadores.

1 respuesta
Gusete

#15 Pero en un 100% de los casos van a trabajar con ordenadores, ¿no? :) No es por aprender ensamblador sino porque te obliga a tener conocimientos de como funciona un ordenador.

"De todas formas no se como estará ahora pero en la ingenieria informática el primer año tenias arquitectura de computadores. "
Donde te enseñan complemento a dos y poco mas... no? ;) Se da muchisima mas importancia a las especialidades como puede ser ia o aplicaciones web que a los fundamentos.

1 respuesta
Soltrac

#16 Yo no he tocado nada web en informática en mi vida, y de IA, tan por arriba que me da lástima porque es un campo precioso.

MacSpawn

#14 jajaja vais a acojonar al chaval... dejaos de ensamblador y tonterías. Lo que ha dicho eisenfaust es bastante correcto. No se cuanto tiempo hace que habéis acabado los estudios, pero desde hace dos años, al menos en el ámbito universitario, a los de primer año se les enseña con Python (por ser fácil y sencillo de comprender) junto con otro lenguaje, que suele ser C o Java.
Yo en su momento ya discrepé y comenté que el Python es demasiado sencillo, ya que es un lenguaje de demasiado alto nivel. Pero su similitud al pseudocódigo y su rápida ejecución hacen q sea idóneo para primerizos.

Cualquier cosa que aprenda por su cuenta, tanto en C como en Java, no va a ser mucho más de lo que aprenderá a hacer en python. O es que os pensais que va a entender por él solito lo que es un puntero o lo que significa lenguaje orientado a objetos, sin que alguien se lo explique?

3 respuestas
skv

#6 No es por nada pero Pascal es precisamente uno de los mejores lenguajes para aprender a programar porque obtienes buenos hábitos de programación debido a sus características (fuertemente tipado, etc). El paso de hacer un programa básico en Pascal a hacer el mismo programa en C es 1 hora.

#14 No estoy de acuerdo con enseñar Java o Python (lenguajes de alto nivel) a gente que empieza a programar. Programo habitualmente en ambos (sobre todo Python) y está muy bien eso de tener un objeto lista, pero ¿como está organizado eso por dentro? Con x método se inserta al principio o al final? Gente novata la verás no preocupándose por esas cuestiones porque simplemente "funciona". C te obliga a construir todas las estructuras de datos y saber como funciona todo por dentro.

2 respuestas
RoninPiros

#14 +1 en mi primer año de carrera uno de los profesores nos dio ensamblador, y es como si te cambiase la vision de todo el resto de lenguajes, en serio todo se ve mucho mas claro si te dan un poco la chapa con ensamblador antes es como si lo estructuraras de otra manera todo.

3 respuestas
Gusete

#18 #19 En este caso concreto yo creo que lo mejor que puede hacer #1 es no preocuparse, ya le enseñaran lo que necesite en la universidad. La mayoria de la gente que entra, por lo menos que yo haya visto hace años, no sabe programar.

Ahora, ¿cual es el mejor metodo para enseñar a un ingeniero a programar? Teniendo en cuenta que un lenguaje es una herramienta mas y lo que se le debe enseñar a un ingeniero son fundamentos, creo que un deberia comenzar viendo lenguajes de muy bajo nivel asociado a las clases de arquitectura y a la vez de alto nivel e interpretado asociado a clases como algoritmos y estructura de datos.

Para el lenguaje de bajo nivel yo escogeria ensamblador(usaria mips por ejemplo). Basicamente, por lo que he dicho que te fuerza a entender conceptos sobre como funciona un ordenador. Para el de alto nivel, como dice, MacSpawn, python es una muy buena opcion. Por ejemplo, en las clases de estructura de datos en vez de hacer pseudocodigo se podria usar python para implementarlas en "pizarra" y luego en practicas usar C.

#20 yo creo que lo di en 2º o 3º, usando un pico :)

1 respuesta
skv

#21 De acuerdo en lo de que no se precoupe, yo entré en 1º sin haber tirado una linea de código en mi vida. Sin embargo, ver ensamblador lo primero de todo me parece un error, primero necesitas nociones de estructura de computadores (memorias, puertas lógicas, etc)

1 respuesta
MacSpawn

#20 Claro que te cambia la visión...pero el chico sólo va a hacer multimedia, va a tener 2 asignaturas de programación. No va a hacer informática. No creo q necesite tanto. Es mi opinión.

1 respuesta
Gusete

#22 ¿Que te parece verlo al mismo tiempo? Estudiar arquitectura y las practicas usar ensamblador.

#23 Seguramente tenga que ver fundamentos de computadores.

1 respuesta
BLZKZ

#18 En madrid no se enseña phyton, se enseña C

#27 sí tardaremos, porque se ha estado dando ada/pascal (en según qué universidades) hasta bolonia que han implantado C como base

3 respuestas
skv

#20 Estoy de acuerdo, básicamente el debate se desvió ya desde el punto de vista de Ing. Informática. En su caso probablemente me enteraría del lenguaje que van a usar y me pondría a mirarlo.

#24 Es lo que se suele hacer, pero antes de Arquitectura de ordenadores necesitas una asignatura de los fundamentos, que no debería tener prácticas de ensamblador en mi opinión.

#25 +1

MacSpawn

#25 No tardaréis...

#25 Enserio? Ni tan siquiera Java? Sólo curiosidad eh... pero me parece algo raro ^^ Qué universidad es?

2 respuestas
BLZKZ

#27 java y c++ se da en adelante, estamos hablando del primer año no de lo que se da o puedas dar.

Yo he estudiado pascal y c/c++ como obligatorio en la facultad, los de sistemas daban poo con java en vez de c++. Pero vamos... y luego por optativas hay para php+js/ajax, java, haskell... casi lo que quieras vamos.

ratontm

Vamos a ver, ya sé que en ingeniería multimedia no aprenderé demasiado de programación, pero a parte de eso, me gustaría por mi cuenta aprender algo más de programación porque me gusta el tema y tal. Pero vamos, eso puede que más adelante, me parece que ahora esperaré a ver que tal voy en la carrera.

Deoxys

En una semana ya tienes la programación estructurada. Luego ya es meterte a objetos y demás mierda, que es un poco más complicado.

Usuarios habituales