Go language part 3

レス数が1000を超えています。これ以上書き込みはできません。
2019/10/17(木) 21:38:04.78ID:wMsZ+t6y
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

公式ドキュメント
http://golang.org/doc/

日本語訳
http://golang.jp

※前スレ
Go language part 2
https://mevius.5ch.net/test/read.cgi/tech/1510395926/
2020/11/05(木) 20:13:34.79ID:40Zkap5B
>>921
ならわかるだろ。
あれがガッカリ仕様でなければ何なんだ。
2020/11/05(木) 20:34:00.27ID:LX/aXWmP
>>922
うん、めっちゃ楽
2020/11/05(木) 21:13:05.05ID:rDKR4t8H
>>901
>>905
俺が無知なのはさておき、GCを実装してる連中はそこら辺まで調査して選択してる。
Go含めて重鎮が地味にマーク&スイープを選択するのは、それなりに理由がある。
ただし、マーク&スイープは、「大量の生存オブジェクト」には不向きで、Discordの件はそれに該当する。
逆に言えばそれが不向きなだけで、「最小限の生存オブジェクトと大量のゴミ」という、
普通の使い方の場合には、マーク&スイープの方がいいと判断したからそっちを選択してるわけだ。

kotolin-nativeは多分新しいことを試してみたかったんだろうと思うが、
Pythonはおそらく判断をミスっていて、通常向けに最適化するべきだと思う。
(これがPythonが無駄に遅い理由の一つになっているかも)
ただしGC機構についてだけ言えば、Python型なら今回のDiscordみたいなことにはならなかったはずだ。
だからあれはより正確に言えば「『マーク&スイープ方式の』GCの限界」だな。
2020/11/05(木) 21:25:07.21ID:rDKR4t8H
>>903
最後の部分
> 近年の複雑化しすぎたWeb界には受けた
以外には同意だ。
俺は「Web系は複雑化しないところがいい」と見ている。
Web系は馬鹿ばかり、と揶揄されつつも、それでもWebが回ってるのは馬鹿でも回せる構造になってるからだ。
それは水平分業がしっかりしていて、しかもそれを普通に選択する文化だと思う。
例えばPHP、3層構造にするのについて誰も文句言わないだろ。
対して今回のDiscord、あれは指摘されてるとおり、キャッシュサーバーを使っていれば発生しなかった問題だと思う。
そこをなまじ実装力があって自前で実装してしまうからこそ命中する。
実際キャッシュなんて100行程度で書けるから、
不必要な機能も付いてて遅く、さらにブラックボックス的な他ライブラリ等に頼るよりは、
自前で実装する方が気分が楽なんだよ。
(ソースが読めるとしても100行程度で書けるのだから書いた方がまし、という選択になる)

その辺Web系は実装力もないからさっさと外部ライブラリ/フレームワークに頼るのだけど、
結果的にはそれの方が正しいように俺には見えてる。
この文化だと「○○が欲しい」というリクエストも感謝も明確に出てくるのでライブラリも揃う。
C++だと「そんなゴミ要らん自分で書いた方がましじゃボケ」になるからね。
だから遅々として整備は進まないが、それでも徐々には進むから、最終的にはどうなるかだけどね。

Web系が複雑化しているように見えるのは、やたらフレームワーク/ライブラリが乱立するからだと思うが、
それは外部的に見えるから複雑化しているように感じるだけ。
C++等だと内部的にみんなやってるのが出てきてないだけで、確実に重複しまくってて再開発しまくってる。
だから乱立に見えるけども一応外部に出てきて重複開発しないWeb系の方がエコシステムとしては効率がいいと思うよ。
2020/11/05(木) 21:34:05.29ID:rDKR4t8H
ちなみにデプロイって何の話してるんだ?
サーバーサイドなら最低限ビルド出来る奴がセットアップするんだから問題なし。
WindowsへのC#のデプロイは何ら問題ない。
Linuxなんてど素人は使ってない。
残るはMacだけど、お前らMac向けにGoでツールとか書いてるの?


ちなみに俺が言ったのは、「楽に書けて、サクッと動いて、そこそこの性能」という事だよ。
君らの分析の方が技術的に真面目で、さらに当たってるからそれで問題はないけど、要は、

