文字数制限きついので改題
スレタイ以外の言語もok
前スレ
次世代言語議論スレ[Rust Kotlin Haskell]第6世代
http://mevius.5ch.net/test/read.cgi/tech/1503924817/
探検
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/10/19(木) 17:51:38.66ID:EPSDvC752017/10/22(日) 23:53:22.71ID:sz7LIs8a
ponyはまだまだマイナーだな
2017/10/23(月) 03:02:27.50ID:vIdD1XI1
haskellがやっと外れたなwスレタイ
2017/10/23(月) 03:18:43.18ID:7Pp5HgLl
PHp本当に速くなったからな
相変わらずポーリングも特殊操作でしかできないクソだけど
相変わらずポーリングも特殊操作でしかできないクソだけど
2017/10/23(月) 04:14:09.67ID:1oD0q36r
異常者の迷言「PHPは日本人」「日本人はPHP」
2017/10/23(月) 08:27:35.76ID:+M73J5jp
気に食わない奴でも合法なら許す
違法なら許さない
この優先順位を歪めるから無法地帯になるのだ
違法なら許さない
この優先順位を歪めるから無法地帯になるのだ
2017/10/23(月) 08:52:16.45ID:xr09IWoG
>>70
Elixirってrubyに強く影響受けてる言語なんだよな。
Phoenix触ってたらRailsの匂いを感じる。
でも今は動的言語は弱い気がする。Elixir + 型 が欲しい
TypeScriptが触ってて気持ちいいからサーバサイドもJSがいい気がする。
Elixirってrubyに強く影響受けてる言語なんだよな。
Phoenix触ってたらRailsの匂いを感じる。
でも今は動的言語は弱い気がする。Elixir + 型 が欲しい
TypeScriptが触ってて気持ちいいからサーバサイドもJSがいい気がする。
2017/10/23(月) 10:51:25.73ID:WMNCDJb0
Elixirの問題は込み入ったことやるとErlangに足突っ込まなきゃいけないことで
プロダクションコードに突っ込むには人材要求が高すぎること
プロダクションコードに突っ込むには人材要求が高すぎること
2017/10/23(月) 14:31:56.92ID:f3vYk0Y4
結局ネットワーク系統のエラー処理は低レイヤーに突っ込んでいかないとどうにもならんよ。
抽象レイヤーでなんとかしたいって願望はわかるけどさ。
抽象レイヤーでなんとかしたいって願望はわかるけどさ。
2017/10/23(月) 17:32:43.36ID:KBSkknSp
Elixir(というかBEAM=ErlangVM)の場合はプロセス復活のために型情報が必要だし
静的にしたからって型情報は省略できない
静的にしたからって型情報は省略できない
83デフォルトの名無しさん
2017/10/23(月) 19:47:51.56ID:fT3gFD4f C++を書きたくないんだが代替言語は今だとrustとdどっちがゆうぼ?
最近はnimと言うのが注目されてるとも聞いたが……
最近はnimと言うのが注目されてるとも聞いたが……
2017/10/23(月) 20:22:06.86ID:ANMjmVZt
誠に残念ながら今そのポジションはGoの一強
2017/10/23(月) 20:45:12.65ID:LSzHPC1F
Cよりスピード出るのはNimだけ!
2017/10/23(月) 20:50:25.75ID:Y0tE+5bm
ジャップランド土人村企業が詐欺のために求めているのはPHPだけ!
2017/10/23(月) 21:14:10.32ID:kb3Oh+Sb
どうかんかえてもRustだろ
2017/10/23(月) 21:25:58.19ID:xr09IWoG
2017/10/23(月) 21:47:48.94ID:C8zrSpyb
Rustは言語と名乗れる水準に達してないのでGo
深くシステムに触るのには向いてないがな
深くシステムに触るのには向いてないがな
90デフォルトの名無しさん
2017/10/23(月) 22:05:15.62ID:fT3gFD4f Goなのか……
他言語が純粋な次世代Cを目指してる中、Goは微妙に設計思想が違うイメージだからあえて外したんだが……やっぱりgoogle正義なのか
他言語が純粋な次世代Cを目指してる中、Goは微妙に設計思想が違うイメージだからあえて外したんだが……やっぱりgoogle正義なのか
2017/10/23(月) 22:05:44.54ID:f3vYk0Y4
92デフォルトの名無しさん
2017/10/23(月) 22:17:08.30ID:fT3gFD4f2017/10/23(月) 22:32:24.88ID:QdR3J7Zg
>>90
goとか言ってる連中の言うこと本気にするなよ。
goは数年周期でバズってるだけでC++の代替なら
Dかrustって考えは間違ってないしrust理解できないやつが
こことrustスレで騒いでるだけだぞ。
Dはもう流行らんだろうが、rustは学習コストより標準ライブラリの弱さが面倒。
自分で書くか外部ライブラリに依存しまくるかで基本的なスレッドプールすら無い。
低レベル向けだから結局自分で書くならrustでいいし、それが嫌ならDでいいよ。
rustとD位の差なら正直好みの差。
goとか言ってる連中の言うこと本気にするなよ。
goは数年周期でバズってるだけでC++の代替なら
Dかrustって考えは間違ってないしrust理解できないやつが
こことrustスレで騒いでるだけだぞ。
Dはもう流行らんだろうが、rustは学習コストより標準ライブラリの弱さが面倒。
自分で書くか外部ライブラリに依存しまくるかで基本的なスレッドプールすら無い。
低レベル向けだから結局自分で書くならrustでいいし、それが嫌ならDでいいよ。
rustとD位の差なら正直好みの差。
94デフォルトの名無しさん
2017/10/23(月) 22:40:54.47ID:5YqbDQKx >>92
ならやっぱりrustじゃない?
bindgen使えばc++のヘッダもパースしてc ffi用のglue code生成してくれる。
bindgenがどの程度まで万能かは俺もよくは知らんけど、
mozillaがfirefox quantumでservoとgeckoの橋渡しのために使ってるくらいだから
結構まともに動くんじゃないかとは思ってる。
ならやっぱりrustじゃない?
bindgen使えばc++のヘッダもパースしてc ffi用のglue code生成してくれる。
bindgenがどの程度まで万能かは俺もよくは知らんけど、
mozillaがfirefox quantumでservoとgeckoの橋渡しのために使ってるくらいだから
結構まともに動くんじゃないかとは思ってる。
2017/10/23(月) 23:08:38.91ID:Y0tE+5bm
おまんらの大好き ぷ〜えちピーーブリブリッ でも使えばええじゃろw
96デフォルトの名無しさん
2017/10/23(月) 23:35:53.28ID:b+23gIO2 みんなサンクス。
Goは学習コスト低いらしいから後追いでもなんとかなりそうだし、とりあえずrustで書いてみることにするわ
一刻も早くc++ が絶滅する事を祈る
Goは学習コスト低いらしいから後追いでもなんとかなりそうだし、とりあえずrustで書いてみることにするわ
一刻も早くc++ が絶滅する事を祈る
2017/10/24(火) 00:05:09.11ID:9ZgmGLcB
TypeScriptとGoを交互に触ってるけど
やっぱりnull安全な言語とそうじゃない言語の差が際立つな。
Goのほうは早速null pointerアクセスで落ちる。
やっぱりnull安全な言語とそうじゃない言語の差が際立つな。
Goのほうは早速null pointerアクセスで落ちる。
2017/10/24(火) 00:39:57.10ID:7j3gEWSq
c++が絶滅したら今c++で書かれてる様々なコードベースが色んな言語に分裂するんだぜ
バベルの塔
バベルの塔
2017/10/24(火) 00:51:24.05ID:MROfWTvM
バベルの塔を高くし過ぎたからしょうがないね
100デフォルトの名無しさん
2017/10/24(火) 01:31:49.56ID:KQRKQofh >>93
既存のまともに動いてるCコード移植しようとしてまともにコンパイルも通らなかった経験からまともな言語の水準に達してないといってるわけだが
少なくともRustでものが書けると信じこんでるお前よりはRust理解してるぞ
既存のまともに動いてるCコード移植しようとしてまともにコンパイルも通らなかった経験からまともな言語の水準に達してないといってるわけだが
少なくともRustでものが書けると信じこんでるお前よりはRust理解してるぞ
101デフォルトの名無しさん
2017/10/24(火) 02:18:45.70ID:EjQaHC6N102デフォルトの名無しさん
2017/10/24(火) 07:07:12.19ID:ZX4BnJ5l >>101
まずRustの木構造をちゃんと動くように書いてから言えよ
まずRustの木構造をちゃんと動くように書いてから言えよ
103デフォルトの名無しさん
2017/10/24(火) 08:36:29.96ID:uX1ymmQB rust で木構造云々言ってる奴って、コンパイラすら通せない rust コードしか書けない奴だろ。
Cで書いてあった平衡木のライブラリを rust に移植したけど、
> それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
こんなん普通に出来るぞ。
Option<Node> に get_or_insert() するだけ。
かなり苦労したのは木の回転だけど、それでも rust 用に頭を使ったら、
take() して mem::swap, mem::swap, mem::swap, そして代入の 5 行で終わり。
全体を通して余計なアロケーションなんて普通に無い。
rust は学習コスト結構高いけど、初歩の初歩で躓いた落ちこぼれ>>100,>>102 とかは何を言う権利も無いよ。
Cで書いてあった平衡木のライブラリを rust に移植したけど、
> それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
こんなん普通に出来るぞ。
Option<Node> に get_or_insert() するだけ。
かなり苦労したのは木の回転だけど、それでも rust 用に頭を使ったら、
take() して mem::swap, mem::swap, mem::swap, そして代入の 5 行で終わり。
全体を通して余計なアロケーションなんて普通に無い。
rust は学習コスト結構高いけど、初歩の初歩で躓いた落ちこぼれ>>100,>>102 とかは何を言う権利も無いよ。
104デフォルトの名無しさん
2017/10/24(火) 10:27:36.72ID:rYGI+fQg Cのコードを示せないrustアンチは糞ゴミだけど、動くコードを示していない>>103も何も言えていない
105デフォルトの名無しさん
2017/10/24(火) 11:02:52.32ID:pkngrV2F 自分の頭を撃ち抜くCのプログラム書いても運良く助かってる人は
Rustのコンパイル通せなくなるよね
Rustのコンパイル通せなくなるよね
106デフォルトの名無しさん
2017/10/24(火) 11:29:48.61ID:Bfcpp5kd そういう、Rustのコンパイルが通らなければ危険なコードって決めつけるRust信者本当にうぜえ
Rustが言語として表現できる範囲が狭いのをごまかすための方便でしかないのに
Rustが言語として表現できる範囲が狭いのをごまかすための方便でしかないのに
107デフォルトの名無しさん
2017/10/24(火) 11:31:23.83ID:9ZgmGLcB TypeScriptは本家のplaygroundを触るだけで凄さが分かるんだけど
https://www.typescriptlang.org/play/
rustってそういうのある?ちょっと試すとかできる?
https://www.typescriptlang.org/play/
rustってそういうのある?ちょっと試すとかできる?
108デフォルトの名無しさん
2017/10/24(火) 11:33:53.63ID:Pu0WJP1A109デフォルトの名無しさん
2017/10/24(火) 13:43:56.97ID:wa8jpGkt >>107
ググるとかしない人?単にTypeScript宣伝したいだけ?
https://play.rust-lang.org/
もとよりゆるふわTypeScript使いがRustのコンパイルを通せるとも思えないので端から試す気ゼロだろうけど…
ググるとかしない人?単にTypeScript宣伝したいだけ?
https://play.rust-lang.org/
もとよりゆるふわTypeScript使いがRustのコンパイルを通せるとも思えないので端から試す気ゼロだろうけど…
110デフォルトの名無しさん
2017/10/24(火) 13:56:01.66ID:Bfcpp5kd 選ばれた人しかコンパイラ通せない言語とかそれプログラミング言語って言えないよね
111デフォルトの名無しさん
2017/10/24(火) 14:30:25.93ID:9ZgmGLcB112デフォルトの名無しさん
2017/10/24(火) 16:07:36.55ID:0CxPdYg4 AltJSであるtsとRustのブラウザ上で動くplaygroundの機能差を語りたかったの?マジで?
Rustサゲしてる人はこの程度ってレッテル貼っていいの?
Rustサゲしてる人はこの程度ってレッテル貼っていいの?
113デフォルトの名無しさん
2017/10/24(火) 16:17:29.04ID:VubGQCWP 単にプロダクト開発のスキルの違いだな
MSの開発環境チームのメンバーはHelloWorldの代わりにインテリセンス実装するんだろう
MSの開発環境チームのメンバーはHelloWorldの代わりにインテリセンス実装するんだろう
114デフォルトの名無しさん
2017/10/24(火) 16:23:54.68ID:rmRTTRfd115デフォルトの名無しさん
2017/10/24(火) 18:42:18.67ID:bbIPnu9e なぜrustの対抗馬にTypeScriptが挙がるのかまるで理解できない
用途が全然違うだろ……
用途が全然違うだろ……
116デフォルトの名無しさん
2017/10/24(火) 19:07:54.15ID:x0LH18ak WebAssemblyが期待されてるから、あながち間違いでもない
117デフォルトの名無しさん
2017/10/24(火) 21:40:46.56ID:eZrIsy4p >>113
ほんとMSってそういう所は笑えるくらいすごいよな
Rust開発者たちも見習ってほしい
一応rustもコード補完にrlsとかいうヤツあるけどなんかまだいまいちなんだよな。
vscodeにrust(rls)っていうエクテンション入れて使ってるんだけど、
クロージャ書いてるときは補完が効かないのは俺だけ?
あとlint?(エラー・警告を赤・緑の下線で表示してくれるやつ)が
時々なんの前触れもなく急に無反応になるんだけどそれも俺だけ?
ほんとMSってそういう所は笑えるくらいすごいよな
Rust開発者たちも見習ってほしい
一応rustもコード補完にrlsとかいうヤツあるけどなんかまだいまいちなんだよな。
vscodeにrust(rls)っていうエクテンション入れて使ってるんだけど、
クロージャ書いてるときは補完が効かないのは俺だけ?
あとlint?(エラー・警告を赤・緑の下線で表示してくれるやつ)が
時々なんの前触れもなく急に無反応になるんだけどそれも俺だけ?
118デフォルトの名無しさん
2017/10/24(火) 22:14:01.00ID:FaGN7Q1b 少人数のMS社員が片手間でVSCode作ってみたら一瞬で天下獲れちゃいましたというチート集団
MSがRust推せば余裕でGo潰してベターC++の定番を奪えるだろうな
MSがRust推せば余裕でGo潰してベターC++の定番を奪えるだろうな
119デフォルトの名無しさん
2017/10/24(火) 22:51:21.66ID:z3aqO0G+ 片手間ってことはないし、エディタ作成なんてのは人数増やせばいいものでもない。
まあチート軍団ってのは確かだけど。
しかし Rust とか c++ みたいに教条主義的な言語ってやっぱ信者が湧くね。
わかりやすくていいとは思うけど。
まあチート軍団ってのは確かだけど。
しかし Rust とか c++ みたいに教条主義的な言語ってやっぱ信者が湧くね。
わかりやすくていいとは思うけど。
120デフォルトの名無しさん
2017/10/24(火) 23:14:23.65ID:MOiTAdLh 片手間とか余裕とか、良い子は絶対に真似してはいけない情報ばっかり教えるんだよな
そんなところに信者を集めたら怠け者の集団ができそうだ
そんなところに信者を集めたら怠け者の集団ができそうだ
121デフォルトの名無しさん
2017/10/25(水) 00:51:09.03ID:KYsAJ7k0 >>36じゃないけど、雑に平衡木(AA木)Cで実装してみた。
つってもWikipediaのまるコピだが。
#include <stdio.h>
#include <stdlib.h>
typedef struct tree {
int value;
struct tree* left;
struct tree* right;
int level;
} tree_t;
int level(tree_t* t) {
if (t == NULL) {
return 0;
}
return t->level;
}
tree_t* leftEnd(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else {
return leftEnd(t->left);
}
}
(続く)
つってもWikipediaのまるコピだが。
#include <stdio.h>
#include <stdlib.h>
typedef struct tree {
int value;
struct tree* left;
struct tree* right;
int level;
} tree_t;
int level(tree_t* t) {
if (t == NULL) {
return 0;
}
return t->level;
}
tree_t* leftEnd(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else {
return leftEnd(t->left);
}
}
(続く)
122デフォルトの名無しさん
2017/10/25(水) 00:51:31.44ID:KYsAJ7k0 tree_t* rightEnd(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else {
return rightEnd(t->right);
}
}
tree_t* skew(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else if (t->left->level != t->level) {
return t;
}
tree_t* l = t->left;
t->left = l->right;
l->right = t;
return l;
}
(まだ続く)
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else {
return rightEnd(t->right);
}
}
tree_t* skew(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->left == NULL) {
return t;
} else if (t->left->level != t->level) {
return t;
}
tree_t* l = t->left;
t->left = l->right;
l->right = t;
return l;
}
(まだ続く)
123デフォルトの名無しさん
2017/10/25(水) 00:52:33.16ID:KYsAJ7k0 tree_t* split(tree_t* t) {
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else if (t->right->right == NULL) {
return t;
} else if (t->level != t->right->right->level) {
return t;
}
tree_t* r = t->right;
t->right = r->left;
r->left = t;
r->level += 1;
return r;
}
(続く)
if (t == NULL) {
return t;
} else if (t->right == NULL) {
return t;
} else if (t->right->right == NULL) {
return t;
} else if (t->level != t->right->right->level) {
return t;
}
tree_t* r = t->right;
t->right = r->left;
r->left = t;
r->level += 1;
return r;
}
(続く)
124デフォルトの名無しさん
2017/10/25(水) 00:52:56.15ID:KYsAJ7k0 tree_t* decreaseLevel(tree_t* t) {
if (t == NULL) {
return t;
}
int ll = level(t->left);
int rl = level(t->right);
int expectedLv;
if (ll < rl) {
expectedLv = ll + 1;
} else {
expectedLv = rl + 1;
}
if (expectedLv < t->level) {
t->level = expectedLv;
if (t->right != NULL) {
if (expectedLv < t->right->level) {
t->right->level = expectedLv;
}
}
}
return t;
}
if (t == NULL) {
return t;
}
int ll = level(t->left);
int rl = level(t->right);
int expectedLv;
if (ll < rl) {
expectedLv = ll + 1;
} else {
expectedLv = rl + 1;
}
if (expectedLv < t->level) {
t->level = expectedLv;
if (t->right != NULL) {
if (expectedLv < t->right->level) {
t->right->level = expectedLv;
}
}
}
return t;
}
125デフォルトの名無しさん
2017/10/25(水) 00:53:17.67ID:KYsAJ7k0 tree_t* insertTree(tree_t* t, int v) {
if (t == NULL) {
t = malloc(sizeof(tree_t));
t->value = v;
t->left = NULL;
t->right = NULL;
t->level = 1;
} else if (v > t->value) {
t->right = insertTree(t->right, v);
} else {
t->left = insertTree(t->left, v);
}
t = skew(t);
t = split(t);
return t;
}
肝心の関数まで遠いなほんと
if (t == NULL) {
t = malloc(sizeof(tree_t));
t->value = v;
t->left = NULL;
t->right = NULL;
t->level = 1;
} else if (v > t->value) {
t->right = insertTree(t->right, v);
} else {
t->left = insertTree(t->left, v);
}
t = skew(t);
t = split(t);
return t;
}
肝心の関数まで遠いなほんと
126デフォルトの名無しさん
2017/10/25(水) 00:55:17.25ID:KYsAJ7k0 tree_t* removeTree(tree_t* t, int v) {
if (t == NULL) { return t; }
else if (v == t->value) {
if (t->left == NULL && t->right == NULL) {
free(t);
return NULL;
} else if (t->left == NULL) {
tree_t* e = leftEnd(t->right);
int succ = e->value;
t->right = removeTree(t->right, succ);
t->value = succ;
} else {
tree_t* e = rightEnd(t->left);
int pred = e->value;
t->left = removeTree(t->left, pred);
t->value = pred;
}
} else if (v > t->value) { t->right = removeTree(t->right, v); }
else { t->left = removeTree(t->left, v); }
t = decreaseLevel(t);
t = skew(t);
t->right = skew(t->right);
if (t->right != NULL) {
t->right->right = skew(t->right->right);
}
t = split(t);
t->right = split(t->right);
return t;
}
おしまい。 まじこんなクソコードに何レスもついやしてすまん。
if (t == NULL) { return t; }
else if (v == t->value) {
if (t->left == NULL && t->right == NULL) {
free(t);
return NULL;
} else if (t->left == NULL) {
tree_t* e = leftEnd(t->right);
int succ = e->value;
t->right = removeTree(t->right, succ);
t->value = succ;
} else {
tree_t* e = rightEnd(t->left);
int pred = e->value;
t->left = removeTree(t->left, pred);
t->value = pred;
}
} else if (v > t->value) { t->right = removeTree(t->right, v); }
else { t->left = removeTree(t->left, v); }
t = decreaseLevel(t);
t = skew(t);
t->right = skew(t->right);
if (t->right != NULL) {
t->right->right = skew(t->right->right);
}
t = split(t);
t->right = split(t->right);
return t;
}
おしまい。 まじこんなクソコードに何レスもついやしてすまん。
127デフォルトの名無しさん
2017/10/25(水) 00:56:55.22ID:KYsAJ7k0 改めて書いてみて思ったが、平衡木って平衡保つための操作がポインタのつけかえ多くて
確かにRustにはキツそうだなとか思ったり
データコピーなし縛りで実装するのはRust歴1週間の自分には無理そうだ
確かにRustにはキツそうだなとか思ったり
データコピーなし縛りで実装するのはRust歴1週間の自分には無理そうだ
128デフォルトの名無しさん
2017/10/25(水) 01:27:50.62ID:egHPItlD Rust 的にはそんなに派手に持ち主変えるな、もしくはコピーを使えって感覚なんだろう。
そういうのは上のレイヤーだったら正しいと思うけど、アルゴリズムなコードの場合は
ちと厳しいかもしれん。
付け替えが頻繁に発生する構造の場合は
int parent[]; int right[]; int left[];
みたいな配列実装しろてな記事は見た事なるな。
直感的ではないけど速度は出るし、まあ慣れてる奴からすればどっちも一緒といえば一緒かな。
そういうのは上のレイヤーだったら正しいと思うけど、アルゴリズムなコードの場合は
ちと厳しいかもしれん。
付け替えが頻繁に発生する構造の場合は
int parent[]; int right[]; int left[];
みたいな配列実装しろてな記事は見た事なるな。
直感的ではないけど速度は出るし、まあ慣れてる奴からすればどっちも一緒といえば一緒かな。
129デフォルトの名無しさん
2017/10/25(水) 01:53:05.61ID:KYsAJ7k0 そういう、どうしても生ポインタごそごそつけかえる必要がある基幹アルゴリズムは、unsafeでくるんでやれって感じなのかね
実際この平衡木の実体が複数スレッドから独立に操作されるとか考えると割と困る
実際この平衡木の実体が複数スレッドから独立に操作されるとか考えると割と困る
130デフォルトの名無しさん
2017/10/25(水) 06:54:35.09ID:2hh4Hzpf gitみたいに、古いデータを消去することなく
しかも変更のない部分はいちいちコピーしないアルゴリズムを考えるんだ
そうすれば古い方のデータに別スレッドから安全にアクセスできるよ
しかも変更のない部分はいちいちコピーしないアルゴリズムを考えるんだ
そうすれば古い方のデータに別スレッドから安全にアクセスできるよ
131デフォルトの名無しさん
2017/10/25(水) 10:38:32.59ID:1aquIA8S 結局たかが赤黒木すらRustでは書けないって認識でいいの?
ほんとプログラミング言語名乗るなよ
ほんとプログラミング言語名乗るなよ
132デフォルトの名無しさん
2017/10/25(水) 10:59:08.02ID:2hh4Hzpf133デフォルトの名無しさん
2017/10/25(水) 11:14:21.26ID:j3LwAfcI Rustの問題は後発のくせにIDE連携が弱すぎる。
KotlinとかSwiftとか後発の言語は大概IDEと一緒に提供してるから
最初から補完がきっちり効く。
Goも昔はイマイチだったけど改善してるから許せる。
TypeScriptは言語そのものにIDE連携のための機能をたっぷり盛り込んでいるから
見習ってほしいって話。
初学者程IDE連携が必要だからな。言語仕様が優れてていても
ツールとして使い勝手が良くなきゃ使わんよ。
それにRustの立ち位置って
OS開発とブラウザ開発くらいしかメリットが思い浮かばんのだけども
CLIならGoだし
WebならPHPとかRubyとかGoとか乱立状態だし
WEBのクライアントサイドならTypeScriptだし
スマホならKotlinかSwiftかObjC
このどこにRustが入り込むの?
KotlinとかSwiftとか後発の言語は大概IDEと一緒に提供してるから
最初から補完がきっちり効く。
Goも昔はイマイチだったけど改善してるから許せる。
TypeScriptは言語そのものにIDE連携のための機能をたっぷり盛り込んでいるから
見習ってほしいって話。
初学者程IDE連携が必要だからな。言語仕様が優れてていても
ツールとして使い勝手が良くなきゃ使わんよ。
それにRustの立ち位置って
OS開発とブラウザ開発くらいしかメリットが思い浮かばんのだけども
CLIならGoだし
WebならPHPとかRubyとかGoとか乱立状態だし
WEBのクライアントサイドならTypeScriptだし
スマホならKotlinかSwiftかObjC
このどこにRustが入り込むの?
134デフォルトの名無しさん
2017/10/25(水) 11:47:25.56ID:2hh4Hzpf そもそもC++があまり成功してないから改善するためにRustがある
C/C++と合計して考えるとJavaより上だけど合計しなければC++は成功してないよ
C/C++と合計して考えるとJavaより上だけど合計しなければC++は成功してないよ
135デフォルトの名無しさん
2017/10/25(水) 12:31:23.13ID:L5aebztM C++が成功してないwwwwwwwwwww
どこの平行宇宙ですかwwwwwwwwwwwwwwwww
どこの平行宇宙ですかwwwwwwwwwwwwwwwww
136デフォルトの名無しさん
2017/10/25(水) 13:46:26.44ID:egHPItlD まあ c++ がうまくいってればこんなに言語がたくさんできることはなかっただろうね。
c++ の存在意義は今や高級な機能をどれだけランタイム速度落とさずに入れられるのかの
実験場って位置づけかな。
c++ の存在意義は今や高級な機能をどれだけランタイム速度落とさずに入れられるのかの
実験場って位置づけかな。
137デフォルトの名無しさん
2017/10/25(水) 13:55:53.69ID:L5aebztM C++は完璧な言語だとか口が割けても言えないのは間違いないが、Rustなんて言語ですらない汚物使うくらいならC++使うわなあ
138デフォルトの名無しさん
2017/10/25(水) 15:45:07.57ID:+h/lSeC6 ID:KYsAJ7k0のコードのRust版まだー?
139デフォルトの名無しさん
2017/10/25(水) 16:40:52.54ID:GfXNw50M >>133
rlsあるし十分やん
rlsあるし十分やん
140あ
2017/10/25(水) 18:10:38.69ID:Wj9s3Y5p TSは手段と目的がたまに入れ替わるのが見てるとちょっもモヤモヤするな。
C#が最近もう一度好きになってきた。
C#が最近もう一度好きになってきた。
141デフォルトの名無しさん
2017/10/25(水) 19:10:42.88ID:ajBcpsg9 >>138
まあまあ今ごろコンパイラに怒られてる頃だしもうちょっと待ってやろうぜwwwwww
まあまあ今ごろコンパイラに怒られてる頃だしもうちょっと待ってやろうぜwwwwww
142デフォルトの名無しさん
2017/10/25(水) 20:35:19.01ID:rCcyDoqV rustスレよりもりあがっとるやんここ
143デフォルトの名無しさん
2017/10/25(水) 20:59:03.30ID:EAW9qNH5 cに名前空間とラムダとattribute((cleanup))が入るだけでもだいぶ助かるのに。
なんでcの規格のバージョンアップは遅いんだ?
c++みたく3年毎にしてくれたらいいのに。
なんでcの規格のバージョンアップは遅いんだ?
c++みたく3年毎にしてくれたらいいのに。
144デフォルトの名無しさん
2017/10/25(水) 21:12:25.50ID:7dSKsD7g145デフォルトの名無しさん
2017/10/25(水) 22:58:44.78ID:egHPItlD >>143
C++みたく闇鍋状態にしたくないからだろ。
C++みたく闇鍋状態にしたくないからだろ。
146デフォルトの名無しさん
2017/10/25(水) 23:13:35.98ID:GfXNw50M モジラが2ch見てるわけねーだろ
糖質かよ
糖質かよ
147デフォルトの名無しさん
2017/10/25(水) 23:16:03.33ID:j3LwAfcI rustをそこまで毛嫌いする必要もないと思うけどな
rustのメモリオーナーシップモデルとかコードの改善に貢献するという話もあるし
ちょっと気にはなってる。
rustのメモリオーナーシップモデルとかコードの改善に貢献するという話もあるし
ちょっと気にはなってる。
148デフォルトの名無しさん
2017/10/26(木) 00:20:17.07ID:9syp6YaG rustアンチって同一人物だろ
コンパイル通らなくてイライラしてるんだね^^
コテ付けて、どうぞ
コンパイル通らなくてイライラしてるんだね^^
コテ付けて、どうぞ
149デフォルトの名無しさん
2017/10/26(木) 00:21:04.60ID:T1ShqX6y rustは何がそんなに駄目なんだろ
そこ迄言われると学びたくなってくる
そこ迄言われると学びたくなってくる
150デフォルトの名無しさん
2017/10/26(木) 00:26:09.28ID:9syp6YaG >>149
他の言語にはない所有権システムが原因で学習コストが高い
使いこなせば強力だけどとても難しい機能
それで使いこなせてない人が「コンパイル通らない」って発狂してる
例えると、初めてHaskell言語触る人が「変数に代入出来ないから何も出来ない!Haskellは欠陥言語!」って言ってるような物
他の言語にはない所有権システムが原因で学習コストが高い
使いこなせば強力だけどとても難しい機能
それで使いこなせてない人が「コンパイル通らない」って発狂してる
例えると、初めてHaskell言語触る人が「変数に代入出来ないから何も出来ない!Haskellは欠陥言語!」って言ってるような物
151デフォルトの名無しさん
2017/10/26(木) 00:31:32.93ID:zsf3GtyN rustのコンパイルを通せない低級汚グラマーが
嫉妬で腐してるだけだろ
腐ってるのはテメーの言語センスだろってね
嫉妬で腐してるだけだろ
腐ってるのはテメーの言語センスだろってね
152デフォルトの名無しさん
2017/10/26(木) 00:32:53.75ID:9syp6YaG Haskell言語って何だ
夜は誤字増えるから寝よう
夜は誤字増えるから寝よう
153デフォルトの名無しさん
2017/10/26(木) 00:50:43.34ID:T1ShqX6y154デフォルトの名無しさん
2017/10/26(木) 03:24:21.96ID:EtDTWIur まあ御託はいいからデータコピーなしの平衡二分木をRustで書いてからにしてくれよ
Cのコードは出たぞ
Cのコードは出たぞ
155デフォルトの名無しさん
2017/10/26(木) 05:10:18.37ID:IaYxMsud Haskellなら副作用だらけのコードは断固拒否するだけだが
Rustで副作用を拒否すると延々と粘着されそう
ついでにPythonは静的型を拒否するだけだが
Goはジェネリクスがない件で永久にいじめられるんだろう
Rustで副作用を拒否すると延々と粘着されそう
ついでにPythonは静的型を拒否するだけだが
Goはジェネリクスがない件で永久にいじめられるんだろう
156デフォルトの名無しさん
2017/10/26(木) 07:04:11.52ID:hnEjL22C Haskellは速さは捨てて副作用を無くすことに全振りしてるけど、Rustはそうではないからな
157デフォルトの名無しさん
2017/10/26(木) 09:12:10.17ID:ZXFAdbhr Rustはunsafeつかえば(ffiしたほうがはやいだろうが)できないことはないと思ってるんだが違うのかな?
158デフォルトの名無しさん
2017/10/26(木) 09:59:20.18ID:tFGGFqQC Goはいつものgoogleのフカしで持ち上げられてる感がプンプンするぜ。
単なる昔ながらのVM使ってない静的型付け言語を
システムプログラミングとかいうバズワードを作って
スクリプトしか描いたことない奴らにいかにも新しいものであるかのように錯覚させてる。
単なる昔ながらのVM使ってない静的型付け言語を
システムプログラミングとかいうバズワードを作って
スクリプトしか描いたことない奴らにいかにも新しいものであるかのように錯覚させてる。
159デフォルトの名無しさん
2017/10/26(木) 10:42:13.95ID:1t2EMvpb160デフォルトの名無しさん
2017/10/26(木) 10:47:47.28ID:Y5WhyQQy 最近は新しいOSSもGoで書かれてるの多くてうんざりする
再来年辺りには「Goは終わった」とか言われだしてScalaと同じ道を辿るのわかりきってるのにWeb系の馬鹿共は何度同じ間違いを繰り返すのか
再来年辺りには「Goは終わった」とか言われだしてScalaと同じ道を辿るのわかりきってるのにWeb系の馬鹿共は何度同じ間違いを繰り返すのか
161デフォルトの名無しさん
2017/10/26(木) 11:10:35.34ID:8qIiNs+I 個人的にはDが一番純粋なc++ 後継って感じで頑張って欲しいんだけどなぁ
まったく流行る兆しがない……
別に新しい言語を求めてるんじゃないんだ。c++ からc互換を取り除いて標準ライブラリと文法見直してくれるだけでいいんだ
まったく流行る兆しがない……
別に新しい言語を求めてるんじゃないんだ。c++ からc互換を取り除いて標準ライブラリと文法見直してくれるだけでいいんだ
162デフォルトの名無しさん
2017/10/26(木) 11:45:28.73ID:xVKEuI/f163デフォルトの名無しさん
2017/10/26(木) 11:47:37.13ID:xVKEuI/f164デフォルトの名無しさん
2017/10/26(木) 11:54:33.47ID:Y5WhyQQy165デフォルトの名無しさん
2017/10/26(木) 12:17:09.48ID:xVKEuI/f >>164
Scalaが廃れた理由は、言語のバージョンアップ戦略がクソofクソだったってのと
コンパイル回りの性能が悪いっていう言語自体の特徴、
それから置き換えを狙っていたはずのJavaの進化に取り残されたことっていう色々と複合的な原因がある
Goがその後追いをするかって言われると、
少なくとも書きやすさの面でC++がGoに勝てる目は向こう5年はないだろうし、
バージョン戦略は少なくとも1系の間は下位互換性崩さんだろうしな
Scalaが廃れた理由は、言語のバージョンアップ戦略がクソofクソだったってのと
コンパイル回りの性能が悪いっていう言語自体の特徴、
それから置き換えを狙っていたはずのJavaの進化に取り残されたことっていう色々と複合的な原因がある
Goがその後追いをするかって言われると、
少なくとも書きやすさの面でC++がGoに勝てる目は向こう5年はないだろうし、
バージョン戦略は少なくとも1系の間は下位互換性崩さんだろうしな
166デフォルトの名無しさん
2017/10/26(木) 12:19:58.53ID:xVKEuI/f 不安があるとするなら、なんか1系と完全に互換性なくすとか言われてるGo2.0なんだよな
この辺の方針次第では、おっしゃる通り再来年にはゴミの山になってる可能性が無視できない
Swiftがクソバージョンアップでもなんとか成功してるのはプラットフォーム囲い込んでるのがでかい
この辺の方針次第では、おっしゃる通り再来年にはゴミの山になってる可能性が無視できない
Swiftがクソバージョンアップでもなんとか成功してるのはプラットフォーム囲い込んでるのがでかい
167デフォルトの名無しさん
2017/10/26(木) 12:27:59.75ID:P+s05bng AA木のRust版の移植を練習がてらやったぞ。
みんなunsafeが必要とか言ってるが、別に必要なくない?
ポインタ演算もサイズの違う型の変換もしてるわけじゃないから生ポインタ扱う必要ないと思うんだけど。
だた、マジで愚直に移植したから全くRustっぽくはないし、
俺がバカなだけで無駄なオーバーヘッドが気づかんうちにいっぱい発生してるかもだから指摘よろしく。
一応何回か適当にinsertとremoveして正しく動いてるとこまでは確認してる。
みんなunsafe使わないとダメ的なこと言ってるから正直これでいいのか全然自信がない。
みんなunsafeが必要とか言ってるが、別に必要なくない?
ポインタ演算もサイズの違う型の変換もしてるわけじゃないから生ポインタ扱う必要ないと思うんだけど。
だた、マジで愚直に移植したから全くRustっぽくはないし、
俺がバカなだけで無駄なオーバーヘッドが気づかんうちにいっぱい発生してるかもだから指摘よろしく。
一応何回か適当にinsertとremoveして正しく動いてるとこまでは確認してる。
みんなunsafe使わないとダメ的なこと言ってるから正直これでいいのか全然自信がない。
168デフォルトの名無しさん
2017/10/26(木) 12:28:38.79ID:P+s05bng #[derive(Debug)]
struct Tree {
value: i32,
left: Option<Box<Tree>>,
right: Option<Box<Tree>>,
level: isize,
}
fn level(root: &Option<Box<Tree>>) -> isize {
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
}
fn left_end(root: &Option<Box<Tree>>) -> &Option<Box<Tree>> {
if root.is_none() {
root
} else if root.as_ref().unwrap().left.is_none() {
root
} else {
left_end(&root.as_ref().unwrap().left)
}
}
(続く)
struct Tree {
value: i32,
left: Option<Box<Tree>>,
right: Option<Box<Tree>>,
level: isize,
}
fn level(root: &Option<Box<Tree>>) -> isize {
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
}
fn left_end(root: &Option<Box<Tree>>) -> &Option<Box<Tree>> {
if root.is_none() {
root
} else if root.as_ref().unwrap().left.is_none() {
root
} else {
left_end(&root.as_ref().unwrap().left)
}
}
(続く)
169デフォルトの名無しさん
2017/10/26(木) 12:29:34.82ID:P+s05bng fn right_end(root: &Option<Box<Tree>>) -> &Option<Box<Tree>> {
if root.is_none() {
root
} else if root.as_ref().unwrap().right.is_none() {
root
} else {
right_end(&root.as_ref().unwrap().right)
}
}
fn skew(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
} else if root.as_ref().unwrap().left.is_none() {
return root;
} else if root.as_ref().unwrap().left.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut left = root.as_mut().unwrap().left.take();
root.as_mut().unwrap().left = left.as_mut().unwrap().right.take();
left.as_mut().unwrap().right = root;
left
}
(まだ続く)
if root.is_none() {
root
} else if root.as_ref().unwrap().right.is_none() {
root
} else {
right_end(&root.as_ref().unwrap().right)
}
}
fn skew(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
} else if root.as_ref().unwrap().left.is_none() {
return root;
} else if root.as_ref().unwrap().left.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut left = root.as_mut().unwrap().left.take();
root.as_mut().unwrap().left = left.as_mut().unwrap().right.take();
left.as_mut().unwrap().right = root;
left
}
(まだ続く)
170デフォルトの名無しさん
2017/10/26(木) 12:30:37.02ID:P+s05bng fn split(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
} else if root.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut right = root.as_mut().unwrap().right.take();
root.as_mut().unwrap().right = right.as_mut().unwrap().left.take();
right.as_mut().unwrap().left = root;
right.as_mut().unwrap().level += 1;
right
}
if root.is_none() {
return root;
} else if root.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.is_none() {
return root;
} else if root.as_ref().unwrap().right.as_ref().unwrap().right.as_ref().unwrap().level != root.as_ref().unwrap().level {
return root;
}
let mut right = root.as_mut().unwrap().right.take();
root.as_mut().unwrap().right = right.as_mut().unwrap().left.take();
right.as_mut().unwrap().left = root;
right.as_mut().unwrap().level += 1;
right
}
171デフォルトの名無しさん
2017/10/26(木) 12:31:04.94ID:P+s05bng fn decrease_level(mut root: Option<Box<Tree>>) -> Option<Box<Tree>> {
if root.is_none() {
return root;
}
let left_level = level(&root.as_ref().unwrap().left);
let right_level = level(&root.as_ref().unwrap().right);
let mut expected_level = 0;
if left_level < right_level {
expected_level = left_level + 1
} else {
expected_level = right_level + 1
}
if expected_level < root.as_ref().unwrap().level {
root.as_mut().unwrap().level = expected_level;
if root.as_ref().unwrap().right.is_some() {
if expected_level < root.as_ref().unwrap().right.as_ref().unwrap().level {
root.as_mut().unwrap().right.as_mut().unwrap().level = expected_level;
}
}
}
root
}
if root.is_none() {
return root;
}
let left_level = level(&root.as_ref().unwrap().left);
let right_level = level(&root.as_ref().unwrap().right);
let mut expected_level = 0;
if left_level < right_level {
expected_level = left_level + 1
} else {
expected_level = right_level + 1
}
if expected_level < root.as_ref().unwrap().level {
root.as_mut().unwrap().level = expected_level;
if root.as_ref().unwrap().right.is_some() {
if expected_level < root.as_ref().unwrap().right.as_ref().unwrap().level {
root.as_mut().unwrap().right.as_mut().unwrap().level = expected_level;
}
}
}
root
}
172デフォルトの名無しさん
2017/10/26(木) 12:31:51.05ID:P+s05bng fn insert_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() {
root = Some(Box::new(Tree {
value: value,
left: None,
right: None,
level: 1, }));
} else if value > root.as_ref().unwrap().value {
root.as_mut().unwrap().right = insert_tree(root.as_mut().unwrap().right.take(), value);
} else {
root.as_mut().unwrap().left = insert_tree(root.as_mut().unwrap().left.take(), value);
}
root = skew(root);
root = split(root);
root
}
if root.is_none() {
root = Some(Box::new(Tree {
value: value,
left: None,
right: None,
level: 1, }));
} else if value > root.as_ref().unwrap().value {
root.as_mut().unwrap().right = insert_tree(root.as_mut().unwrap().right.take(), value);
} else {
root.as_mut().unwrap().left = insert_tree(root.as_mut().unwrap().left.take(), value);
}
root = skew(root);
root = split(root);
root
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化 過去10年間に使用のメールアドレスや電話番号等も [Hitzeschleier★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★3 [Hitzeschleier★]
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” [ぐれ★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎます」★2 [冬月記者★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 【悲報】ジャップってゼントラーディ人より好戦的な種族なんじゃね🥺 [616817505]
- 【高市速報】 防衛省公式X、このタイミングで日本の防衛兵器や攻撃ミサイルを動画で宣伝wwww [197015205]
- 【悲報】鈴木農水大臣、国民から「こいつひょっとしてアホなんじゃね?」と思われ始めてしまうwww [793117252]
- 【悲報】たぬかなが渡邊渚を壮絶バッシング 「グラビア出したあたりから臭いな~と思ってたが激臭になってたわ。中居は悪くない」 [455031798]
- 自閉症児の父親「中絶しておけば良かった。 家族が欲しかったのに、手に入れたのは人間たまごっち」 [777114754]
- 「ミニトマトがボウルに入ってるから使ったら残りはラップして輪ゴムしといてー」👉アスペ系旦那、とんでもない行動に出てしまう [242521385]
