タグ

言語とGolangに関するvanbraamのブックマーク (15)

  • なぜGo言語はエラー返却に例外機構を使わないのか - 嵐の小舟より

    Go言語 FAQより引用すると 例外(exception)がない理由は? 我々は、処理構造を制御するためのtry-catch-finally形式の例外処理機構によって、コードが入り組んでしまうと考えています。 とのことです。 うーん、これだけじゃよく分かりません。 知りたいのは、 「例外機構が有用な場面」についてGo言語ではどのように対処するのか? はたしてGo言語の他の機能を組み合わせることでカバーできるのか? 「例外機構ではコードが入り組んでしまう」というのはどういうことを指しているのか? 自分の探し方が悪かったら申し訳ないですが、 講演やら Effective Go やらでこういったことに言及している部分を見つけられなかったので、 調べた内容と自分の推測をまとめてみます。 結論としては 例外機構が欲しい場面は Go 言語の他の機能でカバーできそう 例外機構によるエラー返却では、関数の

    vanbraam
    vanbraam 2018/08/31
    例外は大域脱出の方法の1つだと常々考えていたので,同じ様な観点から語る文章を知る事ができて嬉しい;例外が並列処理向きではない,というのは言われてみれば確かになぁ,と思った
  • Go言語の例外を必ず扱うような言語機能のありがたさ - 日記マン

    僕はGo言語が好きだ。そのGoがもたらす恩恵のひとつとして、例外周りのセマンティクスがある。 Goでは例外はerrorという型の値に抽象化され関数の返り値として記述することが多いというのはご存知だと思う。 func GetUser(id int) (*User, error) { // do some thing ... if err != nil { return nil, err } return user, nil } 上記の例のように、複数の返り値を設定できる言語機能を利用して、 第一にその関数に期待する主要な出力のデータ、第二に関数内で発生した例外(error型の値)を伝播させるのが一般的な記述だ。 この if err != nil {return err} を毎回書くのが(たとえコピペでも) 「めんどくさい」、「冗長だ」という意見を持つプログラマもスクなくはない。 個人的には気

    Go言語の例外を必ず扱うような言語機能のありがたさ - 日記マン
    vanbraam
    vanbraam 2018/08/31
    例外処理を強制する,という意味では,Javaの検査例外も同じなのだが,Goだと擁護する人もいるのにJavaの方は(今は)ほぼ批判一色なのは何故なのだろう?(この記事の擁護はJavaの検査例外には余り当てはまらないが)
  • Go言語のGCについて - LINE ENGINEERING

    なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal

    Go言語のGCについて - LINE ENGINEERING
    vanbraam
    vanbraam 2018/08/09
    「Goにこれがない(からダメ)」という論を述べる人は,その前に(この記事にある様に)なぜそういう設計/実装になっているのか,を調べるべき.その種のWhyはだいたい公開されてるので
  • Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ

    なんども繰り返される話でうんざりなんだけど、繰り返されるたびに反論するのもアレなので、URL貼れるように記事にしておく。 Goが頑なにジェネリクスいらないというだけ他の言語勢から失笑買ってるというのは自覚して— {{alert()}} (@mizchi) 2017年9月19日 頑なに要らないと言ってる人が具体的にどの発言のことを差してるのか分からないけど、コア開発者たちはツールチェインやランタイムの進化を優先していただけで頑なに拒否してたりはしません。今はツールチェインやランタイムが大分進化したから、Goの適用範囲を広げるためにジェネリクスを含めて機能追加も検討し始めようかっていうフェーズです。 あとどの言語にもちょっと公平的な見方ができなくなった痛いファンはいるもので、そういった人たちをいちいちあげつらってこういう言い方で失笑するのは、別に止めはしないけど自分の格を下げるだけだと思う。

    Go にジェネリクスがなくても構わない人たちに対する批判について - methaneのブログ
    vanbraam
    vanbraam 2017/09/20
    "XX言語にYY機能がない"と"失笑"している"他の言語勢"って暇だなぁ,という感想しかない.そんな事に時間を費やさないで,自分の支持する言語でコード書けばいいのに
  • id:vanbraam のようなことを思う人がいるかぎり ruby コミッターとしては Go を仮想敵とせざるを得ないのでは、、、 - ssig33のコメント / はてなブックマーク

    vanbraam
    vanbraam 2017/06/03
    "個人的には"を強調しているし,Rubyを選択肢に入れないだけでGoにしろとは書いてないけど,それでも仮想敵にする理由になるのかな?;Goを変に意識するとむしろRubyの良さを壊す事になりかねないとも思う
  • Go言語感想文 - なるせにっき

    序 最近、敵情視察を兼ねた仕事ととしてGoでアプリケーションを書いていた。このアプリケーションがどんなものかはそのうちid:tagomorisさんがどこかで話すと思うけれど、このコンポーネントがOSS化される予定はいまのところないので、そこで得た知見をここにまとめておくことにする。 GoroutineとChannel さて、GoといえばGoroutineとChannelですね。 Goroutineはようするにスレッドなんですが、文法と実装の支援でより気軽に使えるのが他の言語との違いでしょうか。なので、Goroutineをどれだけほいほい使うべきかというコスト感覚を身につけることがとても大事な気がします。Rubyなどとは気持ちを切り替えていく必要があるでしょう。ぼくはまだ切り替えきれていません。 もう一つがChannelですね。これは端的にはメッセージキューです。 Goは前述の通り同時に動く

    Go言語感想文 - なるせにっき
    vanbraam
    vanbraam 2017/06/03
    GolangをRubyの仮想敵とする事に意味があるとは思えない.思想が違いすぎる;Rubyはプログラミングの教科書や試験で使うには良い言語だと思うが,今となっては実Webサービスで使う選択肢は_個人的には_ないなぁ
  • 「Go言語って何ででこんなに偏屈なんだろう」の炎上に答えてみる | 非IT企業に勤める中年サラリーマンのIT日記

    ざっくりGo言語を触ってきました。今までJavaとかC#をメインに使ってきた僕としては、一見先祖返りしたような仕様にちょっと戸惑いました。「コンパイル速度を上げる」目的で作った言語とのことで、その目的のためにコーディングしやすさをある意味犠牲にした、といいう点は理解できます。が、明らかにコンパイル速度(あるいは実行速度)とは関係ないところで使い勝手を「わざと」悪くしたとしか思えない仕様に、Googleエンジニアの偏屈さを感じずにはいられません。僕の単なる認識不足だけかもしれませんが、僕自身が感じた”偏屈”と... 自分のブログが批判とはいえ取り上げられるのは純粋にうれしいです。面と向かって言われたら凹むかもしれませんが、「自分のブログが取り上げられた」といううれしさだけが残るのはネット上ならではなのかもしれません。 んで、こんな時はおとなしくしているのが正しい態度なのかもしれませが、あえて

    「Go言語って何ででこんなに偏屈なんだろう」の炎上に答えてみる | 非IT企業に勤める中年サラリーマンのIT日記
    vanbraam
    vanbraam 2017/03/08
    この人のダメな所は,"何で"という疑問を持っているのにその理由を調べようとせず自分の頭だけで想像して吹き上がっている点;こんな記事読むよりb:id:entry:273331715(Goに対する文句とその反論のまとめ)読んだ方がマシ
  • GitHub - ksimka/go-is-not-good: A curated list of articles complaining that go (golang) isn't good enough

    What's this This repository is a list of articles that complain about golang's imperfection. Motivation Seems like complaining about go's flaws is becoming a trend. Any newbie must have a chance to read all the go-is-bad arguments before they go too far. So here it is. What it's for This repo is not aimed to offend or insult someone (at least not more than each author does it in its article), espe

    GitHub - ksimka/go-is-not-good: A curated list of articles complaining that go (golang) isn't good enough
  • Where is my favorite helper function for testing? - Frequently Asked Questions (FAQ) - The Go Programming Language

    Origins What is the purpose of the project? At the time of Go's inception in 2007 the programming world was different from today. Production software was usually written in C++ or Java, GitHub did not exist, most computers were not yet multiprocessors, and other than Visual Studio and Eclipse there were few IDEs or other high-level tools available at all, let alone for free on the Internet. Meanwh

    Where is my favorite helper function for testing? - Frequently Asked Questions (FAQ) - The Go Programming Language
  • Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language

    1. Abstract (This is a modified version of the keynote talk given by Rob Pike at the SPLASH 2012 conference in Tucson, Arizona, on October 25, 2012.) The Go programming language was conceived in late 2007 as an answer to some of the problems we were seeing developing software infrastructure at Google. The computing landscape today is almost unrelated to the environment in which the languages being

    Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language
  • Go's Declaration Syntax - The Go Programming Language

    Rob Pike 7 July 2010 Introduction Newcomers to Go wonder why the declaration syntax is different from the tradition established in the C family. In this post we’ll compare the two approaches and explain why Go’s declarations look as they do. C syntax First, let’s talk about C syntax. C took an unusual and clever approach to declaration syntax. Instead of describing the types with special syntax, o

    Go's Declaration Syntax - The Go Programming Language
  • Understanding Nil

    Opening Keynote at GopherCon 2016 Is it a constant? A variable? Where is it defined? What is its type? It has no type? It has all the types? Those are usual questions that people learning Go ask and this talk answers all of them and more. The talk covers the different contexts where nil is used, what it means, the gotchas to be aware of, and some patterns where nil becomes essential. In parallel t

    Understanding Nil
    vanbraam
    vanbraam 2017/03/06
    b:id:entry:325584290を読んで自分も疑問に思って検索したらここに辿り着いた."nil"="nothing", "null"="not any"なのか.勉強になった
  • Go言語って何ででこんなに偏屈なんだろう | 非IT企業に勤める中年サラリーマンのIT日記

    ざっくりGo言語を触ってきました。 今までJavaとかC#をメインに使ってきた僕としては、一見先祖返りしたような仕様にちょっと戸惑いました。 「コンパイル速度を上げる」目的で作った言語とのことで、その目的のためにコーディングしやすさをある意味犠牲にした、といいう点は理解できます。 が、明らかにコンパイル速度(あるいは実行速度)とは関係ないところで使い勝手を「わざと」悪くしたとしか思えない仕様に、Googleエンジニアの偏屈さを感じずにはいられません。 僕の単なる認識不足だけかもしれませんが、僕自身が感じた”偏屈”と思ったところを書いておきます。 ※アイキャッチ画像に自作Gopher君を載せていますが、Gopherの原著作者はRenée French氏です。 [ad#top-1] nullじゃなくてnil 「何もない」を表すnilですが、どちらかというとnullと表現する言語の方が多いです。

    Go言語って何ででこんなに偏屈なんだろう | 非IT企業に勤める中年サラリーマンのIT日記
    vanbraam
    vanbraam 2017/03/06
    Golangはopinionatedな言語だが,背後のopinionは大体この2つb:id:entry:278855337,b:id:entry:325707289かそこから辿れる所に書いてあると思う;型後置はb:id:entry:273554647;nilはb:id:entry:294430690;疑問を感じたならdisる前に調べればいいのにとは思う
  • ブログ記事「Go言語(Golang) はまりどころと解決策」についてのコメント · hnakamur's blog

    2016-08-02 Go言語(Golang) はまりどころと解決策の記事についてのコメント記事を誰かが書くだろうと思ってスルーしてましたが、見かけないので書いてみます。 ただし私はGo言語を使って開発していますが、言語自体を詳細に知るエキスパートでは無いです。Go言語にかぎらず個人的にはややこしいところにはなるべく近づかないスタンスなので、詳しい方から見ると物足りないかもしれません。そう感じた方は是非ブログ記事なりを書いていただけると嬉しいです。 interface とnil (Goのinterfaceは単なる参照ではない) 特にコメントはなくてそのとおりだと思います。 Frequently Asked Questions (FAQ)に加えて Effective Goも早めに読んでおいたほうが良いと思います。 またnilに関する文献としては Understanding Nil // Sp

    vanbraam
    vanbraam 2016/08/03
    確かにerrorの出力としてはスタックトレースの方がいい.自分のコードもそうしようかな
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

    vanbraam
    vanbraam 2016/08/03
    名前の検索しにくさは完全同意.検索の会社が作った言語なのに.で,結局"Golang"という特殊な検索語を使う羽目になる;挙げられているはまり所を見ると,コードの意味を考えてコーディングする事を強制される言語だと感じる
  • 1