¿Cuál es la mayor proeza de programación más impresionante que hayas presenciado? [cerrado]

26

Todos conocen el viejo adagio de que los mejores programadores pueden ser órdenes de magnitud mejor que el promedio. Personalmente he visto buenos códigos y programadores, pero nunca algo tan absurdo. Entonces la pregunta es, ¿cuál es la hazaña más impresionante de programación que hayas visto o escuchado?

Puedes definir impresionante por:

  1. El alcance de la tarea en cuestión, por ejemplo, John, por sí solo, desarrolló el marco para su empresa, un trabajo comparable en alcance al que los otros 200 empleados estaban haciendo combinados.

  2. Velocidad, por ejemplo, Stu programó un sistema operativo de aplicación multitarea en tiempo real completo en un fin de semana que incluye su propio compilador de C y herramientas de línea de comandos de shell

  3. Complejidad, por ejemplo, Jane volvió a diseñar nuestra aplicación LOC de 10 millones para trabajar en un grupo de servidores. Y ella lo hizo en una tarde.

  4. Calidad, por ejemplo, el código de Charles tenía una tasa de defectos por LOC 100 veces menor que el promedio de la compañía. Además, el código era limpio y entendible por todos.

Obviamente, cuantas más características se combinen, y cuanto más extremas sean, más impresionante será la hazaña.

Entonces, déjame tenerlo. ¿Cuál es la hazaña más absurda que puedes contar? Proporcione tantos detalles como sea posible e intente evitar leyendas o exageraciones urbanas. Publique solo lo que realmente puede garantizar.

Preguntas extra:

  1. ¿Era la tarea hercúlea uno de ellos, o el individuo asombraba regularmente a las personas?
  2. ¿Cómo explicas un desempeño tan impresionante?
  3. ¿Cómo se reconoció al programador por tan increíble trabajo?
David Reis
fuente
55
Una vez vi a un chico hacer press de banca 2 KLocs ... (lo siento, no pude resistir)
DevSolo
"Velocidad, por ejemplo, Stu programó un sistema operativo de aplicación multitarea en tiempo real completo en un fin de semana, incluido su propio compilador de C y herramientas de línea de comandos de shell" - Erm ... es posible que desee mantenerlo real.
Jas
Según las respuestas hasta ahora, algunas personas se impresionan fácilmente. He hecho un montón de las 'hazañas' enumeradas aquí.
Steven Evers
Hm, estaba pensando en casi duplicar este exactamente ayer;) ¡Muchas gracias por preguntar!
mlvljr
@DevSolo Hola, si estamos hablando de tarjetas perforadas o papel enrollado, podría ser una hazaña física.
Mark C

Respuestas:

39

Si bien no puedo garantizarlo oficialmente, siempre me ha impresionado que Chris Sawyer desarrolle Rollercoaster Tycoon casi por completo en lenguaje ensamblador.

sglantz
fuente
44
eso es una locura !!!
nanda
1
-.- +27 por algo que ya hemos discutido al menos dos veces en este sitio.
Mark C
31

Raíz cuadrada inversa rápida . Cómo alguien puede llegar a algo así está completamente más allá de mí.

Joonas Pulakka
fuente
1
Hum ... Eso podría ser (extremadamente) inteligente, pero es como 6 líneas de código y solo un pequeño bloque de construcción de una aplicación mucho más grande. No entiendo cómo es extremo en ninguna de las dimensiones que enumeré.
David Reis
11
David Reis, es muy probable que esto esté optimizando un cuello de botella crucial de una manera ingeniosa. No confunda el número de líneas con la cantidad de trabajo necesario para escribirlas.
2
@David, no sé por qué insistes en que las hazañas de programación deben haberse realizado en muy poco tiempo para ser una hazaña.
2
Sí, que es más que una hazaña, 600 líneas de código escritas en un día frente a 6 líneas de código creadas durante 100 días, si ambas hacen lo mismo. Creo que es lo último, pero su kilometraje puede variar.
Joonas Pulakka
66
@David, no estoy de acuerdo con que cualquier problema pueda resolverse en tiempo infinito. Es posible que desee leer joelonsoftware.com/articles/HighNotes.html . "El verdadero problema con el uso de muchos programadores mediocres en lugar de un par de buenos es que, sin importar cuánto tiempo trabajen, nunca producen algo tan bueno como lo que pueden producir los grandes programadores".
16

