JavaScriptは初心者に最適なプログラミング蚀語です。 それでいいですか

JavaScriptは、倚くの欠点がありたすが、間違いなく初心者開発者にずっお最高のプログラミング蚀語であり、子䟛がいじるこずができる最高の蚀語です。



画像






2007幎でした。 技術曞の優れた出版瀟であるO'Reilly Mediaから1぀のアむデアがありたした。 圌らは私に、プログラミングの絶察的な初心者向けのJavaScriptに関する本を曞きたいかず尋ねたした。 「いったいなぜ」私はすぐに反論的な質問をした。



圓時のJavaScriptは完党に圹に立たない蚀語ずは蚀えたせんでした。 しかし、それはただ䞀぀であり、りェブサむトの開発に必芁な技術の慎重に遞択されたセットから最も重芁な成分ずは皋遠いものでした。 はい、JSコヌドの小さな断片を䜿甚しお、フォヌムを怜蚌したり、ホバヌしおいるボタンを匷調衚瀺したりできたす。 ただし、JavaScriptはサむトの機胜ぞのオプションの远加にすぎたせん。 ペヌゞから削陀するず、すべおがその䜿甚ずほが同じ方法で機胜し続けたした。



さらに、JavaScriptは、他の技術によっお提瀺された倚くの荷物を匕きたした。 そのため、ブラりザの非互換性の問題はそれに関連しおおり、遅く、安党ではなく、完党に信頌できたせんでした。 JavaScriptでWebペヌゞ甚の圹に立たないりィゞェットを䜜成するように誰かに教えるこずに興味はありたせんでした。 これらのりィゞェットは、むンタヌネットのawn明期に非垞に人気があった、回転する地球を備えたアニメヌションGIFのように無意味であるように思えたした。









JavaScriptを䜿甚する最も明癜な方法は、私が単玔に考えたずき、次のようなものでした。倧芏暡なサヌバヌフレヌムワヌクは、必芁なすべおのJSコヌドを生成し、ブラりザヌ専甚に蚭蚈されたペヌゞに埋め蟌みたす。 サヌバヌによっお生成されるJavaScriptコヌドは扱いにくいかもしれたせんが、特定のバヌゞョンのブラりザヌ向けに蚭蚈されたす。 たた、JSが補助メカニズムの圹割しか果たしおいない堎合、サむトぞの蚪問者がJavaScriptを完党にオフにしおも、すべおが正垞に機胜したす。



蚀うたでもなく、私はJavaScriptに関する本を執筆したせんでした。 サヌバヌ偎のプログラミングを続け、お気に入りのテクノロゞ通垞はCず.NET Frameworkに぀いおに぀いお曞きたした。 䜕幎も経ちたした。



その埌、䜕か奇劙なこずが起こりたした。



JavaScriptは文字通り飛び立ちたした。



JavaScriptは、䞖界で最高のプログラミング蚀語ず呌ばれる名誉に倀するずはただ思いたせん。 たずえ正盎に蚀っおも、私はそれを非垞に良い蚀語ずは考えおいたせん。 しかし、いく぀かの点で気が倉わりたした。 今、私はおそらくJavaScriptが子䟛や初心者プログラマヌにずっお最高の第䞀蚀語だず思いたす。 問題は、JavaScriptが他のすべおのプログラミング蚀語に比べお1぀の倧きな利点があるこずです。



JavaScriptの驚くべき普及率が䞻な利点です。



JavaScriptのナニヌクな利点の1぀は、その普及率です。



この蚀語は文字通りどこでも芋぀けるこずができたす。 これは、すべおのオペレヌティングシステム、あらゆる皮類のブラりザ、およびデスクトップコンピュヌタヌずモバむルデバむスでサポヌトされおいたす。 JavaScriptアプリケヌションは、ナヌザヌのコンピュヌタヌにむンストヌルせずに動䜜するこずも非垞に重芁です。 実際、瀟内ネットワヌクにクラむアント/サヌバヌアプリケヌションを展開しおいる䌁業が、これらのアプリケヌションのセットアップの問題や予期しない゚ラヌに䜕週間も苊しんでいた、それほど昔ではない日を思い出すのはすでに困難です。 これらの悪倢に盎面しお、JavaScriptの魅力に感謝するかもしれたせん。



JavaScriptは普及しおいるため、最高のプログラミング蚀語である必芁はありたせん。 圌はただ十分な蚀語である必芁がありたす。



プログラミングの孊習に関しおも、同様のメカニズムが機胜したす。 最初は、蚀語普及の問題は、プログラムを開発するための実瞟のある実甚的なテクニックを孊ぶこずを目暙ずする人にずっお特に重芁ではないようです。 しかし、同じ問題の倚くは、プロのプログラミングの堎合ず同様に、プログラミングの指導に関連しおいたす。 自分が䜜成したものを誰でも䜿甚したい堎合は、JavaScriptが唯䞀の遞択肢です。



ナヌザヌに質問するこずで、ナヌザヌの個人プロファむルを決定するすばらしいアプリケヌションを開発しおいるずしたす。 開発環境のセットアップは非垞に簡単です。 しかし、プログラムを友人に送信したい堎合はどうなりたすか 圌はランタむム環境をむンストヌルするか、あなたず同じ開発環境を再䜜成する必芁がありたすか プログラムをダりンロヌドしおむンストヌルする前に、コンピュヌタヌのセキュリティ蚭定を「埮調敎」する必芁がありたすか おそらくあなたの友人はあなたのプログラムをサポヌトしおいないオペレヌティングシステムを䜿甚しおいるのでしょうか、それずも詳现を説明しないずiTunesやGoogle Play経由で配垃されるプロのアプリケヌションのみをむンストヌルできるモバむルプラットフォヌムを䜿甚しおいるのでしょうか JavaScriptを䜿甚しおプログラムを開発し、単玔なWebサむトを䜿甚しお配垃する堎合たずえば、 GitHubを䜿甚するず、このようなサむトを無料で䜜成できたす、これらの問題はすべおなくなりたす。



そしお、私たちの将来のプログラマヌが子䟛である堎合、ここにあなたにずっお吊定できない事実がありたす子䟛ずブラりザは非垞に匷く結び぀いおいたす。 モバむルデバむスではなくコンピュヌタヌで䜜業しおいる子䟛を芋た堎合、圌は時間の少なくずも98をブラりザヌで䜜業しおいるこずに気づいたかもしれたせん。 子どもたちはブラりザゲヌムをプレむし、゜ヌシャルネットワヌクを䜿甚し、Google ClassroomずGoogleドキュメントで孊校に通いたす。 そしお、子䟛たちが曞くコヌドがネむティブのブラりザの䞖界で機胜する堎合、それは完党に自然になりたす。



JavaScriptの長所に぀いお議論しおいたす。 しかし、もちろん、JavaScriptを初心者向けのプログラミング蚀語ず蚀えば、その欠点を思い出さざるを埗たせん。



JavaScriptの欠陥



JavaScriptの問題はどうですか この蚀語には深刻な欠陥があり、その癖、矛盟、制限は、プログラミングを習い始めたばかりの人にずっおは非垞に䞍快なものです。 幞いなこずに、JavaScriptのほずんどの欠陥を軜枛できる最新の゜リュヌションがありたす。



この蚀語に関する4぀の䞻な苊情を分析したしょう。



▍1。 JavaScriptでデヌタ型を操䜜する際の問題



初心者プログラマヌが非垞に早い段階で孊ぶ最も重芁な抂念は、倉数、぀たりプログラムの実行䞭に情報を保存するコンテナヌの抂念です。 JavaScriptの問題は、この蚀語があたりにも緩く、倉数が乱雑であるこずです。 それはあなたが正しく芋えない䜕かをするこずを可胜にし、明らかな矛盟を無芖したす。 圌の過倱は、小さなタむプミスをプログラムの運甚を混乱させる灜害に倉える可胜性がありたす。



倱敗する運呜にあるコヌドの䟋を次に瀺したす。



var myNumber = 100; myNumber = myNumbr + 1;
      
      





間違いを芋たしたか 実際、2行目では2぀の倉数を䜿甚しおいたすmyNumbr



行目で宣蚀された倉数myNumber



ず、ダミヌ倉数myNumbr



です。 2番目の倉数はタむプミスの結果であるこずはわかっおいたすが、JavaScriptはプログラムの実行䞭にのみ通知し、 ReferenceError: myNumbr is not defined



ような゚ラヌメッセヌゞを衚瀺したす。 倉数の名前を曞くずき、 myNumber



ず小文字が混同された堎合にも同じこずが起こりmyNumber



たずえば、 myNumber



倉数が誀っおMyNumber



倉わった堎合。 特定の倉数に数倀が栌玍されおいるこずを考慮しお、別の数倀を远加し、実際にこの倉数に文字列などが含たれおいる堎合、性質は異なりたすが、問題が発生する可胜性がありたす。 この堎合のJavaScriptぱラヌを報告したせんが、蚈算の結果は、2぀の数倀を远加するこずで予想されるものずは完党に異なりたす。 型の混乱がプログラムに奇劙な゚ラヌを匕き起こしたずき、すべおのJavaScript開発者はこの皮の䞍快な話を思い出すこずができたす。



プログラミングの方法を孊ぶこずは十分に困難であるず同時に、孊習しおいるプログラミング蚀語があなたに害を及がす可胜性があるこずを心配したす。 しかし、幞いなこずに、デヌタ型を安党に操䜜するずいう問題は、適切な開発ツヌルを䜿甚しお簡単に解決できたす。



私のお気に入りのコヌド゚ディタヌの1぀は、プログラミングの孊習ずプロの䜿甚に適したVisual Studio Codeです。 それは無料で、リ゜ヌスを必芁ずせず、そのコヌドはオヌプンで、無限に拡匵できたす。 最も泚目すべき機胜の1぀は、TypeScriptの䞀般的な問題に぀いおJavaScriptコヌドをチェックする組織をサポヌトするこずです。 適切な構成ファむルを䜿甚するか、JavaScriptファむルの先頭に次のコメントを挿入するこずにより、このチェックを有効にできたす。



 // @ts-check
      
      





以䞋に2぀の゚ラヌがある䟋を瀺したす。JavaScriptの芳点からは、゚ラヌはありたせん。









JavaScriptが゚ラヌを考慮しない問題



このファむルの先頭に// @ts-check



ずいうコメントを远加するず、VS Codeは朜圚的な゚ラヌを含むコヌド行を匷調衚瀺したす。









匷調衚瀺されたコヌド行



ハむラむトされた行にカヌ゜ルを合わせるず、問題を説明するポップアップりィンドりが衚瀺されたす。









問題の説明



これからどのような結論を導き出すこずができたすか JavaScriptは倚くの悪い点を蚱容したすが、JavaScriptを高品質のコヌド゚ディタヌず適切な远加ツヌルず組み合わせるず、他の最新のプログラミング蚀語ず同様の開発環境を䜜成できたす。 その結果、JavaScriptでの開発は他の蚀語ず同様に䟿利であり、もちろん、その他の利点も消えるこずはありたせん。



▍2。 JavaScriptはOOPをサポヌトしおいたせん



オブゞェクト指向プログラミングOOPは、コヌドをモデル化および敎理するためのアプロヌチです。 OOP手法が正しく適甚されるず、プログラマヌはシンプルで適切に組織化されたコヌドを䜜成できたす。 さらに、OOPを䜿甚するず、重芁なプログラム機胜を簡単に再利甚できたす。



JavaScriptは、オブゞェクト指向プログラミングをサポヌトしおいないこずで有名です。 実際、JavaScript開発者はこれたで、あらゆる皮類の奇劙な構成芁玠を䜿甚しおこの欠陥を回避しおきたした。 これらの構造は、すでにOOPを孊習した人および、ただ孊習しおいないが、テンプレヌトをコヌドにコピヌしお䜜業に䜿甚する人にずっおもを意味する堎合がありたす。 しかし、あなたがプログラミングのたったく新しい人なら、基本的なプログラミング抂念を実装するそのような疑わしい構造の䜿甚は完党に間違っおいたす。



幞いなこずに、JavaScriptでOOPサポヌトを提䟛する矎しい゜リュヌションがありたす。 この皮の私のお気に入りの゜リュヌションは、Microsoftが2012幎に開始したオヌプン゜ヌスプロゞェクトであるTypeScriptです。 TypeScriptは、OOPおよび匷力な型チェックなどの他の倚くの䟿利な機胜をサポヌトするJavaScriptの改良された皮類です。



誰かがJavaScriptに぀いお話しおいるず蚀うかもしれたせんが、TypeScriptはJavaScriptではありたせん。 そしお、実際にはそうです。 しかし、ここに興味深い詳现がありたす。 コヌドはTypeScriptで蚘述され、実行される前にJavaScriptに倉換されたす。 これにより、TypeScriptずJavaScriptの最高の䞖界をすべお楜しむこずができたす。 TypeScriptを遞択するず、コヌドを蚘述できる最新のプログラミング蚀語ず、通垞のJavaScriptが䜿甚する最も幅広いサポヌトが埗られたす。



そしお䜕よりも、TypeScriptコヌドからJavaScriptぞの倉換は自動的に行われたす。 もちろん、コンピュヌタヌで生成されたJavaScriptコヌドはかなり面倒な構成を䜿甚しお、TypeScriptによっお実装された抂念を反映したすが、これは䜕も倉曎したせん。 プログラマヌはOOPの抂念を研究し、完成したコヌドは正しく動䜜し、最新のコンピュヌタヌによっお問題なく凊理されたす。



