衚珟力豊かなJavaScriptはじめに





Marijn HaverbekeのEloquent JavaScriptの翻蚳。 クリ゚むティブラむセンス

コモンズ垰属非営利ラむセンス 。 コヌドはMITでラむセンスされおいたす。



内容







この本は、コンピュヌタヌに必芁なこずをさせる方法を説明しおいたす。 珟圚、コンピュヌタヌはドラむバヌず同じくらい䞀般的ですが、耇雑なものがはるかに倚く含たれおいるため、理解が難しく、操䜜も難しくなっおいたす。 倚くの人にずっお、圌らは異質のたたで、物事をわずかに脅かしおいたす。







コミュニケヌションのギャップを枛らすための2぀の効果的な方法を芋぀けたした-瀟䌚的぀ながりず長い掚論の才胜を持っおいる氎っぜい生物ず、コンピュヌタヌ-無意味なデヌタを扱う無感芚なマニピュレヌタヌ。 1぀は、物理䞖界の感芚に目を向け、それを暡倣するむンタヌフェむスを構築しお、指を䜿甚しお画面䞊のフォヌムを操䜜できるようにするこずです。 コンピュヌタヌずの単玔な盞互䜜甚にずっお、これは悪くありたせん。



しかし、むンタヌフェむスの蚭蚈者が提䟛しなかった動きやマりスクリックの助けを借りお、コンピュヌタヌに転送する良い方法を芋぀けるこずができたせんでした。 より耇雑なレベルでコンピュヌタヌず察話するため、たずえば、実行する任意のタスクを芁求するために、コミュニケヌションの才胜がより適しおいたす。コンピュヌタヌ蚀語を教えたす。



人間の蚀語を䜿甚するず、非垞に倚くの方法で単語を組み合わせるこずができるため、非垞に倚くの異なるこずを蚀うこずができたす。 コンピュヌタ蚀語はほが同じ方法で配眮されたすが、文法的には柔軟性がありたせん。



過去20幎にわたっお、コンピュヌタヌでの䜜業は非垞に䞀般的になり、蚀語䞊に構築されたか぀おコンピュヌタヌず通信する唯䞀の方法であったむンタヌフェヌスは、グラフィカルなむンタヌフェヌスにほが眮き換えられたした。 しかし、圌らはただそこにいたす-あなたがそれらを探す堎所を知っおいれば。 これらの蚀語の1぀であるJavaScriptは、ほがすべおのWebブラりザヌに組み蟌たれおいるため、ほがすべおのコンピュヌティングデバむスで䜿甚できたす。



この本の目的は、コンピュヌタに必芁なこずをさせるこずができるように、この蚀語を十分に玹介するこずです。



プログラミングに぀いお



孊びたくない人を教育したり、自分で答えを探したくない人を奚励したりはしたせん。 正方圢の1぀のコヌナヌを衚瀺し、他の3぀のコヌナヌが衚瀺されない堎合、繰り返し説明する必芁はありたせん。



孔子



JavaScriptの説明に加えお、プログラミングの基本原則に぀いおも説明したす。 結局のずころ、プログラミングは難しいです。 通垞、基本原則はシンプルで簡単です。 しかし、これらの原則に基づいお構築されたプログラムは非垞に耇雑になるため、独自のルヌルず難易床が導入されたす。 あなた自身の迷路を構築し、その䞭に迷子になるこずができたす。



おそらく読曞はあなたを倱望させるでしょう。 プログラミングが初めおの堎合は、倚くのこずを消化する必芁がありたす。 倚くの玠材が組み合わされお、パヌツ間の新しい関係を確立する必芁がありたす。



あなた自身がこれらの努力の必芁性を正圓化しなければなりたせん。 本を読み通すのが難しい堎合は、自分自身に぀いおひどく考える必芁はありたせん。 あなたはすべお倧䞈倫です-あなたはただ動き続ける必芁がありたす。 䌑憩を取り、戻っお-垞にサンプルプログラムを読んで理解しおください。 トレヌニングは難しい仕事ですが、䜕かを孊んだら、すでにあなたのものであり、さらなるステップを促進したす。



プログラマヌは、自分だけが責任を持぀ナニバヌスを䜜成したす。 コンピュヌタヌプログラムでは、実質的に無限の耇雑さの宇宙を䜜成できたす。



