次世代言語21 Go Nim ..
[2ch|▼Menu]
910:デフォルトの名無しさん
21/06/08 16:36:51.33 4egCPfD4.net
>>875
中置記法

911:デフォルトの名無しさん
21/06/09 12:47:10.31 +SCbmrn1.net
中置もいいけど 引数のtuple定数化強要とドット記法で丸括弧減らすとかさ
コードゴルフにゃ向かないけど読み解きにくい妙な圧縮記述を減らすのには効果あるんじゃね?

912:デフォルトの名無しさん
21/06/09 14:20:57.68 cEr6XlmY.net
Kotlin は何かとわざわざヒネった発想を無理強いしてくるのが気にいらない
min で 2 つの値の小さい方をとろうとしてるコードにいちいち coerceAtMost (値を制限する)関数つかえ
とサジェストしてくるが、たしかに値を制限するのも理屈は同じではあるが
わしはここでは2つ値がでてきてその小さいほうをとろうとしてるロジックを強調したいのに
値を制限するでは意味がボヤけるんだよっヽ(`Д´)ノ

913:デフォルトの名無しさん
21/06/09 14:23:04.09 cEr6XlmY.net
ちなみにツッコみとしては「なるほど coerceAt を無理強いされるのが気にいらない、とこういうことか」
みたいなレスを期待

914:デフォルトの名無しさん
21/06/09 14:33:59.27 paDfdrYm.net
>>878
coerceAtMost(n)と書かれるとn以下なら何でもいいように見えちゃって曖昧に感じるね
普通にAPIの設計やネーミングのセンスに問題があると思う

915:デフォルトの名無しさん
21/06/09 15:08:53.26 Q6onajD4.net
それは無視してminつかえばいいんじゃ

916:デフォルトの名無しさん
21/06/09 15:40:50.01 J3IrN4Ey.net
minOf(a, b)じゃなくて?

917:デフォルトの名無しさん
21/06/17 10:36:08.05 vWOkjG7a.net
Kotlin って派手な機能はないけど、実用的な機能が色々あって結構好きだわ
特にクラスのコンストラクター引数をそのままフィールドで受け取れるのとかすげえ便利


918: null 安全性も Swift みたいに if let ... とかでチェックさせられるんじゃなくて単なる比較で書けるからわかりやすいし



919:デフォルトの名無しさん
21/06/17 15:46:16.23 5eqF/fO2.net
発想に慣れるまでがちょっと時間がかかるが
発想に慣れるとやたらと短かくソースを書けるようになる
そこがちょっと快感
それがKotlin

920:デフォルトの名無しさん
21/06/17 16:38:25.67 V3sPVRmg.net
まだJavaの延長(というかカジュアル版)の感覚でしか書けないなぁ

921:デフォルトの名無しさん
21/06/17 16:52:48.02 AdmHW43m.net
JVMから脱却するしかない

922:デフォルトの名無しさん
21/06/18 15:29:47.42 Sm09xvIL.net
結構JVM依存でkotlinネイティブは最適化でどうにもならなそうなぐらいパフォーマンス厳しいってのが暗黙の了解なような

923:デフォルトの名無しさん
21/06/19 01:25:26.86 dKc8wEhO.net
ずっとGo信者だったけど、最近Rustはまりつつあって凄い言語だなって思ってる。

924:デフォルトの名無しさん
21/06/19 01:53:56.18 5nSU/2XC.net
crystal触ってるけどrubyっぽさが凄いね。nimがpythonっぽい何かなのに比べて、crystalは better rubyだわ

925:デフォルトの名無しさん
21/06/19 11:22:01.73 aheD0w3E.net
方向性違うけどpost PythonはnimかJuliaか

926:デフォルトの名無しさん
21/06/19 13:22:42.63 ni2CtFQM.net
nimプロダクトで使ってるところ見た事ないけど、なんちゃって運用ツールとかにしか使えない感じなの?

927:デフォルトの名無しさん
21/06/19 13:34:40.76 tEb9xsfu.net
python選ぶやつはnim選ばない
python選ばないやつはnim選ばない
ということだ

928:デフォルトの名無しさん
21/06/19 15:34:32.94 zDrgWeBe.net
C/C++ 使えてるし困ってない

929:デフォルトの名無しさん
21/06/19 18:20:46.92 xzdBUefb.net
>>892
nim 結構いいのに Python 臭いとこがやだよね。

930:デフォルトの名無しさん
21/06/21 18:23:45.07 tL3UJCwM.net
Swiftも!あんじゃん

931:デフォルトの名無しさん
21/06/22 01:19:34.45 kGm2q7jg.net
そりゃビックリ!

932:デフォルトの名無しさん
21/06/22 07:17:18.33 ikhS5rXH.net
swiftのResultBuildersってなんか面白そうだな

933:デフォルトの名無しさん
21/06/22 09:26:37.53 2l2patZE.net
>>893
いつも思うんだが、こういう奴ってなんでこういうスレに来るの?
うざいんだが

934:デフォルトの名無しさん
21/06/22 20:38:29.50 zXyDoEK6.net
その言葉、そっくりそのままお返しします。

935:デフォルトの名無しさん
21/06/23 02:30:54.55 LAPrnsaY.net
>>899
いやスレの趣旨に合わないやつが居座ってんのどっちだって話

936:デフォルトの名無しさん
21/06/23 13:28:38.76 6jEPjWCz.net
居座ってるってどうやって確かめたんだ?
たまたまスレが目に入っただけかも知れんだろ

937:デフォルトの名無しさん
21/06/27 01:52:23.46 VONK1hXC.net
>>893
Rustをオススメします

938:デフォルトの名無しさん
21/06/27 04:28:46.15 XpI5XMzQ.net
Kotlin もよろしく

939:デフォルトの名無しさん
21/06/27 05:55:26.60 9J08sCxI.net
C/C++のかわりにおすすめするってことはKotlinってJVMへの依存切ってシングルバイナリで動くの?
できたとしてもランタイム重そう

940:デフォルトの名無しさん
21/06/27 12:57:27.73 U1pSP8r9.net
なんで D は無かったことにされてるのですか?

941:デフォルトの名無しさん
21/06/27 23:00:58.14 GIc1PMDr.net
>>905
度々自らの過去を無かったことにしたことでプログラマに愛想を尽かされて無かったことにされた

942:デフォルトの名無しさん
21/06/27 23:40:14.19 W99JxdHL.net
もうlazy くらいしか特徴が無いデカいし将来性の無い環境だからねー
デカいスタティクライブラリとコンパイラメッセージは仕方ないとしても
ビルド環境はメジャーなんに幅広く寄生すればいいのに

943:デフォルトの名無しさん
21/06/29 00:20:13.47 jRoYjms


944:V.net



945:デフォルトの名無しさん
21/06/29 00:24:49.55 jRoYjmsV.net
まあしかし C はまだいいけど C++ は複雑で分かりにくいように思う。
学習に時間が掛からないか?
そしてよく使われていたであろう Windows ネイティブのプログラムはじわじわと廃れていく。

946:デフォルトの名無しさん
21/07/01 07:59:54.15 5Rb+kFfY.net
デジタルなんだからじわじわ劣化しないよ
っていう単純化された理論が崩壊したのは事実だが
実装レベルのC++は複雑だが破綻はしてない

947:デフォルトの名無しさん
21/07/01 19:20:24.95 aN48/DYF.net
bool
polymorphism
match
と来て次の層はどんなんになるんかな

948:デフォルトの名無しさん
21/07/01 20:52:42.10 q9oggpN7.net
WebAssemblyアプリ開発で最も使われている言語はRust、注目の機能はスレッドなど。The State of WebAssembly 2021
URLリンク(www.publickey1.jp)

949:デフォルトの名無しさん
21/07/04 10:42:07.67 ZgbMq1d2.net
注目の機能スレッドってなんかそういう独自の機能があるのかと思ったわ

950:デフォルトの名無しさん
21/07/10 18:17:31.11 d/15nqXv.net
L言語とな?
URLリンク(github.com)

951:デフォルトの名無しさん
21/07/10 21:06:58.55 yQTcABkI.net
注目の機能は、と問うスレッドが5chでも建ったんじゃないの

952:デフォルトの名無しさん
21/07/11 15:36:58.13 lbKLD5N+.net
>>910
「,」、「&&」、「||」周りのオーバーロードとか完全に破綻しとるわ。

953:デフォルトの名無しさん
21/07/11 17:17:40.29 PakhW6ue.net
llangってぱっと見なんだかわからんな
またネーミング失敗じゃない?

954:デフォルトの名無しさん
21/07/14 00:32:39.09 qLlB7Ntl.net
そういえばZenってお前ら的にどうなの
URLリンク(www.zen-lang.org)

955:デフォルトの名無しさん
21/07/14 00:42:40.34 Kt6ogli4.net
>>918
つまらん言語だな
GCのないGo処理系を作れば済む話だったのではないか

956:デフォルトの名無しさん
21/07/14 08:15:42.46 KifrgVDH.net
>>918
ゴミ言語という印象しかない URLリンク(ziglang.org)

957:デフォルトの名無しさん
21/07/14 10:52:37.13 nkmGSgfF.net
Zigのパクりでしょ

958:デフォルトの名無しさん
21/07/14 13:41:04.37 BkkfMVAi.net
zigってnimとかvlangとかに比べてどこらへんがいいん?

959:デフォルトの名無しさん
21/07/14 14:03:16.32 gix7WKJq.net
>>922
やりたいことはわかるが、わざわざ言語を作るほどのことではない
スルーしてよし

960:デフォルトの名無しさん
21/07/14 15:48:49.76 ohEAXE/x.net
このスレなんのスレだっけ?

961:デフォルトの名無しさん
21/07/14 16:02:12.04 E8SaDlG+.net
自分の気にいらない言語を貶めるスレ

962:デフォルトの名無しさん
21/07/15 03:40:50.12 P3PEaMds.net
ここまできてはじめて
スレ住人全員が同意する意見が書きこまれた >>925

963:デフォルトの名無しさん
21/07/15 06:11:01.98 rQf3BUPj.net
勝手に同意した事にするなよ…
主語がでかすぎる

964:デフォルトの名無しさん
21/07/18 12:01:23.40 WbmfjGIN.net
プログラミング言語とか、勘違いしやすく物忘れも激しいという
人間の非理想的な特性に対する対策なのだからそれ自体が宇宙の真理レヴェルの美しさを備えることは難しい
C++はその対人間の対策にすら失敗している気配がするが、
プログラミング言語の理想を言い出したらキリがないことも上のことから明らかなので、



965:K要な仕事をやれるのだからC++でも及第点とも言える



966:デフォルトの名無しさん
21/07/18 12:04:40.99 WbmfjGIN.net
「より良いソリューションに対する最も危険な敵というのは、十分に良い既存のコードベースなのだ
(the most dangerous enemy of a better solution is an existing codebase that is just good enough.)」
とゆー格言はプログラミング言語にも当てはまる

967:デフォルトの名無しさん
21/07/18 16:07:40.62 EvgeERSZ.net
なんかキモいね

968:デフォルトの名無しさん
21/07/18 18:39:25.82 WbmfjGIN.net
褒められたと思っておこう(キリ

969:デフォルトの名無しさん
21/07/19 01:55:47.55 F++Kpdh1.net
ていうか最も危険な敵っていってるけど
そんだけ十分によいソリューションになってるってことじゃねーか
「より良い」ってのがただの思いこみってのが真相だろう
手前ミソを売りこむのに邪魔、っていうのをいいかえただけだな

970:デフォルトの名無しさん
21/07/19 08:27:19.09 3wZSUZuJ.net
「betterの敵はenough」で十分なのに、既存の格言はやけに長いな

971:デフォルトの名無しさん
21/07/22 17:21:37.86 LuJDKG0M.net
Sather

972:デフォルトの名無しさん
21/08/09 14:42:17.17 pHK69Jy/.net
Pythonより30%高速目指す「Pyston」--開発者が語る次の目標

973:デフォルトの名無しさん
21/08/09 18:34:55.62 wz2uTHTS.net
のちのピストン運動である。

974:デフォルトの名無しさん
21/08/20 21:52:24.83 z5BeR7Lv.net
Rustのボローチェッカーとは動作が異なるようなのですが、
Nimにはすでに「借用チェッカー」に似たものがあるそうです
URLリンク(forum.nim-lang.org)
Nimでもボローチェッカーで参照の有効性を検証することによって
メモリ安全性を保証できるのでしょうか?
何方か詳しい方がいましたらご教示お願い致します

975:デフォルトの名無しさん
21/08/21 03:28:29.09 UJDYcxYL.net
>>937
まだ実装されてないけど、ボローチェッカーに似たようなものを作る予定はあるようだよ。
URLリンク(nim-lang.github.io)

976:デフォルトの名無しさん
21/08/21 06:03:46.59 8cTmIcpJ.net
>>937
Nimはガベージコレクション(GC)のある言語
だからGCのないC/C++/Rustとは別分野なのでそれらの代替にはならない

977:デフォルトの名無しさん
21/08/21 06:50:02.55 7GAoG1Iq.net
>>938
ご教示ありがとうございます。
さっそくリンク先をgoogle翻訳してみたのですが、
Nimバージョン:1.5.1でRustのボローチェッカー
に似た「View types」が実装されるんですね
Nim Version 1.0.0 正式リリースされてから
1年も経過しないうちにARCとORCが実装されたよう
なので、一年後(現在Version 1.4.8)には
「ボローチェッカー(View types)」も実装されそうですね

978:デフォルトの名無しさん
21/08/21 07:04:18.79 YwSANob8.net
GCが無い事実は保証できる
速度のベンチマークが嘘じゃないことは保証できない
だから自称超高速GCがもしあっても普及しない
GC無しで高速化した方が確実

979:デフォルトの名無しさん
21/08/21 07:09:56.98 7GAoG1Iq.net
>>939
>Nimはガベージコレクション(GC)のある言語
Nimはガベージコレクション(GC)を任意で外せるから、
ガベージコレクション(GC)を外して「ボローチェッカー(View types)」
で参照の有効性を検証することによってメモリ安全性を保証できないのでしょうか?

980:デフォルトの名無しさん
21/08/21 07:27:43.27 7GAoG1Iq.net
>>941
>GC無しで高速化した方が確実
NimはオプションでGC無しにできるので、
Nimバージョン:1.5.1でRustのボローチェッカー
に似た「View types」が実装されればGC無しで
高速化出来ますか?

981:デフォルトの名無しさん
21/08/21 07:45:38.03 7GAoG1Iq.net
>>939
>だからGCのないC/C++/Rustとは別分野なのでそれらの代替にはならない
NimにGC有りは事実なのですが、
NimはオプションでGC無しにできるので、
Nimバージョン:1.5.1でRustのボローチェッカー
に似た「View types」が実装されれば
GC無しで、View types参照の有効性を検証する
ことによってメモリ安全性を保証しつつ高速化して
C/C++/Rusの代替にt出来ますか?

982:デフォルトの名無しさん
21/08/21 0


983:9:50:30.70 ID:OLYxOVV4.net



984:デフォルトの名無しさん
21/08/21 10:59:32.65 YwSANob8.net
Javaですら難しい所はあるんだよ
そこを任意で外してstatic変数ばかり使うと結構酷い目にあう
任意で外せると言われても現実的に外せないことがよくある

985:デフォルトの名無しさん
21/08/21 13:21:41.07 7GAoG1Iq.net
>>945
>デフォルト実装されてなきゃランタイムやライブラリが纏まらなくて代替にはならんよ
NimはNimソースコード をトランスコンパイルして、一度 Cのソースコードを吐き出します
このトランスコンパイルする時にオプションでGC無しを選択して一つ一つ手動でメモリ管理
していくことになる
吐き出されたCソースコードをCコンパイラでバイナリへ変換するのでランタイムやライブラリが
纏まらなくなったり、Javaコンパイラみたいに外せないと言う問題も発生しないと思うのですが
間違っていますか?
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ

986:デフォルトの名無しさん
21/08/21 13:46:01.75 /fFTWNOm.net
なんでプログラミング言語って十徳ナイフに向かいがちなんだろうな

987:デフォルトの名無しさん
21/08/21 14:06:29.07 7dVECLmp.net
Cでいいやん

988:デフォルトの名無しさん
21/08/21 14:30:12.98 O7+p4qIy.net
>>948
それはあなたが考える十徳ナイフがプログラミング言語に似ているからです。

989:デフォルトの名無しさん
21/08/21 14:33:03.76 YwSANob8.net
0を1にする脳より、1を10にする脳になりがちな理由?
前者は破壊的で後者は建設的に見えるからかな

990:デフォルトの名無しさん
21/08/21 15:24:53.18 KwPigd31.net
>>949
CやC++で書くとメモリ安全性が必ずしも保証出来ないために様々なセキュリティの穴を含むバグを生じさせてきた
そのためメモリ安全性を保証しつつC/C++の代替となる言語としてRustが誕生した
C/C++/RustはGC(ガベージコレクション)がないためOSや基本ライブラリに組み込み等の分野に至るまで幅広くカバーすることができるプログラミング言語
その中でもメモリ安全性を保証できるRustへと少しずつ移動が始まりつつあるのが現在の流れ

991:デフォルトの名無しさん
21/08/21 15:27:45.68 OLYxOVV4.net
>>947
ランタイムやライブラリを貴方が一つ一つ手動でメモリi管理するなら問題ないね

992:デフォルトの名無しさん
21/08/21 17:30:00.12 7GAoG1Iq.net
>>949
>Cでいいやん
Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、Cのソースコードを吐き出せるので割り振られた仕事が早く終わっ
ても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます

993:デフォルトの名無しさん
21/08/21 17:33:35.36 7MfDEBrd.net
>>954
コンパイルが通った時点でメモリ安全性が担保されるRustの方が良いですよ

994:デフォルトの名無しさん
21/08/21 17:54:49.49 7GAoG1Iq.net
>>955
Rustのメモリ安全性はボローチェッカー担保されている
Nimバージョン:1.5.1でRustのボローチェッカーに似た
「View types」が実装されれば、GC無しでView types
参照の有効性を検証することによってメモリ安全性を保証
しつつ限りなく抑え込まれたタイプ量で高速化した
Cのソースコードを吐き出せます
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
URLリンク(nim-lang.github.io)

995:デフォルトの名無しさん
21/08/21 18:53:58.07 B8EsxF5E.net
だったらnimでいいじゃん

996:デフォルトの名無しさん
21/08/21 18:55:52.39 13NtIrKF.net
怠け者のくだりが意味わからん

997:デフォルトの名無しさん
21/08/21 19:25:31.33 7GAoG1Iq.net
>>958
>怠け者のくだりが意味わからん
ご指摘ありがとうございます。
「C言語でリモートワークでされている方は」が抜けていましたので以下


998:訂正いたします Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し ているにもかかわらず、Cのソースコードを吐き出せるのでC言語でリモートワークでされ ている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる



999:デフォルトの名無しさん
21/08/21 19:51:42.21 6DBrqemS.net
>>959
Pythonが高い可読性??
信者くらいしかそんなこと言わないぞ
他の言語と可読性は同じだろ

1000:デフォルトの名無しさん
21/08/21 21:04:52.10 YwSANob8.net
Pythonのライブラリを再発明するかーとはならんだろ
Pythonの可読性を再発明するふりをすれば怠けることができる

1001:デフォルトの名無しさん
21/08/21 21:53:00.41 7GAoG1Iq.net
>>960
Pythonは構文にインデントを組み込むことによってざっと眺めた時に人間が読みやすい
一般的には上記の事をPythonは高い可読性があると表現されています
この事は「Pythonは可読性の高い言語」ググれば約 265,000 件出てきます
他の言語と可読性は同じだろって意見の人は少数派です

1002:デフォルトの名無しさん
21/08/21 22:00:44.34 O7+p4qIy.net
「javascriptは可読性の高い言語」で検索すると約 334,000 件

1003:デフォルトの名無しさん
21/08/21 22:03:03.92 13NtIrKF.net
関係無いスレに出張ってんじゃねーよNimキチガイ

1004:デフォルトの名無しさん
21/08/21 22:43:10.06 7GAoG1Iq.net
>>963
>「javascriptは可読性の高い言語」で検索すると約 334,000 件
単に検索件数が多いだけで、上位10件の表示内容を読んでも
「javascriptは可読性の高い言語」と言う内容のページは1つも見つかりません
対して「Pythonは可読性の高い言語」は上位10件の内5件見つかりました

1005:デフォルトの名無しさん
21/08/21 22:47:49.77 7GAoG1Iq.net
>>964
>Nimキチガイ
いつもみんなによく言われます
照れますね〜v(=^0^=)v

1006:デフォルトの名無しさん
21/08/21 22:48:20.53 g5NUsF7b.net
>>962
インデントで可読性が高い??
じゃあほとんどのプログラミング言語はインデント出来ますから可読性が高いことになりますねw
Pythonが他の言語より可読性が高いなんて一切ありません
そもそもPythonはプログラミング言語としてあまりよくないので積極的に使いたい人はあまりいないでしょう
分野によってはライブラリの充実状況で仕方なく使う程度の言語です
Pythonで開発なんて絶対にしたくないと思う人が多数派でしょう

1007:デフォルトの名無しさん
21/08/21 23:03:01.15 7GAoG1Iq.net
>>967
元の文脈的に
Nimも構文にインデントを組み込んでるからpythonが出てきただけでそういう議論がしたいんじゃない

1008:デフォルトの名無しさん
21/08/21 23:24:43.32 YwSANob8.net
他のコンパイラが自分自身をconfigureとかmakeしている間に
Pythonはライブラリを充実させる仕事が早く終わって怠けることができる

1009:デフォルトの名無しさん
21/08/21 23:58:42.50 n4sq4kDw.net
>>969
つまりNimはダメってこと?

1010:デフォルトの名無しさん
21/08/22 02:31:01.76 0Cz6ueFz.net
>>970
>NつまりNimはダメってこと?
そんな寂しい事言わないでかまってよ〜(´;︵;`)
Nimは行末のセミコロンが必要ない
タイプ数がもりもり減ります。
Rust にはもちろん必要です。
Nimはmain が要らない
スクリプト言語感覚でいきなりコードを書けます。
Rust は main が必要です。

