Qual é o maior feito de programação mais impressionante que você já viu? [fechadas]

26

Todo mundo sabe do velho ditado de que os melhores programadores podem ter ordens de magnitude melhores que a média. Eu pessoalmente vi bons códigos e programadores, mas nunca algo tão absurdo. Portanto, a pergunta é: qual é a façanha mais impressionante da programação que você já assistiu ou ouviu falar?

Você pode definir impressionante por:

  1. O escopo da tarefa em questão, por exemplo, John, sozinho, desenvolveu a estrutura para sua empresa, um trabalho de alcance comparável ao que os outros 200 empregados estavam fazendo juntos.

  2. Velocidade, por exemplo, o Stu programou um sistema operacional de aplicativos multitarefa em tempo real em um período de uma semana, incluindo seu próprio compilador C e ferramentas de linha de comando shell

  3. Complexidade, por exemplo, Jane pesquisou todo o nosso aplicativo LOC de 10 milhões para trabalhar em um cluster de servidores. E ela fez isso em uma tarde.

  4. Qualidade, por exemplo, o código de Charles apresentava uma taxa de defeitos por LOC 100 vezes menor que a média da empresa. Além disso, o código era limpo e compreensível por todos.

Obviamente, quanto mais essas características combinadas, e quanto mais extremas cada uma delas, mais impressionante é a façanha.

Então, deixe-me tê-lo. Qual é a façanha mais absurda que você pode contar? Forneça o máximo de detalhes possível e tente evitar lendas ou exageros urbanos. Poste apenas o que você realmente pode garantir.

Perguntas sobre bônus:

  1. A tarefa hercúlea foi uma delas ou o indivíduo surpreendeu regularmente as pessoas?
  2. Como você explica um desempenho tão impressionante?
  3. Como o programador foi reconhecido por um trabalho tão impressionante?
David Reis
fonte
5
Uma vez vi um supino cara 2 KLocs ... (Desculpe, não pude resistir)
DevSolo
"Velocidade, por exemplo, o Stu programou um sistema operacional de aplicativos multitarefa em tempo real em um final de semana, incluindo seu próprio compilador C e ferramentas de linha de comando do shell" - Erm ... você pode querer mantê-lo real.
Jas
Com base nas respostas até agora, algumas pessoas ficam facilmente impressionadas. Eu fiz um monte de 'feitos' listados aqui.
Steven Evers
Hm, eu estava pensando em quase duplicar este exatamente ontem;) Muito obrigado por perguntar!
mlvljr
@DevSolo Ei, se estamos falando de cartões perfurados ou papel laminado, isso pode ser um feito físico.
Mark C

Respostas:

39

Embora eu não possa garantir oficialmente, sempre fiquei impressionado com Chris Sawyer desenvolvendo o Rollercoaster Tycoon quase inteiramente em linguagem assembly.

sglantz
fonte
4
Isso é louco!!!
Nanda
1
-.- +27 para algo que já discutimos pelo menos duas vezes neste site.
C #
31

Raiz quadrada inversa rápida . Como alguém pode inventar algo assim está completamente além de mim.

Joonas Pulakka
fonte
1
Hum ... Isso pode ser (extremamente) inteligente, mas são 6 linhas de código e apenas um pequeno bloco de construção de um aplicativo muito maior. Não entendo como isso é extremo em nenhuma das dimensões listadas.
David Reis
11
David Reis, isso provavelmente está otimizando um gargalo crucial de uma maneira engenhosa. Não confunda o número de linhas com a quantidade de trabalho necessária para escrevê-las.
2
@ David, eu não sei por que você insiste que façanhas de programação devem ter sido feitas em um período muito curto de tempo para ser um feito?
2
Sim, o que é mais uma façanha, 600 linhas de código escritas em um dia versus 6 linhas de código criadas por 100 dias, se as duas coisas equivalem? Eu acho que é o último, mas sua milhagem pode variar.
Joonas Pulakka
6
@ David, eu discordo que qualquer problema pode ser resolvido em tempo infinito. Você pode ler joelonsoftware.com/articles/HighNotes.html . "O verdadeiro problema com o uso de muitos programadores medíocres em vez de alguns bons é que, não importa quanto tempo eles trabalhem, eles nunca produzem algo tão bom quanto o que os grandes programadores podem produzir".
16

Jogos de arcade adiantados.

Completamente restrito pela memória, poder de processamento, E / S ...

O que esses programadores alcançaram nesse ambiente foi incrível.

Por exemplo, Pacman - Perfeito. Ainda jogável depois de todos esses anos.

