a programar El currículo de Niklaus Wirth es impresionante. Se graduó en Ingeniería Electrónica en la Escuela Politécnica Federal de Zúrich, la misma universidad en la que cinco décadas antes estudió Albert Einstein; se doctoró en la Universidad de California en Berkeley; trabajó en Xerox PARC y dio clase en Stanford, en la Universidad de Zúrich y en la misma Escuela Politécnica Federal en la que unas décadas antes él mismo había estudiado. Sin embargo, Wirth no será recordado por nada de esto. Los logros que lo colocan a la misma altur
|
etiquetas: niklaus , wirth , pascal , referencia , imprescindible , aprender , programar
Entre el compromiso de saber que está ocurriendo (pascal, C) y ser productivo (Java, python,.... ) creo que hay ser productivo sabiendo lo que está ocurriendo.
(Qué tiempos aquellos en los que hacíamos mapas de ram y direccionábamos en ensamblador.....)
#3. '...C tiene más libertad y te obliga a ser más cuidadoso...'
Un gran poder conlleva siempre una gran responsabilidad. Lo que se aprende programando y equivocándose en C no se aprende con ningún otro lenguaje. Quien no ha interactuado nunca con el lenguaje C nuncan comprenderá realmente cómo funciona la máquina.
Yo siempre digo que una temporada en sistemas ayuda a los programadores (y al revés).
Creo que se puede enseñar a programar de forma eficiente en lenguajes de alto nivel sin meterse en ensamblador.
Con Turbo Pascal se podía hacer exactamente lo mismo que con C. Lo único malo es que no era código portable. Me pasé años programando en Turbo Pascal como Hobby. Y apenas unos meses antes de pasarme a C/C++, descubrí que tenía algunas cosas no documentadas procedentes de MODULA 2
#26 Depende del modelo de memoria. No recuerdo como iba los modelos de memoria en Turbo Pascal. Pero era posible crear un EXE que despues se convertía en un .COM
Si escribes en TP un "Hola Mundo" y lo compilas como EXE, te ocupa un montón de Kbs. Pero al convertirlo a .COM al desensamblarlo el código es lo que habría echo un desarrollador de ensamblador llamando a la Int 21H.
Pero si escribo algún código será en assembler, C, o C++
Siempre estoy al nivel de máquina y las entiendo muy bien, es lo que tiene venir desde dentro de los circuitos.
Como anécdota, pensaba hacer las curvas aleatorias pero al final dibujé una carretera muy larga y aleatoriamente empezaba e un punto u otro cada vez y nadie notó nunca que no eran aleatorias.
Luego ya salieron empresas con capital y perdí el chollo porque tenían muebles más presentables pero unos cuantos cayeron y con 20 años me vino de pm la pasta.
Lo juro por mis niños
Al fin y al cabo las especificaciones estaban claras. Más sencillo era el que metías el coche en el túnel y había que frenar, si mal no recuerdo.
Pero el de las curvas no se me olvidará sobre todo por lo bien que iba.
Con 19 también hice uno de biorritmos para el ZX81 y el tipo que me lo encargó se forró con él.
Es que soy muy viejo ya
#21. Es un proyecto muy bueno, parece mentira que Gambas sea producto de un único desarrollador. Es una maravilla poder descargar proyectos de ejemplo desde el propio IDE de Gambas para empezar a trastear con el.
Llevar en el llavero la llave 400 que sin ella no se podían programar los minis Olivetti, sistemas operativos muy muy peculiares con la mayoría de los comandos escritos en basic, la época de los BBS y Galletas que en el 88 ya estaba conectado a Usenet...
Cualquier día hago algo, lo que pasa es que lo mismo que hay gente con curiosidad sana como tú y yo, en ocasiones me he puesto a contar historias y han empezado a aparecer tocapelotas y por eso no me gusta exponerme mucho en la red. Tengo poca tolerancia para los que entran solo a ofender.
Pero aunque sea solo para mis hijos y para no olvidarme de todo lo mismo lo hago. Gracias
libreríasbibliotecas que puedes encontrarte en otros lenguajes.Java es todo lo contrario, es una opción horrible para aprender, pero cuando ya tienes unas tablas le ves las ventajas.
Si encarta hacer algo en Java o PHP me tiro al barro pero me parecen sucios.
El C creo que es lo que te convierte en programador “de verdad” te cambia algo en la mente, sobre todo si venías de bichos como el basic, pero me resulta poco productivo en mi entorno.
El ensamblador siempre ha sido el sombrero de copa de donde puedes sacar lo imposible, creo que es el lenguaje que más satisfacciones personales me ha dado. El COBOL, el que más pasta
Python te enseña las cosas de la programacion, organizacion, orientacion a objetos, sin distraerte tanto de los fallos de sintaxis y demás.
Luego cuando te encuentras un lenguaje problematico, estas más seguro de lo que puede fallar y avanzas creo que mas.
En lenguajes hablados hay estudios que dicen que estudiando 1 año Esperanto que es un lenguaje diseñado para ser facil. luego adelanta a estudiantes de Frances que estudiaron un años antes. En parte porque ya han aprendido a aprender un idioma. Creo que los adelantaba en 3 años.
Por cierto para aprender a andar en bici, lo mejor es una bici sin pedales o quitados y que se propulse pateando. Con el tiempo ira planeando mas con los pies en el aire y sabra montar en bici sin frustacion y sin darse cuenta y divirtiendose desde el primer dia.
Una alternativa al C podria se Rust. Lo bueno es que te da los fallos o posible trampas que te pueden dar problemas en el futuro, en cuanto lo compilas. Es ḿas restrictivo, lo que no gusta a cierta gente, como las sangrias en python, pero puede ser una oportunidad para programar de forma más ordenada y segura.
En Java como poco, ya te dan la línea de código y toda la traza de la pila... en C o Pascal, para obtener eso, tienes que usar un depurador (que para un novato, lógicamente hace la curva de aprendizaje más dura porque es una herramienta más que aprender). Si no, lo único que verás es "Segmentation fault". Sin motivo, sin línea, sin nada.
E incluso si tienes la traza de la pila, puede que tu segmentation fault saltara en la línea 123 por culpa de un acceso no válido a memoria que hiciste en la línea 85, que pasó inadvertido e hizo que una variable tuviese un valor incorrecto. Accesos no válidos a memoria que en Java directamente ni siquiera existen porque en cuanto te pasas del límite de algo, salta excepción. Si te da un NullPointerException en la línea 123, sabes que vas a estar accediendo a un puntero nulo exactamente en esa línea (otra cosa es que a lo mejor te cueste saber de dónde ha venido ese nulo porque sea un problema con la lógica del programa o un caso que no has contemplado, pero eso pasa en cualquier lenguaje).
No digo que los mensajes de error de Java sean la leche, pero creo que le dan cien mil vueltas a los de los compiladores de C y Pascal.
También la limitación de memoria a 64K totales (programa + datos + variables) era un poco putada en muchos casos.
Y al llegar, a la uni, te meten Pascal. Le pregunté a la profesora porque Pascal (orientado al ámbito académico) y no C (que tiene salidas profesionales). Su repuesta fue "para aprender a programar es mejor", lo cual era ilógico pues en el resto de la ingenierías aprendían con C.
La única ventaja que vi es que es más legible que C, es una de la razones por las que me gusta VB.net.
Cuando digo me pareció, fue una apreciación personal.
Tras años programando, lo ves de forma diferente, a día de hoy me da igual C, C++, C#, Ruby, VB.net, Java, Python, Scala...
Que al fin y al cabo, uno ya tiene los huevos pelados y, a mi, ya casi me da igual el lenguaje.
J
A
V
A
No fue el malvado Oracle, fue SUN el que cambió el paradigma.
Y de epocas bueno... yo tambien soy de esa epoca . Ahora con el paso al grado y no se si sigue la idea de ser ciencia de computadores o se han movido a ingenieria de software completamente.
Pascal tenía el problema de ser muy verbose.
De los compilados creo que Pascal o FrerPascal es el más fácil de leer pero tiene falta de programadores activos lo que hace que haya pocas bibliotecas y para programación web no tiene casi nada.
Que por cierto creo que Ada es un buen lenguaje para aprender y también usa inglés como Pascal.
Aunque supongo que si no supiera Python los errores que me da serían poco descriptivos también.
Lo que dice el artículo es cierto en principio, y en teoría. En la práctica, buena parte de la didáctica de Pascal se pierde por el camino por culpa de que se ha quedado antiguo:
- Compiladores viejos, con mantenimiento y documentación reguleros comparados con los de los lenguajes en boga.
- Mensajes de error poco intuitivos.
- Falta de un estándar firme (el estándar se queda escaso porque hay un montón de cosas útiles que no cubre, como ficheros, y cada compilador las hace a su manera).
- Falta de una comunidad grande a la que hacer preguntas.
- Falta de características modernas que hacen más fácil (y también más didáctica) la programación como pueden ser el "bounds checking" en los arrays. A ningún programador principiante le ayuda ver "segmentation fault" cuando se ha pasado de límites cuando podría ver algo como "ArrayIndexOutOfBoundsException" que es mucho más claro.
- Decisiones que en su momento tuvieron sentido, pero la evolución de los lenguajes fue por otro lado, como el punto y coma como separador en vez de como terminador, o la distinción entre "function" y "procedure", o no tener un maldito return.
- Es enormemente estricto con auténticas chorradas que no son muy importantes (como asignar entre variables de distintos tipos de entero o imprimir un puntero) pero luego te deja hacer cosas que hoy por hoy se consideran barbaridades sobre todo cuando estás aprendiendo, como crear variables globales.
En la práctica, dado todo eso, no veo que a los alumnos les cueste más C más que Pascal, a pesar de que C es de todo menos didáctico. Lo compensa con haber envejecido mejor y tener más soporte. Y si uno tiene en cuenta que aparte a la larga va a ser más útil en su carrera profesional y les motiva más... pues no hay color.
De todas formas, la verdad es que se echa de menos un verdadero lenguaje de aprendizaje moderno. Java está bien en el sentido de que tiene unos mensajes de error cojonudos y combina tipado estático con mucho chequeo en tiempo de ejecución, pero te obliga a meter la orientación a objetos desde el minuto uno y un "hola, mundo" es un dolor. Python está bien para gente que va a usar la programación como herramienta secundaria (científicos de datos, etc.) pero para un informático no sirve porque está demasiado alejado del metal y no enseña a escribir código optimizado y mantenible. En alguna universidad he visto que utilizan un subconjunto de C. C, pero quitándole las partes "difíciles". Es una opción, aunque no te vas a librar de que si se pasan de límites de un array les salga un críptico segmentation fault. Así que no hay nada hoy que se parezca a Pascal para aprender a programar hace 40 años. Y Pascal, como dije, está viejo.
A mi juicio haría falta algo como un auténtico C con ruedines en el propio compilador y entorno de ejecución, o un Java con objetos opcionales y una API simple.
Voy a ver si le endoso el marrón al niño porque me atrae mucho la idea, más que por lo que cuesta el entorno que se amortiza enseguida, por la dependencia de empresas que pueden irse ATPC, esto empezó con Borland y ahora lo lleva Embarcadero pero lo mismo mañana te pueden dejar tirado.
Precisamente aprendí C para la Coca Cola que tenía unos displays de Leds enormes para organizar los almacenes con una API muy usable en C, en ese momento me enamoré del lenguaje, me embolsé 200k pesetas por esa chorrada de programa, en los 80 la pasta se movía con alegría siempre y cuando no te dedicases al gwbasic y a lo que hacía todo el mundo.
Y ya no hablo de lo que se ganaba con programas de comunicaciones por módem entre sucursales cuando el TCP/IP te sonaba a chino.
Nosotros apenas tenemos librerías o componentes sin fuentes, da susto que te puedan dejar tirado.
Me habéis picado con Lazarus, a ver si la semana que viene hacemos algunas pruebas.
)
Ah. Y con Phyton igualas una variable a un componente de un objeto y se te convierte en ese componente del objeto la variable, sin más. Lo que evita que necesites arrastrar dibujitos... Y el delphi es esclavo del IDE gráfico concreto. (menos mal de Lazarus) con lo que la dependencia es excesiva...
Qué recuerdos...