01 mayo 2016

Pioneros del Siglo XXI: Linus Tovalds


Esta debe ser una de las entrevistas más interesante que ha dado Linus Tovalds, le cuesta bastante hablar y a veces cuando lo hace no es muy claro, es mejor escribiendo que hablando. Esta vez se relajó y habla con bastante soltura incluso algunas cosas personales que alumbran sobre lo que podríamos llamar la "ideología Linux".

Los aportes fundamentales de Tovalds a la computación fueron dos: el núcleo de Linux y Git, el sistema que hoy es estandar para desarrollar código colaborativo, donde participan cientos o miles de personas en un mismo proyecto. La historia de Linux parte de la necesidad personal que tuvo Tovalds de conectar su computador 386 con el mainframe de la universidad, esta necesidad específica modeló todo el diseño, con sus ventajas y limitaciones.

En palabras sencillas Linux es un sistema operativo Unix -lo que es lo que usaban los grandes computadores- adaptado para que pueda funcionar en computadores personales. Tovalds partió usando Minix, que era una versión de mini unix para PC, pero iritado por las limitaciones y problemas que tenía ese sistema creó un nucleo completamente nuevo, así fue como en 1991 envió su famoso post

Hola a todos aquellos que usan Minix - 
Estoy haciendo un sistema operativo (gratuito) (solamente una afición, no será grande ni profesional como el GNU) para clones 386(486) AT. Este ha estado gestándose desde abril, y está comenzando a estar listo. Me gustaría recibir cualquier comentario sobre las cosas que gustan/disgustan en minix, ya que mi SO (Sistema Operativo) se le parece un poco (la misma disposición física del sistema de archivos, debido a motivos prácticos, entre otras cosas).

