Go language part 5

■ このスレッドは過去ログ倉庫に格納されています
2022/02/27(日) 07:43:20.04ID:uWHjNeVw
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

公式
https://golang.org

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

公式外パッケージドキュメント
https://godoc.org

ブラウザ上で試し書き
https://play.golang.org


※前スレ
Go language part 4
https://mevius.5ch.net/test/read.cgi/tech/1605467680/
2022/03/11(金) 20:56:16.13ID:QqXcHrRr
Cへの理解があればまあ何とかなるっしょ
2022/03/11(金) 21:03:32.08ID:parWzd9L
>>178
JavaやっているやつにRust勧めるなよ。c++でRAIIとunique ptr勉強してからじゃないと無理。

GC前提のgo のほうが近道だわ。
2022/03/11(金) 21:17:23.70ID:o63L8Mvt
>>180
C++は以前の「筋が悪いが代替がないから使う」から今は「避けることができる」言語
今となっては学ぶべきでない言語として大方のコンセンサスがあります
C→Rustと進むのが非常にわかりやすくてベスト
2022/03/11(金) 21:27:24.13ID:uv7nfwNg
ウェブ業界にいるんなら、Rustの案件は将来も少ないだろうし、
>>171が仕事で使う目的で学ぶっていう意味でいうならGoのほうがええやろ
教養としてならRustのほうが学ぶこと多くて面白いけど
2022/03/11(金) 21:36:55.19ID:o63L8Mvt
>>182
それならばウェブ業界で今急速に進んでいるのがWebAssembly
そしてWebAssemblyの記述言語は圧倒的1位がRust
2022/03/11(金) 21:58:49.55ID:qrl8XqzC
>>180
ただGoだと何も「新しくは」できなくね?

ガチ鯖はJavaで、ライト鯖はPHPで既に書けるなら、Goが他に活躍してる分野って何?
今時のデスクトップアプリはGUI無しとかあり得ないから、CLIアプリとか?ならJavaで全く問題ない。
Javaが動かせない貧弱環境(=非x86、非linux、つまり大体組み込み)ならC一択だし。


>>181
> C++は (中略) 今となっては学ぶべきでない言語として大方のコンセンサスがあります
これはない。お前の周りがトチ狂ってるだけ。Rust界隈はそうなのかもしれんが。

俺はRustは最終的に死ぬと思ってる。
C++とはコミュニティの規模が多分4桁違うし、FireFoxを殺したのはRustだし。
(まあ俺はGoも最終的に死ぬと思ってるんだが)

初心者は「全機能を使いこなす事が必要」だと思ってるみたいだが、これは明確な間違いで、
C++なんて全部入りなんだから全機能なんて使ってる奴は居ない。
(例えばインラインアセンブラも普通に出来るが、常用されても困るわけだし)
C++は元々「必要な機能を選んで使う」思想で、
初心者は「何が必要で何が不要か」判断出来ないから適切に使うのはかなり無理。
で、そういう奴は大体C++の悪口を言う事になるわけだが、ほぼ「肥大化してる」だけだろ。
それはお前が適切に取捨選択出来ないだけだ馬鹿タレ、でしかない。
2022/03/11(金) 22:23:28.57ID:wdcjWAJU
>C++は元々「必要な機能を選んで使う」思想で、
>初心者は「何が必要で何が不要か」判断出来ないから適切に使うのはかなり無理。

一人で使う分には自分が理解したところから使えばいいんだがチーム開発だと悩ましいよな。
書いた本人以外理解が難しいコードなんてのも簡単に量産されるし。
2022/03/11(金) 22:27:06.80ID:/JvA5shV
>>184
そこは冷静になって純粋に言語機能をC++とRustで比べてみればいいんじゃないか
言語としてはC++が勝っている点がほぼなくC++の様々な欠点をRustが改善解消
だからこそ大手IT各社が揃って共同でRust foundationを起ち上げるなど垣根を超えて惚れ込んでいる
2022/03/11(金) 22:57:33.99ID:qrl8XqzC
>>185
だから「コーディングルール」で切るんだよ。

つか、多分、C++とそれ例外では「コーディングルール」自体の意味が違う。
C++のは機能も使い方も制限する。Goとかだと見た目だけだろ。
(Goの場合は見た目もディレクトリ構成も画一だからもしかして何もない?
googleもC++/JS/PythonはあるがGoのはなさそう)

C++に問題があるとすれば、「難しいコードを書くことに何らブレーキがない」事で、
これをコーディングルールで補ってる。
C++以外の言語は「使うべきでない機能はそもそも入れない」で、これは正しいが、
後出しじゃんけんじゃないと無理。


>>186
言うてRustってC++で廃止されたauto_ptrを焼き直しただけだろ。
ヒープの生存期間をスタックと連動させるのはいいが、それはCでも書けるしCだと基本だった手法。(ただし手動)
だからRustで生成されるコードはC++でも書けてしまう。
そしてRustは境界チェックがある分だけ遅い。よって最終的に勝てる理由がない。
この点FireFoxの連中は大馬鹿もいいところで、スピード競争してるのに速度優位性がない言語を選んだ時点で自殺だった。

RustはCの代替になろうとしていて、勿論ネイティブバイナリを吐くわけだが、
これを潔く諦め、Cのコードを吐く(TS/JSの関係と同じ)だったら、覇権とれたかもとは思うけど。
この方法だと組み込み全分野に無理なく浸透していけるし。
(ただしこれだとC++の代替にしかならないから気に入らないのだろうけど)

RustでOS書こうとしてる馬鹿もいるだろ。誰も使わないよ。
Linuxより速くて小さい物を提供出来る技術的理由がないし、
仮にそれが出来てもCでも書けてしまうからLinuxももっと小さくなり、永久に追いつけない。
Rustには生き残る理由がない。
2022/03/11(金) 23:09:09.74ID:egx2H9Pr
このおっさん勢いあるスレならどこでも湧くな。そして偏った知識で見境なく喧嘩ふっかける。かまってちゃんが過ぎる。
2022/03/11(金) 23:13:16.62ID:/JvA5shV
>>187
そこまで無知だとは思わなかった
叩きたいならばまずは知識を身に着けないと恥ずかしいよ
2022/03/11(金) 23:43:25.63ID:qrl8XqzC
>>189
エコーチェンバーが欲しいのなら他言語スレに出てくるべきではないよ。


Rustが提供してる機能は結局のところ、プログラマの補助でしかない。
Rustで書かないと実現出来ないコードなんて存在しない。

元祖馬鹿向けCはJavaで、大ヒットして覇権を取った。
ただし関数ポインタが無かったのでGUIには全くフィットせず、そこは全滅してる。
とはいえ覇権言語であり、現在でも1/3はJavaだろ。

2代目馬鹿向けCがGoで、これもそこそこヒットしてる。(とはいえC/C++の規模からするとゴミだが)
RustなんてGo以下のゴミだし、そもそも人数は馬鹿>>>選ばれし勇者なんだから、
ずっとGoよりもゴミのままだと思うけど。
んで、元祖選ばれし勇者にはC/C++で十分だし。

俺はRustはC++のコーディングルールの一部になると見てるし、そうなる事を望んでる。
2022/03/11(金) 23:50:45.41ID:/JvA5shV
>>190
C/C++の欠点はメモリ安全性等の欠如により発生する欠陥の多さであるとグーグルとマイクロソフトが意見を同調している
そこへ現れたRustはコンパイルが通ればメモリ安全性やデータ競合ゼロを保証するため彼らにも歓迎され用いられている
2022/03/12(土) 00:13:31.67ID:JgaGU6xu
>>191
C/C++の欠点は「馬鹿が『ひとりでも』混ざるとどうにもならない」事だよ。

