Go language part 1

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2013/10/10(木) 12:04:51.78
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
2014/07/24(木) 00:30:01.41ID:znT0d1Bl
たしかに気にはなるけど
採用されない理由がそれだけのプロジェクトも想像できない
2014/07/24(木) 11:10:30.02ID:Ye3LEDYl
>>203
むしろバッチ処理得意じゃないかと思うんだが。
APIを何万回も叩いて結果をDBに格納するみたいなバッチ処理を書いた時に
チャネルを使うと素晴らしく綺麗に並列化できて感動したんだよね。
2014/07/24(木) 11:45:59.80ID:lbRXz+ac
>>205
>>203が言ってるのはバッチ処理というより単機能の小さいコマンドみたいなもののことでしょ。
自分らが~/binにたくさんおいてあるbashスクリプトレベルの。

そもそもこのコンパイラは常駐アプリケーションを作るための設計すぎて、実行時間がある程度長くないと無駄なのは事実。
とは言えいい言語だからそういうシンプルな機能を作るためにも使いたい。
使い終わったらプロセスごと落としてくれればいいからGCとかいらないし。
2014/07/24(木) 12:12:06.82ID:Qa9ovyB3
bsd って何の略ですか
2014/07/24(木) 12:22:50.32ID:wjmCoo/j
BuShiDou
2014/07/24(木) 16:17:04.74ID:GSXF8hON
golang.jp を見て見たが、ちょっと最初の構想から外れてるみたいな気がする。
インタプリタみたいな軽量な言語を目指したと言うが、REPLすらないってどう言う事?
サードパーティの物をちらっと見た覚えは有るが、最近目立たないな。

REPLがあれば取り敢えず簡単なスクリプト処理的な物はこなせるけど、いちいちコンパイルGOじゃ面倒臭い。

ジェネリックもいずれ入れると言ってるがもう何年も経つのに入らないってどう言うこと? 設計上無理が有るのでは?
今は色んな面で言語的にはかなり低級に思える。
2014/07/24(木) 16:21:26.89ID:hD2YGPYI
golangってインタプリタとして使えなかった?
2014/07/24(木) 16:22:41.66ID:r6QGED5m
go run helloworld.go
2014/07/24(木) 16:23:12.99ID:r6QGED5m
buildさえしなければhddを圧迫することはないだろう
2014/07/24(木) 16:35:20.39ID:GSXF8hON
>>211 それは単なるコンパイル& Go
2014/07/24(木) 16:39:29.49ID:r6QGED5m
え?インタプリタはコンパイルしないと思ってるの?phpもrubyもpythonもコンパイルするんだよ?
2014/07/24(木) 16:44:21.40ID:GSXF8hON
>>214 広い意味でのインタプリタはそうだけど、そんな事言ったらJavaですらインタプリタと言い出すだろ。

本来の意味のインタプリタは、1行書いたら即実行が本来だよ。
コンパイルしようがどうしようが良いが、書いたら実行。これがインタプリタ。

perlなんかよりREPLの方がよほどまし。
2014/07/24(木) 16:46:57.30ID:GSXF8hON
>>214 それに>>212 は全くのコンパイルじゃ無いか。
どこにインタプリタ的な要素が匂うんだ?


例えば、100行位のプログラムを書き始めたとして、>>212はいつ実行出来るんだ?
アホなこと言うな。
2014/07/24(木) 16:47:30.54ID:GSXF8hON
>>211の間違い
2014/07/24(木) 17:50:00.05ID:9dmhGPAk
定義的にインタプリタであるかどうかにこだわる意味がわからん。
コンパイルが十分に速くてエディタの支援があれば事実上同じ。
2014/07/24(木) 17:59:05.81ID:GSXF8hON
>>218 解らんかな? 例えばインタプリタなら
>>218 と会話的にプログラム出来る。

コンパイル方式だと、>>218の発言を知ってから全ての218の行動を予測しながらプログラムを書かざるを得無い。 どれだけ膨大なプログラムになるかわかるか?

