HN 日本語サマリー

← 一覧へ戻る
プログラミング

私の世界を変えた10行のコード

Ten lines of code that changed my world (pixelambacht.nl)

146 pointsby dimonomid46 コメント

要約

著者が個人的に影響を受けた、あるいはユーモアを感じた10行のコードを紹介する記事。古典的なBASICのHello Worldから、JavaScriptの奇妙な挙動、アセンブリコードの自己書き換え、CSSアニメーションまで、多様なコードスニペットを通じてプログラミングの面白さや奥深さを伝えています。

全文翻訳

私の世界を変えた10行のコード 2026年9月25日 何らかの形で、私にとって意味のある10行のコード。私が書いたから、あるいは私がそれを広範囲にコピーしたから、あるいはそれが私を笑わせたから。 あるいは泣かせたから。 Hello World 10 PRINT "HELLO, WORLD!" 20 GOTO 10 これを初めて入力したのがいつだったか、あるいはこのバージョンが正確だったかどうかは分かりません。コンマなしだったかもしれませんし、感嘆符がもっと多かったかもしれません。それにもかかわらず、コンピューターは忠実に、世界に、そして何よりも、コンピューターと初めてコミュニケーションをとったばかりの目を輝かせた子供に、陽気に挨拶しました。 2行目は、コンピューターは何でも指示された通りに実行するという点を強調しました。永遠のハローワールド! Holy JavaScript weirdness, Batman! Array(16).join('wat' - 1) + ' Batman' この行をコピーしてブラウザのコンソールに貼り付けてみてください。昔のポップカルチャーテレビと、オタクなコーディングユーモアのクロスオーバーで、「JavaScriptは愚かだ」という大きな皮肉が加わっています。クラシックであり、初めて実行したときは本当に大笑いしました。 Self modifying 6502 assembly code LDX #$00 ; Load X with the value 0 .loop LDA $2000,X ; Load A with the byte at address $2000 + X STA $0400,X ; Store A at address $0400 + X INX ; Increase X by one BNE .loop ; Branch back to .loop while X is not 0 INC .loop+2 ; X is 0, increase the byte at .loop + 2 INC .loop+5 ; Also increase the byte at .loop + 5 LDA .loop+5 ; Load A with the byte at address .loop + 5 CMP #$07 ; Compare it with 7 BNE .loop ; Branch back to .loop if A is not 7 マシン語は、金属に最も近いものです。警告も、ログも、ガードレールもありません。実行中に実際のコードバイトを上書きすることで、コード自体を自己変更することさえ許可します。この例のように、ソースとデスティネーションアドレスのハイバイトを更新します。 ブランチは$2000から$20FFまでループし、それに続くINCはループを再開する前にアドレスを$2000から$2100に変更します。(6502はリトルエンディアンなので、+1と+4ではなく+2と+5を行います) 最も低レベルで、ハードコアで、少し危険です。これができると気づいたとき、金属にこれほど近いコーディングでは、何でもありだという点が本当に強調されました。 touch.bat type nul > ."%*" この小さなバッチスクリプトは、Windowsで貧乏人のtouchを可能にし、Windows NTからWindows 7まで広範囲に使用しました。Total Commanderのミニシェルでtouch filename.txtと入力して、新しい空のファイルを素早く生成していました。これなしでは生きていけませんでした。 CSS debugger border: 10px solid hotpink; カスケードのconsole.log! スタイルのvar_dump()! シートのprintf()! そしていつもホットピンク。 Infinite lives POKE 9450,173 コンピューターのメモリ内にあるバイナリコードの正しい場所に特定のバイトをPOKEするだけで、突然無限のライフ、エネルギー、またはお金が得られます。これはゲームでチートすることを可能にしただけでなく、PEEKとPOKEを知っていれば、どんなゲームでもすべてを操作できるという強力な認識をもたらしました。 The speed-up loop for(i=0;i<1000000;i++) {;} 「アイデアはこうだ」とウェインは続けた。「本当に遅い週、つまりバグを修正したり他の変更を加えたりしない週には、ループのゼロを1つ削除するだけだ。そしてマネージャーに、最新の変更要求で速度の問題に直面したが、多くのディープジュジュ最適化の後、大幅に速度を向上させることができ、来週には変更要求を実行できるだろうと伝えるんだ。」 面白い話であり、退屈で目的のないプロジェクトで苦労したことのある私たちにとって、魅力的なアイデアかもしれません。 RTFM or rm -rf / # rm -rf / 2000年代頃にLinuxで問題に遭遇した場合、ヘルプを求めてIRCにアクセスすることがよくありました。そこで多くの人が、すべてのLinux問題に対する魔法の解決策を見つけました。それは常に同じでした:rootとしてログインし、rm -rf /を実行することです。失敗することなく、すべてのLinux問題を消し去りました! SKAN2.PAS {$M $4000,0,0 } {16 Kb stack} {Skan v2.00 by Trexx} Program Skan2; uses crt,dos; var a,b,c:char; b1:byte; str:string[3]; Ends:boolean; begin Ends:=False; a:='a'; {Start values} b:='a'; c:='a'; repeat inc(c); if (c='z') then begin inc(b); c:='a'; end; if (b='z') then begin inc(a); b:='a'; end; str:=a+b+c; {Change this when FULL.EXE is in another directory} exec('z:\public\full.exe',str); if (whereY>10) then readln; {Hit anykey to quit} until KeyPressed or Ends; end. 90年代初頭、私たちの学校についにLANが設置され、もちろん私のサイバーパンクスクリプトキディーズ、レイマーズ、1337ハッカーズの仲間たちとそれを探検しました。すべてのユーザー名は3文字で構成されており、使用されていないものはデフォルトのパスワードのままになることを知っていました。そこで、Borland Pascalでこの非常に粗雑なユーザー名スキャナーを作成しました。 コード行よりもバグの方が多かったですが、なんとか機能しました。(そして、バージョン2.00ですから、当然です!)私たちは見つけられたすべての休眠アカウントを喜んでハッキングし、そして…次に進みました。 CSS280 *{transform:translateY(24vh);text-align:center}*>:before{animation:a 9s 1e+9 linear;content:'Roses are #F00'}@keyframes a{10%,15%,35%,40%,60%,65%, 85%,90%{opacity:1}12%,37%,62%,87%{opacity:0}25%{content:'Violets are #00F' }50%{content:'All my base'}75%{content:'Are belong to you'}} 280文字のCSSだけでアニメーションする詩。JavaScriptもHTMLもなし。空のドキュメントに<style>ブロックだけで実行でき、この280文字の純粋なCSSで動作します。 人工的な制限は、以前の140文字の制限(Twitterによって規定されていた)からのステップアップであり、コピーして空のCodePenに貼り付けて面白い効果を見ることができる短いコードスニペットを投稿することを可能にしました。 私は特に、無限(時間と文字数の両方)よりも短い1e+9の持続時間に誇りを持っています。