PHPだと超超超楽勝だがポンコツ、
(Pythonだと超楽勝だがPHPと同程度の速度しか出ないポンコツ、ただしPHPからは逃れられる)、
Nodeだと楽勝でそこそこ速い、
Go/C#だと楽勝でもないがまあ普通に速い、
それより速いのはC++/Rustだけどこいつらは非現実的、

と今は並ぶでしょ。速度/容易さで並ぶのはC#。
C#の方が断然巨人だから、色々環境は整ってる。
ただしWebではなくWindowsアプリを主眼にしていたから、Web周りは若干周回遅れになってる。
勿論ASP.NETは昔からあったけどね。
サーバサイドでなくとも、要は「中庸」のプログラミング言語が欲しい場合に何が来るかということ。
一応C#は過度に難しくならないように努力してるから、巨大化している割には肥大化してない。
その辺C++とかかなり最悪だし。

ただしそれは「最速」言語の宿命で、
こちらの方が少しでも速いケースがある、という場合にユーザーが最速記述出来ないのは問題だから、
どうしても仕様が肥大化してしまう。速度面で仕様に妥協が出来ないんだ。
だからほぼ確実にRustもこれから肥大化する。

ただGoではC#を馬鹿にするなんて出来ないよ。
お前らの眼中にないASP.NETの方がGoサーバーよりも100倍シェアがある。
https://w3techs.com/technologies/overview/programming_language
2020/11/05(木) 21:45:04.52ID:rDKR4t8H
すまん100倍では済まずに 31,666倍(=9.5/0.0003)だった。
言語名を押せば各詳細が出る。

その他の面もC#は既に巨人だからC#からみればGoなんてゴミ同然で、相手されてないよ。
2020/11/05(木) 22:10:29.26ID:40Zkap5B
>>923
楽かぁ。
Goのシングルバイナリに慣れてると、結構なガッカリ感だったが、主観的な物言いしてはいかんのかもしれんな、すまん。
2020/11/05(木) 22:12:14.15ID:40Zkap5B
>>924
さておくなよ。
どう判断をミスってんの?言語設計の問題でしょ。
Swiftは?
2020/11/05(木) 22:16:08.14ID:40Zkap5B
>>926
「サーバサイドはできる奴がセットアップするから問題なし、PHPのデプロイが簡単」とか言ってる時点で話についてこれてないから、ちょっと調べてからしっかり喋ってくれ。
少なくともPHPファイルをポン置きするような事は「デプロイ」とすら呼ばん。
C#が眼中に無いのではなくて、ここはGoのスレ。
931デフォルトの名無しさん
垢版 |
2020/11/05(木) 22:41:27.37ID:BWbga0la
>>919
F#いいよな。
でも ocaml も流行ってないしなぁ。
ocaml は歴史もあるし金融系で使われてたり実績も十分そうなんだけど。
2020/11/05(木) 23:35:22.45ID:5bWXoO+B
COBOLは歴史もあるし金融系で使われてたり実績も十分。
2020/11/05(木) 23:47:46.08ID:/6Zmm2qe
C#はビルド速度とNuGetが地味につらい

Goのビルド速度、シンプルな純正テスト環境は大きな利点に思う。小規模開発時には特に。
2020/11/06(金) 00:13:18.80ID:5acjwhy7
YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる

この2つ以外は、出てこない

