ディックの審査サイト、 ディックの審査比較サイトのお得な情報、 ディックの主婦情報、 ディックの低金利情報など、 ディックに関することの申込み情報サイト。
東都  伊太郎  韓国  トーキー  戦後  美可  プロダクション  中川  生活  美紀子  政男  招待  小学校  興業  再開  仁美  レコーディング  珍しい  果たし  12月 

言語とは?/ ディック

[ 467] 言語 - Wikipedia
[引用サイト]  http://ja.wikipedia.org/wiki/%E8%A8%80%E8%AA%9E

これを解消するために独自研究は載せないを確認した上で、ある情報の根拠だけではなく解釈、評価、分析、総合の根拠となる出典を示してください(テンプレート)。
言語(げんご)とは、コミュニケーションのための記号の体系。狭義には人間の音声による言葉を指すが、広義には身振りなど音声以外の要素も含む。また、動物間のコミュニケーションや、コンピュータに指示するための記号体系を指す場合もある。
日本語や英語のように自然発生的に生まれた言語を自然言語と呼び、これに対して人為的に創作された言語を人工言語と呼ぶ。後者には、もっぱら人間同士によるやりとりを目的としたエスペラント、コンピュータの操作を目的としたプログラミング言語、それから人間にもコンピュータにも適したロジバンといったものがある。自然言語は、母語とする人々の存在を失うと使用されなくなり死語と呼ばれる。
狭義には、人間のコミュニケーション、相互作用を統べる規則の内、声にまつわる部分、あるいはその声の代替としての文字表記などにまつわる部分を指す。手話、トーキングドラムなどの例においても、おおよそ声によるコミュニケーションと対応している。
かつて日本の手話言語学者は手話は音声語とは形態において異なる故に,音声言語学とはまったく異なる言語学用語,文法用語によって研究されるべきであるという立場をとっていた。しかし,近年では手話といえどもれっきとした言語である故に音声語と同様の言語学的手法,用語によって説明できるはずであるという立場が一般的となっている。近年では言語学関連の学会等で音声言語と共に手話言語学者の研究報告がプログラムにのぼることも珍しくない。
より広義には視覚言語、ボディー・ランゲージなど声によるコミュニケーションに還元できない場合にも、コミュニケーションを統べる規則があれば、それを言語と呼ぶことがある。
また、動物の間の相互作用にも言語の存在を認める場合がある。例えばミツバチが蜜源を仲間に伝えるためのダンスを「ミツバチの言語」と呼ぶこともある。但し、人間の多くの言語と比べ、動物の相互作用には、往々にして恣意的な規則(「リンゴ」という音がリンゴという果物の種類を指すという約束事など)が乏しく、生息環境や生与の能力に根ざしたやや必然性の高い表現手段が関与している場合が多い。(「歯をむき出すこと」が「相手に対する敵意」の表現となる、など)これは規則ではなく、単なる規則性である点でやや趣を異にする。
同じく、広義の言語の中に含まれることが多いのがコンピューターのプログラミングに際して参照される一連の規則(プログラミング言語)である。プログラムの機能は、コミュニケーションの一種であると考えることは不可能ではないとしても、典型的な人間の会話において言語が果たす機能と明らかに異なっている。また、規則が特定少数の人間によって決定されている点で狭義の言語と異なる。このため、プログラミング言語のように創作された言語を人工言語と呼び、日本語のような自然言語と区別する場合もある。
厳密には、言語の定義には多くの困難が伴う。コミュニケーションの「規則」がどこかに明記されており人々がそれを参照しながらコミュニケーションが行われるわけではなく、実際人々が単一の規則に従っていないと考えさせる材料もある。方言のような地理的なバリエーション、新語の普及のような歴史的変化、言い間違いや言いかけに終わる発言など、文法として通常考えられる規則に反する発話などが、その例として考えられる。また、「声」を基礎とし、文字をその代替とする発想に対する批判を投げかける立場(『声と現象』)もある(言語哲学)。
自然言語は母語として使用する人々の存在を前提として存在しているため、民族の滅亡や他言語による吸収によって使用されなくなることがある。このような言語は死語と呼ばれ、死語が再び母語として使用される例はほとんどない。
言語がいつどのように生まれたのか、生まれたのが地球上の一ヶ所か複数ヶ所かは、判っていない。しかし以下に唱えられている説は一見奇抜に見えるが、現在でも支持されている。
生物には海等に挟まれ「生きた化石」と呼ばれる古い仕組みの動物が生き残ったり、一見似ている2種類が全然別の種類から進化した りというケースがあるが、言語にも同じ事が適用される。進化速度は一定したものでなく、侵略・交易・移動等他民族との接触が多い場合は言語も大きく変化し、代表例として英語、フランス語、ルーマニア語、アルバニア語、アルメニア語等がある。逆に接触が少ないと古風な形が残り、代表例としてはドイツ語、アイスランド語、ギリシャ語、スラヴ語派、バルト語派(特にリトアニア語)、サンスクリット語等。特にアイスランド語は基本文法が1000年前と殆ど変っていない。
現在世界に存在する言語の数は、千数百とも数千とも言われるが、数えることは、ほぼ不可能である。これは、未発見の言語や、消滅しつつある言語があるためだけではなく、言語を数えることに原理的な困難があるためである。似ているが同じではない「言語」が隣り合って存在しているとき、それは一つの言語なのか、別の言語なのか。この問いは、「言語」なのか「方言」なのか、と言い換えてもよい。さらに、ある人間集団を「言語の話者」とするか「方言の話者」とするかの問題でもある。
同じ言語かどうかを判定する基準として、相互理解性を提唱する考えがある。話者が相手の言うことを理解できる場合には、同一言語、理解できない場合には別言語とする。相互理解性は言語間の距離を伝える重要な情報であるが、これによって一つの言語の範囲を確定しようとすると、技術的難しさにとどまらない困難に直面する。一つは、Aの言うことをBが聞き取れても、Bの言うことをAが聞き取れないような言語差があることである。もう一つは、同系列の言語が地理的な広がりの中で徐々に変化している場合(言語連続性または方言連続性という)に、どこで、いくつに分割すべきなのか、あるいはまったく分割すべきでないのかを決められないことである。
こうした困難に際しても、単一の基準を決めて分類していくことは、理屈の上では可能である。しかしあえて単一基準を押し通す言語学者は現実にはいない。ある集団を「言語話者」とするか「方言話者」とするかには、政治的・文化的アイデンティティの問題が深く関係している。どのような基準を設けようと、ある地域で多くの賛成を得られる分類基準は、別の地域で強い反発を受けることになる。そうした反発は誤りだと言うための論拠を言語学はもっていないので、結局は慣習に従って、地域ごとに異なる基準を用いて分類することになる。
言語と方言の区別について、現在なされる説明は二つである。第一は、言語と方言の区別にはなんら言語学的意味はないとする。第二のものはまず、どの方言もそれぞれ言語だとする。その上で、ある標準語に対して非標準語の関係にある同系言語を、方言とする。標準語の選定は政治によるから、これもまた「言語と方言の区別に言語学的意味はない」とする点で、第一と同じである。この定義では、言語を秤にかけて判定しているのではなく、人々がその言語をどう思っているかを秤にかけているのである。
括弧内あるいは付記はその採用国を示している。ひとつの国が複数の公用語をもつ場合も多い。また、上で述べられているように、言語と方言の違いは区別することが難しく、発音などを除いて文字や語彙がほとんど同一で方言関係にあると言えるような言語が別の言語名で呼称されていることがある。ここではそのような言語を一つの言語として計上する。
(アイルランド(第2公用語)、アメリカ、アンティグア・バーブーダ、イギリス、インド(準公用語)、オーストラリア、ウガンダ、ガーナ、ガイアナ、カナダ、カメルーン、ガンビア、キリバス、グレナダ、ケニア(準公用語)、サモア、ザンビア、シエラレオネ、シンガポール、ジャマイカ、ジンバブエ、スワジランド、セーシェル、セントクリストファー・ネービス、セントビンセント・グレナディーン、セントルシア、ソロモン諸島、タンザニア、ツバル、ドミニカ国、トリニダード・トバゴ、トンガ、ナイジェリア、ナミビア、ニュージーランド、バヌアツ、バハマ、パプアニューギニア、パラオ、バルバドス、フィジー、フィリピン、ベリーズ、ボツワナ、マーシャル諸島、マラウイ、マルタ、ミクロネシア、南アフリカ、モーリシャス、リベリア、レソト)
(アルゼンチン、ウルグアイ、エクアドル、エルサルバドル、キューバ、グアテマラ、コスタリカ、コロンビア、スペイン、赤道ギニア、チリ、ドミニカ共和国、ニカラグア、パナマ、パラグアイ、ベネズエラ、ペルー、ボリビア、ホンジュラス、メキシコ)
セルビア・クロアチア語(セルビア語、クロアチア語、ボスニア語)(セルビア、モンテネグロ、クロアチア、ボスニア・ヘルツェゴビナ)
(カナダ、ガボン、カメルーン、ギニア、コートジボワール、コモロ、コンゴ共和国、コンゴ民主共和国、ジブチ、スイス、セーシェル、赤道ギニア、セネガル、チャド、中央アフリカ、トーゴ、ニジェール、ハイチ、バヌアツ、フランス、ブルキナファソ、ブルンジ、ベナン、ベルギー、マダガスカル(準公用語)、マリ、モーリタニア、モナコ、ルクセンブルク、ルワンダ)
ポルトガル語(アンゴラ、カーボベルデ、ギニアビサウ、東ティモール、ブラジル、ポルトガル、モザンビーク)
^ インドネシアでのみインドネシア語と呼ばれている。マレー語とは表記も発音もほとんど同じ言語である。
^ 韓国語は韓国での、朝鮮語は北朝鮮での名称だが、いずれも統一民族の言語を表す。但し南北の言語には若干の違いがあり、韓国の言語を特に韓国語、北朝鮮の言語を特に朝鮮語と呼ぶ場合も稀にある。→朝鮮語の呼称問題を参照のこと。
^ イランではペルシャ語、アフガニスタンではダリー語。発音や語彙に若干の違いはあるが表記は同じ言語。国家の違いから別の言語名で呼ばれている。
注) ベルギーの公用語とされるフラマン語はオランダ語、ワロン語はフランス語とほぼ同じ言語であるため、上の一覧では同一言語として扱っている。
公用語として使用する話者数が多いことが条件だが、ただ単に多くても重要言語とは言えない。 たとえば、ヒンディー語・中国語は公用人口が多くても、世界の一部の国で話されているに過ぎない。 英語は普段話されている人口はあまり多くはないが、公用語としては最も多くの国で話されているため国際的には最重要言語となっている。ちなみに、国連の公用語は、英語、ロシア語、中国語、フランス語、アラビア語、スペイン語の6つであるが、これは第二次世界大戦の戦勝国の言語に、国際的に重要なアラビア語とスペイン語を加えたものである。
言語機能は基本的にヒトに固有のものであるため、言語の研究には少数の例外を除き動物モデルを作りにくい。そのため、脳梗塞などで脳の局所が破壊された症例での研究(損傷脳研究)や、被験者に2つの単語を呈示しその干渉効果を研究するなどの心理学的研究が主になされてきたが、1980年代後半より脳機能イメージング研究が手法に加わり、被験者がさまざまな言語課題を行っているときの脳活動を視覚化できるようになった。
言語に関する脳の領域は、古典的なブローカ領域、ウェルニッケ領域のほか、シルヴィウス裂を囲む広い範囲(縁上回、角回、一次・二次聴覚野、一次運動野、体性感覚野、左前頭前野、左下側頭回)にわたっている。脳梗塞などで各部が損傷されると、それぞれ違ったタイプの失語が出現する。例えば左前頭前野付近の損傷で生じるブローカ失語は運動失語であり、自発語は非流暢性となり復唱、書字も障害される。左側頭葉付近の障害で生じるウェルニッケ失語は感覚失語であり自発語は流暢であるが、言語理解や復唱が障害され、文字による言語理解も不良である。
ほとんどの右利きの人では、単語、文法、語彙などの主要な言語機能は左半球優位である。しかし声の抑揚(プロソディ)の把握、比喩の理解については右半球優位であると言われている。
文字の認識には左紡錘状回、中・下後頭回が関与するが、漢字(表意文字)とひらがな(表音文字)で活動する部位が異なると言われている。
ヒトの発達における言語機能の獲得も多方面から研究されている。個人の言語能力は、全体的な知的能力とは乖離することがあり(例として読字障害、ウィリアムズ症候群、自閉症など)、個体発生やヒトの進化における言語の起源などにヒントを与えている。また、ヒトは環境の中で聴取する音声から自力で文法などの規則を見出し学習する機能を生得的に(=遺伝的に)備えているため、特に教わらなくても言語を学習できる。
最近の近赤外線分光法を用いた研究において、生後2〜5日の新生児が逆再生よりも順再生の声を聞いたほうが、あるいは外国語より母国語を聞いたときの方が聴覚皮質の血流増加が大きかったと報告されており(Penaら,PNAS,2003)、出産前から母体内で言語を聴いていることが示唆される。

 

