プログラミング用語をやさしく解説
プログラミングを始めると出会う言葉を、短く正確に定義します。用語ごとにページがあり、ブラウザで実行できるコード例、よくある間違い、関連する用語へのリンクを載せています。
コードが動くしくみ
書いたコードが動くプログラムになるまでに起きること:コンパイラ、インタプリタ、実行環境、オペレーティングシステム。
ソースコードソースコードとは、プログラマーがPython、Java、Cなどの言語で書いた、人が読めるプログラムのテキストです。プレーンテキストのファイルとして保存され、コンパイラやインタプリタによってコンピュータが実行できる命令に変換されます。コンパイラコンパイラとは、プログラミング言語で書かれたソースコードを、プログラムの実行前に機械語やバイトコードなどの低水準の形式に翻訳するプログラムです。翻訳されたプログラムは、元のソースがなくても実行できます。インタプリタインタプリタとは、プログラム全体を先に別の機械語ファイルへ翻訳するのではなく、ソースコードを直接読みながらその命令を順に実行するプログラムです。標準的なPythonやRubyの実装はインタプリタです。実行環境実行環境(ランタイム環境)とは、プログラムが動いている間にその周りで必要になるソフトウェアです。コードを実行するエンジン、呼び出す標準ライブラリ、メモリやエラー、オペレーティングシステムへのアクセスを管理するしくみが含まれます。JVM、Node.js、CPythonがその例です。オペレーティングシステムOS(オペレーティングシステム)とは、コンピュータのハードウェアを管理し、ほかのすべてのプログラムを動かすソフトウェアです。プロセッサ、メモリ、ストレージをプログラム間で分け合い、ファイル、ネットワーク、入出力の機能を提供します。Windows、macOS、Linux、Android、iOSはOSです。
プログラムの基本要素
どのプログラムも組み立てている部品:値、変数、配列、繰り返し。
変数プログラミングにおける変数とは、プログラムの実行中に読み書きできる値を保存する、名前の付いたメモリ上の場所です。score や user_name のような名前があるので、コードは値がどこに保存されているかを知らなくても、その値を参照できます。ブール値プログラミングにおけるブール値とは、真(true)と偽(false)のちょうど2つの値だけを持つデータ型です。プログラムは age >= 18 のような比較からブール値を得て、if 文やループの条件で、どのコードを実行するかを決めるのに使います。配列配列とは、同じ型の値の集まりを、1つの連続したメモリ領域に保存するデータ構造です。要素と呼ばれる各値には、インデックスと呼ばれる位置の番号でアクセスします。インデックスはほとんどの言語で0から始まります。イテレーションプログラミングにおけるイテレーション(反復処理)とは、条件が満たされるまで、あるいはコレクションのすべての要素を処理し終えるまで、一連の命令を繰り返すことで、普通はループを使います。繰り返される命令を1回通ることも、イテレーションと呼びます。
エラーとデバッグ
3種類のエラー、プログラムでの扱い方、そしてCを書く人が最初に出会うクラッシュ。
構文エラー構文エラー(シンタックスエラー)とは、コロンや括弧、引用符の書き忘れなど、コードの構造がプログラミング言語の文法規則に違反している誤りのことです。コンパイラやインタプリタはプログラムを1行も実行する前に拒否します。実行時エラーランタイムエラー(実行時エラー)とは、プログラムの実行中に、手元の値では処理を実行できないときに起きるエラーのことです。ゼロ除算やリストの末尾を超えた読み取りが典型例です。エラーを処理しない限り、プログラムはその行で停止します。論理エラー論理エラーとは、プログラムの考え方の誤りによって、クラッシュもエラーメッセージもないまま間違った結果が出てしまうことです。コードは正しく、すべての行が実行されますが、プログラマが意図したとおりには動きません。例外処理例外処理とは、プログラムの実行中に起きたエラーに対応するための仕組みです。失敗するかもしれないコードを try などの保護されたブロックに入れておくと、エラーが発生したときにクラッシュする代わりに、except や catch などのハンドラに制御が移ります。セグメンテーション違反セグメンテーション違反(segmentation fault、segfault)とは、プログラムがアクセスを許されていないメモリを読み書きしようとしたときに起きるクラッシュです。ヌルポインタを通してアドレス0を読むのが典型例で、オペレーティングシステムが SIGSEGV シグナルでプログラムを停止させます。
データと保存
コンピュータがデータを保存し、壊れずに届いたかを確かめるしくみ:ビット、バイト、チェックサム、データベース。
ビットビット(bit、binary digitの略)とは、コンピュータで扱うデータの最小単位で、0か1のどちらか1つの値を持ちます。コンピュータは数値や文字から画像、プログラムまで、あらゆる情報をビットの並びとして保存し、処理しています。バイトバイトとは、8ビットで構成されるデジタルデータの単位で、0から255までの256通りの値を表せます。ほとんどのコンピュータでは、固有のアドレスを持つメモリの最小単位であり、ファイルのサイズもバイトで数えます。チェックサムチェックサムとは、ファイルやネットワークのパケットなどのデータのまとまりから計算される短い値で、データと一緒に保存または送信されます。後でもう一度計算して2つの値を比べると、破損や通信エラーによってデータが変わったかどうかが分かります。データベースデータベースとは、プログラムがすばやく安全に検索、追加、変更、削除できるように、コンピュータ上に整理して保存されたデータの集まりです。PostgreSQL、MySQL、SQLite、MongoDBなどの、データベース管理システム(DBMS)と呼ばれるソフトウェアが管理します。
オブジェクト指向プログラミング
クラスとオブジェクトを支える考え方:データを隠す、共通のインタフェースを持つ、細部を見せない。
カプセル化オブジェクト指向プログラミングにおけるカプセル化とは、オブジェクトのデータとそのデータを扱うメソッドを、ふつうはクラスという1つの単位にまとめ、内部の詳細を隠して、ほかのコードが公開されたメソッドを通してしかオブジェクトを使えないようにすることです。ポリモーフィズムプログラミングにおけるポリモーフィズム(多態性)とは、関数呼び出しやメソッド名のような1つのコードが、異なる型の値に対して働き、それぞれの型が自分自身の振る舞いを提供できる性質のことです。shape.area() を呼ぶと、円と正方形では別の計算が実行されます。抽象化プログラミングにおける抽象化とは、何かがどう動くのかという詳細をより単純なインタフェースの後ろに隠し、それが何をするのかだけを知っていれば使えるようにすることです。sorted(names) を呼べば、並べ替えのアルゴリズムを自分で書くことも、目にすることもなく、リストを並べ替えられます。
よくある質問
初心者が最初に覚えるべきプログラミング用語は?
コードを書き始める前に用語を覚えておく必要はありますか?
いいえ。ほとんどの人は小さなプログラムを書きながら、出てきた言葉をその都度調べて覚えます。その用語が指すエラーや出力を一度目にすると、ずっと早く身につきます。
プログラミング用語はどの言語でも同じですか?
考え方は同じです。名前と細部が変わります。Pythonでは配列を
list と呼び True と書き、JavaScriptでは true と書き、Javaでは変数の型を宣言する必要があります。各ページで言語による違いに触れています。これらの概念はどこで練習できますか?
どの用語ページにも、ブラウザで編集して実行できるコード例があります。順を追って練習したいなら、Coddyの無料のPythonコースで、変数、ループ、エラー、クラスを小さな演習ひとつずつ学べます。