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

糖衣構文

索引 糖衣構文

糖衣構文(とういこうぶん、)は、プログラミング言語において、読み書きのしやすさのために導入される書き方であり、複雑でわかりにくい書き方と全く同じ意味になるものを、よりシンプルでわかりやすい書き方で書くことができるもののことである。構文上の書換えとして定義できるものであるとも言える。 の直訳に近い構文糖(こうぶんとう)とも言い、糖衣構文あるいは構文糖衣とするのは少々意訳的だがよく言われている。.

21 関係: 型付きラムダ計算中置記法ポインタ (プログラミング)モナド (プログラミング)ラリー・ウォールプログラミング言語プログラム意味論命令型プログラミングアラン・パリスジャーゴンファイルC++C言語ErlangHaskellIOCCCJavaML (プログラミング言語)Perl構造体構文木手続き型プログラミング

型付きラムダ計算

型付きラムダ計算(typed lambda calculus)とは、無名の関数の抽象表現にラムダ (\lambda) というシンボルを用いる型付き形式手法である。型付きラムダ計算は基礎的なプログラミング言語でもあり、MLやHaskellなどの型付き関数型言語の基盤であり、さらには型付き命令型プログラミング言語の間接的な基盤とも言える。また、カリー・ハワード同型対応によって数理論理学と証明論とも密接に関連しており、圏論のクラスの内部言語と見なすこともできる。例えば単純な型付きラムダ計算はデカルト閉圏 (CCC) の言語である。 ある観点から見れば、型付きラムダ計算は型を持たないラムダ計算を改良したものと言えるが、別の観点からは、より根本的な理論と見ることもでき、型を持たないラムダ計算の方が型が1つしかない特殊ケースと見ることができる。 様々な型付きラムダ計算がこれまで研究されてきた。単純型付きラムダ計算はいくつかの基本型(または型変数)と関数型 \sigma\to\tau から成る。System T はこれを拡張し、自然数型と高階原始再帰を加えたものである。この系ではペアノ算術において全ての再帰する可能性のある関数が定義可能である。System F は、全ての型に対して全称量化を施すことでポリモーフィズムを実現している。これを論理学的に見れば、二階述語論理に属する全ての関数を記述できることを意味する。依存型のあるラムダ計算は直観主義的型理論の基盤であり、calculus of constructions や logical framework (LF) の基盤である。Berardi の成果に基づき Barendregt が提案したラムダ・キューブは、純粋な型付きラムダ計算(単純型付きラムダ計算、System F、LF、calculus of constructions など)の関係を体系化したものである。 一部の型付きラムダ計算には「派生型」の記法が導入されている。すなわち、A が B の派生型であるとき、型が A である全ての項は型が B でもある。派生型のある型付きラムダ計算は単に普通の型付きラムダ計算に結合型 (conjunctive type) と F^\leq (F-sub) を加えたものである。 以上の体系はすべて(型のないラムダ計算以外)、「強く正規化 (strongly normalizing)」する。すなわち、全ての計算は停止する。結果としてそれらは論理として一貫しており、uninhabited types がある。しかし、強く正規化しない型付きラムダ計算も存在する。全ての型の型 (Type: Type) を持つ依存型付きラムダ計算は Girard's paradox により正規化しない。この系は最も単純な純粋型システムでもあり、ラムダ・キューブを一般化した形式手法である。明示的な再帰コンビネータを持つ系(Gordon Plotkin の PCF など)も正規化しないが、論理体系として解釈されることを意図していない。実際、PCF (Programming language for Computable Functions) は型付き関数型プログラミング言語であり、型はプログラムが正しく動作することを保証する目的で使われているが、必ずしも停止を保証しない。 型付きラムダ計算はプログラミング言語の新たな型システムの設計で重要な役割を演じている。型付け可能性は一般にプログラミングの好ましい属性を捉え、例えば、プログラムがメモリアクセス違反を起こさないようにするといったことが考えられる。 プログラミングにおいて、強い型付けのプログラミング言語のルーチン(関数、プロシージャ、メソッド)は、型付きラムダ計算と密接に関連している。Eiffelには "inline agent" の記法があり、型付きラムダ式を直接定義して操作できる。例えば、agent (p: PERSON): STRING do Result.

新しい!!: 糖衣構文と型付きラムダ計算 · 続きを見る »

中置記法

