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:
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.
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
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.
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:
- ¿Era la tarea hercúlea uno de ellos, o el individuo asombraba regularmente a las personas?
- ¿Cómo explicas un desempeño tan impresionante?
- ¿Cómo se reconoció al programador por tan increíble trabajo?
fuente
Respuestas:
Si bien no puedo garantizarlo oficialmente, siempre me ha impresionado que Chris Sawyer desarrolle Rollercoaster Tycoon casi por completo en lenguaje ensamblador.
fuente
Raíz cuadrada inversa rápida . Cómo alguien puede llegar a algo así está completamente más allá de mí.
fuente
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.
fuente
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.
fuente
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).
fuente
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.
fuente
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.
fuente
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)
fuente
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
fuente
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
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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
if
era un concepto en el que la gente comenzaba a pensar seriamente. Hable acerca de adelantarse a su tiempo.fuente
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.
fuente
SHRDLU de Terry Winograd .
El matemático automatizado de Doug Lenat .
fuente
Linus Trovalds escribiendo Linux
fuente
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
fuente
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.
fuente
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.
fuente