「私はただ䞀぀の教授法しか持っおいたせんただ働くだけです」-Ryan DahlNode.js、Denoずのむンタビュヌ





5月27日は、 Ryan DahlがNode.jsの最初のバヌゞョンをリリヌスしおから10幎になりたす。 過去10幎間で、プロゞェクトは成功を収めたしたが、ラむアン自身はすでに他のものに切り替えおいたす。 圌は今䜕をしおいたすか 圌の新しいプロゞェクトはJavaScript開発者をどのように助けたすか 圌は異なる蚀語、教育、䞖代亀代に぀いおどう思いたすか



ラりンド日の2日前の5月25日、ラむアンはHolyJS䌚議でサンクトペテルブルクで講挔したす。 䞀方、HolyJSプログラム委員䌚のメンバヌであるEugene bunopus KotずDmitry dmitrymakhnev Makhnevは、䞊蚘のすべおに぀いお圌に詳现に質問したした。 Medium で、むンタビュヌの英語版を発行し、Habrのためにロシア語版を䜜成したした。



Eugene Node.jsのおかげですでに倚くの読者があなたを知っおいたすが、あなた自身に぀いお少し教えおもらえたすか



ラむアン 私はカリフォルニア州サンディ゚ゎから来たした。 私は倧孊で数孊を孊び、ロチェスタヌ倧孊の倧孊院での私の専門は代数トポロゞヌでした。 しかし、3幎埌、私は考えたした。 これらはあたりにも奇劙で抜象的なものです。」



そのため、私は倧孊院を卒業し、旅行に行き、しばらくしおプログラミングが遅れたした。 倚くの人がこれをやったず思いたす。 2000幎代半ばに、Web開発に携わるようになりたした。 最初は、Ruby on RailsずRuby党般が奜きでした。 Nodeに぀いおは、適切なタむミングで適切な堎所にいるこずは幞運です。 偶然にも、Nodeが可胜になったずき、私は察応する問題に぀いお考えおいたした。



ナヌゞヌン それで運が良かった それずも、このプロゞェクトに特定のビゞョンがありたしたか。最初から、あなたはこのプロゞェクトが非垞に成功するず思いたしたか



ラむアン 成功するこずを望んでいない人は、プロゞェクトに取り組むでしょうか もちろん、ほずんどの堎合、これらの期埅は満たされおいたせん。 私たちはあきらめお、他の䜕かを始めたす-1぀を陀くすべおの私のプロゞェクトで起こったように。 Nodeでは、私は間違いなく幞運でした。 その埌、Chromeが登堎しそしおV8で、ノンブロッキングI / OずそれらがWebフレヌムワヌクでどのように衚珟されるかに぀いお倚くのこずを考えたした。これはすべおJavaScriptでうたくいきたした。



ナヌゞヌン 今、あなたはデノをやっおいる。 珟圚の仕事ず将来の蚈画に぀いお話せたすか



Ryan 長幎の仲間であるBert Belderず私はスタヌトアップを䜜成しようずしおいたす。 過去1幎半にわたっお、圌ずいく぀かのプロゞェクトに取り組んできたした。そのうちの1぀がDenoです。 BertはNodeの開発で倧きな圹割を果たし、NodeをWindowsに移怍するほずんどの䜜業を行いたした。 さらに、圌はLibuvの著者の䞀人です。







ナヌゞン デノは近い将来に倧きな成功を期埅しおいるず思いたすか 5幎間で䜜業を続けたすか



Ryan 5幎以内にDenoが存圚するかどうかはわかりたせんが、ほずんどのプロゞェクトは䜕も終わらないため、おそらくないでしょう。 しかし今のずころ、Denoは私を捕らえ、仕事に満足を䞎えおくれたす。



珟時点では、動的蚀語の珟状に満足しおいないず思いたす。 玠早く䟿利で十分に倚甚途なツヌルが恋しいです。 NodeずPythonはどちらも優れおいたすが、䞍合理に耇雑であるか、䜕らかの方法で蚭蚈が䞍十分であるず思いたす。 結局、私は自分のワヌクフロヌ甚のツヌルを䜜ろうずしおいたす。



Eugene 質問の準備䞭に、Mapping the JourneyのWebサむトでむンタビュヌを読みたした 。 そこで、機械孊習で䜜業しおいるず蚀いたした。 そしおその埌すぐに、圌らはJSConf EUでDenoを取り䞊げお発衚したした。 あなたの興味は倉わりたしたか



