Gooseが示す、ヒープなしのシステムコード設計
少なくとも二つの言語コミュニティを苛立たせそうな主張から始めます。借用チェッカーは回り道だった、と。失敗だったわけではありません。Rustの所有権モデルは実際の問題を解決し、業界全体を前に進めました。しかしそれは、より古くシンプルなアイデアを迂回する回り道であり、私たちは今まさにそのアイデアを再発見しつつあります。その...
プログラミング言語を深掘り。新機能、パフォーマンス、エコシステムの発展を取り上げます。
17 件の記事少なくとも二つの言語コミュニティを苛立たせそうな主張から始めます。借用チェッカーは回り道だった、と。失敗だったわけではありません。Rustの所有権モデルは実際の問題を解決し、業界全体を前に進めました。しかしそれは、より古くシンプルなアイデアを迂回する回り道であり、私たちは今まさにそのアイデアを再発見しつつあります。その...
Rustの型システムは大きな約束をしています。安全なコードがコンパイルを通るなら、ダングリングポインタ、データ競合、use-after-freeは起きない、という約束です。ところがGitHubのissueに、一見安全そうなRustのコードが、すでに解放されたスタックフレームから値を読み出してゴミを表示するスニペットが投...
ちょっとした裏技ですが、これが地味に役立ちます。LLMが最初に出力するトークンだけに関心があるなら、選択式の質問を投げるだけで、順伝播1回で答えを得られます。制約付きデコーディング、つまり語彙のうち許可したいごく一部のトークン以外をすべてマスクする手法を使うと、生成モデルがほぼ分類器のように振る舞います。JSONのパー...
1989年、後にGo、UTF-8、Plan 9を共同開発することになるRob...
この主張は、プログラミング言語理論の界隈で時折話題に上がります。「十分に詳細な仕様は、コードと区別がつかない」というものです。ここに含まれる意図は挑発的です。プログラムが何をすべきかを記述することと、実際にそれを行うことのあいだの境界線は、我々が思っているよりずっと薄いのだと言っているのです。仕様が曖昧さを完全に取り除...
SQLiteはどこにでもあります。スマートフォンにもブラウザにもスマートテレビにも、たぶん車の中にも入っています。別のサーバーを動かさずにアプリケーションへフルのSQLデータベースを提供するという根本的な問題を解決し、その出来があまりに良かったので、「組み込みデータベース」と「SQLite」はほぼ同義語になりました。た...
ライアン・ダールがNode.jsから身を引いたとき、プロジェクトは生き延びたが、安定するまでにはガバナンスの再構築、フォーク(io.js)、そして和解と、長い年月が必要だった。グイド・ヴァン・ロッサムがPythonのBDFL(「終身の慈悲深い独裁者」)を辞任したときも、コミュニティは数か月にわたってガバナンスモデルを議...
Rubyは遅いと言われてきました。Pythonもそうですし、JavaScriptもそうでした。少なくとも、V8がサーバーサイドの処理に耐えられるほど速くするまでは。動的言語がどうやって速くなったのかという話は、突き詰めるとJIT(Just-In-Time)コンパイルの物語であり、実用的なコンピュータサイエンスの中でも特...
Javaはプログラミング言語界のロドニー・ダンジャーフィールドだ。とにかく尊敬されない。30歳未満の多くの開発者にJavaの話をすると、XMLの設定ファイル、エンタープライズBean、AbstractSingletonProxyFactoryBeanといったものを思い浮かべるだろう。この言語の評判は2008年で止まって...
3百万回以上閲覧されている有名なStack...
みなさん一度は経験がありますよね。動画を変換したくてググると、キーボードを叩き散らかしたようなコマンドが載ったStack Overflowの回答が出てくる。ffmpeg -i input.mov -c:v libx264 -preset slow -crf 22 -c:a aac -b:a 128k...
開発者なら誰でも毎日シェルを使っている。でも、シェルが実際に何をしているかを理解している人は少ない。シェルはアプリケーションのように見える——コマンドを入力すれば実行してくれる——が、実態はOSの根幹をなすUnixプリミティブの薄いラッパーにすぎない。シェルをゼロから自作することは、プロセス、ファイルディスクリプタ、パ...
毎年のように「Lispは死んだ」というエッセイが書かれ、そして同じくらいの頻度で、お気に入りのモダンな言語の機能の半分はLispから盗まれたものだ、と指摘する人が現れます。ガベージコレクション、第一級関数、クロージャ、動的型付け、ホモイコニシティ、REPL駆動開発、マクロ。今日の開発者の大半が生まれる前に、これらはLi...
1969年、Ken ThompsonとDennis Ritchieは、Bell...
Python は存在してからずっと「遅い」と言われ続けてきました。Python コミュニティの定番の答えは「ホットなループは C 拡張で書けばいい」というもので、これは言語の標準的な実行モデルが根本的な限界を抱えていることの裏返しでした。CPython はバイトコードを一命令ずつ解釈し、各命令は switch...
プログラムが malloc()...
Flaskが1.0に到達するまでに8年かかりました。SQLiteは2000年から活発に開発が続いていて、今でも意味のある改善が入っています。Linuxカーネルは30年以上の歴史がありますが、年を重ねてむしろ良くなっていると言ってもいいでしょう。一方で、VCの支援を受けたスタートアップに対する平均的な期待は、18か月以内...