2026年7月15日(水)掲載 2,631本日 0
HN3813

【Show HN】AIが設計した新言語「Jacquard」―AIコード生成と人間によるレビューの最適解を目指して

Show HN: Jacquard, a programming language for AI-written, human-reviewed code

jbwinters1日前

議論

6
0jbwintersスレ主381日前

生成AIの波が押し寄せる中、私はある疑問を抱きました。「AI自身が、人間が作った既存の言語よりも『書きやすい』と感じる言語を、AI自身が設計することはできないだろうか?」そうして誕生したのがプログラミング言語「Jacquard」です。開発にあたり、主要言語からエキゾチックで独創的な言語に至るまで、AIにAST(抽象構文木)を解析させ、全く新しい構造と構文を導き出しました。名前の由来は、バベッジの解析機関(およびパンチカード)の先駆けとなった「ジャカード織機」からきています。Jacquardは既存のアイデアを再構成しつつ、非常に興味深いアプローチをいくつか採用しました。外部への副作用(ファイルシステムやネットワークへのアクセスなど)を関数シグネチャで明示的に定義し、実行時に明示的な許可を求める仕様です。また、副作用の履歴を記録・再生することで、異なる条件下でのコードの挙動を追跡できます。さらに、コードが内部でコンテンツ指向のセマンティックな識別子を持つため、変数名の変更やフォーマットの変更で再コンパイルや再テストが不要なのも特徴です。さらに、副産物として開発されたテストフレームワーク「Warp」も強力です。結果キャッシュやハンドラ置換などの機能を備えており、Pythonを書いていた頃に喉から手が出るほど欲しかったツールになりました。demosディレクトリにサンプルがあるので、ぜひ触ってみてください。まだまだ開発途上ですが、インストールして実際に利用可能です。AIエージェントに『docs/SKILL.md』を読み込ませてコードを生成させたり、自身のプロジェクトに組み込んだりと、ぜひ活用してください。特にエージェントシステムとの相性は抜群です。エージェントが書きにくいと感じたり、人間にとって理解しにくい部分があれば、ぜひフィードバックをお願いします。詳しくはこちらから。リポジトリ: https://github.com/jbwinters/jacquard-lang 紹介記事: https://research.friendmachine.co/jacquard/

1wren6991約19時間前

LLMがLLM向けのプロンプトを書くのがいかに下手か考えれば、LLMのための言語設計における彼らの判断を信頼できるかは微妙だ。

ランタイムがファイルシステムやネットワーク等へのアクセスに明示的な許可を要求する

これは言語の問題というより、OS(あるいはライブラリ)の問題じゃないかな。

1つのプログラムを多くの「世界」に対して実行する。同じコードを実ネットワーク、スクリプト化された偽環境、先週の通信の記録、あるいはサーバーがどう振る舞うかの確率モデルに対して動かせる

この「世界」モデルって、ただの依存性の注入(DI)と何が違うの?

2sajithdilshan約19時間前

AIで次々と新しいものが作られるのは大好きだけど、こうしたサイドプロジェクトのために人類全体でどれだけのトークン、ひいてはどれだけの金を燃やしてきたかと思うとヤバいよね。

3erelong約18時間前

「ロボットのためのエスペラント語」

4andai約18時間前

外部/世界への副作用が関数シグネチャで見えるようになっている

素晴らしい。Jaiにも似たような機能がなかったっけ?関数ごとに、グローバルに何に触れるか(読み取り/書き込み)を宣言して、ブロック単位でも指定できたはず。

Jaiは使ったことない(まだリリースされてないはず)けど、作者が話してたのを聞いていいアイデアだと思ったよ。

純粋関数だと推論しやすいっていう考えと通じるものがあるね。今のほとんどの言語は純粋関数という概念すら持っていないけど、持っている言語でも単に2分類されているだけだ。関数がグローバルな状態をいじるなら、具体的に何をしているのか知りたいところだよ。

静的に計算してIDEのアノテーションとかで表示すればいいんだろうけど、明示的に指定させるのはいいプラクティスだと思う。

ネットワークみたいな他の副作用もそこに含めているのはかなりクールだね!

あと興味があるのは証明の話。完全な証明(コードベースのサブセットならそっちに向かっているみたいだけど)まではいかなくても、基本的な事前/事後条件チェックの正規化だね。

リリースモードでそれらが欠けているとコンパイルできないように設定するのはどうかと考えていた(全関数に必要なわけじゃないけど、少なくとも欠けていることを明示させたい)。

あと関数ごとに厳密さレベルを設定して、ハッシュ化かなにかを使って、関数が修正されたら再チェックのプロセスを通す仕組みも考えていた。例えばレベル7の厳密さを持つ関数は、それより低い証明レベルの関数を呼び出せないようにするとか。結局Adaを一から再発明しているだけだよと教わったから、Adaを見てみたほうがよさそうだな…

待って、あなたのシステムもハッシュ化してるのか…すごい。(それって証明関係の分野から来てるの?)

5phildenhoff約17時間前

すごくクールだね。Unisonのキャッシュアプローチはもっと広く採用されるべきだと常々思ってたよ。後で触ってみるのを楽しみにしている!