Cajas de herramientas para la mente





Cuando el informático japonés Yukihiro Matsumoto decidió crear Ruby, un lenguaje de programación que ha ayudado a construir Twitter, Hulu y gran parte de la Web moderna, perseguía una idea de una novela de ciencia ficción de 1966 llamada Babel-17 por Samuel R. Delany. En el corazón del libro hay un idioma inventado del mismo nombre que actualiza las mentes de todos aquellos que lo hablan. Babel-17 es un lenguaje analítico tan exacto que casi te asegura el dominio técnico de cualquier situación que mires, dice el protagonista en un momento. Con Ruby, Matsumoto quería lo mismo: reprogramar y mejorar la forma de pensar de los programadores.

Suena grandioso, pero la de Matsumoto no es una visión marginal. Los desarrolladores de software como especie tienden a estar convencidos de que los lenguajes de programación tienen un control sobre la mente lo suficientemente fuerte como para cambiar la forma en que aborda los problemas, incluso para cambiar los problemas que piensa resolver. Es cómo evalúan las empresas, los productos, sus pares: ¿Qué idioma usas?

Ingeniería del bebé perfecto

Esta historia fue parte de nuestra edición de mayo de 2015



  • Ver el resto del número
  • Suscribir

Eso puede ayudar a los extraños a comprender las compañías de software que se han vuelto tan poderosas y valiosas, y los productos y servicios que infunden nuestras vidas. Una decisión que parece el tipo más interno de béisbol interno, ya sea que alguien construya algo nuevo usando, por ejemplo, Ruby o PHP o C, de repente puede afectarnos a todos. Si desea saber por qué Facebook se ve y funciona de la manera en que lo hace y qué tipo de cosas puede hacer por y para nosotros a continuación, necesita saber algo sobre PHP, el lenguaje de programación con el que Mark Zuckerberg lo creó.

Entre los programadores, PHP es quizás el menos respetado de todos los lenguajes de programación. Una publicación de blog ahora canónica sobre sus fallas lo describió como un fractal de mal diseño , y aquellos que lo usan voluntariamente son vistos como aficionados. Existe este mito de la ingeniería brillante que entró en Facebook, dice jeff atwood , cocreador del popular sitio de preguntas y respuestas sobre programación Desbordamiento de pila . Pero estaban creando código PHP en Windows XP. Eran hackers casi en el sentido despectivo de la palabra. En el espacio de 10 minutos, Atwood llamó a PHP un monstruo tambaleante, una pandemia y una casa embrujada cuyos residentes han llegado a amar a los fantasmas.

Cosas revisadas

  • Babel-17

    Por Samuel R. Delany
    1966



  • OCaml del mundo real Por Yaron Minsky et al.

    O’Reilly, 2013PHPHackScala

La mayoría de los lenguajes de programación exitosos tienen una filosofía general o un conjunto de principios rectores que organizan su vocabulario y gramática, el conjunto de posibles instrucciones que ponen a disposición del programador, en un todo lógico. PHP no lo hace. Su creador, Rasmus Lerdorf, admite libremente que simplemente lo improvisó. no se como pararlo, dijo en una entrevista de 2003 . No tengo absolutamente ninguna idea de cómo escribir un lenguaje de programación, solo seguí agregando el siguiente paso lógico en el camino.

El ejemplo favorito de los programadores es una función de PHP llamada mysql_escape_string, que elimina una consulta de entrada maliciosa antes de enviarla a una base de datos. (Para ver un ejemplo de una entrada maliciosa, piense en un formulario en un sitio web que solicita su dirección de correo electrónico; un pirata informático puede ingresar código en esa ranura para obligar al sitio a liberar contraseñas). Cuando se descubrió un error en el función, se agregó una nueva versión, llamada mysql_ real _escape_string, pero el original no fue reemplazado. El resultado es un poco como tener dos botones de aspecto similar uno al lado del otro en la cabina de una aerolínea: uno que baja el tren de aterrizaje y otro que lo baja. sin peligro . No es solo una afrenta al sentido común, es una receta para el desastre.



Sin embargo, a pesar del desprecio generalizado por PHP, gran parte de la Web se construyó sobre su base. PHP potencia el 39 por ciento de todos los dominios , según una estimación. Facebook, Wikipedia y la plataforma de publicación líder WordPress son todos proyectos PHP. Eso es porque PHP, a pesar de todos sus defectos, es perfecto para empezar. El nombre originalmente significaba página de inicio personal. Facilitó agregar contenido dinámico como la fecha o el nombre de un usuario a las páginas HTML estáticas. PHP permitió el salto de trastear con una web sitio escribir una web solicitud ser tan pequeño como para ser imperceptible. No necesitabas ser un profesional.

La puesta en marcha de PHP fue crucial para el éxito de Wikipedia, dice Ori Livneh, ingeniero de software principal de la Fundación Wikimedia, que opera el proyecto. Siempre he odiado PHP, me dice. El proyecto adolece de fallas de diseño a gran escala como resultado de su dependencia del lenguaje. (Esto explica en parte por qué la fundación no hizo que las páginas de Wikipedia estuvieran disponibles en una versión adaptada para dispositivos móviles hasta 2008, y por qué el sitio no obtuvo una interfaz de edición fácil de usar hasta 2013). —o eran apenas— ingenieros de software para contribuir con nuevas funciones. Así es como las entradas de Wikipedia llegaron a mostrar jeroglíficos en páginas de egiptología, por ejemplo, y manejar partituras.

El lenguaje de programación PHP creó y sostiene la cultura corporativa de Facebook orientada a los piratas informáticos.



No habría creado Google en PHP, porque Google, para convertirse en Google, necesitaba hacer exactamente una cosa muy bien: necesitaba que la búsqueda fuera sobria, rápida y meticulosamente bien diseñada. Se hizo con lenguajes más refinados y potentes, como Java y C++. Facebook, por el contrario, es un bazar de pequeños experimentos, una mezcla heterogénea de botones, feeds y artilugios que intentan captar su atención. PHP está hecho para haciendo —para preparar funciones rápidamente.

Casi puedes imaginar a Zuckerberg en su dormitorio de Harvard el fatídico día en que nació Facebook, haciendo lo mínimo que podía para poner su sitio en línea. La Web se mueve tan rápido y los usuarios son tan volubles que la única manera de capturar el momento es siendo el primero. No importaba si hacía una gran bola de barro, un plato de espagueti o un horrible gabinete de mangueras (tomando prestado del rico léxico de los programadores para describir el código desordenado). Él hizo la cosa. La gente podría usarlo. No estaba pensando en código hermoso; estaba pensando en sus amigos iniciando sesión en El Facebook mirar fotos de chicas que conocían.

Hoy Facebook vale más de 200.000 millones de dólares y hay letreros en las paredes de sus oficinas: Listo es mejor que perfecto; Muévete rápido y rompe cosas. Se supone que estos mensajes audaces mantienen a los empleados en sintonía con la cultura hacker de la empresa. Pero estos son precisamente PHP valores. Moverse rápido y romper cosas es, de hecho, tanto la esencia de PHP que cualquiera que hable el idioma piensa indeleblemente de esa manera. Se podría decir que el idioma mismo creó y sostiene la cultura de Facebook.

el arma secreta

Si desea encontrar exactamente lo contrario de PHP, una especie de experimento natural que le muestre cómo se ve el otro extremo, no podría hacerlo mucho mejor que la sede del Bajo Manhattan de la firma de comercio financiero Jane Street Capital. La empresa de 400 personas afirma ser responsable de aproximadamente el 2 por ciento del volumen diario de negociación de acciones en los Estados Unidos.