例えば今日台湾の航空機墜落事故のニュースを知ってから、それに関連したプログラムをするのと、
全く知らずに何年も前から予測してプログラムするのでどれだけ大きな差が有るのか解らんかな?
2014/07/24(木) 18:05:42.50ID:GSXF8hON
>>218 ま、いいや、golangで1行ずつコンパイルして結果が見えるのならそれで良い。

#今いるディレクトリは?
--gogo
#ls
--
#cd xxx
2014/07/24(木) 18:10:26.83ID:znT0d1Bl
ニュースの例えは効果的ではなかったな
2014/07/24(木) 18:13:08.35ID:KnMb6PXS
もう少し分かり易く説明して欲しい
2014/07/24(木) 18:17:36.20ID:FJ9KFXdp
そもそもgoはc++の置き換えを狙ったガッツリコンパイル言語目指してたと思うが
インタプリタの話はどっから出てきたのだろうか。
2014/07/24(木) 18:18:07.34ID:hD2YGPYI
読込み -> 中間式生成 -> 実行 -> 結果表示
こういう流れなら中間式がなんであれインタプリタでよくないか
225デフォルトの名無しさん
垢版 |
2014/07/24(木) 19:31:52.41ID:j9Fzrf/Q
対話式の環境が使いたいならscalaでも使えばいいんじゃねえの?
コンパイルくっそ遅いけど
2014/07/24(木) 19:35:29.67ID:eQap2LAf
ClojureとかGroovyとかもJVM系の言語はコンパイルしてから実行するのに凄い時間がかかるな
REPL的な環境使うと捗る
2014/07/24(木) 21:13:03.11ID:3xYKvkhO
>>223
http://golang.jp/go_faq
新しく言語を作った理由は?

Go言語は、インタプリタ言語のプログラミングの容易さと、動的型言語の効率、コンパイル言語の静的な型の安全性を併せ持つことを目指しました。
2014/07/24(木) 22:11:05.80ID:3xYKvkhO
>>224 Javaは含めたく無いな。 インタプリタは、基本的にソースコードをそのまま配布する物。
配布されたソースを変更すれば即座に実行出来る物。
2014/07/24(木) 22:34:04.45ID:xmULRajC
>>219
REPLが備わってる言語だと
1行ずつ試しながらプログラムを書けるのが良いっていう主張なんかな
コンパイル方式だと、ある程度まとまった量を書くまで
プログラムの挙動の確認ができないからダメだと

ちょっと興味あるから良かったらもう少し分かりやすく説明してほしいんだが
2014/07/24(木) 23:08:29.15ID:ZKlJlp/g
つまり軽い気持ちでインタプリタという言葉を使ってしまったら
インタプリタに思い入れの有りすぎる人が騒ぎだしたって話か。
2014/07/24(木) 23:30:45.74ID:3xYKvkhO
>>229
例えば、
system("ls")
でカレントディレクトリ内のファイルを見て、ファイルが有るのを確認してファイルを読み込むとか。
周りの環境が不確かでも確認しながらコーディングを進めて行くことが出来る。

試行錯誤が入る様な場合には力を発揮する。

パラメータを変えながらのテストプログラムとか。

とは言っても、一般的にREPLが力を発揮するのはコーディング時に結果を確認しながら進めていけることだろうな。 バグの少ないプログラムが書ける。

例 Java REPL
http://calms.hatenablog.com/entry/2014/03/20/215529
2014/07/24(木) 23:38:19.65ID:ZKlJlp/g
>>231
お前の言いたいことはよくわかったが残念ながらgoは最初の最初からc++後継のガッツリコンパイル言語だ。
REPLなんて全く意識してない。

そこに書いてあるインタプリタがうんたらかんたらはPythonの手軽さり入れてますよくらいの意味だ。
2014/07/25(金) 00:07:36.47ID:VLfrDabm
>>232 C++ ですら、CINTや、LLVM でのREPLが有るのに、なんでやらないんだろう?
言語と同等に重要だと思うけどな。

その前にジェネリックとかやることが山積みで残ってるからかもしれ無いが。
2014/07/25(金) 00:20:30.83ID:0UOGck6o
Does Go provide REPL?
http://stackoverflow.com/questions/8513609/does-go-provide-repl
2014/07/25(金) 00:29:07.50ID:sWANe9H9
>>233
まあ確かに話題になってるようにpythonコンソールみたいに使えたらとても楽だ。
2014/07/25(金) 00:49:56.70ID:5ZIqGgab
>>231
>>229だけどありがとう
REPLはいろいろ試せて便利ということですね
コンパイル方式の言語でもREPLがあれば便利だという意見に納得
2014/07/25(金) 00:55:19.24ID:5ZIqGgab
>>231
>とは言っても、一般的にREPLが力を発揮するのはコーディング時に結果を確認しながら進めていけることだろうな。 バグの少ないプログラムが書ける。

これに関してはIDEでも出来るからREPLの利点になるかは微妙に思うけど
2014/07/25(金) 01:24:46.41ID:WAyDBvXq
そういう事出来るIDEってそんな多くないような
IDEの機能でREPLに近いのはイミディエイトウィンドウとSmalltalkくらいしか思い浮かばない
2014/07/25(金) 02:11:12.44ID:VBkcNL29
ipythonみたいに補完できるツールって無い?
2014/07/25(金) 08:54:10.04ID:VLfrDabm
>>238
SwiftのPlaygroundは、補間はおろかREPL機能やリアルタイム描画や変数の時間軸変化のグラフとか、時間軸を遡って確認したり出来る。
https://developer.apple.com/swift/
簡単なデモ動画
https://m.youtube.com/watch?v=vogFSIxprUo
描画結果も表示してる

今後こういったIDEが重要な要素となる。
2014/07/25(金) 10:33:21.59ID:v/73T7Pc
Swift使ってればいいんじゃない
2014/07/25(金) 10:36:14.11ID:cQJQccdW
本当に今欲しいもの
それはその機能ですか
2014/07/26(土) 01:12:14.54ID:gxb4YorG
func a() string {
return "aaa"
}
これをstringかintを返したい場合どういうふうにfunc a() stringの部分を書きなおせばいいのか教えてください
2014/07/26(土) 01:38:36.60ID:WPKMsRoX
func a() interface{} {
...
}
2014/07/27(日) 04:43:42.19ID:KUNHptBx
2013-07-18
Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話
http://ryochack.hatenablog.com/entry/2013/07/18/201736

http://i.imgur.com/2sZxU5w.jpg

Go compiler も検討してるが、LLVM Clangには大きな差をつけられてる。
2014/07/27(日) 08:52:04.39ID:CwX5MDAY
LLVM Clangは、徹底的にループを排除するからな
元のコードがどんなだか知らんけど
他がやってるループをClangは回してない場合がある
2014/07/27(日) 09:13:55.62ID:KUNHptBx
>>246 中にソースが書いて有るよ。
1GBのランダムなデータを3種類の読み方で読んで、00のバイト数をカウントすると言う物。
ループを省略するなんてことは出来なさそう。
2014/07/27(日) 09:46:07.39ID:PFdtsvV+
元のコードのここの部分が
for (i=0; i<fsize; i++) {
if (buf[i] == 0x00) cnt++;
}

例えばこんな感じに書いたみたいに展開されるってことじゃないの?
for (i=0,size=fsize/2; i<size;) {
if (buf[i++] == 0x00) cnt++;
if (buf[i++] == 0x00) cnt++;
}
if (fsize%2==1) {
if (buf[i++] == 0x00) cnt++;
}
2014/07/27(日) 11:02:43.76ID:KUNHptBx
コンパイラの最も重要な最適化がループだからね。
2014/07/27(日) 11:07:33.89ID:A8GFVBne
変数って型をしてしたほうがいい?
:=にたよったほうがいい?
2014/07/29(火) 21:53:04.26ID:yYRcHyEO
・【翻訳】Go言語がダメな理由 | POSTD
http://postd.cc/why-go-is-not-good/
 Goは何も新しいことをしない。
 Goは全てにおいてうまく設計されているとは言えない。
 Goは他のプログラミング言語から退化したものである。
