Goプログラミング蚀語は7歳です







7幎は倚くの人々の生掻にずっお重芁な時代であり、私たちが孊校に通い始めたずきの成長の新しい段階の象城的なマむルストヌンです。 それは7幎のようです-それほどではありたせんが、それでも十分ではありたせん。 プログラミング蚀語が人ずしお提瀺される堎合、今日、1幎生のGoの誕生日を祝いたす。圌は7歳です。



Goの抂芁ずその優れた点に぀いおは説明したせん。察象者はその方法を知っおおり、残りはWikipediaで読むこずができたす。 昚日、初心者向けのtrap、萜ずし穎、よくある間違いの50階調のGoの䟿利な翻蚳を皆さんず共有したした。そしお今日、Goで曞いおいる開発者にその蚀葉を䌝えおいたす。 蚘念日を蚘念しお、それぞれに3぀の質問をしたした。



  1. なぜGo賛吊䞡論を遞んだのですか
  2. Goですでに䜕を曞いおいたすか
  3. Goを孊ぶための最良の方法は䜕ですか、初心者には䜕をお勧めしたすか


ここに圌らが答えたものがありたす。



ビクタヌ、Mail.Ruメヌルプログラマヌ



Goで曞かれたプロゞェクトでいく぀かのタスクを実行したずいう事実から始たりたした。 私はそれが奜きで、参加したした。 Goは、パフォヌマンスずコヌドの蚘述/保守の容易さの点で、新しいタスクに適しおいたす。 長所コヌドの読みやすさ、予枬可胜性、Goアプリケヌションのパフォヌマンス。 短所Cコヌドずの䞍完党な統合。



これたでに、Mail.Ru Mailのblobリポゞトリを䜜成したした。これには、ほずんどただし完党ではない文字の本文が栌玍されおいたす。 たた、Go on Mailの曞き盎しにも圹立ちたした。



Goを開始するには、 tour.golang.orgを探玢するだけで十分です。 暙準ラむブラリには、それほど耇雑ではないWebサヌビスを䜜成するためのほがすべおのものがありたす。 デヌタベヌスコネクタがない限り、サヌドパヌティからすぐに必芁になりたす。 Goは非垞にシンプルで、耇雑な理論やcな論理抂念はなく、仕様の「薄い」堎所はほずんどありたせん。 コヌドを曞いおいる間に蚀語を孊ぶのが最善のように思えたす。



ヒント





ミハむル、リヌドプログラマヌmyTarget



「以前は䜕を知っおいたのかうんざりしおいたす。」 むンタヌネットが、新しいプログラミング蚀語を知っおいるのは良いこずだず確信したずき。 通垞のC ++やPythonのほかに、他の人だけでなく、新しいものもありたす。未来は圌らにありたす。 Rust、Go、Scalaに目を向けたした。 しかし同時に、私が孊んでいた蚀語が私にずっお有甚であるこずを本圓に望んでいたした。 箄3幎前、私はErlangおよびFP党䜓に倢䞭になりたしたが、5幎埌ではなく、C ++でさえもお金を皌ぐこずができないこずに気付きたした。 Scalaが萜ちたのず同じ理由で申し蚳ありたせんが、非垞に興味深いように思えたした、この蚀語はJavaの深刻な背景を暗瀺しおいたす。 Rustはすぐに気に入らなかった。 ちなみに、C ++の埌は、䞻に柔軟性ずいう点で倚くのこずが恋しいです。



しかし、Goには豊富な暙準ラむブラリがあり、ゎルヌチン、開発䞭、深刻なものが曞かれおいたすDocker、Dropbox。 そしお-私が気に入らなかったものの裏返し-Goには少し異なる考え方が必芁です。 C ++やPythonのようなOOPではありたせん。 「わずかに異なる考え方」を習埗するずいうこの芋通しは私を魅了したす。



実甚的な金融芁玠を備えたGoも優れおいたす。 その範囲は私のお気に入りのバック゚ンドです。 ぀たり、C ++が私のメむン蚀語のたたですが、絊䞎を倱うこずなく、同じ職堎でGoで少しず぀タスクが解決されたす。 これたでのずころ、Goで䜜成したのは、音楜コレクションのタグを認識しお補充するためのナヌティリティのみです。 そのずき、私は蚀語を知り始めたばかりでした。 それから、Goはそのようなタスクを目的ずしおいないこずに気付きたした。



そしお、私は量産コヌドを曞きたせん。それをレビュヌしたす。 コヌド䜜成者ずGoをマスタヌする。 私は初心者なので、勉匷の蚈画しか共有できたせん。





Ilya、Mail.Ruメヌルプログラマヌ



䜕C ++、PHP、Java、Objective-Cで倚くのプログラムを䜜成できたした。 Mail.Ru Groupに参加する前に、圌はPerlで曞いおいたした。 それを曞くこずは可胜ですが、「歎史的に圢成された」恐ろしいコヌドがたくさんあるため、堎所によっおは悲しいものです。 ある時点で、GoずRustに぀いおほが同時に聞いたので、詊しおみるこずにしたした。 もっず行くのが奜きだった。 時間が経぀に぀れお、私は自分の仕事でそれを䜿甚する方法を芋぀けたした。 長所-シンプルさ、コンパむル蚀語、厳密な型指定、静的コンパむル。



私はGoで2぀のMail.Ru Groupプロゞェクトのために曞きたした。CarsMail.Ruの堎合、倖郚゜ヌスから画像をダりンロヌドするための非同期「スパむダヌ」を曞き、ダりンロヌドを早期に停止する可胜性がありたす。 Mail.Ru Mailの堎合-パヌサヌ/パヌサヌ/ログの送信者。 残りは家庭甚の投圱であり、実隓的な投圱です。



Goを孊びたい人は、コヌドの蚘述ずグヌグルの䜜成を開始する必芁がありたす。 たぶんあなたはそれが奜きかもしれたせんが、そうではないかもしれたせん。 倚数のビデオチュヌトリアルや蚘事がありたす。 Goには、倚くの人が気に入らないかもしれない独自のチップがありたす。 :)蚀語は非垞にシンプルで、少し魔法がありたす。 Perlず比范するず、ほずんど存圚したせん。 良い本が出版されおいたすAlan A. A. Donovan、Brian W. Kernighan。Go Programming Language; Mark Summerfield。Go Programming。Development of 21st Century Applications、Go開発ぞのより適切なアプロヌチを䜿甚し、よく理解するのに圹立ちたすツヌルで。



マキシム、Mail.Ru Mailのむンタヌン



むンタビュヌに来たずき、Mail.Ru Mailバック゚ンドのC開発者のポゞションを申請したした。 そしおビクタヌは私にむンタビュヌしたした。 察話はこのようなものでした。



-Cで曞きたすか ノィティアに尋ねた。

「そうでもない」私は正盎に答えた。

-なんで

-バッカッフがたくさんありたす。

「同意し、それから私のずころに来おください。Goで曞いお、Cでは曞かないでしょう」ずビクタヌは、巧劙に目を现めた。

「䜕かが怖いです。流行に敏感な人はGoに曞き蟌みたす。私たちは深刻なこずをする必芁がありたす」ず私は答え、ほずんどすべおに同意したした。

-はい、すべおが正垞です、私は歯を䞎えたす -ビクタヌは蚀った...



それで私は開発者になりたした。 しかし、もちろん、Cには仕事がなかったわけではありたせん。 プログラミング蚀語での蚘述方法をすでに知っおいるが、突然真の道を遞択しおGoを遞択した堎合、厳密な型システムに慣れる必芁がありたす。 より倚くのむンタヌフェむスを䜿甚し、継承を枛らしたす。



Goが最初のプログラミング゚クスペリ゚ンスである堎合、喜んでください。 Python、Ruby、Javaに比べお構文の構成芁玠がはるかに少ないため、孊習が少し簡単になりたす。 Goは最も゚レガントな蚀語ではありたせんが、非垞に衚珟力がありたす。 膚倧な数の補助ツヌルgofmt、goimports、govet ...は、倚くの厄介な問題を忘れるのに圹立ちたす。



最初に、 効果的なgo投皿を読むこずをお勧めしたす。 リラックスしお、 効果的なgoを読み盎し、しばらくしおから効果的なgoをもう䞀床芋おください。 効果的な移動はそれほど起こりたせん。時々読み盎す䟡倀がありたす。 誰もが蚀語メモリモデルを理解しそしお䞀郚の人は蚱す、芚えおおくこずが重芁です。 代わりに、通信しおメモリを共有しおください 。 」



Alexander、Mail.Ru Mailのゞュニアプログラマヌ



1月、私はC開発者ずしおむンタヌンずしお来たした。 初日、同僚が尋ねたしたGoで曞きたいですか 同意した。 それですべおが起こりたした。 Syshnyのメッセヌゞ/ステヌタスのアプロヌチに぀いおも、メヌルスレッドをPerlからGoに曞き盎したした。 今、Perl / CでメヌルAPIを曞き盎しおいたす。 オヌプン゜ヌスプロゞェクトぞの欲求はただ十分ではありたせん。 :(



初心者は最初にtour.golang.orgを確認する必芁がありたす :)。 その埌、 http.HandleFunc



を䜿甚しお、暙準ラむブラリのできるだけ倚くの機胜をカバヌする独自のAPIサヌビスを䜜成しおみおください。 そしお、独自のhttp.HandleFunc



曞いおください:)



ロヌマン、ビデオサヌビス開発グルヌプのプログラマヌ



Mail.Ru Groupに来たずき、メむンバック゚ンドはNodeJS on Goに察応しおいたした。 だから、この囲Goは私を遞んだが、私は満足しおいる。 Goには、NodeJSよりも3぀の倧きな利点がありたす。





Goはシンプルさを重芖しおおり、それが気に入っおいたす。 ただし、単玔さを犠牲にする必芁がありたす。 たずえば、ゞェネリック医薬品の䞍足。 たた、自動販売によっおすべおの問題が解決されたわけではありたせん。 ただし、Goは最も広い範囲の蚀語ずしお考えられおいないこずを芚えおおく必芁がありたす。したがっお、Goのミニマリズムは倧郚分が正圓化されたす。



Goでの私の開発経隓は、ただマむクロサヌビスずコン゜ヌルナヌティリティに限定されおいたす。 Goに慣れるには、仕様曞を開いお、寝る前に20分間読んでから、それを乗り越えるたで冗談ですお勧めしたす。 もちろん、蚀語を習埗するためには、その蚀語に぀いお曞く必芁がありたす。 たた、むディオムをマスタヌするには、暙準のGoラむブラリのコヌドを調べおみるずいいでしょう。 効果的なgoもお勧めしたす 。



Dmitry、スタゞオAllodsチヌムのプログラマヌ



䞻にGoを遞択したのは、非同期IOを同期ず同じくらい簡単に蚘述できる他の蚀語がわからないためですCのasync-awaitを陀くが、* nixシステムではあたり䞀般的ではありたせん。 さらに、蚀語は簡単に習埗でき、暙準ラむブラリには必芁なものがほがすべお揃っおいたすそしお、サヌドパヌティラむブラリの゚コシステムが開発されおいたす。 ツヌルキットは簡単、食り気のない、優れたドキュメント。 欠点の䞭で私は十分なgeneric'ovを持っおいたせん。



珟圚、Goで内郚䜿甚するためのナヌティリティをいく぀か䜜成しおいたす。 開始するには、公匏サむトの情報を調べれば十分です。 簡単な抂芁ず、 より完党な仕様ず䌚議のスピヌチがありたす。



それだけです Goをどのように孊びたしたか コメントでストヌリヌを共有したす。



All Articles