タグ

2019年2月2日のブックマーク (7件)

  • なぜGo言語 (golang) はよい言語なのか・Goでプログラムを書くべき理由 | yunabe.jp

    結論としてはGo言語には以下のようないくつかの長所があり、現実路線で非常にバランスがとれた言語だと思います。 これらの長所のために失われたメリットも当然いくつもありますが、一定程度以上の規模のプロジェクトで利用する言語の選択肢としては現存するプログラミング言語の中では一番か二番目によいのではないかと思います。 コンパイルが速い (vs. C++) GCとメモリ安全性 (vs. C++) 妥当で現実的なレベルの型安全性 (vs. Python/Ruby) 実行時パフォーマンスが良さ (vs. Python/Ruby) 現実問題、ある程度の規模と期間のプロジェクトになると型検証があるとリファクタリングなどがだいぶ楽になるのでありがたい。 型があるので自然と実行時パフォーマンスも良い 標準ライブラリが整備されている (vs. C++) むしろ標準ライブラリにjsonのparserすら存在しないC

    jsstudy
    jsstudy 2019/02/02
    正常系だけプロトタイプしたい時には例外の方が便利であり、Go言語では効率的にコードが書けない。Pythonなどを使うのが正しい。何でもGoで書く必要はない。 型の存在すら簡単なプロトタイピングをするのには鬱陶しい。
  • Go言語記事〜超まとめ〜 - My Favorite Life

    先日書いたこちらの記事 abemotion.hatenablog.com ホッテントリ入りし、ブックマーク数も80を超えた。 やっぱりフィードバックがあると嬉しいですね。当に感謝...! 今日は上記でも触れた、手元でブクマしているGo言語関係の記事を、 自分の中での整理も兼ねて、まとめます。 ※ あくまで自分にとっての「超まとめ」なので、全て網羅しているわけでなく、 足りない所などあるかと思います。どなたかの参考になれば幸いです。 入門 Go入門 Go For Perl Mongers - YAPC::Asia Tokyo 2014 実践Go言語 - golang.jp Go言語を学び始める人へ ~2017冬~ – All YoU Need Is D* 「Go言語らしさ」とは何か? Simplicityの哲学を理解し、Go Wayに沿った開発を進めることの良さ - エンジニアHub|若手

    Go言語記事〜超まとめ〜 - My Favorite Life
    jsstudy
    jsstudy 2019/02/02
    "手元でブクマしているGo言語関係の記事を、自分の中での整理も兼ねて、まとめます。" → 検索の手間が省けて重宝。ありがとうございます。
  • セマフォとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

    簡単に書くよ セマフォ(英:semaphore)とは 排他制御(ダブルブッキングしないようにすること)のための仕組み であり 同時に使える人の数が決まっている物に割り当てられた「あと何人の人が使えるよ」を表した数字 です。 ちょっと小難しい言い方をすると 共有資源に対するアクセス可能な数を示す値 が「セマフォ」です。 資源にアクセスする度にセマフォの値を増減することで、排他制御を実現します。 ……と言われても、何がなんだか分かりませんよね。 大丈夫です。 順番に説明していきます。 まず予備知識として「排他制御」を理解しておいてください。 排他制御は「ダブルブッキングしないようにすること」です。 同時に使われるとマズい(おかしくなる)ものに組み込む仕組みで、1つの物を同時に使わせないための工夫です。 例えば、そうですね。 ピヨ太君が、とあるファイルに文章を書いていたとしましょう。 ピヨ太君が

    セマフォとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
    jsstudy
    jsstudy 2019/02/02
    「セマフォ」って単語が出てきたら「『あと何人の人が使えるよ』を表した数字なんだな~」と、お考えください。
  • ミューテックスとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

    排他制御のための仕組み(のひとつ)だよ 未使用(使用可能)か使用中(使用不可)かを示すよ 値に0か1しか取らないセマフォと似たようなものだよ 簡単に書くよ ミューテックス(英:mutex)とは 値に0か1しか取らないセマフォ(と似たようなもの)。 もう少し具体的に書くと 排他制御のための仕組み であり 対象が「未使用(使用可能)」か「使用中(使用不可)」かを表すもの です。 セマフォは、同時に使える人の数が決まっている物に割り当てられた「あと何人の人が使えるよ」を表した数字ね。 排他制御で使われる仕組みのひとつです。 セマフォの詳細は用語「セマフォ」の説明をご覧ください。 ミューテックスの理解は、セマフォを理解していれば意外と簡単です。 逆に「セマフォって何?美味しいの?」な人はイメージが難しいかもしれません。 ということで、セマフォが分からない人は、まずは頑張ってセマフォを理解してくださ

    ミューテックスとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
    jsstudy
    jsstudy 2019/02/02
    「ミューテックス」って単語が出てきたら「未使用 or 使用中を示す目印なんだな~」と、お考えください。
  • Go言語でCPU数に応じて並列処理数を制限する

    負荷のかかる処理を制限なしに並列化しても意味ない.処理の並列数を予測可能な場合は,当たりをつけて最適化するのもよいが,不明確な場合は,CPU数による制限が単純な1つの解になる. TL;DR CPU数に応じたバッファ長のChannelを使ってセマフォを実装する. 実例 mitchellh/gox goxはGo言語製のツールを並列コンパイルするツール.コンパイルの処理は重いため,デフォルトで並列処理数をCPU数で制限している. 簡単な例 例えば,以下のような単純な並列処理を考える.heavy()(重い処理)を並列で実行する. package main import ( "fmt" "sync" "time" ) func heavy(i int) { fmt.Println(i) time.Sleep(5 * time.Second) } func main() { var wg sync.W

    jsstudy
    jsstudy 2019/02/02
  • Go言語と並列処理

    Go言語の特徴として挙げられる機能の1つに、「並列処理を書くのが簡単」というものがあります。 そこで今回は、Goにおける並列処理の機能を紹介してから、そもそも現代のコンピューターでどのようにして並列処理が実現されているのかをとりあげます。 複数の仕事を同時に行うとは? 複数の仕事を行うことを表す言葉には並行と並列の2つがありますが、これらには次のような区別があります。 並行処理(Concurrent) 並行(Concurrent): CPU数・コア数の限界を超えて複数の仕事を同時に行うこと ほんの少し前まで、コンピューターに搭載されているCPUはコア数が1つしかないものが普通でした。 そのような、今ではもう絶滅危惧種になりつつあるシングルコアのコンピューターであっても、インターネットを見ながらWordとExcelを立ち上げてレポートを書けます。 この場合に大事になるのが並行(Concurr

    Go言語と並列処理
    jsstudy
    jsstudy 2019/02/02
  • Swift プログラマが Go言語を学び始めた話(後編) - ペンギン村 Tech Blog

    以下の記事の続きです。 blog.penginmura.tech blog.penginmura.tech 最後となるこの記事では、ここまで紹介してこなかった細かい機能や、Go言語における並列処理を実現するゴルーチン・チャネルについて触れ、最後に Go 言語に対する総括的な感想を述べて終わりにしたいと思います。 defer Swift でも用意されている defer は Go言語で初めて採用された仕組みらしい。どちらもリソースの後片付けなどに利用できる。 概略 次の例では Mutex ロックを確保した直後に defer でロック開放のコードを書くことで、関数を抜けたタイミングで確実にロック解放がされるようにしている。 func increment() { mu.Lock() defer mu.Unlock() count++ } Swift で同等のAPI が用意されていれば次のようになる

    Swift プログラマが Go言語を学び始めた話(後編) - ペンギン村 Tech Blog
    jsstudy
    jsstudy 2019/02/02
    "Go言語はとてもコンパクトに作られていて、学習コストは低い" "Go言語において特有といえる機能はゴルーチン・チャネルくらいのもの" → マルチコアCPU時代に再構築されたベターC=簡単に並列処理を書けることが特徴?