Los primeros juegos de arcade.

Completamente restringido por memoria, potencia de procesamiento, E / S ...

Lo que esos programadores lograron en este entorno fue sorprendente.

Ej. Pacman - Perfecto. Todavía jugable después de todos estos años.

Conor
fuente
2
Pacman es famoso por no ser perfecto. Falla bastante cuando el contador de nivel se desborda un byte. ;)
Mason Wheeler
¡Excelente! Según Wikipedia: "Pac-Man tiene una famosa pantalla de asesinatos, a menudo conocida como la pantalla de bomba de Pac-Man. El contador de nivel del juego era un solo byte de 8 bits y, por lo tanto, solo podía almacenar 256 valores distintos (0–255) "Alcanzar el nivel 256 produce un contador que se usa mientras se dibuja la fruta para que se desborde a cero, lo que hace que se dibujen 256 frutas y siete espacios en blanco. Sin embargo, se puede arreglar con un parche".
Conor el
1
¿Los primeros transbordadores espaciales tal vez?
Trabajo
La Sra. Pac-Man fue muy superior
Tim Goodman el
1
@Mason, ¡incluso puedes conseguirlo en una camiseta! errorwear.com/shirt-pacman.php
15

Hay un programador en el que trabajo que ha hecho lo siguiente en más de una ocasión.

El ejemplo más reciente fue un proyecto en nuestro grupo que se asignó a 3 personas. Era una aplicación LOB compleja con un calendario de 6 meses (que era una línea de tiempo extremadamente agresiva).

Comenzaría la semana de codificación, 1 de las 3 personas renunciaron (por razones personales) y otra se fue con una licencia médica muy repentina. El único programador restante fue a casa para comenzar a programar y regresó 3 meses después con la solicitud completa.

EDITAR

Solo para agregar alguna aclaración. El código resultante fue casi perfecto, cumplió con los requisitos y nuestro grupo de control de calidad solo pudo documentar 3 defectos.

Walter
fuente
Tenía que estar haciendo más de 100 horas de trabajo semanas para lograr esa hazaña. Apuesto a que él / ella pasó por un montón de cafeína.
Ali
3
El mítico hombre mes en acción. ¡Retire a 2 personas del proyecto == reduzca a la mitad la línea de tiempo! Aunque tiene sentido que un desarrollador enfocado pueda hacer las cosas más rápido que tratar de coordinar a 3 personas.
CodexArcanum
Si esa persona alguna vez abandona la compañía en malos términos (sin período de intercambio de conocimiento), la compañía tendrá grandes problemas ...
Onion-Knight
3
@bjarkef: el código es de primera categoría. Este codificador es el mejor programador de nuestra empresa y el período de tiempo muy corto no redujo la calidad normal que normalmente obtenemos de él.
Walter
1
@Walter, no puede estimar con precisión hasta que lo haya hecho, lo que contradice cuando necesita el número. Esto hace estimaciones al este cuando ha realizado la tarea anteriormente, y difícil cuando es desconocido para usted. Siempre y cuando no subestimes al cliente , estarás contento de que haya sido más barato de lo esperado.
13

Tal vez solo estoy mostrando mi edad, pero creo que algunas de las hazañas verdaderamente impresionantes de la programación están siendo ignoradas.

Steve Wozniak, Apple Disk II / RWTS

