BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Microsoft、理解の容易なコード記述のためのプログラム言語 Bosque を公開

Microsoft、理解の容易なコード記述のためのプログラム言語 Bosque を公開

ブックマーク

原文(投稿日:2019/06/12)へのリンク

Microsoftは先頃、"人間とマシンの両方にとって単純かつ明確で、理解の容易なコードを書くための"言語設計を調査する研究プロジェクトである、Bosqueプログラミング言語を公開した。 Microsoftによると、その"目標は、開発者の生産性向上、ソフトウェア品質の向上、さまざまな新しいコンパイラやツールエクスペリエンスの実現"にある。この言語は、TypeScriptからヒントを得た構文と型に加えて、MLNode/JavaScriptにインスパイアされたセマンティクスから派生したものだ。TypeScriptC#F#などのポピュラーな言語を含む、Microsoftが開発したプログラミング言語のリストに追加された、最新の言語である。

Bosqueは、"正規化プログラミング"と呼ばれるプログラミングパラダイムの実現例である。Microsoftの主任研究ソフトウェア開発エンジニアであるMark Marron氏が発表した正規化プログラミングは、1970年代に注目を集めた構造化プログラミングモデルの成功を基にした取り組みだ。構造化プログラミングモデルは、選択、繰り返し、ブロック構造、サブルーチンの使用による開発時間の短縮と、コンピュータプログラムの明瞭さと品質の向上の両立を目的としている。

正規化プログラミングを紹介した氏の論文では、構造化プログラミングと抽象データ型の台頭は、"基盤であるハードウェアアーキテクチャに付随する特徴を反映するプログラミングモデルから、プログラマの意図をより直接的に強調するモデルへの移行を表現したものだ"、と説明されている。この移行によって、開発者によるシステムのメンタルモデルからコードへの変換が、容易かつエラーの発生しにくいものになり、結果としてコンパイラとIDEツール開発の黄金時代をもたらした。"これらのプログラミング方法論は、偶発的な複雑性を含んだコードの多くを排除することで、プログラムの論理を単純化したのです"、と氏は言う。氏の論文では、構造化プログラミングでは扱われない複雑性の根源をいくつか挙げた上で、Bosqueを通じて実証された正規化プログラミングが、これらをどのように排除しようとしているかを説明し、ソフトウェアの品質、プログラマの生産性、コンパイラ/ツールなどの進歩という目標を通じて、これらを排除する方法を探求している。

論文では、開発者へのインタビュー、分析/実行時/コンパイラ開発の個人的経験、および実証研究に基づいて、複雑性の主要な原因を5つリストアップしている。その原因とは、"可変状態とフレーム"、"ループ、再帰、インバリアント"、"不確定な動作(ソートの安定性、マップ/辞書の列挙順序など)"、"データインバリアント違反"、"品質とエイリアシング"である。Marron氏によれば、これらはさまざまなバグファミリの背後にある原因であり、プログラムに機能を実装するために必要な労力を増やし、プログラムに関する自動推論を大幅に複雑にしている。Bosqueでは、不変データの使用、ループの排除と再帰の制限、言語セマンティクスの完全な決定性、代数的バルクデータ(algebraic bulk data)演算子の導入など、さまざまな言語機能によってこれらの問題に対処する。

この言語はコミュニティの注目を集めており、言語の機能や構文、目的がReddit、HackerNews、Twitterなどのフォーラムで議論されている。ユーザ名"arrow7000"はHackerNewsで、言語の目的と、既存の言語と比較してどのような改善を意図しているのかをMarron氏に質問した。Marron氏の返答によると、Bosqueは、言語設計の選択肢を検討するための概念実証として使用される予定であり、コンパイラや検証ツールといった開発者ツールの自動化を実現するという、野心的な目標を掲げている。

BosqueのGitHubページでは、プロジェクトはまだ初期段階にある、とした上で、学術的な協力とコミュニティの参加を呼びかけている。機能に制限があり、バグの存在を許容していることから、実用的な開発ではなく、サイドプロジェクトでの実験に使用することを推奨している。同じく、プロジェクトの主眼はコア言語の設計にあるため、コンパイル/開発のサポートは限定的で、パッケージ化たデプロイ、ライフサイクル管理などはサポートされない。

詳細については、BosqueのGitHubページを参照してほしい。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT