宣言型プログラミング言語とは対象の性質を宣言し、プログラムを構成するまたは近しい性質を持つプログラミングパラダイムの総称です。宣言型プログラミング言語は段階を指示せず、論理で管理します。では宣言型プログラミング言語はどのようなプログラミングパラダイムへと派生し、対として比較される命令型プログラミング言語とはどのような違いがあるのでしょうか。この記事では宣言型プログラミング言語の基礎知識、代表的な種類などを簡単に解説させていただきます。
宣言型プログラミング言語とは対象の性質を宣言し、プログラムを構成するまたは近しい性質を持つプログラミングパラダイムの総称です。宣言型プログラミングは2種類の意味を有しており「①処理方法ではなく対象の性質などを宣言することでプログラミングするパラダイムを意味する」「②関数型プログラミング、論理型プログラミング、制約プログラミングの総称である」となります。代表的な宣言型プログラミング言語としてLISP、SQLなどが挙げられます。
宣言型プログラミング言語の種類について見ていきましょう。
関数型プログラミング言語とは関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、関数は引数の適用から先行式の評価を後続式の適用につなげて終端の評価を導き出す式のツリー構造として定義されます。代表的な関数型プログラミング言語としてR言語、ScaLa、Pythonなどが挙げられます。
関数型プログラミングの基礎知識や代表的な種類を解説している記事はこちら>>
論理型プログラミングとは古典論理学の述語論理をベースにして構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、論理積、論理和、論理含意、否定、同値などの様々な論理演算を組み合わせて表現されます。論理型プログラミングもまた派生しており代表的なものとして「並行論理プログラミング」「制約論理プログラミング」「仮説論理プログラミング」などが挙げられます。
制約プログラミングとは問題を制約の集合として記述することでコンピュータに情報を与えw、コンピュータが制約を充たす答えを導き出すように構成されたプログラミング言語の種類です。宣言型プログラミング言語の一種であり、制約を論理プログラミングに埋め込んだ制約論理プログラミングが起源となります。制約プログラミングには「制約論理プログラミング」「命令型制約プログラミング」が存在します。
宣言型プログラミング言語と命令型プログラミング言語の違いについて簡単に解説します。
宣言型プログラミング言語は「段階を指示せず、論理で管理する」のに対して、命令型プログラミング言語は「コンパイラへ段階的に指示を出す」ものです。これが互いに対となる由縁の根本となります。その他の要素で比較した表は以下をご覧ください。
宣言型プログラミング言語 | 手続き型プログラミング言語 | |
学習コスト | △ | ◎ |
コードが読みやすい | △ | ◎ |
保守性 | ◎ | △ |
再利用 | ◎ | △ |
代表的な言語 | Scala、SQL | Java、Ruby |
代表的な宣言型プログラミング言語を見ていきましょう。
Scalaとはスイス連邦工科大学のマーティン・オーダスキー氏によって2001年に設計されたJavaに影響を受けたオブジェクト指向と関数型言語の特徴を統合したプログラミング言語です。世に公開がされたのは2004年始めの頃でJavaプラットフォームにリリースされました。ScalaはJVM上で動作するため、Javaのライブラリを不自由なく使えるという特徴があります。他にも.NET Framework上でも動作するため、同様に.NETライブラリも使用することが出来ます。(※.NETサポートは2012年に中止)2003年に誕生した比較的新しいプログラミング言語ですが、2019年に『GitHubPullRequest』によって発表されたプログラミング言語使用率ランキングによると第12位を記録するほどの人気度が伺えました。日本国内でも様々な有名サービスがScalaを用いた開発を行っており、代表的なものとして『SmartNews』『Chatwork』などが挙げられます。
SQLとはリレーショナルデータベースの管理・操作をするため最も普及されているデータベース言語です。主な用途としてデータベース管理システム(DBMS)へデータの検索、追加、削除、更新などの指示のために使用されます。1970年代にIBM社の開発によって誕生した『Structured English Query Language(SEQUEL)』が元になっております。そのことから広く知れ渡っている呼び名は『シーケル』です。またSQLは国際標準化機構(ISO)で規格化をされております。そのためMySQL、Oracle、PostgreSQLなど様々なデータベース管理システムにおいてもSQLにて対応することが可能です。またSQLの代表的な拡張プログラム言語としてPL/SQLやT-SQLなどが挙げられます。
LISPとはジョン・マッカーシー氏によって1958年に考案された高水準プログラミング言語です。LISPは60年以上の歴史を持ち、Webアプリケーションや人工知能プログラム(AI)の開発に利用されております。LISPの文法は『式指向』を採用しており、式と文は区別されず多くのプログラム言語と違い全てのコードとデータは式として書き出されます。宣言型プログラミング言語の中でも関数型プログラムに分類されます。LISPから派生したプログラミング言語は数多く存在しており、代表的な言語として「Maclisp」「Scheme」「LFE」などが挙げられます。
宣言型プログラミング言語を理解するために初心者でもわかる基礎知識、代表的な種類などを簡単に解説させて頂きました。宣言型プログラミング言語を一言で表すと『対象の性質を宣言し、プログラムを構成するまたは近しい性質を持つプログラミングパラダイムの総称』です。代表的なプログラミング言語として「Scala」「SQL」「LISP」などが挙げられます。宣言型プログラミング言語についてこの記事に記載されている最低限の内容は理解しておくようにしましょう。