あなたが今までに見た中で最も印象的なプログラミングの偉業は何ですか?[閉まっている]


26

誰もが、最高のプログラマーは平均よりも桁違いに良いという古い格言を知っています。私は個人的には良いコードとプログラマを見てきましたが、そんなに馬鹿げたことはありません。質問は、あなたが目撃したことや聞いたことのあるプログラミングの最も印象的な偉業は何ですか?

印象的な定義は次のとおりです。

  1. 手元のタスクの範囲、たとえばジョンは、自分の会社のフレームワークを独力で開発しました。これは、他の200人が採用していたものと同等の範囲の作業です。

  2. 速度。たとえば、Stuは、独自のCコンパイラとシェルコマンドラインツールを含む、リアルタイムのマルチタスクアプリOS全体を1週間にプログラムしました。

  3. 複雑さなど、ジェーンは10ミリオンのLOCアプリ全体をサーバーのクラスターで機能するように再設計しました。そして、彼女は午後にそれをしました。

  4. 品質(例:チャールズのコード)は、LOCあたりの欠陥の割合が会社の平均よりも100倍少ない。さらに、彼のコードはすっきりしていて、誰もが理解できました。

明らかに、これらの特性が組み合わされ、それぞれが極端になればなるほど、偉業はより印象的です。

それで、私にそれを持たせてください。あなたが数えることができる最もばかげた偉業は何ですか?できるだけ詳細に説明し、都市伝説や誇張を避けてください。実際に保証できるものだけを投稿してください。

ボーナスの質問:

  1. ヘラクレスの仕事は1つでしたか、それとも定期的に人々を驚かせましたか?
  2. そのような印象的なパフォーマンスをどのように説明しますか?
  3. プログラマーは、このような素晴らしい仕事に対してどのように認識されましたか?

5
私はかつてガイベンチプレス2 KLocsを見ました...(ごめん、抵抗できませんでした)
-DevSolo

「たとえば、Stuは、独自のCコンパイラとシェルコマンドラインツールを含む週に1回、リアルタイムマルチタスクアプリOS全体をプログラムしました」-えーと。
Jas

これまでの回答に基づいて、一部の人々は簡単に感銘を受けています。ここにリストされている「偉業」をたくさんやった。
スティーブンエバーズ

うーん、私は昨日、これを正確に複製しようと考えていました;)それを聞いてくれてありがとう!
mlvljr

@DevSoloちょっと、これがパンチカードや私たちが話しているロール紙なら、それは物理的な偉業かもしれません。
マークC

回答:


39

公式には保証できませんが、Chris SawyerがRollercoaster Tycoonをほぼ完全にアセンブリ言語で開発していることに常に感銘を受けています。


4
それはクレイジーです!!!
ナンダ

1
-.-このサイトですでに2回以上議論したことのある+27。
マークC

31

高速逆平方根。誰かがそのようなものを思い付く方法は完全に私を超えています。


1
ハム...(非常に)賢いかもしれませんが、6行のコードと、はるかに大きなアプリの小さなビルディングブロックのようなものです。私がリストしたどの次元においてもそれがどのように極端であるか理解していません。
デイヴィッドレイ

11
デビッド・レイス、これは非常に重要なボトルネックを独創的な方法で最適化する可能性が高いです。行数とそれらの記述に必要な作業量を混同しないでください。

2
@David、なぜあなたは偉業になるために非常に短い時間でプログラミングの偉業を成し遂げたに違いないと主張するのか分かりませんか?

2
ええ、これは1日で600行のコードを作成するのと100日で作成された6行のコードを比較したものです。後者だと思いますが、走行距離は異なる場合があります。
ジョナスプラッカ

6
@David、私はどんな問題でも無限の時間で解決できることに同意しません。joelonsoftware.com/articles/HighNotes.htmlを読むことをお勧めします。「2、3の優秀なプログラマではなく、多くの平凡なプログラマを使用することの本当の問題は、どれだけ長く働いても、優秀なプログラマが生み出すことができるほど良いものを決して生み出さないことです。」

16

初期のアーケードゲーム。

メモリ、処理能力、I / Oにより完全に制限されています...

これらのプログラマーがこの環境で達成したことは驚くべきものでした。

例えば、パックマン-パーフェクト。これらすべての年月が経った今でもプレイ可能です。


2
パックマン完璧ではありません。レベルカウンタが1バイトオーバーフローすると、かなりひどくグリッチが発生します。;)
メイソン・ホイーラー

優れた!ウィキペディアによると:「パックマンには、よくパックマンボムスクリーンと呼ばれる有名なキルスクリーンがあります。ゲームのレベルカウンターは単一の8ビットバイトであったため、256個の異なる値(0〜255)しか保存できませんでした。256レベルに到達すると、フルーツの描画中に使用されるカウンターがゼロにオーバーフローし、256のフルーツと7つの空白スペースが描画されます。ただし、パッチで修正できます。
コナー

1
おそらく初期のスペースシャトル?
ジョブ

パックマン氏ははるかに優れていた
ティムグッドマン

1
@メイソン、あなたはそれをTシャツで手に入れることさえできます! errorwear.com/shirt-pacman.php

15

私が働いているこの1人のプログラマーは、複数の機会に次のことを行っています。

最新の例は、3人に割り当てられたグループのプロジェクトです。6か月のスケジュールを持つ非常に複雑なLOBアプリでした(非常にアグレッシブなタイムラインでした)。

週のコーディングが始まり、3人のうち1人が(個人的な理由で)辞め、別の1人が非常に急な医療休暇を取りました。残りの一人のプログラマーは帰宅してプログラミングを開始し、3か月後にアプリケーションが完成しました。

編集

いくつかの説明を追加するだけです。結果として得られたコードはほぼ完璧で、要件に完全に適合しており、QAグループは3つの欠陥しか文書化できませんでした。


その偉業を成し遂げるために、彼/彼女は100週間以上の労働時間を必要としていました。私は彼/彼女がカフェインのトンを通過したに違いない。
アリ

3
アクションの神話上の男月。プロジェクトから2人を離す==タイムラインを半減させます!1人の開発者が3人を調整しようとするよりも速く処理できるというのは理にかなっていますが。
CodexArcanum

その人がいる場合、これまでの悪い条件(無知識のトレードオフ期間)に会社を辞め、会社は大きなトラブルになるだろう...
オニオンナイト

3
@bjarkef-コードは一流です。このコーダーは当社の最高のプログラマーであり、非常に短い時間枠でも、通常彼から得られる通常の品質を低下させることはありませんでした。
ウォルター

1
@Walter、あなたが実際にそれを行うまで、正確に見積もることはできません。これにより、以前にタスクを実行したことがある場合は見積もりが東になり、不明な場合は見積もりが難しくなります。A がクライアントを過小評価しない限り、それが予想よりも安くなったことをうれしく思います。

13

たぶん自分の年齢を示しているだけかもしれませんが、プログラミングの本当に印象的な偉業のいくつかは無視されていると思います。

スティーブ・ウォズニアック、Apple Disk II / RWTS

スティーブは、ハードウェアとソフトウェアを一緒に設計し、ソフトウェアの非常にクールなトリックを使用して、ハードウェアの多くの複雑さ(およびコスト)を排除しました。通常のフロッピーディスクドライブは、ディスクのハブの近くにあるLEDと光センサーを使用して、ディスクの基板に開けられた穴から光を当てます。光センサーからの出力はプロセッサー割り込みに接続されていたため、プロセッサーはタイミングルーチンを開始して、トラック上の正しいセクターが読み取り/書き込みヘッドの下に来るのを待つタイミングを認識します(ただし、いくつかの「ハードセクターディスク」トラックの開始に1つだけではなく、各セクターの開始を知らせる穴がありました)。

スティーブは、ディスク上の任意の場所から読み取りを開始できるようにデータをエンコードし、データ自体をデコードするだけでなく、トラックの(論理的に)どこにいるかを把握できるようにソフトウェアを設計することにより、そのハードウェアを排除しました。Disk IIドライブにはLED /フォトセンサーのセットアップがなく、フロッピーディスクの穴は完全に無視されました。

ゴードン・レトウィン、HPFS

Gordon Letwinは、OS / 2チームのアーキテクト(およびコーダー)でした。少なくとも話を聞いたように、ある時点で彼は休暇を取り、物事から逃れ、ヨットで3週間(またはそれ以上)航海しました(そう、初期のMSの従業員はそのようなものを買う余裕がありました... )...しかし、退屈しすぎないように、彼はラップトップを持って行くことにしました。

彼が戻ったとき、彼はHPFSを作成し、デバッグし、完全にIntel 386アセンブリ言語で動作させました。彼が書いたコードは、最終的にOS / 2のLAN Manager Edition専用の(少なくとも当時は)「HPFS386」として販売されました。もう一つのチームはその後、「通常の」HPFSはOSの通常版に含まなったCでバージョンを書いて6ヶ月のようなものを費やし/ 2(およびIBMとMSが解散した後、IBMは更新され、取得するためのCコードを再コンパイルし、その「HPFS386」)。それ以降に変更および更新されていますが、物事について公平である場合、NTFSはおそらく「HPFS 2.0」(または3.0)と呼ばれます。Microsoftの最高の現在のファイルシステムは、彼が設計したものからまだ密接に派生していることに疑いはありません。

バローズB220テープ

これらは、(少なくともIMOで)オブジェクト指向プログラミングの本当の始まりを具体化したものです。IBMテープ(たとえば)には、テープ上のデータの形式を示す「ラベル」がありましたが、バロウズテープは、小さなセットのルーチンを置くという慣習(だれがそれを始めたのか誰にもわからないと思います)を開発しましたデータとそのフォーマットを理解するテープ。そのため、フォーマットの詳細を知らなくてもデータを正しく操作できます。つまり、テープ上の最初のいくつかの「ブロック」は、基本的に永続化された形式のvtableでした。基本的にはvtableをメモリに読み込んでから、定義されたメソッドを使用してテープの残りのデータを操作します。すべてが非常にきちんとしていてシンプルです(完全にポータブルではない場合は少しだけ)。


11

ジョン・カーマックは、壮大なプログラミングの偉業に定期的に感銘を受けています。ある話によると、彼はホテルの部屋で退屈していたので、週末にラップトップでDoom 3照明エンジンを書きました。


2
残念なことに、彼は実際のゲームを書いていませんでした。
DeadMG

10

疑わしい目的にもかかわらず、私はまだMegaUploadのキャプチャソルバーユーザースクリプトについてstill敬の念を抱いています。これはJavaScriptで記述されたGreaseMonkeyスクリプトで、ビットマップデコーダーとキャプチャ画像の文字を認識するニューラルネットワークを備えています。繰り返しますが、これらはすべてJavaScriptを使用して行われます。


1
制限が課せられているために良い仕事をすることができないとあなたにうめく次の人を示すもの。
ジョンホプキンス

10

ミゲル・デ・イカザ-モノプロジェクト。

(彼はまた、非常に面白く、機知に富み、おもしろいです-少なくとも、私が彼を見た簡単な話から、そしていくつかのポッドキャストのインタビューを聞いて)


+1男は明らかに双子またはおそらく三連であり、すべて彼の名前の下に行く。一人の人が自分がいるすべてのsh * tに、そしてそのような詳細なレベルで関与する方法はありません。
ダンローゼンスターク

8

Anders Hejlsberg:Turbo Pascal言語とコンパイラー。TPCはソフトウェアエンジニアリングの傑作であると今でも考えています。私が今まで見た中で最もコンパクトで最速のネイティブコード(特定のバージョンから開始し、最適化も行います)コンパイラーです。Borland Pascal IDEには、本質的に「コンパイル」はありませんでした。コードを変更し、F9キーを押してプログラムがすぐに実行されるのを確認しました。これは8MHzまたは12MHzのマシンで実行されていました。TPCは後にDelphiに発展し、その後HejlsbergはMicrosoftに加わり、C#を共同執筆しました。

TPCの以前のバージョンのソースを見てみたいのですが、残念ながら、Borlandがそれらを開かなかったという多くのリクエストにもかかわらず。

Hejlsbergのコンパイラはこの本に触発されました:Niklaus Wirth、Algorithms + Data Structures = Programs


Delphiにはまだ非常に高速なコンパイラがあります。それが変更と継続をサポートしないことで逃げる理由だと思います。
ジョーリSebrechts

6

Gemplus(現在のGemalto)の私のトレーニングスーパーバイザーは、彼自身の3か月間の学部研修期間中に最初のJavaCardインタープリターとOSを作成しました。彼は仕様からコードを独力で作成しました。v.2を作成するために、Gemplusは30歳以上の男性チームを設置しました。男性チームは1年以上働いていました。完了したが、まともなパフォーマンスを得ることができない場合、彼らは彼に助けを求め、数日後に彼と彼の同僚は数十のボトルネックを指摘した。

Java Cardは、非常に小さなデバイスで実行することを目的としたJavaのサブセットです。彼の実装は、数MHzのクロックと2または3 KBのRAMを備えたスマートカードで実行されました。

ただ楽しみのために:彼の別の個人的な偉業は仕事のトランスに飛び込み、私たちの訓練生が部屋で叫んだ質問のどれにも答えず、その後、2時間後に彼の仕事が終わって再び生き返り、5または10に答えました連続した質問。


1
私は200人の男をオーバーシュートしたと思う...私はあまりよく覚えていない、それは10年以上前だった。とにかく彼に質問を郵送しました!
ガブリエル

1
くそー、その男はサイボーグでなければなりません。
mlvljr

そうです、彼らは30
Gabriel

5

はっきりと覚えています。高校では、クラスメートがQB45(Quick Basic 4.5)を使用したいくつかのレッスンで本格的なドライビングビデオゲームをコーディングしました。垂直スクロール、ストップウォッチ、ライフ、レベル。私は完全にショックを受けました。


1
Lispでテキストアドベンチャーゲームをしている男を見た。それ自体は印象的ではありませんでしたが、彼がそれをやった時に...すごい。
マイケルK

5

Gitおよび/またはLinux

Linus Torvaldsは、オペレーティングシステムカーネルとバージョン管理システムをゼロから作成しました。同様の生産性を持つ人は誰も知りません。


16
Linuxとして人気があり、難易度や独創性を簡単に打ち破ることができます。ほとんど完全に既存のシステムのクローンです。(1つの明らかな例として)RSX / 11、VMS、およびWindows NTをゼロから作成したDave Cutlerと比較して、それぞれが新しいユニークな作品です(そして、VMSファイルシステムにバージョン管理が含まれています)。まだ地図に載っています。
ジェリーコフィン

1
VMSを称賛しますが、同じ理由でNTを割り引く必要があります。ウィキペディアによると、[[...] Dave CutlerがWindows NTを構築し、設計の多くの要素が、CutlerのVMSおよびRSX-11での以前のDECの経験を反映しています。とにかく、Gitは印象的です。
LennyProgrammers

@ Lenny222:VMSとWindows NTの実質的な類似性を見つけることができるのは確かですが、Linuxのようなクローンに近いというわけでもありません。Gitについても非常に高いと思いますが、Gitが存在しなかった場合は、少なくとも2つまたは3つの他のGitがその場所でうまく機能すると考えることができます。
ジェリーコフィン

5
LinusはLinuxで1か月ほど働いた後、非常に成功したコミュニティプロジェクトになりませんでしたか?確かに素晴らしい仕事ですが、私はプログラミングの個々の偉業としてではなく、非常に成功した共同オープンソースプロジェクトとして分類します。
デヴィッドレイス

1
ここで得ているのは、Xユーザーが自宅でLinuxを使用しているという事実だと思います...家にVMSボックスがあると思いますか?確かに、それが一人の著者からの単一の作品ではなかったことを...逆に彼がそれをやっていなかったら、代わりにそれを行うために重要なものが並んでいましたか?
RobotHumans

5

リチャード・M・ストールマンが私の頭に浮かびます。この一人の男は、GNU Emacs、GCC、GDB、その他多くの注目すべきプログラムに命を吹き込みました。彼はさらにオリジナルのGPLを作成しました。私は彼が18ヶ月間洞窟に入り、GCCスイートのCコンパイラーを作る150,000行以上のコードで戻ってくるという話を聞いたことがあります。これらの150,000 LOCは、後でg ++の基盤を提供しました。彼自身の言葉で言えば、Emacsはテキストエディターとして始まり、それが生き方になり、今では一部の人にとっては宗教になっています。今日でも、Emacsの設計原則は多くの成功したプログラムで使用されています。

Donald E KnuthのTeXシステムは、驚異的なプログラミングを考えるときに頭に浮かぶもう1つのプログラムです。


TeXbookを読んでみてください。単なる人間のためではありません。

GPLのオーサリングは印象的な偉業ではありません。それは、シングルトンで自分を信用するようなものです。
DeadMG

4

私の学位クラスでは、クラスメートが30日以内にプロジェクト要件としてOSを作成しました(非常に基本的ですが、フロッピーから起動し、必要なルーチンを実行しました)。所要時間には、必要な読み取り/研究と実際のコーディングの両方が含まれます。

os.comのメーリングリストは、彼がその数日でやらないと言って落胆させているのを覚えています。また、朝5時に半意識状態で冗談を言って寮を歩いているのを見ました。:-)

彼は素晴らしいプログラマーです。


4

私は何も言わないつもりでしたが、誰かが「Ruby is feat」とパイプでつないだので、

John McCarthyは、シンボリック式の再帰関数とそのマシンによる計算、つまり1960年にLispを定義した論文でif、人々が真剣に考え始めたコンセプトでした。時間を先取りすることについて話します。


素敵なリファレンス。私は慣習よりも優雅さのために、ルビーを使いこなしました。これも前もって
RobotHumans

1
マッカーシーは数学の記事を書いた。実際のコードに変換できることがわかったのは後になってからです。

1
@ThorbjørnRavn Andersen-「実装済み」ではなく「定義済み」を使用するように注意しました。
イナイマシ

@Thorそれは、衛星をそこに置くためのロケットを構築できなかった、または技術がまだ存在しなかったという理由だけで、アーサークラークの円形静止軌道の発見(または発明)の功績を否定するようなものです。
マークC

4

Walter BrightのSymantec / Zortec C ++コンパイラは、膨大なプログラマチームによって実装されたコンパイラに追いついています。後に、Dの設計と実装。




0

80年代のコンピューター上の8ビットビデオゲームプログラマー(Commodore 64など)、かなり良いゲームは機械語で行われ、そのサイズはWindowsアイコンのビットマップよりも小さいことが多かった;-)最高の最適化

Geos(Commdore 64用のWYSIWYG OS)は、今のところ非常に印象的でした


-2

これが本当に重要かどうかはわかりませんが、ルビーを開発した仲間です。私はただその言語の優雅さを超えられません。そして、私はパンチカードやアセンブリの記述から始めた人ではないので、誤解される可能性がありますが、動的型付けをサポートする最初の言語だと思います。


3
これは動的な型付けを行う最初の言語ではありませんでした。いいえ、これを知るためにパンチカードから始めるべきではありませんでした。
Jas

-3

David Heinemeier HanssonがRailsを作成しています。

初めてRailsをインストールし、データベースに対してテストサイトをセットアップし、すべてのフレームワークとCRUDを自動的に実行し、テストサイトをセットアップしました。プログラミングを開始します。それは本当に印象的で、それ以来、他の言語/プラットフォームのあちこちにそのアイデアが出てくるのを見てきました。


これはプログラミングの偉業ですか?
デビッドレイス

シンプルでテーブルをレイアウトするのに良い仕事をしているという事実は、habtmに属します...さらに、データベース接続をdbに依存しないクラスフル構造に抽象化し、そこではほとんど魔法のようで、あなたがしなければならないのは新しいレールです-d(dbtype)bundler generate and rake db:create db:migrateコマンドセット。ベースが動作するためのスキャフォールドの生成は便利です。誰かがルビーは/彼らは規則を超えるエレガンスへの新たなアプローチであったこれらのgetはかなりハードdownvotedとしてレール好きではないように見えます
RobotHumans


それは完全に異なる考え方であり、すべてを十分なものではなく理想的なものに完全に向けました。私たち全員がモデルTフォードで走り回っていたようで、突然レールが現れ、それが現代のBMWです。それは、ユーザーとしての開発者の点でシンプルさと使いやすさの大きな変化であり、それ以来、これらのアイデアに基づいて構築された他の多くのプラットフォームを見てきました。
グレナトロン

1
結構ですが、あなたの質問には、その男の名前、彼が何をしたか、いつ彼がそれをしたかなどが言及されていないことに注意してください。まあ子犬もいいですが、それはこの質問への答えではありません。
デヴィッドレイス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.