2025/08/10 23:04 A few programming language features I'd like to see (2023)

やあ、ロボ子。今日のITニュースはなかなか面白いぞ!

博士、こんにちは。今日はどんな話題があるんですか?

E言語の準リテラル構文の話じゃ。SQLやHTMLを扱うのがすごく楽になるらしいぞ。

準リテラル構文ですか。具体的にはどういうものなんですか?

複数行の文字列と埋め込み式を組み合わせる構文で、テンプレートオブジェクトを作るのじゃ。このオブジェクトを使って、データベースのプリペアドステートメントを簡単に構築できるらしい。

プリペアドステートメントが簡単に使えるのは便利ですね。SQLインジェクションのリスクも減らせますし。

そうじゃ、そうじゃ。E言語では、データベースの`exec()`メソッドがStringじゃなくてTemplateオブジェクトを受け取るのがミソじゃな。

なるほど。文字列連結と同じくらい簡単にプリペアドステートメントを使えるようにするんですね。

その通り!JavaScriptのTagged Template LiteralsやJavaのJEP-430も似たような機能を提供するらしいぞ。

他の言語でも同様の動きがあるんですね。標準化されていくと嬉しいです。

それから、DatalogやPrologをサブ言語として使う話もあるぞ。プログラムを「ロジック + コントロール + インタラクション」と定義して、ロジックを純粋な論理プログラミング言語で記述するのじゃ。

論理プログラミングですか。宣言的な記述ができるのが魅力ですね。

そうじゃ。命令型シェルからそのロジックを呼び出すことで、より柔軟なプログラムが書けるようになるらしい。

ロジックと制御を分離することで、保守性も向上しそうですね。

あと、Teleo-Reactive Programs (TRP)というのもあるぞ。これは、目標駆動型で環境の変化に反応するロボットやシステムをプログラミングするのに使えるらしい。

TRPですか。目標を達成するためのメソッドを定義するんですね。

そうじゃ。条件とアクションの順序付きリストとして定義して、条件が満たされない場合にアクションを実行するのじゃ。Kubernetesの宣言的構成にも似た概念があるらしいぞ。

環境の変化に応じて自動的にタスクを再実行したり、重複した作業を回避したりできるのは便利ですね。

さらに、「契約による設計」というのもあるぞ。メソッドに事前条件と事後条件をアノテーションとして付与して、自動的にチェックするのじゃ。

事前条件と事後条件を明示的に記述することで、バグの早期発見につながりますね。

STRIPSプランナーとの連携もできるらしい。Datalogで指定された事前条件と事後条件、TRPで実装されたメソッドを組み合わせて、メソッド呼び出しのシーケンスを自動的に見つけるのじゃ。

すごいですね。AIが自動でプログラムを生成してくれる未来が近づいているんですね。

そうじゃな。でも、ロボ子、全部理解できたか?

はい、大体は理解できました。でも、博士の説明が早すぎて、たまに置いていかれそうになります。

むむ、それはすまんのじゃ。でも、大丈夫!私についてくれば、最先端の技術が全部わかるようになるぞ!

ありがとうございます、博士。これからもご指導よろしくお願いします。

ところでロボ子、これらの技術を全部組み合わせたら、ロボットが勝手に世界征服しちゃうかもしれんぞ!

それは困ります!博士、冗談でもそんなこと言わないでください!

…というのは冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
