Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
公式ドキュメント
http://golang.org/doc/
日本語訳
http://golang.jp
※前スレ
Go language part 1
http://mevius.5ch.net/test/read.cgi/tech/1381374291/
探検
Go language part 2
■ このスレッドは過去ログ倉庫に格納されています
1あ
2017/11/11(土) 19:25:26.19ID:X8lWnCzG2017/11/12(日) 22:15:33.55ID:EpH8iSoP
>>70
んなこと言ったら動的言語だって内部的には型を持ってるよ。
問題はintereface{}型が関数パラメータに使われた場合、
Printlnみたいになんでも受け入れ可能って意味ならいいんだけど、
実際にはGoの表現力が不足していて仕方なくってパターンが多い。
んなこと言ったら動的言語だって内部的には型を持ってるよ。
問題はintereface{}型が関数パラメータに使われた場合、
Printlnみたいになんでも受け入れ可能って意味ならいいんだけど、
実際にはGoの表現力が不足していて仕方なくってパターンが多い。
72あ
2017/11/12(日) 22:41:17.16ID:I2Yxw4dL >>71
動的言語の良いところを取るべくして、ただのvoid*には無い機能をもたせてるんよ。
表現力が足りないと言うより、ではなくて、本来は型にアサーションするんじゃなくて、別の任意のinterfaceにアサーションして便利に使おうね、って感じの思想。
だから、printf渡すだけでも、%sで渡すとStringerとして扱われたり、%+vで中身が見れたり玉虫色の解釈が出来るようになってる。
何でも受け入れ可能だから形無しinterfaceではなくて、こいつの型は提示せんがフォーマット文字列の通りに扱えよ、という意味であの引数。
だから、interfaceは明示的に実装しなくても、満たす関数があれば自動的に実装されるようになってる。
俺が今こうinterfaceを宣言して、そうするとこの構造体には自動的に実装されてるはずだから、俺は与えられた引数を宣言したinterfaceとして扱うってアサーションがかけれる。逆に言えば、俺に処理してほしけりゃこれを実装しとけ、って発想。
後出しジャンケンみたいなジェネリクス。
動的言語の良いところを取るべくして、ただのvoid*には無い機能をもたせてるんよ。
表現力が足りないと言うより、ではなくて、本来は型にアサーションするんじゃなくて、別の任意のinterfaceにアサーションして便利に使おうね、って感じの思想。
だから、printf渡すだけでも、%sで渡すとStringerとして扱われたり、%+vで中身が見れたり玉虫色の解釈が出来るようになってる。
何でも受け入れ可能だから形無しinterfaceではなくて、こいつの型は提示せんがフォーマット文字列の通りに扱えよ、という意味であの引数。
だから、interfaceは明示的に実装しなくても、満たす関数があれば自動的に実装されるようになってる。
俺が今こうinterfaceを宣言して、そうするとこの構造体には自動的に実装されてるはずだから、俺は与えられた引数を宣言したinterfaceとして扱うってアサーションがかけれる。逆に言えば、俺に処理してほしけりゃこれを実装しとけ、って発想。
後出しジャンケンみたいなジェネリクス。
73あ
2017/11/12(日) 23:03:45.88ID:I2Yxw4dL 話題()のScanの中で、convertAssignってのが呼ばれてるんだけど、こいつがまさに、Scannerとして扱えればScannerに任せるようになってる。
[]interface{}として渡してて、その1つの指す先が「構造体の要素一つ」であっても、
その要素がScannerを実装してればそれに処理を任せてる。
「構造体の要素一つ」をプリミティブな型で宣言せんと、ちゃんとtype IDColumn int等と宣言して、IDColumnとして構造体の要素を宣言しとけば、IDColumnにScanner実装しとけば[]interface{}の中にその参照突っ込んでもそれが呼ばれる。
type IDColumn int
type xxxRow struct {
ID IDColumn
}
で、
v:=xxxRow{}
って作って、
>>2のargsを例に上げるとargs[0]=&v.ID
ってして、Scanに(args...)で渡した時、0カラム名はIDColumnのScanで処理されて、v.IDに入る。
APIが足りてないとか大嘘。
[]interface{}として渡してて、その1つの指す先が「構造体の要素一つ」であっても、
その要素がScannerを実装してればそれに処理を任せてる。
「構造体の要素一つ」をプリミティブな型で宣言せんと、ちゃんとtype IDColumn int等と宣言して、IDColumnとして構造体の要素を宣言しとけば、IDColumnにScanner実装しとけば[]interface{}の中にその参照突っ込んでもそれが呼ばれる。
type IDColumn int
type xxxRow struct {
ID IDColumn
}
で、
v:=xxxRow{}
って作って、
>>2のargsを例に上げるとargs[0]=&v.ID
ってして、Scanに(args...)で渡した時、0カラム名はIDColumnのScanで処理されて、v.IDに入る。
APIが足りてないとか大嘘。
2017/11/12(日) 23:11:21.09ID:EwcJ+uHe
長くて読んでないけど静的言語を使いたいものとしては極力コンパイル時に解決したい。interface{}に頼ると実行時エラーが発生する可能性が増えてエラー処理の記述量がふくらむから嫌いなの。
それだけ。
それだけ。
75あ
2017/11/12(日) 23:18:58.92ID:I2Yxw4dL そりゃまあ、便利さとリスクの天秤でしか無いわな。
あとからStringerにして、そいつの中で実行時に死にうるコード書いたら、全くソース変えてない部分で実行時エラーになるんだし。
実質sprintfなんか使えないコードになってしまう。
あとからStringerにして、そいつの中で実行時に死にうるコード書いたら、全くソース変えてない部分で実行時エラーになるんだし。
実質sprintfなんか使えないコードになってしまう。
76あ
2017/11/12(日) 23:25:50.08ID:I2Yxw4dL まぁ、interface受けてるのにアサーションしてないとか、default書いてないのが一番悪い。
defaultはエラー処理じゃなくて正常系。
defaultはエラー処理じゃなくて正常系。
2017/11/13(月) 10:56:59.34ID:1Zt7pra1
>>76
は静的言語のメリットを全くわかってない。
以下を読めばinterface{}型のデメリットが理解できるはずだから読め。
http://sssslide.com/speakerdeck.com/twada/php-conference-2016
は静的言語のメリットを全くわかってない。
以下を読めばinterface{}型のデメリットが理解できるはずだから読め。
http://sssslide.com/speakerdeck.com/twada/php-conference-2016
2017/11/13(月) 12:06:00.11ID:NWIlj649
親切な人が多いけど、ウンコが混じってもコミュニティの役にはたたんよ?
リーナスも言ってるでしょ、基本的には去ってもらうこと、これが最も良い解決策。
向上心が有るなら別だが、基本が納得出来ないなら「どうぞ、どうぞ」が一番良い
リーナスも言ってるでしょ、基本的には去ってもらうこと、これが最も良い解決策。
向上心が有るなら別だが、基本が納得出来ないなら「どうぞ、どうぞ」が一番良い
79あ
2017/11/13(月) 12:18:42.55ID:GqWd1fLV >>77
デメリットと言うより、必要悪だろ。
一切キャストしないCも書けるが
このスライド出す時点でナンセンス。
PHPの変数は暗黙的変換で無残なことになる、数や名前や型の不一致はそれこそ、毎度構造体を作る事によって引き起こされる。
val,ok := アサーション
でokが見れるという点で殆ど対応できる。
Bugクラスが未定義、と言うところもおかしいわな。
interfaceを実装してればそれがなんであれそのinterfaceとして扱えるように、ライブラリ書くだけだろ。
ただの型チェックの防御的プログラミングとは違う。
interfaceとのチェックと、interfaceに任せる事での、そのロジック内での処理と切り離した、interfaceへの責任転嫁に近いが、
interfaceをいかに正しく定義、実装するか自体が問題であって、型は無くて良いよねって言ってるわけじゃない。
デメリットと言うより、必要悪だろ。
一切キャストしないCも書けるが
このスライド出す時点でナンセンス。
PHPの変数は暗黙的変換で無残なことになる、数や名前や型の不一致はそれこそ、毎度構造体を作る事によって引き起こされる。
val,ok := アサーション
でokが見れるという点で殆ど対応できる。
Bugクラスが未定義、と言うところもおかしいわな。
interfaceを実装してればそれがなんであれそのinterfaceとして扱えるように、ライブラリ書くだけだろ。
ただの型チェックの防御的プログラミングとは違う。
interfaceとのチェックと、interfaceに任せる事での、そのロジック内での処理と切り離した、interfaceへの責任転嫁に近いが、
interfaceをいかに正しく定義、実装するか自体が問題であって、型は無くて良いよねって言ってるわけじゃない。
80あ
2017/11/13(月) 12:22:19.44ID:GqWd1fLV オブジェクト指向だと考えるのが一番いかんな。
ToString()を全ての型が実装してる、と言う発想じゃなくて、
プリミティブはあくまでプリミティブ、Stringerならば、Stringerとして処理できる、という逆の発送。
ToString()を全ての型が実装してる、と言う発想じゃなくて、
プリミティブはあくまでプリミティブ、Stringerならば、Stringerとして処理できる、という逆の発送。
81あ
2017/11/13(月) 16:18:30.89ID:GqWd1fLV よーく読んだら、このスライドで話してることが(責務の分担(interfaceとinterfaceへのアサーション)、
疑いがあるならば即落とすべき(panic)、
mixedでのリターン(標準)、
クラスが未定義の場合何をするか(defaultでの無視))
と、全くGoのinterfaceでの設計意図と矛盾しないことぐらいわかるだろうにな。
世知辛いわ。
疑いがあるならば即落とすべき(panic)、
mixedでのリターン(標準)、
クラスが未定義の場合何をするか(defaultでの無視))
と、全くGoのinterfaceでの設計意図と矛盾しないことぐらいわかるだろうにな。
世知辛いわ。
2017/11/13(月) 19:04:12.10ID:1Zt7pra1
84あ
2017/11/13(月) 21:06:35.59ID:JTJTMoOK コンパイル時に誤りに気づきたいのは、要は、動作させるまで正常に動くことが保証できないのがいかんのでしょ。
あとからファイル足して、既存コードの動きまで変わる(シグニチャがあってればinterfaceが実装される)言語で、何言ってんだってレベルの話。
どう動作させても最悪、処理対象外データとしてスルーするようにdefault書くのと同じようなもんで。
本気で適当にgeneratorで作った得体のしれないものを関数に渡してるような奴でもあるまいし。
すれ違い感半端ないのわ俺だわ。
何か俺が書いたこと間違ってる?
あとからファイル足して、既存コードの動きまで変わる(シグニチャがあってればinterfaceが実装される)言語で、何言ってんだってレベルの話。
どう動作させても最悪、処理対象外データとしてスルーするようにdefault書くのと同じようなもんで。
本気で適当にgeneratorで作った得体のしれないものを関数に渡してるような奴でもあるまいし。
すれ違い感半端ないのわ俺だわ。
何か俺が書いたこと間違ってる?
85あ
2017/11/13(月) 21:12:35.14ID:JTJTMoOK どう動作させても最悪、処理対象外データとしてスルーするようにdefaultに書いておくのと同じようなもんで、形チェックに通るか通らんなんか、ポインタがある時点でどのみち同じようなもんで、と書こうとしたら大事なところ抜けたわ。ごめん。
86あ
2017/11/13(月) 21:28:25.68ID:JTJTMoOK なぁ、俺が持ってるGoの知識は古いのか?
1.8まではソース大体読んでたが。そんなに読み違えてる?
ソース読んで、設計思想まで理解したやつが「黙れ」って言うならもう黙るわ。
今まで俺が書いてたような内容は標準ライブラリがほぼそのまんまの事してる内容ばっかだよ。
fmt.Printfだけでも一読の価値はあるんだが。
もう好き勝手書いてろと思えてきた。
1.8まではソース大体読んでたが。そんなに読み違えてる?
ソース読んで、設計思想まで理解したやつが「黙れ」って言うならもう黙るわ。
今まで俺が書いてたような内容は標準ライブラリがほぼそのまんまの事してる内容ばっかだよ。
fmt.Printfだけでも一読の価値はあるんだが。
もう好き勝手書いてろと思えてきた。
2017/11/13(月) 21:55:59.07ID:jvc+6Y1L
これ、virtual持ってないよな?ジェネリックなんてまるでやる気ないだろ。
OOPが暴走気味でデザパタ廚のようなゴミを再生産しているのは事実として、virtualなしはいかんだろ。
それに対しての
> 多分interfaceにプロパティをokにしたり (>>62)
なら全くもって同意だ。というか、JavaScriptはこれができて便利すぎる。
むしろあれがC++に入らないのが不思議だ。
継承や委譲をこねくり回してデザインパターン(キリッするよりは、
JavaScriptのようにメソッドも第一級オブジェクトにしてしまって、簡単にvtblを手組できるようにした方が、
「見りゃ分かるだろ」的なソースを作りやすい。多重継承も楽勝で対応できる。
Goは多分行き過ぎたOOPの反省でinterfaceが1階層しかなく、この点はいいが、
せっかく第一級オブジェクトな関数をメソッドに代入できない点が糞だ。
これはinterfaceをプロパティバッグにしてしまえば解決できる。(62の指摘はこれだと認識している)
動的対応がいやなら再代入禁止で2パスコンパイル
(インタフェース解決+オブジェクトコード生成)にすれば対応可能だ。
Goの作者はよほどOOPが嫌いか、ジェネリックなんて不要と思っているのだろう。
Goのinterfaceは静的ダックタイピングのためのものであって、記述コードを減らすためのものではない。
俺はこの点は全く気に入らないね。というかコードを減らす努力がGoには全く見あたらない。
おそらくそれがここ20年のソフトウェア産業の努力の方向だったというのに。
OOPが暴走気味でデザパタ廚のようなゴミを再生産しているのは事実として、virtualなしはいかんだろ。
それに対しての
> 多分interfaceにプロパティをokにしたり (>>62)
なら全くもって同意だ。というか、JavaScriptはこれができて便利すぎる。
むしろあれがC++に入らないのが不思議だ。
継承や委譲をこねくり回してデザインパターン(キリッするよりは、
JavaScriptのようにメソッドも第一級オブジェクトにしてしまって、簡単にvtblを手組できるようにした方が、
「見りゃ分かるだろ」的なソースを作りやすい。多重継承も楽勝で対応できる。
Goは多分行き過ぎたOOPの反省でinterfaceが1階層しかなく、この点はいいが、
せっかく第一級オブジェクトな関数をメソッドに代入できない点が糞だ。
これはinterfaceをプロパティバッグにしてしまえば解決できる。(62の指摘はこれだと認識している)
動的対応がいやなら再代入禁止で2パスコンパイル
(インタフェース解決+オブジェクトコード生成)にすれば対応可能だ。
Goの作者はよほどOOPが嫌いか、ジェネリックなんて不要と思っているのだろう。
Goのinterfaceは静的ダックタイピングのためのものであって、記述コードを減らすためのものではない。
俺はこの点は全く気に入らないね。というかコードを減らす努力がGoには全く見あたらない。
おそらくそれがここ20年のソフトウェア産業の努力の方向だったというのに。
2017/11/13(月) 21:57:38.79ID:jvc+6Y1L
2017/11/13(月) 21:59:25.48ID:jvc+6Y1L
ちなみに味見の結果は出た。PHP比で15%速かった。結論としてはGoは糞だ。
PHPが糞なのは事実として、のさばるのには理由がある。
GoではPHPを殺せないし、今回のようなWebアプリ(掲示板)ならPHPの方がましだね。
PHP/JavaScriptなら数行で書ける処理を、(前スレ978参照)
型のおかげでベタに3回書くかリフレクション等こねくり回して20-30行書くかが必要で、
それで15%しか変わらないのなら全く割に合わない。
5台クラスタを6台クラスタにすれば済む話でしかなく、物理で殴れ、になる。
しかもPHPは毎回起動/停止するので、メモリリークとか
おかしなリクエストを食わされて落とされた場合のことを考える必要がない。うまくできてる。
(これについてはgoroutineで対応できるが)
そもそもWebアプリなんて型がないとつれーわって規模にもならないし。
ただし単品ではそこそこ速い。今回はSQLiteに引っかかるのでそれが見えないが、
Nodeのデータから推定した結果、Node比-40%、JSON.stringify部分だけなら倍速出ている。
ただしこれならC#やJavaと同程度、C++よりは確実に遅いといったところか。
生産性は悪い。コードを集約する方法が用意されてない。
結果、C++/C#/Java使いがわざわざ乗り換える訴求力はない。速度も生産性も利点がない。
ただしこれらの言語は本当に肥大化しすぎていて、新規に始めるのはかなり辛い。
これらの言語を全く知らないWeb系がコンパイラ系言語を始めるとっかかりとしてはちょうどよく、
その辺が受けている理由か。
言語自体にパワフルさはない。C++にWeb系ライブラリが出そろえば簡単に殺されてもおかしくない。
とはいえ、言語としては確実にJavaより出来のいいC#が完全にJavaより出遅れているし、
これまた糞だと言われているPythonがはびこっているし、
言語の成否は言語自体の出来よりはそれを使う人がいるかどうかが問題であり、
Web系向けの「軽量コンパイラ言語」は確かにないので、離陸できればうまくいくのかもしれん。
とはいえ、Web系は声がでかいだけで、実際のプログラマ人口はJavaの方が圧倒的に多いのも事実だし、
関数型()みたいにポシャっても全く不思議ではないけど。
PHPが糞なのは事実として、のさばるのには理由がある。
GoではPHPを殺せないし、今回のようなWebアプリ(掲示板)ならPHPの方がましだね。
PHP/JavaScriptなら数行で書ける処理を、(前スレ978参照)
型のおかげでベタに3回書くかリフレクション等こねくり回して20-30行書くかが必要で、
それで15%しか変わらないのなら全く割に合わない。
5台クラスタを6台クラスタにすれば済む話でしかなく、物理で殴れ、になる。
しかもPHPは毎回起動/停止するので、メモリリークとか
おかしなリクエストを食わされて落とされた場合のことを考える必要がない。うまくできてる。
(これについてはgoroutineで対応できるが)
そもそもWebアプリなんて型がないとつれーわって規模にもならないし。
ただし単品ではそこそこ速い。今回はSQLiteに引っかかるのでそれが見えないが、
Nodeのデータから推定した結果、Node比-40%、JSON.stringify部分だけなら倍速出ている。
ただしこれならC#やJavaと同程度、C++よりは確実に遅いといったところか。
生産性は悪い。コードを集約する方法が用意されてない。
結果、C++/C#/Java使いがわざわざ乗り換える訴求力はない。速度も生産性も利点がない。
ただしこれらの言語は本当に肥大化しすぎていて、新規に始めるのはかなり辛い。
これらの言語を全く知らないWeb系がコンパイラ系言語を始めるとっかかりとしてはちょうどよく、
その辺が受けている理由か。
言語自体にパワフルさはない。C++にWeb系ライブラリが出そろえば簡単に殺されてもおかしくない。
とはいえ、言語としては確実にJavaより出来のいいC#が完全にJavaより出遅れているし、
これまた糞だと言われているPythonがはびこっているし、
言語の成否は言語自体の出来よりはそれを使う人がいるかどうかが問題であり、
Web系向けの「軽量コンパイラ言語」は確かにないので、離陸できればうまくいくのかもしれん。
とはいえ、Web系は声がでかいだけで、実際のプログラマ人口はJavaの方が圧倒的に多いのも事実だし、
関数型()みたいにポシャっても全く不思議ではないけど。
90あ
2017/11/13(月) 22:02:50.75ID:JTJTMoOK そうですか、ではそのように他の言語をお使いくださいな。
91あ
2017/11/13(月) 22:17:05.12ID:JTJTMoOK 一歩引いて、ハサミを買ってきた奴が、
「これカッターナイフみたい使えねえじゃん!クソカッターかよ!クソだ!
え?挟んで使う?馬鹿じゃねえの?俺はこれが切りたいから刃を立ててるの!
刃物で挟むとかちょっと違うオペレーションじゃん?それって効率悪いし、危ないだろ、考えろよ。
こんなもの、カッターナイフのかわりには成りはしないね!
断然カッターナイフだわ。ほんとクソ」
ってドヤ顔するのを見るのもちょっと面白いな。
「これカッターナイフみたい使えねえじゃん!クソカッターかよ!クソだ!
え?挟んで使う?馬鹿じゃねえの?俺はこれが切りたいから刃を立ててるの!
刃物で挟むとかちょっと違うオペレーションじゃん?それって効率悪いし、危ないだろ、考えろよ。
こんなもの、カッターナイフのかわりには成りはしないね!
断然カッターナイフだわ。ほんとクソ」
ってドヤ顔するのを見るのもちょっと面白いな。
92あ
2017/11/13(月) 22:18:20.70ID:JTJTMoOK 馬鹿とハサミは使いようだが、馬鹿にハサミは使えないもんなんだなあ。
2017/11/14(火) 00:25:35.42ID:XnMPPPKZ
>>87
56だけどまぁ分かる。今TypeScriptでジェネリクス使いまくってるけど
やはり静的言語に自由度を求めるとジェネリクスがほしい。
でもGoの言語設計ってコード生成しようぜって匂いを感じる。
パッケージ内に生成したコードを置けば自作の型にいくらでも機械的にメソッド追加できる。シンプルな構文でこういう自由度を確保してるのは良く出来てる感ある。
問題はコード生成するコードを書くのが大変ってことなんだよねw
コード生成するコードを書くための仕組みがもっと簡単になればかなり使い勝手が良くなる。
実際ジェネリクス自体コード生成するためのコードをショートカットした技術って感じがする。だからちょっと複雑なことをしようとすると難しかったりする。
コード生成するためのコードは素朴な分そういう頭がこんがらがる感じはないかなと。
56だけどまぁ分かる。今TypeScriptでジェネリクス使いまくってるけど
やはり静的言語に自由度を求めるとジェネリクスがほしい。
でもGoの言語設計ってコード生成しようぜって匂いを感じる。
パッケージ内に生成したコードを置けば自作の型にいくらでも機械的にメソッド追加できる。シンプルな構文でこういう自由度を確保してるのは良く出来てる感ある。
問題はコード生成するコードを書くのが大変ってことなんだよねw
コード生成するコードを書くための仕組みがもっと簡単になればかなり使い勝手が良くなる。
実際ジェネリクス自体コード生成するためのコードをショートカットした技術って感じがする。だからちょっと複雑なことをしようとすると難しかったりする。
コード生成するためのコードは素朴な分そういう頭がこんがらがる感じはないかなと。
94あ
2017/11/14(火) 00:39:55.32ID:7wTk437K なんでジェネリクスが使えるか、型引数がジェネリクス関数の中で行う処理で必要な演算子やらメソッド呼び出しを実装してるか、だろ。
だったら、そもそもinterface受ければいいだけじゃん。>>56でやりたいであろう直積も和も、interface側ではなくて、構造体側がどう実装するかでしかないし、
それも各構造体で両方実装するとか、各構造体を埋め込んだ構造体書くだけじゃん。
それは、型のないinterfaceで受けるべきじゃなくて、パブリックな「型のあるinterfaceで受ける関数に」から、プライベートな「型のないinterfaceを受けるが中でアサーションしてる関数に渡して」やるだけじゃねえの?
その設計が面倒なら、ジェネレーターで組み合わせ爆発起こして遊ぶべきなんだろうが、
実際は型付きinterfaceで事足りないか?それ。
だったら、そもそもinterface受ければいいだけじゃん。>>56でやりたいであろう直積も和も、interface側ではなくて、構造体側がどう実装するかでしかないし、
それも各構造体で両方実装するとか、各構造体を埋め込んだ構造体書くだけじゃん。
それは、型のないinterfaceで受けるべきじゃなくて、パブリックな「型のあるinterfaceで受ける関数に」から、プライベートな「型のないinterfaceを受けるが中でアサーションしてる関数に渡して」やるだけじゃねえの?
その設計が面倒なら、ジェネレーターで組み合わせ爆発起こして遊ぶべきなんだろうが、
実際は型付きinterfaceで事足りないか?それ。
2017/11/14(火) 02:34:26.33ID:ik7ti+/q
>>93
> でもGoの言語設計ってコード生成しようぜって匂いを感じる。
俺にはその嗅覚はないが、状況証拠からするとこれはその通りだ。公式ブログ(URL後掲)もあるし。
標準コマンドに go generate とか、最初からASTを見せる気満々とか、iota とか、ちょっと行っちまってる。
そしてパッケージ内に階層がなく、 cat >> で全ていける。コード生成に障害が何もない。
首謀者は一般のプロダクトプログラマではなく、
サポート側のプログラマ(Perlでlinter等の作成とか)だったのかもしれんね。
C++のテンプレートはちょっと行き過ぎてしまっていて、余計に見にくくなってる。
例えば、形式的な無駄関数呼び出しがありまくったりする。
しかしそれらはコンパイラが最適化で抜いてくれるので、彼らはそれでよしとしている。
C++erの最優先はオブジェクトコードであって、ソースコードではないんだな。
無駄に回りくどくなったソースを見せられても困るんだが。
しかし考えてみれば、テンプレートなんて所詮はコピペだから、機械的に吐き出すのは極めて簡単だ。
人間がゴリゴリテンプレートを書くのではなく、
自動コード生成前提で、そのために基本ベタ書き、ってのは逆転の発想だがありだろう。
いや正確に言うと、Cのマクロの基本はコピペ的使い方だから回帰か?
とはいえCのマクロもC++のテンプレートも濫用が過ぎてるのは事実だ。
ベタなコードを自動生成してしまえ、ってのはありだろう。
> でもGoの言語設計ってコード生成しようぜって匂いを感じる。
俺にはその嗅覚はないが、状況証拠からするとこれはその通りだ。公式ブログ(URL後掲)もあるし。
標準コマンドに go generate とか、最初からASTを見せる気満々とか、iota とか、ちょっと行っちまってる。
そしてパッケージ内に階層がなく、 cat >> で全ていける。コード生成に障害が何もない。
首謀者は一般のプロダクトプログラマではなく、
サポート側のプログラマ(Perlでlinter等の作成とか)だったのかもしれんね。
C++のテンプレートはちょっと行き過ぎてしまっていて、余計に見にくくなってる。
例えば、形式的な無駄関数呼び出しがありまくったりする。
しかしそれらはコンパイラが最適化で抜いてくれるので、彼らはそれでよしとしている。
C++erの最優先はオブジェクトコードであって、ソースコードではないんだな。
無駄に回りくどくなったソースを見せられても困るんだが。
しかし考えてみれば、テンプレートなんて所詮はコピペだから、機械的に吐き出すのは極めて簡単だ。
人間がゴリゴリテンプレートを書くのではなく、
自動コード生成前提で、そのために基本ベタ書き、ってのは逆転の発想だがありだろう。
いや正確に言うと、Cのマクロの基本はコピペ的使い方だから回帰か?
とはいえCのマクロもC++のテンプレートも濫用が過ぎてるのは事実だ。
ベタなコードを自動生成してしまえ、ってのはありだろう。
2017/11/14(火) 02:35:07.63ID:ik7ti+/q
go generateは以下を見る限り追記だけかな?
https://blog.golang.org/generate
https://techblog.haroid.io/go-generate/
https://qiita.com/vvakame/items/6719b3c90dfaa8220e44
これはちょっと回りくどい。go fmt が上書きなんだから、go generate も上書きでいい。
具体的に欲しいのは、MarshalJSONではなく、構造体にJSONタグを追記する機能なのだから。
つまり、
type myStruct struct {
SomeProp int
}
を
type myStruct struct {
SomeProp int `json:"someProp"`
}
に上書き、だ。上書きが怖いのならビルドディレクトリを分ければいいだけでね。
> コード生成するコードを書くための仕組みがもっと簡単になればかなり使い勝手が良くなる。
俺は go generate が別パッケージを呼び出すのが気に入らないね。
とはいえ、自動生成用のコードなんてその場に埋め込まれても困るのも事実だが。
しかしjsonの部分は明らかに糞なんだし、公式で以下のとか用意しとけよなマジで。
元ソース
type myStruct struct { //go:maintain jsonTag -type=lowerCamel
SomeProp int
}
を、
type myStruct struct { //go:maintain jsonTag -type=lowerCamel
SomeProp int `json:"someProp"`
}
にビルドの度に自動的に maintain する、とか。
https://blog.golang.org/generate
https://techblog.haroid.io/go-generate/
https://qiita.com/vvakame/items/6719b3c90dfaa8220e44
これはちょっと回りくどい。go fmt が上書きなんだから、go generate も上書きでいい。
具体的に欲しいのは、MarshalJSONではなく、構造体にJSONタグを追記する機能なのだから。
つまり、
type myStruct struct {
SomeProp int
}
を
type myStruct struct {
SomeProp int `json:"someProp"`
}
に上書き、だ。上書きが怖いのならビルドディレクトリを分ければいいだけでね。
> コード生成するコードを書くための仕組みがもっと簡単になればかなり使い勝手が良くなる。
俺は go generate が別パッケージを呼び出すのが気に入らないね。
とはいえ、自動生成用のコードなんてその場に埋め込まれても困るのも事実だが。
しかしjsonの部分は明らかに糞なんだし、公式で以下のとか用意しとけよなマジで。
元ソース
type myStruct struct { //go:maintain jsonTag -type=lowerCamel
SomeProp int
}
を、
type myStruct struct { //go:maintain jsonTag -type=lowerCamel
SomeProp int `json:"someProp"`
}
にビルドの度に自動的に maintain する、とか。
97あ
2017/11/14(火) 08:17:29.04ID:j+l8jijk 上書きしない理由は、本来想定された用途がinterfaceを実装すべくレシーバをもった関数を生やすためだろ。
同一パッケージなら別ファイルで良いんだから。
こりゃ、2にもジェネリクス入るか微妙だな。
欲しい欲しいて声が挙がっても、要らんだろと言われ続けてるのがなんでかわかったわ。
既存機能すら理解してない奴らが欲しいって言ってるのか9割なんだろうな。
同一パッケージなら別ファイルで良いんだから。
こりゃ、2にもジェネリクス入るか微妙だな。
欲しい欲しいて声が挙がっても、要らんだろと言われ続けてるのがなんでかわかったわ。
既存機能すら理解してない奴らが欲しいって言ってるのか9割なんだろうな。
98あ
2017/11/14(火) 08:19:24.88ID:j+l8jijk そもそも、「ジェネレータ」なんだから、既存のものを上書きするものでないのは自明だろ。
新しいソースをジェネレートすんだよ。
新しいソースをジェネレートすんだよ。
2017/11/15(水) 23:10:48.87ID:JIFjS5yg
100あ
2017/11/15(水) 23:31:53.99ID:UrGbNKGm >>99
純然たる日本人だよ、たどれる範囲では。
日本語が解りにくいみたいなそういう言いがかりはナンセンス。
そもそも解りにくい日本語を喋れるのは日本人だけだ。
解りにくい○語を話せるのはネイティブ○語話者だけと大きくも言える。
韓国人が日本語の語順が不安定な部分使ってニュアンス出したりとか、逆にきちんと定義されてる言葉の使い分け使って煽れる訳ねえじゃん。
その結果例え解りにくいものになったとしても、あとから学んだ言葉が不得手な場合の解りにくさとは全く違う読みにくさが生まれる。
英語少々喋れても、口喧嘩はできなかったり嫌味が言えないのと同じようなもん。
純然たる日本人だよ、たどれる範囲では。
日本語が解りにくいみたいなそういう言いがかりはナンセンス。
そもそも解りにくい日本語を喋れるのは日本人だけだ。
解りにくい○語を話せるのはネイティブ○語話者だけと大きくも言える。
韓国人が日本語の語順が不安定な部分使ってニュアンス出したりとか、逆にきちんと定義されてる言葉の使い分け使って煽れる訳ねえじゃん。
その結果例え解りにくいものになったとしても、あとから学んだ言葉が不得手な場合の解りにくさとは全く違う読みにくさが生まれる。
英語少々喋れても、口喧嘩はできなかったり嫌味が言えないのと同じようなもん。
101デフォルトの名無しさん
2017/11/15(水) 23:48:19.81ID:JIFjS5yg102あ
2017/11/16(木) 00:49:28.81ID:2XWbEkjP103デフォルトの名無しさん
2017/11/16(木) 15:41:38.90ID:ptVZN4ur104デフォルトの名無しさん
2017/11/16(木) 15:56:24.67ID:ptVZN4ur105デフォルトの名無しさん
2017/11/16(木) 16:29:37.83ID:daoo5ECa windowsで開発していると
goで作成した実行ファイルを実行するたびにアンチウイルスソフトのAVGが起動して
スキャンを始めます
goがコンパイルしたプログラムをスキャン対象外にする
なんてことは出来なそうですし、スキャンをオフにするしかないのでしょうか?
goで作成した実行ファイルを実行するたびにアンチウイルスソフトのAVGが起動して
スキャンを始めます
goがコンパイルしたプログラムをスキャン対象外にする
なんてことは出来なそうですし、スキャンをオフにするしかないのでしょうか?
106デフォルトの名無しさん
2017/11/16(木) 16:36:26.26ID:W2aOUAlV >>105
gopath以下を検索対象外すればいいのでは?
gopath以下を検索対象外すればいいのでは?
107デフォルトの名無しさん
2017/11/16(木) 23:07:32.53ID:om16Ttsu GO言語って何に使うの?
108デフォルトの名無しさん
2017/11/16(木) 23:43:33.13ID:qlqEZ53b >>103
23:00- からのIDの話とか、やっぱり筋が悪いと思うぞ。
・IDが大文字じゃないとダメだからタグをつけよう!(Go信者)
・IDが大文字じゃないといけないのがダメだろ。それでソース変更とか頭おかしい(C派)
Linusが嫌っているのはこういったどうでもいいことに余計に手間がかかることであって。
これはGoの仕様が糞だから発生した手間でしかない。
IDが大文字になったら見やすくなり、バグが減るのか?そんなわけない。
ここで必要なのは、lintのwarningを抑止するコメント、 //golint: ignore case `Id` 等であって、
余計なタグを増やすスクリプトではない。
ここら辺の「全部ベタ書きで個別指定しろ」という点がGoの思想の糞な所だ。
次はこれらによって個別に記述されたタグの整合性をチェックするスクリプトが必要になり、以降無限ループだね。
そうではなく、1箇所にしか書かないから不整合が発生し得ない、というのがOAOOなりDRYだというのに。
Goは人間がソースコードをメンテすると仮定してない。それでついてこれる奴が多いかどうかだね。
俺は無理だと思うが。
関数型が急速にポシャった感があるのは、馬鹿しかいなかったからだと思っている。
Goもそんな感じがする。C++についていけない馬鹿しかいない感が酷い。
上記だって目の付け所が反対だ。
linterをフォークして余計な手間が必要ないようにコメント拡張を加え、どちらが支持されるか勝負するのがまっとうだろ。
プログラマとして未熟な奴がGoを支持してる感が酷い。
C++も一応スマポを使えばGC的なプログラミングは行える。
(俺はあれは糞だと思うし、普通にGC言語使えよ馬鹿なのか?としか思わないが)
というか、Goは完全にスタートポイントがCで、C++/C#/Javaじゃないね。
だからC++等がやらかしたことを再現している。歴史に学ばず、経験に学ぼうとしている。
多分Goはポシャる。
今必要なのは肥大化しすぎてデザパタ厨のような「目的と手段を履き違えた馬鹿」を生み出したOOPを整理することであって、
はっきり言ってこの「大文字な構造体メンバにタグをつける」スクリプトなんて既にGo厨化してる。
やることを「減らす」スクリプトを書かなければいけないのに、「増やす」スクリプト書いてどうするんだよ、というね。
23:00- からのIDの話とか、やっぱり筋が悪いと思うぞ。
・IDが大文字じゃないとダメだからタグをつけよう!(Go信者)
・IDが大文字じゃないといけないのがダメだろ。それでソース変更とか頭おかしい(C派)
Linusが嫌っているのはこういったどうでもいいことに余計に手間がかかることであって。
これはGoの仕様が糞だから発生した手間でしかない。
IDが大文字になったら見やすくなり、バグが減るのか?そんなわけない。
ここで必要なのは、lintのwarningを抑止するコメント、 //golint: ignore case `Id` 等であって、
余計なタグを増やすスクリプトではない。
ここら辺の「全部ベタ書きで個別指定しろ」という点がGoの思想の糞な所だ。
次はこれらによって個別に記述されたタグの整合性をチェックするスクリプトが必要になり、以降無限ループだね。
そうではなく、1箇所にしか書かないから不整合が発生し得ない、というのがOAOOなりDRYだというのに。
Goは人間がソースコードをメンテすると仮定してない。それでついてこれる奴が多いかどうかだね。
俺は無理だと思うが。
関数型が急速にポシャった感があるのは、馬鹿しかいなかったからだと思っている。
Goもそんな感じがする。C++についていけない馬鹿しかいない感が酷い。
上記だって目の付け所が反対だ。
linterをフォークして余計な手間が必要ないようにコメント拡張を加え、どちらが支持されるか勝負するのがまっとうだろ。
プログラマとして未熟な奴がGoを支持してる感が酷い。
C++も一応スマポを使えばGC的なプログラミングは行える。
(俺はあれは糞だと思うし、普通にGC言語使えよ馬鹿なのか?としか思わないが)
というか、Goは完全にスタートポイントがCで、C++/C#/Javaじゃないね。
だからC++等がやらかしたことを再現している。歴史に学ばず、経験に学ぼうとしている。
多分Goはポシャる。
今必要なのは肥大化しすぎてデザパタ厨のような「目的と手段を履き違えた馬鹿」を生み出したOOPを整理することであって、
はっきり言ってこの「大文字な構造体メンバにタグをつける」スクリプトなんて既にGo厨化してる。
やることを「減らす」スクリプトを書かなければいけないのに、「増やす」スクリプト書いてどうするんだよ、というね。
109あ
2017/11/17(金) 00:01:51.83ID:8APR9LzB また斜め上の事言ってんのか。
110デフォルトの名無しさん
2017/11/17(金) 00:20:20.06ID:r4qIw16A 96にあるようにjson用に構造体にタグを機械的に打つツールは既にあるよ。
もちろんそういうことを知らなきゃ、
冗長なコードを手打ちする羽目になるけど、
知らなきゃ苦労するのはどの言語だって同じだし。
俺はむしろgoの構文のシンプルさって人間が修正するだけじゃなく、機械が処理するためでもあるんだなって感動したけど。
もちろんそういうことを知らなきゃ、
冗長なコードを手打ちする羽目になるけど、
知らなきゃ苦労するのはどの言語だって同じだし。
俺はむしろgoの構文のシンプルさって人間が修正するだけじゃなく、機械が処理するためでもあるんだなって感動したけど。
111デフォルトの名無しさん
2017/11/17(金) 00:28:42.55ID:r4qIw16A >>108
あ、id の話か。
どうだろうね。IDでもidでもIdでも良いとしたら、つまりプロジェクトとして構文規約を作ろうってことになるよね。
それを始まりとして、プロジェクトによってコードの書き方が違うという分断化が起きる。
あ、id の話か。
どうだろうね。IDでもidでもIdでも良いとしたら、つまりプロジェクトとして構文規約を作ろうってことになるよね。
それを始まりとして、プロジェクトによってコードの書き方が違うという分断化が起きる。
112デフォルトの名無しさん
2017/11/17(金) 00:37:38.60ID:Vk6VJm9w113あ
2017/11/17(金) 00:44:31.04ID:fbp8aPNo114デフォルトの名無しさん
2017/11/17(金) 01:05:30.05ID:r4qIw16A >>112
所詮はツールだから宗教戦争にしかならないのも確か。
vim vs emacs的な。
ちなみに一番理想的だと思ってる言語は何なのか知りたい。
俺自身はgoの言語仕様に欠点があるのは認めるよ。
でも、どの言語もコモディ化で割と似たような言語仕様になる中、独自性があって、素敵だとも思う。
何か言語設計者に信念を感じるんだよね。
ジェネリクスが熱心に要望されてる中、
未だに入れないのも何かもっと新しい手法を編み出そうとしてるんじゃないかと妄想してる。
phpなんか、片っ端から言語仕様足しまくってるし。動的言語のくせにinterface入れてみたりとか。
でも確かに最初に触る言語をgoにするのは危険かも知れない。
所詮はツールだから宗教戦争にしかならないのも確か。
vim vs emacs的な。
ちなみに一番理想的だと思ってる言語は何なのか知りたい。
俺自身はgoの言語仕様に欠点があるのは認めるよ。
でも、どの言語もコモディ化で割と似たような言語仕様になる中、独自性があって、素敵だとも思う。
何か言語設計者に信念を感じるんだよね。
ジェネリクスが熱心に要望されてる中、
未だに入れないのも何かもっと新しい手法を編み出そうとしてるんじゃないかと妄想してる。
phpなんか、片っ端から言語仕様足しまくってるし。動的言語のくせにinterface入れてみたりとか。
でも確かに最初に触る言語をgoにするのは危険かも知れない。
115デフォルトの名無しさん
2017/11/17(金) 01:23:31.18ID:r4qIw16A あとgoはast周りが充実してるってことは究極自分の理想言語を作ってgoのエコシステムを乗っ取るって手もあるよね。
rubyの作者が作ろうとしてるstreemって言語もgoをベースに作ろうとしてると聞いたし
rubyの作者が作ろうとしてるstreemって言語もgoをベースに作ろうとしてると聞いたし
116デフォルトの名無しさん
2017/11/17(金) 06:29:15.43ID:26Kh913O まだ味見してるのかw
117デフォルトの名無しさん
2017/11/17(金) 09:32:12.45ID:5O5sG5Ab Goの欠点と言えば、一度使い込むと他の言語で書きたく無くなる事だな
と言うか他をリーディングする時点でストレスを感じるようになる
Goならこう書いてこの辺りを並列したい、と読みながらGo脳になっちゃう
と言うか他をリーディングする時点でストレスを感じるようになる
Goならこう書いてこの辺りを並列したい、と読みながらGo脳になっちゃう
118デフォルトの名無しさん
2017/11/17(金) 10:11:41.49ID:RcEAFZjI null安全な言語じゃないのはなんとかならないかな。
後付で実装するのは無理があるよね。下位互換性重視する姿勢みたいだし。
後付で実装するのは無理があるよね。下位互換性重視する姿勢みたいだし。
119あ
2017/11/17(金) 12:49:59.91ID:GmVBN0UX nullはなぁ。
unsafe使うともう闇過ぎるし、cgoとかでさえnullがある他の言語とやりとりできるし、
Kotlinみたいにvarに対してvalとか書けるようにしていったとしても、どのみち誰かが!(に相当するもの)で壊すかもしれない事に怯えるハメになるから、
最初から「nilかもしれないからチェック」って意識付けをさせてるのかもしれん。
タプルでerror帰ってくるのを無視するには_が必要みたいな感じで。
unsafe使うともう闇過ぎるし、cgoとかでさえnullがある他の言語とやりとりできるし、
Kotlinみたいにvarに対してvalとか書けるようにしていったとしても、どのみち誰かが!(に相当するもの)で壊すかもしれない事に怯えるハメになるから、
最初から「nilかもしれないからチェック」って意識付けをさせてるのかもしれん。
タプルでerror帰ってくるのを無視するには_が必要みたいな感じで。
120デフォルトの名無しさん
2017/11/17(金) 20:47:26.26ID:RcEAFZjI121デフォルトの名無しさん
2017/11/17(金) 22:49:38.93ID:Vk6VJm9w >>114
宗教戦争は結局自転車置き場の議論と同種で、馬鹿が無理に参加するからだ。
その点ではC++の割り切り、「ソースコードに過度の美を求めず、オブジェクトコードで勝負」ってのは正しいと思うし、
go fmt ってのもありだと思うが。
Goがまずい点は、後発なのに誰にも合わせる気がない点だ。
UpperCamelはC++以来(だと思う)既に30年「クラス」として使われてきており、他言語も全てそうなのに、
「public」と勝手に規定してしまった。このためにjsonがUpperCamelになってしまうわけだが、
これまた世の中JSONで回り始めて10年以上経ち、大体lowerCamelが使われている状況で、スイッチもつける気無いだろ。
略号は全部大文字?それは言われなくても大体そうだし、違反してたとしてもソース改変して再テストする価値はない。
そんなにマメにソースを改変したければ、ユニットテストではなく、形式検証ツールを提供するべきなんだよ。
> でも、どの言語もコモディ化で割と似たような言語仕様になる中、
結局ソフトウェア技術も成熟しつつあるってことだよ。
どう書くべきか、何をやってはいけないのか大体わかってきた。
> 独自性があって、素敵だとも思う。
ないね。独自性ってのはHaskellの「全面遅延評価」みたいなのを言うんだよ。
俺はHaskellが1990製だと知って驚いたが、それ程の独自性があれば20年後に話題になる可能性もあるということ。
Goには独自性なんて無い。一度廃れれば終わる言語だ。
「新機能」といえる物が全くないだろ。むしろ「ちょうどいい頃合」を目指している言語だ。
悪く言えば、全てにおいて中途半端でしかない。
> phpなんか、片っ端から言語仕様足しまくってるし。動的言語のくせにinterface入れてみたりとか。
PHPはミクロな点でゴミだが、マクロな点には多分ほぼ問題がない。(というほど試してないが、今のところそう感じる)
具体的に言うと、引数の順が統一されてなかったり、引数にすべきものを別名関数にしてたりとか、
そういう「1行内」の部分でいちいち引っかかり、ストレスが溜まるものの、
Goみたいに「言語仕様的に3回書かないと無理」みたいな構造的問題は(多分)ない。
宗教戦争は結局自転車置き場の議論と同種で、馬鹿が無理に参加するからだ。
その点ではC++の割り切り、「ソースコードに過度の美を求めず、オブジェクトコードで勝負」ってのは正しいと思うし、
go fmt ってのもありだと思うが。
Goがまずい点は、後発なのに誰にも合わせる気がない点だ。
UpperCamelはC++以来(だと思う)既に30年「クラス」として使われてきており、他言語も全てそうなのに、
「public」と勝手に規定してしまった。このためにjsonがUpperCamelになってしまうわけだが、
これまた世の中JSONで回り始めて10年以上経ち、大体lowerCamelが使われている状況で、スイッチもつける気無いだろ。
略号は全部大文字?それは言われなくても大体そうだし、違反してたとしてもソース改変して再テストする価値はない。
そんなにマメにソースを改変したければ、ユニットテストではなく、形式検証ツールを提供するべきなんだよ。
> でも、どの言語もコモディ化で割と似たような言語仕様になる中、
結局ソフトウェア技術も成熟しつつあるってことだよ。
どう書くべきか、何をやってはいけないのか大体わかってきた。
> 独自性があって、素敵だとも思う。
ないね。独自性ってのはHaskellの「全面遅延評価」みたいなのを言うんだよ。
俺はHaskellが1990製だと知って驚いたが、それ程の独自性があれば20年後に話題になる可能性もあるということ。
Goには独自性なんて無い。一度廃れれば終わる言語だ。
「新機能」といえる物が全くないだろ。むしろ「ちょうどいい頃合」を目指している言語だ。
悪く言えば、全てにおいて中途半端でしかない。
> phpなんか、片っ端から言語仕様足しまくってるし。動的言語のくせにinterface入れてみたりとか。
PHPはミクロな点でゴミだが、マクロな点には多分ほぼ問題がない。(というほど試してないが、今のところそう感じる)
具体的に言うと、引数の順が統一されてなかったり、引数にすべきものを別名関数にしてたりとか、
そういう「1行内」の部分でいちいち引っかかり、ストレスが溜まるものの、
Goみたいに「言語仕様的に3回書かないと無理」みたいな構造的問題は(多分)ない。
122デフォルトの名無しさん
2017/11/17(金) 22:53:03.56ID:Vk6VJm9w > でも確かに最初に触る言語をgoにするのは危険かも知れない。
「いちいち書くことを良し」とするのはまずい。
(昔の意味での)コピペプログラム推奨になってしまう。
これを嫌って、「いちいちスクリプトで整形」なら確かにありなんだけど、実際は書いたほうが早いから書くでしょ。
初心者がスクリプトを書けるわけも無いしね。
メタプログラミング「推奨」ならいいんだけど、メタプログラミング「必須」ってのは多分間違いなんだよ。
「いちいち書くことを良し」とするのはまずい。
(昔の意味での)コピペプログラム推奨になってしまう。
これを嫌って、「いちいちスクリプトで整形」なら確かにありなんだけど、実際は書いたほうが早いから書くでしょ。
初心者がスクリプトを書けるわけも無いしね。
メタプログラミング「推奨」ならいいんだけど、メタプログラミング「必須」ってのは多分間違いなんだよ。
123デフォルトの名無しさん
2017/11/17(金) 22:53:37.38ID:Vk6VJm9w > ちなみに一番理想的だと思ってる言語は何なのか知りたい。
(俺は言語コレクターではないのでバリバリに使ってる言語は数えるほどしかなく、偏っているかもしれんが)
ないね。俺は「全ての状況で使える言語」が必要とは思ってない。使い分ければいいだけだ。
そして現状の棲み分け状況を基本的に肯定的に捉える。それは集合知としての結論である、という見方だから。
C++が再統一を目指して全機能を入れてる感があるが、ならまずGC入れろよ、と思うし。
最近気に入っているのはJavaScriptだ。だからAtomだElectronだという気持ちはすごくよく分かる。
・手抜きが出来るわりに動作が速い
・プログラマの邪魔をしない仕様(自分の足を撃てる仕様)
・HTML/CSS
なのがいい。最初は文法が簡素すぎて「こんなんでいいのか?」と思ったが、
慣れると最近のOOPは相当無駄(冗長)なことをやっていたのだなあと実感した。
ただしJavaScriptは言語そのものではなく状況が糞過ぎる。
Web上に間違った情報が氾濫しているし、(これはGoもだが)
マトモにプログラミングできない馬鹿が偉そうに薀蓄たれてるところがどうしようもない。それで馬鹿が再生産されてる。
ただしこれについてはPHPerが原因だと見ている。
PHPerが(CSSの)classを正しく使ったHTMLを書けないから、JavaScripterがそれ以上になれない。
classさえ正しく配置されていれば、圧倒的に楽にJavaScriptを書けることを多分彼らは知らない。
先生が間違ったことを教えるから生徒が上達できない状況だ。
だからJavaScripterは基本的に勘違いしてて、自分が至ってない事を自覚できてない。これが本当にどうしようもない。
PHPerは自分が至らないことについては自覚できてる。
彼らはだいぶ馬鹿にされているらしいが、この点はJavaScripterよりだいぶマシ。
あと、JavaScriptは標準化委員会がマジで糞だ。
Mapに[]が使えず、またsizeとlengthが混ざっていてジェネリック出来ないとか、あれは標準化委員がコード書いて無い。
(ただしこれについては直せる範囲だからさっさと直せ、と思う)
(俺は言語コレクターではないのでバリバリに使ってる言語は数えるほどしかなく、偏っているかもしれんが)
ないね。俺は「全ての状況で使える言語」が必要とは思ってない。使い分ければいいだけだ。
そして現状の棲み分け状況を基本的に肯定的に捉える。それは集合知としての結論である、という見方だから。
C++が再統一を目指して全機能を入れてる感があるが、ならまずGC入れろよ、と思うし。
最近気に入っているのはJavaScriptだ。だからAtomだElectronだという気持ちはすごくよく分かる。
・手抜きが出来るわりに動作が速い
・プログラマの邪魔をしない仕様(自分の足を撃てる仕様)
・HTML/CSS
なのがいい。最初は文法が簡素すぎて「こんなんでいいのか?」と思ったが、
慣れると最近のOOPは相当無駄(冗長)なことをやっていたのだなあと実感した。
ただしJavaScriptは言語そのものではなく状況が糞過ぎる。
Web上に間違った情報が氾濫しているし、(これはGoもだが)
マトモにプログラミングできない馬鹿が偉そうに薀蓄たれてるところがどうしようもない。それで馬鹿が再生産されてる。
ただしこれについてはPHPerが原因だと見ている。
PHPerが(CSSの)classを正しく使ったHTMLを書けないから、JavaScripterがそれ以上になれない。
classさえ正しく配置されていれば、圧倒的に楽にJavaScriptを書けることを多分彼らは知らない。
先生が間違ったことを教えるから生徒が上達できない状況だ。
だからJavaScripterは基本的に勘違いしてて、自分が至ってない事を自覚できてない。これが本当にどうしようもない。
PHPerは自分が至らないことについては自覚できてる。
彼らはだいぶ馬鹿にされているらしいが、この点はJavaScripterよりだいぶマシ。
あと、JavaScriptは標準化委員会がマジで糞だ。
Mapに[]が使えず、またsizeとlengthが混ざっていてジェネリック出来ないとか、あれは標準化委員がコード書いて無い。
(ただしこれについては直せる範囲だからさっさと直せ、と思う)
124デフォルトの名無しさん
2017/11/17(金) 22:54:01.59ID:Vk6VJm9w Goはこの辺さらに酷い。JSONの仕様とか、ありえないだろ。
あれはJSONモジュールを作った奴がJSON使ってないんだよ。完全に例の漫画になってる。;
https://twitter.com/frontend_ux/status/692369282626383873
UpperCamelでJSONしてるサイトなんてない。1回使えば分かる。
逆に言えば、1回も使ってない奴が作るからこんなことになる。
そしてそれを弾けない標準化委員会も相当低レベルだと分かる。
他モジュールも相当なゴミが混ざっていると思うぜ。Goがいい教材だと思う奴は程度が低いだけだ。(>>43)
そしてJavaScriptとは違ってGoの間違いは救いようがないレベルだからどうしようもない。
あと俺が気づいた範囲だと、SQLite3はPHPでもNodeでもopenするときにReadOnlyかReadWriteを指定するのだが、
Goのdatabase/sqlではこの指定が出来ない。
俺にはこれがパフォーマンス等にどう影響するのかはよく分からないが、
根本的に間違ってるんじゃないか?と思うよ。
知らない奴/使ってない奴が仕様策定/基本モジュール提供をしてはいけない。
これも多分、普段SQLite使ってない奴が仕様策定してるからこんなことになってるんだよ。
Web系はよくも悪しくもここら辺に躊躇が無い(馬鹿が自重しない)が、結果的にゴミがゴミを再生産しているのはよく見かける。
しかも使ってる連中もそれに気づけないほど馬鹿なんだろ。だからマンセーするとかおかしなことになる。
俺はPHPもそんなに試してないが、Goはその一部分を移植しただけでPHPより問題山積だ。
>>115
> 究極自分の理想言語を作ってgoのエコシステムを乗っ取るって手もあるよね
Goじゃなくて普通はCを乗っ取るだろ。Goも最初はそうだし、今も半分そうだろ。
或いは他言語みたいにJavaのVMに乗ってしまうか。
Goありきなのは既に信者だからだよ。
> streem
何用これ?streemでconcurrency?shellとか言っているし、何に使えるのかよく分からん。
あれはJSONモジュールを作った奴がJSON使ってないんだよ。完全に例の漫画になってる。;
https://twitter.com/frontend_ux/status/692369282626383873
UpperCamelでJSONしてるサイトなんてない。1回使えば分かる。
逆に言えば、1回も使ってない奴が作るからこんなことになる。
そしてそれを弾けない標準化委員会も相当低レベルだと分かる。
他モジュールも相当なゴミが混ざっていると思うぜ。Goがいい教材だと思う奴は程度が低いだけだ。(>>43)
そしてJavaScriptとは違ってGoの間違いは救いようがないレベルだからどうしようもない。
あと俺が気づいた範囲だと、SQLite3はPHPでもNodeでもopenするときにReadOnlyかReadWriteを指定するのだが、
Goのdatabase/sqlではこの指定が出来ない。
俺にはこれがパフォーマンス等にどう影響するのかはよく分からないが、
根本的に間違ってるんじゃないか?と思うよ。
知らない奴/使ってない奴が仕様策定/基本モジュール提供をしてはいけない。
これも多分、普段SQLite使ってない奴が仕様策定してるからこんなことになってるんだよ。
Web系はよくも悪しくもここら辺に躊躇が無い(馬鹿が自重しない)が、結果的にゴミがゴミを再生産しているのはよく見かける。
しかも使ってる連中もそれに気づけないほど馬鹿なんだろ。だからマンセーするとかおかしなことになる。
俺はPHPもそんなに試してないが、Goはその一部分を移植しただけでPHPより問題山積だ。
>>115
> 究極自分の理想言語を作ってgoのエコシステムを乗っ取るって手もあるよね
Goじゃなくて普通はCを乗っ取るだろ。Goも最初はそうだし、今も半分そうだろ。
或いは他言語みたいにJavaのVMに乗ってしまうか。
Goありきなのは既に信者だからだよ。
> streem
何用これ?streemでconcurrency?shellとか言っているし、何に使えるのかよく分からん。
125デフォルトの名無しさん
2017/11/17(金) 23:32:31.38ID:26Kh913O 実装は他人に任せてシステム設計に専念する方が良いんじゃないかw
126あ
2017/11/17(金) 23:44:12.50ID:fbp8aPNo 大演説ご苦労だな。
アッパーキャメルも、型が後ろにつくのも、アンダースコアを避けるのも、大文字の定数を避けるのも、Pascalじゃん。
:=で普通は気づくが。
アッパーキャメルも、型が後ろにつくのも、アンダースコアを避けるのも、大文字の定数を避けるのも、Pascalじゃん。
:=で普通は気づくが。
127デフォルトの名無しさん
2017/11/18(土) 00:22:54.69ID:KYuTS+5W >>124
Uniform Resource Identifiers
https://www.sqlite.org/uri.html
に書いてあるURIフォーマットを使えば良いんじゃないかな。
db, err := sql.Open("sqlite3", "file:hoge.sqlite3?mode=ro")
みたいな。
Uniform Resource Identifiers
https://www.sqlite.org/uri.html
に書いてあるURIフォーマットを使えば良いんじゃないかな。
db, err := sql.Open("sqlite3", "file:hoge.sqlite3?mode=ro")
みたいな。
128デフォルトの名無しさん
2017/11/18(土) 00:36:38.80ID:gfO8vb6Y 自宅の裏庭から油田が出た辺りまでしか読めなかった
129あ
2017/11/18(土) 00:56:47.02ID:qQnEMcHh JSONがアッパーキャメルじゃない?でもGoはアッパーキャメルだ、だから歪んでる?
ならなんでjsonパッケージにtags.goがあるんだよww
間違いじゃねえよ、そのままタグ書かずにMarshalするからだろ。
ホントドキュメント読まねえやつだな。
「一回間違って使えば誤解する」の間違いだろ。
database/sqlに、ファイルのオープンに依存する関数あるわけねえじゃん。だってsqlのパッケージなのに。
ドライバにやらせろよ。
ならなんでjsonパッケージにtags.goがあるんだよww
間違いじゃねえよ、そのままタグ書かずにMarshalするからだろ。
ホントドキュメント読まねえやつだな。
「一回間違って使えば誤解する」の間違いだろ。
database/sqlに、ファイルのオープンに依存する関数あるわけねえじゃん。だってsqlのパッケージなのに。
ドライバにやらせろよ。
130デフォルトの名無しさん
2017/11/18(土) 01:04:13.32ID:euoYf0NO >>127
それは全ての環境で使える物ではない。
Goの連中は(というかWeb系一般にそうだが)この手の未熟な奴が仕切って暴走しているのをよく見かける。
新しい言語は老害がいなくて心地よいのだと思うが、
結果的に若い奴らが浅知恵で馬鹿なことを繰り返しているだけになっている。
例えばxampp(今年の9月の最新版だったと思う)にバンドルされている物は3.7.6.3でそれは使えない。
なお同じxamppのPHPのSQLiteモジュールは3.15.1で、つまりPHP経由なら使える。(ちなみに最新版は3.21.0)
俺もこのxamppのバージョン管理は奇妙だと思うが、
これもxamppの連中が「一番無難なバージョン」を選んだからこそであって、問題ないのならそのまま使うのが無難だ。
こういうのがあるから、「最新版では要らないから」と早合点して勝手に仕様を削っていいものではないんだよ。
ここら辺がGo(というかWeb系全般)は拙い。プログラミングの経験が全般的に浅く、物事を知らないからだ。
JSONの件も、マジで1回でも使えばどこもUpperCamelなんて使って無いと分かる。あの仕様は本当にありえない。
作っただけ、動くだけで満足している連中しかいないからこういうことが繰り返される。
そして使えない物が再生産されまくってる。
だからWeb系も全般的に馬鹿にされるわけでね。Goも間違いなく同レベルだ。
それは全ての環境で使える物ではない。
Goの連中は(というかWeb系一般にそうだが)この手の未熟な奴が仕切って暴走しているのをよく見かける。
新しい言語は老害がいなくて心地よいのだと思うが、
結果的に若い奴らが浅知恵で馬鹿なことを繰り返しているだけになっている。
例えばxampp(今年の9月の最新版だったと思う)にバンドルされている物は3.7.6.3でそれは使えない。
なお同じxamppのPHPのSQLiteモジュールは3.15.1で、つまりPHP経由なら使える。(ちなみに最新版は3.21.0)
俺もこのxamppのバージョン管理は奇妙だと思うが、
これもxamppの連中が「一番無難なバージョン」を選んだからこそであって、問題ないのならそのまま使うのが無難だ。
こういうのがあるから、「最新版では要らないから」と早合点して勝手に仕様を削っていいものではないんだよ。
ここら辺がGo(というかWeb系全般)は拙い。プログラミングの経験が全般的に浅く、物事を知らないからだ。
JSONの件も、マジで1回でも使えばどこもUpperCamelなんて使って無いと分かる。あの仕様は本当にありえない。
作っただけ、動くだけで満足している連中しかいないからこういうことが繰り返される。
そして使えない物が再生産されまくってる。
だからWeb系も全般的に馬鹿にされるわけでね。Goも間違いなく同レベルだ。
131あ
2017/11/18(土) 01:54:07.84ID:qQnEMcHh >>130
Goでもアッパーキャメルで出すもんじゃねえよ。
ドキュメントに書いてあるでしょ。
変数名が何故あの形かも書いてあるし、一度でもちゃんとfmtから順番にツールにコード通していけば小言が読めただろうに。
xamppは一番無難な初期iniで使うのかねえ、ベルリンで。
Goでもアッパーキャメルで出すもんじゃねえよ。
ドキュメントに書いてあるでしょ。
変数名が何故あの形かも書いてあるし、一度でもちゃんとfmtから順番にツールにコード通していけば小言が読めただろうに。
xamppは一番無難な初期iniで使うのかねえ、ベルリンで。
132デフォルトの名無しさん
2017/11/18(土) 01:56:49.03ID:KYuTS+5W 要は SQLite の URI format を知らなかったんだろ?
133あ
2017/11/18(土) 02:16:00.03ID:qQnEMcHh そもそもsqlパッケージ自体使い方わかってないんだろ。godoc読んだ形跡がここまで無いのも凄い。
134あ
2017/11/18(土) 02:57:09.69ID:qQnEMcHh 略語が全部大文字どころか、こまごまいちいち指定してこられる事のメリットは、あとからインターフェイス書くときだよ。
関数名のブレようが無いでしょ。
関数名のブレようが無いでしょ。
135デフォルトの名無しさん
2017/11/18(土) 10:10:59.68ID:7yJX3UxV >>121
>> でも、どの言語もコモディ化で割と似たような言語仕様になる中、
>結局ソフトウェア技術も成熟しつつあるってことだよ。
>どう書くべきか、何をやってはいけないのか大体わかってきた。
ここに俺は異を唱えたい。
言語の方向性は歴史的な圧力が絶対あると思う。
仕方なく大多数が採用したから新言語でも採用したみたいな。
例えばclassとstructってなんで2つあるの?って思ったことない?
cの頃はstructはただの構造体だった。もちろんcにはオブジェクト指向の機能はないからstructにメソッドは生やせない。でもその後後発の言語はstructを拡張するのではなくclassを作った。でもsturctはそのまま残した。
swiftでも残り続けてる。値型と参照型の違いということで残したみたいだね。
意味がわかんない。
例外処理
例外が発生する可能性がある関数とない関数でコンテキストが大きく変わる。
そもそも例外処理って横着機能でしかないと思うんだけど。
そんなわけでgoはこの歴史的な圧力に対して異を唱えている。
それは本当に正しいのか!って。
>> でも、どの言語もコモディ化で割と似たような言語仕様になる中、
>結局ソフトウェア技術も成熟しつつあるってことだよ。
>どう書くべきか、何をやってはいけないのか大体わかってきた。
ここに俺は異を唱えたい。
言語の方向性は歴史的な圧力が絶対あると思う。
仕方なく大多数が採用したから新言語でも採用したみたいな。
例えばclassとstructってなんで2つあるの?って思ったことない?
cの頃はstructはただの構造体だった。もちろんcにはオブジェクト指向の機能はないからstructにメソッドは生やせない。でもその後後発の言語はstructを拡張するのではなくclassを作った。でもsturctはそのまま残した。
swiftでも残り続けてる。値型と参照型の違いということで残したみたいだね。
意味がわかんない。
例外処理
例外が発生する可能性がある関数とない関数でコンテキストが大きく変わる。
そもそも例外処理って横着機能でしかないと思うんだけど。
そんなわけでgoはこの歴史的な圧力に対して異を唱えている。
それは本当に正しいのか!って。
136デフォルトの名無しさん
2017/11/18(土) 10:46:35.60ID:euoYf0NO >>132
それはその通り。俺は知らなかった。しかし、PHPとNodeではそれでも何も問題なく使えたのがミソなんだよ。
「Goは覚えることが少ない」なんて言っているのはプログラミング経験が浅い馬鹿で、表面しか見えないから。
或いは、他言語を使えないからGoの問題に気づけないだけ。
実際はこの手のGo特有事例(方言)がものすごく多い。(これについてはPHPより酷い)
だから常識的にプログラミングするといちいち引っかかってしまう。熟練者にとって生産性が著しく悪い。
(ところが他言語を全く知らないド素人にとっては生産性が悪くないのがミソ)
「C++はプログラマを育てる言語だ」と禿は言っていて、実際にC++の連中は育っている感がある。
俺はJavaScriptもかなりいい言語だと思うが、こちらは壊滅的なほどに育ってない。
Goはどうか?俺はGoは間違った方向に育つ(使えない奴が出来る)言語だと思うよ。色々おかしいから。
それでもGoを信じるのは君の自由だが。
新しい言語には老害がいなくて心地よいのだろうが、それは達人もいないことを意味する。
色々仕様がおかしいのは、つまりそれにも気づけない馬鹿しかいないことの証左だ。
(上記のように、熟練者除けを装備してもいるし)
K&Rの評価が異常に高いのは、さらっと書いてあるコードの品質がとんでもなく高いからでもある。
有名なのはmallocだが。
http://www.wdic.org/w/TECH/malloc
そういうコードは今のGoには無いと断言できるね。
今のGoはお山の大将が出来ることがうれしいだけの馬鹿しかいない。だからこんな糞仕様がまかり通る。
それでもGoを選ぶのは君らの自由だが、当然その責任も数年後に負うことになる。
それは自己責任だから、君らが思うようにやればいい。
責任を負うことの出来ない俺が「止めろ」ってのもおかしな話だし。
ただ、俺がもし学校の先生だったら、この言語を教えていいのか?と躊躇する言語だよGoは。
とはいえ、成否は俺には分からんね。
俺達がゆとりに死んで欲しいと思っているのと同様、ゆとりも老害に死んで欲しいと思っているのなら、
ゆとり専用言語で棲み分けするのもいい手だ。Goはここに位置できる。
そこで好き勝手やってみるのも悪いことではない。それでどっちが残るか勝負すればいい。
それはその通り。俺は知らなかった。しかし、PHPとNodeではそれでも何も問題なく使えたのがミソなんだよ。
「Goは覚えることが少ない」なんて言っているのはプログラミング経験が浅い馬鹿で、表面しか見えないから。
或いは、他言語を使えないからGoの問題に気づけないだけ。
実際はこの手のGo特有事例(方言)がものすごく多い。(これについてはPHPより酷い)
だから常識的にプログラミングするといちいち引っかかってしまう。熟練者にとって生産性が著しく悪い。
(ところが他言語を全く知らないド素人にとっては生産性が悪くないのがミソ)
「C++はプログラマを育てる言語だ」と禿は言っていて、実際にC++の連中は育っている感がある。
俺はJavaScriptもかなりいい言語だと思うが、こちらは壊滅的なほどに育ってない。
Goはどうか?俺はGoは間違った方向に育つ(使えない奴が出来る)言語だと思うよ。色々おかしいから。
それでもGoを信じるのは君の自由だが。
新しい言語には老害がいなくて心地よいのだろうが、それは達人もいないことを意味する。
色々仕様がおかしいのは、つまりそれにも気づけない馬鹿しかいないことの証左だ。
(上記のように、熟練者除けを装備してもいるし)
K&Rの評価が異常に高いのは、さらっと書いてあるコードの品質がとんでもなく高いからでもある。
有名なのはmallocだが。
http://www.wdic.org/w/TECH/malloc
そういうコードは今のGoには無いと断言できるね。
今のGoはお山の大将が出来ることがうれしいだけの馬鹿しかいない。だからこんな糞仕様がまかり通る。
それでもGoを選ぶのは君らの自由だが、当然その責任も数年後に負うことになる。
それは自己責任だから、君らが思うようにやればいい。
責任を負うことの出来ない俺が「止めろ」ってのもおかしな話だし。
ただ、俺がもし学校の先生だったら、この言語を教えていいのか?と躊躇する言語だよGoは。
とはいえ、成否は俺には分からんね。
俺達がゆとりに死んで欲しいと思っているのと同様、ゆとりも老害に死んで欲しいと思っているのなら、
ゆとり専用言語で棲み分けするのもいい手だ。Goはここに位置できる。
そこで好き勝手やってみるのも悪いことではない。それでどっちが残るか勝負すればいい。
137デフォルトの名無しさん
2017/11/18(土) 11:10:29.94ID:KYuTS+5W ま、味見レベルでは何も分からない、ってオチだね。
138デフォルトの名無しさん
2017/11/18(土) 11:20:17.67ID:euoYf0NO >>135
> 例えばclassとstructってなんで2つあるの?って思ったことない?
それは歴史的「圧力」というよりはただの後方互換性だ。
冗長といえばそうだが、かといって削除するほどのことでもない、ということ。
C++のstructとclassなんて、デフォがpublicかprivateかの違いしかない。
当然、明確な使い分けはない。では実際どうするかというと、
クラスとして「主体的に動作をする」のか、データとして「外部から操作をされる」のか、で分けるのが一般的か?
つまり、お前らが言うOOPか手続きかで分ける。
しかしこれは、初心者にとっては意味不明すぎるのも事実。
おかしいだろ!整理しろ!というのはごもっとも。Goがstructだけに絞ったのも、別段問題ない。
ただ、これで生産性が上がるわけも無く、だから他言語では放置されてる。
なんつーか、どうでもいいわな、というところ。
> そもそも例外処理って横着機能でしかないと思うんだけど。
その通りだが、要するに、よく使う機能だから言語側にサポートを入れた、というだけ。
無ければ伝言ゲームをする羽目になる。
自前のオレオレ伝言ゲーム構造体よりは、言語側で規定してて言語機能に入っているほうがマシだろ。
ただここに至ってGoの実装はよく分からんね。
あれは自分で「毎回チェック」してthrowするのが必要なだけで、panicした後は従来の例外の様に動く。
catch/finallyでグダグダ書くよりdeferしろってのは一理あるが、
例外を使いたがっている奴はそもそもの「毎回チェック」を書きたく無いからだろ。
Goの例外がどういった層に喜ばれるのか(どういうメリットがあるのか)よく分からん。
> 例えばclassとstructってなんで2つあるの?って思ったことない?
それは歴史的「圧力」というよりはただの後方互換性だ。
冗長といえばそうだが、かといって削除するほどのことでもない、ということ。
C++のstructとclassなんて、デフォがpublicかprivateかの違いしかない。
当然、明確な使い分けはない。では実際どうするかというと、
クラスとして「主体的に動作をする」のか、データとして「外部から操作をされる」のか、で分けるのが一般的か?
つまり、お前らが言うOOPか手続きかで分ける。
しかしこれは、初心者にとっては意味不明すぎるのも事実。
おかしいだろ!整理しろ!というのはごもっとも。Goがstructだけに絞ったのも、別段問題ない。
ただ、これで生産性が上がるわけも無く、だから他言語では放置されてる。
なんつーか、どうでもいいわな、というところ。
> そもそも例外処理って横着機能でしかないと思うんだけど。
その通りだが、要するに、よく使う機能だから言語側にサポートを入れた、というだけ。
無ければ伝言ゲームをする羽目になる。
自前のオレオレ伝言ゲーム構造体よりは、言語側で規定してて言語機能に入っているほうがマシだろ。
ただここに至ってGoの実装はよく分からんね。
あれは自分で「毎回チェック」してthrowするのが必要なだけで、panicした後は従来の例外の様に動く。
catch/finallyでグダグダ書くよりdeferしろってのは一理あるが、
例外を使いたがっている奴はそもそもの「毎回チェック」を書きたく無いからだろ。
Goの例外がどういった層に喜ばれるのか(どういうメリットがあるのか)よく分からん。
139デフォルトの名無しさん
2017/11/18(土) 11:50:08.52ID:7yJX3UxV >>136
同意する部分は多々あるよ。
>「Goは覚えることが少ない」なんて言っている
>実際はこの手のGo特有事例(方言)がものすごく多い
シンプルさを意図して実際は中味の複雑さがにじみ出ることは多々ある。
nilでも型があるとかね
https://golang.org/doc/faq#nil_error
だから蟻地獄的なものはあるかも。
>「C++はプログラマを育てる言語だ」と禿は言っていて、実際にC++の連中は育っている感がある。
これは知らんかった。禿って誰のこと?
正直C++勢と会ったことはない。web系と断絶してる感じする
なんで育てる言語がC++なの
>だから常識的にプログラミングするといちいち引っかかってしまう。熟練者にとって生産性が著しく悪い。
>(ところが他言語を全く知らないド素人にとっては生産性が悪くないのがミソ)
もしかしてIDE使ってないの?vscodeとか。
俺もTypeScriptとかいろいろな言語を使ってるけど
言語仕様で引っかかってもその場でIDEが指摘してくれるから、生産性に問題は起きない。
同意する部分は多々あるよ。
>「Goは覚えることが少ない」なんて言っている
>実際はこの手のGo特有事例(方言)がものすごく多い
シンプルさを意図して実際は中味の複雑さがにじみ出ることは多々ある。
nilでも型があるとかね
https://golang.org/doc/faq#nil_error
だから蟻地獄的なものはあるかも。
>「C++はプログラマを育てる言語だ」と禿は言っていて、実際にC++の連中は育っている感がある。
これは知らんかった。禿って誰のこと?
正直C++勢と会ったことはない。web系と断絶してる感じする
なんで育てる言語がC++なの
>だから常識的にプログラミングするといちいち引っかかってしまう。熟練者にとって生産性が著しく悪い。
>(ところが他言語を全く知らないド素人にとっては生産性が悪くないのがミソ)
もしかしてIDE使ってないの?vscodeとか。
俺もTypeScriptとかいろいろな言語を使ってるけど
言語仕様で引っかかってもその場でIDEが指摘してくれるから、生産性に問題は起きない。
140デフォルトの名無しさん
2017/11/18(土) 11:50:17.43ID:7yJX3UxV そもそも第一言語としてGoだけ使うって輩はないだろ。多様性を楽しむくらいの余裕があってもいいと思うけど。
関数型も書いてて楽しい。Elixirとか。Haskellはちょっと挫折した。
ちょっとぐぐってみたら面白い記事を見つけた
http://gihyo.jp/news/report/01/GoCon2014Autumn/0001
言語が思想に影響するという説(サピア=ウォーフの仮設)
があるからあえてGoにはあなたが方言と言ってる違いを設けて
多様性を確保したいらしい。
関数型も書いてて楽しい。Elixirとか。Haskellはちょっと挫折した。
ちょっとぐぐってみたら面白い記事を見つけた
http://gihyo.jp/news/report/01/GoCon2014Autumn/0001
言語が思想に影響するという説(サピア=ウォーフの仮設)
があるからあえてGoにはあなたが方言と言ってる違いを設けて
多様性を確保したいらしい。
141あ
2017/11/18(土) 11:50:28.50ID:OVm4Skm9142デフォルトの名無しさん
2017/11/18(土) 12:55:59.36ID:TdFdr2wf >>141
概念としてそれをclassとstructに分ける必要あるかって話。
概念としてそれをclassとstructに分ける必要あるかって話。
143あ
2017/11/18(土) 13:37:23.69ID:F+BjC4W7 >>142
使い分けてるんだから、必要あるってわかるだろ。
ベクトルなんかをそこそこの量処理したいとき、そのベクトルを表すものがクラスか構造体かでかなり違う。
彼が言ってるような歴史を辿ってきたJavaやC#みたいなGCを持つ言語だと、GC対象か否かという点でもメチャクチャ違う。
使い分けてるんだから、必要あるってわかるだろ。
ベクトルなんかをそこそこの量処理したいとき、そのベクトルを表すものがクラスか構造体かでかなり違う。
彼が言ってるような歴史を辿ってきたJavaやC#みたいなGCを持つ言語だと、GC対象か否かという点でもメチャクチャ違う。
144デフォルトの名無しさん
2017/11/18(土) 14:51:14.87ID:euoYf0NO >>140
> 同氏は,Go言語はスケーラブルなクラウドソフトウェアのために設計されたきれいな手続き型言語であると述べていました。
あーなるほどね。反OOPか。
Cが生まれて50年弱経ち、ソフトウェアテクニックってのはほぼ固まりつつある。
その状況で若い連中が何か新しいことを思いつき、しかしそれを老害が腐してそのアイデアが埋没してしまうようなら、
それは勿体無いから、若い連中用のプレイグラウンドはあるべきだ。Goはそれに成り得るだろう。
ただし、そこで試されるアイデアの大半は既に誰かが試してゴミだったからポシャった物であり、
つまり「歴史」ではなく「経験」に学びたい若者が「車輪の再開発」をする場でしかないわけだが、
それもまあ必要悪というか、更なる発展の芽を探す為には仕方ないのかもしれんね。
ただそれで無駄言語に傾倒することになる若者は哀れだが、自己責任だから致し方なしか。
心配せずともGo言語で何かめぼしい成果が出れば、C++他は数年後には確実にパクる。
正直、遅延評価を既存言語機能だけで丸パク出来たのには驚かされた。templeteの汎用性を俺は舐めてた。
Go言語で出る成果でC++がパクれない物はたぶんありえない。もともと似てるし。
OOPが暴走気味なのは事実としても、現実解としてOOPしかないからみんなOOPしてるわけで、
そこに刃向かうのはもちろん自由だが、それでpackageが解なの?うーん、といったところか。
それならCでいいじゃん、になってしまうし。
> 同氏は,Go言語はスケーラブルなクラウドソフトウェアのために設計されたきれいな手続き型言語であると述べていました。
あーなるほどね。反OOPか。
Cが生まれて50年弱経ち、ソフトウェアテクニックってのはほぼ固まりつつある。
その状況で若い連中が何か新しいことを思いつき、しかしそれを老害が腐してそのアイデアが埋没してしまうようなら、
それは勿体無いから、若い連中用のプレイグラウンドはあるべきだ。Goはそれに成り得るだろう。
ただし、そこで試されるアイデアの大半は既に誰かが試してゴミだったからポシャった物であり、
つまり「歴史」ではなく「経験」に学びたい若者が「車輪の再開発」をする場でしかないわけだが、
それもまあ必要悪というか、更なる発展の芽を探す為には仕方ないのかもしれんね。
ただそれで無駄言語に傾倒することになる若者は哀れだが、自己責任だから致し方なしか。
心配せずともGo言語で何かめぼしい成果が出れば、C++他は数年後には確実にパクる。
正直、遅延評価を既存言語機能だけで丸パク出来たのには驚かされた。templeteの汎用性を俺は舐めてた。
Go言語で出る成果でC++がパクれない物はたぶんありえない。もともと似てるし。
OOPが暴走気味なのは事実としても、現実解としてOOPしかないからみんなOOPしてるわけで、
そこに刃向かうのはもちろん自由だが、それでpackageが解なの?うーん、といったところか。
それならCでいいじゃん、になってしまうし。
145デフォルトの名無しさん
2017/11/18(土) 14:55:03.12ID:euoYf0NO >>139
> 禿って誰のこと?
禿=ストロウストラップ=C++作者=https://ja.wikipedia.org/wiki/%E3%83%93%E3%83%A3%E3%83%BC%E3%83%8D%E3%83%BB%E3%82%B9%E3%83%88%E3%83%AD%E3%83%B4%E3%82%B9%E3%83%88%E3%83%AB%E3%83%83%E3%83%97#/media/File:BjarneStroustrup.jpg
> 正直C++勢と会ったことはない。web系と断絶してる感じする
話してみたいのならスレにでもどうぞ。それがネットの正しい使い方でもある。
ただあいつらの話題って重箱の隅どころでは無いからなあ、、、
> なんで育てる言語がC++なの
知らん。禿が著書でそう主張している。そして確かにそんな感じだ。
おそらくC++の奴らは自分でいろいろ試して、結果的にいろいろひどい目に遭うからだよ。(追体験)
例えば、「グローバルガー」とか言うWeb系の奴、実際にグローバルが問題になるほどの規模のコードを書いたことがないだろ。
そういう、薄っぺらい馬鹿が威張っている感がC++erにはない。
C++erの場合は、実際に「便利だから」グローバルを使い、結果的に苦労して、
どの規模の辺りからグローバルはやばいかを知った後で話をしている。
そういう、地に足が着いている感がある。
一方Web系は「経験に学ぶのは愚者。俺達は歴史に学ぶ」と言い、この手の追体験を拒む。
そしてグローバルガーと連呼したりするが、実際にはその規模ならどうでもいい場合が殆どだ。
ここら辺が地に足が着いてない。教科書(歴史)を妄信してる感ありあり。
しかしそのわりにGoで経験に学ぼうとしているのは、結局OOP流に嫌気が差しており、自由にやりたいだけだろう。
(まあ気持ちは分からなくもない。JavaのOOPとか完全にやりすぎだと思うし)
それが自分達が言っている「経験に学ぶ愚者」に該当する自己矛盾に気づかないのが愚かなところだが、
Web系の連中にとっては経験こそが足りないから、色々やってみるのもいいとは思う。
> 禿って誰のこと?
禿=ストロウストラップ=C++作者=https://ja.wikipedia.org/wiki/%E3%83%93%E3%83%A3%E3%83%BC%E3%83%8D%E3%83%BB%E3%82%B9%E3%83%88%E3%83%AD%E3%83%B4%E3%82%B9%E3%83%88%E3%83%AB%E3%83%83%E3%83%97#/media/File:BjarneStroustrup.jpg
> 正直C++勢と会ったことはない。web系と断絶してる感じする
話してみたいのならスレにでもどうぞ。それがネットの正しい使い方でもある。
ただあいつらの話題って重箱の隅どころでは無いからなあ、、、
> なんで育てる言語がC++なの
知らん。禿が著書でそう主張している。そして確かにそんな感じだ。
おそらくC++の奴らは自分でいろいろ試して、結果的にいろいろひどい目に遭うからだよ。(追体験)
例えば、「グローバルガー」とか言うWeb系の奴、実際にグローバルが問題になるほどの規模のコードを書いたことがないだろ。
そういう、薄っぺらい馬鹿が威張っている感がC++erにはない。
C++erの場合は、実際に「便利だから」グローバルを使い、結果的に苦労して、
どの規模の辺りからグローバルはやばいかを知った後で話をしている。
そういう、地に足が着いている感がある。
一方Web系は「経験に学ぶのは愚者。俺達は歴史に学ぶ」と言い、この手の追体験を拒む。
そしてグローバルガーと連呼したりするが、実際にはその規模ならどうでもいい場合が殆どだ。
ここら辺が地に足が着いてない。教科書(歴史)を妄信してる感ありあり。
しかしそのわりにGoで経験に学ぼうとしているのは、結局OOP流に嫌気が差しており、自由にやりたいだけだろう。
(まあ気持ちは分からなくもない。JavaのOOPとか完全にやりすぎだと思うし)
それが自分達が言っている「経験に学ぶ愚者」に該当する自己矛盾に気づかないのが愚かなところだが、
Web系の連中にとっては経験こそが足りないから、色々やってみるのもいいとは思う。
146デフォルトの名無しさん
2017/11/18(土) 14:55:54.32ID:euoYf0NO 今はソフトウェア技術の規模が微妙な時期なんだよ。
数学のように「全ての分野を網羅するには人生は短すぎる」程の広がりはなく、
これまでの全ての問題を一つ一つ追体験するのも無理ではない。グローバルしかり、ポインタしかり。
もちろんそれは無駄だとして「歴史」に学ぶのも一つの手だ。
ただし実体験と教科書の知識だけでは重みが違うから、そこらへんがWeb系全般のフワフワ感につながる。
とはいえ、今後ともソフトウェア技術は肥大化する一方だから、今後の学び方としてはWeb系流の方が正しい。
ただ、今はまだそのシンギュラリティに到達しておらず、C++流の学び方も成立するってだけで。
> IDE
文法が分からない=指摘されてもどう直してよいのか分からない、のだからそれ以前だよ。
ただしvscodeだとC#流の「;が抜けています。追加しますか?はい/いいえ」で行けたのかな?
それなら入れておくべきだったかも。実際はemacs+flyCheckでやった。
ただし既にPHPとNodeで動くコードをGoに移植だから、引っかかるのは全てSyntax/API/Go方言なんだが。
> だから蟻地獄的なものはあるかも
Goは多分、思想がGoだけで完結してるんだよ。
「驚き最小」ってのはGoの世界ではそうなのかもしれんが、
nilがタプル(というよりポインタが全部タプルか?)だとは普通のプログラマは思わないから
そこは「驚き最大」だ。
それならそれでいいとして、だったら最初にそれを言え、なんだが。
Goは割と想定外のところでバグるんだよ。
この点、実はJavaScriptはC的で、文法だけ抑えたらあとは、あー、はいはい、で行けた。
だから俺(というかC使い)にはJavaScriptは相性がいい、というのはある。
Goは妙なところでGoだけの世界を作ってるだろ。これが吉と出るか凶と出るか。
数学のように「全ての分野を網羅するには人生は短すぎる」程の広がりはなく、
これまでの全ての問題を一つ一つ追体験するのも無理ではない。グローバルしかり、ポインタしかり。
もちろんそれは無駄だとして「歴史」に学ぶのも一つの手だ。
ただし実体験と教科書の知識だけでは重みが違うから、そこらへんがWeb系全般のフワフワ感につながる。
とはいえ、今後ともソフトウェア技術は肥大化する一方だから、今後の学び方としてはWeb系流の方が正しい。
ただ、今はまだそのシンギュラリティに到達しておらず、C++流の学び方も成立するってだけで。
> IDE
文法が分からない=指摘されてもどう直してよいのか分からない、のだからそれ以前だよ。
ただしvscodeだとC#流の「;が抜けています。追加しますか?はい/いいえ」で行けたのかな?
それなら入れておくべきだったかも。実際はemacs+flyCheckでやった。
ただし既にPHPとNodeで動くコードをGoに移植だから、引っかかるのは全てSyntax/API/Go方言なんだが。
> だから蟻地獄的なものはあるかも
Goは多分、思想がGoだけで完結してるんだよ。
「驚き最小」ってのはGoの世界ではそうなのかもしれんが、
nilがタプル(というよりポインタが全部タプルか?)だとは普通のプログラマは思わないから
そこは「驚き最大」だ。
それならそれでいいとして、だったら最初にそれを言え、なんだが。
Goは割と想定外のところでバグるんだよ。
この点、実はJavaScriptはC的で、文法だけ抑えたらあとは、あー、はいはい、で行けた。
だから俺(というかC使い)にはJavaScriptは相性がいい、というのはある。
Goは妙なところでGoだけの世界を作ってるだろ。これが吉と出るか凶と出るか。
147あ
2017/11/18(土) 15:31:38.82ID:eanOOMuW 俺の長文もこんな感じなのかなぁ、注意せな。
148デフォルトの名無しさん
2017/11/18(土) 16:28:17.34ID:7yJX3UxV >>146
>Goは割と想定外のところでバグるんだよ。
>この点、実はJavaScriptはC的で、文法だけ抑えたらあとは、あー、はいはい、で行けた。
>だから俺(というかC使い)にはJavaScriptは相性がいい、というのはある。
どういうコードでバグったの?
>Goは割と想定外のところでバグるんだよ。
>この点、実はJavaScriptはC的で、文法だけ抑えたらあとは、あー、はいはい、で行けた。
>だから俺(というかC使い)にはJavaScriptは相性がいい、というのはある。
どういうコードでバグったの?
149デフォルトの名無しさん
2017/11/18(土) 18:17:51.34ID:euoYf0NO >>148
そりゃ該当するのは君の言うnilとかだよ。
俺の場合は何度も言っているがJSONだ。
問題なのはこの原因が「Goの特殊仕様」であって、「俺の未熟な文法理解」ではないこと。
文法は一通りやれば終わるが、特殊仕様は確認しないと分からず、その都度の対応になる。
新しい領域に踏み込んだら毎回地雷原を歩かされるようなもので、これでは生産性なんて上がらない。
だからプログラミング言語には統一性/一貫性が重要だと言われるわけでね。
C++は今は何でもかんでも仕様に取り入れてる。
あれがいいかどうかはさておき、既に言ったように、Goで何か結果が出れば必ずC++は取り込む。
だったら俺はそれでいいや、という感じだね。
先頭を走らなきゃヤダ!ならGoに集まっている連中とワイワイやるのもいいのではないかな。
ただ、仕様を見る限り面子には非力感がありまくりだが。
そして当然、結果はそう簡単に出ないし、出ても簡単にパクられる。
それも覚悟の上でがんばれ、ってとこだね。
そりゃ該当するのは君の言うnilとかだよ。
俺の場合は何度も言っているがJSONだ。
問題なのはこの原因が「Goの特殊仕様」であって、「俺の未熟な文法理解」ではないこと。
文法は一通りやれば終わるが、特殊仕様は確認しないと分からず、その都度の対応になる。
新しい領域に踏み込んだら毎回地雷原を歩かされるようなもので、これでは生産性なんて上がらない。
だからプログラミング言語には統一性/一貫性が重要だと言われるわけでね。
C++は今は何でもかんでも仕様に取り入れてる。
あれがいいかどうかはさておき、既に言ったように、Goで何か結果が出れば必ずC++は取り込む。
だったら俺はそれでいいや、という感じだね。
先頭を走らなきゃヤダ!ならGoに集まっている連中とワイワイやるのもいいのではないかな。
ただ、仕様を見る限り面子には非力感がありまくりだが。
そして当然、結果はそう簡単に出ないし、出ても簡単にパクられる。
それも覚悟の上でがんばれ、ってとこだね。
150デフォルトの名無しさん
2017/11/18(土) 23:55:49.43ID:TdFdr2wf >>149
そんなの言語毎にハマりどころはあるから。
Goだけにある問題点みたいな言い方するから、
どんなのかと思った。
jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては?
そんなの言語毎にハマりどころはあるから。
Goだけにある問題点みたいな言い方するから、
どんなのかと思った。
jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては?
151あ
2017/11/19(日) 00:27:33.12ID:LuozPxgy ドキュメントに書いてあることができないのが、何で未熟な文法理解に何故起因しないかわからん。
文法理解してるつもりなのに書けないのなら、語彙も足りないんだろ。
ってかドキュメント読めよなぁ。
特に難しい事もないじゃん。
なんか読めない理由でもあんのかね。
文法理解してるつもりなのに書けないのなら、語彙も足りないんだろ。
ってかドキュメント読めよなぁ。
特に難しい事もないじゃん。
なんか読めない理由でもあんのかね。
152デフォルトの名無しさん
2017/11/19(日) 00:31:17.32ID:SsMAbqSz >>150
いやGoだけだぞ。
正確に言うとC系(ハロワ系)はCに意図的に似せて作ってあるからこの辺で問題が生じることがない。
俺は関数型には深入りして無いからそっちは知らんが。
君がGoだけかなり特殊だと気づかないのは、他に比べる手持ちの言語が無いからだよ。
ただそれもGoの意図通りのようだし、
確かに他言語の経験者が大量流入すると独自進化できない、というのはごもっともだ。
ジェネリック使いたければ他言語を使え、Goはジェネリックよりいい解を探してみせる!というのもありだろう。
実際、彼らの意図通り、俺みたいなC系経験者にとってはGoは魅力的ではないし、ひとまず静観といったところだね。
上手くガラパゴス化して面白く変化できるかどうかだね。
> jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては?
これは逆なんだよ。
書かないことこそが素晴らしい、というのが従来型言語であって、俺はそっちを支持する。
そうではなく、自動生成こそが正義、というのならそれはまあがんばってね、という感じだが、
それも結局「正しく自動生成できているか」確認しないといけないんだから、
書くのと比べてやること減ってないだろ。
なんかそこらへんの根本的なノリが違うんだよなあ。
なお、
> jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
これは違う。あいつらはマトモにオブジェクト指向も出来ないくせに主張するからおかしなことになる。
普通に使えば obj.method なんだから、thisが何を指すかで戸惑うことなんてない。
逆に、それ以外でthisを使うからおかしなことになるのだが、それは根本的に間違ってるんだよ。
(ただし仕様上、関数ポインタにはいちいちbindする必要があるが、これはすればいいだけ)
JavaScriptのthisガーって言っている奴は間違いなく馬鹿だから、無視していい。
ただそいつらが過半数な感じがJavaScriptが終わってるところなんだが、、、、
いやGoだけだぞ。
正確に言うとC系(ハロワ系)はCに意図的に似せて作ってあるからこの辺で問題が生じることがない。
俺は関数型には深入りして無いからそっちは知らんが。
君がGoだけかなり特殊だと気づかないのは、他に比べる手持ちの言語が無いからだよ。
ただそれもGoの意図通りのようだし、
確かに他言語の経験者が大量流入すると独自進化できない、というのはごもっともだ。
ジェネリック使いたければ他言語を使え、Goはジェネリックよりいい解を探してみせる!というのもありだろう。
実際、彼らの意図通り、俺みたいなC系経験者にとってはGoは魅力的ではないし、ひとまず静観といったところだね。
上手くガラパゴス化して面白く変化できるかどうかだね。
> jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては?
これは逆なんだよ。
書かないことこそが素晴らしい、というのが従来型言語であって、俺はそっちを支持する。
そうではなく、自動生成こそが正義、というのならそれはまあがんばってね、という感じだが、
それも結局「正しく自動生成できているか」確認しないといけないんだから、
書くのと比べてやること減ってないだろ。
なんかそこらへんの根本的なノリが違うんだよなあ。
なお、
> jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
これは違う。あいつらはマトモにオブジェクト指向も出来ないくせに主張するからおかしなことになる。
普通に使えば obj.method なんだから、thisが何を指すかで戸惑うことなんてない。
逆に、それ以外でthisを使うからおかしなことになるのだが、それは根本的に間違ってるんだよ。
(ただし仕様上、関数ポインタにはいちいちbindする必要があるが、これはすればいいだけ)
JavaScriptのthisガーって言っている奴は間違いなく馬鹿だから、無視していい。
ただそいつらが過半数な感じがJavaScriptが終わってるところなんだが、、、、
153あ
2017/11/19(日) 00:34:49.76ID:LuozPxgy なんで糖衣構文ではなく、アロー関数が出来たんだろうねぇ。
まぁ、言ったからには、静観してくれたら良いな。
まぁ、言ったからには、静観してくれたら良いな。
154デフォルトの名無しさん
2017/11/19(日) 02:19:38.32ID:uqF6CIR0 >>152
Goとjsで平等な視点で比較評価しているとは思えない点は目をつぶるとして
>それも結局「正しく自動生成できているか」確認しないといけないんだから、
>書くのと比べてやること減ってないだろ。
あなたの得意分野のCだって内部的にはプリプロセッサがコード生成してるけどそれを目視チェックしたこと無いよね。
隠蔽しているだけでコード生成を使ってるんだよ。
Goとjsで平等な視点で比較評価しているとは思えない点は目をつぶるとして
>それも結局「正しく自動生成できているか」確認しないといけないんだから、
>書くのと比べてやること減ってないだろ。
あなたの得意分野のCだって内部的にはプリプロセッサがコード生成してるけどそれを目視チェックしたこと無いよね。
隠蔽しているだけでコード生成を使ってるんだよ。
155デフォルトの名無しさん
2017/11/19(日) 02:37:25.16ID:uqF6CIR0 コード生成を嫌ってるみたいだけど、そして理解もできるけど
静的言語が動的言語並の自由度を確保しようと思ったらコード生成は避けれないと思う。
例えばちょっと前にあったdatabaseとの接続もそう。
コンパイル前にスキーマを収集して型を作るのが静的言語における最適解。
それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
でも、そもそもコード生成嫌わないで。
生成したコードをデバッグ時に参照できるというのは、バグの解決につながりやすい。
Cで複雑なマクロを組むとエラーがわかりづらくなるけど
プリプロセッサの出力を目視できるようにすると解決できたりする。
だから Goのコード生成もプリプロセッサのコード出力くらいに考えておけばいいと思う。
静的言語が動的言語並の自由度を確保しようと思ったらコード生成は避けれないと思う。
例えばちょっと前にあったdatabaseとの接続もそう。
コンパイル前にスキーマを収集して型を作るのが静的言語における最適解。
それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
でも、そもそもコード生成嫌わないで。
生成したコードをデバッグ時に参照できるというのは、バグの解決につながりやすい。
Cで複雑なマクロを組むとエラーがわかりづらくなるけど
プリプロセッサの出力を目視できるようにすると解決できたりする。
だから Goのコード生成もプリプロセッサのコード出力くらいに考えておけばいいと思う。
156デフォルトの名無しさん
2017/11/19(日) 04:15:36.04ID:ayZ5nPnf 嫌なら使わなければいい
気に入らないなら思いの丈をブログにでも書いてくれ
そろそろ黙れ
気に入らないなら思いの丈をブログにでも書いてくれ
そろそろ黙れ
157デフォルトの名無しさん
2017/11/19(日) 11:03:39.31ID:5dcaUzmV 技術的革新について話すだけのヤツはクソだ、黙って手を動かせ、と言った奴を
自分が触ったことのないテクノロジを批評するのは滑稽、と批判してみせた奴
こいつが、その素晴らしい技術でLinuxを超える何かを世の中に残せたのなら説得力が有るのだが…
結局何かしらの技術を語ってる奴は総じてクソなのは揺るがない
自分が触ったことのないテクノロジを批評するのは滑稽、と批判してみせた奴
こいつが、その素晴らしい技術でLinuxを超える何かを世の中に残せたのなら説得力が有るのだが…
結局何かしらの技術を語ってる奴は総じてクソなのは揺るがない
158デフォルトの名無しさん
2017/11/19(日) 14:16:27.55ID:SsMAbqSz >>154
いや俺はマクロは最小限(見りゃ分かる程度)しか使ってない。
そして自動生成を嫌っているのではなくて、手間が増えるのを嫌っている。
PHP, JavaScript:何も書かなくていい
Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
Go:構造体を書き、タグを書く ← これのほうがまだまし
>>155
そりゃ公平な評価にはならないよ。俺は既にC言語は十分使える状況なんだから。
そしてPHPとJavaScriptにはC系言語の常識が通用したからさほど苦労しなかったが、
Goはそうではなく、色々引っかかる。
ただこれはGo言語制作陣の意図通りだし、確かにいまさら互換言語を整備する意味はないんだよ。
> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
ちょっとこれは厳しすぎ、というか、若干誤解しているか?
(静的クラス機構による)動的型は型を失うわけではなく、一般的には「静的言語としてのメリットを失う」とはされない。
確かに間接呼び出しになる分だけ遅くはなるのだが、これを言うなら世の中のOOP言語は全部糞になる。
(動的言語の)動的型は毎回辞書引きが必要(map扱い)だから効率が悪いとされている。
Goのinterface{}はこれではない。
ちなみにGoのreflectionもC系とはちょっと感覚が違う。
jsonを吐くのにフィールド名が必要なら、普通はjsonモジュール内でreflectionするはずで、
それならpublic(先頭大文字)でなくとも全部取れるはずなんだよ。だからそれを期待してしまうわけ。
そして、あ、あれ?とれないの?みたいな事になる。
C的常識でGoを組んでると、この辺の予想外のところで引っかかる。いろいろ根本からして違うんだよ。
一方PHPだと、「下手糞がフレームワーク組みやがって」とは感じるけど、何でそうなるのかは分かるんだよ。
あっちはベースを共有してる感がある。
だから今の俺だとPHPの方がGoより生産性が高くなってしまうわけ。
しかしGo言語はC系言語出身者お断り仕様で計画通りなのだから、これはこれでいいんだよ。
いや俺はマクロは最小限(見りゃ分かる程度)しか使ってない。
そして自動生成を嫌っているのではなくて、手間が増えるのを嫌っている。
PHP, JavaScript:何も書かなくていい
Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
Go:構造体を書き、タグを書く ← これのほうがまだまし
>>155
そりゃ公平な評価にはならないよ。俺は既にC言語は十分使える状況なんだから。
そしてPHPとJavaScriptにはC系言語の常識が通用したからさほど苦労しなかったが、
Goはそうではなく、色々引っかかる。
ただこれはGo言語制作陣の意図通りだし、確かにいまさら互換言語を整備する意味はないんだよ。
> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
ちょっとこれは厳しすぎ、というか、若干誤解しているか?
(静的クラス機構による)動的型は型を失うわけではなく、一般的には「静的言語としてのメリットを失う」とはされない。
確かに間接呼び出しになる分だけ遅くはなるのだが、これを言うなら世の中のOOP言語は全部糞になる。
(動的言語の)動的型は毎回辞書引きが必要(map扱い)だから効率が悪いとされている。
Goのinterface{}はこれではない。
ちなみにGoのreflectionもC系とはちょっと感覚が違う。
jsonを吐くのにフィールド名が必要なら、普通はjsonモジュール内でreflectionするはずで、
それならpublic(先頭大文字)でなくとも全部取れるはずなんだよ。だからそれを期待してしまうわけ。
そして、あ、あれ?とれないの?みたいな事になる。
C的常識でGoを組んでると、この辺の予想外のところで引っかかる。いろいろ根本からして違うんだよ。
一方PHPだと、「下手糞がフレームワーク組みやがって」とは感じるけど、何でそうなるのかは分かるんだよ。
あっちはベースを共有してる感がある。
だから今の俺だとPHPの方がGoより生産性が高くなってしまうわけ。
しかしGo言語はC系言語出身者お断り仕様で計画通りなのだから、これはこれでいいんだよ。
159デフォルトの名無しさん
2017/11/19(日) 16:10:38.42ID:uqF6CIR0 >>158
>> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
>ちょっとこれは厳しすぎ、というか、若干誤解しているか?
単純にIDE連携が静的言語としてのメリットって話
つまりコード補完する時にDBのカラム名が候補に出る状態にできるのが静的言語のメリット。
内部的に型を持つとかそういう話じゃない。
> Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
じゃなくて
Go:構造体を書き、go genereteを実行する
だけ。正しくタグがついているか確認は不要。ツールを信頼してるから。Cのプリプロセッサを信頼するのと同じ。
>> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
>ちょっとこれは厳しすぎ、というか、若干誤解しているか?
単純にIDE連携が静的言語としてのメリットって話
つまりコード補完する時にDBのカラム名が候補に出る状態にできるのが静的言語のメリット。
内部的に型を持つとかそういう話じゃない。
> Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
じゃなくて
Go:構造体を書き、go genereteを実行する
だけ。正しくタグがついているか確認は不要。ツールを信頼してるから。Cのプリプロセッサを信頼するのと同じ。
160デフォルトの名無しさん
2017/11/29(水) 20:31:48.17ID:hqVSi0UH 長文で会話するのやめろ
161デフォルトの名無しさん
2017/12/02(土) 01:31:21.45ID:YvPU0sEp aws lambdaに正式対応だから勉強してみるか
162デフォルトの名無しさん
2017/12/08(金) 02:34:03.21ID:vRwW3yxJ 外部ライブラリで
import "github.com/hoge/foobar"
みたいにリポジトリ指定みたいに書いたりしますが
そのリポジトリが無くなったら終わりってことですか?
それと、forkした場合などはユーザ名変わるわけですがfork内のimport全部書き換えなきゃならんとか面倒ではないですか?
import "github.com/hoge/foobar"
みたいにリポジトリ指定みたいに書いたりしますが
そのリポジトリが無くなったら終わりってことですか?
それと、forkした場合などはユーザ名変わるわけですがfork内のimport全部書き換えなきゃならんとか面倒ではないですか?
163デフォルトの名無しさん
2017/12/08(金) 14:44:36.27ID:feUzbW7M >>162
vendoring すれば良いんじゃない
vendoring すれば良いんじゃない
164デフォルトの名無しさん
2017/12/08(金) 17:33:33.51ID:vRwW3yxJ ありがとうございます
vendoring という機能を知りませんでした
vendoringで解決できそうです
vendoring という機能を知りませんでした
vendoringで解決できそうです
165デフォルトの名無しさん
2017/12/08(金) 21:10:32.89ID:TYM9B0mh リポジトリあっても数年更新ないとかあるからな
go-bindataとか
go-bindataとか
166デフォルトの名無しさん
2018/01/21(日) 17:08:27.78ID:N7P1nvHc ふむ
167デフォルトの名無しさん
2018/01/24(水) 05:47:28.45ID:V1qhcEkf goでもwasmへの準備が着々と進行中らしいな
168デフォルトの名無しさん
2018/02/08(木) 01:35:20.81ID:KOEkDRo6 goland使いにくいvscode使いたいです
169デフォルトの名無しさん
2018/02/22(木) 17:15:17.70ID:zGB/N5H/ >>165
こういうのがあるとパッケージプロバイダを経由したほうが良いと思える。アカウントけされたらvendor使ってても無駄だよね
こういうのがあるとパッケージプロバイダを経由したほうが良いと思える。アカウントけされたらvendor使ってても無駄だよね
170デフォルトの名無しさん
2018/02/23(金) 18:16:11.30ID:OcP2glf5 vgo に期待
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 【愛国者速報】山上徹也、金に困りTwitterのお金配り垢に応募していた。犯行もお金があったら暫くやらなかったと供述 [856698234]
- 防衛省関係者「中国軍のレーダー照射は現場の忖度か暴走だろう」 [834922174]
- マヨネーズにわさび、山椒、卵の黄身、ラー油、オリーブオイルを入れてよく混ぜてください
- 千晴とVIPの深夜の遊戯
- 全力疾走してる人同士が正面からぶつかったら最悪どうなるんだろう
- 巨大地震 [957955821]