1011:デフォルトの名無しさん
21/08/22 02:40:35.23 0Cz6ueFz.net
>>970
そんな寂しい事言わないでかまってよ〜(´;︵;`)
Nim は標準出力への文字列出力が楽
Nim では echo で改行付きの出力ができます。shell と同じですね。通常は改行付きで出力することの方が多いでしょ。
Nim はしょっちゅうやることは簡単にできるようになっています。
そんな Nim の echo は可変引数で値を受け取り型が何なんだろうとお構いなしに出力できます。
let n = 10
let str = "HOGE"
echo "Number: ", n, " String: ", str
一方 Rust は
let n = 10;
let str = "HOGE";
println!("Number: {} String: {}", n, str);
なんかよく判らんマクロでいちいちびっくりさせなきゃいけないです。よく使うものが冗長だとゲンナリします。
変数を直接ぶち込むことも出来ませんしね。
let n = 10
echo n
普通出来るでしょこんなもん・・・。ところが Rust は出来ない。
let n = 10;
println!(n); <- エラ


1012:ー println!("{}", n); <- 毎度これを書かされる うざいっす。



1013:デフォルトの名無しさん
21/08/22 02:42:07.61 0Cz6ueFz.net
>>970
NimはC の関数を気軽に持ってくる
たった一行足すだけで C の関数を使うことが出来るようになります。
proc printf*(format: cstring) {.header: "<stdio.h>", importc: "printf", varargs.}
let n = 10
let str = "HOGE"
printf "Number: %d String: %s\n", n, str
どうですこれ?C の資産を気軽に使うことができるんです。SWIG 等の鬱陶しいラッパーを使うこと無くです。
Rust の場合はご多分にもれずラッパー行きで超絶面倒くさいです。比較用に書きたいんですが結構な文章量になるのでやめます。

1014:デフォルトの名無しさん
21/08/22 02:45:56.41 0Cz6ueFz.net
>>970
そんな寂しい事言わないでかまってよ〜(´;︵;`)
Nimはmut mut しなくて良い
Rust はまともな変数を使おうとすると mut mut しないといけません。デフォルトだと再代入できませんから。
普通再代入しまくりますよね?定数ライクに使いたい機会なんて殆どないですよね?なのに mut を毎度書かされます。
let n:int = 10
let mut m: int = 10
Nim ならこうですよ。
let n = 10 # immutable
var m = 10 # mutable
素敵。