Cuando conocí a Yaron Minsky, el jefe de tecnología de Jane Street, estaba sentado en un escritorio con una máquina Enigma en funcionamiento a su lado, uno de las pocas docenas de dispositivos de código de la Segunda Guerra Mundial que quedan en el mundo. Pensaría que es el claro ganador del concurso de Coolest Secret Weapon in the Room si no fuera por la forma en que sigue hablando de un oscuro lenguaje de programación llamado OCaml. Minsky, un doctorado en ciencias de la computación, convenció a su empleador hace 10 años para que reescribiera todo el sistema comercial de la empresa en OCaml. Antes de eso, casi nadie usaba el idioma para el trabajo real; era desarrollado en un instituto de investigación francés por académicos que intentan mejorar un sistema informático que prueba automáticamente teoremas matemáticos. Pero Minsky pensó que OCaml, que había conocido en la escuela de posgrado, podría reemplazar las complejas hojas de cálculo de Excel que impulsaban los sistemas comerciales de Jane Street.

El gran punto de venta de OCaml es su sistema de tipos, que es algo así como el corrector gramatical de Microsoft Word, excepto que en lugar de simplemente poner una línea verde ondulada debajo del código que cree que es incorrecto, no le permitirá ejecutarlo. Los programas escritos con un sistema de tipos tienden a ser mucho más fiables que los escritos sin uno, lo que resulta útil cuando un programa puede cotizar 30.000 millones de dólares en un gran día.

Minsky dice que al detectar errores, el sistema de tipos de OCaml permite a los codificadores de Jane Street concentrarse en problemas más elevados. Uno se pregunta si han interiorizado las constantes molestias del sistema a lo largo del tiempo, de modo que OCaml se ha convertido en una especie de neolengua que imposibilita tener malos pensamientos.

El problema es que para obtener todos los beneficios del verificador de tipos, los programadores deben agregar anotaciones complejas a su código. Es como si el corrector gramatical de Word requiriera que diagramaras todas tus oraciones. Escribir código con restricciones de tipo puede ser una molestia, incluso desmoralizador. Para empeorar las cosas, OCaml, más que la mayoría de los otros lenguajes de programación, trafica con una especie de matemáticas abstractas profundas mucho más allá de la mayoría de los programadores. Sin embargo, el rigor del lenguaje es como hierba gatera para algunas personas, lo que le da a Jane Street una ventaja inusual en el apretado mercado de contratación de programadores. Los desarrolladores de software se unen principalmente a Facebook y Wikipedia a pesar de PHP. Minsky dice que OCaml, junto con su libro OCaml del mundo real —ayuda a atraer un suministro constante de candidatos de alta calidad. La atracción no es solo el idioma sino el tipo de personas que lo usan. Jane Street es una empresa donde juegan ajedrez para cuatro personas en la sala de descanso. La cultura de la inteligencia competitiva y el uso de un sofisticado lenguaje de programación parecen ir de la mano.

Google parece estar tratando de lograr un truco similar con Go, un lenguaje de programación de alto rendimiento que desarrolló. Diseñado para hacer que el funcionamiento de la web sea más elegante y eficiente, es bueno para desarrollar el tipo de software de alto riesgo necesario para ejecutar las colecciones de servidores detrás de los grandes servicios web. También actúa como un silbato para perros para los codificadores interesados ​​en lo nuevo y lo difícil.

Creciendo

A finales de 2010, Facebook estaba en crisis. PHP no se creó para el rendimiento, pero se le pidió que lo hiciera. El sitio estaba creciendo tan rápido que parecía que si algo no cambiaba de manera bastante drástica, comenzaría a derrumbarse.

Cambiar de idioma por completo no era una opción. Facebook tenía millones de líneas de código PHP, miles de ingenieros expertos en escribirlo y más de quinientos millones de usuarios. En cambio, se asignó a un pequeño equipo de ingenieros senior a un proyecto especial para inventar una forma de que Facebook siguiera funcionando sin renunciar a su idioma materno.

