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.....)
Yo siempre digo que una temporada en sistemas ayuda a los programadores (y al revés).
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
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.
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.
J
A
V
A
No fue el malvado Oracle, fue SUN el que cambió el paradigma.
#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.
#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.
Ok, boomer.
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.
Creo que se puede enseñar a programar de forma eficiente en lenguajes de alto nivel sin meterse en ensamblador.
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.
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.
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.
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.
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.
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...
Aunque supongo que si no supiera Python los errores que me da serían poco descriptivos también.
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.
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
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.
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.
Qué recuerdos...
<< Pascal para mí era un juguete. ¿Porque? Bueno en fp había prendido con C y C++.>>
Porque lo desconocías y te lo dieron por encima mientras que los otros lenguajes de programación los conocías más en profundidad. Es normal
<<Cuando digo me pareció, fue una apreciación personal. >>
Yo había programado en basic, clipper, logo incluso prolog , etc. pero aún no en pascal (tampoco en C++ aún -ni python -) y
cuando me dieron el manual del pascal parecía de juguete pero vi que era como el manual del basic que tuve primero también lo más básico cogí el TurboPascal 6 y el BorlandPascal 7 y luego delphi. y le dí a la tabla de instrucciones, procedimientos, funciones y objetos y a ver código de las bibliotecas y código profesional desde ensamblador insertado, ver que tenía las instrucciones del lisp, del logo etc con sintaxis modificada y más incluso que la de otros lenguajes y además otras estructuras de datos propias con lo que me quedó claro que eso es muy serio e impresionante. Además se puede españolizar las instrucciones perfectamente al ser de tan alto nivel de forma que las lea cualquier persona. Al pascal y me matará alguien o querrá: Le pondría la función del Python de igualar variable sin declarar con parte de un objeto para que se convierta la variable en esa parte de objeto y así no necesitar IDE específico alguno ni ser tenidoso y tal vez quitar los ; del final y poner () a todo para cerrar con o sin parámetros como el python y así hacer más fácil escribir con él. Además de que el entorno pudiera cambiar las instrucciones del inglés por otras en el idioma de cada uno de forma que cualquier persona sin saber programar ni saber inglés pudiera leer y entender que hace el programa y hacerse con la capacidad de escribir macros y cosas sencillas fácil para aplicaciones utilizando este como lenguaje de aplicaciones a partir de un compilador libre como izo microsoft con su versión de vbasic. Y en su tiempo hubiera arrasado y ahora podría ayudar a mucha gente que no se mete a programar y se queda como usuaria
En cuanto lo de juguete. Pues eso una impresión por conocer mejor otros y este ser dado muy por encima pero de juguete no tiene nada, es tan o más potente que cualquier otro de uso general. Se puede escribir un sistema operativo entero perfectamente con el actual ObjetPascal
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.