1293
Interesante artículo que reflexiona acerca de lo que se enseña en los primeros cursos de las carreras de ingeniería informática y similares, una opinión sobre la abstracción conceptual que la programación ha sufrido a lo largo de los años.
menéame
quedan facultades buenas
¿Por qué tanta fijación con C y no se da nada de ADA? Ojo, que soy programador de C, pero Ada siempre me ha gustado mucho
Y si, yo he colgado el otro artículo hoy y ya no colgaré más hasta pasado un tiempo asi que emilius podrá estar tranquilo que no molestaré más por ahora jejeje.
Por otra parte enseñar C como primer lenguaje de programación es lo más nefasto que se puede hacer.
#16 De nefasto nada. Al contrario, es mejor empezar por lo hardcore y luego pasar a lenguajes más suaves, que al contrario: Sería muy peligroso acostumbrarse a las std::list y que luego te hagan hacer una lista en C con punteros. Mejor tener una base en condiciones como la que da C a pelo.
Está claro que los lenguajes y entornos de desarrollo han evolucionado notablemente y eso también se nota con el manejo de la memoria dinámica. El desarrollo en Java o .Net es más rápido que en C++ por este motivo, pero los programas en C++ con una gestión de memoria manual pueden ser más rápidos y eficientes. Bajo mi punto de vista, como ingeniero que maneja bien los tres lenguajes, prefiero usar Java o .Net y comprarle al cliente un Quad Core
El resto de materias la da gente que no tiene ni puta idea. Sigue "enseñando" Oracle la Gadeshi?
Intentan que no hagamos mucho uso de la STL y sus maravillosos contenedores y tal, sino que, si necesitamos algo, lo implementemos nosotros. Ahora acabamos de terminar una práctica (un tetris muy chulo) en el que estaba terminalmente prohibido el uso de la STL. Ésto último quizás no venga mucho al cuento, pero quería que supierais que al menos aquí se enseñan un poco las tripas del lenguaje.
Python por ejemplo te da una versatilidad inimaginable, te pueden llamar para que hagas una modificacion al programa que haga mil cosas y en una tarde la tienes lista.
C y C++ (a bajo nivel: punteros, etc...) está bien, a mi modo de ver, para gente que se va a pegar con el hardware.
Y Python es un buen lenguaje para comenzar porque ENAMORA, conozco muchos casos (yo uno de ellos
Eso sí, antes de dar cualquier lenguaje de programación hay que entender cómo funciona a nivel interno el software con el hardware.
Y la verdad ... los punteros se puede decir que forman parte de la base, pero de ahí a decir que vas a programar peor por no haberlos empleado (o programar mejor por haberlos "visto") hay un trecho muy grande que no me atrevería a cruzar.
Por ejemplo, en ningún lenguaje de programación de los que he utilizado "profesionalmente" he utilizado directamente los punteros (al menos directamente, sí he utilizado componentes que los usan), y la gestión de la memoria casi siempre se limita a hacer un .free de los objetos que has dejado de utilizar (por poner un ejemplo), y no creo que la calidad de un algoritmo que pueda hacer se vea afectada por eso.
Igual conceptualmente tiene un sentido que se vean, pero igual sentido le veo a que se vea la programación orientada a objetos, que es lo que realmente van a "tocar" cuando trabajen.
Y sí es verdad que se está perdiendo el concepto de optimizar las cosas, pero según he visto, eso lo pierde igual la gente que ha visto C que la que no (mandan las prisas, no otra cosa).
Más me preocupa a mi que por ejemplo no se vea NADA de optimización de base de datos (menudas selects hacen algunos iluminados), que hacen más daño que la no-optimización de ciertos algoritmos.
De todas maneras la orientación de la mayoría de lenguajes de programación va más encaminada a hacer programación de alto nivel, no volver al ensamblador. Puede ser importante verlo, pero la verdad es que me parece más por nostalgia que por real aplicación posterior de esos conocimientos ...
Seguro que nosotros nos habremos perdido miles de cosas que generaciones anteriores habían estudiado en la universidad y se estiran los pelos de la misma manera diciendo "pero como pueden NO haber visto X".
Sobre lo de la Esther Gadeschi no lo sé, no he llegado a Base de Datos todavía
Sobre lo de que el artículo es "obcecado" en C C++: sí, es evidente, pues ese es su título jajaja.
for(int i=0;i<100;i++)
printf("/n"); //La barra es al revés que no me deja ponerla jeje
y eso sin contar las reservas de vectores y matrices 1000dimensionales....
Por alguna razón se llama "Metodología y Tecnología de la Programación" y no "Chapurrea con C"
Propongo que publiquen el código más burro que hayan visto nunca
while(1)
printf(" ");
Limpia mejor
Y ensamblador (mips) desde primero.
Te quieres hasta morir
Yo he cursado DAI y primero es todo C con punteros y luego en la ingenieria tecnica en Fundamentos de programación 2, Programación orientada a objetos, Programación y estructuras de Datos y en Diseño y Analisis de algoritmos es todo C++ puro ¿Que facultades no dan C++? porque me quitan la mitad del temario
No se en que universidades han hecho el estudio pero en España no.
¿Pasar un puntero por referencia? Será pasar una variable por referencia. Un puntero y una referencia son lo mismo. De hecho, en Java todo son punteros.
int *puntero;
...
funcion(&puntero);
#54 Les molesta que sepamos hacer también su trabajo </talibán>
Respecto a Gadeshi, ya os digo yo que sí, aunque ahora es Rioja el que da BD I. Ella sigue con su metodología "Pregunta en el aire"
Oye, que de sufridos UCAdistas semos ¿no?
#TODOS: Perdón por el oftopic
"C y C++ lo tienen todo, [..] y sobre todo, lo que más me gusta: son lenguajes fuertemente tipados."
"Leí un artículo por ahí de alguien que aconsejaba aprender python como primer lenguaje y me echaba las manos a la cabeza. Lo no tipado no me parece elegante, el alumno se creará malos hábitos."
yo si que me echo las manos a la cabeza. Python esta muchísimo mas fuertemente tipado que C y C++. Precisamente, las guarradas que te deja hacer el compilador de C/C++ con respecto a los tipos es uno de sus mayores peligros para los novatos.
Y yo, como soy una enamorada de los punteros y de lo que puedes hacer con ellos (sobre todo después de una asignatura de diseño de sistemas operativos muy particular), sigo con mi C de toda la vida... aunque creo que voy a tener que empezar a usar C# (porque en lo que hago todo el mundo lo usa, así que si quiero reutilizar sus códigos o para que ellos usen el mío es lo más sensato...)
C rocks!!!
Yo no podria decir nada bueno de Gadeshi, no se me ocurre, excepto que me debe una disculpa publica.
Gracias a todos.
Saber cómo están organizadas las cosas en memoria es FUNDAMENTAL y todo el mundo debe tener un conocimiento mínimo de lo que se trae entre manos.
-"En mis tiempos no programabamos con estas tonterias. Lo haciamos a base de 0`s y 1`s. Y a veces ni unos teniamos. Yo escribi un programa de una agenda unicamente a base de 0."
-Usted al menos tenia 1`s. Nosotros teniamos la I mayuscula.
O algo asi.
Edito:
books.google.es/books?id=TsKoTSwET2YC&pg=PA193&lpg=PA193&d
A mi me parece bien empezar con C ya que luego pasar a otros lenguajes es más fácil que al revés.
Agur
Vamos, completito... y yo no veo bien empezar con C, la verdad, me parece un acierto empezar con Java, un lenguaje sencillo que te permite aprender los fundamentos y, sobre todo, orientación a objetos. Mucha gente que viene de programación estructurada luego no pilla los objetos bien, y creo que tener clara la POO es, al menos, tan complejo como acordarte de liberar memoria (y si no estais de acuerdo, tendriais que ver las barbaridades que hacen algunos)
Saludos!
void main()
{
printf("Hola mundo");
printf("Este es mi primer programa C");
}
En cambio sí te enseñan (en 2º y 3º) ensamblador de 80x86 y DLX, CAML, LISP, Prolog... cómo mola esto de la Universidad
Llevo 3 años y estoy en 3º, así que esto es algo actual y no un lejano recuerdo jaja
Esto lo haremos con un vector --perdón, puntero, perdón, perdón pun- perdón pun- perdón puntero, perdón, perdón pun- perdón puntero, perdón, perdón pun- perdón perdón!
Y la cosa va para peor: los nuevos programadores no tienen ni idea de que es una lista doblemente enlazada o un grafo en el fondo.. solo usan el TList, el TTree o como se llamen esas APIs afeminadas para manejar estructuras de datos que te lo hacen todo.
Los punteros son un detalle particular del lenguaje que se usa, en realidad no es parte del problema a resolver, sino es complejidad añadida por la herramienta para resolver el problema.
A mi me da igual que se enseñe en Java, en c, en Modula 2(con el que yo aprendi en la UMA), o en Lisp(como en el MIT) lo importante es aprender a resolver problemas. Y de eso es lo que deberia ir un primer curso de programacion.
Cualquier otra cosa nimios detalles.
Explicame tu para que me sirve reimplementar una lista enlazada?
DRY (Dont Repeat Yourself)
En Java por ejemplo alguien que no ha dado EDA que suele ser la asignatura donde más se pelea uno con estructuras de datos complejas, difícilmente puede entender Collections. Si no sabes lo que es una lista enlazada y cómo se implementa, seguro que te da igual usar ArrayList que LinkedList.
Yo creo que sí es importante haber trabajado con punteros. En Java trabajas con referencias a objetos pero no deja de ser parecido, ¿os suena NullPointer exception?
Por otro lado, si intentas decir que no interesa en absoluto la diferencia entre LinkedList y ArrayList... espero que no tengas que trabajar en proyectos "serios". Existen grises, ni saberse al dedillo las implementaciones ni ser un ignorante total de EDA. Claro que para entender las implementaciones resulta que es necesario haber jugado con ellas. De lo contrario supongo que también te quejarás de muchas otras cosas que te hicieron estudiar en la facultad.