Python
Pythonは教育用の目的で設計されたわけではないが、その単純さから子供が最初に学ぶプログラミングにおける教育用の言語としても利用が増えている。グイド・ヴァンロッサムはPython設計以前に教育用言語であるABCの開発にかかわり、教育用としての利用について期待感を示したこともあり、方針として非技術者向けといった利用を視野に入れているとされることもある。
私の大好きなPython利用法は、騒ぎ立てずに、言語教育でプログラミングの原理を教えること。それを考えてくれ――次の世代の話だね。-- スラッシュドット・ジャパン『 Guido van Rossum へのインタビュー』
情報処理推進機構 (IPA) は国家試験の基本情報技術者試験で2020年の春期試験より COBOL を廃止して Python を追加した。
日本の高等学校情報科「情報I」の教員向け研修教材の中で、プログラミング用言語としてPythonが使われている。
ただし、Pythonの言語は,言語自身に組み込まれている型とそれに付随するメソッドの多いことなどから,C言語などと較べて遙かに多くの憶えねばならない事柄があることになる。
最初のPythonでは1バイト単位での文字列型のみ扱い、ひらがな・(全角) カタカナおよび漢字のようなマルチバイト文字はサポートしていなかったが、その後のPython 2.0からはUnicode文字型が新たに導入された。
Python 3.0では、Python 2.xにおける文字列型がバイト列型に、またUnicode文字列型が文字列型に変更された。これにより、文字列をPython 3.0で扱う際には後述の変換処理を必ず行う必要がある。ファイル入出力などでエンコードを明示しなければ、標準エンコードを用いて暗黙に行われる場合も多い。これにより多言語の扱いを一貫したものにしている。
Pythonでは文字のエンコードとUnicodeの内部表現を明確に区別している。Unicode文字はメモリ中に保持される抽象的なオブジェクトであり、画面表示やファイルへの入出力の際には変換ルーチン(コーデック)を介して特定のエンコーディングのバイト列表現との間で相互に変換する。また、ソースコード中の文字コードを認識する機能があり、これによって異なる文字コードで書かれたプログラムの動きが異なるリスクを解消している。
Pythonでは変換ルーチンをモジュールとして追加することで、さまざまなエンコーディングに対応できるようになっている。
Pythonには複数の実装(ランタイム又はコンパイラ)が存在する。
CPython - 作者によってC言語で書かれたバージョン。通常「Python」といえばこのCPythonを指す。
Stackless Python - Cスタックを使わずに独自のスタック(Pythonスタック)で実装したもの。
Unladen Swallow - GoogleのチームによるPythonの実装。
Jython - Java仮想マシン上に移植したもの。PythonからJavaのライブラリを使うことができる。
IronPython - .NET Framework/Monoで動作するPython。C#で実装されている。.NET Frameworkのライブラリを使うことができる。動的言語ランタイム上に構築されているため、既存の.NETアプリケーションへマクロ言語として搭載することも可能となっている。
Pythonはガベージコレクションを内蔵しており、参照されなくなったオブジェクトは自動的にメモリから破棄される。CPythonでは、ガベージコレクションの方式として参照カウント方式とマーク・アンド・スイープ方式を併用している。マーク・アンド・スイープ方式のみに頼っている言語では、オブジェクトがいつ回収されるか保証されないので、ファイルのクローズなどをデストラクタに任せることができない。CPythonは参照カウント方式を併用することで、循環参照が発生しない限り、オブジェクトはスコープアウトした時点で必ずデストラクトされることを保証している。なおJythonおよびIronPythonではマーク・アンド・スイープ方式を採用しているため、スコープアウトした時点で必ずデストラクトされることが前提のコードだとJythonやIronPythonでは正しく動かない。