ただ、静的解析で何とかなるものなら、「全部入り」のC++にもいずれは導入される。
現在C++は3周遅れ(9年遅れ)程度だから、
9年のうちに優勢になれば勝ちだが、これは多分無いでしょ。
2022/03/12(土) 00:39:34.87ID:MeH0OP6r
>>192
ところがC++には不可能
Rustには簡潔な借用ルールとライフタイムがあるために成立している
さらにRustにはunsafe操作の分離という導入もありこれが安全性の保証に大きく寄与している
2022/03/12(土) 01:12:13.25ID:jQJpzSFj
Go の G の字もないなw
2022/03/12(土) 01:23:48.74ID:SUJjbHcC
次スレまで待とうかと思ってたけど流石にワッチョイスレ作った方がいいか?
完全にスレが崩壊してる
2022/03/12(土) 01:28:54.16ID:JgaGU6xu
>>193
> ところがC++には不可能
『今の』C++にはね。
ただ、C++の場合は少しでもその方がコード効率がよくなる、とされると採用される。(ので良い物はいつか採用される)
それが「全部入り」

> 安全性の保証
要するに補助輪でしかない。Rustのは全部これ。

> 簡潔な借用ルールとライフタイム
これは俺は筋が悪いと思ってるけど。
プログラマに生存期間をマニュアルで管理させてるだけ。(これはCと同じ)
そしてRustの場合はこれの整合性を静的に解析出来る。(これはC++にはない。が、コンパイラ側で対処出来る話。そのうち導入される)
だいたいそもそも「貸し借り」なんてやってる事自体、
一般的プログラミングにおいての生存期間と合致してないからであって、根本的に筋が悪い。

そもそもプログラマは管理したいとは思ってないから、GCの方が筋がいい。
GCだと駄目な件については、例えば以下なら、(このブログは有名なので色々言われてるようだが)
https://blog.discord.com/why-discord-is-switching-from-go-to-rust-a190bbca2b1f?gi=bd6f6b9c5be3
そもそも大量の生存オブジェクトが存在する場合はGCには不向きなので、
Goについてなら例えば「GC非対象の変数宣言」構文が用意出来れば済んだ話。
(この思想がGCとフィットしないから一般的に導入される事はないが、
VC++ならnew/gcnewでGCなし/ありを切り替えられるし、俺はこれで十分だと思うよ)


まあ心配しなくても、所有権の貸し借りが素晴らしいってことになれば、C++にも確実に導入される。
そのときRustは死ぬよ。その猶予が9年間。
2022/03/12(土) 03:16:10.27ID:JxEFMwOe
>>196
合成の誤謬ってやつだね
C++は全てを含むから最強
あとはC++から必要な機能のみを抜き出せないユーザーの責任

完全チューリングマシンでもやっとけ
2022/03/12(土) 04:40:23.33ID:ykq+YJH5
VScodeで自前のパッケージを使おうとしたら、importの追加のクイックフィックスが出ないんだけど
これって昔からだっけ?
2022/03/12(土) 04:49:23.73ID:ykq+YJH5
あ、違うわ
プロジェクトのルートに置いてると /cmd/internal 以下のパッケージは参照できないみたい
なんだこれ?こんなルールあったっけ?1.17.7
2022/03/12(土) 04:52:53.03ID:ykq+YJH5
外部パッケージの参照の仕様はまあ仕方ないんだけど
なんで内部パッケージで相対参照できなくなったんだろう
どっかにブログとか理由の解説ない?
2022/03/12(土) 05:00:12.51ID:ykq+YJH5
ディレクトリ名とpackageでの宣言、二重に記述しないとまともに動かないパッケージ名ルール
物凄く不満

それでいてcmdとかのディレクトリだろうがmainはmainパッケージだし
一貫性よりも何か重要な理由があるのか?
2022/03/12(土) 06:14:51.35ID:f9B4ek7q
ITの9年は長いでよ、ロートルには短いかもしれんが。
そして30年という長い年月を持ってしてもC++はLinuxカーネルに入れなかったのにRustは入った。この違いよ
2022/03/12(土) 08:30:46.88ID:JgaGU6xu
>>202
> ITの9年は長いでよ、ロートルには短いかもしれんが。
長いという程長くもない。お前もオッサンになれば分かる。まあこれはさておき、
実際、現在のプログラミング言語のアイデアは既に80年代に出尽くしており、
今はそれを実装していってるだけ、とは言われてるだろ。言う程進化はしてない。
Rustだって何一つ「新しいアイデア」はないだろ。

> Rustは入った
ググってみたが、まだforkして勝手に起こしただけじゃね?
> https://japan.zdnet.com/article/35174333/
> https://thenewstack.io/rust-in-the-linux-kernel-good-enough/#:~:text=When%20we%20first%20looked%20at%20the%20idea%20of,the%20standard%20C%20normally%20used%20in%20Linux%20development.
多分知らないのだろうけど、オブジェクト指向最盛期(2005頃)には、
・Linuxのコードを『安全な』オブジェクト指向で書き直そう!
というプロジェクトはあった。今はググッても出てこない程跡形もないが。
これと同じだよ。
安全に書き直したコードは、書き直してないコード(既に世界中で使われてる)よりバグが多いから意味がない。
この反省を踏まえてRustは「書き直すわけではない」というスタンスのようだが。

LinusはC++の依存性を持ち込む文化を毛嫌いしている。だからC++は入らなかったが、Rustも同じ。
Rustのコードを入れれば、Rustが読み書き出来ないと参加出来なくなり、つまり開発人数がコミュニティ規模に比例して小さくなってしまう。
今現在のRustのコミュニティ規模なんて、C/C++からすると多分4桁くらい小さいだろ。それは開発人数を1/10000に削るのと同じ。
(C++ではコードそのものの依存性が問題だが、Rustの場合は他言語への依存が問題)
馬鹿じゃなければやらないし、Linusは馬鹿ではないと思うけど。


まあRustの連中はすさまじいエコーチェンバーの中で生活してる事は分かった。
2022/03/12(土) 08:34:30.70ID:SV7jSkht
Rustスレで相手してもらえないからってこっち来るの止めてもらっていいですか
2022/03/12(土) 09:40:04.46ID:aEfI8PjB
何を勘違いしているのか知らんが、俺のこのスレの直前の書き込みは>>104
2022/03/12(土) 12:00:36.41ID:MMCseHWC
cppの話はcppスレでやれよ。
しかしgcnewってC++/CLIの話じゃないの?
2022/03/12(土) 12:22:07.70ID:EqbJSpHR
gcnewってなんだこれ、.Net専用とはいえなかなか邪悪な代物だな……
2022/03/12(土) 12:34:33.53ID:ARhhT+a7
>>196
それは知識が足りていない
借用ルールの借用とは当然ポインタを含む概念でありC++でも借用は普通に行われている
そして借用をよく見ると読み取りのみの借用と書き換えもありの借用の2種類がある点はどの言語でも同じ
読み取りの借用がある状況で書き換えの借用を許せばデータ競合が起きることはわかるだろ?
もちろん書き換え借用がある状況で読み取り借用を許してもデータ競合が起きうる
一方で読み取り借用だけならば複数の読み取り借用を許してもデータ競合は起きない
つまり『multiple reader XOR single writer』となりこれが借用ルールだ
もちろん全てのプログラミング言語においてこの借用ルールに違反するとデータ競合が起きうる
Rustはこの借用ルールに違反がないかどうかをコンパイル時に判定できる言語仕様となっている
だからRustはメモリ安全性だけでなくデータ競合安全性も保証することができるわけだ
2022/03/12(土) 12:59:10.90ID:6Ov0/1Y8
荒らしまくるRusterと不愉快仲間たち
2022/03/12(土) 13:13:55.79ID:4DPn029u
最近他のどのプログラミング言語スレいってもRustの書き込みあるな
飛ぶ鳥を落とす勢いとはこのことか
そういえばJavaが出現した頃、C++erがよくJava厨に噛み付いてたっけ
2022/03/12(土) 13:17:12.31ID:IpH8+wiy
>181 >186 >187 >190 >191 >193 >196 >197 >202 >203 >208 >210
>>96
荒らしに反応するやつも荒らしだからな。誘導だけしろよ。