2014/07/29(火) 21:59:11.76ID:yYRcHyEO
D言語とGo言語
http://wazanova.jp/post/64086105199/d-go
2014/07/29(火) 23:32:56.57ID:UKoB3UWi
早くジェネリックは欲しいね。
2014/07/30(水) 07:50:42.52ID:/fpjt/6K
>>251 >>252
でもRustやDは全然普及していないという決定的に致命的な欠点があるよな
2014/07/30(水) 09:20:20.31ID:Nn5HlRg1
Rustはまだ実験段階だから仕方ない。 金が無いとなかなか進まないね。

Dはスポンサー次第だろ。 Facebookが使った。
http://blog.fenrir-inc.com/jp/2014/07/about-d-language.html
トレンド的な話ではウォルター氏を含むD言語プログラマーが Facebook に雇用されてD言語の開発とD言語製アプリケーションに携わっている状態で、
D言語公式カンファレンスの DConf も Facebook 本社を会場として去年から開催されています。

SUNはDTrace として使ってるし、DTraceはAppleでも使ってる。
2014/07/30(水) 09:54:57.06ID:5ewzjOeq
>>255
http://ja.m.wikipedia.org/wiki/DTrace#cite_ref-2
DTraceで使われてるDはまた別のものっぽいよ
2014/07/30(水) 09:58:39.78ID:oJuXMjZX
D言語のドキュメントは読みにくいから挫折してGo北野に俺が勉強したくなるような余計ななことかくな!
2014/07/30(水) 11:40:53.67ID:hbolUbaM
分かりやすい綺麗なコードが書ければプログラム言語なんて何でも良い
ただ、同じ事やるのに色々な表現方法が存在して構文を複雑にしたり
波括弧の位置だの鬱陶しい問題が存在しない方が良い

表現の違いで吐き出したバイナリコードに差が出る言語は
一々最速かつ最良の方法を模索するハメになるので煩わしい
2014/07/30(水) 11:43:17.31ID:1Qh8jOHK
Go北野でツボった
AV男優か何か?
2014/07/30(水) 12:44:24.74ID:Nn5HlRg1
>>259 もしかしてマジに聞いてる? Go(に)来たの
2014/07/30(水) 15:03:28.86ID:x/403miQ
>>258
あなたはpythonで幸せになるべき
2014/07/30(水) 17:26:23.03ID:MCWrKUub
>>258
そういう模索が必要になるレイヤーがあるんだよ
2014/07/30(水) 18:58:50.92ID:oDHaBQlk
英語読めないからあれだけど
WindowsだとOSのDLL読めるけど
ユーザーが作ったDLLは使えないんだって?
ならGoでグラフィックをやりたければOpenGLよりDirectXのが楽ということか

WinのOpenglは外部DLLないと古臭いから
2014/07/30(水) 21:19:57.41ID:/fpjt/6K
>>255
Facebookってオープンソースに力入れてたっけ?単に自社の便宜のためにDの開発者を取り込んだだけ、ということではなくて?
2014/07/30(水) 21:50:47.94ID:SFUuJg+H
facebookはPHP処理系の独自実装とかをオープンに公開してるな
2014/07/30(水) 22:09:01.57ID:oZh+12aq
>>260
お前のアスペぶり、最近GoとOcamlの勉強始めた激オポ野郎に似てて笑える。
2014/07/30(水) 22:51:02.01ID:Ozr11eeP
あそこはサーバもオープンソースでやってたじゃないか
2014/08/04(月) 14:37:29.28ID:HA1hOxHF
func hoge(x, y int) (x, y int) {
return
}
これはダメで

func hoge(x, y int) (int, int){
return x, y
}
これがいい理由がわからない
2014/08/04(月) 14:39:53.99ID:0z4VWwTk
スコープの中で一度も出てこないからだろ
2014/08/04(月) 14:44:57.93ID:HA1hOxHF
func hoge(x, y int) (x, y int) {
x++
y++
return
}

これでもダメ
2014/08/04(月) 14:59:51.43ID:NkDV0lbD
> func hoge(x, y int) (x, y int) {
> ...
> }

