プログラミング言語「Go」1.18 がリリース、ジェネリクスがサポートされる 48
ストーリー by nagazou
リリース 部門より
リリース 部門より
プログラミング言語「Go」の最新版となる「Go 1.18」が15日にリリースされた。2021年8月に公開されたバージョン1.17から0.01分のバージョンアップだが、過去最大の変更の変更を含むリリースとなっている模様(Go 1.18 Release Notes、Publickey、窓の杜、OSDN Magazine)。
1.18ではジェネリクスと呼ばれるプログラミング手法がサポートされたのが最大の特徴。1.18のジェネリクスはいくつか制約が残されているものの、今後のアップデートで改善されていく予定だとしている。ほかにも不具合を検出するテスト手法であるファジングのサポートや複数のモジュールを使った開発を容易にするワークスペースモードモードなども採用されているとしている。
あるAnonymous Coward 曰く、
1.18ではジェネリクスと呼ばれるプログラミング手法がサポートされたのが最大の特徴。1.18のジェネリクスはいくつか制約が残されているものの、今後のアップデートで改善されていく予定だとしている。ほかにも不具合を検出するテスト手法であるファジングのサポートや複数のモジュールを使った開発を容易にするワークスペースモードモードなども採用されているとしている。
あるAnonymous Coward 曰く、
Go言語では当初、言語仕様が複雑になるとして意図的にジェネリクスを実装しなかったが、ジェネリクスが必要だというユーザーの声に抗えず、ついに導入となったようだ。果たして使い勝手はどうだろうか?
Gopher (スコア:1)
さっき知ったのだけどGoのマスコットキャラはGopherという動物とのこと。
そういう動物の存在も知らなかったのだけど、Gopherというともう廃れたインターネット上の検索システム。
学生時代、webもまだ普及する前だったけどネットワーク論の講義でのインターネット実習の中でちょっと使った記憶が。
そういうインターネットの歴史が、このマスコットキャラに上書きされて、そのうち無かったことになってしまいそうだ。
Re: Gopher (スコア:2)
別記事のネタだし、そんなに古くもない話だけど、SkyDriveもそうだよね。またSkyにやられるのだろうか。
Re: (スコア:0)
gopherなつかしいな
さらにオフトピの地平に行っちまうが、ファイル検索のarchieも便利だったな
httpの検索サービスが高機能化しても、しばらくはarchieの方がずっと高速多岐に結果を返せて一覧の加工もし易かった
ノイズが少なく標準で正規表現を使える点は、現在の主要検索サービスにも勝ると思う
しばらく前に調べたらgopherもarchieも既にまともに動くサーバが無かったよ(あるにはあるが常用に堪えない)
Re: (スコア:0)
ftpサーバーにももう、ls-lRのファイルが置いてあるところなんか無いので、今更archieサーバを建てられないですよね。
学生時代はwebもほとんどなく(慶応大のサイトにmosaicで繋いだら表示が40分間ほどかかった覚えがある程度)
archie,ftpでいろいろダウンロードしたりfjでの罵倒合戦などを眺めたりする毎日だった。
だからUNIXのコマンドも、archie,ftp,rn以外はなかなか覚えなかったっけ。
Re: (スコア:0)
mnews ...
これでもマイナーV.upなのか (スコア:0)
バージョンの命名規則って結構悩みますけど
日付を付けてしまうのが悩まなくて良い
と思ったら同日で複数リリースするはめになったりして
a,b,cとか後ろに付け出して
締まらない
Re:これでもマイナーV.upなのか (スコア:1)
つ https://semver.org/lang/ja/ [semver.org]
こんなのに独自性出すのはよろしくないと思うよ。
Re: (スコア:0)
MS「せやな」
Re: (スコア:0)
クヌース「せやせや」
Re: (スコア:0)
真っ当にやるとバグフィックスの数字が大きくなって、リセットかけたくなるんだよね
Re: (スコア:0)
実際にはバグを修正した結果互換性が失われるということがよくあるので
その指針を厳格に適用するとメジャーバージョンがモリモリ上がって…
あっ
Re:これでもマイナーV.upなのか (スコア:1)
それな。SemVerは人類には難しすぎる。何か変更があったら1つ数字を増やす整数バージョンのほうがわかりやすい。
CVSは3つに区切られたリビジョン番号だったがSVNで整数リビジョンが採用された等の事例もある
Re: (スコア:0)
運用上整数バージョンで問題無いプロダクトは整数バージョンでいいと思う。
多分SemVerが難しいという感想が出るのはそういうプロダクトなのだろう。
安定性の高まったバージョンを示す必要が無いとか、ひたすら最新であることが最善とかそういうタイプのもの。
ラピッドリリースものもこれでいいかもしれない。
アップデート運用を考える時、メジャーバージョン、マイナーバージョンを切り分けるべきと結論する規模の
プロダクトというものもある。SemVerはよくできた道具だから、必要に応じて利用すればよい。
Re: (スコア:0)
何を悩むことがあるのか
普通に数字振れし
どうする? (スコア:0)
GOする!
0.01分のバージョンアップ (スコア:0)
1.17から1.18へのバージョンアップを0.01分のバージョンアップというのは違和感がある
では1.100から1.101へはいくつのバージョンアップというのか?
Re: (スコア:0)
ほんとやね
#タイポばかりだとマンネリなので趣向を変えた釣り糸?>nagazou
Re: (スコア:0)
1.99から1.100の方が。
漸近線 (スコア:0)
0.1
0.2
:
0.9
0.91
0.92
:
0.99
0.991
0.992
:
0.999
0.9991
0.9992
:
:
Re: (スコア:0)
Knuth「ワレ、なんか文句あるのか?」
1.17? それとも1.18? (スコア:0)
https://mag.osdn.jp/22/03/18/173000 [mag.osdn.jp]
齟齬が発生している…
Re:1.17? それとも1.18? (スコア:2)
同OSDN記事内で「Go 1.18は、2021年8月に公開されたバージョン1.17に続く最新版となる。」なんて書いてるから1.18が正解でしょうねえ
制約は新キーワードなのか (スコア:0)
拡張重ねる度にキーワードが増えるんか?
なんだかなーとはおもうけどラピッド系言語だから慣れ重視なんだね
c++みたいにキーワードと構文が入り乱れ同レベルな複雑さで多様な書き方出来ちゃうのも困ったチャンだし
こんなもんか
Re:あーあ (スコア:1)
理想は常に現実に敗北する。
そして、新たな僕の考えた理想の言語が誕生する。
この繰り返し。
Re: (スコア:0)
だからこそ、現実しか見てないPerl(4あたりまで)が自分は好きでしたね。過去形だけど。
Re:あーあ (スコア:1)
だからこそ、現実しか見てないPerl(4あたりまで)が自分は好きでしたね。過去形だけど。
以前、好きな言語 Perl4 という人がいたんだけど、そういう理由だったのかw
gayazone
Re: (スコア:0)
そろそろ言語仕様の変遷についても総称化できそう
Re: (スコア:0)
コピペ排除のためのやむを得ない犠牲。
Re: (スコア:0)
まあいわゆるオブジェクト指向まで行かないにしてもある程度似たような構造体をまとめて扱いたいよね…
Re: (スコア:0)
意図的に入れていなかったものを後から入れるって方針ブレブレで最悪だと思う。
ジェネリクスが存在しないことを前提に設計されてきたはずのこれまでの言語仕様やライブラリとの整合性とか問題ないのか?
Re:あーあ (スコア:1)
> 意図的に入れていなかったものを後から入れるって方針ブレブレで最悪だと思う。
ユーザー定義クラスなしで使えるように設計されたのに結局クラスを導入したjavascriptとかね。
でもジェネリクスに関してはほとんどの言語が当初はサポートしていなくて後付けで導入されているので、言語仕様やライブラリの問題もそれらと大差ないかと。
Re: (スコア:0)
JavaScriptは今でもクラスベースじゃなくてプロトタイプベースだけどな
Re: (スコア:0)
Javascriptへの怨念がすごい。
JavascriptはそもそもNNの組み込み簡易スクリプトとしてデザインされたものだから、ちょっと事情が違う。
元々は割とセンスのいい設計者が手癖で作った程度のもの。手間を掛けずに作った割に優れていたが、
Web用の整備された共通言語、しまいにはサーバー用途にまで活用される想定なんて無かった。
つまりグーグルイズイービル。
Re: (スコア:0)
「ちょっと事情が違う」ではなく、その当初想定していなかった方向へ拡張したことへの怨念なんだけど。
PHPもそうだけど、お手軽に使えるよう意図的に型ゆるゆるにしてたものを、良くも悪くも「便利」にしやがって…
Re: (スコア:0)
今のJavaScriptは型ゆるゆるじゃないの?
Re: (スコア:0)
そこは変えられないから#4221811が言ってるように方針ブレブレだという話をしてるんだけど…
Re: (スコア:0)
昔は型を拡張するのも自由自在だったけど現在は作法が決まってるね。
ネイティブのオブジェクトだとプロパティがgetter/setter経由になって、設定できる値が限定されたりする。
Re: (スコア:0)
怨念があるのは分かったが、言語仕様の設計者も利用者の用途も質も変わってるんだからそりゃ方針が変わるのも頷ける。
というか、それがコミュニティの支持を得たからそうなった。
Re: (スコア:0)
Javaがいつか来た道をたどるのか
自分達ならもっとうまくやれるはずと信じて
Re: (スコア:0)
しゃーない、クソ言語やから
Re: (スコア:0)
先日引き取った新規プロセスで、ク○なGenericsを直したばかり…いや、もうコード全体の9割書き直してるんだけど。
Re: (スコア:0)
たとえコードがコピペと定型文だらけの冗長なものになっても
言語仕様を単純化しようというという設計思想なのだと思ってたけど
今更方向転換したら、書かれたコードは冗長かつ言語仕様もわかりにくい言語になりそう
Re: (スコア:0)
コーディング規約で縛っていいぞ。C++界に住んでるが、「○○はむしろ禁止」は、解放されるってことでもある
Re: (スコア:0)
じゃあ、コーディング規約に合致しているかチェックするlintを書いてください。
# そしてそのlintが複雑になって……
Re: (スコア:0)
とっくにあるから。たとえば
https://www.techmatrix.co.jp/product/ctest/staticanalysis/codingrule.html [techmatrix.co.jp]
Re: (スコア:0)
それは有償っぽいけど、lintで書かれてるんですか?
Re: (スコア:0)
はい。詳しくは開発元にお尋ねください。