cultura y tecnología
238 meneos
957 clics
Ken Thompson, padre de Unix y el lenguaje B: "Uno de mis días más productivos fue cuando borré 1.000 líneas de código"

Ken Thompson, padre de Unix y el lenguaje B: "Uno de mis días más productivos fue cuando borré 1.000 líneas de código"

La leyenda de la computación Ken Thompson reflexiona sobre la verdadera productividad en el desarrollo de software. En un mundo obsesionado con métricas de cantidad, Thompson recuerda que simplificar un sistema y eliminar código superfluo es a menudo el mayor avance técnico posible. Una lección de minimalismo que dio forma a Unix y que sigue vigente décadas después.

| etiquetas: ken thompson , unix , programación , software , minimalismo , productividad
Por eso se considera que la métrica de líneas de código escritas está totalmente obsoleta como la frenología.

Lamentablemente otras métricas totalmente estúpidas como temperatura del sillón donde labora un trabajador (para medir presencialidad) siguen vigentes en la mente de jefazos atornillados a prácticas de principios del siglo pasado.
#1 Es economía del lenguaje, pasa lo mismo cualquier lenguaje hablado, donde se puede decir lo mismo con menos palabras y eso es lo que se impone. Por eso existen pronombres y otros recursos que haciendo uso del contexto hacen que la comunicación sea más rápida y efectiva con menos elementos.
En el contexto de la informática un programa con menos líneas es más fácil de mantener que algo con millones de líneas aunque haya espacio y memoria de sobra, pero va a meter más bugs y va a ser más complicado de depurar y mantener por gente ajena a ese código.
#3 48c7c00100000048c7c70100000000488d350e00000048c7c20e0000000f0548c7c03c0000004831ff0f0548656c6c6f2c20776f726c640a
#3 ¿Puedes matizar eso de que un programa conmenos líneas de codigo va a meter mas bugs? Eso de que si detectas un patrón repetitivo y lo abstraes a un a una funcion es mas complicado de entender...puede si función o usas nomenclaturas raras, esta mal documentada y sobretodo provoca efectos laterales fuera del ambito de la funcíon...pero haciendo bien las cosas habra menos bugs si el codigo a tocar es único, que si tienes que hacer el cambio en diez sitios similares que no sabes donde estan.
No hay nada peor que ver algo que esta mal hecho y que lo han usado a modo de plantilla en un monton de sitios
#51 No soy informático, pero por simple estadística, mientras más gordo sea un programa más probabilidad hay de que se te escapen más cosas.
#1 A ver si también aplican el enfoque a la producción legislativa
#28 ayer miré mi convenio. Copian y pegan el mismo párrafo de lenguaje farragoso varias veces sólo para cambiar cada vez una fecha y un dato. Pero te los tienes que leer todos, por si acaso.
Está gente merece portadas y no los mal conocidos como grandes informáticos, que no son más que empresaurios
#2 Todo esto es una inmensa campaña de mercadotecnica. Imaginemos el negocio que es que cada programador del mundo pague una subscripción de, digamos, 200, 300€ mensuales para poder trabajar. Echemos unos numeritos rápidos y verems que el mercado es suculento.

La IA es útil, sin dudarlo. Pero aquí lo que estamos viendo es cómo unas pocas empresas se están haciendo con el mercado de las subscripciones para que los programadores puedan seguir trabajando.
#53 Si una empresa tiene 20 programadores el negocio no está en que paguen 200 euros al mes cada uno, el negocio está en poder echar a 15 de ellos.
#57 Según como lo mires. El que echa 15 ahorra ahora el salario de los 15, fin.

Las empresas que venden servicios de IA bajo subscripción, aún tiene millones de programadores como potenciales clientes. La cifra de negocio debe ser interesante, y aún no están cobrando los precios de verdad.

En mi empresa hemos pasado de "¡todos a la IA!" a "usen la IA con mucho cuidado" desde que han empezado a ver los costes.
#2 ¿Cómo quien?
#54 A la gente de la calle le preguntas por pioneros de la informática y como mucho te saben decir a Bill Gates o Steve Jobs.
#56 bueno, yo de "moda" te puedo decir Amancio Ortega, yo que yo piense es muy irrelevante en una industria que no es la mía
La nueva métrica que se está poniendo de moda en el mundo empresarial es el número de tokens gastados en IA. Que es casi tan absurdo como medir el número de líneas escritas...
#5 No me digas? Cuántos más mejor??
#7 Seps. Cuantos más tokens gastas más estás "adoptando" el uso de la IA para tus tareas y eso te convierte en un "mejor" desarrollador.
#8 de traca! :palm:
#8

¡Coño! te había entendido mal ... pensaba que hablabas del error de medir el consumo de la IA en tokens ....