これ、

./main.go:7: duplicate argument x
./main.go:7: duplicate argument y

ってなる(Go 1.3)
272デフォルトの名無しさん
垢版 |
2014/08/04(月) 15:04:04.54ID:OYo/E/zd
馬鹿かこいつ
2014/08/04(月) 15:20:41.03ID:CLz4tu7V
>>268
goは全然詳しく知らないけど軽くググったら
http://golang.org/doc/effective_go.html#named-results
When named, they are initialized to the zero values for their types when the function begins;
まんま答えがありました
2014/08/04(月) 15:25:59.54ID:HA1hOxHF
>>273
戻り値が初期化されるからダメってことなんですね
Named resultは便利なようで冗長的になる可能性もあるってわけですね
メモリも食いそうですね
ありがとうございました
275名無しさん@お腹いっぱい。
垢版 |
2014/08/04(月) 15:41:33.25ID:ZHHZozY0
https://www.youtube.com/user/sesendou/videos
2014/08/04(月) 15:48:57.70ID:hivp8MqX
>>274
詳しい人の意見を少し待ったほうがいいんじゃないの?
ダメな理由は素人でも特定できたけど
なんらかのやり方があるかもしれないよ?
2014/08/05(火) 17:28:58.12ID:VDc80Yjj
見やすさのために変数を初期化すべきかどうかって問題だろ
goの仕様関係ないやん
2014/08/05(火) 17:39:44.90ID:DgDBu3xR
go は全く知らないんだけど、皆の話を聞いてたら、入力の変数名x,yと出力の変数名x,yは別物みたいだね。
つまり同じ名前をつけるバカとは付き合えんと言われてるの?

inout属性をつけられると良いんだけどね。
279276
垢版 |
2014/08/05(火) 17:59:47.02ID:dd7FVYvi
>>277
いえ、違います。
てか仕様そのものじゃないか。

>>278
いえ違います。
別物ではないから
重複定義でエラーになるんでしょ。

func (x int) (x int) なら
現状だとpseudoで
int x = 0
int x = args["x"]

その内
func () (x=123 int)
などで0以外の初期化子与えたり
func (x int) (x=args["x"] int)
func (x int) (x=args.x int)
func (x int) (x=_x int)
などで引数で初期化とか出来るようになるんじゃないかな
というか既にあるんじゃないのかな
2014/08/05(火) 18:07:02.09ID:DgDBu3xR
>>279 変数名in x,y で、out x,yにしたかったんだろ。
でも言語仕様上 in x,y とout x,yのx,yを同じ変数に割り当てられないからエラーになるんだろ。
つまりinと、outは別の変数を使えとしかられてるんじゃ無いの?

言語によってはinout属性を付けると、入力変数に値をセット出来て出力とすることが出来る。
2014/08/05(火) 18:10:48.15ID:DgDBu3xR
>>280 簡単に言うと、
func( 1, 2 ) と渡された時に

勝手に 1, 2 を上書きすんなよとしかられてるんだろ?
2014/08/05(火) 18:25:28.35ID:AfbB56Nf
Goは、重要な言語ではない。
2014/08/05(火) 18:45:40.65ID:dd7FVYvi
>>280
>>281
面倒だから何でもいいよ。
2014/08/05(火) 21:25:46.03ID:3MsCZ4lI
goでguiが作れない
guiライブラリのコミュニティーがない
あっても個人が作ったライブラリがあるだけ
goでguiに未来はない
2014/08/05(火) 22:21:36.63ID:VDc80Yjj
まずはジェネリクスを所望する
2014/08/05(火) 22:47:32.36ID:AfbB56Nf
Go死亡。

はい、時間の無駄でした、残念。
2014/08/05(火) 22:51:32.76ID:AfbB56Nf
Goはオワコン
2014/08/05(火) 22:56:03.53ID:q3/M2RFT
もうGoogleは、Android にも言語にも飽きたんだよ。オタクの趣味としてちんたら遊ばせておくつもりだろ。

