ほとんどの開発者は、1 つまたは複数の伝統的な確立された言語を使用して日常のプログラミング作業を行っています。それにもかかわらず、プログラミングの問題を解決するための新しいツールを切望している人の割合は増加しています。この傾向は、ドメイン固有プログラミング言語(DSL) の台頭で明らかです。DSL は、コンパクトで焦点が絞られており、汎用目的を意図していないことが主な特徴です。それでも、これらのプログラミング言語は、長期的には開発ツールボックスの中で特別な位置を占める可能性があります。

知っておくべき11のプログラミング言語

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

私たちは、ニッチな分野を見つけた皆さんのために、12 近くの新しいプログラミング言語をまとめました。

リアクティブ Clojure

Clojure と React を組み合わせると、リアクティブ フロントエンドのすべてのパワーと Clojure の堅牢な機能強度を組み合わせたシステムが得られます。 Reactive Clojure を使用すると、フロントエンド コンポーネントの複雑なコレクションを作成し、それらを関数にリンクできます。 Reactive フレームワークは詳細を処理し、コンポーネントとデータベースの間でアプリケーション データがスムーズに流れるようにします。 Clojure は、珍しいユースケースでも実現するための機能基盤を提供します。

Reactive Clojure は、フロントエンド コンポーネントをまとめて保持するコードを作成する場合に適したオプションです。そのマルチスレッド モデルは、複数のタスクを並行して報告する複雑で反応的なダッシュボードに最適です。

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

ニッケル

今日のプログラミング作業の大部分は構成ファイル内で行われます。これらのファイルは、多くの場合、JSON、YAML、さらには XML でエンコードされており、良いアイデアから複雑な儀式へと変化しました。場合によっては、これが行き過ぎて、開発者がまったくコーディングを行わなくなり、代わりに目標を達成するために無限の設定ファイルの作成に熱中することになります。

設定ファイルを作成するためのプログラミング言語には、間違いなく存在する権利があります。 Nickel は、非静的構成ファイルの作成に使用できる組み込みロジックを備えたテンプレートの一種です。たとえば、パラメータは平日と週末では異なる値を持つ可能性があります。 Nickel を使用すると、受け取ったすべてのパラメータに一致する新しい構成ファイルが作成されます。

プログラミング言語の構造はほとんどが関数型ですが、必要に応じて型チェックを行うことができます。ここでは「正確さ」が大きな問題となります。適切に記述されたニッケル コードによって、出力が構文と強制する必要があるその他のルールの両方に準拠していることが保証されるからです。 Nickel のコンパイラはコントラクトの作成を可能にし、それがルールに従って機能するかどうかをチェックします。ニッケルは、現代の IT アーキテクチャにとって非常に実用的なソリューションです。

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

コブラ

Kobra の作成者は、エンジニア、科学者、その他の非専門プログラマーが機械学習にアクセスできる言語を作成したいと考えていました。その結果、機械学習用のビジュアル言語が誕生しました。

Kobra エディターは、統計分析と機械学習のための一般的な組み込みルーチンを表すドラッグ アンド ドロップ タイルを使用してコードのようなシーケンスを組み立てます。このプロセスは、表形式のデータから構築されたデータ フレームとグラフィカル表示関数のコレクションを組み合わせて、ダッシュボードなどを作成する R に少し似ています。

上腕二頭筋

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

最も便利なクラウド機能の 1 つは、サーバーをオンデマンドで使用してピーク負荷を処理できることです。

現在、多くの Devops チームが、さまざまなクラウドでサポートされているさまざまな API のコードを作成しています。一方、Microsoft はさらに一歩前進することを決定し、コードとしてのインフラストラクチャの哲学の一環として、 Azureでサーバーを起動するための簡素化されたプログラミング言語である Bicep を開発しました。

Bicep 自体は、より高レベルのインフラストラクチャを考慮して設計されており、高度な宣言構造を備えているため、ステートメントを任意の順序で統合し、 Azure Resource Manager によって最適化できます。タイプセーフティ機能はエラーの回避に役立ちます。

フリンク

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

銀行を選ぶときに、使用する会計ソフトが浮動小数点数ではなく整数を使用しているかどうかを確認する人もいるはずです。結局のところ、後者のエラー率は高いことが知られています。

Frink は、この特定の問題のために設計された「ユニット認識」プログラミング言語です。 Frink の各変数には、数値だけでなく、測定単位の表示も含まれています。 Frink 設定ファイルのおかげで単位変換は簡単です。また、コアメカニズムは、切り上げおよび切り捨ての問題を回避するために、任意の精度の数値を使用します。つまり、基本的には数値の測定単位の型チェックです。

サウンド合成は、最初は比較的尖ったユースケースのように思えるかもしれませんが、多くの場合、たとえば、ゲーム開発、仮想現実、または優れた音質が重要な役割を果たすその他のタイプのアプリケーションに関して非常に役立ちます。

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

ここで DSL ファウストが登場します。その命名法は「機能的オーディオ ストリーム」という用語に由来しています。 Faust の構造は純粋に機能的であり、すべての機能がサウンド処理パイプラインを形成します。バックエンドは、入力されるサウンドを数値で表します。コード自体は、最終結果にコンパイルまたは結合できる一連の関数です。たとえば、コード出力を分割し、遅延を追加することで、エコーまたはリバーブ効果を作成できます。 Faust プログラム コードは、C++、C、LLVM ビットコード、WebAssembly、Rust、およびその他のいくつかの言語に翻訳できます。したがって、ほぼ普遍的に使用できます。

メルローズグリコール

プログラマーが音楽バンドを始めたいと思ったら、おそらくドラマーの募集を宣伝しないでしょう。むしろ、ドラムマシンにリズムを提供するコードを書いていました。それが完了すると、他のバンドメンバーもサブルーチンに置き換えます。この方法で交響楽団全体を構築することもできました。

Melrose と Glicol は、このタイプの音楽制作用に設計された 2 つのプログラミング言語です。どちらも、数回のキーストロークで広範な作曲を作成できます。メルローズは、西洋音楽で一般的な 12 音のオクターブを使用して、より高いレベルで動作します。ノートはシーケンスにグループ化され、移調などの日常的な作業の多くはソフトウェアが処理します。出力は MIDI 対応の楽器に転送できます。プログラム コードは、MIDI ポート経由の受信信号にも反応できます。

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

Glicol は Rust ベースのツールで、Melrose が実行できるタスクの多くを実行しますが、レベルは低くなります。 Glicol コードはデジタル信号処理と統合されており、幅広い音楽オプションを提供します。このツールはオープンソースのオーディオ エンジンで動作します。

WebAssemblyWase

命令をコンピュータに送信する最も効率的な方法は、命令をバイナリ形式でエンコードし、基本的な CPU 操作に限定することです。各チップには独自の優先バイナリ構文があり、Pascal や Java などの一部の言語には、ローカル仮想マシンを対象とした中立的なバイナリ形式があります。 WebAssembly はこれらの足跡をたどり、標準形式のテキストと結合された前処理されたバイナリ コードを Web ブラウザに提供します。目標は、Web アプリケーションのバックボーンを形成する縮小された JavaScript コードを、さらに実行可能でネイティブに近い速度を実現するものに置き換えることです。

多くの開発者は、WebAssembly を直接プログラミングせずに使用しています。高級言語をブラウザで実行できる WebAssembly に変換するコンパイラを使用します。 WebAssembly の基本構造の多くを人間が読める形式で表す低レベル言語を開発する取り組みも行われています。そのようなオプションの 1 つが Wase です。Wase は、強力な型指定を備えた C に似た構文を提供します。

新しいプログラミング言語: ソフトウェア開発を再定義する 11 の方法

WebAssembly は、Java の JVM と同様に、スタック マシンを使用して命令をエンコードする一般的な方法として、Web ブラウザーの外でも使用できます。たとえば、 Redpandaは、開発者が WebAssembly で記述されたコードを使用して転送中のデータを調整または変更できるようにするストリーミング データ プラットフォームです。

Java 17

技術的に言えば、Java は新しいプログラミング言語ではありません。 Java の最大の利点の 1 つは、古いバージョンとの下位互換性です。これにより、通常、10 年、さらには 20 年前のコードを最新の JVM 用にコンパイルすることが非常に簡単になります。

Java 17 がこのリストに含まれているのは、この言語が現在非常に近代化されており、1990 年代のタイムトラベラーにはほとんど認識できないほどであるためです。改良された乱数ジェネレーターや浮動小数点数学のより厳密なセマンティクスなど、多くの追加機能や機能強化の一部は、複雑な数値コードを扱うときに発生する課題に焦点を当てています。強力なカプセル化や拡張スイッチ セマンティクスなどの他の機能は、コア言語に規律と柔軟性の組み合わせをもたらします。全体として、これらすべての改善のおかげで、安全で信頼性の高いコードを書くことがこれまでより簡単になりました。 (FM)

この投稿は、米国の姉妹誌 Infoworld の記事に基づいています。