中置記法(ちゅうちきほう、infix notation)とは、数式やプログラムを記述する方法(記法)の一種。演算子を操作対象の中間に記述することから、このように呼ばれる。 その他の記法として、演算子を操作対象の前(左)に記述する前置記法(ポーランド記法)、演算子を操作対象の後(右)に記述する後置記法(逆ポーランド記法)がある。 四則演算など初歩的な算術においては、もっぱら中置記法が多用されている。.

新しい!!: 糖衣構文と中置記法 · 続きを見る »

ポインタ (プログラミング)

ポインタ (pointer) とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照する(指し示す)ものである。有名な例としては Pascal のポインタが挙げられる。 なお、C++では、さらに独立した「参照」という機能がある。.

新しい!!: 糖衣構文とポインタ (プログラミング) · 続きを見る »

モナド (プログラミング)

関数型プログラミングにおいて、モナド(monad)は計算を表現する構造であり、計算ステップの列からなる。つまり、型がモナド構造をもつというのは、命令を繋げるやり方、言い換えるとその型をもつ関数をネストさせる規則が定まっていることをいう。これはプログラマがパイプラインを作ることを可能にする。パイプラインでは入力データを1ステップずつ処理するが、モナドは各アクションに追加の処理規則を上乗せすることができるO'Sullivan, Bryan; Goerzen, John; Stewart, Don.

新しい!!: 糖衣構文とモナド (プログラミング) · 続きを見る »

ラリー・ウォール

ラリー・ウォール(Larry Wall, 1954年9月27日 - )は、プログラマ、言語学者、文筆家であり、1987年にプログラミング言語Perlを開発したことによって知られている。また、プログラマの三大美徳を唱え始めたのもラリー・ウォールである。 1976年にシアトル・パシフィック大学を卒業し、修士号を得ている。Usenet用のソフト、rnを作成し、UNIXで最も広く使われているテキスト差分適用プログラム、patchを作り出した。IOCCCで2度、優勝を収めている。1998年には、フリーソフトウェアへの貢献により、第1回フリーソフトウェア財団賞を受賞している。 言語学を学んでおり、その経験がPerlの作成とそれに関連した一連の著作に役立っている。表紙にラクダの絵が描かれていることで有名であり、しばしば「ラクダ本」と呼ばれる書『プログラミング Perl』の共同著者であり、この本はPerlプログラマーの聖典になっている。また、『Perl クックブック』の編集にも関わっている。コンピュータ関連の出版物を数多く発行しているオライリー・メディア社がウォールの著作物を出版している。 現在もPerlの発展に関わっており、このプログラミング言語を開発したことから、優しい終身の独裁者に任命されている。.

新しい!!: 糖衣構文とラリー・ウォール · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: 糖衣構文とプログラミング言語 · 続きを見る »

プログラム意味論

プログラム意味論(program semantics)とは、計算機科学(特に理論計算機科学と分類されることもある)の一分野で、プログラミング言語の意味と計算モデルに関する分野である。形式的なものは、プログラミング言語の形式意味論とも呼ばれる。標準規格等では形式的でなく意味論を与えているものも多い。.

新しい!!: 糖衣構文とプログラム意味論 · 続きを見る »

命令型プログラミング

命令型プログラミング(めいれいがたプログラミング、Imperative Programming)とは、計算機科学において宣言型プログラミングの対となる概念であり、計算をプログラム状態を変化させる文の列で記述するプログラミングパラダイムの一種。自然言語の命令法がなすべき行動への指令を表現するのとよく似た方法で、命令型プログラムはコンピュータが実行すべき命令列で構成される。命令型プログラミングに従ったプログラミング言語を命令型(プログラミング)言語と呼ぶ。一般に命令型プログラミングは、手続き型プログラミングと同義として扱われる。 命令型プログラミングは、宣言型プログラミング(関数型や論理型言語など)と対照的である。Haskellなどの関数型プログラミング言語では、プログラムは文の並びではないし、命令型言語が持つような広域状態を持たない。Prologのような論理プログラミング言語では、命令型言語のように計算の「方法」をプログラムとして記述するのではなく、計算すべき「事物」を定義する。.

新しい!!: 糖衣構文と命令型プログラミング · 続きを見る »

アラン・パリス

アラン・ジェイ・パリス(Alan Jay Perlis、1922年4月1日 - 1990年2月7日)は、アメリカ合衆国の計算機科学者。プログラミング言語についての先駆的業績で知られる。1966年、第1回のチューリング賞を受賞した。.

新しい!!: 糖衣構文とアラン・パリス · 続きを見る »

ジャーゴンファイル

ャーゴンファイル(jargon file)とはハッカーの俗語をまとめた用語集のことである。元々、ジャーゴンファイルはマサチューセッツ工科大学人工知能研究所やスタンフォード大学人工知能研究所、それにBBNテクノロジーズ社やカーネギーメロン大学、ウースター工科大学を含めた古いアーパネットの人工知能、LISP、PDP-10コミュニティの技術文化から生まれたハッカーの俗語をまとめたものであった。.

新しい!!: 糖衣構文とジャーゴンファイル · 続きを見る »

C++

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

新しい!!: 糖衣構文とC++ · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: 糖衣構文とC言語 · 続きを見る »

Erlang

Erlang(アーラン)は、コンピュータにおいて汎用的な用途に使うことができる並行処理指向のプログラミング言語および実行環境。.

新しい!!: 糖衣構文とErlang · 続きを見る »

Haskell

Haskell(ハスケル)は非正格な評価を特徴とする純粋関数型プログラミング言語である。名称は数学者であり論理学者であるハスケル・カリーに由来する。.

新しい!!: 糖衣構文とHaskell · 続きを見る »

IOCCC

The International Obfuscated C Code Contest(IOCCC, 国際難読化Cコードコンテスト)は、故意に難解なC言語のプログラムを書き、その読みにくさと複雑さを競うというハッカーの奇祭(プログラミングコンテスト)である。.

新しい!!: 糖衣構文とIOCCC · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: 糖衣構文とJava · 続きを見る »

ML (プログラミング言語)

ML(えむえる、Meta-Language)は、関数型言語のひとつである。現代風の関数型言語としては歴史が古いほうで、型推論機能などを持つが、デフォルトの評価戦略は遅延評価ではなく先行評価で、書き換えが可能なレコード型を持つなど、いわゆる「純粋関数型」でない特徴や機能を持つ。.

新しい!!: 糖衣構文とML (プログラミング言語) · 続きを見る »

Perl

Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられている。 言語処理系としてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIXやWindowsなど多くのプラットフォーム上で動作する。.

新しい!!: 糖衣構文とPerl · 続きを見る »

構造体

構造体(こうぞうたい、structure)はプログラミング言語におけるデータ型の一つで、1つもしくは複数の値をまとめて格納できる型。それぞれのメンバ(フィールド)は型が異なっていてもよい点が配列と異なる。 C/C++やC#などでstructとしてサポートされているほか、Visual Basicのユーザ定義型や、PascalやAdaのrecord型も構造体に相当する。 クラスベースのオブジェクト指向言語では、抽象データ型としてのクラスが構造体の役割をも内包する。Cの文法を継承した言語ではstructキーワードを含むこともあるが、言語によってその役割は異なる。 例えば、C++ではアクセシビリティの初期値がpublicであることを除いては、classと同等の機能を持つことができる。 また、C#では値型として扱われる軽量なオブジェクト型を定義するためにstructキーワードを使用し、制限されたclassとして振る舞う。 同じくCの文法を継承したJavaでは、structキーワードは存在しない。 オブジェクト指向言語でないCなどでオブジェクト指向プログラミングを模倣するために構造体を使うこともある。標準ライブラリのFILE型がその典型的な例である。.

新しい!!: 糖衣構文と構造体 · 続きを見る »

構文木

構文木(こうぶんぎ)とは、構文解析の経過や結果(またはそれら両方)を木構造で表したもの。.

新しい!!: 糖衣構文と構文木 · 続きを見る »

手続き型プログラミング

手続き型プログラミング(てつづきがたプログラミング、Procedural programming)は、「手続き呼び出し」の概念に基づくプログラミングパラダイムの一種。命令型プログラミングと同義に扱われることが多い。「手続き」はプロシージャ、ルーチン、サブルーチン、メソッド、関数(数学の関数とは異なる。)など様々な呼称があるが、実行すべき一連の計算ステップを持つものと定義できる。手続きはプログラム実行中の任意の時点で呼び出すことができ、他の手続きからの呼び出しも、自分自身からの呼び出し(再帰呼び出し)も含まれる。 手続き型プログラミングは単純な逐次型プログラミングや非構造化プログラミングよりも多くの場合よりよい選択である。非構造化プログラミングでは複雑なコードを組むことは困難であり、保守性が悪い。手続き型プログラミングには、以下のような利点がある.

新しい!!: 糖衣構文と手続き型プログラミング · 続きを見る »

ここにリダイレクトされます:

シンタックスシュガー構文糖衣

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