Steve diseñó el hardware y el software juntos, utilizando trucos realmente geniales en el software para eliminar mucha complejidad (y costo) en el hardware. Las unidades de disquete normales usaban un LED y un fotosensor cerca del centro del disco para brillar a través de un orificio perforado en el sustrato del disco. La salida del fotosensor se conectó a una interrupción del procesador para que el procesador supiera cuándo comenzar su rutina de temporización para esperar a que el sector correcto en una pista esté debajo del cabezal de lectura / escritura (aunque algunos usaron "discos rígidos"). que tenía un agujero para señalar el inicio de cada sector en lugar de solo uno para el inicio de la pista).

Steve eliminó ese hardware al diseñar el software para codificar los datos de una manera que le permitiera comenzar a leer desde un punto arbitrario en el disco, y no solo decodificar los datos en sí, sino también averiguar dónde (lógicamente) estaba en la pista. La unidad de disco II no tenía la configuración de LED / fotosensor, e ignoró por completo los agujeros en el disquete.

Gordon Letwin, HPFS

Gordon Letwin fue arquitecto (y codificador) en el equipo OS / 2. Al menos cuando escuché la historia, en un momento se fue de vacaciones para alejarse de las cosas, y pasó tres semanas (más o menos) navegando en su yate (sí, los primeros empleados de MS podrían pagar cosas como esas ... ) ... pero para no aburrirse demasiado, decidió llevar su computadora portátil.

Cuando regresó, tenía HPFS escrito, depurado y funcionando, completamente en lenguaje ensamblador Intel 386. El código que escribió finalmente se vendió como el "HPFS386" que era exclusivo (al menos en ese momento) para LAN Manager Edition de OS / 2. Otro equipo luego pasó algo así como seis meses escribiendo una versión en C que se convirtió en el HPFS "normal" incluido en las ediciones normales de OS / 2 (y después de que IBM y MS se separaron, IBM actualizó y volvió a compilar el código C para obtener su "HPFS386"). Aunque se ha modificado y actualizado desde entonces, si fuera justo sobre las cosas, NTFS probablemente se llamaría "HPFS 2.0" (o tal vez 3.0); no hay duda de que el mejor sistema de archivos actual de Microsoft todavía se deriva de lo que diseñó.

Cintas Burroughs B220

Estos encarnaban (al menos en mi opinión) los inicios reales de la programación orientada a objetos. Cuando las cintas de IBM (por ejemplo) tenían "etiquetas" para informar sobre el formato de datos en la cinta, las cintas de Burroughs desarrollaron una convención (no creo que nadie sepa con certeza quién la inició) de poner un pequeño conjunto de rutinas en la cinta que comprendería los datos y cómo se formateó, para que pueda manipular los datos correctamente sin conocer los detalles de cómo se formateó. En otras palabras, los primeros "bloques" en la cinta eran básicamente una tabla en forma persistente. Básicamente, leería la vtable en la memoria, luego usaría los métodos que definió para manipular los datos en el resto de la cinta. Todo muy ordenado y simple (aunque un poco menos que completamente portátil).

Jerry Coffin
fuente
11

John Carmack regularmente me impresiona con sus hazañas de programación épica. Según una historia, estaba aburrido en su habitación de hotel, por lo que escribió el motor de iluminación Doom 3 en su computadora portátil durante un fin de semana.

CodexArcanum
fuente
2
Lástima que no haya escrito un juego real para acompañarlo.
DeadMG
10

A pesar de su propósito cuestionable, todavía estoy asombrado por un script de usuario de solucionador de captcha para MegaUpload . Es un script de GreaseMonkey escrito en JavaScript que tiene un decodificador de mapa de bits y una red neuronal que reconoce las letras en la imagen captcha, y repito, todo esto se hace usando JavaScript.

teukkam
fuente
1
Algo que mostrarle a la siguiente persona que se queja de no poder hacer un buen trabajo debido a las restricciones que se les imponen.
Jon Hopkins el
10

