Decidí hacer una entrevista con uno de mis amigos estadounidenses: Rob Vugteveen. Trabajó como programador FORTRAN en la década de 1980, por lo que es una experiencia bastante única.
Rob Vugteveen, Carson City, Nevada, EE.UU.K: Hola Rob. Escuché que estuviste trabajando como programador de Fortran hace muchos años. ¿Eso es correcto? ¿Cómo se veía la industria en aquel entonces?R: Buenos días, Kirill.
En la década de 1980 me gané la vida como programador FORTRAN en la industria minera, principalmente en el procesamiento de datos de exploración y en la presentación gráfica. Estábamos usando minicomputadoras VAX de Digital Equipment Corporation. Este fue un momento en que las PC de escritorio estaban creciendo en popularidad, y los lenguajes de procedimiento como FORTRAN estaban siendo desafiados por los lenguajes orientados a objetos. Además, los sistemas de visualización de gráficos estaban cambiando de terminales de celdas de caracteres a pantallas basadas en X-window.
FORTRAN (“FORmula TRANslation”) se creó para programas computacionalmente intensivos, y no tenía sus propias bibliotecas gráficas para mostrar información. Hubo compañías que vendieron grandes bibliotecas de subrutinas FORTRAN para proporcionar esa capacidad. Estos aún no fueron diseñados para la creciente popularidad de la tecnología X-window.
Cuando nos vimos obligados a pasar de costosas computadoras VAX a computadoras más baratas, tuvimos que escribir programas híbridos usando FORTRAN para computaciones y C ++ para visualización. Fue un poco desordenado al principio. Dejé ese trabajo por algo completamente diferente (construir un museo minero) y desde entonces no he hecho ninguna programación.
FORTRAN todavía se usa hoy en la investigación científica para el trabajo computacionalmente intensivo, pero estoy seguro de que se ha adaptado para trabajar con sistemas de visualización gráfica a través de subrutinas externas escritas en código orientado a objetos.
K: ¿Cómo se veía su proyecto más interesante en Fortran (o FORTRAN, como se llamaba antes)?R: Estaba escribiendo un software de planificación minera para una mina de cobre a cielo abierto. Los contornos de elevación de la mina se dibujarían en la pantalla como un mapa. Un ingeniero de minas podría usar un mouse para dibujar un polígono alrededor de una porción de la mina donde la tierra sería destruida y eliminada. El software consultaría una cuadrícula tridimensional de datos de perforación y determinaría cuánto cobre se recuperaría de esa porción de tierra. Una de mis tareas fue escribir el código para modificar las líneas de contorno para tener en cuenta el material que se eliminó. Tuve que inventar ese procedimiento desde cero, y me llevó más de una semana desarrollar los algoritmos para cada tipo posible de intersección de líneas. Ahora damos por sentado esta operación cada vez que realizamos una operación vectorial en Adobe Illustrator o AutoCAD. Pero esos no existían entonces, y estaba particularmente satisfecho de haber descubierto cómo hacerlo.
K: ¿Cuál fue su mejor éxito con eso?R: Descubrí que mi algoritmo también podía "devolver el material" en el tajo abierto al invertir la dirección en que se dibujó el polígono. Eso significaba que el ingeniero de minas podía crear un vertedero sobre el suelo que ya no tenía mineral de cobre debajo. Fue un gran avance en las capacidades de diseño del programa.
K: ¿Cuál fue tu peor desastre?R: De vez en cuando, el algoritmo de modificación del contorno entraría en un bucle sin fin y obligaría al ingeniero a matar el programa y comenzar de nuevo. Descubrí un caso especial cuando un punto en el contorno original y un punto en el polígono del ingeniero tenían exactamente las mismas coordenadas. Mi algoritmo no anticipó esa posibilidad y asumió que el polígono no podía ser tan preciso. Sin embargo, después de varios días de depuración, arreglé el algoritmo para que funcione en todos los casos.
K: Las computadoras y los lenguajes de programación hicieron un gran progreso desde entonces. ¿Cómo te sientes acerca de estos cambios?R: A medida que las computadoras se han vuelto más pequeñas, más potentes y menos costosas, la gente espera más y más de sus máquinas. Los programadores siguen presionando los límites de lo que se puede hacer. La programación orientada a objetos era lo más importante, y las variaciones del lenguaje C eran muy populares. Fortran seguía siendo el motor de cálculo de números para muchas aplicaciones científicas y de ingeniería, pero las aplicaciones de Fortran quedaron envueltas en una capa externa de código orientado a objetos para más funciones gráficas y de entrada del usuario. Los lenguajes más especializados parecían surgir a medida que aumentaba la potencia informática, con Java creciendo a partir de Sun Microsystems (más tarde adquirido por Oracle) y convirtiéndose en Javascript (de Netscape). El sistema operativo UNIX se apoderó, MS-DOS cedió el paso a Windows y desde entonces apareció una gran cantidad de lenguajes de programación. La mayoría de estos se basaron en desarrollos anteriores para ser más fáciles de usar y agregar funcionalidad, como la distribución de tareas de computación en subprocesos paralelos a través de múltiples procesadores y otros recursos.
Me divirtió leer esta semana que C ++ ha superado recientemente a Python en los tres lenguajes de programación más utilizados. Es probable que la clasificación de los tres primeros continúe cambiando a medida que aumenta la potencia de procesamiento, las capacidades de hardware se expanden y se desarrollan más aplicaciones que aún no se habían imaginado. Incluso con todos esos otros idiomas, todavía hay muchas nuevas aplicaciones científicas y de ingeniería que se escriben en Fortran, y el idioma continúa mejorando. La versión más reciente es Fortran 2018.
Mi broma Fortran favorita necesita un poco de configuración: en Fortran, las variables que comienzan con las letras I, J, K, L, M y N (aquellas entre I y N como en INteger) se almacenan de manera implícita como enteros en la computadora. Los que comienzan con cualquier otra letra se almacenan como números reales en la memoria. Entonces el chiste es:Dios es real ... a menos que se declare explícitamente un número entero.K: Escuché que estás aprendiendo JavaScript en este momento. ¿Qué te hizo decidir regresar a la industria de TI?R: En mi trabajo actual, estoy usando productos de Adobe en grandes cantidades de imágenes. Adobe tiene una capacidad de secuencias de comandos que se puede implementar usando Javascript. Quiero aprenderlo para poder ser más eficiente con el procesamiento de grandes conjuntos de imágenes y hacer cosas que no se pueden hacer fácilmente desde la funcionalidad basada en menús de esos programas.
También estoy usando QuickBase, y algunas funciones que deseo aparentemente se basan en llamadas externas que se pueden escribir en Javascript.
Curiosamente, nunca tomé una clase en Fortran o C ++ cuando estaba en la universidad o después. Lo aprendí por mi cuenta determinando lo que quería hacer y buscando cómo hacerlo realidad. Javascript parece un poco más complejo para ese enfoque, por lo que confío en YouTube para recibir instrucciones en línea. Veremos qué tan rápido puedo ser productivo de esa manera.
K: También acabas de comenzar a aprender WordPress. ¿Podría contarnos sobre su experiencia en la creación de sitios web?R: Hice mi primer sitio web para un centro de visitantes que construí en una mina de cobre en 1997. Comencé a usar Apple iWeb, luego me mudé a Adobe Dreamweaver cuando iWeb demostró ser inadecuado. Mantuve el sitio durante cinco años hasta que dejé esa compañía en 2002.
Realmente no volví a crear un sitio web hasta 2016, cuando estaba buscando trabajo y quería crear un currículum en línea para que los empleadores potenciales pudieran ver mis capacidades. Elegí WIX como una forma de obtener algo rápidamente, luego lo usé para experimentar con otro sitio web solo por diversión.
Ahora estoy buscando aprender WordPress con un amigo en Ucrania que tuvo la amabilidad de entrenarme.
K: ¡Grandes respuestas, Rob! Gracias por tomarse su tiempo para responder todas estas preguntas.