設計と実装
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/17 06:25 UTC 版)
DSL は視覚化された言語(ドメイン特化ダイアグラムとも言われる)の場合もあるし(GEMS(英語版))、プログラム的な抽象化の場合もあるし(EMF)、テキスト的な言語の場合もある。 例えば、grepというコマンドラインで使われるユーティリティはテキストとのパターンマッチを行うための正規表現が可能である。sedユーティリティは同様に正規表現を使ってテキストとパターンマッチングさせて、文字列の置換も行う。これらのツールはシェルスクリプトで利用され、より複雑なタスクを実行する一部を構成する(この段落の話題は、カーニハンらの書籍のタイトルでもあるSoftware Toolsと呼ばれる「道具」的なプログラム類において、ドメイン固有言語的なものがよく使われている、という話であって、DSLに重点がある話では本来はない)。 DSL には成熟したプログラミング言語なら当然持っているべきファイルシステムへのアクセス機能やプロセス間制御といった機能が欠けていることが多い。 多くのDSLはバイトコードや実行コードと言ったものにコンパイルされることはなく、他の様々な媒体向けのデータが生成されたり、システムに作用したりする(例えば、データベースにクエリを行う)。例えばGraphvizはPostScript、GIF、JPEGなどを出力し、Csoundは音声ファイルを出力し、POVのようなレイトレーシング用言語はグラフィックスのファイルを出力する。SQLは関係モデルに基づいて設計されている関係データベースのへのクエリ(アクセス)言語である。 しかし別の多くのDSLは処理性能などのために、(場合によっては何らかのプログラミング言語への変換を経由して)バイトコードや実行コードと言ったものにコンパイルされ、そのコンパイルされたコードが他の様々な媒体向けのデータを生成したり、システムに作用したりする。
※この「設計と実装」の解説は、「ドメイン固有言語」の解説の一部です。
「設計と実装」を含む「ドメイン固有言語」の記事については、「ドメイン固有言語」の概要を参照ください。
設計と実装
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/06 10:28 UTC 版)
「設計と実装」は対で語られることが多い。何らかの機能を実現するための方法や枠組みを決定する抽象的な作業(別の表現で言えば、紙の上での作業や、モニタ上での作業)を設計と呼び、その機能を実際に動作させるための具現化(具体化)作業を実装と呼ぶ。 設計と実装を比べると、設計は機能を実現するための要素と構成について抽象的・理論的に表現する作業であるのに対して、実装は現実の世界で実際に形作ることによって機能を実現することであるから、実装のほうが現実における様々な状況に影響を受ける。そのため、設計に比べて、物理的・コスト的・時間的な影響をより直接的に受ける。 モノを作り出す工程としては、設計は上流、実装は下流に位置する。ただし現実には、この2つの過程は単純に2つに分離できるわけではなく、設計と実装は緊密な関連がある。例えば、モノを実際に作り出すためには、実装時のことも考慮して設計することが一般的である(「実装上の制約」に配慮した設計)。なお、実装段階になって、当初の設計が実現できないことが判明して、工程を遡り、「実装上の都合」で設計が変更されることもある。 なお、比較的、単純な機能なモノやソフトウェアの場合には、特に一個人が独りで行うような開発では、設計と同時並行的に実装まで行うこともある。だが、現在の(複数名で行うことが一般的な)大規模開発においては分業が進んでおり、設計と実装の工程はかなりはっきりと区別されている。製品開発のモデルの詳細は、ソフトウェア開発方法論のウォーターフォールモデル、コンカレントエンジニアリングなどを参照のこと。 上記、「設計と実装」という用語での対比は、主にソフトウェアの分野で用いられる。ソフトウェア以外の分野では、「設計と製造」のように、実装ではなく製造が用いられることが多い。ソフトウェア以外の分野で、「製造」と言わずあえて「実装」という言葉を用いるのは「ある特定の機能を実現する」ことで注目するような場合である。
※この「設計と実装」の解説は、「実装」の解説の一部です。
「設計と実装」を含む「実装」の記事については、「実装」の概要を参照ください。
設計と実装
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 01:14 UTC 版)
コンピュータ・プログラミング言語の設計は「言語仕様」として示され、実装は「言語処理系」と呼ばれる。以下はそれらについての概観である。
※この「設計と実装」の解説は、「プログラミング言語」の解説の一部です。
「設計と実装」を含む「プログラミング言語」の記事については、「プログラミング言語」の概要を参照ください。
- 設計と実装のページへのリンク