>195
早いところワッチョイ立てようぜ。
NGが捗る。
2022/03/12(土) 13:29:40.57ID:JgaGU6xu
>>96 読んでみたが、なるほどここと同じような話が展開されてる。
ただ、C11に移行しようとしてるじゃないか。 >>202
> https://mevius.5ch.net/test/read.cgi/tech/1638086359/542
> トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備
> https://japan.zdnet.com/article/35184296/
このペースならあと10年はRustなんて入らないね。


>>208
> それは知識が足りていない
これはその通り。俺はRustやる気はないし、借用だ何だかんだの顛末を見て、様子見する事にした。

C++で既に慣らした奴ですら戸惑うのは、
自然な(直感的な)ライフタイムと言語の管理機能がマッチしてないからだよ。

そもそも俺はCでもメモリリークに困った事はない。
ただこれは「困らない範囲でやってる」(=ごくごく安全運転に徹してる)からであり、俺が賢いわけではないが。
この辺の「安全運転を強いられる」のが嫌でC++的にやりたいのも分かるし、Rustも良い実験だとは思うが、
余計な事を考えて、しかもそれでコンパイルが通らない事に悩まされるのは、そもそも設計が悪いからだよ。
つか、そんな事で悩むくらいならGCの方がいいから、実際ほぼ全部の言語はGC持ってるわけだし。

GCの問題点は色々あるけど、discordについては、Goに「GC非対象」を明示する構文があればGoのままで行けてたはず。
何も考えたくないんだよ、っていうGCの思想に反するけど。
Goはポインタのキャストって出来たっけ?出来るのなら、自前で大きめに確保して(数百MB)、
そこから小分けするmalloc/freeを用意してやれば済む。(現行の機能だけで出来る)
システムプログラミング言語だ!OSだって書けるんだ!って言ってるんだから、まあ何とかなるんだろうけどさ。


>>207
魔合体されてるVC++が見た目異様なだけで、
gcnewは単にgc対象ヒープから取るだけ。使い方はGC言語のnewと同じ。
(&*が既に使われてるから%^になってて初見で拒絶されるのは仕様)
2022/03/12(土) 13:30:00.30ID:JgaGU6xu
>>211
96読んだ。俺は移動に同意でいいが、移動する権利は相手に与える。
つまり、レスが投下されたスレに俺もレスを投下するから、
俺にレス付けるなら、やりたい方のスレでレスしてくれ。
2022/03/12(土) 13:48:18.60ID:ARhhT+a7
>>212
全てのプログラミング言語の中で
コンパイラメッセージが最も親切でわかりやすく修整点も具体的に指摘してくれるのがRustコンパイラ
この状況でどうしてもコンパイルが通らないのだとしたら知能がよっぽど低いのではないだろうか?
標準的な知能があれば問題とならないような点でつまずいたのかね
2022/03/12(土) 18:45:21.44ID:IpH8+wiy
>212 >213 >214
>>96
とっとと行け。スレ違い続けんな。
2022/03/13(日) 17:26:43.65ID:fVzSesSr
ワッチョイ無いとほんと不便ね
2022/03/15(火) 11:20:02.60ID:9ud1N6mP
Goってどうやって勉強すればいいの?
218デフォルトの名無しさん
垢版 |
2022/03/15(火) 11:47:39.11ID:UpdRUhUR
>>217
Goに限らんけど俺の場合は実際に動くコードの載ってる本で写経しつつ読み進めるのが一番短時間で覚えるみたい。
俺って頭じゃなく体で覚えるタイプなのかも。
結局、文法的なものは他の言語触った経験あれば新しい言語も難しくないんだけど、キーワードの要不用やライブラリやそれの使い方とか、その辺記憶するのが一番面倒。
2022/03/15(火) 11:58:47.19ID:9ud1N6mP
>>218
やっぱ自分の能力次第だよな。
俺はなんかサイト一個作ったほうが覚えられそうだから作ってみるわ。
何作ろう
2022/03/15(火) 12:36:58.99ID:sRZMI6dS
標準的なソースコードを集めたコードサンプル集とかあればいいんだけどな。
2022/03/15(火) 13:34:26.14ID:DIDzUA9i
ハイエンドというほどじゃないが、みんなのGo第二版はよく参考にしてる
flag使ったときとか