[ 468] プログラミング言語 - Wikipedia
[引用サイト]  http://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E

プログラミング言語(プログラミングげんご)はコンピュータに対する一連の動作の指示を記述するための人工言語の総称である[1]。この一連の指示をプログラムと呼び、それを記述することをプログラミングと呼ぶ。自然言語と同様、統語論(構文)規則と意味論規則で定義される。通常、それらを示した文書で仕様が示されるが、公式の実装だけで定義される言語もある。
プログラミング言語は、情報を組織し処理するタスクについての理解を容易にし、アルゴリズムを性格に表現する。場合によっては、あらゆるアルゴリズムを記述できる言語だけを「プログラミング言語」と定義することもある[2]。そこまでの機能のない人工言語を「コンピュータ言語」と呼ぶこともある。
プログラミング言語はプログラムを書くのに使われる言語であり、それによってコンピュータは何らかの計算[4]やアルゴリズムを実行し、場合によってはプリンターやロボット[5]などの外部装置を制御する。
自然言語は人間同士の対話に使われるのに対して、プログラミング言語は人間が機械に指示を与えるのにも使われる。場合によっては、装置が別の装置を制御するのにも使われる。例えば、PostScriptプログラムは別のプログラムが生成し、プリンターやディスプレイの制御に使われる。
計算理論では、言語はその計算表現能力で分類される(チョムスキー階層参照)。チューリング完全な言語ならば、同じアルゴリズム群を表現可能である。SQLはチューリング完全ではない言語の例であるが、それでもプログラミング言語と呼ばれることがある[6]。
計算されない言語(HTMLのようなマークアップ言語やBNFのような形式文法など)はプログラミング言語とは看做されない。プログラミング言語は、計算されないホスト言語に埋め込まれる場合がある。
プログラミング言語の存在意義は、人間が直接扱うには難しい機械語に代わって、より人間が扱いやすい形を提供することにある。
コンピュータが直接理解し実行することのできる言葉は、そのコンピュータの種類に固有の機械語だけである。したがって、最終的には機械語を使ってコンピュータが行うべき作業・計算を指示しなければならない。
しかし、機械語は複雑な決まりに従って並べられた数字の列であるので、人間にとっては理解しづらい。ごく簡単なプログラムでさえ、その機械語形式を扱うにはそれなりの習熟が必要である。まして、現在様々な業務で実用されているような複雑化したプログラムを機械語で書くことのできる人間は皆無である。
そこで、より人間に分かりやすい言葉で書いた指示を自動的に機械語に翻訳するプログラムをあらかじめ書いておく。そして自動翻訳で生成された機械語をコンピュータに実行させることにする。翻訳するプログラムは種類に応じてアセンブラ、コンパイラ、インタプリタなどと呼ばれる。必要な翻訳プログラムさえ書いておけば、人間は自分が最も扱いやすい言葉でコンピュータに指示することができる。
プログラミングの第一の目的は、コンピュータに命令を与えることである。そういった意味で、プログラミング言語は人間が行う他の表現に比較して、正確性と完全性を求められる度合いが非常に高いという特徴がある。自然言語で人間同士が対話する場合、曖昧であっても間違う可能性は低く、意図する所は伝えられる。しかし、コンピュータ相手では指示したとおりにしか動作せず、プログラマがコードに込めた意図を理解させることはできない。言語仕様とプログラムとその入力データの組合せで、そのプログラムを実行したときの結果(外部から観測される振る舞い)が完全に指定できなければならない。
多くの言語は、新たなニーズを満たすべく設計され、他の言語と組み合わされ、最終的に使われなくなる。あらゆる用途に使える万能言語を設計しようという試みはいくつかあったが、そういう意味で成功した言語は存在しない [7]。多様な言語が生まれる背景には、言語が使われる状況の多様性がある。
システムにもマイクロコントローラからスーパーコンピュータまで様々あり、その中で性能、サイズ、単純さのバランスを保つ必要がある。
プログラミング言語開発における共通の傾向として、より高いレベルの抽象化によって、より高い問題解決能力を得ようとしている。初期のプログラミング言語は、コンピュータのハードウェアのレベルと極めて近かった。新たなプログラミング言語が開発される度に機能が追加され、プログラマはハードウェアの命令からより遠い形でアイデアを表現できるようになっていった。プログラミングをハードウェアから分離することで、プログラマの生産性は向上する[8]。
プログラミングにおけるプログラミング言語の必要性を排除する方法として、自然言語処理が提案されてきたという面もある。しかし、その方向性は実用化には達しておらず、議論が続いている。エドガー・ダイクストラは形式言語の使用によって意味のない命令を防ぐという立場で、自然言語によるプログラミングを批判していた[9]。アラン・パリスも同様の立場であった[10]。
プログラミング言語は、人間がコンピュータに命令を指示するために作られており、コンピュータが曖昧さなく解析できるように設計されている。多くの場合構文上の間違いは許されず、人間はプログラミング言語の文法に厳密にしたがった文を入力しなければならない。
これに対して、一般に自然言語の文法規則はプログラミング言語にくらべてはるかに複雑であり、例外も多い。ただしこれは規則が一般にいいかげんであったり、曖昧であるということではない。一般に自然言語の規則は奥が深く、驚くほどの合理性に裏打ちされていることがある。
また、自然言語の意味は、その文脈(コンテキスト)によって定まる部分も多い。これに対して、プログラミング言語は、コンピュータによって扱いやすいように、文脈によって意味が変わることができるだけないように設計されている。
自然言語は、誤用や流行などにより長い時間をかけ、たくさんの人間の利用により、意図せざる形で変化していく。しかし、プログラミング言語の規則は、言語設計者の意図と作業によってのみ、変更される。
人間がふだん使っている日本語などの自然言語を使ってコンピュータに指示することができるのが理想ではある。しかし、自然言語はあまりにも複雑で曖昧で変則的なので、それを機械語に翻訳できるようなプログラムを作成することはとても難しい。そのような研究も進められているが、未だに汎用で実用になるプログラムは作成されたことがない。
そこで、自然言語よりも制限が強く、単純で厳密で規則的な人工言語を作って代用する。これがプログラミング言語である。プログラミング言語は自然言語よりもいくらか人間には扱いづらいが、機械語よりは遥かに親しみやすく、人間の指示の手間を軽減している。
自然言語と異なりほとんどのプログラミング言語は厳密に定義されており、規則に従わないプログラムは実行されない。大部分のプログラミング言語の文法は文脈自由文法によって定義されている。
プログラミング言語の見た目は、その構文(統語論)で決定される。多くのプログラミング言語は文字だけで構成され、単語や数や区切り記号の並びであり、自然言語に似ている。一方で、グラフィカルなプログラミング言語もあり、プログラムをグラフィカルなシンボル間の関係で表す。
言語の構文は、構文的に正しいプログラムを形成するシンボルの組合せを規定するものである。シンボルの組合せの意味は意味論で与えられる。多くの言語は文字で構成されるため、以下ではそれについて論じる。
プログラミング言語の構文は一般に、字句解析用の正規表現と構文解析用のバッカス・ナウア記法(文脈自由文法)で定義される。下記はLISPに関する単純な構文である。
構文上正しいプログラムが全て意味論的にも正しいとは限らない。つまり、プログラミング言語の文法は、構文と意味論の両方がそろって成立する。また、構文的にも意味論的にも正しいプログラムだとしても、それを書いた人の意図を正しく反映していない場合もある。
プログラミング言語の文法はチョムスキー階層内で分類可能である。多くの言語の構文は文脈自由文法を使って記述される[11]。
型システムは、プログラミング言語において値や式を「型」に分類し、その型をどう扱うかを定義するものである。これには一般に、その言語で構成可能なデータ構造の定義が含まれる。数理論理学を使った型システムの設計および研究を型理論という。
型のある言語の特殊例として、単一型言語がある。REXXやSGMLといったスクリプト言語やマークアップ言語は、単一のデータ型しか扱わない(多くの場合、そのときのデータ型は文字列型である)。
対照的にアセンブリ言語などの型のない言語は、任意のデータに任意の操作を実行可能であり、データは単にある長さのビット列として扱われる[12]。高級言語で型を持たない言語としては、BCPLやForth系言語の一部などがある。
型理論的に厳密な型適用をしている言語は少なく、多くの言語はそれなりの型システムを採用している[12]。多くの実用的な言語には、型システムを迂回または打倒するような手段が用意されている。
静的型付けでは、全ての式の型はそのプログラムを実行する前(一般にコンパイル時)に決定される。例えば、1 とか (2+2) という式は整数型であり、文字列を期待している関数には渡せず、日付(型)を格納するよう定義された変数には代入できない[12]。
静的型付け言語は、型を明記する場合と型推論を行う場合がある。前者ではプログラマは適切な位置に型を明記しなければならない(例えば、変数の宣言文など)。後者では、コンパイラが式の型を文脈から推論する。C++やJavaなどの主な静的型付け言語では、型を明記する。完全な型推論は主流でない言語に使われている(HaskellやML)。ただし、型を明記する言語でも部分的な型推論をサポートしていることが多い。たとえば、JavaやC#では限定された状況で型推論を行う。
「弱い型付け」とは、ある型の値を別の型としても操作できることを意味する[12]。例えば、文字列を数として扱うといったことが考えられる。これは場合によっては便利だが、コンパイル時には問題を検出できない場合がある。
「強い型付け」とは、その逆である。型の混同はエラーとなる[12]。強い型付けの言語を「型安全」であるという。型安全性はある種のプログラムの誤りを防ぐことができる。
例えば、式の評価戦略(先行評価、部分評価、遅延評価、短絡評価など)は実行意味論の一部である。また、制御構造における条件付実行の作法も実行意味論の一部である。
多くのプログラミング言語には、標準ライブラリが付属していて、その言語の実装にはほぼ必ず存在する。標準ライブラリには、典型的なアルゴリズム、データ構造、入出力機構などが含まれることが多い。
ユーザーから見れば、標準ライブラリも言語の一部だが、設計者から見れば別の実体である。言語仕様には必ず実装しなければならない部分が定義されており、標準化された言語の場合、それには標準ライブラリも含まれる。言語とその標準ライブラリの境界は、言語によって様々である。実際、言語によっては一部の構文要素が標準ライブラリなしでは使えないこともある。例えばJavaでは、文字列リテラルは java.lang.String クラスのインスタンスとして定義される。同様にSmalltalkでは、匿名関数はライブラリの BlockContext クラスのインスタンスを使用する。また、Schemeは言語仕様の大部分をライブラリマクロとして実装可能にしており、言語設計者はどこまでを言語本体で実装すべきかも明確に述べていない。
プログラミング言語を使うには、設計者が言語を設計して処理系を実装し、ユーザーがその言語でプログラムを書く必要がある。その際に重要となるのは、「仕様」と「実装」である。
プログラミング言語の仕様は、その言語で書かれたソースコードが与えられたとき、プログラムとしての動作がどうなるのかを決定する定義を与えることを目的としている。
プログラミング言語の実装とは、ハードウェアおよびソフトウェアを構成して、そのプログラミング言語で書かれたプログラムを実行する方法を提供するものである。プログラミング言語の実装には大きく分けて2つの方法がある。コンパイラとインタプリタである。一般にある言語をコンパイラとインタプリタの両方で実装することが可能である。
コンパイラの出力は、ハードウェアで実行される場合とインタプリタで実行される場合がある。コンパイラの出力したものをインタプリタで実行する方式は、コンパイラとインタプリタの区別が曖昧な場合もある。例えば、BASICの実装には、行単位でソースをコンパイルして実行するようなものもある。
一般にコンパイラの出力(実行ファイル)を直接ハードウェアで実行する方が、インタプリタで実行するよりもずっと高速である。
世界初のプログラミング言語は、いわゆるデジタルコンピュータの登場する前に存在した。19世紀には、プログラム可能な織機や自動ピアノ向けの巻紙があり、そこには現代的分類で言えばドメイン固有言語とされるプログラミング言語でプログラムが書かれていた。20世紀初頭には、タビュレーティングマシンによってパンチカードを使ったデータの機械処理が始まっている。1930年代から1940年代にかけて、アルゴリズムを表現する数学的抽象表現を提供するラムダ計算(アロンゾ・チャーチ)とチューリングマシン(アラン・チューリング)が考案された。ラムダ計算はその後の言語設計にも影響を与えている[16]。
1960年代から1970年代末ごろまでに、現在使われている主な言語パラダイムが開発されたが、その多くはごく初期の第三世代プログラミング言語のアイデアの改良である。
これらの言語のアイデアは様々な言語に引き継がれており、現在の言語の多くは、これらのいずれかの系統に属する。
1960年代と1970年代は、プログラムのメモリ使用量を削減し、プログラマやユーザーの生産性を向上させる技法も進展した時期である。初期の4GL(第四世代プログラミング言語)は、同じプログラムを第三世代プログラミング言語で書いたときよりもソースコードの量を劇的に削減した。
1980年代は、相対的な統合の時代であった。C++は、オブジェクト指向とシステムプログラミングの統合である。アメリカでは、軍需に使うことを目的として Ada というシステムプログラミング言語が標準化された。日本などでは、論理プログラミングを応用した第五世代言語の研究に資源を費やした[23]。関数型言語コミュニティでは、ML と LISP の標準化の動きがあった。これらはいずれも新たなパラダイムの生み出そうというものではなく、それまでに生み出されたアイデアに改良を加える動きであった。
1990年代中頃には、インターネットの急激な成長によって新たな言語が生み出される機会が生じた。Perl は1987年にリリースされたUNIX上のスクリプト言語だったが、ウェブサイトの動的コンテンツ作成に使われるようになった。Java はサーバ側のプログラミングに使われるようになった。これらはそれほど革新的ではなく、主にC言語を中心とした既存の言語やパラダイムの改良に過ぎない。
プログラミング言語の進化は産業界でも研究でも続いている。現在の傾向は、セキュリティと信頼性の検証、新たなモジュール性(Mixin、委譲、アスペクト)、データベース統合などである[要出典]。
どのプログラミング言語が最もよく使われているかを判断することは難しい。また、利用という意味も文脈によって異なる。プログラマの工数、コードの行数、CPU時間などが尺度として考えられる。ある言語は特定分野のアプリケーションだけでよく使われているということもある。例えばCOBOLは企業のデータセンター(メインフレームであることが多い)では今でも使われているし、FORTRANは科学技術計算でよく使われ、C言語は組み込みシステムやオペレーティングシステムで使われている。
以下のように言語利用状況の尺度は様々であり、どれを選択しても一種のバイアスがかかっていると考えた方がよい。
プログラミング言語の完全な分類法は存在しない。あるプログラミング言語には大抵複数の起源(影響を与えた言語)がある。言語は一般に複数の既存言語の要素と新たなアイデアを組み合わせて生み出される。ある言語を起源とするアイデアはその系統の言語群に広まっていき、あるときギャップを飛び越えて全く別の系統の言語で使われるようになる。
さらに事を複雑にするのは、言語は様々な観点から分類可能という点である。例えば、Javaはオブジェクト指向言語であると同時に、並行性言語でもある(言語仕様としてスレッドを複数並行して生成可能であるため)。Python はオブジェクト指向言語であると同時に、スクリプト言語でもある。
プログラミング言語の大まかな分類として、プログラミングパラダイムによる分類と想定している利用分野や用途による分類がある。パラダイムには、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミング、論理プログラミングなどがある。言語によっては2つのパラダイムの性格を併せ持つこともあるし、マルチパラダイムの場合もある。アセンブリ言語は、マシンのアーキテクチャを直接モデル化したものであるため、パラダイムとは言わない。用途による分類では、汎用、システムプログラミング言語、スクリプト言語、ドメイン固有言語、並行/分散言語(あるいはこれらの混合)などがある[29]。汎用言語の一部は教育目的で設計されている[30]。
プログラミングパラダイムとは無関係なパラメータで分類されることもある。例えば、多くのプログラミング言語は英語のキーワードを使っているが、ごく一部の言語はそうではない。また、難解かそうでないかという分類もある。
機械語やアセンブラ言語は、よりハードウェアに近い言語であり、このようなプログラミング言語を低級言語あるいは低水準言語という。また、それ以外の言語は、機械語と一対一で対応せず、より人間に近い言語であり、高級言語あるいは高水準言語という。最近ではプログラムの開発効率向上のために、沢山の高級言語が生まれてきている。その中でもプログラムを作るためのプログラミング言語というものも有る。簡単なパラメーターを入れて行ったり、選択肢を選んでいくだけでプログラムが出来てしまう高級言語もある。しかし、こういった高級言語は、ハードウェアに大変遠いため、コンピューターに大きな負荷が掛かり、ハードウェア、ソフトウェア(主にOSなど)ともに、高度な能力が必要とされる。

 

戻る

ディックの審査サイト、 ディックの審査比較サイトのお得な情報、 ディックの主婦情報、 ディックの低金利情報など、 ディックに関することの申込み情報サイト。
ディックの審査サイト、 ディックの審査比較サイトのお得な情報、 ディックの主婦情報、 ディックの低金利情報など、 ディックに関することの申込み情報サイト。