¿Qué te hizo interesado en las computadoras, en la programación de computadoras más o menos, además de lo sugerido por amigos o familiares? ¿Cual es tu historia?

Obtuve mi primera PC para mi décimo cumpleaños (en 1996). Era un Intel 386 bastante viejo y lento a 40MHz, disco duro de 100 MB y 4 MB de memoria RAM, y como todos los niños quería jugar, pero solo los juegos que obtuve fueron en realidad dos juegos (Nibbles y Gorillas) escritos en QBasic que ni siquiera podía compilar el código en un archivo binario (exe), por lo que tuvo que abrir QBasic, cargar el código fuente y luego ejecutar el juego.

Como ninguno de mis amigos tenía una computadora en ese momento, no pude encontrar ningún otro juego por un tiempo, y cada vez que quería jugar uno de esos dos juegos, veía el código fuente del juego en la pantalla antes de comenzar el juego. juego, así que eventualmente comencé a hurgar en el código fuente, al principio solo buscaba el texto que estaba viendo en el juego y lo traducía a mi idioma nativo, y luego comencé a cambiar los números en el código para ver cómo esos cambios afectan el juego .

No puedo decir que así fue como aprendí a escribir código, fue un proceso muy lento y doloroso, pero por alguna razón me encantó. Mi inglés apestaba en ese momento, así que mi hermano mayor me ayudó mucho, y después de un tiempo estaba aprendiendo Pascal en la escuela secundaria, así que me cambié a Pascal, ya que era mi única fuente de conocimiento, ya que no teníamos un módem de acceso telefónico en esa computadora, así que no hay internet en absoluto.

Cuando comencé a ir a la escuela secundaria (en 2001), compramos una computadora nueva, incluso tenía Windows 98 y una unidad de CD-ROM, y un amigo me recomendó que probara Delphi, que es básicamente Pascal orientado a objetos, así que ya tenía algún conocimiento del idioma. Y ahí es donde explotó mi mente: en realidad pude crear aplicaciones de Windows, compilarlas para ejecutarlas y distribuirlas a mis amigos.

Dos o tres años después obtuvimos una conexión de acceso telefónico en casa, así que me interesé en el desarrollo web, básicamente quería que dos instancias de mis aplicaciones de escritorio se comunicaran y almacenaran / cargaran datos a través de Internet, y muy pronto tuve que escribir algo del lado del servidor código, así que busqué en Google y encontré algo llamado PHP. Ya estaba disponible en cada alojamiento web que compra, incluso algunos alojamientos gratuitos tenían soporte para PHP, pero aprenderlo fue realmente difícil ya que nunca me encontré con una sintaxis similar a C antes.

Avance rápido 10 años, soy desarrollador senior de PHP que se graduó en hacer aplicaciones de Android en Java, y he jugado / trabajado con varios lenguajes como Javascript, Visual Basic, C, C ++, C #, Python, Perl e incluso Lua para algunos juegos de desarrollo .

Mi última aplicación de escritorio se hizo hace 10 años. Tuvo bastante éxito, pero ahora está abandonado.

¿De verdad quieres saber? wow, er ok …

… Bueno, todo comenzó con uno de estos:

Era el año 1997, mi GF a largo plazo de la época estaba considerando volver a la universidad mientras estaba sirviendo en el extranjero, pero nuestro presupuesto era asombrosamente bajo, así que fuimos de compras de segunda mano y tuvimos una suerte increíble.

De alguna manera nos las arreglamos para conseguir una Pentium II (creo) una antigua PC de oficina con Windows 95 instalado con una suite de oficina decente y algunos otros pequeños juguetes.

Después de un año, comencé a hacer una capacitación de TI avanzada como parte de mis deberes y me permitieron eliminar algunas partes antiguas de las PC más antiguas en la base después de que comenzamos a actualizar y comencé a jugar cuando tenía tiempo libre …

… Así que con la adición de una tarjeta de red, un módem de 56k, una tarjeta de sonido Sound Blaster y una brillante GPU Voodoo combinada con un poco más de RAM y tuve (al menos en mi opinión) una PC de nivel monstruo para usar.

El primer juego instalado fue Doom seguido por el guardián de la mazmorra … ¡y comenzó la adicción!

Una miríada de actualizaciones más tarde e hice lo que hace solo un año hubiera sido imposible.

¡Comencé a construir mi propia PC “personalizada”!

En pocas palabras, quería una PC capaz de ejecutar C&C Tiberian sun a un nivel decente para poder jugar con mis amigos en una LAN cerrada.
Sinceramente, no puedo recordar la especificación, pero sí recuerdo que sea GLORIOSO. y trabajó maravillosamente por años hasta …

¡El año 2000!
Como me estaba preparando para dejar el servicio al año siguiente, pensé que sería una buena idea volver a la universidad y claramente necesitaría una PC que sobreviviera a Y2K.

Mire el momento en que fue un gran problema para mucha gente y a mediados de diciembre de 1999 muchas oficinas estaban abandonando la mano de la PC y yo, siendo razonablemente experto en tecnología, de alguna manera logré tomar una PC bastante decente con una instalación fallida de Windows ME (Creo que de todos modos) eso no arrancaría.

Después de instalar win 98 (copia totalmente legítima … realmente) después de un formato rápido, terminé con una PC bastante decente y recuperé mi GPU y actualicé la RAM y limpié un poco de humo de cigarro notable, tuve lo que muchos considerarían mi primera PC decente para juegos .

Sin embargo, pronto llegó Half Life 1 y 2, ya que ahora tenía un sistema en el que podía jugar y desde ese momento solo continuó hasta mi sistema personalizado actual a través del entrenamiento para ser administrador del sistema, consultor de TI y usuario de PC en general.

Bueno, eso es lo que supongo, el trabajo requiere una PC para la actualización básica de juegos y más.

Fue principalmente una oportunidad. Terminé la escuela secundaria en 1972 y mis mayores intereses eran la física y las matemáticas. Esto fue en Lusaka en Zambia y las oportunidades eran limitadas. Las circunstancias de mi familia no permitieron ningún apoyo con mis futuros estudios.

El plan B era estudiar Física en la UNZA (Universidad de Zambia). El plan A era obtener una beca para estudiar en el extranjero. Los patrocinadores elegidos fueron los dos grupos mineros del cobre. Me considero afortunado de tener un buen desempeño en las pruebas de selección que tomé, y tengo la opción de elegir qué curso seguir. La mayoría de estos eran pistas de ingeniería, pero también había Ciencias de la Computación, así que elegí eso con Ingeniería Civil como alternativa.

Una vez que descubrí lo que eso implicaba, me enamoré de la programación y decidí que esa sería mi carrera. Nunca me he arrepentido de mi decisión.

En 1977, mi padre trabajaba para IBM y trajo a casa una computadora IBM 5100 para hacer un trabajo desde casa. Tenía una pantalla en blanco y negro de 5 “que mostraba 16 × 64 caracteres, un cartucho de cinta de 1/4” para almacenamiento y usaba el lenguaje de programación APL. Esta fue una de las primeras computadoras “portátiles” (tenía el tamaño de una maleta pequeña y pesaba alrededor de 55 lb), y esto todavía era cuatro años antes de que apareciera la PC de IBM.

Estaba en séptimo grado, y al principio me pareció interesante escribirlo y hacer fotos (típicamente cohetes) con el exclusivo conjunto de caracteres APL.

Pero solo estaba usando la interfaz de línea de comando simple, por lo que las imágenes desaparecerían una vez que pasaran por la parte superior de la pantalla. En algún momento, mi padre me mostró que podía hacer un programa donde cada línea de código mostrara una línea de la imagen, para poder guardar y volver a ejecutar los programas para ver mis imágenes nuevamente. Pronto, comencé a preguntar cómo hacer que los programas hicieran más, como agregar bucles de demora e imprimir líneas en blanco para hacer que mis cohetes parezcan despegar.

Muy pronto me enganché. No recuerdo lo que hicieron mis primeros programas, pero mi proceso de aprendizaje fue generalmente preguntarle a mi padre cómo hacer que hiciera algo, él escribiría una o dos líneas de código en papel y yo lo escribiría. Luego haría pequeños cambios en el código para comenzar a entender cómo cada símbolo afectaba el resultado. Para aquellos que nunca han visto el código APL, el lenguaje comenzó como una notación matemática para manipular matrices, por lo que es muy conciso, poderoso y críptico:

Después de aprender más sobre el idioma, intenté escribir un programa para jugar al juego de cartas “Crazy 8’s”, pero las complicaciones del árbol de decisión crecieron más allá de mi capacidad para manejarlas en ese momento. Estaba interesado en escribir un juego de estilo arcade más similar a Speed ​​Race, pero APL no proporcionó ese tipo de control de pantalla, así que aprendí el lenguaje IL / 5100 * como ensamblador y pude producir un juego simple pero funcional versión.

Después de un par de años, mi padre regresó esa computadora al trabajo, pero para entonces mi escuela secundaria tenía TRS-80 que pude usar, así que aprendí BASIC de un libro. Entre otras cosas, escribí un programa de gráficos polares que mi maestro de matemáticas usó en clase y un programa para ayudar a resolver criptogramas. Durante un par de veranos, fui voluntario en un campamento de computadoras dirigido por nuestro distrito escolar para presentarles a los niños la programación.

Cuando salió al mercado la PC de IBM en 1981, mi padre compró una a través del trabajo de inmediato, así que cuando comencé la universidad, ya había usado tres idiomas y había estado programando durante seis años.

——-

* No puedo encontrar ninguna mención del lenguaje IL / 5100 en Internet, así que tengo curiosidad si alguien más lo recuerda.

——-

Editar: profundicé un poco más en IL / 5100, y esto es para los compañeros geeks que están interesados.

El 5100 usó el procesador IBM PALM ( P ut A ll L ogic in M icrocode), que en realidad no era un microprocesador discreto, sino más bien una placa de circuito completa que contenía una combinación de arreglos de puertas bipolares y otras partes que ejecuta microcódigo para implementar un código superior. -conjunto de instrucciones de nivel. Ese conjunto de instrucciones se llamaba “lenguaje intermedio” o IL, y se había desarrollado para permitir la reutilización de un intérprete APL escrito para IBM System / 360 en una variedad de sistemas. El intérprete APL, escrito en IL, se compiló en un formulario de bytes que se almacenó en la ROM de la máquina y fue ejecutado por el procesador PALM. La migración a otros sistemas solo requería un emulador de hardware de microcódigo que pudiera ejecutar el código de lenguaje intermedio. [1] [2] Recuerdo el manual de referencia para el idioma especificado “IL / 5100”, pero no sé si había algo único al respecto para esa máquina.

Mi juego “Speed ​​Race” fue escrito en IL, compilado y luego cargado en la memoria para ser ejecutado. Y teniendo en cuenta que se trataba de un lenguaje de bajo nivel, utilizado solo en computadoras comerciales costosas, y que el 5100 se suspendió en 1978, sospecho que podría ser la persona más joven en usarlo. APL todavía está en uso, pero es un lenguaje tan esotérico que no me sorprendería si estuviera entre los más jóvenes en usarlo también.

Notas al pie

[1] 5100 Diseño de computadora portátil Jan77

[2] https://pdfs.semanticscholar.org

Obtuve mi primera computadora, una Amiga500, cuando solo tenía entre 4 y 5 años, por lo que las computadoras siempre han estado conmigo, por así decirlo.

Jugando juegos de computadora cuando era un niño pequeño, obviamente tenía sueños de hacer mis propios juegos, como hacen muchos niños. (Tengo que señalar que tengo el síndrome de Asperger (autismo), que obviamente juega un papel en esta historia).
Solía ​​dibujar mapas y hacer tablas de estadísticas y armas, como el botín de juegos de rol y demás, e imagino que es un juego, y eso fue suficiente para mí.

Pero luego entré en contacto con la programación de computadoras, cuando tenía entre 10 y 11 años, cuando vi AMOS, que es casi exactamente como QBasic, pero es un poco más poderoso cuando se trata de gráficos.

Así que realicé una ingeniería inversa del código de ejemplo que vi, para aprender qué hace qué y cómo funciona la programación, porque no tenía a nadie a mi alrededor que supiera algo sobre tales cosas.
Al obtener más ejemplos / demostraciones, tenía más código para realizar ingeniería inversa, por lo que estaba aprendiendo más cosas.

También encontré QBasic en la PC en la escuela, así que también me metí con eso, pero no tenía una PC en casa (hasta muchos años después).
Unos años más tarde, la red mundial se estaba convirtiendo en una “cosa” (alrededor de 1995 más o menos), así que aprendí cómo hacer HTML y, finalmente, cómo hacer JavaScript. Todo aún por diversión.
Cuando crecí un poco, tuve uso para algunas de esas cosas, como hacer un sitio web para mi banda (también soy músico), y cosas así, y también aprendí PHP y MySQL, y otras cosas.

Pero mientras había estado haciendo QBasic y AMOS, aún así, durante este tiempo, me faltaba una forma más poderosa de hacer una programación informática adecuada, en lugar de cosas basadas en la web.
Eché un breve vistazo a C y C ++, pero no lo “entendí”, ya que provenía de un lenguaje de alto nivel, y C / C ++ es de nivel mucho más bajo, así que simplemente lo ignoré. Durante este tiempo, también estuve bastante ocupado con mi música, por lo que la programación se había convertido en algo raro para mí.
Pero alrededor del año 2000 o 2001, pensé que le daría a C / C ++ otra oportunidad, así que lo examiné de nuevo y de repente “hizo clic” para mí, y entendí cómo funcionaba.

Y a partir de ese momento, me enganché a C ++, usando openGL para hacer gráficos, y Cg para sombreadores, openAL para sonido (intuitivo si conoce openGL) y probando winsock para redes. Ese tipo de cosas.
Quería ser un desarrollador de juegos, y pensé que debería obtener algunas credenciales, así que estudié “diseño y modulación de software” en una universidad, pero nos obligaron a usar Java, que aprendí a odiar (viniendo de un fondo C ++) , así que abandoné esa universidad después de un año más o menos.

Y ahora han pasado unos 17 años desde que comencé con C ++, y todavía lo estoy haciendo, todavía me encanta, y todavía leo libros sobre el tema, veo conferencias y escucho a los expertos. A menudo deambulo por videos tutoriales en YouTube, publicando cosas útiles y respondiendo las preguntas de las personas, tratando de ayudar a otros con su aprendizaje y comprensión.

Pero aún así, mi educación principal es en la composición y producción musical, y mi “profesión” es la ingeniería de audio, por lo que la programación sigue siendo una cosa secundaria, un “pasatiempo”. Lo hago porque me encanta codificar, y creo que es algo autista, este amor que tengo por escribir código de computadora, solo por escribirlo, solo porque me parece hermoso y sorprendente hacerlo.

En una nota más personal, me casé en 2004, con una mujer con la que me reuní jugando “Diablo 2” en LAN. Así que soy un jugador, y ella es una jugadora, y nos juntamos a través del juego juntos. Acabamos de tener nuestro segundo bebé (tengo 2 hijas), este enero.

Es un resumen decente de “mi historia” con las computadoras, diría.

Yo era un niño fascinado por las matemáticas. Me intrigaba la lógica simbólica, la teoría de conjuntos y la teoría de números. Me fascinaron varios sistemas numéricos y me intrigó cuando me enteré de que gran parte de las matemáticas que amaba formaban parte integral de las máquinas informáticas. En mi segundo año, mi escuela secundaria tenía una computadora Wang, con 4k de memoria, conectada con el lenguaje BÁSICO, y tuve la suerte de tener maestros de matemáticas que permitieron mi interés, dejándome aprender cómo funcionaba y luego compartiendo lo que aprendí. aprendí con la facultad de matemáticas. Me enseñé a programar BASIC en solo unos días, y pronto escribí programas para ayudar a los maestros a calcular las calificaciones trimestrales ponderadas para sus estudiantes, programas para hacer cálculos para laboratorios de física y programas para calcular raíces pi, cuadradas y cúbicas, y varios otros cosas que capturaron mi imaginación.

