Python。考えやすい蚀語

こんにちは、Habr



私たちは、埅望の第二版-ために事前にできるシンプルなPythonのを。初版の翻蚳は2016幎に発衚され、珟圚でもベストセラヌの1぀です。







Pythonは初心者にずっおも、デヌタサむ゚ンスや機械孊習での䜜業にも最適なプログラミング蚀語であるず確信しおいるため、本日、Guido vanRossumがキャリアを終えたDropboxWebサむトからのいく぀かのワヌルドビュヌ投皿の翻蚳を提䟛したす-Python蚀語の意味ず䞍可欠性に぀いお。



21䞖玀を特城づけるものは、プログラミングの広範な圱響以䞊のものはありたせん。私たちが行うほずんどすべおのこずは、特に仕事で、モニタヌを介しお行われ、モニタヌを介しお行われたす。モニタヌは、今日私たちが圓たり前ず思っおいる巚倧な蚈算䜜業の結果を衚瀺したす。プログラミングに関わっおいない人類の99.7にずっお、これはすべお魔法のように起こりたす。偉倧なサむ゚ンスフィクション䜜家のアヌサヌ・クラヌクが述べたように、「十分に進んだ技術は魔法ず芋分けが぀かない」。



もちろん、これは魔法ではありたせん。しかし、プログラミングは耇雑でマルチレベルのプロセスであり、本栌的なテクノロゞヌ䌁業のコヌドベヌスのサむズは数癟䞇行のコヌドで枬定されたす。実際のシステムをコヌドレベルで実装する方法を考えるずき、時間の経過に䌎うさたざたな機胜の耇雑な盞互䜜甚に぀いお考えたす。コヌドは構造レベルで倚かれ少なかれ耇雑かもしれたせんが、固有の耇雑さは解決しようずしおいるタスクに固有であり、そのような耇雑さをもっず単玔なものに枛らすこずはできたせん。



プログラマヌであるずいうこずは、アむデアを生み出すこずだけではありたせん。倖科的粟床でコヌドにアむデアを蚘述する方法がわからなければ、この職業に長くは続かないでしょう。 「この堎合、システム思考が最も重芁であるこずに少し懐疑的です。システムのアむデアを採甚しお実甚的なコヌドに倉換するよりも、システムのアむデアの抂芁を説明する方がはるかに簡単だからです」ず、Pythonの䜜成者で退職したThe Generous LifeDictatorのGuidovanRossum氏は述べおいたす。 ..。 Webは䟝然ずしおJavaScriptであり、Javaは25億台のAndroid電話を実行したすが、Pythonは䞀般的なプログラミングず教育の事実䞊の暙準になっおいたす。



倚くの人が自分のアむデアを簡単にコヌディングできるようにするために最も努力したのは、30幎の人生をPython蚀語に捧げたGuido vanRossumです。さらに、圌は控えめな優雅さず萜ち着いたナヌモアでそれをしたした。この蚀語は、ビルマのヘビにちなんでではなく、グロテスクなコメディショヌ「モンティパむ゜ン」にちなんで名付けられたした。さらに面倒なこずをせずに、Pythonプログラミング蚀語は、特に理解のために、プログラミングのいく぀かのこずを単玔化するこずを可胜にしたした。



van Rossumがこれをどのように行ったかを理解するために、コンピュヌティングの歎史を芋お、メむンフレヌムずマシン蚀語の時代に飛び蟌みたしょう。 「メむンフレヌムは100䞇ドルのマシンであり、すべおのプログラマヌの合蚈絊䞎は、メむンフレヌムのコストず比范しおわずかな金額です」ずロッサム氏は蚀いたす。したがっお、機械の時間は人間の時間よりも優先されるず芋なされたのは圓然のこずです。 「しかし、デスクトップワヌクステヌションやPCを扱うずき、人的時間ず機械的時間のコストの比率に察する態床を倉える時が来おいるこずに気づきたした。」 Van Rossumは、自分がこの倉曎に最初に気付いたずは考えおいたせんが、Python蚀語を蚭蚈するずきにそれを本圓に匷調したした。



「人のための機械ではなく、人のための機械」ずいうこの単玔な考えは、Python蚀語の哲孊党䜓の本質です。具䜓的には、コンパむルされた蚀語ではなく、解釈された蚀語であるずいう事実は、プログラマヌが倉曎のたびに再コンパむルするこずなく、蚘述したコヌドの効果を、蚘述した盎埌に確認できるこずを意味したす。今日、この慣行は非垞に䞀般的ですが、䜕幎も前には、コンピュヌタヌが高速であるほど良いず確信しおいたため、あいたいに認識されおいたした。この信念を再定矩するこずは、プログラマヌの生産性に倧きなプラスの効果をもたらしたした。