Una parte de la solución fue crear una pieza de software, un compilador, que traduciría el código PHP de Facebook en un código C++ mucho más rápido. La otra fue una hazaña de la ingeniería lingüística informática que permitió a los programadores de Facebook mantener su cultura PHP-iana pero escribir un código más confiable.

Las empresas emergentes pueden usar hábilmente el poder de los lenguajes de programación para manipular su psicología organizacional.

El equipo de rescate lo hizo inventando un dialecto de PHP llamado Hack. Hack es PHP con un Opcional sistema de tipos; es decir, puede escribir PHP simple, antiguo, rápido y sucio, o, si lo desea, puede atarse al mástil, agregando anotaciones para permitir que el sistema de tipo verifique la corrección de su código. Que este verificador de tipos esté escrito completamente en OCaml no es una coincidencia. Facebook quería que sus codificadores siguieran moviéndose rápido en la comodidad de su lengua materna, pero no quería que tuvieran que romper cosas mientras lo hacían. (El año pasado, Zuckerberg anunció un nuevo eslogan de ingeniería: Muévase rápido con infraestructura estable, utilizando la forma abreviada de hacker para la infraestructura que mantiene el sitio en funcionamiento).

Casi al mismo tiempo, Twitter experimentó una transformación similar. El servicio se creó originalmente con Ruby on Rails, un popular marco de programación web creado con Ruby de Matsumoto e inspirado en gran parte por PHP. Luego vino el diluvio de usuarios. Cuando alguien con cientos de miles de seguidores tuiteaba, cientos de miles de líneas de tiempo de otras personas debían actualizarse de inmediato. Grandes tweets como ese abrumarían con frecuencia el sistema y obligarían a los ingenieros a cerrar el sitio para permitir que se ponga al día. Lo hicieron con tanta frecuencia que la ballena fallida en la página de mantenimiento de la compañía se hizo famosa por derecho propio. Twitter detuvo la hemorragia al reemplazar grandes piezas de las tuberías del servicio con un lenguaje llamado Scala. No debería sorprender que Scala, como OCaml, fue desarrollado por académicos, tiene un poderoso sistema de tipos y premia la corrección y el rendimiento incluso a expensas de la libertad y el placer de los programadores individuales en su oficio.

A medida que las empresas emergentes maduran al descubrir finalmente de dónde provendrán sus ingresos, pueden usar hábilmente el poder de los lenguajes de programación para manipular su psicología organizacional. Diseñador de lenguajes de programación guido van rossum , que pasó siete años en Google y ahora trabaja en Dropbox, dice que una vez que una empresa de software alcanza cierto tamaño, la única manera de evitar el caos es usar un lenguaje que requiera más del programador por adelantado. Se siente como si te estuviera ralentizando, porque tienes que decir todo tres veces, dice van Rossum. Es por eso que muchas nuevas empresas esperan todo lo que pueden antes de hacer el cambio. Pierde a algunos de los piratas informáticos fanfarrones que lo ayudaron a comenzar y la posibilidad de que los equipos pequeños puedan apresurarse a desarrollar nuevas funciones. Pero un lenguaje más exigente ayuda a las personas de toda la empresa a entender el código de los demás y le da a su producto la estabilidad necesaria para ser parte del mobiliario de la vida diaria.

Que las nuevas empresas de software puedan realizar tales maniobras podría incluso ayudar a explicar por qué pueden ser tan poderosas. El alcance cada vez mayor de las computadoras es parte de ello. Pero estas empresas también tienen una capacidad única para rehacerse a sí mismas. A medida que cambian y crecen, pueden hacer algo más que volver a dibujar el organigrama. Debido a que están integrados en código, pueden hacer algo mucho más drástico. Pueden reconfigurarse a sí mismos, a su cultura, a la forma en que piensan.

James Somers es escritor y programador en Nueva York. Él trabaja en Genius.com .

esconder