1015:デフォルトの名無しさん
21/08/22 02:56:18.88 0Cz6ueFz.net
>>970
Nimは所有者・借用なんてもんでイライラしない
 Rust には C のポインタが可愛く見えるレベルで高くそびえ立つ鉄壁の初心者ガード、悪夢の"所有者・借用"の概念が存在します。
プログラムに慣れた人間ですら混乱に陥れ、書いている最中に精神力と人生の貴重な時間をガンガン削ってくれる究極の嫌がらせです。
Rust は変数のコピーしちゃうと元のやつが使えなくなるクソ仕様なのです。書き手にメリットなんて一切無い。C++の悪しきメモリ管理の呪いを持ち込んで来てその中でもさらに悪い部分をデフォルトにした感じです。
struct Point {
x: i32,
y: i32,
}
fn Print(p: Point) {
println!("x = {}, y = {}", p.x, p.y);
}
fn main() {
let mut a: Point = Point{ x: 10, y: 15 };
Print(a);
// エラー!
println!("x = {}, y = {}", a.x, a.y);
}
Print(a) で1回コピーされているのでその後使うと死にます。ウソでしょ?と思うでしょ?ホントです。
そしてプリミティブ型ならOKと言う Java に似たダブスタの呪いもオマケで付いてます。
おかげさまで関数はほぼ全て明示的に参照渡しをするハメになります。
「だったらデフォルトそうしとけよ! & をイチイチ書かせんなやワレ!」と思わないのってある種の才能だと思います