Tienes toda la razón, gastar tokens está tirado .. usarlos con resultados, es otra cosa distinta (como lo de las líneas)
#8 De los creadores de "no tenemos ni puta idea de cómo medir la productividad, así que vamos a medir las líneas de código" ahora llega "no tenemos ni puta idea de cómo medir la productividad segunda parte: ahora medimos tokens".
#5 Es igual de absurda, pero también mucho más fácil de hackear: basta con pasarse el día preguntándole gilipolleces al copilot y quedas como el tío más productivo de la empresa.
#5 es peor porque al menos las líneas había que picarlas personalmente
Este señor también es uno de los tres creadores del lenguaje Go (Tecnología clave en el mundo de infraestructura y contenedores)
#6 Y del grupo que desarrolló Plan9.
p9f.org/
p9f.org/about.html
Como dice #10
Del artículo, pié de foto: "Ken Thompsoncon una pantalla de terminal de fondo que exhibe comandos y scripts de Unix/Linux Generado con IA"

La foto es un cota pega de la pagina del manual de ls, una salida de ese comando y luego la muestra del contenido de un script hello word en bash, la ejecución del script y por último la muestra de la ejecución del comando "ps aux" para ver los procesos del programa bash y te pone números que son 1234 1234 6789... Muy…   » ver todo el comentario
#4 Y los directorios Desktop, Documents, Downloads... huelen a macOS que tiran para atrás.
#12

Te me has adelantado porque venía a decir lo mismo. Al menos es un UNIX. Recuerdo un anuncio glorioso, creo que de infovía, donde se veía una serie de ingenieros delante de un PC de la época ... ¡y en la pantalla estaba corriendo el scandisk de MSDOS!
#16 había otro de FP de informática que iba "programado" y se ve la pantalla y simplemente aporreaba teclas
#12 bueno, los Linux , con interfaz gráfica, también los tienen
#4 Parece la típica interfaz de palo que ponen en las películas o series cuando salen hackers.
#15 En la peli Matrix usaron Nmap y era más o menos un uso real, aunque en esa época ese exploit estaba ya corregido: www.youtube.com/watch?v=0PxTAn4g20U
nmap.org/
#19 pero en la simulación de Matrix no :-D
#15

¿interfaz? Si es la shell ejecutando cuatro comandos, lo único, han cortado el man ls y han dejado solo un cacho se la salida.
#20 Una shell también entra dentro de la definición de interfaz, otra cosa es que no sea gráfica ni intuitiva.
#21

Si me apuras, hasta el antiguo debug de MSDOS es una interfaz.
#26 CLI command line interface.
Incluso, que no lo sabía, se le llama shell "cáscara" por que envuelve al kernel (núcleo) que en alemán también significa hueso o semilla (si es como en un melocotón).
#27

Date cuenta que esto viene de una época en el que "interfaz" eran tarjetas perforadas. Yo nunca las vi en funcionamiento, pero cuando estaba en la universidad te contaban que para hacer las IPL tenían como un conjunto de tarjetas que arrancaba el ordenador, algo así como el GRUB, pero en papel.
#32 De pequeño recuerdo ver alguno de los llamados "Terminales tontos" que se conectaban a un servidor, los usaban en el Hospital de la Paz en Madrid. De ahí a windows 3.11 pasando por el Spectrum y Amstrad. (yo no la Paz xD ).
#33

Eso lo he usado yo, los IBM 3270 (luego eran todos emulados en PCs) Los teclados de las narices pesaban sus buenos 4-5 kilos y tenían un dispositivo que imitaba el sonido de las máquinas de escribir, pero no era el ruido de la tecla, tenían un dispositivo dentro que soltaba una leche a un yunque interno y sonaba como las máquinas de escribir mecánicas.

Otra cosa curiosa, el botón de mayúsculas no funcionaba como sabemos todos ... en una posición podías usar mayúsculas/minúsculas y en la…   » ver todo el comentario
#37 Recuerdo en la parte inferior, estilo donde en el nano te dice las combinaciones de teclas bajo una linea horizontal, con no se qué, salía el icono de una llave.
#39

Algo me suena ... pero date cuenta te hablo de algo que no he tocado en casi 40 años. Esto creo que debe ser de un emulador (por los colorines) pero así recuerdo yo el CICS en 1987. Luego en los 90 trabajé con chismes de estos, pero vía emulación HW y otra vez en los 2000, pero SW. Pero el espíritu era el mismo.

Una cosa muy curiosa era el comando SORT ... que lo usaban para un montón de cosas aparte de para ordenar, como sería lógico.  media
#43 El sort estaba en msdos, tuve un profesor que nos empezó a enseñar con arrays y emular bases de datos con bat.
#46

No, el de COBOL/CICS/DB2:

www.ibm.com/docs/en/cobol-zos/6.3.0?topic=files-coding-input-procedure

Lo usaban para mezclar ficheros, ordenar, hacer operaciones ...