でも言いたいのは多分、ファイル読み込みとかごく基本のコード断片だろなー
2022/03/15(火) 14:08:20.21ID:/twmJcjK
https://qiita.com/takehanKosuke/items/9034e3d993df337eb669
こういうのの巨大なバージョン、誰かgitに公開してたりしないかね
2022/03/15(火) 15:44:18.88ID:DIDzUA9i
テーブルドリブンテストはなんか標準かでGenerateされるようになったね
2022/03/15(火) 15:45:27.48ID:DIDzUA9i
テスト対象の呼び出しまで完璧にサポートされてて便利すぎる
2022/03/16(水) 12:58:38.59ID:7fdw8GJ5
Go 1.18 is released!
https://go.dev/blog/go1.18
2022/03/17(木) 00:28:51.50ID:+BzvG1OL
ジェネリクス使ったmapやsliceのユーティリティが乱立するのかな
2022/03/17(木) 00:57:28.83ID:R5Hf13zE
やっっっとジェネリクス医薬品きたのかよ
どれどれどんな塩梅よ
2022/03/17(木) 01:41:25.22ID:bsoficKO
>>225
よっしゃ!
そしたら1.17入れる準備するか。
2022/03/17(木) 01:44:14.40ID:+BzvG1OL
やっとこういうのできるようになったか
https://github.com/samber/lo
2022/03/17(木) 03:24:50.03ID:OxdqHDsn
>>229
使いにくいインタフェースで筋が悪いな
あと多段適用するにしても途中で毎回配列生成は無駄すぎる
2022/03/17(木) 22:55:16.78ID:fLlxA/2d
GoCVのWindows版一生動作しなくて泣いてる
動作してる人がいたらmingwとgocvのバージョンの組み合わせとか教えてほしい
2022/03/19(土) 14:59:48.35ID:lmd9ivJq
>>231
解決した
gocv 0.28.0
mingwgcc 8.1.0
go 1.8
で動いた
2022/03/27(日) 19:47:35.42ID:4kGrQ90w
今更案件に採用したいとの連絡が来やがった。
もう他に決まっちゃったよ…
2022/03/27(日) 20:03:34.05ID:AzR4xInv
go案件一回だけ行けたことあるけど
バージョンが古くてきつかった記憶あるなぁ
下手にでかいシステムだとそういうのあるんだよな
2022/03/28(月) 00:04:31.98ID:9wMV4I/Y
もう go modules 無しで開発できる自信がない…
2022/04/01(金) 09:14:02.94ID:Z5kUzNXs
構造体のブランクフィールド
struct {
_ int
}
って、どこかのソースで使ってるのって見たことある?
2022/04/01(金) 10:24:23.29ID:Z5kUzNXs
1.18 で ~T って、T を実装している型という認識で正しいのかな?
2022/04/01(金) 15:58:41.67ID:Z5kUzNXs
1.18 の言語仕様読んでるけど
ジェネリックスいらんわホントに
HTMLコメントでは書き足りてないとか、ホントにホントに…
2022/04/01(金) 16:36:14.26ID:CvDUeZYP
>>238
どう言う意味でいらない?
2022/04/01(金) 17:16:02.47ID:Z5kUzNXs
>>239
ジェネリックス入れる上では仕方のない事なんだけど、
型関係の言語仕様が山になって追加されてた

spec の単純行数にして
1.17 - 2823 行
1.18 - 3265 行 (+442行)
2022/04/01(金) 17:22:16.71ID:Nf7Dhk5p
これからガンガンでかくなるはずなので、これに耐えられないなら早く逃げてくださいね
お疲れさまでした
2022/04/01(金) 17:23:53.64ID:Z5kUzNXs
>>239
ライブラリ開発者くらいじゃないのか?
欲しがってるのは正直、一部の開発者だよな
そのために仕様を10%単位でブクブク肥らすのは許容できるトレードなのか?
2022/04/01(金) 17:39:03.75ID:LyJwVbZX
>>242
通常のユーザーがジェネリック使うの強制なんだっけ?
ライブラリアン専用なら気にする必要無い気がするけど。
2022/04/01(金) 18:48:56.14ID:Z5kUzNXs
>>243
初学者が仕様書を読むとき、ハードルがかなり上がってしまう
何故かというと、至るところで型統一やらジェネリクスの用語の汚染が進んでいるから

もう、初心者には1.17の仕様書で勉強させるべきに思える
2022/04/01(金) 18:51:47.52ID:LyJwVbZX
>>244
初学者は仕様書読ませるのがそもそも間違い。
入門書読ませなさい。
2022/04/01(金) 18:55:28.61ID:LyJwVbZX
>>245
s/初学者は/初学者に/
typoすまんね。
2022/04/01(金) 19:00:06.78ID:Z5kUzNXs
あと珍妙に思えるような気もしなくもない文章が
The result of constraint type inference
is final substitution map M
from type parameters P
to type arguments A
where no type parameter P appears in any of A.

引数Aから型パラメータPがなくなるまで置換するマップMを制約型推論の最終結果とする、でいいのかなあ
2022/04/01(金) 19:06:19.64ID:Z5kUzNXs
>>245
あー、自分基準で初学者としてCのベテランレベルを想定していたわ
gccでインターネットサーバを書いてた層
半日でだいたい理解して三日でアプリを組み始めた
249デフォルトの名無しさん
垢版 |
2022/04/01(金) 20:49:31.03ID:5iHnQC+v
プログラム作る側からすると便利なライブラリが増えるからいいと思うわ
2022/04/01(金) 21:03:43.90ID:Nf7Dhk5p
map/reduce/filterみたいな操作をたくさんするとき、マジで面倒だったしジェネリクスあればいろんな場面で助かる
2022/04/01(金) 21:14:52.99ID:jxgGur0i
>>247
意訳すると型パラメータの方程式を解いた結果の制約集合が推論結果です、ということか
もったいぶった文章だな
Rob pikeのチェックは入ってるのか?
2022/04/01(金) 23:17:37.92ID:Z5kUzNXs
>>251
1.18の言語仕様の一部
その文は、Constraint type interface の中頃
2022/04/01(金) 23:32:09.14ID:Z5kUzNXs
とにかく読みづらい仕様書になっちまった!
と言いたい
2022/04/01(金) 23:56:13.72ID:auc7zK9Q
そうですね
もうGoを使うのはやめたほうがいいですよ^^
255デフォルトの名無しさん
垢版 |
2022/04/02(土) 00:13:08.30ID:YOvjIKEd
初心者は仕様書なんか見ない
2022/04/02(土) 01:04:35.98ID:m+vvtGqp
システムプログラミングしかしてないので
あんまりいらないけど
Web系とかはあったろうが便利なんじゃないだろうか

コレクションの中身が何の型かって基本的なことがわからないのはキツいよ
2022/04/02(土) 02:22:24.01ID:xHH5TZmF
Goでコレクションなんか使うか?
プロダクション運用してるけどsliceとmapしか使ったことないわ
2022/04/02(土) 05:33:45.87ID:tnnDyMVL
>>248
ベテランでも仕様書は読まないだろ。
普通はクイックツアー -> やりたいことのサンプルコードだと思うわ。
2022/04/02(土) 06:10:04.85ID:BAqmRjl3
>>258
普通は仕様書からチェックすると思うが
CでもC++でもJavaでもGoでも

あれ?C#の言語仕様書って見た覚えがない…
2022/04/02(土) 06:14:33.15ID:BAqmRjl3
>>259
ああ
C#はマイクロソフトのヘルプで見てったから文法書形式のは覚えがないのか
JavaScriptもMDNばかりで仕様書をよんだことないや
2022/04/02(土) 06:20:24.88ID:tnnDyMVL
>>259
ANSIとかISOとか持っているやつがそんなに居るかね。
2022/04/02(土) 06:27:00.86ID:BAqmRjl3
>>261
CとかC++やってりゃ赤とか緑とかARMとか持ってないか?
もっともインターネット以前だけど
2022/04/02(土) 12:45:39.96ID:BAqmRjl3
たまには仕様書も読みなおすと新鮮
いつの間にか妙ちきりんなルールが追加されてたりするし

_ &= flag というように、算術代入の左辺に空白識別子は置けません、とか誰得?
NOOPだとばかり思ってたけど変わったのか(わざわざ確認する気もない
2022/04/02(土) 13:41:36.50ID:m+vvtGqp
おじさん消えて
2022/04/02(土) 14:52:46.43ID:YPKLSNfQ
日本の製造業何十社から、トップが集まった、MISRA-C 研究会でも言ってた

日本には、C の仕様書に詳しい香具師はいない!
だから、仕様書で議論する事ができないので、

組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
という本が書かれた

これが実際のコーディングルールのバイブル

抽象的な仕様書で、議論をしない事。
必ず、具体例・コードで議論する事

これが大原則

仕様書で議論するのは、現実的じゃない。
江添のC++ 本を見ても明らか

仕様書を表現した無数のコード例が書いてあるけど、細部は省略しますばっかり。
細部まで突き詰めていくと、切りがない

江添レベルの人間が、日本に2人もいないので、仕様書で議論することは無理
2022/04/02(土) 15:00:01.25ID:YPKLSNfQ
generics は、Rust にもあるから
2022/04/02(土) 16:04:50.21ID:4HZvLFXe
またジジイが暴れてんのか
2022/04/02(土) 16:31:43.87ID:BAqmRjl3
じゃ、どういう話題なら気に入るのかね若い人
2022/04/02(土) 16:33:42.78ID:vRBLByq+
>>266
そこは有る無いという話ではない
そこはRustの方が使いやすい
特にトレイト境界がありがたい
2022/04/02(土) 17:47:27.46ID:K3ABhaa3
最近マシにになったと思ったが我慢できないのかな?
Go Nimスレに閉じこもっててくれ
そこは好きに使っていいから
個別スレでは大人しくしといて
2022/04/02(土) 18:14:01.71ID:+a+ANJVh
>266 >269 >270
>96
餌与えんな。
2022/04/02(土) 18:30:53.19ID:FvAcb10F
MISRA出してくるのも相当おかしいけどな。
2022/04/03(日) 08:15:05.26ID:YAESyHF/
>>270
2022/04/04(月) 01:10:11.27ID:2YLoUSsE
1.18の言語仕様はどこで公開されてるの?
2022/04/04(月) 08:08:03.11ID:dKoFZlg8
>>274
https://go.dev/ref/spec
1.18 はもう安定版だから現在の言語仕様がそれ
2022/04/04(月) 08:11:46.50ID:GOjfDlOJ
>>274
ttps://go.dev/ref/spec
じゃないの?
2022/04/04(月) 08:24:54.17ID:dKoFZlg8
定数、変数、型やらの基本的な言語仕様で型パラメータやらコア型とかのジェネリクス関連の概念も持ち込んで記述する必要がある
けれどもライブラリ、それも今までinterface{}を引数に持ってたような関数を書いてたライブラリにしか関係ない概念を何故か皆が学ばないとならなくなった
単純に仕様書の行数から、学習コストは10%悪化したと見なせる

ジェネリクスは項として別枠に記述して、そこで定数やらでのジェネリクスの影響について書いてもらいたかった
2022/04/04(月) 08:27:50.29ID:dKoFZlg8
>>277
いや、無茶振りだとは分かってるただの愚痴

愚痴ばかりだから老がいとか言われてるんだよな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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