1016:デフォルトの名無しさん
21/08/22 02:59:43.53 0Cz6ueFz.net
>>970
struct Point {
x: i32,
y: i32,
}
fn Print(p: &Point) {
println!("x = {}, y = {}", p.x, p.y);
}
fn main() {
let mut a: Point = Point{ x: 10, y: 15 };
Print(&a);
println!("x = {}, y = {}", a.x, a.y);
}
これだとまぁエラーにはなりません。が、参照だからといってこんなことやったら死にます。
fn Print(p: &Point) {
println!("x = {}, y = {}", p.x, p.y);
p.x = 10; <- die
}
イミュータブルだからですって。はぁ・・・。

1017:デフォルトの名無しさん
21/08/22 03:03:28.37 0Cz6ueFz.net
>>970
だからこう書けですって。
fn Print(p: &mut Point) {
println!("x = {}, y = {}", p.x, p.y);
p.x = 100;
}
fn main() {
let mut a: Point = Point{ x: 10, y: 15 };
Print(&mut a);
println!("x = {}, y = {}", a.x, a.y);
}
はい来た。mut mut mut mut mut mut mut mut mut ああぁぁああぁ〜〜〜!!!
なんでよく使う方を面倒臭くしたがるんですか、この言語を作っている方々は。
その他又貸しの呪いやらなにやら超盛り沢山ですし。もうね私とはセンスが全く合わないです。
ぬぅぅうぅうぉぉおぉおぁぁあぁあああ!!!!!Rustよ!もうお前には頼まん!malloc と free を俺によこせうぉるぅぁあ!!こんな訳のわからんものに付き合わされるんだったら自分でメモリ管理した方がマシだわ!!!
とよくみんな発狂