Conor
fonte
2
O famoso Pacman não é perfeito. Falha bastante quando o contador de nível excede um byte. ;)
Mason Wheeler
Excelente! De acordo com a Wikipedia: "O Pac-Man tem uma tela de assassinato famosa, geralmente chamada de tela de bomba do Pac-Man. O contador de níveis do jogo era de um único byte de 8 bits e, portanto, podia armazenar apenas 256 valores distintos (0–255) Atingir o 256º nível faz com que um contador usado durante o desenho da fruta transborde para zero, causando 256 frutas e sete espaços em branco. É possível, no entanto, ser corrigido com um adesivo ".
Conor
1
Ônibus espaciais cedo talvez ???
Job
Pac-Man era muito superior
Tim Goodman
1
@Mason, você pode até colocá-lo em uma camiseta! errorwear.com/shirt-pacman.php
15

Há um programador em que trabalho que fez o seguinte em mais de uma ocasião.

O exemplo mais recente foi um projeto em nosso grupo que foi designado para 3 pessoas. Era um aplicativo LOB complexo com um cronograma de 6 meses (que era uma linha do tempo extremamente agressiva).

Na semana em que a codificação começava, uma das três pessoas desistiu (por motivos pessoais) e outra deixou uma licença médica muito repentina. O único programador restante foi para casa para iniciar a programação e retornou três meses depois com o aplicativo concluído.

EDITAR

Apenas para adicionar alguns esclarecimentos. O código resultante foi quase perfeito, de acordo com os requisitos e nosso grupo de controle de qualidade só conseguiu documentar três defeitos.

Walter
fonte
Ele / ela tinha que fazer mais de 100 horas de trabalho por semana para conseguir esse feito. Aposto que ele / ela passou por uma tonelada de cafeína.
Ali
3
O mítico homem mês em ação. Tire duas pessoas do projeto == reduza pela metade a linha do tempo! Embora faça algum sentido que um desenvolvedor focado possa fazer as coisas mais rapidamente do que tentar coordenar três pessoas.
CodexArcanum
Se essa pessoa nunca deixa a empresa em condições ruins (sem período de trade-off do conhecimento), a empresa vai estar em apuros ...
Onion-Knight
3
@ bjarkef - o código é de primeira qualidade. Esse codificador é o melhor programador da nossa empresa e o prazo muito curto não reduziu a qualidade normal que normalmente obtemos dele.
Walter
1
@ Walter, você não pode estimar com precisão até ter feito isso, o que contradiz quando você precisa do número. Isso faz estimativas para o leste quando você já fez a tarefa antes, e difícil quando ela é desconhecida. Desde que você não subestime o cliente, ficará feliz por acabar sendo mais barato do que o esperado.
13

Talvez eu esteja apenas mostrando minha idade, mas acho que alguns dos feitos verdadeiramente impressionantes da programação estão sendo ignorados.

Steve Wozniak, Apple Disk II / RWTS

Steve projetou o hardware e o software juntos, usando truques bem legais no software para eliminar muita complexidade (e custo) do hardware. As unidades de disquete normais usavam um LED e um fotossensor próximo ao hub do disco para brilhar através de um orifício perfurado no substrato do disco. A saída do fotossensor foi conectada a uma interrupção do processador para que o processador soubesse quando iniciar sua rotina de temporização para aguardar o setor correto em uma faixa estar sob o cabeçote de leitura / gravação (apesar de alguns "discos rígidos" usados) que tinha um buraco para sinalizar o início de cada setor em vez de apenas um para o início da pista).

Steve eliminou esse hardware projetando o software para codificar os dados de uma maneira que permitisse começar a ler a partir de um ponto arbitrário no disco, além de decodificar os dados em si, mas descobrir onde (logicamente) na faixa você estava. A unidade de disco II não tinha a configuração de LED / fotossensor e ignorou completamente os orifícios no disquete.

Gordon Letwin, HPFS

Gordon Letwin foi um arquiteto (e codificador) da equipe do OS / 2. Pelo menos, como ouvi a história, em um ponto ele saiu de férias para se afastar das coisas e passou três semanas (mais ou menos) navegando em seu iate (sim, os primeiros funcionários da MS podiam pagar coisas assim ... ) ... mas, para não ficar entediado, ele decidiu levar seu laptop.

