No hay tiempo para nada.
Bueno, podría haber sido unos días para obtener lo básico, y luego algunos más para comenzar a ser productivos, pero después de tantas veces, varias personas me dijeron que sería difícil, difícil, difícil.
Yo sabía lo básico. Conocía varios lenguajes ensambladores y conocía a Pascal. Como ingeniero electrónico, eso no era malo, no codifiqué para ganarme la vida en ese momento (mediados de los 80). Yo era un tipo de hardware. Luego obtuvimos estos nuevos hechiceros graduados que nos arrastrarían hacia el futuro y agregarían ingeniería de software integrada a nuestra base de habilidades.
Compramos un sistema de desarrollo muy caro (por el momento) para la familia 8051 con emulación en circuito. Era bastante fácil, podía usarlo de inmediato para escribir el lenguaje de ensamblaje 8051 (lo aprendí en el manual de programación suministrado por el fabricante). Realicé algunos proyectos pequeños de esa manera antes de que se activara durante más de unas pocas semanas. Pero los nuevos, bueno, de lo único que podían hablar era de C. C era la respuesta, el santo grial, la forma en que estaríamos programando en el futuro. Nada de esta mierda de ensamblador, y definitivamente no hay Pascal. Por qué, la noción misma de Pascal los hizo reír en su soberbia nube de superioridad.
- ¿Por qué tenemos que aprender ciertas materias en la escuela?
- ¿Qué tan efectivo es Duolingo en aprender un idioma?
- ¿Qué habilidades puedo aprender ahora mismo en Quora que me pueden conseguir un trabajo en línea?
- ¿Cuál es el lenguaje de programación más útil y fácil de aprender en 2017?
- ¿Por qué deberíamos aprender de los demás?
No hace falta decir que encontré esta actitud bastante molesta, pero tenía que hacer mi trabajo y ellos tenían la suya. Así que una parte de mí cumplió su palabra, ¡como yo, sin un gran golpe! – título universitario – no tenía ninguna posibilidad de entender C. Apégate a tus transistores y amplificadores operacionales, hardware. Yo sabía mi lugar.
Algún tiempo después, mi trabajo había cambiado. Ya no resolví los mapas de Karnaugh y descubrí grandes matrices de puertas lógicas. Simplemente dibujamos una caja grande y escribimos ‘8051’ en ella, o a veces ’68HC11′ y luego enganchamos todo lo demás alrededor de los bordes. Yo estaba cómodo en ensamblador. Usé a Pascal para escribir aplicaciones en la Mac como una línea lateral. Los niños genios todavía hablaban de C, cómo C cambiaría nuestras vidas. La cosa era que tenía trabajo que hacer, y mientras pasaban meses interminables tratando de hacer que un compilador de C trabajara en el sistema de desarrollo y que trabajara con partes de hardware totalmente inútiles para ejecutar su código de prueba, simplemente trabajé en ensamblador. Resolví los problemas que tenía que resolver y construí cosas que funcionaron. Claramente, C era demasiado difícil, incluso esos tipos estaban luchando con eso. Mejor dejarlo bien solo.
Bueno, cambié de compañía un par de veces durante varios años y para entonces ya estaba programando la mayoría del tiempo. (Turbo) Pascal era bastante útil para programar máquinas de escritorio, y el ensamblador estaba bien para hardware de gama baja. Pero terminé en un lugar que era exclusivamente una tienda de C, pero en Mac. Conocía bien la arquitectura de Mac, pero no conocía C, usé Pascal. Me emplearon de todos modos, y me dijeron que aprendiera C.
Así que lo hice. Esa fue la parte de ‘no hay tiempo en absoluto’. Después de todos esos años siendo condenado y dicho que sería demasiado difícil, fue un juego de niños. Fue como un Pascal simplificado para mí. También me di cuenta rápidamente de que era potencialmente mucho más peligroso: no había controles integrados para los límites de la matriz, ni ninguna de esas cosas de lujo. Pero estaba bien con eso, no era diferente al ensamblador en ese sentido. Así que tuve una primera aplicación de trabajo en un par de días. Incluso empecé a meterme con C ++ al mismo tiempo, porque estaba usando THINK C, que venía con un marco basado en C ++ llamado TCL que se usó para el trabajo de esta compañía.
Aproximadamente una semana después, pensé que me gustaría intentar escribir algo ‘real’ en C, para consolidar este nuevo conocimiento y asegurarme de que realmente lo entendí. Así que escribí un clon de Space Invaders llamado ‘Desk Invaders’, que funcionaba como un accesorio de escritorio (un DA era una forma de ejecutar cooperativamente una pequeña aplicación ‘helper’ junto con cualquier otra aplicación en el Mac original que no realiza múltiples tareas, y escribir una era considerado un derecho de paso para los primeros programadores de Mac: si pudieras dominar un DA, te habrías graduado, por así decirlo, como un desarrollador de Mac). Desk Invaders: Macintosh Repository Desk Invaders resultó bien y se convirtió en un éxito moderado de shareware en los días previos a Internet, encontrando su camino en muchos discos de portadas de revistas durante varios años.
También eventualmente fui e hice un título y eso incluyó un curso formal en programación en C, así que también obtuve la introducción académica. Pero yo conocía bastante bien a C para entonces, así que no había nada realmente nuevo en ello.
C se convirtió rápidamente en lo que codifiqué, desplazando a Pascal más o menos de la noche a la mañana. Después de todo, también pude ver sus ventajas para el trabajo integrado, pero al final mi trabajo cambió y nunca usé C para la codificación integrada. Pero luego C ++ gradualmente tomó el control de la C recta, lo que fue una transición bastante suave. Me quedé con C ++ durante más de 12 años hasta mudarme a Objective-C / Cocoa.