Miguel de Icaza - el proyecto Mono.

(También es increíblemente divertido, ingenioso y entretenido, al menos por la breve charla que lo vi dar y al escuchar algunas entrevistas de podcast)

Tim
fuente
+1 El tipo es obviamente gemelos o quizás trillizos, todos bajo su nombre. No hay forma de que una persona esté involucrada en toda la mierda que es, y en un nivel tan detallado.
Dan Rosenstark
8

Anders Hejlsberg: el lenguaje Turbo Pascal y el compilador . Sigo pensando que, después de todos estos años, TPC es una obra maestra de la ingeniería de software. Es el compilador de código nativo más compacto y rápido (a partir de ciertas versiones que también se optimiza) que he visto. En el IDE de Borland Pascal no hubo esencialmente "compilación". Modificó su código, presionó F9 y vio su programa ejecutándose de inmediato, y eso fue en una máquina de 8MHz o 12MHz. TPC más tarde se convirtió en Delphi, luego Hejlsberg se unió a Microsoft y fue coautor de C #.

Me encantaría echar un vistazo a las fuentes de versiones anteriores de TPC, pero desafortunadamente a pesar de numerosas solicitudes, Borland nunca las abrió.

El compilador de Hejlsberg se inspiró en este libro: Niklaus Wirth, Algorithms + Data Structures = Programs

mojuba
fuente
Delphi todavía tiene un compilador realmente rápido. Supongo que por eso se sale con la suya de no admitir modificar y continuar.
Joeri Sebrechts
6

Mi supervisor de capacitación en Gemplus (ahora Gemalto) escribió el primer intérprete y sistema operativo JavaCard durante su propio período de capacitación de pregrado de 3 meses. Él solo produjo el código de la especificación. Para producir el v.2, Gemplus formó un equipo de más de 30 hombres, sin el chico, que trabajó durante más de un año. Cuando terminaron, pero no pudieron obtener un rendimiento decente, lo llamaron para pedir ayuda, y en pocos días él y un colega suyo señalaron docenas de cuellos de botella.

Java Card es un subconjunto de Java destinado a ejecutarse en dispositivos muy pequeños. Su implementación se ejecutó en tarjetas inteligentes, que tienen un reloj de pocos MHz y 2 o 3 KB de RAM.

Solo por diversión: otra hazaña personal cotidiana suya fue sumergirse en un trance de trabajo, sin responder a ninguna de las preguntas que los alumnos gritamos en la sala, y luego, de repente, 2 horas más tarde apareció de nuevo con vida cuando su trabajo estaba terminado y respondía las 5 o 10 preguntas seguidas

Gabriel
fuente
1
Creo que superé la cosa de los 200 chicos ... No puedo recordar muy bien, fue hace más de 10 años. Le envié la pregunta de todos modos!
Gabriel
1
Maldición, ese tipo debe ser un cyborg ...
mlvljr
Correcto, tenían más de 30 (=
Gabriel
5

Lo recuerdo muy claramente; En la escuela secundaria, un compañero de clase ha codificado un videojuego de conducción completo en un par de lecciones con QB45 (Quick Basic 4.5). Desplazamiento vertical, cronómetro, vidas, niveles; Estaba totalmente conmocionado.

systemmpuntoout
fuente
1
Vi a un chico hacer eso con un juego de aventura de texto en Lisp. No es impresionante en sí mismo, pero en el momento en que lo hizo en ... wow.
Michael K
5

Git y / o Linux

Linus Torvalds escribió un núcleo del sistema operativo y un sistema de control de versiones desde cero. No conozco a nadie con una productividad similar.

LennyProgrammers
fuente
16
Por muy popular que sea Linux, es fácil exagerar la dificultad y / o la originalidad involucradas. Es casi por completo un clon de un sistema existente. Comparado con (por un ejemplo obvio) Dave Cutler que escribió RSX / 11, VMS y Windows NT desde cero, cada uno es un trabajo nuevo y único (y, para aquellos a quienes les importa, el sistema de archivos VMS incluía control de versiones) Linus hasn ' Ni siquiera llegó al mapa todavía.
Jerry Coffin
1
Felicitaciones por VMS, pero con el mismo razonamiento tienes que descontar NT. Wikipedia dice "dirigido [...] por Dave Cutler para construir Windows NT, y muchos elementos del diseño reflejan una experiencia DEC anterior con VMS y RSX-11 de Cutler". De todos modos, encuentro a Git impresionante.
LennyProgrammers
@ Lenny222: si bien es cierto que puede encontrar una similitud sustancial entre VMS y Windows NT, ni siquiera está cerca de ser un clon como Linux. Pienso bastante bien en Git también, pero si no existiera, puedo pensar en al menos dos o tres más que funcionarían bien en su lugar.
Jerry Coffin
55
¿Linus no trabajó solo en Linux durante aproximadamente un mes y luego lo convirtió en un proyecto comunitario muy exitoso? Realmente es un gran trabajo, pero no lo clasificaría como una proeza individual de programación, sino más bien como un proyecto colaborativo de código abierto muy exitoso.
David Reis
1
Creo que lo que estamos llegando aquí es el hecho de que ahora tenemos usuarios X que usan Linux en casa ... ¿Supongo que tienes una caja VMS en tu casa? De acuerdo, no fue un solo trabajo de un solo autor ... por el contrario, si no lo había hecho, ¿estaban los críticos alineados para hacerlo?
RobotHumans
5

Richard M Stallman viene a la cima de mi mente. Este hombre comenzó a dar vida a GNU Emacs, GCC, GDB y muchos otros programas notables. Incluso fue autor de la GPL original. He escuchado que dice que entra en una cueva durante 18 meses y regresa con más de 150,000 líneas de código que hacen que el compilador C de la suite GCC. Esos 150,000 LOC dieron la roca de la cama para g ++ más adelante. En sus propias palabras, Emacs comenzó como editor de texto, luego se convirtió en una forma de vida, y ahora es una religión para algunos de nosotros. Incluso hoy, los principios de diseño de Emacs se utilizan en muchos programas exitosos.

El sistema TeX de Donald E Knuth es otro programa que viene a la mente al pensar en programar maravillas.

vpit3833
fuente
Deberías intentar leer el TeXbook. No es para simples mortales.
Crear la GPL no es una hazaña impresionante . Sería como acreditarte con Singletons.
DeadMG
4

En mi clase de grado, mi compañero de clase creó un sistema operativo (aunque muy básico pero arrancó desde un disquete e hizo las rutinas necesarias) como un requisito del proyecto en menos de 30 días. La duración incluye tanto la lectura / investigación necesaria como la codificación real.

Recuerdo que las listas de correo de os.com lo desanimaban diciendo que no lo haría en esos días y también lo he visto caminar por el dormitorio a las 5 de la mañana en un estado semi consciente hablando galimatías. :-)

Es un programador asombroso.

Christy John
fuente
4

No iba a decir nada, pero alguien dijo "Ruby es una hazaña", así que

John McCarthy con las FUNCIONES RECURSIVAS originales de EXPRESIONES SIMBÓLICAS Y SU COMPUTACIÓN POR MÁQUINA , es decir, el documento en el que definió a Lisp en 1960, cuando ifera un concepto en el que la gente comenzaba a pensar seriamente. Hable acerca de adelantarse a su tiempo.

