Go language part 2
■ このスレッドは過去ログ倉庫に格納されています
>>148
そりゃ該当するのは君の言うnilとかだよ。
俺の場合は何度も言っているがJSONだ。
問題なのはこの原因が「Goの特殊仕様」であって、「俺の未熟な文法理解」ではないこと。
文法は一通りやれば終わるが、特殊仕様は確認しないと分からず、その都度の対応になる。
新しい領域に踏み込んだら毎回地雷原を歩かされるようなもので、これでは生産性なんて上がらない。
だからプログラミング言語には統一性/一貫性が重要だと言われるわけでね。
C++は今は何でもかんでも仕様に取り入れてる。
あれがいいかどうかはさておき、既に言ったように、Goで何か結果が出れば必ずC++は取り込む。
だったら俺はそれでいいや、という感じだね。
先頭を走らなきゃヤダ!ならGoに集まっている連中とワイワイやるのもいいのではないかな。
ただ、仕様を見る限り面子には非力感がありまくりだが。
そして当然、結果はそう簡単に出ないし、出ても簡単にパクられる。
それも覚悟の上でがんばれ、ってとこだね。 >>149
そんなの言語毎にハマりどころはあるから。
Goだけにある問題点みたいな言い方するから、
どんなのかと思った。
jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては? ドキュメントに書いてあることができないのが、何で未熟な文法理解に何故起因しないかわからん。
文法理解してるつもりなのに書けないのなら、語彙も足りないんだろ。
ってかドキュメント読めよなぁ。
特に難しい事もないじゃん。
なんか読めない理由でもあんのかね。 >>150
いやGoだけだぞ。
正確に言うとC系(ハロワ系)はCに意図的に似せて作ってあるからこの辺で問題が生じることがない。
俺は関数型には深入りして無いからそっちは知らんが。
君がGoだけかなり特殊だと気づかないのは、他に比べる手持ちの言語が無いからだよ。
ただそれもGoの意図通りのようだし、
確かに他言語の経験者が大量流入すると独自進化できない、というのはごもっともだ。
ジェネリック使いたければ他言語を使え、Goはジェネリックよりいい解を探してみせる!というのもありだろう。
実際、彼らの意図通り、俺みたいなC系経験者にとってはGoは魅力的ではないし、ひとまず静観といったところだね。
上手くガラパゴス化して面白く変化できるかどうかだね。
> jsonの問題もjwgとか使えば自動的に理想的なtag付けしてくれるんで。使ってみては?
これは逆なんだよ。
書かないことこそが素晴らしい、というのが従来型言語であって、俺はそっちを支持する。
そうではなく、自動生成こそが正義、というのならそれはまあがんばってね、という感じだが、
それも結局「正しく自動生成できているか」確認しないといけないんだから、
書くのと比べてやること減ってないだろ。
なんかそこらへんの根本的なノリが違うんだよなあ。
なお、
> jsだってthisが何指してるかわからなくなる問題とか、独特のハマりどころはあるでしょ。
これは違う。あいつらはマトモにオブジェクト指向も出来ないくせに主張するからおかしなことになる。
普通に使えば obj.method なんだから、thisが何を指すかで戸惑うことなんてない。
逆に、それ以外でthisを使うからおかしなことになるのだが、それは根本的に間違ってるんだよ。
(ただし仕様上、関数ポインタにはいちいちbindする必要があるが、これはすればいいだけ)
JavaScriptのthisガーって言っている奴は間違いなく馬鹿だから、無視していい。
ただそいつらが過半数な感じがJavaScriptが終わってるところなんだが、、、、 なんで糖衣構文ではなく、アロー関数が出来たんだろうねぇ。
まぁ、言ったからには、静観してくれたら良いな。 >>152
Goとjsで平等な視点で比較評価しているとは思えない点は目をつぶるとして
>それも結局「正しく自動生成できているか」確認しないといけないんだから、
>書くのと比べてやること減ってないだろ。
あなたの得意分野のCだって内部的にはプリプロセッサがコード生成してるけどそれを目視チェックしたこと無いよね。
隠蔽しているだけでコード生成を使ってるんだよ。 コード生成を嫌ってるみたいだけど、そして理解もできるけど
静的言語が動的言語並の自由度を確保しようと思ったらコード生成は避けれないと思う。
例えばちょっと前にあったdatabaseとの接続もそう。
コンパイル前にスキーマを収集して型を作るのが静的言語における最適解。
それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
でも、そもそもコード生成嫌わないで。
生成したコードをデバッグ時に参照できるというのは、バグの解決につながりやすい。
Cで複雑なマクロを組むとエラーがわかりづらくなるけど
プリプロセッサの出力を目視できるようにすると解決できたりする。
だから Goのコード生成もプリプロセッサのコード出力くらいに考えておけばいいと思う。 嫌なら使わなければいい
気に入らないなら思いの丈をブログにでも書いてくれ
そろそろ黙れ 技術的革新について話すだけのヤツはクソだ、黙って手を動かせ、と言った奴を
自分が触ったことのないテクノロジを批評するのは滑稽、と批判してみせた奴
こいつが、その素晴らしい技術でLinuxを超える何かを世の中に残せたのなら説得力が有るのだが…
結局何かしらの技術を語ってる奴は総じてクソなのは揺るがない >>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系言語出身者お断り仕様で計画通りなのだから、これはこれでいいんだよ。 >>158
>> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
>ちょっとこれは厳しすぎ、というか、若干誤解しているか?
単純にIDE連携が静的言語としてのメリットって話
つまりコード補完する時にDBのカラム名が候補に出る状態にできるのが静的言語のメリット。
内部的に型を持つとかそういう話じゃない。
> Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
じゃなくて
Go:構造体を書き、go genereteを実行する
だけ。正しくタグがついているか確認は不要。ツールを信頼してるから。Cのプリプロセッサを信頼するのと同じ。 aws lambdaに正式対応だから勉強してみるか 外部ライブラリで
import "github.com/hoge/foobar"
みたいにリポジトリ指定みたいに書いたりしますが
そのリポジトリが無くなったら終わりってことですか?
それと、forkした場合などはユーザ名変わるわけですがfork内のimport全部書き換えなきゃならんとか面倒ではないですか? >>162
vendoring すれば良いんじゃない ありがとうございます
vendoring という機能を知りませんでした
vendoringで解決できそうです リポジトリあっても数年更新ないとかあるからな
go-bindataとか >>165
こういうのがあるとパッケージプロバイダを経由したほうが良いと思える。アカウントけされたらvendor使ってても無駄だよね ビルドしたバイナリにソースコードのパスが含まれちゃうんだけどこれを抑制する方法ってありますか? >>171
試してないけどgoupxとか試してみたら? >>172
レスありがとうございます。
upxで圧縮しても解凍したらパスが出てきてしまうので意味がありませんでした。
https://qiita.com/kitsuyui/items/d03a9de90330d8c275c8
↑みたいな方法しかないみたいですね。 なるほどpanic時に使う情報なのか。
でも本番では要らないなぁ Googleが「Dart 2」発表、Dartを再起動。iOS/Android用ライブラリ「Flutter」と共にWebとモバイルのクライアント開発にフォーカス
http://www.publickey1.jp/blog/18/googledart_2dartiosandroidfultterweb.html APIサーバでマスタデータ的なものをグローバル変数として最初にDBから読み込んでおくのってアリな設計?
memcacheとか使うのはもう少し流動性のあるデータとか、サーバ間できちんと同期する必要のあるデータ扱う場合って認識でいる 初歩的な質問で恐縮なのですが、
Javaでいう所のSystem.out.print(i + " ");のような記述は、
Goではどのようにすればよいでしょうか?
fmt.Print(i + " ");とするとエラーになってしまうのですが… >>179
分かりました。ありがとうございました。 intのabs無いんかい。
まぁ簡単に作れるからいいんだけど、、、なんで?
ジェネクリスができたら実装するんかな https://golang.org/src/sort/sort.go
Goのクイックソートの実装を見ると内部でヒープソートとシェルソートをしているように見えるのですが
これはイントロソートの亜種なんですか? Google CodeJam 提出言語をGoのみにすればGoの普及がもっと加速したんじゃなかろうか go言語にc++17の [[nodiscard]]属性みたいなのないですかね? ほう、検査例外みたいな機構がC++に出来るのか
そりゃ楽しみだな func calc(x int, y int) (int,int){
return x, y
}
var a int
a, b := calc(1,2)
みたいに定義済みのaと未定義のbに戻り値代入したいときって、
a用の一時的な変数を用意しないと駄目よね?
なんだかんだ一年以上、疑問に思ったまま過ごしてる もしくはbを先に定義しちゃうか
どっちが一般的なんだろう 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
XC972 RDBをRedisとかでキャッシュしつつ、更新もしてるサンプルない?
ラッパーの実装を参考にしたい >>193
別にそのまま行けないか?
aに当たるのはerrだったりするよね。 >> 193
https://play.golang.org/p/l3eB4W6F5Qc
こういうことね
そうするしかない。
「プログラミング言語Go」にも詳しく書いてあるよ。 >>204
ゴルーチンって何?
コルーチンなら知ってるけど >>205
ハァ?その言語の識別子も把握してないの?死ねば? FORTRANマイスターが他の勉強方法を始めたのかもしれん 呼び方とかどうでもいいけど
当たり前だけどcapacityはメモリ持ってかれるから
チャンネルに飛んでくる数が不定な場合はstack使わないとgoroutine爆発する
ググるとまさにってのがstack overflowにあったけど緩衝するのが普通なの?
なんなんこれ C言語に挫折してGoに来たけどやっぱダメでした
ポインタも残ってるし、むしろCより覚えることが増えて難しくなってないか 自分でなんとかしてる
capacity小さくても止めとけと、耐えろよと思うわけよ
そのひと手間が普通ならなんだこれはと思うわけよ
Go言語のスレが未だにpart 2な理由よくがわかった スクリプト言語ばっか触っててGoに移行しようとして1月近く経ったけどシンプルなのは良いけど他だと標準で出来ることしようとしたら必要以上に複雑になるな Go自体が他の次世代言語とくらべて低機能にしてある
複雑な機能つけても使いこなせない人がいるから単純にしてあるのさ
それがGoの利点ともいえる じゃあ俺go使いこなせないから言語ごと消えてどうぞ 行番号振ってVRAMアドレス意識してた古代からタイムワープして来たがLLのがむずい Goでは定数同士の演算はコンパイル時に行われるという認識で正しいですか? Goに限らずCでも最適化オプションオフにしない限りコンパイル時に計算してくれるんじゃないかな cのunionとかpackされた構造体の扱いがめんどくさいな
せめて自動でsetter/getterを付けてくれたらいいのに 僕もただのデータの入れ物的な扱いしてました、何年くらい前だろうか15年くらいかなぁ Pyhtonの遅さに耐えられずGoを学び始めたんだけど
型の記述がしんどい
これが何を意味するのか読み解くのに土日を要した
func compute(fn func(float64, float64) float64) float64 { ツアーof goからやらないと。型を後置する意味について分かるよ Cの関数のポインタ型の分かり肉さに比べるとだいぶマシになったんやで 型無しやるとマジストレス、他人が書いたBugFixとかマジ地獄 >>231
typescriptが人気出たのもそれだよね >>232
公式の解説にあったのよ。Cの型が読みにくいからGoはこうしたって。
ワイが池沼とか関係ない >>226
四つのfloat64、二つのfuncで混乱してしまった
後置はVBAで慣れているのだが、 as がないとまるで別物に見える スライスとかマップで普通に使いそうな関数を集めた定番のライブラリとかある? >>235
cで関数を引数に取るようなのを見たら卒倒しそうだな。かなりわかりやすい方だと思うけど。単純に関数名や、引数名を取り除いただけだよね 今日学んだこと
・IdをIDにしろって注意される
・ログがインターフェイスじゃない MongoDBのRESTインターフェイスを作って、windowsのサービス化まで出来た
これでブラウザのユーザースクリプトでデータ使いまくれて捗る
Goは始めたばかりだけどサクッと作れた。まったくすごい言語だわ 現在の時刻が日付に関わらずある時間帯に含まれるかどうか判定したいです
time.Timeのbeforeやafterを使うと日付まで考慮されてしまうので
いちいち時刻だけをとりだして比較しているのですが、もっと簡潔な方法ってありますか? 時刻取り出して比較する以上に簡単な方法なんて無いでしょ
そういう関数なりライブラリが欲しいってこと?、無駄な機能無いのが取り柄だし必要なら作れば良いのだが
流石にt.Hourの比較程度を言語で抽象化するのは畑が違うとしか 趣味で作ってるアプリのAPIサーバーをGoに置き換えてみようと思うんだけど、
フレームワークはやっぱりechoが鉄板だと思っていいの? ■ このスレッドは過去ログ倉庫に格納されています