Pascal
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事には複数の問題があります。改善やノートページでの議論にご協力ください。

出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2018年10月)


言葉を濁した曖昧な記述になっています。(2018年10月)
出典検索?: "Pascal" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL

.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、プログラミング言語について説明しています。その他の用法については「パスカル (曖昧さ回避)」をご覧ください。

Pascalパラダイム命令型プログラミング構造化プログラミング 
登場時期1970年 (54年前) (1970)
開発者ニクラウス・ヴィルト 
型付け強い静的型付け
主な処理系CDC 6000、Delphi、ICL 1900、Pascal-P、PDP-11PDP-10IBM System/370、HP Pascal、Free PascalGNU Pascal
方言DelphiTurbo PascalUCSD Pascal
影響を受けた言語ALGOL、ALGOL 60、ALGOL W、Simula 
影響を与えた言語AdaComponent PascalGoJava[1]、Modula / -2 / -3Oberon / -2Object Pascal、Oxygene、Seed7
拡張子pp、p、pas 
テンプレートを表示

プログラミング言語>>他のプログラミング言語

カテゴリ / テンプレート

Pascal(パスカル)は、1970年に発表されたプログラミング言語ニクラウス・ヴィルトにより構造化プログラミングとして設計・デザインされた。名称は、ブレーズ・パスカルにちなむ。

ALGOL、ALGOL Wをベースとし、簡素だがよく整った言語仕様(構文と意味)を持つ。プログラミング教育を意識しており、「判読性」を重視している反面、「最適化」を犠牲にしていると批判もされた。言語的には、自身のコンパイラを自身で書けるといった、言語処理系のブートストラップを備え、多くの#実用プログラム例を持っている。
言語仕様

教育を主目的としつつ、コンパイラが記述できる程度に強力な言語を目指し、当初、ヴィルト自身がPascalコンパイラをPascal自身で書いてみせ、その能力を示した(後のModula-2では、オペレーティングシステムをModula-2で書いてみせた)。@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}当時 FORTRAN 以外のコンパイラは生成される機械語が冗長で最適化が難しいと言われていたが、「言語仕様と最適化は独立した問題である」ことを証明するという目的もあったらしい。[要出典]

Pascalの単純さは、例えば構文がLL(1)であることなどによく現れている[注釈 1]。全ての名札、定数、型名、変数、サブルーチン[注釈 2]は使用に先立って定義しておく必要がある。ポインタを用いたリストのような型の定義や、交互にサブルーチンが呼び合うためには、例外的な構文を使わねばならない。ポインタに限っては、参照される型の定義の前に、その型を参照するような定義ができた。また、サブルーチンの定義部分だけを先に記述する方法で解決した。

その結果、パーサはLL(1)パーサであり、バックエンドはいわゆるワンパスコンパイラであった[注釈 3]。なお、他言語のコンパイラでは、2回以上走査を行うマルチパス形式のものが多かった。マルチパス形式では、最初の走査で識別子等の情報を中心に情報収集を行い、後続の走査でそれらの情報を参照しつつ実行ファイルを生成するため、コンパイル速度面では不利だが、最適化の点で有利となる。絶望的に遅いフロッピーディスクを作業ディスクとするユーザが多かった初期のパーソナルコンピュータでは、ワンパスコンパイラであることは大いに利点となった。なお、Turbo Pascalの高速性は、アセンブラで記述されていたことも一因であるが、Pascalの簡潔な仕様を活かしメモリを使える限り使ってファイルアクセスを最小限に留めることで実現された。

ALGOL由来の制御構造、サブルーチンの中に、そのサブルーチン内からのみ見えるローカルな変数、そのサブルーチン内からのみ呼び出せるサブルーチン等を定義できるといった、スコープの概念と再帰的な構文構造(ブロック構造と呼ぶ)、静的スコープによる参照の局所化機能を持つ。さらに、豊富なデータ型と、COBOL に見られた構造体を含む新しいデータ型を定義できるという特徴も持っている。レコード型とポインタを用いてリストといったデータ構造を自由に構築することができる(二分木#データの二分木への格納法の例参照)。なお由来は不明だが、最後にピリオドを付けるという、微妙にALGOLの構文と違う点がある。

Pascalの注目すべきは、変数の宣言を「変数名、型名」の順序とした記法であろう。ALGOLを源流とするC言語などでは、変数などの定義でint xといったような「型名 変数名」という順序で記述される。一方、Pascalでは「var x : int」というような、「変数名 型名」の順序で記述する。この記法は数学などと類似の記法であるため、ヴィルトの完全なオリジナルだとは言いにくいが、最初に述べたALGOL WではALGOLと同様であるので、プログラミング言語への導入としてはオリジナリティが高いものと考えられる。この点について、JavaなどはC言語の構文の小改良にとどまっているが、LimboGo言語などC言語を使い尽した設計者らによる新言語が、Pascalに似た記法としていることは特筆事項であろう。なお、ALGOL系ではAdaも変数などの型の記述を、これに類似した構文としている。ScalaKotlinといったJava VM環境で動作する後発言語も、型を後置する記法を採用している。この表記法は型推論の普及に伴って良い方向に働いた。型名を前置する言語では、「=」の左辺において、型名があれば変数の宣言と初期化、変数名だけなら代入として区別できるが、型推論では型名が省略されてしまうため区別できなくなる。その結果、C++Dでは「auto」などの接頭辞が必要で、初学者にとってはautoのような型があるかのようにみえてしまう。型名を後置する言語ではそのような問題はない。

コンパイル時にできるだけ多くの不注意による誤りを発見できる、強く型付けされた(strongly typed)言語であり、またハードウェアを隠蔽する思想が徹底している。たとえば集合型、ポインタ型はそれぞれビットマップアドレスを抽象化したものと考えられる。また Pascal は教育用ということもあり、最初の仕様では分割コンパイルや外部ライブラリの利用が考慮されていなかった。これは大規模なプログラムを記述したり、ハードウェアを直接操作するプログラムを記述するには不便な仕様であり、入出力の扱いなど処理系に依存しなければならない部分を言語の中に抱える結果に繋がった。たとえばファイル型変数に特定のファイルを関連付ける標準的な方法はない。ヴィルト自身は Modula-2 でこれらの要請に応える一方で、Pascalでは実装のベンダがそれぞれ独自の拡張を施して、分割コンパイルやハードウェアの直接操作を可能としたが、この部分の互換性は乏しい。

配列についても問題点が発覚した。Pascalでは静的配列のみをサポートする。これはコンパイル時にサイズが決定され、実行中はサイズを変更できない。しかし実際のプログラムは実行するまでサイズが決められないことが多く、後発の言語は実行中にサイズを変更できる動的配列をサポートしている。
実用プログラム例

著名なものに、TeX[注釈 4]、初期のMacintoshオペレーティングシステムおよびアプリケーションなどがある。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:49 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef