プログラミング言語とは、コンピュータにおけるソフトウエアを開発することを主目的に作られた人工言語である。つまり、ソフトを作るときに書いたりする、映画とかで研究室の画面に流れていたりする、ムズカシソーなアレ。
プログラミング言語の歴史は、コンピュータこと電子計算機よりも長いわけだが、面倒なのでここではスルー。詳しくは、Wikipedia:階差機関にでも。
プログラミング言語は、コンピュータへ命令することを第一に作られている。それを支援する、構造記述能力、表現力が備わっていることが普通である。また、日本語や英語といった自然言語と異なり、曖昧な解釈はできない[1]。
一般に歴史的な理由と使える領域の広さから、C言語はプログラマの一般教養言語となっている。
プログラミング言語には高級言語と低級言語がある。抽象化の度合いが高いものが高級言語で、低いものが低級言語と呼ばれる。
低級言語とは、機械語及びアセンブリ言語(アセンブラ)のことである。
アセンブリ言語は、機械語を英語などの自然言語などで解釈しやすいように作られたものだが、いずれもCPUの処理手順を1つずつ記述しなければいけない。しかもCPU毎に言語仕様が違うため、あるCPU用に書いた機械語プログラムを全く別のCPUに再利用することはできない。
また、論理的には1つの処理も、複数の手順を踏まえないといけないので記述数が膨大になりやすく、現在では処理手順の細かい最適化を行う際に部分的に使われることが多い。
対して高級言語とは、自然言語をベースに人間の論理に合わせて作られたプログラミング言語を指す。CPUの仕様から自由ならば高級言語である。
低級言語よりは習得が楽ではあるが、高級言語を機械語に翻訳するコンパイラやインタプリタの性能が悪いと、非効率で処理の遅いプログラムになる恐れがある。
高級言語の中でも、記述内容が機械語に近いもの(例えばメモリへの書き込みの方法やタイミングを指定できるなど)ほど低級で、人間の感覚に近いもの(オブジェクト指向など)をより高級とする考え方もある。
近年の様々なパラダイムを取り込み洗練された言語に親しんでいる人から見ると、過去の言語は野暮ったく低級のように見えてしまうかもしれないが、あくまでも人間の考え方に近いか遠いかの違いを表す表現であって、言語の優劣を論じる用語ではない。パフォーマンスの問題から言えば、むしろ低級な言語ほど(労力を惜しまなければ)できることの種類が多く、高級な言語ほど処理速度が遅くなる傾向にある。
実際の言語の優劣は、言語仕様の良し悪しよりも入手可能なライブラリの量と質や処理系の最適化レベル、開発環境の充実度、動作可能なプラットフォームの普及状態などによって決まってしまうことが少なくない。
実行する前にコンパイルという変換作業を必要とするものをコンパイラ言語と呼び、操作や処理を記述したプログラムをそのままインタプリタに解釈させ実行する言語をスクリプト言語(インタプリタ言語)と呼ぶ。言語仕様そのものの違いではなく、処理系の違いなのだが(スクリプト言語でも別途コンパイラを作ってコンパイルしてから実行するようにすればコンパイラ言語といえなくもない)、実用上は両者を区別することが多い。
一つのアプリケーション上で動作し、アプリケーション上の操作を一括して行うように記述できるものもプログラミング言語(スクリプト言語)と呼ぶことができるが、一般にはマクロと呼ばれて汎用プログラミング言語とは分けて扱われる。
一般的な傾向としては処理速度はマクロ < スクリプト言語 < コンパイラ言語 < 機械語 の順番だが、処理系の最適化やプログラマの技量(使用するアルゴリズム)によって大きく変わってしまうこともあるので、「〜で書かれているから速い」という考え方があてはまらない場合もありえる。
ほとんどの高級言語に型の概念が実装されているが、型が実行前に決まっていなければならないかどうかで静的型付け言語と動的型付け言語に分かれる。
→ 型付け
プログラミング言語では、その言語に対するパラダイムが存在する。
パラダイムとは、プログラムを離れて一般的な広義で言えば、物の捉え方の事を指す。
プログラミング言語におけるパラダイムとは、プログラミング言語の捉え方を表したものである。
以下に、代表的なパラダイムを記述する。詳細はプログラミングパラダイムの記事参照
これらは、排他的な特徴ではないため、当然複数のパラダイムを併せ持つ言語が存在する。そのような言語をマルチパラダイム言語という。多くの言語はマルチパラダイム言語だが、特に多くのパラダイムを実現している言語を指して言うことが多い(例: C++, D言語)。
現在、プログラミング言語は非常に多く存在しているが、言語が作られる理由にはさまざまな理由がある。
面倒なことに、言語内でもバージョンやら実装の違いがあって、トラブルの原因になったりもする。とても面倒。
掲示板
156 ななしのよっしん
2022/02/27(日) 12:37:48 ID: ZXcHF5xzHW
ローレベルはハイレベルすぎるからローレベルなハイレベルから始めるのがオススメだよ!
157 ななしのよっしん
2023/12/12(火) 05:32:06 ID: 0JGdcO1oJY
Python以上に分かりやすく簡単、ライブラリも豊富で、機械語ほどじゃなくてもC/C++レベルの実効速度が速いプログラミング言語は開発出来ないものだろうか?
158 ななしのよっしん
2024/04/10(水) 16:35:58 ID: Jpi/M6Cgvx
>>157
nimとか? Python以上かどうかはともかく、向こうに似せてるから同等にはわかりやすいと思われるし最終的にはC++に落ちるから実行速度は速いぞ
俺はnim嫌いだけど
あとライブラリは言語自体の特徴じゃないんで(標準ライブラリの意味ならすまんち)
急上昇ワード改
最終更新:2025/03/20(木) 05:00
最終更新:2025/03/20(木) 04:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。