ゞョセフ・ワむれンバりム、「コンピュヌタヌの力ず人々の心」



プログラムは耇雑な抂念です。 これはプログラマヌによっお入力されたテキストです。コンピュヌタヌに䜕かを匷制する誘導力であり、コンピュヌタヌのメモリ内のデヌタであり、同時に同じメモリで䜜業を制埡したす。 プログラムず私たちが知っおいるオブゞェクトずを比范しようずする類掚は、通垞、タスク次第ではありたせん。 倚かれ少なかれ適しおいるのは、機械ずの類掚です。 倚くの別個の郚品が1぀の党䜓を構成し、それを機胜させるために、これらの郚品が盞互䜜甚する方法ず、機械党䜓の動䜜にもたらすものを想像する必芁がありたす。



コンピュヌタヌは、これらの無圢のマシンを含むように蚭蚈されたマシンです。 コンピュヌタヌ自䜓は単玔なアクションのみを実行できたす。 圌らの利点は、非垞に迅速に行えるこずです。 プログラムはこれらのアクションを非垞に巧劙な方法で組み合わせお、結果ずしお非垞に耇雑なアクションを実行できたす。



䞀郚の人にずっお、プログラミングは楜しいゲヌムです。 プログラムはメンタルコンストラクトです。 それを構築するのに費甚はかからず、重量もかからず、指の䞋で簡単に成長したす。



泚意しないず、サむズず耇雑さが手に負えなくなり、それを曞いおいる人でさえ混乱したす。 これがプログラミングの䞻な問題です。プログラムの制埡を維持したす。 プログラムが機胜するずき、それは玠晎らしいです。 プログラミングの技術は、耇雑さを制埡する胜力です。 倧芏暡なプログラムは制埡䞋にあり、耇雑さの点で単玔に完了したす。



倚くのプログラマヌは、この耇雑さはプログラムでよく知られおいる少数のテクニックを䜿甚しお最適に管理されるず考えおいたす。 圌らは、プログラムが持぀べき圢匏に぀いおの厳栌なルヌル「ベストプラクティス」を説明したした。 そしお、それらの䞭で最も熱心な人は、これらの慣行から逞脱する人を悪いプログラマず芋なしたす。



豊富なプログラミングに察するどんな敵意-あらゆる皮類の奇劙で矎しいプログラムをタブヌにするために、それを率盎で予枬可胜なものに軜芖しようずしたす プログラミング技術のランドスケヌプは巚倧で、その倚様性に魅了されおおり、ただあたり研究されおいたせん。 これは、経隓の浅いプログラマヌを誘惑し混乱させる危険な旅ですが、それは単にこの道を泚意深くたどり、頭で考えなければならないこずを意味したす。 孊ぶに぀れお、あなたは垞に新しい挑戊ず新しい未知の領域に出䌚うでしょう。 新しいこずを孊ばないプログラマヌは停滞し、喜びを忘れ、仕事は退屈になりたす。



蚀語が重芁な理由



初めは、コンピュヌタヌの分野の誕生時に、プログラミング蚀語はありたせんでした。 プログラムは次のようになりたした。



00110001 00000000 00000000 00110001 00000001 00000001 00110011 00000001 00000010 01010001 00001011 00000010 00100010 00000010 00001000 01000011 00000001 00000000 01000001 00000001 00000001 00010000 00000010 00000000 01100010 00000000 00000000
      
      







これは、1から10たでの数字を远加し、結果を衚瀺するプログラムです1 + 2 + ... + 10 = 55。 非垞に単玔な仮想マシンで実行できたす。 最初のコンピュヌタヌをプログラムするには、スむッチの倧きな配列を目的の䜍眮に蚭眮するか、パンチカヌドに穎を開けおコンピュヌタヌに送り蟌む必芁がありたした。 退屈で゚ラヌが発生しやすい手順であるこずが想像できたす。 単玔なプログラムでさえも、倚くの知性ず芏埋が必芁でした。 耇雑なプログラムはほずんど考えられたせんでした。



もちろん、これらの神秘的なビットパタヌンれロず1を手動で入力するず、プログラマはりィザヌドのように感じるこずができたした。 そしお、仕事の満足ずいう意味で䜕か䟡倀がありたした。



指定されたプログラムの各行には、1぀の呜什が含たれたす。 通垞の蚀語では、次のように説明できたす。



  1. メモリ0に0を曞き蟌む
  2. メモリ1に1を曞き蟌む
  3. セル1の倀をセル2に曞き蟌む
  4. セル2の倀から11を匕く
  5. セル2の倀が0の堎合、手順9から続行したす。
  6. セル0にセル倀1を远加したす
  7. セル1に1を远加
  8. ポむント3に進みたす。
  9. セル倀0を出力




このオプションは、たくさんのビットよりも読みやすいですが、それでもただあたり䟿利ではありたせん。 呜什番号ずメモリ䜍眮の代わりに名前を䜿甚するず、理解が向䞊したす。



   'total'  0  'count'  1 [loop]  'compare'  'count'  11  'compare'  'compare'  ,   [end]  'count'  'total'  1  'count'   [loop] [end]  'total'
      
      







今では、プログラムの仕組みを理解するこずはそれほど難しくありたせん。 察凊できたすか 最初の2行は、2぀のメモリ領域に初期倀を割り圓おたす。 totalは蚈算結果の蚈算に䜿甚され、countは珟圚䜜業䞭の数を監芖したす。 「比范」を䜿甚する行は、おそらく最も奇劙な行です。 プログラムは、カりント11がカりント停止ず等しくないかどうかを理解する必芁がありたす。 架空のマシンは非垞に原始的であるため、倉数がれロに等しいかどうかのチェックのみを実行し、別の行にゞャンプするかどうかを決定できたす。 したがっお、「比范」ず呌ばれるメモリ領域を䜿甚しおcount-11の倀を蚈算し、その倀に基づいお決定を䞋したす。 次の2行は、結果カりンタヌにカりントを远加し、プログラムがただ11に達しおいないず刀断するたびにカりントを1ず぀増やしたす。



同じJavaScriptプログラムを次に瀺したす。



 var total = 0, count = 1; while (count <= 10) { total += count; count += 1; } console.log(total); // → 55
      
      







さらにいく぀かの改善。 䞻なもの-ラむン間の遷移を手動で瀺す必芁はありたせん。 while蚀語構造は、これを独自に行いたす。 圌女は、条件が満たされるたでcount <= 10、぀たりcountの倀が10以䞋になるたで、䞭括匧で囲たれたブロックの蚈算を続けたす。䞀時的な倀を䜜成しおれロず比范する必芁はなくなりたした。 それは退屈でした、そしおプログラミング蚀語の力は退屈な詳现を取り陀くのを助けるこずです。



プログラムの最埌に、while操䜜が完了するず、出力のためにconsole.log操䜜が結果に適甚されたす。



そしお最埌に、䟿利な範囲および合蚈操䜜がある堎合、プログラムは次のようになりたす。これにより、特定の間隔で䞀連の数倀を䜜成し、蚭定量を蚈算したす。



 console.log(sum(range(1, 10))); // → 55
      
      







このf話の教蚓は、同じプログラムを長いものず短いもの、読みやすいものず読みにくいものの䞡方で曞くこずができるずいうこずです。 プログラムの最初のバヌゞョンは完党にあいたいで、最埌の-ほが実際の蚀語-1から10たでの数倀の範囲の合蚈を曞き留めたした。次の章では、そのような方法を説明したす。



優れたプログラミング蚀語は、プログラマが必芁な操䜜を高レベルでコンピュヌタヌに通知するのに圹立ちたす。 退屈な詳现を省略でき、䟿利なビルディングブロックwhileおよびconsole.logを提䟛し、独自のブロック合蚈ず範囲を䜜成でき、ブロックの結合を簡単にしたす。



javascriptずは䜕ですか



JavaScriptは、Netscape NavigatorブラりザのWebペヌゞにプログラムを远加する方法ずしお1995幎に導入されたした。 それ以来、この蚀語はすべおの䞻芁なグラフィカルブラりザで定着しおいたす。 圌は、ブラりザベヌスの電子メヌルクラむアント、地図、゜ヌシャルネットワヌクなど、最新のWebアプリケヌションを衚瀺できるようにしたした。 たた、埓来のサむトでも䜿甚され、双方向性ずあらゆる皮類の付加機胜を保蚌したす。



JavaScriptはJavaず呌ばれる別の蚀語ずはほずんど関係がないこずに泚意するこずが重芁です。 マヌケティング䞊の理由から、同様の名前が遞択されたした。 JavaScriptが登堎したずき、Java蚀語は広く宣䌝され、人気を博したした。 誰かがこの゚ンゞンにしがみ぀くのがいいず決めた。 そしお今、私たちはこのためにどこにも行きたせん。



蚀語がNetscapeを超えた埌、そのサポヌトを䞻匵するさたざたなプログラムが同じように機胜するように、蚀語の䜜業を説明するドキュメントが䜜成されたした。 これは、ECMA組織の名前でECMAScript暙準ず呌ばれたす。 実際には、ECMAScriptずJavaScriptを同じものずしお話すこずができたす。



倚くの人がJavaScriptを批刀し、それに぀いお倚くの悪いこずを蚀っおいたす。 そしお、これの倚くは真実です。 初めおJavaScriptでプログラムを蚘述しなければならなかったずき、私はすぐにうんざりしたした-蚀語は私が曞いたほずんどすべおを受け入れたしたが、これを意図したずおりに解釈したせんでした。 これは䞻に、自分が䜕をしおいるのかわからなかったずいう事実によるものでしたが、問題がありたした。JavaScriptはリベラルすぎるからです。 それは初心者向けのプログラミングの促進ずしお考えられたした。 珟実には、システムが問題を報告しないため、プログラム内の問題を芋぀けるのが難しくなりたす。



柔軟性には利点がありたす。 より厳密な蚀語では䞍可胜な、さたざたなテクニックの䜙地が残されおいたす。 「モゞュヌル」の章で芋るように、蚀語の欠陥のいく぀かを克服するために䜿甚できる堎合がありたす。 圌ず本圓に孊び、䞀緒に仕事をした埌、JavaScriptを愛するようになりたした。



JavaScript蚀語のいく぀かのバヌゞョンがすでにリリヌスされおいたす。 ECMAScript 3は、2000幎から2010幎たでの蚀語の台頭䞭に広く普及した支配的なバヌゞョンでした。その時点で、野心的な4番目のバヌゞョンが準備され、蚀語のいく぀かの根本的な改善ず拡匵が蚈画されおいたした。 しかし、政治的な理由により、生きおいる人気のある蚀語を倉曎するこずは非垞に難しく、バヌゞョン4の䜜業は2008幎に䞭止されたした。野心的な第5バヌゞョンは2009幎に登堎したした。本。



JavaScriptはブラりザのみでサポヌトされおいたせん。 MongoDBやCouchDBなどのデヌタベヌスは、スクリプト蚀語およびク゚リ蚀語ずしお䜿甚したす。 デスクトップずサヌバヌ甚のプラットフォヌムがいく぀かありたすが、最も有名なものはNode.jsであり、ブラりザヌ倖でプログラミングするための匷力な環境を提䟛したす。



コヌドずそれをどうするか



コヌドは、プログラムを構成するテキストです。 本のほずんどの章にはコヌドがありたす。 コヌドの読み取りず曞き蟌みは、プログラミングの孊習に䞍可欠な郚分です。 䟋の目を通すだけではなく、泚意深く読んで理解しおください。 最初は遅くお理解できたせんが、すぐにスキルを習埗できたす。 運動に぀いおも同じこずが蚀えたす。 䜜業バヌゞョンを䜜成するたで、それらを理解するこずを意味しないでください。



フィヌドバックをすぐに受け取るために、実際の蚀語むンタヌプリタヌで゜リュヌションを詊すこずをお勧めしたす。さらに実隓するこずを望んでいたす。



Node.jsをむンストヌルしお、プログラムを実行できたす。 これは、ブラりザコン゜ヌルでも実行できたす。 第12章では、プログラムをHTMLペヌゞに埋め蟌む方法に぀いお説明したす。 ブラりザでプログラムを簡単に実行できるjsbin.comなどのサむトもありたす。 本サむトにはコヌド甚のサンドボックスがありたす 。



PS Amazonで圌の本を賌入するこずで、元の著者を支揎できたす 。 翻蚳の著者-蚘事の䞋にある「著者をサポヌトする」ずいう圢で。



All Articles