SORT SORT-WORK-2
ON ASCENDING KEY SORT-KEY
INPUT PROCEDURE 600-SORT3-INPUT-PROC
. . .
600-SORT3-INPUT-PROC SECTION.
PERFORM WITH TEST AFTER
VARYING X1 FROM 1 BY 1 UNTIL X1 = 100
RELEASE SORT-WORK-2-AREA FROM TABLE-ENTRY (X1)
END-PERFORM.

mezclar ficheros

MERGE SORT-FILE
ASCENDING KEY SR-ID…   » ver todo el comentario
A partir del momento en que un programa funciona, debería de hacer lo mismo cada día con menos lineas de código. Y cuando ya no sea posible quitar nada, eso es un programa que está en un fantastico punto de partida para ser optimizado.
#14 Yo soy más de a partir del momento en que un programa funciona, no lo toques.
#36 A ver, si ya tienes muchos años de experiencia y eres capaz de hacerlo perfecto a la primera y sin bugs, pues te doy la razón.
Co creador también del sistema operativo Plan 9 que corregía los errores de diseño de UNIX y donde realmente es un fichero
rm -rf / y acababa antes. :troll:
Esperemos que la IA haga el trabajo que los estúpidos no quieren hacer.
Lo gracioso es que seguro que muchos programadores de hoy en día, si vieran el código escrito por este señor, dirían que no sigue "Best practices" xD
#42 Es una métrica de mierda como cualquier otra para calzarse a un 50% de la plantilla. :shit:
Como hacerlo por edad, color de pelo, o procedencia es absolutamente ilegal, pues lo hicieron por eso. Pero no porque quisieran quedarse con los mejores (como objetivo) sino pq querían despedir a una parte siginficativa de su plantilla, luego ya verían.
No sé si la frase de "las lineas de código es una métrica para medir la productividad" sigue activa en algún lado.
De todos modos, yo suelo dar la misma respuesta que cuando me preguntan cuantos puntos de historia vamos a hacer: ¿cuantos quieres que hagamos? :troll: :-x
#30 Supuestamente tras la compra de twitter, el señor elmo musk pidió a los departamentos una lista de desarrolladores a despedir y pidió que se usara el número de líneas de código escritas en el último año como medida... (Supuestamente porque son filtraciones de grupos de slack internos de la empresa y podrían ser falsos, pero vamos, no creo que nadie se arriesgue a las posibles consecuencias legales de que eso sea mentira).
Yo recuerdo haber llegado a un sitio con la tarea "imposible" de que un sistema dejara de caerse los días 1 de cada mes, todos los compañeros que llevaban ahí tiempo habían pasado por esa tarea y nadie había conseguido mejorar el tema. No había pasado ni una semana que me di cuenta de que había toda una sección enorme del código que no hacía absolutamente nada, me pareció imposible, comenté la linea que lo llamaba e hice pruebas super exhaustivas y comprobé que efectivamente no hacia nada pero como era recursivo y demás reventaba los servidores.
Estuve un año entero en esa empresa viviendo de haber borrado esa linea.
#41 hola? Misma historia por aqui! Jajaja

Con la diferencia de que lo mío era un deadlock entre servidores (uno esperando al otro y el otro al uno), uno de ellos no necesitaba la respuesta para continuar asi que con eliminar una línea de código lo resolvi.

Al hilo del envío, yo me he tirado 1 semana para terminar escribiendo una línea de código para resolver un problema chungo ¿cómo medirían eso? :troll:
#44 Lo mío era que alguien se había inventado una especie de "recolector de basura" que iba recorriendo todos los objetos en memoria y poniendolos a null, te puedes imaginar el desastre que era, era tan complicado que era hasta dificil entender que carajos hacía y claro, es que no hacía nada de nada (que no hiciera ya la MVJ)
#41 Una vez me vino un aprendiz (en prácticas de la uni) que me lo enviaba el director de desarrollo, porque había una línea de código que no conseguían que compilara y nadie sabía por qué. Me dí cuenta de que asignaba una variable que nunca más nadie volvía a usar, así que simplemente borré esa línea. Qué gran cosa.
He estado ahí. Borrar código proporciona una satisfación inmensa. Vale que no es como el sexo, pero es algo que se recuerda.
"Ken Thompson, padre de Unix y el lenguaje B: "Uno de mis días más productivos fue cuando borré 1.000 líneas de código"

Joder, pues un día borre yo solo 100 de un proyecto y me echaron del curro !!!! :troll:
#18 ¿te echaron por 100 líneas borradas? lo raro es que se enteraran de algo. ¿qué empresa no tiene su código en control de versiones?
#18 Yo he borrado miles de linea de código (incluso de una tacada), y es probablemente el mejor ejercicio de gestión de software que puedas hacer.
tokens negativos?!?!?! estamos locos!??!?!

menéame