Python の起源
Python の作者、Guido von Rossum は確かにオランダ人です。 1982 年に、グイドはアムステルダム大学から数学とコンピューティングの修士号を取得しました。しかし、彼はある種の数学者でしたが、それ以上にコンピューターを楽しんでいたのです。彼の言葉によれば、彼は数学とコンピュータの二重の資格を持っているにもかかわらず、常にコンピュータ関連の仕事をする傾向があり、プログラミングに関連することなら何でもすることに熱心です。
Guido von Rossum
その時にPascal、C、Fortranなどの言語に触れ、使用していました。これらの言語の基本的な設計原則は、マシンをより高速に実行できるようにすることです。 1980 年代、IBM と Apple はパーソナル コンピューターの波を打ち出しましたが、これらのパーソナル コンピューターの構成は (今日の言葉で言えば) 非常に低レベルでした。たとえば、初期の Macintosh には 8MHz の CPU 周波数と 128KB の RAM しかなく、大きなアレイがメモリをいっぱいにする可能性がありました。すべてのコンパイラの中核は、プログラムが実行できるように最適化することです。効率を高めるために、この言語はプログラマーにコンピューターのように考えるよう強制し、マシンの好みに合わせたプログラムを作成できるようにします。当時、プログラマーはコンピューターの能力を隅々まで自分の手で絞り出すことに熱心でした。 C 言語のポインタはメモリの無駄だと考える人もいます。動的型付け、自動メモリ管理、オブジェクト指向については、コンピュータが麻痺してしまうので考えないでください。
しかし、この考え方はグイドを悩ませました。 Guido は C で関数を書く方法を知っていますが、(関数の実装方法をすでに正確に知っているにもかかわらず) 書くプロセス全体に多くの時間がかかります。彼のもう 1 つの選択肢はシェルです。 Bourne Shell は、UNIX システム用のインタプリタ (interPReter) として長い間存在していました。 UNIX 管理者は、シェルを使用して簡単なスクリプトを作成し、定期的なバックアップやファイル システム管理などのシステム メンテナンス作業を実行することがよくあります。シェルは、UNIX の多くの機能を接続する接着剤のようなものです。 C 言語で数百行あるプログラムの多くは、シェル内のわずか数行で完了できます。ただし、シェルの本質はコマンドを呼び出すことです。それは実際には言語ではありません。たとえば、シェルには数値データ型がなく、加算演算は非常に複雑です。つまり、シェルはコンピュータの機能を完全に動員することができません。
(シェルについては、Linux アーキテクチャと Linux のコマンドラインとコマンドを参照してください)
Guido は、C 言語のようなコンピューターの関数インターフェイスを完全に呼び出すことができ、関数関数も完全に呼び出すことができる言語を望んでいます。シェルのようなコンピュータのインターフェイスで、簡単にプログラムできます。 ABC言語はグイドに希望を与える。 ABC は、オランダの CWI (Centrum Wiskunde & Informatica、数学およびコンピュータ研究所) によって開発されました。 Guido は CWI で働き、ABC 言語の開発に携わっています。 ABC言語は教育目的です。当時のほとんどの言語とは異なり、ABC 言語の目標は「ユーザーの気分を良くする」ことでした。 ABC Language は、この言語を読みやすく、使いやすく、覚えやすく、学習しやすいものにし、人々のプログラミング学習への関心を刺激したいと考えています。たとえば、次は Wikipedia の ABC プログラムです。このプログラムは、テキスト内に出現する単語 (Word) の総数をカウントするために使用されます:
HOW TO RETURN Words document:
PUT {} IN collection
FOR line IN document: N 分割行の単語:
if word not.in collection:
コレクションに単語を挿入
コレクションを返す
関数を定義する方法
。 Python プログラマーはこのプログラムを簡単に理解できるはずです。 ABC 言語では、コロン (:) とインデントを使用してプログラム ブロックを表現します (C 言語では、{} を使用してプログラム ブロックを表現します)。行末にセミコロンはありません。 for 構造と if 構造には括弧 () もありません。 HOW TO を def に、PUT 行を collection = [] に、INSERT 行を collection.append(word) に変更すると、ほぼ標準の Python 関数になります。上記の関数は自然なテキストのように読み取れます。
その読みやすさと使いやすさにもかかわらず、ABC 言語は最終的に普及しませんでした。当時、ABC 言語コンパイラーを実行するには、比較的ハイエンドのコンピューターが必要でした。これらのコンピュータのユーザーは通常、コンピュータに習熟しており、プログラムの学習の難しさよりもプログラムの効率を重視します。ハードウェアの問題に加えて、ABC 言語の設計にはいくつかの致命的な問題もあります:
スケーラビリティが低い。 ABC 言語はモジュール型言語ではありません。グラフィカル サポートなどの機能を ABC 言語に追加する場合は、多くの場所を変更する必要があります。
IO を直接実行することはできません。 ABC言語はファイルシステムを直接操作できません。テキスト ストリームなどの方法でデータをインポートできますが、ABC はファイルを直接読み書きすることはできません。入出力の難しさはコンピュータ言語にとって致命的です。ドアが開かないスポーツカーを想像できますか?
過剰な革新。 ABC では、上記の番組の HOW TO など、番組の意味を自然言語で表現しています。ただし、プログラマの場合は、関数を使用して関数を定義することに慣れています。同様に、プログラマは変数を割り当てるために等号 (=) を使用することに慣れています。このため、ABC 言語は特別に見えますが、実際にはプログラマーの学習がより困難になります (ほとんどのプログラマーは複数の言語を知っています)。
拡散するのが難しい。 ABC コンパイラはサイズが大きいため、テープに保存する必要がありました。 Guido が訪問したとき、彼は他の人のために ABC コンパイラをインストールするために大きなテープを用意する必要がありました。 このように、ABC言語はすぐには普及しにくいのです。
IBM テープ ドライブ: テープの読み取りと書き込み
1989 年、クリスマス休暇を過ごすために、Guido は Python 言語用のコンパイラー/インタープリターを書き始めました。 Python は、グイドのお気に入りのテレビ シリーズ「モンティ パイソンのフライング サーカス」 (1960 年代から 1970 年代に BBC が放送した、当時のイギリスの生活を題材にした屋内ホームコメディ) から来ています。彼は、Python と呼ばれるこの新しい言語が彼のコンセプト (C とシェルの間の包括的で、学びやすく、使いやすく、スケーラブルな言語) を実現できることを望んでいます。言語設計の愛好家として、Guido はすでに言語設計の試みを行っています (あまり成功していません)。今回は純粋なハッキング行為に他なりませんでした。
Python の誕生
1991 年に、最初の Python コンパイラー (インタープリターでもある) が誕生しました。 C 言語で実装されており、C ライブラリ (.so ファイル) を呼び出すことができます。 Python にはその誕生以来、クラス、関数、例外処理、リストや辞書を含むコア データ型、モジュールベースのシステムが備わっています。
オリジナルの Python ロゴ: Guido の弟 Just von Rossum によってデザインされました
Python 構文の多くは C から来ていますが、ABC 言語の影響も強く受けています。強制インデントなど、ABC 言語の一部のルールは今日でも物議を醸しています。しかし、これらの構文ルールにより、Python は読みやすくなります。一方、Python は、いくつかの規則 (特に C 言語の規則) に従うことを賢明に選択しています。たとえば、等号を使用して値を割り当て、def を使用して関数を定義します。グイド氏は、「常識」に基づいて物事が確立されていれば、それにこだわる必要はないと考えています。
Python は当初から拡張性に特別な注意を払ってきました。 Python は複数のレベルで拡張できます。大まかに言うと、.py ファイルをインポートできます。内部では C ライブラリを参照できます。 Python プログラマーは、Python を使用して .py ファイルを拡張モジュールとしてすばやく作成できます。しかし、パフォーマンスが考慮すべき重要な要素である場合、Python プログラマーは最下位層に深く入り込んで C プログラムを作成し、それを .so ファイルにコンパイルして Python に導入して使用することができます。 Python は鉄骨で家を建てるようなものです。まず大きなフレームを定義します。プログラマーは、このフレームワークの下で非常に自由に拡張または変更できます。
オリジナルの Python は、Guido 自身によって完全に開発されました。 Python はグイドの同僚の間で人気があります。彼らは迅速なフィードバックを提供し、Python の改善に参加します。 Guido と数名の同僚が Python のコア チームを形成しています。彼らは自由時間のほとんどを Python のハッキングに費やしています (仕事で Python を使用しているため、勤務時間も含みます)。その後、Python は CWI を超えて拡大しました。 Python はマシンレベルの詳細の多くを隠し、コンパイラーに処理を任せ、論理レベルのプログラミング的思考を強調します。 Python プログラマーは、具体的な実装の詳細ではなく、プログラムのロジックについて考えることに多くの時間を費やすことができます (Guido は、「人生は短い、私は Python を使用します」と書かれた T シャツを着ています)。この機能は多くのプログラマーを魅了します。 Pythonが人気になりました。
ここで Python の時間を一時停止し、コンピューターの概要を見てみる必要があります。 1990年代初頭、パーソナルコンピュータが一般家庭に普及し始めました。 Intel は 486 プロセッサをリリースし、Windows は Windows 3.0 から始まる一連のウィンドウ システムをリリースしました。コンピューターのパフォーマンスが大幅に向上します。プログラマーはコンピュータの使いやすさ(グラフィカルインターフェイスなど)に注目し始めました。
Windows 3.0
コンピューターの性能の向上により、ソフトウェアの世界も変わり始めています。ハードウェアは多くのパーソナル コンピューターに十分です。ハードウェア メーカーは、ハードウェアのアップグレードを促進するために、需要の高いソフトウェアの出現にも熱心です。 C++ と Java が次々と普及しました。 C++ と Java は、オブジェクト指向プログラミング パラダイムと豊富なオブジェクト ライブラリを提供します。 C++ と Java は、ある程度のパフォーマンスを犠牲にして、プログラム出力を大幅に向上させました。この言語の使いやすさは新たなレベルに引き上げられました。また、ABC の失敗の重要な理由がハードウェアのパフォーマンスの限界にあったことも覚えています。この点で、Python は ABC よりもはるかに幸運です。
静かに起こっているもう 1 つの変化はインターネットです。 1990 年代はまだ Windows と Intel が PC で世界を席巻し、一時は非常に普及した時代でした。インターネット ベースの情報革命はまだ到来していませんが、多くのプログラマや経験豊富なコンピュータ ユーザーはすでにインターネットをコミュニケーション (電子メールやニュースグループなど) に頻繁に使用しています。インターネットにより、情報交換のコストが大幅に削減されました。新しいソフトウェア開発モデル、オープンソースが人気を集めています。プログラマーは余暇を利用してソフトウェアやオープンソース コードを開発します。 1991 年、Linus は comp.os.minix ニュース グループで Linux カーネルのソース コードを公開し、多数のハッカーが参加するようになりました。 Linux と GNU は連携して、活気のあるオープンソース プラットフォームを形成します。
ハードウェアのパフォーマンスがボトルネックになることはなく、Python は使いやすいため、多くの人が Python に注目しています。 Guido はメールリストを管理しており、Python ユーザーは電子メールで通信します。 Python ユーザーはさまざまな分野に属し、さまざまな背景を持ち、Python に対するさまざまなニーズを持っています。 Python は非常にオープンで拡張が容易であるため、ユーザーが既存の機能に満足できない場合でも、Python を拡張または変換するのは簡単です。これらのユーザーは変更内容を Guido に送信し、Guido が新しい機能を Python に追加するか標準ライブラリに追加するかを決定します。コードを Python 自体または標準ライブラリに組み込んでいただければ大変光栄です。 Python 自体の方が優れています。
(グイドは多くの決断を下さなければならなかったので、彼は終身慈悲深い独裁者と呼ばれています)
Python は「バッテリー付き」と呼ばれており、Python とその標準ライブラリが強力であることを意味します。これらはコミュニティ全体からの貢献です。 Python 開発者はさまざまな分野の出身であり、さまざまな分野の利点を Python にもたらします。たとえば、Python 標準ライブラリの正規表現は Perl を指しますが、ラムダ、マップ、フィルタ、およびリデュース関数は Lisp を指します。 Python 自体の一部の機能と標準ライブラリの大部分はコミュニティから提供されています。 Python コミュニティは拡大を続けており、独自のニュースグループ、Web サイト (python.org)、および財団 (Python Software Foundation) を持っています。 Python 2.0 からは、Python もメールリスト開発方式から完全なオープンソース開発方式に変わりました。コミュニティの雰囲気が形成され、コミュニティ全体で作業が共有され、Python の開発も高速化されました。
(Guido が絶対的な仲裁権を享受しているため、Python のメールリスト開発の初期には、多くの愛好家が Guido の人生を非常に心配していました。彼らは、「もし Guido が死んだら Python はどうなるだろう。Guido がバスに轢かれたらどうなるか」という仮定さえ立てました。)
今日、Pythonのフレームワークが確立されました。 Python 言語は、オブジェクトを核としてコードを編成し (Everything is object)、複数のプログラミング パラダイムをサポートし (マルチパラダイム)、動的型付けを使用し、メモリのリサイクル (ガベージ コレクション) を自動的に実行します。 Python は解釈をサポートしており、拡張のために C ライブラリを呼び出すことができます。 Python には強力な標準ライブラリ (バッテリーが付属) があります。標準ライブラリ システムが安定して以来、Python エコシステムはサードパーティ パッケージに拡張され始めています。 Django、web.py、wxpython、numpy、matplotlib、PIL などのこれらのパッケージは、Python を種の豊富な熱帯雨林にアップグレードします。
今日、Python は 3.0 時代に入りました。 Python 3.0 には下位互換性がないため、2.0 から 3.0 への移行は簡単ではありません。一方で、Python のパフォーマンスはまだ改善の余地があり、Python のコンピューティング パフォーマンスは C++ や Java よりも低いです (Google の議論を参照)。 Python はまだ開発中の言語です。 Python の将来がどうなるか楽しみです。
Python Revelation
Python は優雅さ、明確さ、シンプルさを提唱しています (TIOBE 言語ランキングは 8 位、Google の 3 番目に大きい開発言語、Dropbox の基本言語、Douban のサーバー言語)。世の中には優れた言語が溢れていますが、代表的なPythonの開発の歴史は私に多くのインスピレーションを与えてくれました。
Python の開発プロセスでは、コミュニティが重要な役割を果たします。 Guido は、自分は万能のプログラマーではないため、フレームワークを策定することだけを担当していると考えています。問題が複雑すぎる場合、彼はその問題を回避する、つまり手を抜くことを選択します。これらの問題は最終的にはコミュニティ内の他の人によって解決されます。コミュニティの人材は非常に豊富で、Webサイトの制作や資金調達など、開発から少し離れたところでも、喜んで取り組んでくれる人がいます。今日のプロジェクト開発はますます複雑かつ大規模になっており、協力とオープンマインドがプロジェクトの最終的な成功の鍵となっています。
Python は、歴史に名を残した ABC であろうと、まだ使用されている C や Perl であろうと、リストに載っていない他の多くの言語であろうと、他の言語から多くを学びました。 Python の成功は、Python の元となるすべての言語の成功を表していると言えます。同様に、Ruby は Python から借用しており、その成功は、ある面では Python の成功も表しています。どの言語もハイブリッドであり、長所と短所があります。一方で、言語の「良し悪し」の判断は、プラットフォーム、ハードウェア、時代などの外部要因に左右されることも少なくありません。プログラマーは多くの言語の戦いを経験します。偏見と客観的な分析を持って各言語の具体的な長所と短所を区別し、内的要因と外的要因を区別してみてはどうだろうかと思いました。おそらくいつか、私が好きではない言語に、私が必要としているものがまさに含まれていることに気づくでしょう。
Python の将来の運命がどうなろうとも、Python の歴史はすでに興味深い小説です。
上記は、Python クイック チュートリアル (補足 04): Python の簡単な歴史の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。