GUI 系は、画面の手直しなどで、工数がかさむ。
C#, dot.net などのWindows 系は、いらない。
Java などの土方系も、いらない。
C/C++ などのポインタ系や、ハードウェアの仕組みなども、いらない。
Elixir, Rust は、普及へのchasm・溝を超えられなかった
935デフォルトの名無しさん
垢版 |
2020/11/06(金) 11:27:45.34ID:kU46w3PV
そういや Go ってジェネリック入ったの?
2020/11/06(金) 13:43:45.59ID:4QwN1dUc
なんのために?
2020/11/06(金) 16:04:25.31ID:vuRZSDYg
だれのために?
2020/11/06(金) 16:41:08.49ID:VIMw9dW+
「俺の考えた最強の型システム」合戦になって収集つかなくなって導入しないことが決定した
2020/11/06(金) 17:16:52.08ID:t5Qz3yQt
医薬品
2020/11/06(金) 17:40:20.04ID:RRtA6cm3
これがキャンセルされたってこと?
https://blog.golang.org/generics-next-step
2020/11/06(金) 20:14:23.58ID:DtEkLbzN
sort書くときはジェネリクスと型推論効かせて簡潔に書きたくなる
2020/11/07(土) 11:07:18.19ID:fULQIOig
なにかというと interface{} が現れる今の状況をなんとかしてほしい。
943デフォルトの名無しさん
垢版 |
2020/11/07(土) 18:27:21.32ID:WaP+6xrD
どこかのブログで「Goはイテレータを書くのに4つの全く異なる方法がある」って書いてあったけど、これマジ?
2020/11/07(土) 19:50:01.55ID:alCltY04
変数宣言くらいひとつにして欲しかった
2020/11/07(土) 21:53:29.96ID:sL9l9w2Z
>>943
イテレータを書く
と言ってる意味がよく分からない
イテレーションはrange句を書くときだけを意味するが、配列もしくはスライス、文字列、マップ、チャネルでそれぞれ受けとるイテレーション変数に違いがあるんで、それで4種と言ってる?
2020/11/07(土) 22:24:39.29ID:alCltY04
どこかのブログってこれか?
https://qiita.com/yamasaki-masahide/items/c228fca4ab788b042777
ソースくらい貼れよな…
2020/11/07(土) 22:35:37.85ID:sL9l9w2Z
>>946
チャネルにキャパシティ設定してないとか
goの諸々が分かってる?という記事だと思う
948デフォルトの名無しさん
垢版 |
2020/11/07(土) 23:59:31.34ID:WaP+6xrD
ごめん 前に見たブログが全然見つからない……
けど同じように言及してるブログは見つけた。
3 ways to iterate in Go
https://blog.kowalczyk.info/article/1Bkr/3-ways-to-iterate-in-go.html
2020/11/08(日) 00:40:26.10ID:cr0qwrbo
>>948
1.無名関数をループする関数
2.Nextとかのインターフェースを持ったオブジェクト
3.並列処理でループさせて通信で受ける

これをイテレータねえ?
950デフォルトの名無しさん
垢版 |
2020/11/08(日) 22:36:26.97ID:aJEtBYMB
>>948
for文だけでカプセル化できてるように思うけど

for i := 0; i < 11; i += 2 {
println(i)
}
println(i) // undefined: i
2020/11/11(水) 16:24:39.37ID:2YRRcyS5
Typing [Generic] Go
https://www.dropbox.com/s/ch403rkrspomw0v/AG%20-%20R%20Griesemer%20-%20Typing%20%5BGeneric%5D%20Go.pdf
952デフォルトの名無しさん
垢版 |
2020/11/12(木) 15:55:37.84ID:x/dKav4D
>>948
こんなことやってる奴って他にいる?
2020/11/12(木) 16:06:34.24ID:ajQurm37
いや、Goに関わらずAPIの設計としては常識に近いよ
Iteratorデザインパターン
954デフォルトの名無しさん
垢版 |
2020/11/13(金) 09:51:20.25ID:PXZYfUWY
Goではfor文がイテレータ