1018:しませんよね。我慢強いですね。馬鹿じゃないの。 とっても良い子である Nim にはこんな呪いある"ワケ"がないです。



1019:デフォルトの名無しさん
21/08/22 03:07:42.15 0Cz6ueFz.net
>>970
type Point = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
まぁ普通はこうですよね・・・。Rust がぶっ飛んで異常なだけです。ありえないです。
ちなみに Nim の場合 print(p) と p.print() は書き方が違うだけで意味は同じです。

1020:デフォルトの名無しさん
21/08/22 03:10:25.68 0Cz6ueFz.net
>>862
参照で渡す場合はこうなります。
type Point = object
x: int
y: int
proc print(this: ref Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point.new
p.x = 10
p.y = 15
p.print()
echo "x = ", p.x, ", y = ", p.y
new で Point object を作成すると参照のオブジェクトが出来ます。これを渡すために print 側の引数には ref をつけてあげます。new 関数でメンバに値を割り当てることは出来ないので後から渡してやります。
つっても上のやつはあくまで Rust と似せて書いたらこうなるよって話でこんな書き方しません。

1021:デフォルトの名無しさん
21/08/22 03:12:56.27 0Cz6ueFz.net
>>970
普通オブジェクトなんて参照だろ、って事で Nim では以下のように書くのが慣例化しています。
type
Point = ref PointObj
PointObj = object
x: int
y: int
proc print(this: Point) =
echo "x = ", this.x, ", y = ", this.y
this.x = 100
var p = Point(x: 10, y: 15)
p.print()
echo "x = ", p.x, ", y = ", p.y
オブジェクトとそのリファレンスを同時に定義して、通常使わない方のオブジェクト側にサフィックスをつけておくと、まぁ素のオブジェクトも作りたきゃ作れるし、って話です。
自分は正直リファレンスだけで良いので更に手を抜いてこう書きますけどね。
type
Point = ref object
x: int
y: int

1022:デフォルトの名無しさん
21/08/22 03:18:37.68 0Cz6ueFz.net
>>970
パターンマッチ?case でしょ?
Nim も case でそれっぽく書けます。
複式パターン
fn main() {
let x = 1;
match x {
1 | 2 => println!("1 | 2"),
3 => println!("3"),
_ => println!("other"),
}
}

let x = 1
case x
of 1, 2: echo "1 | 2"
of 3: echo "3"
else: echo "other"

1023:デフォルトの名無しさん
21/08/22 03:20:54.62 0Cz6ueFz.net
>>970
範囲
fn main() {
let x = 1;
match x {
1...5 => println!("1...5"),
_ => println!("other"),
};
}

let x = 1
case x
of 1..5: echo "1..5"
else: echo "other"

1024:デフォルトの名無しさん
21/08/22 03:23:47.86 0Cz6ueFz.net
>>970
case の返りを受け取る
fn main() {
let x = 1;
let s = match x {
1 => "one",
2 => "two",
_ => "other",
};
println!("{}", s)
}

let x = 1
let s = case x
of 1: "one"
of 2: "two"
else: "other"
echo s

1025:デフォルトの名無しさん
21/08/22 03:25:32.61 0Cz6ueFz.net
>>970
分配束縛
Nim は標準ではできませんが
URLリンク(github.com)
を突っ込むことで可能です。

1026:デフォルトの名無しさん
21/08/22 03:27:54.79 0Cz6ueFz.net
>>970
仕様バグがない
Rust の以下の挙動は全く理解ができません。
fn main() {
let x = 'x';
let c = 'c';
match c {
// x: c c: c
x => println!("x: {} c: {}", x, c),
}
// x: x
println!("x: {}", x)
}
普通 x にマッチすると思わないでしょこれ。
さらにその直後 x が 'c' に変わってるとか予想だにしませんよ。
まぁ普通はこんな書き方しないと思いますがこんな調子ではどこでどうハマるか予測不可能です恐ろしすぎます。
Nim はこんな書き方そもそも出来ません。

1027:デフォルトの名無しさん
21/08/22 03:29:07.58 Tp7nysKx.net
必死にならないといけないほどゴミってことだろう

1028:デフォルトの名無しさん
21/08/22 03:31:48.58 0Cz6ueFz.net
>>970
コンパイラがケチくさくない
nim c -r hoge
これで hoge.nim をコンパイルします。
拡張子なんて指定する必要ありません。
-r で実行もします。
Rust の場合
rustc hoge <- ダメ
コンパイルと同時に実行しようと思ったら
rustc hoge.rs && ./hoge
うーん・・・

1029:デフォルトの名無しさん
21/08/22 03:35:33.10 XDtR+zkG.net
>>985
君はブロックスコープも理解できないアホなのかww
つまりNimにはスコープがないのかね

1030:デフォルトの名無しさん
21/08/22 03:35:43.46 JES5Vdct.net
某ブログのコピペじゃん
あのブログ主に恨みでもあるの?

1031:デフォルトの名無しさん
21/08/22 03:39:33.33 0Cz6ueFz.net
>>970
実行速度・メモリ使用量・ファイルサイズが小さい
Rust と比べて Nim の実効速度はどっこいかむしろ速いです。
Rust はこんだけイライラする書き方を強制されるにも関わらずたいして速くないとかもう哀れすぎます。
コンパイル後のファイルサイズは話にならないレベルで比べ物になりません。
fizzbuzz の例(FizzBuzz を無駄にベンチマークしてみた By Nim、golang、Rust、Crystal、その他 - 強まっていこう)で言うと
項目         Nim     Rust
実行速度      0.37s     0.44s
ファイルサイズ   82K     3.4M
メモリ      356K     900K
こんな感じです。

1032:デフォルトの名無しさん
21/08/22 03:47:12.59 hHgYpZEm.net
>>990
バカ丸出し
Rustはバイナリサイズも小さく出来ます
だから組み込み分野でもRustが強いわけです

1033:デフォルトの名無しさん
21/08/22 05:36:27.85 oQP1YKwm.net
Nimいいじゃん

1034:デフォルトの名無しさん
21/08/22 06:37:58.59 4TxjgFbr.net
さすがに騙される人はいないでしょう
ここまで荒らしがひどいなら次スレはNimを外した方がいいかもね

1035:デフォルトの名無しさん
21/08/22 06:41:37.05 JES5Vdct.net
第二プログラミング言語として Rust はオススメしません Nim をやるのです
っていう2017年のクソブログ記事のコピペ

1036:デフォルトの名無しさん
21/08/22 07:47:29.46 U2zX42Ts.net
流れぶった切って悪いけど
TypeScriptとかいうクソ言語みんなよく使えるねあんなに気持ち悪い型付けなのに
こんなクソ言語使うならvanillaのが遥かにマシだからPureScript行った

1037:デフォルトの名無しさん
21/08/22 07:52:45.12 U2zX42Ts.net
Reason or RescriptがOCaml構文まんまで使えたら使ってたのにRescriptの開発者本当ろくな事しない
これからWebViewアプリ全般がPWA当たり前になるだろうけど
もしPureScriptが廃れるならもうjs諦めてWebASM系に行くしかないな…

1038:デフォルトの名無しさん
21/08/22 08:25:10.09 ZD+Tc3uA.net
普通にバニラ+WASMでPWAの時代ですよ

1039:デフォルトの名無しさん
21/08/22 08:28:08.71 U2zX42Ts.net
>>997
ようやく一般に通用する程度にまで楽で実用になっただけで
普及はまだまだ全然だと思う

1040:デフォルトの名無しさん
21/08/22 08:30:16.05 ksVD5eTg.net
みなさんWasmは何で書いていますか?
あたしはRust

1041:デフォルトの名無しさん
21/08/22 08:35:54.12 0Cz6ueFz.net
>>991
>Rustはバイナリサイズも小さく出来ます
>だから組み込み分野でもRustが強いわけです
バカ丸出し
Nimは標準実装されたnimコンパイラが強力なマクロで
最適化されたCのソースコードを吐き出して、Cコンパイラ
で極小バイナリまで生成するから、コンパイルするだけで
後はプログラマがする仕事が無いので怠けててもいい
Rustは標準実装されたコンパイラでコンパイルするだけでは
超巨大なバイナリを生成するので、最適化せれたチューニング
を施して小さなバイナリを生成しなければならないから
プログラマの仕事が増えて怠けられない

1042:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 489日 17時間 29分 52秒

1043:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

293日前に更新/229 KB
担当:undef