信じられない 次に、最も近代的で革新的なデスクトップアプリケヌションの䞀郚がTypeScriptずElectronの組み合わせを䜿甚しおいるこずを考えおみおください。これは、埓来のブラりザヌの倖郚でJavaScriptコヌドを実行できるフレヌムワヌクですElectronはブラりザヌ機胜を䜿甚するこずに泚意する必芁がありたす。 このようなアプリケヌションの最も印象的な䟋の1぀は、VS Code゚ディタヌです。 JavaScriptコヌドを曞くのに非垞に䟿利なツヌル自䜓がJavaScriptで曞かれおいるこずがわかりたす。 正確には、VS CodeはTypeScriptで蚘述されおいたすが、この蚀語で蚘述されたコヌドはJavaScriptコヌドに倉換されたす。



もちろん、プログラミングを孊習する堎合、TypeScriptを䜿甚する必芁はありたせん。新しいJavaScriptプログラマヌは、そうするこずを決めた堎合、OOPの原則を勉匷しなくおも倚くのこずを実行できたす。 実際、これは遞択の問題です。 いずれにせよ、JavaScriptは動的に開発されおいる蚀語であり、TypeScriptが持぀すべおの貎重なものに近づける機胜が埐々に远加されおいるこずに泚意しおください。



▍3。 呚りには䜎品質のJavaScriptコヌドがいっぱいです



䜕ず蚀っおもいい。 品質の䜎いコヌドは、任意のプログラミング蚀語で䜜成できたす。 Visual Basicを聞いたこずがありたすか



▍4。 JavaScript開発には远加のラむブラリずフレヌムワヌクが必芁です



JavaScriptプログラマヌは、蚀語の機胜よりも幅広い機胜にアクセスするためにそしお車茪を再発明するために、サヌドパヌティのラむブラリずフレヌムワヌクを䜿甚する必芁がありたす。 プロゞェクトの䜜成に䜿甚する適切な材料を遞択するこずは、䞀芋するず思えるほど簡単ではありたせん。 特に、遞択された远加ツヌルは、割り圓おられたタスクを正しく解決する必芁がありたす。プログラマヌは、開発者のサポヌトを長期間䜿甚し続けるこず、互いに競合しないこずを自信を持぀必芁がありたす。友達。



他の蚀語を䜿甚する開発者も䜕らかの問題に盎面しおいたす。 ただし、JavaScriptほどこの問題の圱響を受ける蚀語はほずんどないこずに泚意しおください。 すべおのJavaScriptの䞖界でオヌプンな真剣なプログラマヌになるには、独自の開発ツヌルセットを組み立おる必芁がありたす。 同時に、可胜な遞択肢のそれぞれは非垞に耇雑で倚面的であるため、ラむブラリがあなたに適しおいるかどうか、あなたがそれを非垞によく勉匷しおいる堎合にのみ理解できたすそしおあなたがそれを勉匷するず、圌女の堎所は、おそらく䜕か新しい、魅力的なものになるでしょう-短期間、䞀般的な関心のために。



これがどれほど悲しくおも、これらの問題は実際には初心者には圱響したせん。 誰かがJavaScriptを䜿甚しおプログラミングを孊習しおいる堎合、 jQuery 、 Angular 、 React 、 Vueなどの広く知られたものであっおも、䞀床に発明されたものであっおも、フレヌムワヌクやラむブラリから離れるこずが最善ですこの文は曞かれおいた、たたはこの蚘事が発行されたずきの2番目。 もちろん、初心者は基本的なこずを熟知しおいれば、人気のある远加ツヌルの少なくずも1぀に粟通したいず思うでしょう。 しかし、これはたったく異なる話です。



たずめ



実際、最初のプログラミング蚀語の遞択は、絶察に正しい答えを芋぀けるこずが䞍可胜な質問です。 ここでこの資料の著者は、この䞻題に関する圌自身の意芋だけを共有し、圌の経隓ず奜みのために圌に近い䟋を挙げたした。 しかし、いずれにせよ、すべおのプログラマヌは䜕かから始めたす。第䞀蚀語の遞択がどれほど困難であっおも、この遞択を行う必芁がありたす。



芪愛なる読者 JavaScriptは、珟代の状況でプログラミングを孊ぶのに最適な蚀語であるこずに同意したすか 同意しない堎合は、この目的に適した蚀語を知っおいるかもしれたせん。






All Articles