(...) PD. Sí – es libre de cualquier código de minix, y tiene un sistema de archivos multi-hilo. NO es portable (usa 386 una conmutación de tarea etc.), y probablemente nunca será soportada por nada más que los discos duros AT, porque es todo lo que tengo :-(.

Ni se imaginaba que con los años Linux llegaría a ser el sistema operativo más portable y uno de los dos más importantes del mundo, un estandar de facto para casi todos los servidores de Internet y dispositivos móviles que usan alguna versión de Android.

Portabilidad, conectividad y multiusuarios son los tres pilares importantes sobre los que se formó Unix en 1969 y Linux en 1991. La razón histórica de esto es que en los años setenta se pensaba en computadores enormes que atenderían a miles de terminales "tontos" en tiempo compartido, eso obligaba a diseñar esquemas de modo protegido, donde ningún usuario podía -por razones de seguridad- leer o escribir directamente en la memoria, tenían que pasar por capas de "policía" que revisara las credenciales de cada usuario, que determinaban hasta donde podía llegar.

En los años ochenta irrumpieron los computadores personales y esas ideas quedaron obsoletas de un día para otro, o al menos arrinconadas para los mini o mainframes de las universidades, que todavía trabajaban con terminales. Al final los terminales en tiempo compartido quedaron completamente obsoletos hasta desaparecer, yo alcancé a trabajar en esos cuando la Universidad recibió su primer minicomputador, un PDP-11.

Aparecieron entonces muchísimos sistemas operativos optimizados para trabajar en máquinas individuales y desconectadas entre sí, creo que el primer estándar de facto fue el Tandy TRS-80, el primer computador que usé en mi vida, basado en un procesador Zilog Z-80, seguido por muchos otros como mi queridísimo Casio Fx-9000 P; Atari; Commodore Vic-20 y varios otros basados en el mismo procesador. En estos microcomputadores arcaicos, el sistema operativo y el lenguaje de programación estaban confundidos en una misma cosa, en realidad no se hablaba de sistema operativo en esas máquinas sino de su "lenguaje" que normalmente era alguna variante de Basic. De manera acelerada, los grandes y mini computadores empezaron a desaparecer, fueron reemplazados por los micro.

Y cuando todos creían que Unix estaba muerto, o relegado para equipos muy anticuados, aparece Tovalds con su problema de conectar su micro 386 con el computador Unix de la universidad. En realidad varios otros habían trabajado en lo mismo, Richard Stallman por ejemplo estaba tratando de hacerlo con GNU desde hace años, pero como todo el trabajo era voluntario y gratis, resultaba una pesadilla coordinar los aportes de cientos de personas a un mismo problema.

Entonces apareció el segundo gran aporte de Tovalds, que fue el sistema de control de versiones Git. Basado en la web, antes de eso existían sistemas de control de versiones (yo usé SVS Subversion) pero eran bastante enredaos, las equivocaciones en SVS podían tener resultados desastrosos (me consta) pero Git hacía todo más fácil y claro. Hoy tener una cuenta en Github es una bendición para cualquiera que trabaje en software colaborativo, es una cosa realmente bella.

Tovald, igual que Bill Gates, no es un tipo académico. Ambos son coders, programadores. Es muy interesante lo que habla en el video sobre escribir código elegante y que para eso se enecesita intuición, esa idea es la negación de la programación orientada a objetos, que es la religión universalmente adorada en las universidades. El ejemplo de código que muestra para explicar la elegancia es clásico, todos los programadores antiguos al menos conocemos ese problema de como tratar con el primer elemento de una lista: puede ser como un caso excepcional o creando un código que se ignore esa excepción y lo trate igual que todos los demás, es un ejemplo entrañable para cualquier programador práctico.

Es muy interesante lo que dice de no ser un visionario sino un tipo que mira para el suelo y resuelve problemas. Seguramente su mala opinión de los visionarios viene de charlatanes como Steve Jobs, que pasaron toda su vida vendiendo humo y haciendo anuncios fantásticos, excelente su analogía con Tesla y Edison. En realidad él y Bill Gates son visionarios, de los más grandes pero a su manera.

Es difícil entender a Linus Tovalds y su aporte a la tecnología, por una parte porque habla poco y mal pero por otra parte porque solo la gente que trabajaba en esto desde los setentas u ochentas puede entender los aspectos más sutiles de su contribución. Recuerdo como en esos años existía unas estúpidas guerras santas entre Linux y Windows, enarboladas por profesores de la universidad, todos muy miopes, bastante tontos.

Al final Linux -en su interfaz de usuario por ejemplo- es prácticamente indistinguible de Windows y este tiene muchísmo de Linux. Era absurdo plantear guerras cuando ambos sistemas eran absolutamente complementarios y las diferencias se debían solo al énfasis en lo que se estaba optimizando

Ah, mejor no sigo. Me costó muchísimo escribir sobre esto porque tengo un montón de ideas y experiencias que no son fáciles de poner en palabras, incluso creo que varias cosas quie puse no están bien y debería haberlas explicado mejor, pero el tema es complejo. Para mi, que viví la programación desde los tiempos arcaicos, es un asunto personalmente apasionante, pensé mucho en lo que iba a poner pero nada salió como yo quería. Lo siento pero que diablos.

14 comentarios:

  1. Cuando estaba en la U, la segunda mitad de los 90, los informáticos y electrónicos como que nos miraban por encima del hombro porque nosotros (ingenieros de especialidades más duras) nos batiamos con Windows 3.11 y la gran novedad gran del 95. En esos tiempos, Linux era una lista de comandos bastante más enredados que los de DOS, y tampoco tenia interfaz gráfica, como el 95, que nos ayudó mucho a todos los ñurdos tecnológicos. Ellos no entendían (y probablemente tampoco lo hagan todavía), que a loa usuarios comunes (la amplia mayoría), no nos interesa mucho como se arma el programa, solo nos interesa que de Buenos resultados, que sea simple de usar y seguro. En esos tiempos se creían superiores porque sabían usar un sistema operativo más complejo......de ahí me quedo cierta aversión al Linux, pero entiendo que ahora es mucho más amigable. In causó viene instalado en algunos notebooks, como estándar.

    Mis condolencias por este día infame.

    ResponderBorrar
  2. En este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo:

    Las guerras santas fueron una de las cosas absurdas de esos años de transición. El Linux para computadores de escritorio y laptops siempre ha estado repleto de limitaciones, por razones fundamentales del diseño muy largas de mencionar, por eso nunca desplazó a Windows de ese segmento, yo nunca lo he usado por mucho tiempo, excepto un año que tuve que hacerlo por motivos profesionales inconfesables.
    lo irónico es que el Linux se masificó recién en el momento que a alguien -probablemente en Google- se le ocurrió hacer un clon de Windows para los teléfonos celulares y tablets: el Android es lejos la versión más exitosa de Linux, que puede leer el sistema de archivos Windows de manera transparente, es una de las síntesis más lindas de ambos mundos.

    ResponderBorrar
  3. Como programador desde mediados de los 70's y por muchos años (aún lo hago), me he entretenido mucho con tu artículo y más aún con el video. Me recuerda mucho a un joven genio que desarrolla software para simplificarse su vida de progrmador y que se preocupa de la "belleza" de un programa bien hecho y eficientw. Un agrado en este domingo. Saludos

    ResponderBorrar
  4. En este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo:

    Creo que casi todos los buenos programadores son autodidactas, las universidades forman obreros codificadores y les infiltran muchos hábitos e ideas que después son muy difíciles de superar, los mejores códigos son escritos por autodidactas como Bill Gates y Linus Tovalds, el código elegante no siempre es el mejor para el trabajo colaborativo pero es un disfrute para los ojos.

    Recuerdo que casi todos los programadores antiguos pasaban la vida llenando su cajón de herramientas con snippets de código que les servían para hacer más fácil la vida, después aparecieron las bibliotecas y las APIs y todo eso pasó a la historia. La antigua forma de programar se fue al diablo con la estandarización y la OOP.

    Lo que se ha ganado en eficiencia se perdió en creatividad, aunque con las apps para Internet y los equípos móviles parece que las microaplicaciones están volviendo, es una suerte ¡Saluiti!

    ResponderBorrar
  5. Ah, la caja de herramientas, la colección de sub-rutinas, una maravilla !

    ResponderBorrar
  6. Una amiga que trabaja en redes me ha hablado de esto de las guerras de Linux y Windows. No es diferente de la guerra de consolas XD.

    ResponderBorrar
  7. Ulschmidt, en este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo:

    Jaja, somos muchos veteranos que recordamos con nostalgia ese entrañable subdirectorio donde se guardaban códigos para todo: para grabar un registro al archivo, para recuperar un registro de un archivo, para ordenar una lista, para hacer búsquedas indexadas, para actualizar una lista, para transformar números a palabras (para imprimir cheques), validar entradas por teclado, autocompletar, crear estructuras de datos como archivos relacionales, etc., redondear cifras, plantillas para pantallas estandarizadas, en fin ¡ahora son puras biliotecas!

    ResponderBorrar
  8. Frx esas guerras santas de sistemas operativos dejaron de tener sentido hace muchos años, especialmente entre Windows y Linux, solo los muy tontos siguen con eso.

    Me acuerdo también de las estúpidas guerras sobre cual lenguaje es más "poderoso"

    Mucha gente con preparación formal en informática pueden llegar a ser increíblemente estúpidos ¡algunos parecen SAVANTS! Creo que en cierto modo la universidad los convierte en retardados, hay profesores que dan miedo y hacen un daño irreparable. Los mejores programadores fueron, son y serán autodidactas. Los que tuvieron formación universitaria o tienen que desprogramarse completamente o se convieten en idiotas perfectos, con el tiempo. La universidd es el peor ambiente del mundo donde se puede "aprender" programación.

    ResponderBorrar
  9. Y se me había olvidado: en este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo:

    ResponderBorrar
  10. Hay que celebrar el día del ocio para compensar XD.

    ResponderBorrar
  11. El 1 de mayo de 1834 en el Imperio británico se declara abolida la esclavitud. ..

    pero hoy se sigue celebrando una de sus variantes comuflajeadas.

    ResponderBorrar
  12. Excelente dato: borran con el codo lo que escribieron con la mano. En este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo:

    ResponderBorrar
  13. Mis mas sinceras condolencias en este día funesto.

    "La palabra «trabajo» deriva del latín tripalium, que era una herramienta parecida a un cepo con tres puntas o pies que se usaba inicialmente para sujetar caballos o bueyes y así poder herrarlos. También se usaba como instrumento de tortura para castigar esclavos o reos. De ahí que tripaliare significa ‘tortura’, ‘atormentar’, ‘causar dolor’."
    Fuente: Wikipedia

    ResponderBorrar
  14. Exactamente, la etimología de esa palabra grosera significa "yugo", "cepo" y por analogía las cadena con que se acostumbrabaa conducir a los esclavos en su triste destino.

    En este día maldito, en que algunos "celebran" la más ruin de todas las actividades del ser humano, te saludo.

    ResponderBorrar

"Send me a postcard, drop me a line
Stating point of view
Indicate precisely what you mean to say
Yours sincerely, wasting away
Give me your answer, fill in a form
Mine for evermore
Will you still need me, will you still feed me
When I'm sixty-four"