En mi último año, Digital Equipment Corporation donó un kit para construir un PDP8 a mi escuela, a través de mi maestro de física. Armamos esa cosa, y me enseñé a mí mismo cómo programar en código de ensamblaje, y ensamblar a mano en el código de máquina que ingresaría en la máquina accionando el panel de interruptores en la parte frontal de la máquina. Eventualmente nos dieron un lector de cinta de papel y un punzón, además de una cinta con FORTRAN, y pude aprender un poco de eso antes de graduarme y dirigirme a la universidad.

Fui a una pequeña escuela estatal en Massachustts para la universidad, y entre mis clases de secundaria y los puntajes de los exámenes CLEP, ingresé como estudiante de segundo año. Mi primer semestre incluyó Cálculo 3, Programación lineal, Introducción a la física con cálculo (la versión de la física introductoria para estudiantes de matemáticas y ciencias), Composición en inglés y francés, de los cuales probé casi de inmediato. Necesitaba otra clase. Mi asesor sugirió tomar la clase de Introducción a la informática, que enseñó FORTRAN junto con conceptos básicos de informática, incluida la lógica simbólica, la arquitectura de la computadora, el desarrollo de algoritmos, la programación estructurada, etc. Me enamoré de la clase a pesar de que parte de ella no era no es nuevo para mí, y realmente me encantó trabajar en una computadora central Cyber ​​6600, mi primera computadora grande. También conocí a mi mentor, que era el instructor de la clase. Tomé la mayoría de mis clases de informática con él, y le doy crédito por la mayoría de lo que aprendí en mis tres años.

Fui la primera persona de esa universidad en recibir un título en Ciencias de la Computación. También fui uno de los únicos 5 estudiantes que recibió un título en Matemáticas ese año. Obtuve una maestría en ciencias de la computación del Departamento de Matemáticas en una escuela de ingeniería en el norte del estado de Nueva York, terminando en 1982.

Comencé a trabajar para un grupo en un laboratorio nacional poco después, trabajando durante varios años en proyectos de seguridad nacional. Trabajé durante años en las supercomputadoras más rápidas del mundo y luego en computadoras de escritorio. 35 años después, todavía trabajo en el laboratorio, pero durante los últimos 25 años he sido un matemático informático que trabaja para el grupo encargado de la seguridad del personal, habiendo desarrollado los algoritmos matemáticos necesarios para cumplir con los requisitos de pruebas de drogas según lo ordenado por el DOE y el DOT , a la vez que tiene un impacto mínimo en la misión del laboratorio, y los ha implementado junto con una base de datos para rastrear las pruebas y sus resultados.

Supongo que incluso después de todo este tiempo, lo que me hizo enamorarme de las computadoras es lo que me mantiene comprometido. Me encanta hacer que una máquina haga lo que quiero que haga, y quiero hacerlo de la manera más simple posible. Me encanta cuando el algoritmo y las matemáticas son soluciones elegantes y simples a un problema.

El profesor que me enseñó lo básico en mi universidad.

Nunca me enseñó sentado a mi lado o una conferencia.

Siempre me dejaba pensar y me hacía hacer cosas y sentir la euforia. Lo cual no fue sentido por muchos compañeros de clase, pero lo sentí todo el tiempo.

¡Eso continuó para mí en la forma en que aprendí a programar en los próximos cursos y ahora soy un orgulloso educador que enseña programación a personas que ni siquiera conocen el ABC de la programación y convertirlos en un programador que hace algo es la mejor sensación!

Necesitaba ganar dinero y mi educación universitaria era bastante inútil en ese sentido, al menos directamente.