Inaimathi
fuente
Buena referencia. Yo fui el que apareció con el rubí, por elegancia sobre la convención. esto también es anticipado
RobotHumans
1
McCarthy hizo un artículo de matemáticas. Solo más tarde se descubrió que podía convertirse en código real.
1
@ Thorbjørn Ravn Andersen - Tuve cuidado de usar "definido" en lugar de "implementado".
Inaimathi
@Thor Eso es algo así como negarle a Arthur Clarke el crédito por descubrir (o inventar) la órbita geosíncrona circular simplemente porque no pudo construir un cohete para colocar un satélite allí, o porque la tecnología aún no existía.
Mark C
4

El compilador Symantec / Zortec C ++ de Walter Bright se mantiene al día con los compiladores implementados por grandes equipos de programadores. Más tarde, su diseño e implementación de D.

dsimcha
fuente
2

SHRDLU de Terry Winograd .

El matemático automatizado de Doug Lenat .

Mike Dunlavey
fuente
¡SHRDLU siempre me ha sorprendido!
@ Thorbjørn: Yo también. Eso es parte del espíritu de Minsky-lab que absorbí, para bien y para mal :)
Mike Dunlavey
1

Linus Trovalds escribiendo Linux

Friki
fuente
0

Programador de videojuegos de 8 bits en computadora de los años 80 (es decir: Commodore 64), algunos juegos bastante buenos estaban en lenguaje de máquina, y su tamaño a menudo era más pequeño que un mapa de bits para un icono de Windows ;-) Optimización en su máxima expresión

Geos (un sistema operativo WYSIWYG para Commdore 64) fue muy impresionante para su tiempo

Chipster
fuente
-2

No estoy seguro de que esto cuente realmente ... pero el tipo que desarrolló Ruby. Simplemente no puedo superar la elegancia del lenguaje. Y creo que fue el primer idioma que admitió la escritura dinámica, aunque no soy el tipo que comenzó con las tarjetas perforadas y el ensamblaje de escritura, por lo que podría estar equivocado.

RobotHumanos
fuente
3
No fue el primer idioma con escritura dinámica, y no, no debería haber comenzado con tarjetas perforadas para saber esto.
Jas
-3

David Heinemeier Hansson creando Rails.

La primera vez que instalé Rails y configuré un sitio de prueba contra una base de datos e hice todo el framework y las cosas CRUD automáticamente, configuré el sitio de prueba y fue como si mis ojos estuvieran abiertos por primera vez a lo que se puede hacer ante usted. comenzar a programar. Eso fue realmente impresionante y desde entonces he visto ideas que aparecen por todas partes en otros idiomas / plataformas.

glenatron
fuente
¿Cómo es esto una proeza de programación?
David Reis
el hecho de que hace un buen trabajo al diseñar tablas con simples tiene, pertenece a, habtm ... además, resume la conectividad de la base de datos en una estructura con clase agnóstica de db donde casi parece mágico y todo lo que tienes que hacer es un nuevo riel -d (dbtype) bundler generate y rake db: create db: migrate command set. El andamio de generación para una base para trabajar es agradable. parece que alguien no le gusta rubí / rieles ya que estos get downvoted bastante duro mientras estaban nuevos enfoques a la elegancia por encima de convenciones
RobotHumans
después de reflexionar, creo que es porque nos impresionó la naturaleza artística de la cosa en lugar de la destreza técnica
RobotHumans
Era una forma de pensar totalmente diferente: hacer que todo estuviera totalmente orientado hacia lo que sería ideal en lugar de lo que era suficiente. Era como si todos los desarrolladores web hubiéramos estado conduciendo en vados del Modelo T y de repente aparece un riel y se trata de un BMW moderno. Fue un cambio masivo en la simplicidad y facilidad de uso en términos de desarrolladores como usuarios y he visto muchas otras plataformas construidas sobre esas ideas en los años posteriores.
glenatron
1
Es justo, pero tenga en cuenta que su pregunta no menciona el nombre del chico, lo que hizo, cuándo lo hizo, etc. Simplemente dice: "Ruby es agradable". Bueno, los cachorros también son agradables, pero eso no es una respuesta a esta pregunta.
David Reis