ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

メタプログラミング

索引 メタプログラミング

メタプログラミング (metaprogramming) とはプログラミング技法の一種で、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。主に対象言語に埋め込まれたマクロ言語によって行われる。.

12 関係: マクロ言語プログラミング (コンピュータ)テンプレートメタプログラミングドメイン固有言語クワイン (プログラミング)C++Common Lisp部分評価LISPREBOLS式Scheme

マクロ言語

マクロ言語(マクロげんご)は、マクロを記述するコンピュータ言語である(キー操作をそのまま記録・再現する、いわゆるキーマクロ等のように、言語を持たないマクロ機能もある)。プログラミング言語的な機能を持つものもあれば、持たないものもある。ソフトウェアの制御や自動化にとどまらず、普通のプログラミング言語のような汎用的な処理をすることが可能なものも存在する。また他に、テキスト変換などを記述する変換言語もマクロと呼ばれることが多い。 マクロ言語はソフトウェアによる独自のものもあれば、Windows Script Host (WSH) を利用するなどしてスクリプト言語をマクロ記述に使えるようにしている場合もある。 また、マクロとスクリプト言語による拡張(スクリプティング)を用語として区別しているソフトウェアもある。 この記事とマクロの記事は、それぞれに書くべき内容と書かれている内容が混乱している。.

新しい!!: メタプログラミングとマクロ言語 · 続きを見る »

プログラミング (コンピュータ)

ンピュータのプログラミング(programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。.

新しい!!: メタプログラミングとプログラミング (コンピュータ) · 続きを見る »

テンプレートメタプログラミング

テンプレートメタプログラミング(template metaprogramming)は、メタプログラミング技法の一種であり、コンパイラがテンプレートを使って一時的ソースコードを生成し、それを他のソースコードと結合してコンパイルする方式である。テンプレートが出力するものは、コンパイル時の定数、データ構造、関数定義などがある。テンプレートの利用は言わばコンパイル時の実行である。この技法は様々な言語で使われている(C++、D言語、Eiffel、Haskell、ML、XLなど)。.

新しい!!: メタプログラミングとテンプレートメタプログラミング · 続きを見る »

ドメイン固有言語

ドメイン固有言語(ドメインこゆうげんご、domain-specific language、DSL)とは、特定のタスク向けに設計されたコンピュータ言語である。 DSL は一種類のタスクをうまく実行することに集中したものであり、古くから存在した。何らかのプログラミング言語それ自体の構文と処理系を利用する internal DSL(あるいは embedded DSL)と、独立した構文と処理系を持つ external DSL に大別されるが、そのいずれにしても近年の、自由度と機能が高いプログラミング言語により手軽に扱えるようになったことから広まっている。ドメイン固有モデリングの支持者によれば、ドメイン固有モデリングの発達と共にDSLという用語も広く知られるようになってきた、とされる。実際にはドメイン固有言語はモデリングとは特別な関係が何もあるわけでもなく(ドメイン固有モデリングのためのドメイン固有言語、といったものはあるが)、モデリング以外にもあらゆる分野のための言語がある。 例えば、ハードウェア記述言語のVerilog HDLやVHDL、表計算ソフトのマクロ、データベースへの問い合わせ言語(SQLなど)、文脈自由文法を記述するBNFや正規文法を記述する正規表現、図を作成する言語を構築する 、音響や音楽の合成用のCsound、グラフ(ネットワーク)描画システムGraphvizのDOT言語、依存関係解決用のmakeなどがある。.

新しい!!: メタプログラミングとドメイン固有言語 · 続きを見る »

クワイン (プログラミング)

ワイン(Quine)は、コンピュータプログラムの一種で、自身のソースコードと完全に同じ文字列を出力するプログラムである。娯楽として、プログラマが任意のプログラミング言語での最短クワインを書くことがある。プログラムを出力するプログラムだと見れば、クワインのプログラミングはメタプログラミングの一種である。 入力を受け付けるプログラムは、クワインとは見なされない。入力が許容されるなら、単にキーボードからソースコードを入力するだけで実現してしまうし、そのプログラムのソースファイルを入力とするなどしても実現できる。実行コードを含まないクワインも自明であるとして除外される。多くのプログラミング言語では、実行コードのないプログラムはコードを明らかに出力可能(何もないので、何も出力しないでもクワインと主張できる)である。そのような空のプログラムがIOCCCで「規則のはなはだしい悪用」賞を受賞したことがある。 クワインという名称は、自己参照の研究について業績を残した哲学者ウィラード・ヴァン・オーマン・クワイン(1908-2000)に由来し、命名したのはダグラス・ホフスタッターでそれほど古いことではないため、古い文献では自己複製・自己再生成などといった表現で呼ばれていることがある。(プログラミング言語ではない)言語的には次の一文で表されるクワインのパラドックスと、同様の構造を持っている。.

新しい!!: メタプログラミングとクワイン (プログラミング) · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: メタプログラミングとC++ · 続きを見る »

Common Lisp

Common Lisp(コモン・リスプ)は、コンピュータ・プログラミング言語 Lispの標準(の、ひとつ)であり、Lisp方言のひとつである。Common Lispの略称はCL(ごくまれにclispとも。なおCLISPという実装が実在するので混同回避のためあまり用いられない)。規格はANSIによる ANSI INCITS X3.226-1994 (R2004) 。仕様を指すこともあれば、実装を指すこともある。いくつかの、フリーソフトウェアの定義に合致したライセンスによりライセンスされている実装や、オープンソースの定義に合致したライセンスによりライセンスされている実装や、プロプライエタリなライセンスによりライセンスされている実装がある。 Lispの基本的な特徴の他、いくつかのプログラミングパラダイムのLispへの取り込みについて標準を提供しているという、マルチパラダイムプログラミング言語という面がある。.

新しい!!: メタプログラミングとCommon Lisp · 続きを見る »

部分評価

部分評価(ぶぶんひょうか、partial evaluation)は、計算理論における特殊化(特化)による最適化の技法の1つ。.

新しい!!: メタプログラミングと部分評価 · 続きを見る »

LISP

LISPは、プログラミング言語である。 によって記述される。-->前置記法などが特徴である。 1958年にはじめて設計されたLISPは、現在広範囲に使用されている高水準プログラミング言語の中でもFORTRANに次いで2番目に古い。ただし、FORTRANと同様に、現在のLISPは初期のものから非常に大きく変化している。 これまでに多数の方言が存在してきたが、今日最も広く知られるLISP方言は、Common LispとSchemeである。 元々、LISPは、アロンゾ・チャーチのラムダ計算表記法に影響を受け、コンピュータープログラムのための実用的かつ数学的な表記法として作られた。そして、すぐに人工知能研究に好まれるプログラミング言語になった。最初期のプログラミング言語として、LISPは計算機科学にて、木構造、ガベージコレクション、動的型付け、条件分岐、高階関数、再帰、セルフホスティング、コンパイラを含む多くのアイディアを切り開いた。 LISPの名前は、「list processor」に由来している。リストはLISPの主要なデータ構造であり、LISPソースコードはそれ自体がリストからできている。その結果、LISPプログラムはソースコードをデータとして操作することができ、プログラマーは、マクロ・システムで新しい構文やLISP埋め込みの新しいDSLを作成できる。 コードとデータの互換性は、LISPにそのすぐに認識できる構文を与える。すべてのプログラム・コードはS式または入れ子のリストとして書かれる。関数呼び出しまたは構文は先頭が関数または演算子の名前で、その続きが引数であるリストとして書かれる。具体的には、3つの引数を取る関数fは、(f arg1 arg2 arg3)として呼び出される。.

新しい!!: メタプログラミングとLISP · 続きを見る »

REBOL

REBOL は、データ交換言語であり、通信や分散処理に特化したプログラミング言語である。Relative Expression Based Object Language の略。設計者カール・サセンラスはこれをメッセージング言語と呼び、「REBOL の主なアイデアは、サーバ、クライアント、その間の通信やそれらのストレージで使える言語にするというものであった。REBOLの能力は、プログラミング言語の概念とメタデータ言語の概念を統合したことに由来する。REBOLの究極の目的は、インターネット上のあらゆる機器間で情報がどのように格納され、交換され、処理されるかを表す新たなアーキテクチャを提供することである。すなわち、人間と機械の間の情報の意味論的交換に使われることを意味する」と述べている。.

新しい!!: メタプログラミングとREBOL · 続きを見る »

S式

S式(エスしき、S-expression)とは、Lispで導入され、主にLispで用いられる、2分木ないしリスト構造の形式的な記述方式。SはSymbolに由来。 形式的には、S式は次のように定義される。.

新しい!!: メタプログラミングとS式 · 続きを見る »

Scheme

Scheme(スキーム)はコンピュータ・プログラミング言語 Lispの方言のひとつで、静的スコープなどが特徴である。仕様(2017年現在、改7版まで存在する)を指すこともあれば、実装を指すこともある。Schemeにより、Lisp方言に静的スコープが広められた。.

新しい!!: メタプログラミングとScheme · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »