プログラミング言語 単語


ニコニコ動画でプログラミング言語の動画を見に行く

プログラミングゲンゴ

4.1千文字の記事
これはリビジョン 3054106 の記事です。
内容が古い・もしくは誤っている可能性があります。
最新版をみる

プログラミング言語とは、コンピュータにおけるソフトウエアを開発することを主目的に作られた人工言語である。つまり、ソフトを作るときに書いたりする、映画とかで研究室の画面に流れていたりする、ムズカシソーなアレ

概要

プログラミング言語の歴史は、コンピュータこと電子計算機よりも長いわけだが、面倒なのでここではスルー。詳しくは、Wikipedia:階差機関にでも。

プログラミング言語は、コンピュータへ命令することを第一に作られている。それを支援する、構造記述能力、表現力が備わっていることが普通である。また、日本語や英語といった自然言語と異なり、曖昧な解釈はできない[1]

一般に歴史的な理由と使える領域の広さから、C言語はプログラマの一般教養言語となっている。

高級言語と低級言語

プログラミング言語には高級言語と低級言語がある。

低級言語

低級言語とは、機械語及びアセンブリ言語(アセンブラ)のことである。

アセンブリ言語は、機械語を英語などの自然言語などで解釈しやすいように作られたものだが、いずれもCPUの処理手順を1つずつ記述しなければいけない。しかもCPU毎に言語仕様が違うため、あるCPU用に書いた機械語プログラムを全く別のCPUに再利用することはできない。

また、論理的には1つの処理も、複数の手順を踏まえないといけないので記述数が膨大になりやすく、現在では処理手順の細かい最適化を行う際に部分的に使われることが多い。 

高級言語

対して高級言語とは、自然言語をベースに人間の論理に合わせて作られたプログラミング言語を指す。CPUの仕様から自由ならば高級言語である。

低級言語よりは習得が楽ではあるが、高級言語を機械語に翻訳するコンパイラやインタプリタの性能が悪いと、非効率で処理の遅いプログラムになる恐れがある。

高級言語の中でも、記述内容が機械語に近いもの(例えばメモリへの書き込みの方法やタイミングを指定できるなど)ほど低級で、人間の感覚に近いもの(オブジェクト指向など)をより高級とする考え方もある。

近年の様々なパラダイムを取り込み洗練された言語に親しんでいる人から見ると、過去の言語は野暮ったく低級のように見えてしまうかもしれないが、あくまでも人間の考え方に近いか遠いかの違いを表す表現であって、言語の優劣を論じる用語ではない。パフォーマンスの問題から言えば、むしろ低級な言語ほど(労力を惜しまなければ)できることの種類が多く、高級な言語ほど処理速度が遅くなる傾向にある。

実際の言語の優劣は、言語仕様の良し悪しよりも入手可能なライブラリの量と質や処理系の最適化レベル、開発環境の充実度、動作可能なプラットフォームの普及状態などによって決まってしまうことが少なくない。

コンパイラ言語とスクリプト言語

実行する前にコンパイルという変換作業を必要とするものをコンパイラ言語と呼び、操作や処理を記述したプログラムをそのままインタプリタに解釈させ実行する言語をスクリプト言語(インタプリタ言語)と呼ぶ。言語仕様そのものの違いではなく、処理系の違いなのだが(スクリプト言語でも別途コンパイラを作ってコンパイルしてから実行するようにすればコンパイラ言語といえなくもない)、実用上は両者を区別することが多い。

一つのアプリケーション上で動作し、アプリケーション上の操作を一括して行うように記述できるものもプログラミング言語(スクリプト言語)と呼ぶことができるが、一般にはマクロと呼ばれて汎用プログラミング言語とは分けて扱われる。

一般的な傾向としては処理速度はマクロ < スクリプト言語 < コンパイラ言語 < 機械語 の順番だが、処理系の最適化やプログラマの技量(使用するアルゴリズム)によって大きく変わってしまうこともあるので、「〜で書かれているから速い」という考え方があてはまらない場合もありえる。

静的型付けと動的型付け

ほとんどの高級言語に型の概念が実装されているが、型が実行前に決まっていなければならないかどうかで静的型付け言語と動的型付け言語に分かれる。

型付け

プログラミング言語におけるパラダイム

プログラミング言語では、その言語に対するパラダイムが存在する。
パラダイムとは、プログラムを離れて一般的な広義で言えば、物の捉え方の事を指す。
プログラミング言語におけるパラダイムとは、プログラミング言語の捉え方を表したものである。
以下に、代表的なパラダイムを記述する。詳細はプログラミングパラダイムの記事参照

  • 構造化プログラミング
  • 手続き型言語
  • モジュール型
  • オブジェクト指向
  • アスペクト指向
  • イベント駆動型
  • 関数型言語

これらは、排他的な特徴ではないため、当然複数のパラダイムを併せ持つ言語が存在する。そのような言語をマルチパラダイム言語という。多くの言語はマルチパラダイム言語だが、特に多くのパラダイムを実現している言語を指して言うことが多い(例: C++, D言語)。

主なプログラミング言語(高級言語)

  • BASIC
  • COBOL
  • FORTRAN
  • Pascal
  • C
  • C++
  • C#
  • Java

主なスクリプト言語

  • Perl
  • Python
  • Ruby
  • JavaScript
  • Visual Basic for Application(VBA)
  • PHP
  • Scratch

プログラミング言語が作られる目的(一覧)

現在、プログラミング言語は非常に多く存在しているが、言語が作られる理由にはさまざまな理由がある。

  • 以前の言語の拡張として (例: C++, C++マネージ拡張, C++/CLI, Objective-C)
  • ちょっとしたことをお手軽にやりたい (例: シェルスクリプト系)
  • ちょっとしたことをお手軽にやりたい。高機能で (例: Ruby, Python)
  • OSを移植しやすくするため (例: C言語)
  • そもそも仮想マシンで動かせばどこでも動くんじゃね (例: Java)
  • Javaの人気に嫉妬して(いつものように)パクった。後悔はしていない(例: C#)
  • 言語設計の研究のため。ネタ言語じゃないよ!! (例: BrainF*ck)
  • コンビネータ理論に基づいて言語を作ってみたもの。ネタ言語じゃな…くもない(例: Unlambda, Lazy K)
  • 言語使用者に地獄を見せることにガチなネタ言語(例: Malbolge)
  • サンプルプログラム内蔵してみた。ゆるいネタ言語 (例: HQ9+)
  • Hello,World!をHQ9+を超える最短コードで表示してみた。もちろんネタ言語 (例: BrainCrash)
  • 二次元サイコー! (例: Befunge)
  • 環境に特化した言語が必要になって (例: PostScript, SQL, JavaScript, ニワン語&ニコス)
  • 実は別目的だったんだけど、機能追加してたら言語になってた (例: ActionScript, TeX)
  • 新しい概念実装のため (例: Lisp)
  • ハードウエア設計のため (例: Verilog)
  • 英語よりも日本語だろJK (例: ひまわり, なでしこ)
  • 他の言語に組み込むため (例: Lua)
  • 俺最強言語を作って、俺TUEEEEEしたくなって (例: D言語)
  • 読みにくくしてみた (例: grass, whitespace)
  • ゲームだ (例: CarnageHeart)
  • 教育用だ (例: LEGO MindStorm, LOGO, CASL)
  • 教育用(小学生)にソースコード自体をGUI化してみた (例: Scratch)
  • WebとDBに強い言語を作ってみた。文法?とりあえずCっぽくしとけば良いんじゃね。(例: PHP)
  • 新言語(信玄後)だから(例: 織田信長)
  • 昔は皆これから始めたもんだ(例: BASIC)
  • IT土方専用 (例: Visual Basic)
  • 元祖最強俺言語、何でもできるよ! (例: Perl)
  • 成果物のスパゲッティさは他の追随を許さない。爺専用 (例: COBOL)
  • 非情シス部門で勝手システムを作るためのもの。あまり関りたくない (例: Visual Basic for Applications)
  • 日本においては税金の無駄使い公共事業用だった (例: Prolog)
  • 真祖とか始祖とかそんな感じ。ゆとり世代には伝説の類 (例: Fortran)
  • なにげにインストールベースでは最多クラス (例: Visual Basic Scripting Edition)
  • 主に教育用だ。ターボとか付いてて、エディタにタダで付いてくるすごいのもあった (例: Pascal)
  • 副作用が許されるのは小学生までだよね (例: Haskell)
  • 関数型言語とオブジェクト指向が両方そなわり最強に見える (例: Objective Caml, F#, Scala)
  • マイクロソフト帝国には誰も逆らえないことを、結果的に証明した(例: Delphi, Object Pascal)
  • 制御構造を持たないシンプルな文法、なんでも文字列、簡単GUI(例: Tcl/Tk)
  • grepやsedじゃ物足りなくなって (例: awk、Perl)
  • WebでもやっぱりBASICだろう(例: VBScript)
  • Cの速さ、Rubyの動的さが欲しいし、科学計算、線形代数計算、統計処理、機械学習を手軽に分散コンピューティングで出来るようにしたい。でも言語としてはシンプルなのがいいね。え?欲張りだって?(例: Julia)
  • プラットフォームが十分に普及し、何をしてもみんな追随してくれるようになったので (例: Swift)
  • ぬるぽをなくしたかった ← ガッ (例: Swift, Kotlin)
  • 高速な並列処理をメモリ安全に書きたい (例: Rust)
  • 量子コンピュータは実用化されていないけど、青田買い! 囲い込み! (例: Q#他)

面倒なことに、言語内でもバージョンやら実装の違いがあって、トラブルの原因になったりもする。とても面倒。

関連動画

タグ検索「プログラミング」

関連商品

ニコニコ市場は2023年11月に終了しました。ニコニコ市場は2023年11月に終了しました。ニコニコ市場は2023年11月に終了しました。ニコニコ市場は2023年11月に終了しました。

関連コミュニティ

ニコニコミュニティは2024年8月に終了しました。

関連用語

  • プログラミング
  • 日本語じゃない日本語
  • 難解プログラミング言語 / esolang
  • チューリング完全
  • 統合開発環境(IDE)
  • ガベージコレクション
  • ソフトウェア開発
  • プログラミング言語選択ガイド
  • ソフトウェアの一覧
  • プログラミング関連用語の一覧

脚注

  1. *曖昧さがないといっても実行時の話で、言語仕様書の段階では曖昧さが取り除ききれていない場合も少なくない。リファレンス実装がこの問題を解決している場合もある。
関連記事

親記事

子記事

兄弟記事

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
雪音りう[単語]

提供: とりくろろめたん

もっと見る

急上昇ワード改

最終更新:2025/12/09(火) 19:00

ほめられた記事

最終更新:2025/12/09(火) 19:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP