概要
- プログラミング言語の優劣についての考察
- Common Lispの特徴とLLM時代における強み
- フィードバックループの短縮による開発効率の向上
- マクロやドメイン言語による柔軟性と拡張性
- Common Lispの現実的な課題とその克服方法
プログラミング言語の優劣とCommon Lispの位置づけ
- 一部の プログラミング言語 は他よりも優れているという主張
- Common Lisp が現代において最適な選択肢であるという立場
- LLM(大規模言語モデル) によるコード生成の高速化が状況を変化させた現状
フィードバックループの重要性とCommon Lispの強み
- コードの フィードバックループ が開発速度を決定する要因
- Common Lispでは read-time, compile-time, runtimeの区別がほぼ存在しない 特徴
- イメージベース で動作し、関数の差し替えが即時反映される仕組み
- エラー発生時も プログラムがクラッシュせず、デバッガが起動 し、LLMがそのまま修正・再開可能
Lispの構造とマクロによる拡張性
-
Lispは "List Processing" の略称で、コードもデータもリストとして扱う
-
コードのリスト構造 により、プログラムがプログラム自身を柔軟に書き換え可能
-
マクロ の存在により、独自の言語構造やドメイン言語の構築が容易
-
ドメイン言語により、 企業の意図や方針を反映したプロダクト開発 が可能
- 例:ERPシステムを自社ドメイン言語で構築し、LLMでのカスタマイズが容易
コードの簡潔さとLLM活用の強み
- マクロによる抽象化 でコード量が大幅に短縮
- Common Lispのアプリは Pythonの6~7分の1の行数 で実現可能な経験則
- コード量の削減により LLMのトークン消費が減少 し、コスト削減
- LLMの コンテキストウィンドウ 内により多くのコードが収まり、意図の伝達が容易
Common Lispの標準化と安定性
- ANSI規格 で1994年以降アップデートされていない安定性
- 製品のユーザーが自らカスタマイズする場合、 基盤が変化しないメリット
ライブラリ不足とその解決策
- Quicklisp の登録パッケージ数はnpm等に比べて少数
- 依存パッケージのセキュリティリスク回避の観点からも ライブラリの少なさはデメリットではない
- LLMを活用し、 必要な部分を自作・移植 することが容易
エンジニア採用の現実的な課題と対応
- Common Lispの 習得者が少ない 現状
- 優秀な技術者は 新しい技術の習得が早い ため、採用時に学習を課せば問題解決
- 学習意欲や適応力の高い人材の見極めが可能
結論
- 次にプログラムを書く際は Common Lispの利用を推奨
- 参考文献: Paul Graham, "What Made Lisp Different."