Şimdiye kadar tanık olduğun en etkileyici programlamanın en iyisi hangisi? [kapalı]


26

Herkes eski atasözünü en iyi programcıların ortalamanın üzerinde büyüklük emirleri olabileceğini bilir. Şahsen iyi kod ve programcılar gördüm, ama asla bu kadar saçma bir şey olmadı. Öyleyse sorular, tanık olduğunuz veya duyduğunuz en etkileyici programlamanın esası nedir?

Etkileyici olarak tanımlayabilirsiniz:

  1. Eldeki görevin kapsamı, örneğin John single, diğer 200 çalışanın bir arada yaptıkları ile karşılaştırılabilir bir çalışma olan şirketi için çerçeveyi el ile geliştirdi.

  2. Hız, örneğin Stu, kendi C derleyicisi ve kabuk komut satırı araçları da dahil olmak üzere, haftada bir gerçek zamanlı çoklu görev uygulama işletim sistemini programladı.

  3. Karmaşıklık, örneğin Jane 10 milyon LOC uygulamamızın tamamını bir sunucu kümesinde çalışacak şekilde yeniden adlandırdı. Ve öğleden sonra yaptı.

  4. Kalite, örneğin Charles kodu, LOC başına şirket ortalamasından 100 kat daha düşük bir kusur oranına sahipti. Ayrıca, kodu herkes tarafından temiz ve anlaşılırdı.

Açıkçası, bu özelliklerin sayısı arttıkça ve her biri ne kadar aşırı olursa, o kadar etkileyicidir.

Öyleyse bırakayım. Anlatabileceğiniz en saçma feat nedir? Lütfen mümkün olduğunca fazla ayrıntı verin ve şehir efsanelerinden veya abartılardan kaçının. Yalnızca gerçekten neye kefil olabileceğinizi yayınlayın.

Bonus sorular:

  1. Herkül görevinden biri miydi yoksa birey düzenli olarak insanları şaşırttı mı?
  2. Böyle etkileyici performansı nasıl açıklarsınız?
  3. Programcı bu harika iş için nasıl tanındı?

5
Bir zamanlar bir sıradan basın basın KLocs bir adam gördüm ... (üzgünüm, dayanamadı)
DevSolo

"Hız, örneğin Stu, kendi C derleyicisi ve kabuk komut satırı araçları da dahil olmak üzere, haftada bir gerçek zamanlı, çok görevli bir uygulama işletim sistemi programladı" - Erm.
Jas

Şimdiye kadar verilen cevaplara göre, bazı insanlar kolayca etkilenebiliyor. Burada listelenen bir çok "özellik" yaptım.
Steven Evers

Hm, neredeyse tam olarak bunu çoğaltmayı düşünüyordum, dün;) Sorduğunuz için çok teşekkürler!
mlvljr

@DevSolo Hey, eğer söz konusu kağıtlar ya da kağıttan yapılmış kağıtlar ise fiziksel bir başarı olabilir.
Mark C,

Yanıtlar:


39

Resmi olarak kefil olamasam da, Chris Sawyer'ın Rollercoaster Tycoon'u neredeyse tamamen meclis dilinde geliştirmesinden her zaman etkilendim .


4
çılgınca!!!
nanda

1
Bu sitede zaten en az iki kez tartıştığımız bir şey için +27.
Mark C

31

Hızlı ters kare kök . Nasıl biri böyle bir şey ile gelebilir tamamen ötesinde.


1
Hum ... Bu (son derece) zekice olabilir, ancak 6 kod satırı ve daha büyük bir uygulamanın yalnızca küçük bir yapı taşı gibi. Listelenen boyutların hiçbirinde ne kadar aşırı olduğunu anlamıyorum.
David Reis

11
David Reis, bu büyük olasılıkla zahmetli bir şekilde hayati bir tıkanıklığı optimize ediyor. Satır sayısını, yazmak için gereken iş miktarıyla karıştırmayın.

2
@David, neden programlama özlemlerinin çok kısa sürede yapılması gerektiği konusunda ısrar ediyorsun?

2
Daha doğrusu olan Yep, her ikisi de eşdeğer bir şey yaparsa, bir günde yazılan 600 satır kod, 100 gün boyunca 6 satır kod yazılmıştır. Sanırım ikincisi, ancak kilometreniz değişebilir.
Joonas Pulakka,

6
@David, herhangi bir sorunun sonsuz zamanda çözülebileceğini kabul etmiyorum. Joelonsoftware.com/articles/HighNotes.html dosyasını okumak isteyebilirsiniz . “Birkaç iyi program yerine birçok vasat programcı kullanmaktaki asıl sorun, ne kadar çalışırlarsa çalışsınlar, harika programcıların üretebilecekleri kadar iyi bir şey üretmemek.”

16

Erken çarşı oyunları.

Tamamen bellek, işlem gücü, G / Ç ... ile sınırlıdır

Bu programcıların bu ortamda elde ettikleri şey şaşırtıcıydı.

Örneğin Pacman - Mükemmel. Bunca yıldan sonra hala oynanabilir.


2
Pacman çok ünlü olarak mükemmel değil . Seviye sayacı bir bayttan fazla olduğunda aşırı derecede arızalanır. ;)
Mason Wheeler

Mükemmel! Wikipedia'ya göre: "Pac-Man, genellikle Pac-Man Bomba Ekranı olarak adlandırılan ünlü bir ölüm ekranına sahiptir. Oyunun seviye sayacı, 8 bitlik tek bir bayttı ve bu nedenle yalnızca 256 farklı değer depolayabilirdi (0-255) 256 seviyeye ulaşmak, meyveyi sıfıra taşırken çizilen bir sayacın oluşmasına neden olarak 256 meyvenin ve yedi boş alanın çizilmesine neden olur. Bununla birlikte, bir yama ile sabitlenebilir. "
Conor

1
Erken uzay servisleri belki de ???
Meslek

Bayan Pac-Man çok üstündü
Tim Goodman

1
@Mason, bir tişört üzerinde bile alabilirsiniz! errorwear.com/shirt-pacman.php

15

Birden fazla vesileyle aşağıdakileri yapan, çalıştığım bir programcı var.

En yeni örnek grubumuzda 3 kişiye verilen bir projeydi. Bu 6 aylık bir program ile karmaşık bir LOB uygulamasıydı (bu son derece agresif bir zaman çizelgesiydi).

Hafta kodlaması başlamak üzereydi, 3 kişiden 1'i (kişisel nedenlerden dolayı) istifa etti ve bir diğeri çok ani bir sağlık izni aldı. Yalnız kalan programcı programlamaya başlamak için eve gitti ve tamamlanan başvuru ile 3 ay sonra geri döndü .

DÜZENLE

Sadece biraz açıklama eklemek için. Sonuçta ortaya çıkan kod gereksinimlere göre neredeyse mükemmeldi ve KG grubumuz yalnızca 3 hatayı belgeleyebildi.


Bu başarıyı yakalamak için çalışma saatini 100+ saat boyunca çekmek zorunda kaldı. İddiaya girerim bir ton kafein almış.
Ali

3
Efsanevi adam ay eylem içinde. Projeden 2 kişi al == zaman çizelgesini yarıya indir! Her ne kadar odaklanmış bir geliştiricinin 3 kişiyi koordine etmeye çalışmaktan daha hızlı bir şeyler yapabileceği bir anlam ifade etse de.
CodexArcanum

O kişi ise hiç kötü şartlara (hiçbir bilgi değiş-tokuş dönemi) üzerinde şirketten ayrıldığı, şirketi büyük sıkıntılar olacak ...
Soğan-Şövalye

3
@bjarkef - kod üst çentiktir. Bu kodlayıcı, şirketimizin en iyi programcısıdır ve çok kısa zaman dilimi, normalde ondan aldığımız normal kaliteyi düşürmedi.
Walter

1
@Walter, sayıya ihtiyacınız olduğunda çelişen gerçekte bunu yapana kadar aksini tahmin edemezsiniz. Bu, görevi daha önce yaptığınızda doğuya ilişkin tahminleri yapar ve sizin tarafınızdan bilinmediğinde zorlaşır. A'yı hafife almazsanız müşteriyi mutlu edersiniz , beklenenden daha ucuzdur.

13

Belki sadece yaşımı gösteriyorum, ancak programlamanın gerçekten etkileyici özelliklerinin bir kısmının göz ardı edildiğini düşünüyorum.