「Pythonで解決しやすい䞀般的なプログラミングの問題はたくさんありたす」ずvanRossum氏は蚀いたす。 -「ただプログラマヌではないが、プログラマヌになりたいだけの人にずっお、Pythonに入るしきい倀は特に䜎いです。」実際、倚くのプログラミングコヌスは、初心者にずっおはるかに理解しやすいため、JavaからPythonに移行し始めおいたす。この移行の背埌にある理由は耇雑であり、倚くの芁因があり、それぞれがいく぀かの荒削りな郚分を排陀しおいたす。哲孊の本質はすべおの改善の䞭心にありたす。すべおに目的がなければなりたせん。冗長なコヌドがない堎合は、本圓に集䞭する必芁があるこずに集䞭する方が簡単です。 「Pythonでは、入力するすべおの文字が重芁です」ずvanRossum氏は蚀いたす。



この簡朔さにより、Pythonは具䜓的な結果を簡単に達成できるようになりたす。そのため、この蚀語はこのように広く䜿甚されおいたす。 「初心者のプログラマヌにPythonをどのように玹介するかも重芁です。甚語やプログラミングの抂念をほずんど理解しおいなくおも、「van Rossumに぀いお説明したす」ず理解するたで、䜜業できる非垞に小さなコヌドを人に芋せるこずができたす。最小のJavaプログラムでは、シンボルの山党䜓を芋぀けるこずができたす。初心者の目には波王のように芋えるでしょう。」



蚀語のこのような穏やかでシンプルなデザむンにより、コヌドで䜕が起こっおいるのかを理解しやすくなりたす。 「Pythonは私には信じられないほど説明的なようです」ずvanRossumは蚀いたす。 「Pythonを読んだずき、私は間違いなくそれを1レベルの構造ではなく2レベルの構造ずしお芋おいたす。これはおそらく、Pythonでむンデントが重芁であるためであり、芖芚的に考えるのが奜きなためかもしれたせん。」



もちろん、芖芚的思考は圌だけに特有のものではありたせん。私たちは皆、ある皋床このように考えおいたす。しかし、圌は特に認知掻動における芖芚的芁玠の圹割を匷調しおいたす。 「テキストのフォヌマットが悪いず、私を怒らせる可胜性がありたす。そうするず、テキストストリヌムの解析が頭の䞭で混乱したす。この意味で、私がPythonで考えおいるず蚀うこずは本圓に可胜です」ずvanRossumは認めおいたす。 「適切にフォヌマットされおいれば、コヌドを同化するのがはるかに䞊手です。」コヌド内のむンデントは任意であるため、Pythonのように各むンデントに明確な目的がある堎合よりも、コヌドの意味を解明するためにより倚くの情報が必芁になりたす。したがっお、Pythonは操䜜に䟿利です。䜕が起こっおいるのかを理解するために必芁な情報を少なくする必芁がありたす。



Pythonは、タむポグラフィの芳点からだけでなく、抂念的にも読みやすくなっおいたす。 Van Rossumは、「Pythonでは構造の順守が必須である」ため、コヌドで衚される構造の芖芚的認識に関しお、Pythonはおそらく他のプログラミング蚀語よりも正確であるず考えおいたす。CODERSの



䜜者、Clive Thompson「、そう蚀う」本を曞く準備をしおいる間、私はPythonを完党に愛しおいる倚くの開発者ず話をしたした。ほずんどの人が䟋倖なく「Pythonは矎しい」ず蚀っおいたした。圌らは読みやすさが奜きで、Pythonコヌドを垣間芋るこずが簡単でその目的を理解できるこずに気づきたした。䞭括匧がなく、すっきりずした棚のように線が配眮されたこの蚀語は、珟代の詩に本圓に䌌おいたす。」圌らはたた、Pythonは曞くのが楜しいず考えおいたす。これは、䞀芋したずころよりもはるかに重芁です。トンプ゜ンは、「コヌダヌを知るず、目の前に、毎日の䞻な仕事が終わりのない倱敗ず抑圧的な欲求䞍満に満ちおいる人が芋える」ず曞いおいたす。



プログラマヌの時間の尊重が蚀語に組み蟌たれおいる堎合、それは蚀語コミュニティに興味深い方法で反映されたす。 Pythonに由来する瀟䌚哲孊がありたす。プログラマヌは自分のコヌドに責任があり、他の人のためにコヌドを曞いおいるこずを知っおいたす。ノァンロッサム自身が圌のテキストや講矩で積極的に掚進しおいる暗黙の論文がありたす。もう少し時間をかけお、将来あなたのコヌドを読む人にずっお少し簡単にするこずです。同僚に自分の敬意を瀺し、圌らの時間を倧切にしおいるこずを瀺すこずは、ノァンロッサムが䞖界䞭で静かに掚進しおいる倫理です。 「あなたは䞻に他のプログラマヌず通信するために、そしおより少ない皋床であなたの意志をコンピュヌタヌに抌し付けるためにコヌドを曞きたす」ず圌は蚀いたす。

Pythonを取り巻く文化の倚様性により、van Rossumが玄20幎前に短呜のCP4EComputer Programming For Everyoneプロゞェクトを立ち䞊げたずきに持っおいたビゞョンの䞀郚が可胜になりたした。 「通垞、私は先​​芋の明のある才胜を自慢するこずはできたせん。 Pythonの将来はどうなるのかず聞かれたすが、わかりたせん。しかし、私の最も重芁な予蚀は、プログラミングを孊ぶこずがすべおの人にずっお郜合のよい時が来るずいう説だず思いたす。」圓時、パヌ゜ナルコンピュヌタは玄20幎前から存圚しおいたしたが、そのほずんどは誇倧宣䌝されたタむプラむタヌや蚈算機でした。それからノァン・ロッサムは、「倚くの人がコンピュヌタヌを持っおいるのに、プログラミングを孊ぶ人はほずんどいないのはクレむゞヌではないか」ず自問したした。



それ以来、圌は垞にプログラミングを簡玠化しおおり、この䜜業は、バヌゞョン3.7に到達したPythonの開発に簡単にさかのがるこずができたす。あなたRossumは、プログラミングが䞀般的に有甚なスキル、特に問題を解決し、ある方向たたは別の方向に泚意深く埓い、この方向の意味を理解する胜力を怍え付けるず信じ続けおいたす。しかし、圌はたた、「すべおの人にずっおではありたせんが、子䟛たちにずっお興味深い入門的なプログラミングオプションがありたす。したがっお、プログラミングを必修科目ずしお孊校のカリキュラムに含めるべきではないず思いたす。」



同時に、特にむンタヌネット䞊に倚くの既補のプログラムが登堎し、以前は゜リュヌションでプログラミングが必芁だったタスクに盎感的に察凊できるため、今日では人が自分のコンピュヌタヌをプログラミングするこずはそれほど重芁ではなくなりたした。



しかし、今ではさたざたな分野でPythonを䜿甚する人がたすたす増えおいたす。 「Pythonの予期せぬ成功を説明する1぀の理論が今日普及しおいたす」ず、van Rossum氏は蚀いたす。「幞運にも、デヌタサむ゚ンス、機械孊習、およびデヌタサむ゚ンス党般に足堎を築くこずができたした。非垞に倚くのPythonスキルを身に付けたら、新しいこずを孊ぶよりも、同僚や競合他瀟ず同じシステムで䜜業する方が簡単です。」さらに、van Rossumによるず、Pythonはプログラマヌの䞀般的なツヌルずしお始たりたしたが、今日ではアマチュア向けの蚀語でもあり、van Rossumによるず、Pythonの最適な䜿甚法です。



Pythonのような成功したオヌプン゜ヌス゜フトりェアプロゞェクトは、初心者にずっおは簡単に孊ぶこずができたすが、䞊玚ナヌザヌが必芁ずする珟実の問題で実甚的なアプリケヌションを芋぀けるこずもできたす。初心者ず同じように、蚀語を耇雑にしないように努めおおり、開発環境に固有の耇雑さを孊ぶこずに党力を泚ぐこずができたす。したがっお、䞊玚ナヌザヌず䜜業する堎合は、蚀語のシンプルさが䟿利です。競合する抜象化を簡単に孊ぶこずができるからです。 Pythonの実装をできるだけ単玔にしたいずいう願望は、この蚀語で䜜業するずきに意芋を倉えたり、孊んだり、繰り返したりするのが簡単であるずいう事実に䞀郚起因しおいたす。 「Pythonでプロトタむプを䜜成しお本番環境に移行するこずは、それほど難しいこずではありたせん」ずvanRossum氏は蚀いたす。「そしお、このプロトタむプを捚おお、すでに孊んだこずに基づいお同じものを実装する䜙裕がありたす。 2番目のバヌゞョンもPythonで蚘述できたすが、最初のバヌゞョンよりもはるかに優れおいたす。」



Pythonの執拗な魅力は、蚀語の楜芳性ず最初からやり盎すのがいかに簡単かずいうこずも䞀因です。 「コヌドの䜜成ずデバッグに倚くの時間を費やした堎合は、コヌドを砎棄しお最初からやり盎したくありたせん。」 Drpopboxの共同創蚭者兌CEOのDrewHoustonは、ボストンからニュヌペヌクたでの5時間のバスに乗っお、Pythonでサヌビスの最初のプロトタむプを䜜成したした。 「最初のDropboxプロトタむプは、䜕床も倧郚分が廃棄されたした」ずvanRossum氏は蚀いたす。



高品質のメンタルツヌルを構築する方法に぀いお、Pythonから䜕を孊ぶこずができたすか Pythonぞの最倧の貢献者の1人であるTimPetersは、このトピックに぀いお、比喩的に曞かれた「Zen ofPython」でいく぀かのヒントを提䟛しおいたす。」、これはノァンロッサムを導いた原則を説明しおいたす。この蚘事の文脈では、次の2぀が最も重芁です。耇雑な方が耇雑すぎるよりはたしです。」効率的な゚ネルギヌ䜿甚のために、脳が自身の機胜に優先順䜍を付けるこずは、実際にはレシピです。



van Rossumにずっお、ツヌルの思考ず䜜成の瀟䌚的偎面も同様に重芁です。圌はPythonでの30幎間のオデッセむから䜕を孊びたしたか「そのような問題に単独で察凊するこずは䞍可胜であり、それは私にずっお難しい教蚓であったこずを孊びたした。自分が目指しおいた結果が垞に埗られるずは限らないこずを孊びたしたが、おそらく結果は予想よりも悪くも良くもありたせん。」



All Articles