自分でイテレータみたいなものを実装する必要はない
2020/11/13(金) 12:01:55.68ID:1iElEYNS
イテレータ知らんやつばっかりで草生える
956デフォルトの名無しさん
垢版 |
2020/11/13(金) 14:22:31.00ID:PXZYfUWY
>>955
じゃあイテレータの定義説明して、どうぞ
957デフォルトの名無しさん
垢版 |
2020/11/13(金) 14:38:40.75ID:/AMzz1sP
イテレータは、既定の順序に従って移動できることと、値を逆参照できることが要件になるだろうな。
2020/11/13(金) 15:13:39.60ID:9KKZC7Fr
意味不明。
はい次!
959デフォルトの名無しさん
垢版 |
2020/11/13(金) 15:22:45.15ID:RWm0omqa
覚えたての言葉使って見たかった説に+1
2020/11/13(金) 22:40:33.20ID:5mXtPG+h
連続した要素を一個ずつ舐めて処理することだよね?(´・ω・`)
2020/11/13(金) 22:47:58.01ID:PGsPGVPV
それはただの繰り返し、
for文の説明にしかなってない。
もう一段の抽象思考が必要。
2020/11/13(金) 22:51:34.63ID:IGEbWGrX
>>960
キンタマかよ
2020/11/13(金) 22:59:31.91ID:YBOwt/E7
>>960
wikipediaの解説くらい読めよ……

イテレータ(英語: iterator)とは、プログラミング言語において配列やそれに類似する集合的データ構造(コレクションあるいはコンテナ)の各要素に対する繰り返し処理の抽象化である。

「連続した要素」である必要は無いし、「一個ずつ舐め」る必要も「処理する」必要も無いぞ。
2020/11/13(金) 23:02:04.54ID:5mXtPG+h
>>963
えっ、繰り返し処理って一個ずつ舐める以外の手法ある?
実際なにかするかは別として、絶対舐めるよね?
2020/11/13(金) 23:05:36.62ID:PGsPGVPV
>>964
しゃぶれよ
966デフォルトの名無しさん
垢版 |
2020/11/13(金) 23:05:54.91ID:PXZYfUWY
舐めるって何だよ(哲学)
2020/11/14(土) 02:20:57.24ID:J1qSeya3
やっとレベルの高いスレになってきたな!
2020/11/14(土) 02:41:25.39ID:OEj/Ps5D
>>964
何Pするつもりだ
2020/11/14(土) 04:48:04.59ID:hiKCjj1+
一人が同時に何本の竿を処理できるのか
その答えを俺は知ってる
2020/11/14(土) 09:58:05.81ID:lw/b63Rx
GoFのを定義とするならhasNextとnextでラップして要素持ってるだけなんだよな
流石に古いだけあって些か貧弱
2020/11/14(土) 10:52:40.49ID:AxEpuS5V
イテレータにそれ以上の機能は何も無いだろ。
それ以上を求めると、ジェネレータとの釣り合いが取れなくなるんじゃないか?
連続したもなにもなく「次」の値を取り出していくものでしかない気がするが。
2020/11/14(土) 12:45:38.46ID:O3AqtiwM
デザイン「パターン」だぞ
それが理解できないならシステムエンジニア向いてないよ
2020/11/14(土) 13:04:34.18ID:wV2mISWm
>>964
気に入ったのがあったら舐めるの止めてもいいし、最初の一個だけひたすら舐めてもいい(外部イテレーター限定)。
2バイト文字列とかなら1個飛ばしで舐めるのも普通。
974デフォルトの名無しさん
垢版 |
2020/11/14(土) 14:24:39.45ID:FDvjC4Tu
>>973
舐める舐めるって気持ち悪いな
まずお前の言う「舐める」というのを具体的にどういうことなのか説明しろよ
2020/11/14(土) 14:38:59.30ID:0QjfD/pU
>>973
飛ばした1個もちょい舐めしてる
それがイテレータ嬢
2020/11/14(土) 15:41:11.60ID:PgJDZZ0r
>>942
ほんまこれ
Go の何が駄目といって「われらがGoはXXは無くしてシンプルに美しい」
とかなんとか自画自賛してるが、実際はむりくりそのクソみたいな
単純機能を組みあわせてクソ面倒な色々なやりくりしないといけないという
まるで前世紀の遺物みたいなシロモノ
あと Go は名前がクソ
977デフォルトの名無しさん
垢版 |
2020/11/14(土) 15:50:35.31ID:QzputhfI
>名前が糞
同意せざるを得ない
2020/11/14(土) 16:11:45.05ID:AxEpuS5V
うーん、全世紀の遺物から、複数の戻り値とか、deferとかみたいなので別方向に進化したものだと思うけどな。
面倒くさいなって思う事もそんなに無くなったが。
後出しジャンケンみたいなインターフェイスはなかなか便利だし他の言語には無いと思うぞ。

まあ名前はひどい。
2020/11/14(土) 16:24:50.71ID:OsCdkw/B
インターフェース自体はいいんだよ。
問題は void* のような型消去した interface{} を多用しないとならないところ。
2020/11/14(土) 16:48:02.38ID:DnZAmAgg
Go言語がダメな理由
https://postd.cc/why-go-is-not-good/

6年経ちましたがよくなりましたか?
2020/11/14(土) 17:29:12.30ID:chyl+IG1
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐—´´\
2020/11/14(土) 19:22:52.14ID:O3AqtiwM
思い付きのまま検討とかしないで言うんだけど
interface{} と書くところで {} とできたらどうだろう
2020/11/14(土) 21:01:36.29ID:OsCdkw/B
長いのが嫌だと言ってるわけじゃなくてw
2020/11/15(日) 03:57:17.44ID:oqZpf0kM
また発作が始まったか
985デフォルトの名無しさん
垢版 |
2020/11/15(日) 08:38:13.89ID:QxfrfD5Z
for {}
2020/11/15(日) 13:27:59.77ID:TRv2gWKD
>>980
池沼用言語なのでお察し
ただし、昨今の高機能化(といいつつ実際には複雑化)した他言語へのアンチテーゼではある
2020/11/15(日) 14:29:31.55ID:b8fPXan8
ハァ…ハァ… 池沼用言語……?
取り消せよ……!!! ハァ… 今の言葉……!!!
2020/11/15(日) 16:13:52.21ID:h7nWKXR3
       (´・ω・`)  ふむふむ・・・なるほどなるほど・・・
      /     `ヽ.   お薬増やしておきますね
    __/  ┃)) __i |
   / ヽ,,⌒)___(,,ノ\
-----
989デフォルトの名無しさん
垢版 |
2020/11/15(日) 18:21:39.28ID:P3rs6EJY
重要なのは「その言語でどれだけ稼げるか」なンだわ

単価相場 | ITフリーエンジニアのための【レバテックフリーランス】
https://freelance.levtech.jp/project/marketprice/?det_type=512
2020/11/15(日) 19:05:53.09ID:uPufg4Im
モダンな言語使ってる所だと単価云々より労働環境のメリットの方がデカい
エンジニアファーストだしフルリモート出来るし
単価高くても出社必須・クソスペPC・下請けみたいな所は論外
2020/11/15(日) 20:37:01.75ID:TRv2gWKD
>>990
俺はJSを気に入ったから転職しようかとも思ったが、
求人見てデザイナの下請けばっかりだから止めた。(少なくともJSは、でも多分PHPも)
もしGoだとプログラマ主導が多数派なのなら、それはわざわざGoを選ぶ意味にもなり得る。
2020/11/15(日) 22:32:47.18ID:wf91lH7q
Goは何故か食わず嫌いが多すぎて人員が集まらないから、余程の高性能案件でないと
2020/11/15(日) 23:02:20.54ID:oqZpf0kM
Go案件はメルカリ一派しかまともにやってないから
その周辺の会社に行け
給料もクソ高い
2020/11/15(日) 23:28:13.85ID:BAXhy0h1
メルカリって大して儲かってないのに、株価を吊り上げてボロ儲けしてる企業だろ
株主が買った株は役員や社員のステーキ代になることも知らずによく買うよな
ほとんど宗教だな
2020/11/15(日) 23:34:27.45ID:TRv2gWKD
>>992
> 何故か
どう考えても妥当。

言語としては劣化版C++でしかないから、C++を既に使える奴が使う意味がなく、C++erからは最初から無視されてる。
これはC#やJavaを既に使える連中もそう。
要は既存言語で満足してる奴が「機能劣化版」でしかないGoを使う意味がない。
逆にC++が嫌いで嫌いで仕方ないが、それでも仕方なくC++使ってた連中が当初飛びついたが、
こいつらは最近はみんなRust行ってるはず。

結果、他言語を知らない、プログラミング初心者しか残ってないでしょ、このスレ見ても。
(ただこれが悪いことだとは言わないが。俺はそういう実験をする言語があってもいいとは思う)
2020/11/15(日) 23:43:15.69ID:zDkm2h7Q
またGoroutine知らない人が発狂するやつ?
2020/11/16(月) 00:03:35.53ID:UybeAEe0
>>996
正解!
2020/11/16(月) 00:12:27.10ID:/d3b4JrP
>>994
上場ゴール目的だったと思うしそれでよかったんじゃね?
そのおかげでエンジニアは金もらえるからありがたい
エンジニアは経験や実績で1000万くらいもらえる
2020/11/16(月) 00:31:23.48ID:hWakK6d2
>>998
だったらGAFA並みに成果を出してくれればいいけど、そうでもないからな
使えない奴に金を出してなけりゃいいけどね
2020/11/16(月) 00:42:31.53ID:/d3b4JrP
>>999
使えるやつが多いけど
所詮フリマアプリだからな
それにそんなリソース費やすもんか?とは思う
クックパッドと同じ謎さ加減を感じる
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 395日 3時間 4分 27秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況