Quando ele voltou, ele escreveu, depurou e funcionou o HPFS - inteiramente na linguagem assembly Intel 386. O código que ele escreveu foi finalmente vendido como o "HPFS386" exclusivo (pelo menos na época) para o LAN Manager Edition do OS / 2. Outra equipe passou cerca de seis meses escrevendo uma versão em C que se tornou o HPFS "normal" incluído nas edições normais do OS / 2 (e depois que a IBM e o MS terminaram, a IBM atualizou e recompilou o código C para obter seus "HPFS386"). Embora tenha sido modificado e atualização uma vez que, se você estava sendo justo sobre as coisas, NTFS provavelmente seria chamado de "hpfs 2.0" (ou talvez 3.0) - não há dúvida de que a melhor sistema de arquivos atual da Microsoft ainda está intimamente derivado do que ele projetou.

Burroughs fitas B220

Eles incorporaram (pelo menos a IMO) o início real da programação orientada a objetos. Onde as fitas da IBM (por exemplo) tinham "etiquetas" para informar sobre o formato dos dados na fita, as fitas de Burroughs desenvolveram uma convenção (acho que ninguém sabe ao certo quem começou) de colocar um pequeno conjunto de rotinas a fita que entenderia os dados e como eles foram formatados, para que você pudesse manipular os dados corretamente sem conhecer os detalhes de como eles foram formatados. Em outras palavras, os primeiros "blocos" na fita eram basicamente uma tabela em forma persistente. Você basicamente lia a tabela em memória e depois usava os métodos definidos para manipular os dados no restante da fita. Tudo muito arrumado e simples (se um pouco menos do que completamente portátil).

Jerry Coffin
fonte
11

John Carmack me impressiona regularmente com seus feitos de programação épica. De acordo com uma história, ele estava entediado em seu quarto de hotel, por isso escreveu o mecanismo de iluminação Doom 3 em seu laptop durante um fim de semana.

CodexArcanum
fonte
2
Pena que ele não tenha escrito um jogo de verdade.
585 DeadMG #
10

Apesar de sua finalidade questionável, ainda estou admirado com o script de usuário do captcha solver para o MegaUpload . É um script GreaseMonkey escrito em JavaScript que possui um decodificador de bitmap e uma rede neural que reconhece as letras na imagem captcha, e repito, tudo isso é feito usando JavaScript.

teukkam
fonte
1
Algo para mostrar à próxima pessoa que geme por não ser capaz de fazer um bom trabalho por causa das restrições impostas a elas.
Jon Hopkins
10

Miguel de Icaza - o projeto Mono.

(Ele também é incrivelmente engraçado, espirituoso e divertido - pelo menos pela breve conversa que eu o vi dando e ao ouvir algumas entrevistas em podcast)

Tim
fonte
+1 O cara é obviamente gêmeos ou trigêmeos, todos com o nome dele. Não há como uma pessoa estar envolvida em toda a merda que ela é, e em um nível tão detalhado.
Dan Rosenstark
8

Anders Hejlsberg: a linguagem Turbo Pascal e o compilador . Ainda acho que, depois de todos esses anos, o TPC é uma obra-prima da engenharia de software. É o compilador de código nativo mais compacto e mais rápido (a partir de certas versões também otimizando) que eu já vi. No Borland Pascal IDE, não havia "compilação" essencialmente. Você modificou seu código, pressionou a tecla F9 e assistiu o programa sendo executado imediatamente, e isso foi em uma máquina de 8MHz ou 12MHz. Mais tarde, o TPC evoluiu para Delphi, depois Hejlsberg ingressou na Microsoft e co-autor de C #.

Adoraria dar uma olhada nas fontes das versões anteriores do TPC, mas infelizmente, apesar dos inúmeros pedidos, a Borland nunca os abriu.

O compilador de Hejlsberg foi inspirado neste livro: Niklaus Wirth, Algorithms + Data Structures = Programs

mojuba
fonte
O Delphi ainda possui um compilador muito rápido. Eu acho que é por isso que ele se safa por não suportar a modificação e continuação.
Joeri Sebrechts
6

Meu supervisor de treinamento na Gemplus (agora Gemalto) escreveu o primeiro interpretador de JavaCard e SO durante seu próprio período de treinamento de três meses. Ele produziu sozinho o código a partir das especificações. Para produzir a versão 2, a Gemplus montou uma equipe de mais de 30 homens, sem o cara, que trabalhou por mais de um ano. Quando concluídos, mas incapazes de obter um desempenho decente, pediram ajuda e, em poucos dias, ele e um colega apontaram dezenas de gargalos.

O Java Card é um subconjunto do Java destinado a ser executado em dispositivos muito pequenos. Sua implementação foi executada em cartões inteligentes, com um relógio de alguns MHz e 2 ou 3 KB de RAM.

Apenas por diversão: outro feito pessoal cotidiano dele estava mergulhando em transe de trabalho, respondendo a nenhuma das perguntas que os estagiários gritavam na sala e, de repente, duas horas depois, voltando ao normal quando seu trabalho estava terminado e respondendo às perguntas 5 ou 10. perguntas seguidas.

Gabriel
fonte
1
Acho que superei a coisa dos 200 homens ... não me lembro muito bem, foi há mais de 10 anos. Enviei-lhe a pergunta de qualquer maneira!
Gabriel
1
Porra, esse cara deve ser um ciborgue ..
mlvljr 13/11/2010
Certo, eles tinham mais de 30 anos (=
Gabriel
5

Eu me lembro muito claramente; na escola, um colega de classe codificou um videogame de condução completo em algumas lições com o QB45 (Quick Basic 4.5). Rolagem vertical, cronômetro, lifes, níveis; Fiquei totalmente chocado.

systempuntoout
fonte
1
Eu vi um cara fazendo isso com um jogo de aventura de texto no Lisp. Não é impressionante por si só, mas no tempo em que ele fez isso ... uau.
Michael K
5

Git e / ou Linux

Linus Torvalds escreveu um kernel do sistema operacional e um sistema de controle de versão do zero. Não conheço ninguém com uma produtividade semelhante.

LennyProgrammers
fonte
16
Por mais popular que seja o Linux, é fácil exagerar a dificuldade e / ou originalidade envolvida. É quase inteiramente um clone de um sistema existente. Em comparação com (por um exemplo óbvio), Dave Cutler, que escreveu o RSX / 11, VMS e Windows NT do zero, cada um é um trabalho novo e exclusivo (e, para quem se importa, o sistema de arquivos VMS inclui controle de versão) Linus não tem ' ainda não chegou ao mapa.
Jerry Coffin
1
Parabéns pelo VMS, mas com o mesmo raciocínio, você precisa descontar o NT. A Wikipedia diz "[...] liderada por Dave Cutler para criar o Windows NT, e muitos elementos do design refletem a experiência anterior do DEC com o VMS e o RSX-11 de Cutler." Enfim, acho o Git impressionante.
LennyProgrammers
@ Lenny222: embora certamente seja verdade que você pode encontrar uma semelhança substancial entre o VMS e o Windows NT, não é nem perto de ser um clone como o Linux. Penso muito bem no Git também - mas se ele não existisse, posso pensar em pelo menos dois ou três outros que funcionariam bem em seu lugar.
Jerry Coffin
5
Linus não trabalhou sozinho no Linux por mais ou menos um mês e depois o transformou em um projeto de comunidade muito bem-sucedido? Bom trabalho, de fato, mas eu não classificaria como um feito individual de programação, mas como um projeto de código aberto colaborativo de muito sucesso.
David Reis
1
Eu acho que o que estamos chegando aqui é o fato de que agora temos usuários X usando Linux em casa ... Suponho que você tenha uma caixa VMS em sua casa? Conceda que não era um trabalho único de um único autor ... por outro lado, se ele não o havia feito, eram aqueles que são críticos alinhados para fazê-lo?
RobotHumans
5

Richard M. Stallman vem ao topo da minha mente. Esse homem começou a dar vida ao GNU Emacs, GCC, GDB e muitos outros programas notáveis. Ele até criou a GPL original. Eu ouvi histórias sobre ele dizendo que ele entra em uma caverna por 18 meses e retorna com mais de 150.000 linhas de código que compõem o compilador C do pacote GCC. Esses 150.000 LOC deram o fundamento para o g ++ mais tarde. Em suas próprias palavras, o Emacs começou como editor de texto, tornou-se um modo de vida e agora é uma religião para alguns de nós. Ainda hoje, os princípios de design do Emacs são usados ​​em muitos programas de sucesso.

O sistema TeX de Donald E Knuth é outro programa que vem à mente quando se pensa em maravilhas de programação.

vpit3833
fonte
Você deve tentar ler o TeXbook. Não é para meros mortais.
Criar a GPL não é uma façanha impressionante . Seria como se creditar com Singletons.
DeadMG
4

Na minha turma de formandos, meu colega de classe criou um sistema operacional (embora muito básico, mas inicializou a partir de um disquete e fez as rotinas necessárias) como um requisito do projeto em menos de 30 dias. A duração inclui a leitura / pesquisa necessária e a codificação real.

Lembro que os caras das listas de discussão do os.com o desencorajavam dizendo que ele não faria isso em poucos dias e também o vi andando pelo dormitório às 5 da manhã, em um estado semi-consciente, falando sem sentido. :-)

Ele é um programador incrível.

Christy John
fonte
4

Eu não ia dizer nada, mas alguém falou com "Ruby é uma façanha", então

John McCarthy com as FUNÇÕES RECURSIVAS ORIGINAIS DE EXPRESSÕES SIMBÓLICAS E SUA COMPUTAÇÃO POR MÁQUINA , ou seja, o artigo em que ele definiu Lisp em 1960, quando ifera um conceito sobre o qual as pessoas estavam apenas começando a pensar seriamente. Fale sobre estar à frente do seu tempo.

Inaimathi
fonte
boa referência. fui eu quem vestiu rubi, por elegância em vez de convenção. isso também está adiantado
RobotHumans
1
McCarthy fez um artigo de matemática. Foi somente mais tarde que se descobriu que poderia ser convertido em código real.
1
@ Thorbjørn Ravn Andersen - Tive o cuidado de usar "definido" em vez de "implementado".
Inaimathi 13/11/2010
@ Thor Isso é um pouco como negar crédito a Arthur Clarke por descobrir (ou inventar) a órbita geossíncrona circular simplesmente porque ele não podia construir um foguete para colocar um satélite ali, ou porque a tecnologia ainda não existia.
Mark C
4

O compilador Symantec / Zortec C ++ de Walter Bright acompanha os compiladores implementados por grandes equipes de programadores. Mais tarde, seu design e implementação de D.

dsimcha
fonte
2

SHRDLU de Terry Winograd .

Matemático Automatizado de Doug Lenat .

Mike Dunlavey
fonte
SHRDLU sempre me surpreendeu!
@ Thorbjørn: Eu também. Isso é parte do que o espírito Minsky-lab I absorveu, para melhor e para pior :)
Mike Dunlavey
1

Linus Trovalds escrevendo Linux

Nerd
fonte
0

Programador de videogame de 8 bits no computador dos anos 80 (ou seja: Commodore 64), alguns jogos muito bons eram em linguagem de máquina e seu tamanho era geralmente menor que um bitmap para um ícone do Windows ;-) Otimização no melhor

Geos (um sistema operacional WYSIWYG para o Commdore 64) foi muito impressionante, pois é hora

Chipster
fonte
-2

Não sei se isso conta realmente ... mas o sujeito que desenvolveu o ruby. Eu simplesmente não consigo superar a elegância da linguagem. E acredito que foi o primeiro idioma a oferecer suporte à digitação dinâmica, embora eu não seja o cara que começou com punchcards e redação para que eu pudesse me enganar.

RobotHumans
fonte
3
Não era o primeiro idioma da digitação dinâmica e não, você não deveria ter começado com cartões perfurados para saber disso.
Jas
-3

David Heinemeier Hansson criando o Rails.

A primeira vez que instalei o Rails e montei um site de teste em um banco de dados, ele executou todo o material e a estrutura CRUD automaticamente, configurei o site de teste e foi como se meus olhos estivessem abertos pela primeira vez para o que pode ser feito antes de você iniciar a programação. Isso foi realmente impressionante e vi idéias disso aparecerem em todo o lugar em outros idiomas / plataformas desde então.

glenatron
fonte
Como isso é um feito de programação?
David Reis
o fato de que ele faz um bom trabalho em organizar tabelas com simples tem, pertence a, habtm ... além disso, abstrai a conectividade do banco de dados em uma estrutura de classe agnóstica db, onde quase parece mágica e tudo o que você precisa fazer é trilhos novos -d (dbtype) o empacotador gera e ajusta o db: create db: migrate conjunto de comandos. O andaime de geração para que uma base funcione é bom. parece que alguém não gosta de Ruby / Rails como estes get downvoted muito difícil enquanto eles estavam novas abordagens à elegância em lugar da convenção
RobotHumans
depois de alguma reflexão, eu acho que é porque ficamos impressionados com a natureza artística da coisa em oposição a perícia técnica
RobotHumans
Era uma maneira totalmente diferente de pensar - tornando tudo totalmente orientado para o que seria ideal e não para o que era suficiente. Era como se todos nós, desenvolvedores da web, estivéssemos dirigindo nos vaus do Modelo T e de repente os trilhos aparecessem, e é um BMW moderno. Foi uma enorme mudança na simplicidade e facilidade de uso em termos de desenvolvedores como usuários, e eu já vi muitas outras plataformas construídas sobre essas idéias nos anos seguintes.
glenatron
1
É justo, mas observe que sua pergunta não menciona o nome do cara, o que ele fez, quando o fez, etc. Diz apenas: "Ruby é legal". Bem, os filhotes também são bons, mas isso não é uma resposta a esta pergunta.
David Reis