はた迷惑だよな。
ロボット企業を買いあさってる。日本のSCHAFTも買収された。
2014/08/05(火) 23:31:09.30ID:AfbB56Nf
ニュース速報。Goが死亡したことについてGoogleは謝罪会見を行わ
ないとのことです。Goのユーザーからは怒りの声が上がっています。
以上、中継でした。
2014/08/06(水) 00:15:13.55ID:q1msYZkC
叩きたくて叩きたくてしょうがない奴が2chというゴキブリホイホイにあつまってくる
お陰でネットが平和にはなるけど
2014/08/06(水) 00:15:15.26ID:cxEAgXtb
Goは、システムプログラミング寄りのことをしない人には関係ないし、GAE使わない人にも関係ない。
WebAPIに使おうという人は増えてはいるけどね。
2014/08/06(水) 01:31:04.59ID:jlHxWIwY
まだ実験的に使ってる位だろ。 本格的に使えるレベルじゃ無いだろ。
WebAPIだと下手するとJAVAにすら負けるんじゃ無いのか?
2014/08/06(水) 02:01:51.39ID:u9FzL7dM
https://code.google.com/p/go-wiki/wiki/GoUsers
とりあえずGoを使ってる組織一覧あげとく
2014/08/06(水) 02:59:23.20ID:QpPIHC8m
>>293
GitHubとかHerokuとかマジ?
2014/08/06(水) 08:27:30.42ID:Tye/sJpW
おまえらDocker関連の盛り上がりを知らんのか?
あれGoで書かれてるんだぞ
2014/08/06(水) 08:38:43.95ID:OufmJGiK
この前買ったAsusのM/Bに付いてるユーティリティのセットアップ部分がGo+Walk?で書かれてた
Dos窓の消し方知らん状態で、よく配布出来たなと思うけど
2014/08/06(水) 09:24:52.37ID:cxEAgXtb
dockerに限らず、CoreOSやOSvの運用ツールもgoだったりする。
https://github.com/coreos/fleet/blob/master/README.md
https://github.com/cloudius-systems/capstan/blob/master/README.md
2014/08/06(水) 09:30:56.39ID:cxEAgXtb
cloudflareがオープンソースしてるCDNまわりの運用ツールやperconaのMySQLまわりの運用ツールもそうだったか。
まあ、google社内の運用ツール作成者が、cやpythonの代わりにgo使ってるようだが。
2014/08/06(水) 10:06:37.78ID:Ew8yVxs4
1.3からNaClもサポートされたよね。
実際使えるようになるのは1.4からだろうけどWebClient側もGoで書くようになるか。
問題はchromeでしか動かないってことだけど
300デフォルトの名無しさん
垢版 |
2014/08/06(水) 10:49:43.03ID:1n+ZEBWM
NaClはサンドボックス用の実装
1.4はarm NaCl
内容分からず書き込むなよボケナス
Web Client向けじゃねーよクソカス
2014/08/06(水) 13:24:50.02ID:zhx39L6I
>>300
どっちかいうとPPAPIを1.3でサポートしてないから、サポートする1.4から本格的に使えるって意味ね。

ビジネスロジックをクライアント側で実装するとなるとjsでは丸見えになるから
NaClでクライアントの一部でも実装できるというのはありな気がするんだけど。
ブラウザをchrome固定にしても構わない社内システムとかね。
302デフォルトの名無しさん
垢版 |
2014/08/06(水) 13:40:49.32ID:1n+ZEBWM
https://code.google.com/p/go-wiki/wiki/NativeClient
They cannot be run directly in Google Chrome. As such, the NaCl support in Go 1.3 is useful only for running sandboxed environments like the Go Playground.

上記を読めない文盲か?

PPAPIが1.4でサポートされるというソースを出したら全力で謝ろう
2014/08/06(水) 15:57:32.29ID:/I6P1gIg
go-wiki
There is ongoing work exploring support for the IRT and PPAPI (3 and 4 in the list) but no definite release target. Perhaps they will be in Go 1.4 but perhaps not.

perhaps not
^^^^^^^^^^
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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