› Foros › PC › Software libre
Lk2 escribió:Mira, dile a tu profesor que si os va a hacer aprender programación con Pascal ... que es para matarlo. Ya puestos que os enseñen ADA, o ¿por qué no el vetusto antecesor de C, B?
En serio, es dificil, y más si dices que es Ingeniería del Software, que creo que herramientas Case que generen código y diagramas UML para Pascal ... no lo veo
Con vicios me refería a que el C traga con muchas cosas. Puedes Asignar un char a un int. Puedes recorrer una cadena como si fuera un array. Luego en otros lenguajes no puedes hacer esas cosas y es un lío.
Que es poco didáctico. Pienso que es mejor comenzar con un lenguaje fuertemente tipado, y luego continuar con C. Siempre es mejor que el alumno se habitue a usar las instrucciones de conversión de tipos y de tratamiento de cadenas para luego aprovechar las facilidades que brinda C, que no aprender las cosas "al estico C" y luego ver que no funcionan en los demás lenguajes. El proceso de adaptación al nuevo lenguaje es más costoso así que al contrario.
yanosoyyo escribió:Iba a decir que en la Universidad de La Coruña empiezan/empezaban con Pascal pero creo que el autor del hilo también es coruñés.
Ferdy escribió:Eso es completamente falso. Ejemplo de la vida real:
Mi primer lenguaje fue C y ahora entender cualquier lenguaje es cuestión de una introducción + referencia + el código fuente de alguna implementación si necesito saber hasta el más mínimo detalle. Es así de simple.
Ahora busca una persona que solo sepa un lenguaje fuertemente tipado (no C) y enséñale el código del kernel o de cualquier software REAL (no, el hola mundo no es REAL). Y no sabe ni por dónde empezar a leer.
Es así de simple, programar no es hacer puzzles, si sabes qué es lo que está ocurriendo en cada momento, C es muy fácil. Es el lenguaje más fácil que conozco. (Incluso más simple que haskell98).
Para aprender lo básico, un lenguaje menos "críptico" es mucho mejor.
Ejemplo: En cualquier lenguaje, el "input" se hace con una instrucción pasándole la variable donde cargar la entrada. En C se pasa la dirección de memoria de la variable. O le profesor dice "os lo creeis de momento" o explica a alumnos que no tienen ni idea de progamación todo el asunto de los punteros, antes de tiempo. El alumno se frustra y se hace un lío.
Ningún informático conoce solo un lenguaje de programación, y tarde o temprano pasará por C. Para entonces su cabeza estará bien estructurada y no tendrá dificultades para entender qué es lo que está pasando en cada momento.
Debes tener en cuanta que no todo el mundo está igual de dotado para la programación.
Ah, no todo el software real es una implementación de kernel, ni todo el software real esta escrito en C. A mi me ha tocado trabajar en VB6, Dephi y Java, y de momento no en C.
Ferdy escribió:Lo bueno de C es que no es críptico... está todo muy claro. De hecho lo bueno es que puedes ir traduciendolo mentalmente a ensamblador.
Sertinell escribió:El tema de las cadenas de caracteres ... donde esta el problema ?
Y bueno, la mayoria de los alumnos de las universidades son innutiles.
Eso es lo que se enseña en un primer cuatrimestre de programación.
En ninguna parte. Que acostumbrado a hacer cCadena[i] me resultaba un coñazo hacer cCadena.substring(i,i+1)
Y otra buena parte, unos prepotentes.
Ferdy escribió:¿Y? Eso es lo que se enseña en mi facultad tambien, luego en tercero tienen que implementar un protocolillo y hacer cuatro mierdas en C y de ~20 alumnos, solo 2 o cuatro (una o dos parejas) entregan la práctica. Y los que la entregan, no saben por qué les funciona, no hay más que leer el código.
Y realmente siento si el alumno medio de allí donde enseñes / estudies no es capaz de traducir mentalmente C a ensamblador a medida que lo escribe. Pero básicamente aquel que les enseñe C no hizo un buen trabajo.
Sobre todo porque substring es horrorosamente lento si lo usas para algo serio, para eso se usa charAt.
yupyup, pero nunca he visto a ningún alumno prepotente saltarle a un buen profesor, o al menos a uno que sepa de lo que habla. (hint hint)
Alberich escribió:Por eso no se puede enseñar el lenguaje en si y luego las librerías, sino que el alumno tiene que ver resultados, que lo que está aprendiendo sirve para algo. Porque si no, se pierde, se aburre y no solamente no aprobará, sino que no aprenderá a programar en su vida.