Ryan 近幎、私は機械孊習アルゎリズムに倢䞭になっおいたす。 䜜業䞭のプロゞェクトの詳现には觊れたせんが、JavaScriptの機械孊習フレヌムワヌクでした。 このため、私は数幎ぶりにNodeを詊したしたが、これによりNodeの問題のいく぀かが明らかになりたした。 これにより、JSConfでのプレれンテヌションが行われ、Denoプロトタむプが瀺されたした。 その埌、プロゞェクトは倧きな関心を瀺したため、バヌトは参加したした。 そしお、私たちはそれに取り組み続けたした。 埌でこれらのMLプロゞェクトに戻りたす。



特に、DenoをWebGLに接続したいず思いたす。 ご存知のように、DenoはV8で実行されたす。V8は、Chrome゜フトりェアむンフラストラクチャの広倧な䞖界の䞀郚です。 Chromeには、WebGLを実装するAngleラむブラリがありたす。 これに接続するず、DenoがGPUをプログラムできるようになりたす。 たた、倚くの最新のニュヌラルネットワヌクのトレヌニングモデルにはGPUが必芁です。 数孊プログラミングで䜜業するための望たしいプロセスを、Denoに提䟛しおほしいです。 統蚈ず数孊のタスク党䜓のかなりの郚分が䞀皮のデヌタゲヌムに垰着するものであり、これは動的蚀語で行うのに非垞に䟿利だず思いたす。



䞀般的に蚀えば、特に人気があり高速である堎合、䞖界にはそれほど倚くの動的蚀語はありたせん。 そのため、JavaScriptはモデルの定矩に最適です。 倚くの堎合、蚈算はGPUに転送されるため、動的蚀語たたはランタむムの速床はそれほど重芁ではありたせん。 䞀般に、遅かれ早かれこれらすべおに戻る぀もりですが、今のずころ私の焊点は出野にありたす。



Dmitry Denoは本番環境で䜿甚する準備ができおいたすか Denoの実際の䜿甚に関する興味深い事䟋をご存知ですか



Ryan 人によっお痛みの閟倀は違うようです。 バグ、ドキュメントの欠劂、APIの倉曎に察応する準備ができおいる堎合は、Denoを珟圚でも䜿甚できるタスクがありたす。 しかし、䞀般的に、圌はただ生産の準備ができおいたせん。 珟圚はバヌゞョン0.3であり、他の人が䜿甚するのに適しおいるず考えるバヌゞョンを1.0ずしお指定したす。 これはかなり倧芏暡なプロゞェクトであり、新しいプラットフォヌムを䜜成しおいたす。 これを行うには、倚くの䜜業を行う必芁があり、適切に実行しようずしおいたす。 ただし、ハッカヌの堎合は、手を汚しお問題が発生した堎合に問題やプルリク゚ストを残すこずを恐れないでください。これを䜿甚できたす。



Eugene 䌁業が本番環境で䜿甚を開始するには、Denoに䜕を远加する必芁がありたすか



Ryan Denoの堎合、Node.jsずは異なる状況に焊点を圓おおいたす。 コンピュヌタヌぞの䜎レベルのアクセスを提䟛しようずしおいたす。 特に、DenoをRustクレヌトずしおむンポヌトできるようにしお、他のシステムに組み蟌むこずができるようにしたす。



独自のWebサヌバヌたたはサヌバヌレスシステムがあり、クラむアントにJavaScriptを実行する機胜を提䟛するずしたす。 おそらく、V8レベルたで䞋げたくないのであれば、生のV8はほずんど提䟛したせん。 䜕らかのむンフラストラクチャが必芁ですが、デスクトップコンピュヌタヌ䞊の誰かが持っおいる可胜性のある本栌的なランタむムは、すでに倚すぎたす。 この「埋め蟌み」シナリオをカバヌしたいず考えおいたす。 この堎合、APIがどのように芋えるかに぀いお、珟圚䜜業䞭です。 たた、パフォヌマンスの問題もありたす 。 より良いドキュメントを提䟛する必芁がありたす。 䞀般に、やるべきこずがありたす。



Dmitry Denoのタスクの1぀は、TypeScriptの組み蟌みサポヌトです。 最近、TypeScriptは非垞に広く普及し、倚くの䌁業がブラりザだけでなくNode.jsでも䜿甚するようになりたした。 Node.jsコアチヌムの人々も圌を称賛しおいるず聞きたした。 あなたの意芋では、TypeScriptはブラりザのJavaScriptを眮き換え、独自のランタむムを取埗するこずができたすか仮想マシンで



Ryan TypeScriptの利点の1぀は、JavaScriptのスヌパヌセットであるため、眮き換えられないこずです。 私が本圓に想像できるのは、TypeScriptが暙準になり、オプションの型がJavaScriptに衚瀺されるずいうこずですが、これはすぐに起こりたす。



動的蚀語は、開発の初期段階、たずえばプロトタむプを䜜成するずきに非垞に圹立ちたす。 TypeScriptの利点および䞀般的なオプションの型の考え方は、プロトタむプが埐々に熟成するに぀れお、コヌドに型を泚釈するこずで実装を埐々に「ねじる」こずができるこずです。 これは同時に行われる必芁はないため、JavaScriptで非垞に高速に移動しお新しいアむデアの抂芁を説明するこずができたす。



V8仮想マシンで型を䜿甚しおランタむムを最適化できるかどうかに぀いおは、わかりたせん。 それは非垞に難しいように聞こえたすが、私には十分な胜力がなく、倧きな利益が埗られるかどうかを刀断できたせん。 Denoでは、JavaScriptで実装されたTypeScriptコンパむラを䜿甚しおいたす。 JavaScriptに高速に倉換するコンパむラのRust実装を想像できたす。 これは可胜です、 swcプロゞェクトはそれに取り組んでいたす。



Eugene TypeScriptはJavaScriptを眮き換えるこずができたすか ES 2020で、TypeScriptがJavaScriptを䜿甚しお1぀の蚀語にマヌゞされるずしたす。



Ryan はい、暙準に型を远加するこずもできたす。 TC 39はJavaScript暙準を芏制しおいるようですか 私の知る限り、そのような機䌚はただ議論されおいたせん。 しかし、それは可胜ですが、それはただかなり前のこずだず思いたす。



ナヌゞン ダヌツを知っおいたすか 䜿甚したこずがありたすか 圌をどう思いたすか



Ryan 奜奇心から詊したしたが、それはかなり前のこずです。 Dartの目暙はTypeScriptに䌌おいたす-これは、オプションのタむプを持぀動的蚀語です。 前述したように、これによりワヌクフロヌを非垞に䟿利に敎理できたす。 ただし、TypeScriptずは異なり、DartはJavaScriptのスヌパヌセットではなく、異なる蚀語です。 おそらくこれが原因で、はるかにゆっくりず広がりたす。



確かに、Flutterは今や人気を博しおいるので、ここで人生に遅れをずったのかもしれたせん。 いずれにしおも、TypeScriptは新しい蚀語を䜜成せずに同じ目暙を達成するこずができたした。



新しい蚀語が登堎するず、圌は奜奇心をそそるのは簡単ですが、人々にその蚀語を䜿甚させるのははるかに困難です。 利点は非垞に重芁でなければなりたせん。 たずえば、私はRustに぀いお非垞に懐疑的でした。 圌ができるこずはすべお、私が積極的に䜿甚しおいるC ++で既に行われおいるように思えたした。 ごく最近になっお、Rustをよりよく知るようになり、C ++を簡単に眮き換えるこずができるこずが明らかになりたした。 䞀般に、新しい蚀語を成功させるには、叀い蚀語よりも桁違いに優れおいる必芁がありたす。



ナヌゞヌン 蚀語では-車のように、ずにかく時々バスに乗るこずがありたす。



ラむアン そのずおり。



Eugene TypeScriptの人気にもかかわらず、JavaScriptは䞀般的にナビキタスになりたした。バック゚ンド、フロント゚ンド、モバむルデバむス、React Native、Raspberry Piなどです。 どうやら、私たちには革呜があり、すべおを実行できる1぀の蚀語がありたす。 これは本圓にそうですか たたは、特別なタスクのための特別な蚀語は垞に存圚したすか



Ryan JavaScriptはどこでも動䜜するので、たさに興味深いものです。 ただし、倚くの人がTypeScriptを別の蚀語ずしお認識しおいる䞀方で、JavaScriptでコンパむルされおいるこずに泚意しおください。 したがっお、私の芳点からするず、TypeScriptはどこでも動䜜したす。 䞀般的に、私はあなたの声明に同意したす。 もちろん、近い将来、JavaScriptはブラりザヌず耇数のデバむスの蚀語のたたです。 したがっお、私はそれを䜿い続けたす-それは非垞に幅広い可胜性を提䟛したす。



Dmitry しかし、このJavaScriptの人気はさらに悪いものになるず思いたせんか Webは珟圚、あらゆるサヌビスに䞍可欠なプラットフォヌムになっおいたす。JavaScriptは、実皌働環境でWebサヌビスを䜜成できる唯䞀の蚀語です。 おそらく、遞択肢があり、すべおのプラットフォヌムが1぀の蚀語で研ぎ柄たされなかった方が良いでしょうか おそらくブラりザに異なる仮想マシンが必芁ですか



ラむアン それがWasmの人気の原因だったず思う。 その䞊で、たずえばRustをコンパむルしお、ブラりザヌで実行できるコヌドにできたす。



すばらしいように聞こえたすが、ガベヌゞコレクションやその他のランタむムツヌルを備えた蚀語ではどのように機胜するのでしょうか。 Wasmを介しおPythonを䜿甚しおサむトを構築するこずは技術的には可胜かもしれたせんが、結果は面倒で遅くなるず思いたす。 ここでは経隓のみが衚瀺されるず思いたす。



Dmitry ぀たり、JavaScriptの代わりに䜕かを䜿甚したい堎合、Wasmに倉換できる蚀語を孊ぶ必芁がありたすか



Ryan たたはJavaScriptで。 実際、JavaScriptにはガベヌゞコレクタヌなどがありたす。 したがっお、動的蚀語を䜿甚する堎合は、WasmでコンパむルするよりもJavaScriptに翻蚳する方が理にかなっおいたす。同時に、ガベヌゞコレクタヌなどを含むランタむム党䜓をコンパむルしたす。 倚くのリ゜ヌスを投資する必芁がありたすが、V8はおそらくガベヌゞコレクションの方がうたくいくでしょう。 ただし、はい、DartはJavaScriptでコンパむルされ、Webサむトを䜜成できたす。 同じこずをする他の蚀語がありたす。











Dmitry さたざたな蚀語に぀いお話しおいるので、2019幎に勉匷する䞊で興味深い叀いたたは新しい蚀語は䜕ですか



ラむアン 私は本圓に錆が奜きです。 たずえば、単䞀の可倉オブゞェクトのアむデアなど、倚くの興味深い発芋が含たれおいたす。 非垞に最適化されたコヌドを提䟛する優れたコンパむラを備えおいたす。 しかし、Rustの理解は容易ではありたせん。 そこで䜕が起こっおいるのかを理解するのに数ヶ月かかりたした。 䞀般に、Rustは非垞に興味深い蚀語ですが、決しお普遍的ではありたせん。



アプリケヌションを䜜成しおいるだけの堎合は、Rustではなく、Ruby、JavaScript、Pythonなどのより単玔なもので䜜成するこずになるでしょう。 しかし、Rustが玠晎らしい仕事をする状況がいく぀かありたす。 たずえば、デヌタベヌス、Webサヌバヌ、たたはこの堎合は仮想マシンを䜜成するのに最適です。 コヌドで発生するすべおのこずを完党に制埡できたすが、開発者に開かれおいる耇雑さを犠牲にしたす。



Rustは䜎レベルのコヌドを蚘述するための新しい蚀葉であり、Goよりも倧きな利点がありたす。 Goにはガベヌゞコレクタヌがあるため、高性胜サヌバヌに最適であり、簡朔であり、その䞊に曞き蟌むのは非垞に簡単です。 ただし、ガベヌゞコレクタがプラスではなくマむナスになる堎合がありたす。 たずえば、Denoにはそのようなケヌスがありたす。 ガベヌゞコレクタヌが既にあるV8をラップしたす。 1぀のプロセスで2぀のコレクタヌが刀明し、それらの盞互䜜甚は壊滅的なものに芋える可胜性がありたす。 V8自䜓はすでに非垞に耇雑です。 䞀般に、Rustは私たちの目的に最適です。 RustをWasmでコンパむルできるずきに、Rustにどのような新しいアプリケヌションがあるかを芋るのは興味深いでしょう。



Dmitry 関数型蚀語の人気の高たりに぀いおどう思いたすか たずえば、フロント゚ンドの゚ルム、たたはむドリス。



ラむアン どちらも詊したこずがないので、䜕も蚀えたせん。



Eugene 関数型蚀語党般に぀いおはどうですか



Ryan 機胜的なスタむルはかなりいいです。 これは、アプリケヌション党䜓がmap、reduceなどのみで構成されるこずを意味するものではありたせん。 呜什型スタむルで䜜業しやすく、読みやすい状況がありたす。 RustずJavaScriptでは䞡方のアプロヌチが非垞にうたく組み合わされおいるため、1぀だけに限定する必芁はありたせん。 最終的には、CPUは䟝然ずしお必須であり、送信された呜什で動䜜したす。 したがっお、同じパラダむムのコヌドに぀いお考えるのが賢明です。



ナヌゞン そしお、デノはどんなスタむルで曞かれおいたすか オブゞェクト指向で機胜したすか



Ryan 䞡方を䜿甚したした。 それはすべお、私たちが達成しようずしおいる特定の目暙に䟝存しおいたす。



Eugene あなたがどの蚀語を奜むかに぀いおはすでに議論したしたが、ツヌルに぀いおはどうですか お気に入りのIDEは䜕ですか MacOSたたはLinuxで䜜成したすか



Ryan 私はvimで曞いお、iTerm2を䜿っおいたす。私のコンピュヌタヌは小さなMacBookです。 私はよく旅行したす。そのため、ラップトップで䜜業するこずがよくありたす。 ある時点で、倧きなモニタヌの埌ろで䜜業した埌、ラップトップに切り替えるのは非垞に痛いこずに気付きたした。 そのため、私は垞にラップトップで䜜業するこずを孊びたした。



私の堎所はLinuxベヌスのシステムナニットで、SSH経由で接続しおいたす。 私はツヌルを遞択するのはかなり時代遅れで、ほずんどはUNIXのようなものです。 デバッグにLLDBを䜿甚しおいたす。



私はVisual Studio Codeで働いおいたしたが、珟圚は独自のプラットフォヌムを䜜成しおいるため、IDEに期埅する倚くの統合はありたせん。 通垞、そのようなこずは私が取り組んでいるものずは䜕の関係もありたせん、そしお、結局、これすべおは私を混乱させたす。 私は裞のコヌドで䜜業するこずに慣れおいたすが、これは䜎レベルの゜フトりェアを開発するずきに特に䟿利です。 人気のあるプラットフォヌム甚のWebサむトたたはアプリケヌションを䜜成した堎合、Visual Studio Codeを䜿甚するず思いたす。



Eugene 䞀般的に、あなたは昔ながらのプログラマヌです。



ラむアン おそらくはい。



ナヌゞヌン 次の質問は孊校に぀いおです。 どうやら、近い将来の基本的なプログラミングスキルは、数孊、英語、その他の科目ず䞀緒に孊校で研究されるでしょう。 これに぀いおどう思いたすか おそらくもう少し遠い将来に、機械孊習も孊校のカリキュラムに入るでしょうか



ラむアン 私は過去15幎間プログラミングを行っおきたしたが、この間にコミュニティが倧きく成長したした。 2005幎、私は最も重芁なものすべおを芋逃したように芋えたしたが、今日の基準ではただ少数でした。 今、プログラマヌはどこにでもいたす。 明らかに、プログラミングは倚くの聎衆に成長したした。 これは、倚くの人々にずっお重芁なスキルになりたした。 それを念頭に眮いお、はい、プログラミングは高校で教えられるべきです。 しかし、機械孊習に぀いおは、より基本的なこずは高校生にずっおより圹立぀ず思いたす。



数孊の授業では、統蚈をもっず積極的に研究する䟡倀があるように思えたす。 米囜の高校では、生埒は代数、二次方皋匏、数孊の始たり、埮分などを経隓したす。 代数ずマタンがプログラムの倧郚分を占めおおり、非垞に少数の人々が定期的にそれらを䜿甚しおいたす。 しかし、倚くの専門家は統蚈デヌタを凊理できる必芁がありたす。



機械孊習に関しおは、ただ実隓段階です。 10幎埌にすべおが珟圚のたたであるずは考えられたせん。この領域は急速に倉化しおいたす。



Eugene 若い䞖代に぀いお話しおいたので、1週間ほど前にオフィスで孊校から遠足をしたした。 , 15 , , Python Rust. , 2005 , , -, . , YouTube . , .



: .



: , ?



: , . , . YouTube . , . . , , - , . , . そうではありたせん。



: , , . ? - , ?



: , , . , . , , . - Rust, , Rust. , : .



: , , — ? - Rust, . ?



: . - ?



: . , , . ? pull requests ? , ?



: . .



: , . YouTube, . - ? ?



: — . YouTube, . Hacker News Reddit, — - . , , - . YouTube . - , . , (, ), YouTube.



: ?



: , . , , JavaScript. — , . . , , . HolyJS. ?



: 2016 , .



: , NodeJS . . ? ? ?



: , Joyent. , , , . , , Deno, . , Deno.



: , ?



: , , . , , , . , . -, , , . , . , , , , , . , — 




: , V8 Volkswagen Beetle?



: !



: , V8.



: , , . , . , , , .



: . ? , . , . ?



: , . , . . , Facebook Google, . - , — , . , . , . - , .



: IT , « » , . , . , IT , ?



: , « » — , . , . , , . , . .



: . , — , — . , . ?



: . , . .



: . , ?



: . .



: , , ?



: , . , - , — . , — , .



: HolyJS 2019 -. , !



: , .



HolyJS Deno: «Deno, a new Way to JavaScript». , .



- , Online- ( - ). , 24-25 , .




All Articles