Steve Wozniak, Apple Disk II / RWTS

Steve, donanımdaki birçok karmaşıklığı (ve maliyeti) ortadan kaldırmak için yazılımdaki gerçekten harika hileler kullanarak donanımı ve yazılımı birlikte tasarladı. Normal disket sürücüleri, disk alt tabakasında delinmiş bir delikten parlamak için diskin göbeğine yakın bir LED ve fotosensör kullandı. Fotosensörden gelen çıktı bir işlemci kesmesine bağlandı, böylece işlemci okuma / yazma kafasının altında bir parça üzerinde doğru kesimi beklemek için zaman zaman yordamına ne zaman başlayacağını bilir (birkaçı "çok kesimli diskler" kullandı) bu, pistin başlangıcı için sadece bir tane yerine her sektörün başlangıcını işaret edecek bir deliğe sahipti).

Steve, verileri, diski üzerinde rasgele bir noktadan okumaya başlayabilmenizi sağlayacak şekilde kodlamak için yazılımı tasarlayarak ve yalnızca verilerin kodunu çözmenin yanı sıra, izinizin neresinde (mantıksal olarak) olduğunu çözerek bu donanımı ortadan kaldırdı. Disk II sürücüsü LED / photsensor ayarına sahip değildi ve disketteki boşlukları tamamen görmezden geldi.

Gordon Letwin, HPFS

Gordon Letwin, OS / 2 ekibinde mimar (ve kodlayıcı) idi. En azından hikayeyi duyduğum gibi, bir noktada olaylardan uzaklaşmak için tatile gitti ve üç hafta (ya da öylesine) yatında yelken açarak geçirdi (evet, erken MS çalışanları bunun gibi şeyleri karşılayabilir ... ) ... ama çok sıkılmaktan sakınmak için dizüstü bilgisayarını almaya karar verdi.

Geri döndüğünde, HPFS'yi tamamen Intel 386 assembly dilinde yazdı, hata ayıkladı ve çalışıyordu. Sonunda yazdığı kod (en azından o zaman) OS / 2'nin LAN Manager Sürümü'ne özel olan "HPFS386" olarak satıldı. Başka ekibi daha sonra "normal" HPFS OS normal baskılara dahil oldu C bir versiyonunu yazmaya altı ay gibi bir şey harcanan / 2 (ve IBM ve MS ayrıldıktan sonra, IBM, güncel ve almak için C kodu yeniden derlenmiş onların "HPFS386"). O zamandan beri değiştirilmiş ve güncellenmiş olmasına rağmen, eğer şeyler konusunda dürüst olursanız, NTFS muhtemelen "HPFS 2.0" (ya da belki 3.0) olarak adlandırılırdı - Microsoft'un en iyi güncel dosya sisteminin hala tasarladığı şeyden daha yakından kaynaklandığı sorusu yoktur .

Burç B220 bantlar

Bunlar, nesneye yönelik programlamanın gerçek başlangıçlarını somutlaştırdı (en azından IMO). IBM kasetlerinin (bir örnek olarak) kasetteki veri formatı hakkında söyleyecek "etiketleri" olduğu yerde, Burroughs kasetleri küçük bir yordam dizisini koymak için bir kongre geliştirdi (kimsenin kimin başladığını bildiğinden emin değilim) Verileri ve nasıl biçimlendirildiğini anlayabilen kaset, böylece nasıl biçimlendirildiğinin ayrıntılarını bilmeden verileri doğru şekilde işleyebilirsiniz. Başka bir deyişle, kasetteki ilk birkaç "blok" temelde kalıcı bir formda kararsızdı. Temelde oy vermeyi belleğe okudunuz, daha sonra teybin geri kalan kısmındaki verileri değiştirmek için tanımladığı yöntemleri kullandınız. Hepsi çok temiz ve basit (tamamen portatiften biraz daha azsa).


11

John Carmack, epik programlama özellikleriyle beni düzenli olarak etkiliyor. Bir hikayeye göre, otel odasında sıkıldı, bu yüzden bir haftasonu dizüstü bilgisayarına Doom 3 aydınlatma motorunu yazdı.


2
Yazık onunla gitmek için gerçek bir oyun yazmadı.
DeadMG

10

Şüpheli amacına rağmen, hala MegaUpload için bir captcha çözücü usercript hakkında endişeliyim . Bu, bir bitmap kod çözücüye ve captcha görüntüsündeki harfleri tanıyan bir sinir ağına sahip olan, JavaScript'te yazılmış bir GreaseMonkey betiğidir ve yineliyorum, bunların hepsi JavaScript kullanılarak yapılır.


1
Size yaslanan bir sonraki kişiye, üzerine getirilen kısıtlamalar nedeniyle iyi iş yapamama konusunda gösterebileceği bir şey.
Jon Hopkins

10

Miguel de Icaza - Mono projesi.

(Aynı zamanda inanılmaz derecede komik, esprili ve eğlenceli - en azından verdiği konuşmadan ve bazı podcast röportajlarını dinlerken


+1 Adam açıkçası ikizler ya da belki de üçüzler, hepsi kendi adıyla gidiyor. Bir insanın, olduğu kadar her konuda * ve bu kadar detaylı bir seviyede olması mümkün değildir.
Dan Rosenstark

8

Anders Hejlsberg: Turbo Pascal dili ve derleyici . Bunca yıldan sonra hala TPC'nin yazılım mühendisliğinin bir şaheseri olduğunu düşünüyorum. Şimdiye kadar gördüğüm en kompakt ve en hızlı yerel koddur (belirli sürümlerden başlayarak, aynı zamanda optimize edici). Borland Pascal IDE'de esasen “derleme” yoktu. Kodunuzu değiştirdiniz, F9'a bastınız ve programınızın hemen çalışmasını izlediniz ve bu 8MHz veya 12MHz makinedeydi. TPC daha sonra Delphi'ye dönüşmüştü, sonra Hejlsberg Microsoft'a katıldı ve C # ile ortak yazar oldu.

Daha önceki TPC sürümlerinin kaynaklarına göz atmak isterdim, ancak ne yazık ki çok sayıda talebe rağmen Borland bunları açmadı.

Hejlsberg'in derleyicisi bu kitaptan ilham aldı: Niklaus Wirth, Algoritmalar + Veri Yapıları = Programlar


Delphi'nin hala çok hızlı bir derleyicisi var. Sanırım bu yüzden değiştir ve devam etmeyi desteklememekle kaçtı.
Joeri Sebrechts,

6

Gemplus'taki (şimdiki Gemalto) eğitim danışmanım, ilk JavaCard tercümanını ve işletim sistemini kendi 3 aylık lisans eğitimi döneminde yazdı. Tek elle özel olarak kod üretti. V.2'yi üretmek için Gemplus, bir yıldan fazla çalışan, erkeksiz 30'dan fazla erkek takımı kurdu. Tamamlandığında ancak iyi bir performans elde edemediğinde, yardım istediler ve birkaç gün içinde kendisi ve bir meslektaşı onlarca tıkanıklığı işaret etti.

Java Kartı, çok küçük cihazlarda çalışmayı amaçlayan bir Java alt kümesidir. Uygulaması birkaç MHz saat ve 2 veya 3 KB RAM'e sahip akıllı kartlarla çalıştı.

Sadece eğlence için: Bir başka kişisel günlük başarısı, bir stajyerin içine daldı, stajyerlerimize sorduğumuz soruların hiçbirini cevaplamadı ve ardından 2 saat sonra aniden, işi bittiğinde tekrar canlanıp 5 ya da 10'a cevap verdi. üst üste sorular.


1
Sanırım 200 kişilik bir şeyi kaçırdım ... Çok iyi hatırlayamıyorum, 10 yıldan daha önceydi. Ona soruyu yine de postaladım!
Gabriel

1
Kahretsin, o adam bir cyborg olmalı ..
mlvljr

Tamam, onlar 30+ (=
Gabriel

5

Çok net hatırlıyorum; Lisede sınıf arkadaşı, QB45 (Quick Basic 4.5) ile birkaç derste tamamen gelişmiş bir sürüş video oyununu kodladı . Dikey kaydırma, kronometre, kullanım ömrü, seviye; Tamamen şok oldum.


1
Lisp'teki bir metin macerasıyla bir adamın bunu yaptığını gördüm. Kendi içinde etkileyici değil, ama zaman içinde yaptı ... vay.
Michael K

5

Git ve / veya Linux

Linus Torvalds, bir işletim sistemi çekirdeği ve sıfırdan bir sürüm kontrol sistemi yazdı. Benzer bir üretkenliğe sahip birini tanımıyorum.


16
Linux kadar popüler olan bir kişi, zorluk ve / veya orijinalliği yenmek kolaydır. Neredeyse tamamen mevcut bir sistemin bir klonu. (Açık bir örnek için) Sıfırdan RSX / 11, VMS ve Windows NT yazmış olan Dave Cutler, her biri yeni ve benzersiz bir iş parçası (ve umursalar için VMS dosya sistemi sürüm kontrolünü içeriyordu ) Linus ' Daha haritada bile göstermedim.
Jerry Coffin

1
VMS için Kudos, fakat aynı sebeple NT indirimi yapmalısınız. Wikipedia "[...], Dave Cutler tarafından Windows NT inşa edilmesine öncülük etti ve tasarımın birçok unsuru Cutler'ın VMS ve RSX-11 ile daha önceki DEC deneyimini yansıtıyor." Her neyse, Git'i etkileyici buluyorum.
LennyProgrammers

@ Lenny222: VMS ve Windows NT arasında önemli bir benzerlik bulabileceğiniz kesinlikle doğru olsa da , Linux gibi bir klon olmaya yakın bile değil . Ben de Git'i oldukça fazla düşünüyorum - ama olmasaydı, yerinde iyi çalışacak en az iki ya da üç kişiyi düşünebilirim.
Jerry Coffin

5
Linus Linux'ta bir ay kadar yalnız çalışmadı ve ardından çok başarılı bir topluluk projesi haline getirmedi mi? Gerçekten harika işler, ancak bireysel bir programlama özeti olarak değil, çok başarılı bir işbirliğine dayalı açık kaynaklı bir proje olarak sınıflandırdım.
David Reis,

1
Sanırım burada elde ettiğimiz şey şu anda evde linux kullanan X kullanıcısı olduğumuz gerçeği ... Sanırım evinizde bir VMS kutunuz var? Tek bir yazardan tek bir eser olmadığını kabul etmek ... tersine yapmasaydı, bunu yapmak için kritik öneme sahip olanlar mıydı?
RobotHumans 12:10

5

Richard M Stallman aklımın en üstüne geliyor. Bu adam GNU Emacs, GCC, GDB ve daha birçok dikkate değer programa hayat vermeye başladı. Orijinal GPL'yi bile yazdı. 18 ay boyunca bir mağaraya girdiğini ve GCC süitinin C derleyicisini yapan 150.000'den fazla kod satırıyla geri döndüğünü söylediğini duydum. Bu 150.000 LOC daha sonra g ++ için yatak taşı verdi. Emacs kendi sözleriyle metin editörü olarak başladı, sonra bir yaşam tarzı oldu ve şimdi bazılarımız için bir din. Bugün bile, Emacs'in tasarım ilkeleri birçok başarılı programda kullanılmaktadır.

Donald E Knuth'un TeX sistemi harikaları programlamayı düşünürken akla gelen başka bir programdır.


TeXbook'u okumayı denemelisin. Ölümlüler için değil.

GPL'yi yazmak etkileyici bir başarı değildir . Kendinizi Singletons ile ödünç vermek gibi olur.
DeadMG

4

Derece sınıfımda sınıf arkadaşım 30 günden daha az bir proje gereksinimi olarak bir işletim sistemi (çok temel de olsa ama bir disketten başlattı ve gerekli yordamları yaptı) yarattı. Bu süre hem gerekli okuma / araştırma hem de gerçek kodlamayı içerir.

Os.com postalarının, birkaç gün içinde yapmayacağını söyleyen ve onu sabah saat 5'de yarı bilinçli bir konuşmacı biçimde saçma sapan bir konuşmada gördüğünü hatırlatan erkekleri listelediğini hatırlıyorum. :-)

O harika bir programcı.


4

Bir şey demeyecektim, ama birisi "Ruby bir feat" diyerek seslendiriyor

John McCarthy, SEMBOLİK ANLATIMLARIN GERİ KAZANAN FONKSİYONLARI VE MAKİNE İLE BİLGİSAYARLARI , yani 1960 yılında Lisp'i tanımladığı makale, ifinsanların ne zaman ciddi bir şekilde düşünmeye başladığı. Vaktinden ileride olmak hakkında konuş.


güzel referans. Kongre üzerinde zarafet için yakutla donatılan kişi bendim. Bu da vaktinden önce
RobotHumans 12:10

1
McCarthy bir matematik makalesi yaptı. Ancak daha sonra gerçek koda dönüştürülebildiği tespit edildi.

1
@ Thorbjørn Ravn Andersen - "Uygulanan" yerine "tanımlanmış" kullanmaya dikkat ettim.
Inaimathi

@Bu bir şekilde Arthur Clarke'ın dairesel jeosenkronize yörüngeyi keşfetmek için (veya icat etmek için) reddetmesi gibi bir şey çünkü oraya bir uydu koymak için bir roket inşa edemediği için veya teknoloji henüz mevcut değildi.
Mark C,

4

Walter Bright'ın Symantec / Zortec C ++ derleyicisi, büyük programcı ekipleri tarafından uygulanan derleyicileri takip ediyor. Daha sonra, onun tasarım ve D. uygulanması




0

80'lerin bilgisayarında 8 bit video oyun programcısı (örneğin: Commodore 64), oldukça iyi bir oyun makine dilinde idi ve boyutları bir Windows simgesi için bir bitmap'ten daha küçüktü ;-) En iyi şekilde optimizasyon

Geos (Commdore 64 için bir WYSIWYG OS), zamanı için çok etkileyiciydi.


-2

Bunun gerçekten önemli olduğundan emin değilim ... ama yakut geliştiren adam. Sadece dilin zerafetini geçemiyorum. Dinamik yazmayı destekleyen ilk dil olduğuna inanıyorum, punchcards ve derleme ile başlayan adam olmasam da yanılıyor olabilirim.


3
Dinamik yazmaya sahip ilk dil değildi ve hayır, bunu bilmek için delikli kartlarla başlamamalıydınız.
Jas

-3

David Heinemeier Hansson, Rails'i yarattı.

İlk kez Rails'i kurduğumda ve bir veritabanına karşı bir test sitesi kurdum ve tüm çerçeve ve CRUD işlerini otomatik olarak yaptı, test sitesini kurdu ve gözlerim ilk önce sizler için neler yapılabileceği konusunda açık gibiydi. programlamaya başla. Bu gerçekten etkileyiciydi ve o zamandan beri diğer dillerde / platformlarda ortaya çıkan fikirleri gördüm.


Bu nasıl bir programlama harikası?
David Reis,

basit olan tabloları düzenlemek için iyi bir iş çıkardığı gerçeği habtm'ye aittir ... ayrıca veritabanı bağlantısını neredeyse sihir gibi göründüğü db agnostik sınıflı bir yapıya çeker ve tek yapmanız gereken yeni bir raydır. -d (dbtype) bundler oluşturur ve komisyon db: create db: migrate komut seti. Bir kaidenin çalışabileceği yapı iskelesi güzeldir. konvansiyonel zerafet için yeni yaklaşımlar olurken, birisi oldukça zorlanırken birileri yakut / raylardan hoşlanmıyor gibi görünüyor
RobotHumans

Bazı düşüncelerden sonra, bence teknik kahramanlığın aksine o şeyin sanatsal yapısından etkilendik
RobotHumans

Bu, tamamen farklı bir düşünce biçimiydi - her şeyi, yeterli olandan ziyade ideal olana yönelik olarak yönlendirin. Tüm web geliştiricileri Model T fords'larında dolaşıyor gibiydi ve birdenbire raylar ortaya çıkıyor ve modern bir BMW. Kullanıcı olarak geliştiriciler açısından basitlik ve kullanıcı dostu olma konusunda büyük bir değişiklikti ve o zamandan beri bu fikirlere dayanan birçok platform gördüm.
glenatron

1
Yeterince adil, ancak sorunuzun adamın adını, ne yaptığını, ne zaman yaptığını, vb. Peki Yavru Köpekler de Güzel, ama bu sorunun cevabı değil
David Reis,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.