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:
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.
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
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.
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:
- A tarefa hercúlea foi uma delas ou o indivíduo surpreendeu regularmente as pessoas?
- Como você explica um desempenho tão impressionante?
- Como o programador foi reconhecido por um trabalho tão impressionante?
fonte
Respostas:
Embora eu não possa garantir oficialmente, sempre fiquei impressionado com Chris Sawyer desenvolvendo o Rollercoaster Tycoon quase inteiramente em linguagem assembly.
fonte
Raiz quadrada inversa rápida . Como alguém pode inventar algo assim está completamente além de mim.
fonte
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.
fonte
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.
fonte
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).
fonte
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.
fonte
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.
fonte
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)
fonte
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
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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
if
era um conceito sobre o qual as pessoas estavam apenas começando a pensar seriamente. Fale sobre estar à frente do seu tempo.fonte
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.
fonte
SHRDLU de Terry Winograd .
Matemático Automatizado de Doug Lenat .
fonte
Linus Trovalds escrevendo Linux
fonte
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
fonte
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.
fonte
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.
fonte