17/10/19 17:56:35.46 EPSDvC75.net
そろそろSwiftとTypeScript入れときたかったので
3:デフォルトの名無しさん
17/10/19 19:23:30.17 33xh/nBB.net
5chってなんだよ
4:デフォルトの名無しさん
17/10/19 19:35:46.24 C3Fl3waR.net
2ちゃんねる、正式に「5ちゃんねる」に名称変更!色々あって5chが誕生!
URLリンク(www.yukawanet.com)
5:デフォルトの名無しさん
17/10/19 23:31:42.71 nu6ztsFr.net
TSは普通に現代だろ
生JSはもうやれない
6:デフォルトの名無しさん
17/10/19 23:43:07.41 1zFRkFBm.net
生JSもVSCodeによってコード補完がTypeScriptと比べてさほど遜色ないレベルにまで引き上げられたからなあ
結局MSが本気で開発環境を作ればどんな言語でもゴリ押しできることが証明されてしまった
7:デフォルトの名無しさん
17/10/20 00:38:29.46 2lESXdgM.net
次世代というか、2010年代の企業発の静的型付け言語でまとめてみた
まだ載ってないのだとNim Hack Julia Crystal辺りがいいのかな
8:デフォルトの名無しさん
17/10/20 01:01:22.11 eMg2A2/G.net
>>6
限定的な型補完のみだろ
静的チェックには絶対型が必要
9:デフォルトの名無しさん
17/10/20 01:56:31.26 Ka6W9rl7.net
>>6
JS含む動的言語は大抵ダックタイピングって時点で補完が効かないじゃん。
個人的には「ダックタイピングのほうがインターフェース書かなくて済むから
手軽で良い」って言ってる奴がマジで理解できん
補完できなきゃどのメソッド呼べるのかいちいちコードかドキュメント見に行かんとならんからむしろ面倒
10:デフォルトの名無しさん
17/10/20 02:15:40.71 yLtxI7rs.net
>>9
型が決まってれば動的言語だろうと補完できるでしょ
11:デフォルトの名無しさん
17/10/20 02:54:33.08 Ka6W9rl7.net
>>10
JSDocに型を書いてないコードとかあったら発狂したくならない?
仕事じゃ周りのアホどもが書いてくれないからよくにあるんだけど
12:デフォルトの名無しさん
17/10/20 03:57:09.23 YyMx7jsp.net
>>9
最初にコード補完をIDEに組み込んだのは動的言語
13:デフォルトの名無しさん
17/10/20 04:05:45.74 Ka6W9rl7.net
>>12
それは知らんかった
何て言語?
14:デフォルトの名無しさん
17/10/20 05:20:27.14 VprmOZRL.net
>>13
皆さんよくご存じのVBです。
15:デフォルトの名無しさん
17/10/20 06:44:15.18 dSzguJuu.net
>>14
バカいうんじゃないSmalltalkに決まっとるがな
16:デフォルトの名無しさん
17/10/20 06:50:33.12 VprmOZRL.net
>>15
URLリンク(en.wikipedia.org)
17:デフォルトの名無しさん
17/10/20 07:06:06.25 eMg2A2/G.net
>>9
ホンコレンゴ
18:デフォルトの名無しさん
17/10/20 11:11:11.05 P8/EFRxC.net
>>16
何を調べるにしてもウィキペ情報は参考程度に留めておいたほうがいいよ
ご多分に漏れずこの件に関しても間違っていてちょっとググっただけでも
少なくとも1980年代にはコンテキストを考慮した補完機能を有するAliceというPascalのIDEが出ていることがわかる
URLリンク(www.atarimagazines.com)
だから動的言語が初かの真偽はともかくVBがしかも1990年代にもなってから「最初」ということはあり得ない
19:デフォルトの名無しさん
17/10/20 13:06:03.49 6HQ5gdkc.net
動的か静的かよりも暗黙に型変換するのかしないのかのが重要。
20:デフォルトの名無しさん
17/10/20 14:49:05.79 RMJRt52l.net
typescriptの凄さってIDEの機能言語に組み込んだことだよな。
リファクタリングの機能を言語に用意してるから、
どのエディターでも使える。
21:デフォルトの名無しさん
17/10/20 14:53:55.28 yLtxI7rs.net
>>16
>>18
Wikipediaが間違ってるんじゃなくてお前らの読み方が間違ってるだけだろ
最初にコード補完をIDEに組み込んだのはVBなんて事どこにも書いてない
22:デフォルトの名無しさん
17/10/20 14:55:26.74 yLtxI7rs.net
>>11
JSDocとコード補完と何か関係あるの?
23:デフォルトの名無しさん
17/10/20 18:06:03.89 yevn4/qi.net
折角の補完機能ガン無視してVimで書いててすまん
Vimに補完つけると重いんだよな
24:デフォルトの名無しさん
17/10/20 18:12:51.51 UMfeFQLW.net
vimの補間が重い…?
25:デフォルトの名無しさん
17/10/20 18:49:47.42 yevn4/qi.net
Jedi-vimとか謎に重くならん?
あれ?そうでもない?
26:デフォルトの名無しさん
17/10/20 18:59:15.83 YvXWjlAq.net
>>20
MSは昔からやってるけどね
MSにとって目新しいのは、コンパイラ及びエディタをコード補完やリファクタリングに対応させるためのオープンなプロトコルを策定したこと
これほど早い段階でそのレベルにまで達するのはMSにしかできないこと
27:デフォルトの名無しさん
17/10/20 21:43:00.33 x/nMj/Ym.net
誰だよ未だにプログラミング言語未満のRustをスレタイにいれてるやつ
ハロワ以上のプログラムをことごとくコンパイル弾く欠陥品、言語としての体をなしていない
28:デフォルトの名無しさん
17/10/20 22:07:39.64 6WjQxFol.net
普通にrestでwebserverたててるが…
29:デフォルトの名無しさん
17/10/20 22:07:46.81 6WjQxFol.net
Rustね
30:デフォルトの名無しさん
17/10/20 22:29:29.77 dSzguJuu.net
名前間違う時点でろくすっぽ使ってないのバレバレ
31:デフォルトの名無しさん
17/10/20 22:33:08.26 6WjQxFol.net
晩酌してたのとRest APIと混ざったんだよ
めちゃめちゃ使ってるっちゅーの
32:デフォルトの名無しさん
17/10/20 23:15:48.68 KNQSc5p/.net
自動補完は正直うざいからオフにする
33:デフォルトの名無しさん
17/10/20 23:58:05.68 K0f4yEve.net
>>31
じゃあさくっと木構造実装してみてよ
34:デフォルトの名無しさん
17/10/21 00:09:44.49 WA0WypxL.net
>>33
ほい
enum Tree<T> {
Leaf(T),
Node(Box<Tree<T>>, Box<Tree<T>>),
}
35:デフォルトの名無しさん
17/10/21 00:44:54.19 DO/riCmW.net
まあそれが一番素直な実装だね。
問題は循環するかもなグラフの場合。持ち主が曖昧になるから。
36:デフォルトの名無しさん
17/10/21 01:18:33.12 EatcavDb.net
>>34
データ構造定義だけ書かれてもな
それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
できるもんなら
37:デフォルトの名無しさん
17/10/21 02:15:10.99 VqKLKVGY.net
問題はTypeScriptに対して競合としてflowがあることだよな。
Reactを使うのにTypeScript使っててすごく便利なんだけどReactがflow押ししそうで怖い。
38:デフォルトの名無しさん
17/10/21 03:03:32.99 WA0WypxL.net
>>36
まずはCかC++でお前の言う無駄なアロケーションのないappendとdelete付きの木構造とやらを書け。
そしたらそれをRustで書き直してやるよ。
39:デフォルトの名無しさん
17/10/21 05:46:24.53 VmqPmNn/.net
>>37
Web系に言語は作れないってのはさすがにCoffeeやDartで世間に理解されたと信じたい
40:デフォルトの名無しさん
17/10/21 10:28:21.87 wl/wLs0J.net
>>20
IDEの機能を言語に組み込むぐらい、LISPもSmalltalkもとっくの昔にやってるじゃん。
41:デフォルトの名無しさん
17/10/21 10:29:25.77 wl/wLs0J.net
おまえらが次世代と呼んでいる機能のほとんどが60年代の再発明だなw
42:デフォルトの名無しさん
17/10/21 11:01:34.95 sh0YDQHh.net
>>37
うちの案件フロウ使ってるわ
最初の技術選定でクソ馬鹿野郎が生JS選択したせい
しかも途中で辞職、いやいなくなってくれてせいせいしたが
んで、どうしようもないから後付けでフロウ
クソみたいな生JSに後から挿入れられるのはメリットだわな
ライブラリの対応はゴミだけど
43:デフォルトの名無しさん
17/10/21 11:46:16.50 DO/riCmW.net
>>41
まあそういうところもあるけど、Rust なんかはだいぶ機能を整理した方かなとは思うよ。
実際に作って使ってみるとボローイングの解決しづらさがよくわかるってのはある。
理�
44:_と実践は繰り返してなんぼ。
45:デフォルトの名無しさん
17/10/21 12:04:58.67 SwYl7d2P.net
言語レベルのリファクタリングを備えたTypeScript 2.5がリリース
URLリンク(www.infoq.com)
46:デフォルトの名無しさん
17/10/21 13:02:01.91 VqKLKVGY.net
>>42
Typescriptも該当ディレクトリ内にXXXX.d.ts(XXXは生jsのファイル名)を置くだけで
型が付与できるけどな。しかも生jsの箇所をいじらずに。
どっちがいいかは何とも言えないが。
47:デフォルトの名無しさん
17/10/21 13:03:37.91 VqKLKVGY.net
jsというかTypeScriptを使ってるんだけど。async-awaitマジでいいわ
と思ったが例えばclassのコンストラクタをasync対応してくれたらな~って思うわ
初期化時に非同期関数使いたいと詰む。
48:デフォルトの名無しさん
17/10/21 13:38:53.78 ZiJpfJlj.net
>>46
c#でずいぶんお世話になってるから嬉しいわ
49:デフォルトの名無しさん
17/10/21 13:51:38.02 sh0YDQHh.net
>>45
ま?
50:デフォルトの名無しさん
17/10/21 14:20:00.52 SGUxbDYw.net
>>46
わざわざasyncのinitializeメソッド作るの馬鹿らしいよな、仕方ないんだけど
51:デフォルトの名無しさん
17/10/21 14:32:26.28 7p4/5GBE.net
>>46
constructor() {
(async () => {
await this.hogeAsync();
})();
}
インスタンス作成側ではawait newとかできないけど、分かってて使えば
今のとここれで特に問題ないわ。
52:デフォルトの名無しさん
17/10/21 18:32:34.18 VqKLKVGY.net
>>50
非同期関数がそのクラスの生成タイミングで終わる保証無いだろ。
大概ストレージとかネットワークアクセスしてるわけだし。
それで事足りてんの?マジで?
53:あ
17/10/21 18:53:01.32 RC5niii9.net
>>9
使ってみたらわかるが、ちょっと頭おかしいレベルで補完効くぞ。
関数の型が、「Date | "不正日付" | "演算不能"」と、stringの中身まできちんと出してきたときにはびっくりした。
54:デフォルトの名無しさん
17/10/21 19:06:53.76 guA6ZzKE.net
コンストラクタ非同期にしたい時は>>51の言ってる問題があるから、値をセットするだけのprivate constructor準備してpublicは別に公開したほうがいい
例↓
class Hoge{
private constructor(public foo:string){}
async create():Promise<Hoge>{
const foo=await asyncFunction();
return new Hoge(foo);
}
}
55:デフォルトの名無しさん
17/10/21 21:09:59.24 sahtjmhq.net
>>41
lisper召喚したいのか?
56:デフォルトの名無しさん
17/10/21 22:04:06.57 HyKk2sND.net
Lisperとかもしいるなら是非来て欲しい
57:デフォルトの名無しさん
17/10/21 22:07:10.31 1X5jAkAY.net
LisperはSmalltalker以上にめんどくさいぞやめとけ
58:デフォルトの名無しさん
17/10/21 23:03:18.92 P/rJp3kV.net
>>43
> 理論と実践は繰り返してなんぼ。
同意
59:デフォルトの名無しさん
17/10/22 01:10:34.37 yUcYB3x3.net
めんどくささを恐れてはならぬ。
60:デフォルトの名無しさん
17/10/22 01:34:14.15 jKdYjftV.net
その通り
テキストエディタで打ったコードにこそ温もりがある
補完や静的解析なんて邪道
日本人ならPHPを使うべき
61:デフォルトの名無しさん
17/10/22 01:56:35.88 bmxwOMJ1.net
>>59
日本人ならとか言うんならRuby使えよ。。。
何でPHPなんだよアホちゃうかと。。。
62:デフォルトの名無しさん
17/10/22 02:06:21.14 ZsHOZNag.net
HSPだろ。
63:デフォルトの名無しさん
17/10/22 02:11:19.39 IdeA6XVs.net
ひまわり ちゃうかな
64:デフォルトの名無しさん
17/10/22 05:30:54.86 MmMCQJb7.net
Elixirってダメなん?将来性ないの?
サーバーがCowboyとかいう変なやつになるからダメなのかな
65:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 09:43:14.05 jKdYjftV.net
>>60
偽装・不正・いい加減がモットーのジャップランド土人村にとって
PHPほど相性のいい言語はない
PHPは日本人なんだよ、わかるか?
66:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 11:54:18.65 r0jppfs8.net
>>52
それは裏でTypeScriptの型情報を再利用してる。
だから標準APIとか有名所は使える。でも自分でライブラリを作るととたんに効かなくなるぞ。
67:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 12:05:58.19 HAzBzhoi.net
>>52の内容なら型アノテーションに頼らずとも型推論だけでいけるだろう。
68:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 13:12:06.46 yUcYB3x3.net
>>63
将来性とかさ~自分で判断しろや。
それともここで将来性あるとか言われたらなんも考えずにその言語使っちゃうわけ?
将来メンテされなけりゃおれがやるくらいの気概をもって言語使ってほしいわ。
69:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 15:32:24.31 bmxwOMJ1.net
>>64
それはあくまで偏見の塊の君の個人的意見だろ。
そんなこと言い出したら
「日本人はもともと職人気質の人間が多いから
使いこなすのに職人レベルの技術が求められるC++と相性がいい。
だからC++こそ日本人のための言語だ。」
なんていう、今俺が適当に作ったトンデモ論法でも通っちまうだろうが。
70:あ
17/10/22 15:36:36.11 dq05v2c8.net
>>65
違うよ。自作関数の戻り値と、それが代入されてる変数のヒントに出る。
自分でライブラリ作ってもバッチリ出てくれるけど、doc書いといたら間違いは更にないな。
71:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 15:57:37.80 rLFHcAK9.net
>>63
Elixirいいよ
将来性はコミュニティの頑張り次第
Phoenixはよく出来てる
実質的にWebアプリに用途が限定されるだろうから
このスレでは人気ない
72:デフォルトの名無しさん
17/10/22 20:08:52.70 yoTgiwcF.net
>>68
いや、日本人はPHPでしょ
空気読んで面倒臭いことはナーナーにして
今が良ければそれでよし
当事者がたんまりお金盗って無事退職した後、
年単位越しでツケ払って大騒ぎ
PHPですか?いいえ、日本です
73:デフォルトの名無しさん
17/10/22 21:46:29.44 c7gPCMa+.net
日本の技術力ガーとか言ってたくせに
結局全部嘘ばかり
バカチョン以下やでホンマ
そりゃペチパーが闊歩しますわ
74:デフォルトの名無しさん
17/10/22 23:53:22.71 sz7LIs8a.net
ponyはまだまだマイナーだな
75:あ
17/10/23 01:37:49.26 ko03P2Yp.net
>>72
多分お前よりはまともなもの作ってるとおもうわ。
76:デフォルトの名無しさん
17/10/23 03:02:27.50 vIdD1XI1.net
haskellがやっと外れたなwスレタイ
77:デフォルトの名無しさん
17/10/23 03:18:43.18 7Pp5HgLl.net
PHp本当に速くなったからな
相変わらずポーリングも特殊操作でしかできないクソだけど
78:デフォルトの名無しさん
17/10/23 04:14:09.67 1oD0q36r.net
異常者の迷言「PHPは日本人」「日本人はPHP」
79:デフォルトの名無しさん
17/10/23 08:27:35.76 +M73J5jp.net
気に食わない奴でも合法なら許す
違法なら許さない
この優先順位を歪めるから無法地帯になるのだ
80:デフォルトの名無しさん
17/10/23 08:52:16.45 xr09IWoG.net
>>70
Elixirってrubyに強く影響受けてる言語なんだよな。
Phoenix触ってたらRailsの匂いを感じる。
でも今は動的言語は弱い気がする。Elixir + 型 が欲しい
TypeScriptが触ってて気持ちいいからサーバサイドもJSがいい気がする。
81:デフォルトの名無しさん
17/10/23 10:51:25.73 WMNCDJb0.net
Elixirの問題は込み入ったことやるとErlangに足突っ込まなきゃいけないことで
プロダクションコードに突っ込むには人材要求が高すぎること
82:デフォルトの名無しさん
17/10/23 14:31:56.92 f3vYk0Y4.net
結局ネットワーク系統のエラー処理は低レイヤーに突っ込んでいかないとどうにもならんよ。
抽象レイヤーでなんとかしたいって願望はわかるけどさ。
83:デフォルトの名無しさん
17/10/23 17:32:43.36 KBSkknSp.net
Elixir(というかBEAM=ErlangVM)の場合はプロセス復活のために型情報が必要だし
静的にしたからって型情報は省略できない
84:デフォルトの名無しさん
17/10/23 19:47:51.56 fT3gFD4f.net
C++を書きたくないんだが代替言語は今だとrustとdどっちがゆうぼ?
最近はnimと言うのが注目されてるとも聞いたが……
85:デフォルトの名無しさん
17/10/23 20:22:06.86 ANMjmVZt.net
誠に残念ながら今そのポジションはGoの一強
86:デフォルトの名無しさん
17/10/23 20:45:12.65 LSzHPC1F.net
Cよりスピード出るのはNimだけ!
87:デフォルトの名無しさん
17/10/23 20:50:25.75 Y0tE+5bm.net
ジャップランド土人村企業が詐欺のために求めているのはPHPだけ!
88:デフォルトの名無しさん
17/10/23 21:14:10.32 kb3Oh+Sb.net
どうかんかえてもRustだろ
89:デフォルトの名無しさん
17/10/23 21:25:58.19 xr09IWoG.net
>>84
Goも弱点が多い言語だけど初期の学習コストとか考えると
rustよりGoかな。
もちろんrustもいいんだけどc++並に学習コスト高そう感ある。
90:デフォルトの名無しさん
17/10/23 21:47:48.94 C8zrSpyb.net
Rustは言語と名乗れる水準に達してないのでGo
深くシステムに触るのには向いてないがな
91:デフォルトの名無しさん
17/10/23 22:05:15.62 fT3gFD4f.net
Goなのか……
他言語が純粋な次世代Cを目指してる中、Goは微妙に設計思想が違うイメージだからあえて外したんだが……やっぱりgoogle正義なのか
92:デフォルトの名無しさん
17/10/23 22:05:44.54 f3vYk0Y4.net
>>83
c++ で何を書くつもりなの?
無理に c++ で書かなきゃならんものって最近は減ってると思うけど。
93:デフォルトの名無しさん
17/10/23 22:17:08.30 fT3gFD4f.net
>>91
c++ で書かれたオープンソースプログラムのdllプラグイン
悲しいことにc++ 選ぶ理由なんて結局既存ソースがc++ だからの理由に尽きる……
94:デフォルトの名無しさん
17/10/23 22:32:24.88 QdR3J7Zg.net
>>90
goとか言ってる連中の言うこと本気にするなよ。
goは数年周期でバズってるだけでC++の代替なら
Dかrustって考えは間違ってないしrust理解できないやつが
こことrustスレで騒いでるだけだぞ。
Dはもう流行らんだろうが、rustは学習コストより標準ライブラリの弱さが面倒。
自分で書くか外部ライブラリに依存しまくるかで基本的なスレッドプールすら無い。
低レベル向けだから結局自分で書くならrustでいいし、それが嫌ならDでいいよ。
rustとD位の差なら正直好みの差。
95:デフォルトの名無しさん
17/10/23 22:40:54.47 5YqbDQKx.net
>>92
ならやっぱりrustじゃない?
bindgen使えばc++のヘッダもパースしてc ffi用のglue code生成してくれる。
bindgenがどの程度まで万能かは俺もよくは知らんけど、
mozillaがfirefox quantumでservoとgeckoの橋渡しのために使ってるくらいだから
結構まともに動くんじゃないかとは思ってる。
96:デフォルトの名無しさん
17/10/23 23:08:38.91 Y0tE+5bm.net
おまんらの大好き ぷ~えちピーーブリブリッ でも使えばええじゃろw
97:デフォルトの名無しさん
17/10/23 23:35:53.28 b+23gIO2.net
みんなサンクス。
Goは学習コスト低いらしいから後追いでもなんとかなりそうだし、とりあえずrustで書いてみることにするわ
一刻も早くc++ が絶滅する事を祈る
98:デフォルトの名無しさん
17/10/24 00:05:09.11 9ZgmGLcB.net
TypeScriptとGoを交互に触ってるけど
やっぱりnull安全な言語とそうじゃない言語の差が際立つな。
Goのほうは早速null pointerアクセスで落ちる。
99:デフォルトの名無しさん
17/10/24 00:39:57.10 7j3gEWSq.net
c++が絶滅したら今c++で書かれてる様々なコードベースが色んな言語に分裂するんだぜ
バベルの塔
100:デフォルトの名無しさん
17/10/24 00:51:24.05 MROfWTvM.net
バベルの塔を高くし過ぎたからしょうがないね
101:デフォルトの名無しさん
17/10/24 01:31:49.56 KQRKQofh.net
>>93
既存のまともに動いてるCコード移植しようとしてまともにコンパイルも通らなかった経験からまともな言語の水準に達してないといってるわけだが
少なくともRustでものが書けると信じこんでるお前よりはRust理解してるぞ
102:デフォルトの名無しさん
17/10/24 02:18:45.70 EjQaHC6N.net
>>100
お前が前に沸いたアンチと同一人物かどうかは分からんが、前に言った木構造をとっとと書きやがれ。
それすらできないならお前はC、C++もそもそもまともに出来てないんだから黙ってろ。
> 38
> >>36
> まずはCかC++でお前の言う無駄なアロケーションのないappendとdelete付きの木構造とやらを書け。
> そしたらそれをRustで書き直してやるよ。
103:デフォルトの名無しさん
17/10/24 07:07:12.19 ZX4BnJ5l.net
>>101
まずRustの木構造をちゃんと動くように書いてから言えよ
104:デフォルトの名無しさん
17/10/24 08:36:29.96 uX1ymmQB.net
rust で木構造云々言ってる奴って、コンパイラすら通せない rust コードしか書けない奴だろ。
Cで書いてあった平衡木のライブラリを rust に移植したけど、
> それに対して余計なアロケーション発生させずにappendとdelete実装してみてくれよ
こんなん普通に出来るぞ。
Option<Node> に get_or_insert() するだけ。
かなり苦労したのは木の回転だけど、それでも rust 用に頭を使ったら、
take() して mem::swap, mem::swap, mem::swap, そして代入の 5 行で終わり。
全体を通して余計なアロケーションなんて普通に無い。
rust は学習コスト結構高いけど、初歩の初歩で躓いた落ちこぼれ>>100,>>102 とかは何を言う権利も無いよ。
105:デフォルトの名無しさん
17/10/24 10:27:36.72 rYGI+fQg.net
Cのコードを示せないrustアンチは糞ゴミだけど、動くコードを示していない>>103も何も言えていない
106:デフォルトの名無しさん
17/10/24 11:02:52.32 pkngrV2F.net
自分の頭を撃ち抜くCのプログラム書いても運良く助かってる人は
Rustのコンパイル通せなくなるよね
107:デフォルトの名無しさん
17/10/24 11:29:48.61 Bfcpp5kd.net
そういう、Rustのコンパイルが通らなければ危険なコードって決めつけるRust信者本当にうぜえ
Rustが言語として表現できる範囲が狭いのをごまかすための方便でしかないのに
108:デフォルトの名無しさん
17/10/24 11:31:23.83 9ZgmGLcB.net
TypeScriptは本家のplaygroundを
109:触るだけで凄さが分かるんだけど https://www.typescriptlang.org/play/ rustってそういうのある?ちょっと試すとかできる?
110:デフォルトの名無しさん
17/10/24 11:33:53.63 Pu0WJP1A.net
>>105
自分の頭というよりユーザーにデバッグのコストを転嫁して儲けてるな
運が良いというより確信犯的に
111:デフォルトの名無しさん
17/10/24 13:43:56.97 wa8jpGkt.net
>>107
ググるとかしない人?単にTypeScript宣伝したいだけ?
URLリンク(play.rust-lang.org)
もとよりゆるふわTypeScript使いがRustのコンパイルを通せるとも思えないので端から試す気ゼロだろうけど…
112:デフォルトの名無しさん
17/10/24 13:56:01.66 Bfcpp5kd.net
選ばれた人しかコンパイラ通せない言語とかそれプログラミング言語って言えないよね
113:デフォルトの名無しさん
17/10/24 14:30:25.93 9ZgmGLcB.net
>>109
そこは知ってるけど全然補完が効かないんだけど。rust使いは
しょぼいエディターで頑張る感じ?
TypeScriptはplaygroundから補完が効きまくって楽しい。
114:デフォルトの名無しさん
17/10/24 16:07:36.55 0CxPdYg4.net
AltJSであるtsとRustのブラウザ上で動くplaygroundの機能差を語りたかったの?マジで?
Rustサゲしてる人はこの程度ってレッテル貼っていいの?
115:デフォルトの名無しさん
17/10/24 16:17:29.04 VubGQCWP.net
単にプロダクト開発のスキルの違いだな
MSの開発環境チームのメンバーはHelloWorldの代わりにインテリセンス実装するんだろう
116:デフォルトの名無しさん
17/10/24 16:23:54.68 rmRTTRfd.net
>>112
単純にPlaygroundの質からして違うってだけの話だろ
その程度もみとめられないよかよ
117:デフォルトの名無しさん
17/10/24 18:42:18.67 bbIPnu9e.net
なぜrustの対抗馬にTypeScriptが挙がるのかまるで理解できない
用途が全然違うだろ……
118:デフォルトの名無しさん
17/10/24 19:07:54.15 x0LH18ak.net
WebAssemblyが期待されてるから、あながち間違いでもない
119:デフォルトの名無しさん
17/10/24 21:40:46.56 eZrIsy4p.net
>>113
ほんとMSってそういう所は笑えるくらいすごいよな
Rust開発者たちも見習ってほしい
一応rustもコード補完にrlsとかいうヤツあるけどなんかまだいまいちなんだよな。
vscodeにrust(rls)っていうエクテンション入れて使ってるんだけど、
クロージャ書いてるときは補完が効かないのは俺だけ?
あとlint?(エラー・警告を赤・緑の下線で表示してくれるやつ)が
時々なんの前触れもなく急に無反応になるんだけどそれも俺だけ?
120:デフォルトの名無しさん
17/10/24 22:14:01.00 FaGN7Q1b.net
少人数のMS社員が片手間でVSCode作ってみたら一瞬で天下獲れちゃいましたというチート集団
MSがRust推せば余裕でGo潰してベターC++の定番を奪えるだろうな
121:デフォルトの名無しさん
17/10/24 22:51:21.66 z3aqO0G+.net
片手間ってことはないし、エディタ作成なんてのは人数増やせばいいものでもない。
まあチート軍団ってのは確かだけど。
しかし Rust とか c++ みたいに教条主義的な言語ってやっぱ信者が湧くね。
わかりやすくていいとは思うけど。
122:デフォルトの名無しさん
17/10/24 23:14:23.65 MOiTAdLh.net
片手間とか余裕とか、良い子は絶対に真似してはいけない情報ばっかり教えるんだよな
そんなところに信者を集めたら怠け者の集団ができそうだ
123:デフォルトの名無しさん
17/10/25 00:51:09.03 KYsAJ7k0.net
>>36じゃないけど、雑に平衡木(AA木)Cで実装してみた。
つってもWikipediaのまるコピだが。
#include <stdio.h>
#include <stdlib.h>
typedef struct tree {
int value
124:; 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); } } (続く)
125:デフォルトの名無しさん
17/10/25 00:51:31.44 KYsAJ7k0.net
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;
}
(まだ続く)
126:デフォルトの名無しさん
17/10/25 00:52:33.16 KYsAJ7k0.net
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;
}
(続く)
127:デフォルトの名無しさん
17/10/25 00:52:56.15 KYsAJ7k0.net
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;
}
128:デフォルトの名無しさん
17/10/25 00:53:17.67 KYsAJ7k0.net
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;
}
肝心の関数まで遠いなほんと
129:デフォルトの名無しさん
17/10/25 00:55:17.25 KYsAJ7k0.net
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;
}
おしまい。 まじこんなクソコードに何レスもついやしてすまん。
130:デフォルトの名無しさん
17/10/25 00:56:55.22 KYsAJ7k0.net
改めて書いてみて思ったが、平衡木って平衡保つための操作がポインタのつけかえ多くて
確かにRustにはキツそうだなとか思ったり
データコピーなし縛りで実装するのはRust歴1週間の自分には無理そうだ
131:デフォルトの名無しさん
17/10/25 01:27:50.62 egHPItlD.net
Rust 的にはそんなに派手に持ち主変えるな、もしくはコピーを使えって感覚なんだろう。
そういうのは上のレイヤーだったら正しいと思うけど、アルゴリズムなコードの場合は
ちと厳しいかもしれん。
付け替えが頻繁に発生する構造の場合は
int parent[]; int right[]; int left[];
みたいな配列実装しろてな記事は見た事なるな。
直感的ではないけど速度は出るし、まあ慣れてる奴からすればどっちも一緒といえば一緒かな。
132:デフォルトの名無しさん
17/10/25 01:53:05.61 KYsAJ7k0.net
そういう、どうしても生ポインタごそごそつけかえる必要がある基幹アルゴリズムは、unsafeでくるんでやれって感じなのかね
実際この平衡木の実体が複数スレッドから独立に操作されるとか考えると割と困る
133:デフォルトの名無しさん
17/10/25 06:54:35.09 2hh4Hzpf.net
gitみたいに、古いデータを消去することなく
しかも変更のない部分はいちいちコピーしないアルゴリズムを考えるんだ
そうすれば古い方のデータに別スレッドから安全にアクセスできるよ
134:デフォルトの名無しさん
17/10/25 10:38:32.59 1aquIA8S.net
結局たかが赤黒木すらRustでは書けないって認識でいいの?
ほんとプログラミング言語名乗るなよ
135:デフォルトの名無しさん
17/10/25 10:59:08.02 2hh4Hzpf.net
>>131
その認識は間違いだけど正解を無料で教えてくれるボランティアが足りないね
GNUみたいなボランティアがいっぱいいないとプログラミング言語を名乗れないのが現実
136:デフォルトの名無しさん
17/10/25 11:14:21.26 j3LwAfcI.net
Rustの問題は後発のくせにIDE連携が弱すぎる。
KotlinとかSwiftとか後発の言語は大概IDEと一緒に提供してるから
最初から補完がきっちり効く。
Goも昔はイマイチだったけど改善してるから許せる。
TypeScriptは言語そのものにIDE連携のための機能をたっぷり盛り込んでいるから
見習ってほしいって話。
初学者程IDE連携が必要だからな。言語仕様が優れてていても
ツールとして使い勝手が良くなきゃ使わんよ。
それにRustの立ち位置って
OS開発とブラウザ開発くらいしかメリットが思い浮かばんのだけども
CLIならGoだし
WebならPHPとかRubyとかGoとか乱立状態だし
WEBのクライアントサイドならTypeScriptだし
スマホならKotlinかSwiftかObjC
このどこにRustが入り込むの?
137:デフォルトの名無しさん
17/10/25 11:47:25.56 2hh4Hzpf.net
そもそもC++があまり成功してないから改善するためにRustがある
C/C++と合計して考えるとJavaより上だけど合計しなければC++は成功してないよ
138:デフォルトの名無しさん
17/10/25 12:31:23.13 L5aebztM.net
C++が成功してないwwwwwwwwwww
どこの平行宇宙ですかwwwwwwwwwwwwwwwww
139:デフォルトの名無しさん
17/10/25 13:46:26.44 egHPItlD.net
まあ c++ がうまくいってればこんなに言語がたくさんできることはなかっただろうね。
c++ の存在意義は今や高級な機能をどれだけランタイム速度落とさずに入れられるのかの
実験場って位置づけかな。
140:デフォルトの名無しさん
17/10/25 13:55:53.69 L5aebztM.net
C++は完璧な言語だとか口が割けても言えないのは間違いないが、Rustなんて言語ですらない汚物使うくらいならC++使うわなあ
141:デフォルトの名無しさん
17/10/25 15:45:07.57 +h/lSeC6.net
ID:KYsAJ7k0のコードのRust版まだー?
142:デフォルトの名無しさん
17/10/25 16:40:52.54 GfXNw50M.net
>>133
rlsあるし十分やん
143:あ
17/10/25 18:10:38.69 Wj9s3Y5p.net
TSは手段と目的がたまに入れ替わるのが見てるとちょっもモヤモヤするな。
C#が最近もう一度好きになってきた。
144:デフォルトの名無しさん
17/10/25 19:10:42.88 ajBcpsg9.net
>>138
まあまあ今ごろコンパイラに怒られてる頃だしもうちょっと待ってやろうぜwwwwww
145:デフォルトの名無しさん
17/10/25 20:35:19.01 rCcyDoqV.net
rustスレよりもりあがっとるやんここ
146:デフォルトの名無しさん
17/10/25 20:59:03.30 EAW9qNH5.net
cに名前空間とラムダとattribute((cleanup))が入るだけでもだいぶ助かるのに。
なんでcの規格のバージョンアップは遅いんだ?
c++みたく3年毎にしてくれたらいいのに。
147:デフォルトの名無しさん
17/10/25 21:12:25.50 7dSKsD7g.net
>>142
あそこモジラの工作員しかいねえし
Rustが言語ですらないただの汚物って正しい認識を共有できる人がちゃんといるのは素晴らしいと思う
148:デフォルトの名無しさん
17/10/25 22:58:44.78 egHPItlD.net
>>143
C++みたく闇鍋状態にしたくないからだろ。
149:デフォルトの名無しさん
17/10/25 23:13:35.98 GfXNw50M.net
モジラが2ch見てるわけねーだろ
糖質かよ
150:デフォルトの名無しさん
17/10/25 23:16:03.33 j3LwAfcI.net
rustをそこまで毛嫌いする必要もないと思うけどな
rustのメモリオーナーシップモデルとかコードの改善に貢献するという話もあるし
ちょっと気にはなってる。
151:デフォルトの名無しさん
17/10/26 00:20:17.07 9syp6YaG.net
rustアンチって同一人物だろ
コンパイル通らなくてイライラしてるんだね^^
コテ付けて、どうぞ
152:デフォルトの名無しさん
17/10/26 00:21:04.60 T1ShqX6y.net
rustは何がそんなに駄目なんだろ
そこ迄言われると学びたくなってくる
153:デフォルトの名無しさん
17/10/26 00:26:09.28 9syp6YaG.net
>>149
他の言語にはない所有権システムが原因で学習コストが高い
使いこなせば強力だけどとても難しい機能
それで使いこなせてない人が「コンパイル通らない」って発狂してる
例えると、初めてHaskell言語触る人が「変数に代入出来ないから何も出来ない!Haskellは欠陥言語!」って言ってるような物
154:デフォルトの名無しさん
17/10/26 00:31:32.93 zsf3GtyN.net
rustのコンパイルを通せない低級汚グラマーが
嫉妬で腐してるだけだろ
腐ってるのはテメーの言語センスだろってね
155:デフォルトの名無しさん
17/10/26 00:32:53.75 9syp6YaG.net
Haskell言語って何だ
夜は誤字増えるから寝よう
156:デフォルトの名無しさん
17/10/26 00:50:43.34 T1ShqX6y.net
>>150
なるほど、でも面白そうだな
パフォーマンスは良いって聞くし
haskellも好きだし一通り触ってみるかな
157:デフォルトの名無しさん
17/10/26 03:24:21.96 EtDTWIur.net
まあ御託はいいからデータコピーなしの平衡二分木をRustで書いてからにしてくれよ
Cのコードは出たぞ
158:デフォルトの名無しさん
17/10/26 05:10:18.37 IaYxMsud.net
Haskellなら副作用だらけのコードは断固拒否するだけだが
Rustで副作用を拒否すると延々と粘着されそう
ついでにPythonは静的型を拒否するだけだが
Goはジェネリクスがない件で永久にいじめられるんだろう
159:デフォルトの名無しさん
17/10/26 07:04:11.52 hnEjL22C.net
Haskellは速さは捨てて副作用を無くすことに全振りしてるけど、Rustはそうではないからな
160:デフォルトの名無しさん
17/10/26 09:12:10.17 ZXFAdbhr.net
Rustはunsafeつかえば(ffiしたほうがはやいだろうが)できないことはないと思ってるんだが違うのかな?
161:デフォルトの名無しさん
17/10/26 09:59:20.18 tFGGFqQC.net
Goはいつものgoogleのフカしで持ち上げられてる感がプンプンするぜ。
単なる昔ながらのVM使ってない静的型付け言語を
システムプログラミングとかいうバズワードを作って
スクリプトしか描いたことない奴らにいかにも新しいものであるかのように錯覚させてる。
162:デフォルトの名無しさん
17/10/26 10:42:13.95 1t2EMvpb.net
>>157
初めからプログラム全体をunsafeで囲ってある状態を仕様にすればいいのにな
>>158
バズワードだろうがなんだろうが、速くて書きやすけりゃ正義よ
163:デフォルトの名無しさん
17/10/26 10:47:47.28 Y5WhyQQy.net
最近は新しいOSSもGoで書かれてるの多くてうんざりする
再来年辺りには「Goは終わった」とか言われだしてScalaと同じ道を辿るのわかりきってるのにWeb系の馬鹿共は何度同じ間違いを繰り返すのか
164:デフォルトの名無しさん
17/10/26 11:10:35.34 8qIiNs+I.net
個人的にはDが一番純粋なc++ 後継って感じで頑張って欲しいんだけどなぁ
まったく流行る兆しがない……
別に新しい言語を求めてるんじゃないんだ。c++ からc互換を取り除いて標準ライブラリと文法見直してくれるだけでいいんだ
165:デフォルトの名無しさん
17/10/26 11:45:28.73 xVKEuI/f.net
>>160
「新しいOSSもGoで書かれてるのが多」いのに
「再来年辺りには『Goは終わった』とか言われだ」すのか。すげえな
まあGo2.0の漏れ聞く噂によると可能性なくもないんだが
166:デフォルトの名無しさん
17/10/26 11:47:37.13 xVKEuI/f.net
>>161
GC言語な時点でそりゃねえわ
全く同じ理由でGoもC++の完全な後継ではないと思ってるけど
167:デフォルトの名無しさん
17/10/26 11:54:33.47 Y5WhyQQy.net
>>162
Scalaという前例があるからね
特にビッグデータ系はScalaのOSSが多くて悲惨だよ
壮大な糞の山が残されてしまった
168:デフォルトの名無しさん
17/10/26 12:17:09.48 xVKEuI/f.net
>>164
Scalaが廃れた理由は、言語のバージョンアップ戦略がクソof
169:クソだったってのと コンパイル回りの性能が悪いっていう言語自体の特徴、 それから置き換えを狙っていたはずのJavaの進化に取り残されたことっていう色々と複合的な原因がある Goがその後追いをするかって言われると、 少なくとも書きやすさの面でC++がGoに勝てる目は向こう5年はないだろうし、 バージョン戦略は少なくとも1系の間は下位互換性崩さんだろうしな
170:デフォルトの名無しさん
17/10/26 12:19:58.53 xVKEuI/f.net
不安があるとするなら、なんか1系と完全に互換性なくすとか言われてるGo2.0なんだよな
この辺の方針次第では、おっしゃる通り再来年にはゴミの山になってる可能性が無視できない
Swiftがクソバージョンアップでもなんとか成功してるのはプラットフォーム囲い込んでるのがでかい
171:デフォルトの名無しさん
17/10/26 12:27:59.75 P+s05bng.net
AA木のRust版の移植を練習がてらやったぞ。
みんなunsafeが必要とか言ってるが、別に必要なくない?
ポインタ演算もサイズの違う型の変換もしてるわけじゃないから生ポインタ扱う必要ないと思うんだけど。
だた、マジで愚直に移植したから全くRustっぽくはないし、
俺がバカなだけで無駄なオーバーヘッドが気づかんうちにいっぱい発生してるかもだから指摘よろしく。
一応何回か適当にinsertとremoveして正しく動いてるとこまでは確認してる。
みんなunsafe使わないとダメ的なこと言ってるから正直これでいいのか全然自信がない。
172:デフォルトの名無しさん
17/10/26 12:28:38.79 P+s05bng.net
#[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)
}
}
(続く)
173:デフォルトの名無しさん
17/10/26 12:29:34.82 P+s05bng.net
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
}
(まだ続く)
174:デフォルトの名無しさん
17/10/26 12:30:37.02 P+s05bng.net
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
}
175:デフォルトの名無しさん
17/10/26 12:31:04.94 P+s05bng.net
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
}
176:デフォルトの名無しさん
17/10/26 12:31:51.05 P+s05bng.net
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
}
177:デフォルトの名無しさん
17/10/26 12:34:16.58 P+s05bng.net
fn remove_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() { return root; }
else if value == root.as_ref().unwrap().value {
if root.as_ref().unwrap().left.is_none() && root.as_ref().unwrap().right.is_none() {
return None;
} else if root.as_ref().unwrap().left.is_none() {
let succ = {
let end = left_end(&root.as_ref().unwrap().right);
end.as_ref().unwrap().value
};
root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
root.as_mut().unwrap().value = succ;
} else {
let pred = {
let end = right_end(&root.as_ref().unwrap().left);
end.as_ref().unwrap().value
};
root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value);
root.as_mut().unwrap().value = pred;
}
} else if value > root.as_ref().unwrap().value { root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value); }
else { root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value); }
関数途中です(1レスに収まらんかった)
178:デフォルトの名無しさん
17/10/26 12:37:30.92 P+s05bng.net
root = decrease_level(root.take());
root = skew(root.take());
root.as_mut().unwrap().right = skew(root.as_mut().unwrap().right.take());
if root.as_ref().unwrap().right.is_some() {
root.as_mut().unwrap().right.as_mut().unwrap().right = skew(root.as_mut().unwrap().right.as_mut().unwrap().right.take());
}
root = split(root.take());
root.as_mut().unwrap().right = split(root.as_mut().unwrap().right.take());
root
}
終わり。
クソコードの上に長くてほんとすんません。
あと、おもてのコードでは一度もunsafeは使ってはないけど
Option型のtakeメソッドが所有権を誤魔化すために裏でunsafe使ってる。
あとは、裏でも使ってないと思う。
179:デフォルトの名無しさん
17/10/26 12:39:25.88 xVKEuI/f.net
Rustトーシロの初見だけどこんなにunwrap必要なの怖いって気分になるな……
CのポインタをOption<Box<>>で表現してるからしゃーないとはいえ
180:デフォルトの名無しさん
17/10/26 12:39:26.85 P+s05bng.net
ここまでやったらもう飽きた。
誰かメソッド構文とかコンビネータとかをきちんと使ったRustyなコードに書き換えて。
181:あ
17/10/26 12:42:49.23 +cEqlMCT.net
Rust嫌いな奴はCをすぐ引き合いに出すが、misraの案件やったら死ぬんじゃねえかなって思う。
GC言語も悪くはないぞ。ちゃんとGCの動き考えれば、正しく開放「されてない」理由もわかるだろ。
最初からデカイ配列を握って離さない、それを切り貼りして使う、みたいなJavaのプロジェクトあるしな。
182:デフォルトの名無しさん
17/10/26 12:50:10.86 P+s05bng.net
>>175
あくまでも愚直に書いてるからこんなにunwrapとas_refとas_mutだらけになる。
if letとかコンビネータとかをきちんと使えばこんなひどいコードにはならないよ。
183:デフォルトの名無しさん
17/10/26 16:47:19.95 hnEjL22C.net
rustのコード<>だらけで読みにくい
これはlispの括弧みたいに慣れたら読みやすいものなのか?
184:デフォルトの名無しさん
17/10/26 17:58:11.26 9syp6YaG.net
>>153
難しいとは言ってもOOP→関数型のパラダイムシフトに比べれば簡単だけどね
185:デフォルトの名無しさん
17/10/26 20:01:45.08 mFTohykf.net
>>154
おい、お前でてこいよ
186:デフォルトの名無しさん
17/10/26 21:09:45.15 LcYnzbeR.net
rust も haskell も理解できても面倒だし無駄に言語に気使ってるだけじゃねーかって
思うんだが、信者はききやしない。。
「お前らは理解できないものを理解できる俺偉い」で思考停止しちゃってんだよ。
187:デフォルトの名無しさん
17/10/26 21:15:34.16 hnEjL22C.net
一番言語に気を遣わないといけないのはC++だがなw
188:デフォルトの名無しさん
17/10/26 21:19:35.59 +/fzZ2Vi.net
型っていうシステムが
そもそも良くないっていうのは無いの?
189:デフォルトの名無しさん
17/10/26 21:46:13.96 OTLFFL6d.net
>>181
出てきたが、お前まさかこんな汚いコード未満とCのコード比較させる気か?勝負にならん。解散
>>182
それならマシで、Rust信者の工作員はモジラブランドのためなら使えないものを世界中の企業に絶賛させるための工作をに熱心すぎてもうね
190:デフォルトの名無しさん
17/10/26 21:54:28.12 PekP06rX.net
>>185
おめー流石に一から書いてもいない奴が言うセリフじゃねえよ
Cライク信者からしても何様だてめえは
191:デフォルトの名無しさん
17/10/26 21:55:02.68 mFTohykf.net
>>185
てめえがしね
192:デフォルトの名無しさん
17/10/26 22:34:09.13 P+s05bng.net
>>182
「俺偉い」はさすがにないわ。笑かすな。
Rustに移植してみての感想だけど、確かにコンパイルを通すのには苦労したけど、
通ってしまえばメモリーリークはないって安心感がある。これが重要。
特に今回はunsafe一度も使ってないからなおさら安心できる。
Cのほうのコード一通り眺めてメモリーリーク無いって確信できる?
それができる超人君なら確かにRustは全く必要ないが。
Rustは君の嫌う面倒さと引き換えに安心を得ることができる言語。
むしろCで書いたコードにメモリーリークがあるのかないのか
自分の書いたコードに自信が持てないやつのためにこそRustがあると思ってる。
面倒だけが理由で思考停止しているのはどっちだ。
>>185
確かにこのコードは汚いよな。そこは自覚してる。
193:マジで誰かRust風に書き換えてくれない? 動いたところまで確認したところで集中が切れてしまってもうやる気が出ない。 Rustはオブジェクト指向も関数型のパラダイムを両方とも持っているし、 きちんと書けばかなり綺麗で整ったコードに書き直せるはずなんだよ。 あと、Rustアンチに1つ聞きたいことがある。 Rustが嫌いってことはわかったけど、じゃあアンチ君の好きな(愛用してる)言語は何なの? その言語のメリット・デメリット含めて詳しく解説してくんない?
194:デフォルトの名無しさん
17/10/26 23:26:00.76 LcYnzbeR.net
はっきり言わせてもらうけれど、
この規模のコードで書くのにそれだけ苦労する価値があると思えんが。
メモリリークについてもこの規模なら一通り見て、あるかないかくらい判断できるよ。
まあ主観といえば主観だけれど
本当に本心からこの程度のコードについてメモリリークを心配しちゃってるの?
言語を持ち上げるために無理に納得しようとしてない?
195:デフォルトの名無しさん
17/10/26 23:35:06.69 9syp6YaG.net
そりゃこの程度の規模じゃRust使うメリット皆無だよ
で、実際のプロジェクトがこの程度の規模なの?
196:デフォルトの名無しさん
17/10/26 23:35:07.35 51LPFkSD.net
なんでこの規模に限定した話をされているの?
197:デフォルトの名無しさん
17/10/26 23:37:41.83 9syp6YaG.net
Rustアンチスレ
スレリンク(tech板)
198:デフォルトの名無しさん
17/10/26 23:40:05.21 JSzFTz38.net
ブラウザの性能が圧倒的にchromeより上になったらrustの優位性が証明されるけど。
それをまとうかな。
199:デフォルトの名無しさん
17/10/27 00:07:16.82 xwp9Pca0.net
性能の差で優位性を証明したことなんて今まであったっけ
オブジェクト指向も関数型もiPhoneもみんな性能と関係ない価値観だったような
200:デフォルトの名無しさん
17/10/27 00:42:45.70 5+s2yfDd.net
>>185
さすがにコード一行も書いてない奴が言っていいセリフじゃねえわ……
>>189
さすがに後出し条件がひどい。そもそも発端は「Rustでは(unsafe使わずに)木構造すら書けねえだろ」って煽りが発端で
「さすがに木構造くらい(unsafeなし)Rustででも書けるわ」ってのの話がこれだろ
そりゃコンセプトが「安全性」なんだからCで書くより面倒なのは確かだし、この程度ならCの方がいいってのも当然だが、
そこを比較するために書いたもんじゃねえだろ
201:デフォルトの名無しさん
17/10/27 00:47:50.32 /3yfU/y8.net
見苦しくなってきたな
202:デフォルトの名無しさん
17/10/27 03:40:11.56 LQlgBzJd.net
流石に自演かすぎる…
203:デフォルトの名無しさん
17/10/27 06:31:17.46 2A0a9mBA.net
>>183
そんなことはないと思うが
何か具体例ある?
204:デフォルトの名無しさん
17/10/27 06:34:38.22 2A0a9mBA.net
>>195
言いたいことはわかるが
その「この程度」のも全部快適に書けるのが理想なわけだよね
この程度のをいっぱい書かなきゃいけなくなったときにこの調子じゃ萎える人も出てくるだろう
205:デフォルトの名無しさん
17/10/27 09:50:28.38 T+eCoUsJ.net
>>195
安全性のためとか言って結局まともにかけないアルゴリズムがあることを見て見ぬふりの信者
健康のためなら死んでもいいを地で行ってるな
これが宗教ってやつか
206:デフォルトの名無しさん
17/10/27 10:02:50.33 LQlgBzJd.net
Rustが面倒そうなのは伝わったが
C側の奴がコピペ野郎のくせに暴れてるクズすぎてなんとも
207:デフォルトの名無しさん
17/10/27 10:35:02.10 aniL1VIL.net
>>200
まともに書けるけど無料で教えてくれる人が少ないだけだってそろそろ気付けよ
普通は健康のためではなくカネのためにやってるから
208:デフォルトの名無しさん
17/10/27 11:13:40.46 T+eCoUsJ.net
というかさ、Rustのコードバグってるんだけどwwwww
バwグwっwてwるwんwだwけwどwwwww
remove_treeで要素Removeできてないwwwww
Rustはコンパイル通れば安心できる(ドヤァ)とかいってバwグwっwてwるwwwww
209:デフォルトの名無しさん
17/10/27 11:26:28.21 T+eCoUsJ.net
ここにRustは、安全性を高めると言いつつまともにアルゴリズムを書こうとすると制約回避のためにとてつもなく汚いコードになり、
バグもCより出やすくなることが公になりましたとさ
ちゃんちゃん
210:デフォルトの名無しさん
17/10/27 11:40:28.33 AXKOuk3Y.net
>>198
言語に気を遣わないとすぐ自分の足元を撃ち抜く言語であるということに同意しないということ?
具体例っていざ言われると困るなあ。ふと思い出した阿呆な失敗談を一つ挙げると、クラスの値型配列を作れちゃうところとか、クラスは絶対ポインタで持たないといけないDとは対照的に感じたな
常識的に考えたらクラスの値型配列なんてやったらダメなのはわかるんだけど、なぜかやってしまって、コンパイル通ってんのに思ってたのと違う挙動して困ったわ。こういう常識的に考えたらわかるけど、考えないといけない部分があるから言語に気を遣わないとやっていけん。
これは全然大したことない例だけど、なんか他にもあったような気もするし思い出したら書き込むわ
211:デフォルトの名無しさん
17/10/27 12:04:57.19 aniL1VIL.net
代入がなければ値型でもポインタでも同じ挙動だ
だから、代入しようとしたらコンパイルが通らない言語が現れた
212:デフォルトの名無しさん
17/10/27 12:27:06.09 Luz9kSs/.net
haskell追い出したら次はrustですか?
213:デフォルトの名無しさん
17/10/27 12:49:17.54 aniL1VIL.net
追い出す権利はないね
あると思ってるやつは権利に甘えすぎ
214:デフォルトの名無しさん
17/10/27 12:53:49.35 BmYygdVN.net
URLリンク(cpplover.blogspot.jp)
まあこう言う馬鹿がいなくなるまでは
実際のコードについて議論したほうがいいとは思うよ。
別にrustとかhaskellが悪いとは思わんけれど、コードなんて実際に現場で機能するかどうかが
一番重要なわけだから。原理に走ると都合の悪いことを無視し始めるのは気に入らん。
215:デフォルトの名無しさん
17/10/27 13:27:23.45 OeXtCDV4.net
>>203
すまぬ。すまぬ。完全なうっかりミスだったわ。
訂正した。
fn remove_tree(mut root: Option<Box<Tree>>, value: i32) -> Option<Box<Tree>> {
if root.is_none() { return root; }
else if value == root.as_ref().unwrap().value {
if root.as_ref().unwrap().left.is_none() && root.as_ref().unwrap().right.is_none() {
return None;
} else if root.as_ref().unwrap().left.is_none() {
let succ = {
let end = left_end(&root.as_ref().unwrap().right);
end.as_ref().unwrap().value
};
>> 訂正前 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
>> 訂正後 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), succ);
root.as_mut().unwrap().value = succ;
} else {
let pred = {
let end = right_end(&root.as_ref().unwrap().left);
end.as_ref().unwrap().value
};
>> 訂正前 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value);
>> 訂正後 root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), pred);
root.as_mut().unwrap().value = pred;
}
} else if value > root.as_ref().unwrap().value { root.as_mut().unwrap().right = remove_tree(root.as_mut().unwrap().right.take(), value); }
else { root.as_mut().unwrap().left = remove_tree(root.as_mut().unwrap().left.take(), value); }
...
216:デフォルトの名無しさん
17/10/27 14:02:45.56 OeXtCDV4.net
>>204
何度も言ってるがこのコードが汚いのは制約回避のためじゃなくて、Cのコードを愚直に移植してるからだぞ。
CのNULLを表現するためにOption型を使用してるから、コンビネータとかを
きちんと使わない限りはunwrapだらけになってコードが汚くなる。
Rustのコードが汚いんじゃなくてRustyに書いてないから汚いだけ。
同じことを何度も言わせないでくれ。
確かに、Rustはコンパイル通すために苦労するから、
執行錯誤してるうちにうっかりミスしやすくなるという考えはあるのかもな。
まあ、この程度のミスを犯す俺が単純にバカすぐるのか、これもRustの課題のひとつだと考えるかは
人によって意見が分かれてくるところじゃないか?みんなどう思う?
217:デフォルトの名無しさん
17/10/27 15:02:03.76 aniL1VIL.net
カネもないし時間のゆとりもないからコードが汚くなった
言語よりもカネと時間の使い方が間違っている
218:デフォルトの名無しさん
17/10/27 17:07:21.98 2A0a9mBA.net
>>205
クラスの値型配列はごく基本的で有用なデータ構造なんだけど…
219:デフォルトの名無しさん
17/10/27 17:26:21.22 2A0a9mBA.net
いや俺もちゃんと具体例出すか。例えば
class Point { public: double x; double y; }; だの Point3D だのが定義できて、
vector<Point> や Point v[..] が扱えなかったらシステムプログラミングなんかできやしない
…かどうかは別として別に値型の配列は必要なデータ構造だし、
immutable であれば直感に反した動作もないのでは。
実際に用途の多くは inmutable なオブジェクトの配列で、
C++17 では vector<const T> が許容されるようになりそうな流れ。
220:デフォルトの名無しさん
17/10/27 17:40:16.82 AXKOuk3Y.net
>>214
ああ、すまん。Dでは構造体は継承出来ない代わりに値型可能、クラスは継承出来る代わりに値型不能なんよ。そのイメージが残ってたわ。
継承したものを値型で混ぜ混ぜしてしまったというのが俺のミスなのです
221:デフォルトの名無しさん
17/10/27 18:04:05.75 697iydar.net
何でスレタイからHaskell外したんだよ
それならGo外せよ
222:デフォルトの名無しさん
17/10/27 18:39:17.91 BmYygdVN.net
なんか元々の C のコードを Rust に下から生じた問題みたいに言ってるけれど
tree のアルゴリズムを実直に書けばそういうふうになるだろ。
それってつまり実直にアルゴリズムを記述するのに向いてないって言ってるようなもんだろ。
223:あ
17/10/27 18:41:31.58 872yUCAe.net
また無様なHaskellのコード見るの嫌だし、むしろスレタイには言語一切入れんでもいいだろ。
好きなら、なぜ好きかを推すだけで充分議論になるのに、
他の言語を貶めて、○○はゴミだから△△が良い、って論調にするのはちょっとおかしいんじゃないの?
ホームレスが椅子で寝るの見て、俺はブラック企業戦士だけど屋根のある部屋で椅子で寝てるだけマシ、って言ってるように聞こえるよ。
好きで椅子で寝てるなら椅子寝のこだわりぐらい書けよ。パイプ椅子なら圧倒的に互い違い派だ、とか。
224:デフォルトの名無しさん
17/10/27 19:47:08.69 aniL1VIL.net
貶めるのが許せないという気持ちがよくわからない
例えば残業代未払いは許せるが貶めるのは許せないとか
なんでそういう優先順位になったのか理解できない
225:デフォルトの名無しさん
17/10/27 20:10:28.34 AXKOuk3Y.net
エアプガイジの言ってることわかる訳ないんだから絡むな
226:デフォルトの名無しさん
17/10/27 20:13:53.36 AXKOuk3Y.net
Rust派の意見としては、
①TreeはCより汚いけど他のメリットが大きいから許せ
②もっとうまく書けるから俺が書いてやるぜ
③副作用のある木は糞
どれ?
227:デフォルトの名無しさん
17/10/27 22:02:47.00 atz35ani.net
>>218
隔離スレだしな。
プログラマ自体、人口のほんの一部だし、複数の計算モデルが異なる言語を使いこなしてるのなんて更に希少種だから、もともと言語のマトモな比較が出来る奴が殆ど居ない。
だからここで言い合ってるのはおま環がデフォ。
228:デフォルトの名無しさん
17/10/27 22:13:38.27 2kHVS/Sf.net
>>184
型がないと引数なり戻り値なりで与えられた情報をどう扱っていいかわからないでしょう
229:デフォルトの名無しさん
17/10/27 22:23:07.44 W2Xgzzyi.net
返り値が返るのも
それも副作用って事にならないのはなんで?
230:デフォルトの名無しさん
17/10/27 23:02:40.27 4WxMDiO8.net
式に値があるのは副作用と言わないから
231:デフォルトの名無しさん
17/10/27 23:04:58.68 2kHVS/Sf.net
>>224
主の作用だからだろ
232:デフォルトの名無しさん
17/10/27 23:23:42.05 LQlgBzJd.net
>>218
無様なHaskellコードって?
233:デフォルトの名無しさん
17/10/27 23:45:39.75 BmYygdVN.net
>>211
ちゃんと具体的にコードを書いてくれて議論しやすくしてくれたのはありがたい。
tree を rust で実装しろって言われたら 10 人中 9 人は Box と Option を
使ったそういう構造体作ると思う。
234:デフォルトの名無しさん
17/10/27 23:47:59.22 O21aknvD.net
>>214
Pointの例に限って言えば同意できないな
大量の小さなベクトルを扱うような場合、構造体を使うより各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
C++系の言語で行
235:持ちの方が好まれるのは、一番の理由は言語の性質上そのほうが扱いやすいからに過ぎない 最近は列指向DBなんかも普通に使われるようになって、データの列持ちが見直されつつある今、 列持ちのデータ構造をスマートに扱える言語があってもいいと思うわ
236:デフォルトの名無しさん
17/10/28 00:01:16.09 rPyPw2Q2.net
>>229
Fortran, Juliaのことか?
237:デフォルトの名無しさん
17/10/28 00:03:34.74 1i6fvk7+.net
>>227
>無様なHaskellのコード
908 :あ:2017/05/31(水) 09:15:21.09 ID:dc+IbjjD
>>905
具体的に上げろと言われてもなぁ。
<T>を持ったenumがOptionかcar(T)とcdr(<T,T>)である時くらいかな。
これのことじゃないの?(適当)
238:デフォルトの名無しさん
17/10/28 00:24:09.93 rPyPw2Q2.net
てか
>>229
> 各成分をそれぞれスカラー配列で持った方が効率いいよ
キャッシュに乗りやすくなる
これってどういう演算の時にそうなるんです?
239:デフォルトの名無しさん
17/10/28 00:46:39.85 pDpr3v8b.net
Rustアンチくんはペチパー
はっきりわかんだね
240:あ
17/10/28 00:51:22.50 Nq0Bzlbk.net
>>219
許せないんじゃなくて、健全ではないよね、と。
なんせ改善せずとも、自分があたかもまともであるかのように思える一番楽な方法だし、進歩もない。
>>222
ホントに。好きなら好きで良いんだよ。
バカで比べる事ができないなら素直に信者してりゃ良いの。
狂信者が戦争起こすような真似をネットでまでやらんでもよろしい。
>>227
>>231
しかも、結局すごくひねり倒してグダグダ言った割に、最後まで動くコードが出てこなかったんだけっけ。
241:デフォルトの名無しさん
17/10/28 00:58:11.14 Ng05dLeH.net
>>232
分かりやすいのはパディングが入るケース
ループのベクトル化もスカラー配列の方が効きやすいらしい
242:デフォルトの名無しさん
17/10/28 01:07:07.63 rPyPw2Q2.net
>>235
うーむ……
もしかしてPoint3Dのベクトルに一括して行列を掛けたりする状況を想定しているのか?
243:デフォルトの名無しさん
17/10/28 01:09:54.95 Ng05dLeH.net
そういう状況でもない限りそもそもボトルネックにならないからな
244:デフォルトの名無しさん
17/10/28 01:16:42.42 FXSZ1oP/.net
>>211
試行錯誤の過程でアルゴリズムぶっこわれるってのはよくあるが、そうならないためにテストコードがあるっちゃそうだから、
明確な欠点とは言えないかもな
まさかスレに貼るサンプルコードにまでテストコードつけろなんて言えねえし。
245:デフォルトの名無しさん
17/10/28 04:09:54.80 62CU1Qsk.net
>>234
ドアの奴なかな?
あれならHaskellのコード出てただろ
いつまで言ってるんだ
246:デフォルトの名無しさん
17/10/28 09:04:44.68 C9milqrp.net
コード出すという行動ではなく
コードが正義っていう知見への承認とか共感が欲しかったんじゃないか
だから行動だけでは駄目
247:あ
17/10/28 09:19:59.46 Nq0Bzlbk.net
>>239
じゃ、いつまで、スレタイにはHaskellが、って言ってんだよ(笑)
248:デフォルトの名無しさん
17/10/28 10:25:15.53 CAnYo5YI.net
なぜ私達は Python から Go に移行したのか
URLリンク(frasco.io)
249:デフォルトの名無しさん
17/10/28 10:45:03.08 rPyPw2Q2.net
よくあんな無様な知ったかぶりしといて人のこと無様とか言えるな
250:デフォルトの名無しさん
17/10/28 11:06:53.69 pDpr3v8b.net
これだからペチプァは
251:あ
17/10/28 11:20:03.53 McmdGm+1.net
>>243
自分が無様だと思ってる奴に無様だと言われるのはさぞ辛かろうが、
俺が無様なのとHaskell書いたやつが無様なのは別の事象で、
同時に無様でありえるんだから、その指摘はナンセンスだろ。
その理解力でHaskell最高!と思ってるのも面白いな。Maybeの真髄だろ。事象を整理するのは。
252:デフォルトの名無しさん
17/10/28 11:28:14.87 rPyPw2Q2.net
なんだこいつなんで俺がHaskell 信者みたいな前提で煽って来てんだ
253:デフォルトの名無しさん
17/10/28 11:36:54.21 c+qfWZBO.net
もう最新規格のFortranで良いよ
254:デフォルトの名無しさん
17/10/28 12:01:24.16 1i6fvk7+.net
Fortranに第一級関数がついてimplicit noneがデフォルトになってinterface文をもうちょっと短く書けるようになって引数の型指定をCみたいに書けるようになって
配列の大きさ指定の関数に組み込みでない関数を使えるようになってgfortranのbind(C)周りのバグを解消してくれたらFortranでいいよ
255:デフォルトの名無しさん
17/10/28 12:13:39.86 pDpr3v8b.net
西京言語PHPを使えばいいじゃん(いいじゃん)
256:デフォルトの名無しさん
17/10/28 12:20:24.44 aTcnbQEE.net
PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい
257:デフォルトの名無しさん
17/10/28 12:31:15.99 MXV4el39.net
mod_perlとだったら大して変わらん気がする
258:デフォルトの名無しさん
17/10/28 12:33:46.88 pDpr3v8b.net
>PHPが、前世紀末に流行したPerlでCGIという極悪システムを撲滅した功績は大きい
キリッ
www
259:デフォルトの名無しさん
17/10/28 17:09:33.99 GkEAGE6K.net
皆がCGIという共通ルールを守る中
汎用性のない独自実装をしたphp
260:デフォルトの名無しさん
17/10/28 17:24:26.31 6pjbn+cV.net
まあ今更Perlとかって選択肢はないからね
261:デフォルトの名無しさん
17/10/28 17:31:59.24 Hah9JG+z.net
FacebookはなんでPHP推しなの?
262:デフォルトの名無しさん
17/10/28 18:04:40.73 D4ynCBSM.net
PHPをC++に変換するんだっけ
むしろJavaをC++に変換するのを誰もやらない理由を知りたい
263:デフォルトの名無しさん
17/10/28 18:12:54.21 z3Njt94H.net
>>256
Javaは事実上サーバーでしか使われていないので、
全くメリットがないから
264:デフォルトの名無しさん
17/10/28 18:27:47.92 GkEAGE6K.net
phpのがサーバでしか使われてない印象
どっかで使ってる?
265:デフォルトの名無しさん
17/10/28 18:32:36.63 GkEAGE6K.net
>>254
別にCGIはperlでなくてもいいだろ
プロセスを起動するインタフェースのお約束だよな
perlは文字列処理が得意だっただけで
266:デフォルトの名無しさん
17/10/28 19:01:45.06 0vLNpJP2.net
PHPの特徴ってインスタンスの生存時間が極端に短い。ってこと。
request受けてからresponse返すまで。
だからGCが貧弱でも何の問題もないし。糞汚いコードでもメモリリークが問題にならない。
267:デフォルトの名無しさん
17/10/28 19:13:14.28 PFwR8W+K.net
>>256
GCC
URLリンク(news.mynavi.jp)
あと、AndroidはJavaじゃないからノーカンなのかもしれないが、
以前はネイティブに全部変換していたのをやめた
268:デフォルトの名無しさん
17/10/28 19:51:46.92 SOIebb5r.net
>>255
むしろPHPを積極的に潰そうとしてる印象なんだが
クソ挙動しかしないウンコ製造機PHPを潰すためにHHVMは作られたんだぞ
269:デフォルトの名無しさん
17/10/28 20:44:53.33 VLfN62TL.net
>>255
最初は何も考えずにお手軽に作れたからPHPだった
大きくなりすぎてから管理コストを考えてノロノロと移行を企てている
そんなとこだろ
270:デフォルトの名無しさん
17/10/28 21:07:01.93 ruX3/fgh.net
それ以上ペチパーの心のより所を叩くのはやめてやれw
彼ら、憤死してしまうでwww
271:デフォルトの名無しさん
17/10/28 21:37:38.45 GkEAGE6K.net
>>260
言ってること滅茶苦茶だな
272:デフォルトの名無しさん
17/10/28 21:57:38.28 D4ynCBSM.net
伝えようとすれば滅茶苦茶
隠そうとすればバレバレ
だから型情報とか一生懸命伝えようとする言語が報われない
273:デフォルトの名無しさん
17/10/29 03:03:23.28 7slaGsXS.net
>>242
go 好きな人ってまともすぎてつまらんな。
274:デフォルトの名無しさん
17/10/29 05:05:09.88 ZPHcoPj2.net
>>261
ARTは全部変換なんてしてない
元からJITとAOTの複合
275:デフォルトの名無しさん
17/10/29 05:05:25.10 ZPHcoPj2.net
>>267
きんも
276:デフォルトの名無しさん
17/10/29 17:16:13.61 sv965ldD.net
>>268
URLリンク(gihyo.jp)
>しかし,AOT方式をいざ導入してみると,サイズの大きなアプリのインストールや,
>一度に複数のアプリをアップデートするような場合にコンパイルに時間がかかり,
>場合によっては20分程度かかるケースが存在していたようです。
>このインストール時間を問題と捉えて,Android NのARTでは,JIT方式をもう一度使うことになりました。
277:デフォルトの名無しさん
17/10/30 08:01:20.39 BetGXhC9.net
>>242
GOいいな
278:デフォルトの名無しさん
17/10/30 10:22:57.04 sonZMQS5.net
>>271
Goは色々足りないところも多いが、生産性にステガン振りしてるって点で評価できる
Rubyみたいに前借りではない
279:デフォルトの名無しさん
17/10/30 11:06:54.77 ywxMmK0+.net
Rubyの教訓は、「Perlよりマシ」に全振りしたけどPythonと比べると大したことなかった
280:デフォルトの名無しさん
17/10/30 17:27:48.73 ExtYgMew.net
Goのどこに生産性があるんだよ
281:あ
17/10/30 18:12:26.17 53AKimFl.net
>>274
そりゃ、ひたすら書ける部分だろ。
迷わんぞ。書く量が多いだけで。
生産性と言うと表現力ばっかり取り上げられるが、単位時間あたりのアウトプットも見ないといかん。
その点、信じられないレベルで楽。
282:デフォルトの名無しさん
17/10/30 19:01:45.29 ExtYgMew.net
>>275
行数多くなるから生産性が高いように見えるだけだろ
283:デフォルトの名無しさん
17/10/30 19:15:05.61 LhEsAIcv.net
そいつは関数型しったか野郎なので話すだけ無駄
無知が無知なりの常識で頑張って答えてくれるかも知れないけど参考にはならないだろう
284:デフォルトの名無しさん
17/10/30 20:23:14.16 1YWjfXwW.net
迷わずひたすらに書かれたF77のコード読みづらすぎ
285:デフォルトの名無しさん
17/10/30 20:45:20.95 uihdCXQ7.net
Goは構造体へのタグ埋め込みや、codegenまわりのツールが充実してるお陰で
ボイラープレートコードを書かんでいいのがでかい
それだけならLLでもできるが、テスト作ってから設置して実行するまでの作法が簡潔に固まってるのが更に強い
少なくとも時間当たりのテスト含めた成果物は他の言語と比べ物にならん
286:デフォルトの名無しさん
17/10/30 21:31:16.17 d6rNWUAL.net
逆に、汎用ライブラリ書こうとするととたんにinterface地獄になってボイラープレート増えるんだがな
だから、目の前の仕事の案件片付けるのに特化した言語だと思ってる
287:デフォルトの名無しさん
17/10/30 22:18:12.05 1mVUn5ql.net
>>221
ちょっといまさらだがRust版平衡木(AA木)をリファクタリングしたぞ。
まあ、だれも書いてくれそうになかったし、数日
288:たったらまたやる気も出たから自分でやり直したわけだが。 基本的には②だが、すべて当てはまるな。 RustはNull安全なのでOption型のチェックが必須、コンパイラに所有権を伝えるためas_ref等が必要、 デフォルトはイミュターブルのためミュータブルを扱うためにmutキーワードが必要などが主な理由。 そこら辺の安全性と引き換えに多少は目をつぶってくれという感じはある。 ③に関しては副作用もあるが、それよりもどちらかというと木構造の回転操作みたいな 変数の所有者が次々に代わるようなコードはRustでは所有権システムがあるため書きづらい。 とはいえ、前のコードに比べれば大分マシにはなったかと。 まあコードが綺麗か汚いかなんて個人の主観によるところが大きいから、まだ文句を言うやつもいると思うけど。。。 特に>>217なんかには「どんなアルゴリズムだろうが言語によって最適な書き方は違う」 ということをきちんと理解してもらいたい。 あと、コードのリンクを貼るという手段があることを知った。 比較できるように全て載せておく。 C版 https://wandbox.org/permlink/fc1xI7dDCdOMgysC Rust版 before https://wandbox.org/permlink/cbzzpLw97K2Tydk1 Rust版 after https://wandbox.org/permlink/ppQOQREnDlpccpJV
289:デフォルトの名無しさん
17/10/30 22:28:38.00 LhEsAIcv.net
ほう
290:あ
17/10/31 00:08:53.17 VssU1hfB.net
>>276
そーでもないぞ。
>>277
関数型以外シッタカの意識だけ高い系に言われてもな。
人をディスるんじゃなくて、自分を高めれば?
無理なんだろうけど(笑)
291:デフォルトの名無しさん
17/10/31 00:13:46.41 AszsXbkO.net
関数型以外シッタカ←根拠なしのただのディス
からの
人をディスるんじゃなくて自分を高めれば?
自戒かな?
292:デフォルトの名無しさん
17/10/31 00:16:52.10 xO8W0Vv5.net
そいつの相手しても得るもん無いってことくらいはそろそろ分かって欲しい
293:あ
17/10/31 00:17:14.17 VssU1hfB.net
言い返されてそれはみっともないリアクションだな。
よほど、関数型言語が好きなんだね(笑)
専スレ立ててやれよ。次世代言語でもないわ。
294:あ
17/10/31 00:19:38.37 VssU1hfB.net
好きなら好きで良いのに、なぜ固執するかわからん。
ナイフで整備できるようにネジを全部マイナスネジにしたロシア(?)の戦車みたいな間抜けな話と同じように、目的に対して使う道具なんか考えりゃ良いのに。
295:デフォルトの名無しさん
17/10/31 00:26:46.01 AszsXbkO.net
よほど関数型言語が好きなんだね←誰もそんなことは言っていない
なぜ固執するかわからん←固執していない
誰と闘っているんだコイツは。少なくとも俺じゃねえな
296:デフォルトの名無しさん
17/10/31 00:39:43.26 H/nTnETZ.net
おまえら旧世代猿人類どもはウンコブラシのプェチピィのゲリクソピィでもプリプリしてろ
297:デフォルトの名無しさん
17/10/31 01:21:58.60 nWIRKYZE.net
>>281
コンパイル通らんのを試行錯誤してる間に答えが出てしまった悲しみ
まとめてもらって感謝。勉強してみるわ
298:デフォルトの名無しさん
17/10/31 07:32:43.21 nUaOreAB.net
>>281
比較を載せてくれてありがたい。
やっぱり
C -> rust before -> rust after
となっていくごとに読みづらくなってるんだけれど。。
299:デフォルトの名無しさん
17/10/31 07:35:28.96 u9ib2mEN.net
>>270
それの何が反論になってると?
元から速度云々関係なしにネイティブ変換できない部分があったんだよ
300:デフォルトの名無しさん
17/10/31 09:37:19.94 EcpjGxny.net
>>291
root.as_ref().unwrap().level
を
root->level
と書いて良いというシンタックスシュガーを導入すれば良い気がする
301:デフォルトの名無しさん
17/10/31 09:56:03.51 nWIRKYZE.net
unwrapはNoneだった場合にランタイムクラッシュする関数だから本来使ったらアカン関数
この辺はnil安全うたってる言語はおおむねそう
302:デフォルトの名無しさん
17/10/31 10:23:24.56 2R0mp116.net
Goは最初期Javaかっていう後退レベルだし、Rustは木構造すら数日かかりで必要な難解言語だしでどっちもクソ言語
はいこれで仲直り
303:デフォルトの名無しさん
17/10/31 10:43:17.86 gJSMspm+.net
パラダイムシフトを強いる言語は地雷が多いな。
俺はリアクティブプログラミングで懲りた。
304:デフォルトの名無しさん
17/10/31 10:44:19.94 Bl0tBU4z.net
数日がかりというが兎と亀みたいにRust以外の言語は寝てたから
Rustが一番早い
305:デフォルトの名無しさん
17/10/31 11:07:20.83 AszsXbkO.net
その理屈だとCが一番じゃん?
306:デフォルトの名無しさん
17/10/31 11:21:14.97 f3HKFkZK.net
結局当面はC#系(TypeScript/Kotlin)の天下ということでよろしいか
307:デフォルトの名無しさん
17/10/31 11:40:23.38 YHJiaIXY.net
>>294
そういうこと。だからRust版 afterではunwrapはほとんど使用していない。
通常、Optionの中身を取り出すときはunwrap_or, unwrap_or_else, unwrap_or_default
のどれかを使用してNoneだったときはどうするのか指定する。
unwrapを使用するときはアルゴリズム的に中身が存在しないこと自体がありえなくて、
Noneならバグと判断してむしろそのタイミングで落ちてバグを知らせてほしい時のみ使用する。
この仕組みによってNullが存在しない(いわゆるNull安全な)言語を実現している。
多少書くのは面倒だが「10億ドルの損失」に比べればこのくらいカワイイもんだろってこと。
ちなみにC#なんかでも導入が検討されているらしいが、既存コードとの互換性が保てないので難儀しているようだ。
Type scriptみたいにコンパイルオプション付ければいいのにとか俺は思うんだが、なんか理由があるのかな?
308:デフォルトの名無しさん
17/10/31 11:47:33.10 f3HKFkZK.net
コンパイルオプションだと既存コードを一緒にビルドできなくなるだろ
互換性を絶対神とするC#に導入するなら、#pragmaでソースファイルごとにオプトインするか、
asyncみたいに修飾子で特定のスコープだけ解釈を変えるか、
デフォルトをnull非許容にするのは諦めてstring!にするかのいずれかだよ
309:デフォルトの名無しさん
17/10/31 12:45:40.51 JU1cd7E4.net
Goが優れてる点はcode生成に最適化されてる点だと思う。
Goはメソッド定義が同じディレクトリ内なら何処でもできる。
つまりコード生成によってメソッドを追加できる。
ファイルでコード生成の箇所と自作の箇所をわけれる。
310:デフォルトの名無しさん
17/10/31 12:48:35.27 JU1cd7E4.net
>>296
Rxはもっとシンプルな定義にできないのかなーって思う。
「全てはストリーム」という考え方はシンプルなのにいざ使おうとすると
ライブラリは複雑すぎる。
もしかしたら言語まるごとRxの考え方で作ったら簡単になるんかな。
Rubyの作者がStreamって言語をつくってるけど、、、、完成しそうもないし
311:デフォルトの名無しさん
17/10/31 15:40:47.27 ivXWtcCM.net
rust で
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
を
match root {
Some(node) => node.level,
None => 0
}
と書かないのは何故?所有権とかの問題?
312:デフォルトの名無しさん
17/10/31 16:19:26.73 YHJiaIXY.net
>>304
え?どっちでもいいよ?
リファクタリング後のコードでは使用してないはずだけど。。。
それでもいいし
root.as_ref()
.map(|node| node.level)
.unwrap_or_default()
でもいいし
if let Some(ref node) = *root {
node.level
} else {
0
}
でもいい。どれを使うかは好みの問題。
ただし、>>304のmatch文は正確にはこうなると思う。
match *root {
Some(ref node) => node.level,
None => 0,
}
rootはたぶん型が &T (借用) だから*で参照外しないといけないし、
ref は所有権を「移動」じゃなくて「借用」するために必要。
313:デフォルトの名無しさん
17/10/31 17:24:30.09 YHJiaIXY.net
>>304
>> リファクタリング後のコードでは使用してないはずだけど。。。
誤解を招くかもだな。すまぬ。
if root.is_none() {
return 0;
}
root.as_ref().unwrap().level
のほうはリファクタリング後のコードでは使用してないはずだけど。。。だな
314:デフォルトの名無しさん
17/11/01 08:38:18.68 R9aAc8x6.net
なるほど。ありがとう。
315:デフォルトの名無しさん
17/11/02 00:38:25.36 0kOiRsC5.net
いいってことよ
316:デフォルトの名無しさん
17/11/02 08:54:18.64 N8nuZaLN.net
if not is_none 判定時に実行される、
コンパイラさんにも非noneと分かるコードパスでは
unwrap省略できれば読み書きする際にもPanic起こさないと分かりやすいしシンプルになるな。
実際にも最適化でチェックのコードも吐かれてないだろうし。
317:デフォルトの名無しさん
17/11/02 12:08:13.82 jpQjT5m9.net
>>308
んん?ちょっと待て。良くないぞ
誰だぁ?俺の手柄を取ったヤツは?
318:デフォルトの名無しさん
17/11/02 12:58:12.12 jpQjT5m9.net
>>309
そのやり方は所有権システムの関係で難しいかもしれないな。
非noneが分かっていたとしても中身を取り出す時に所有権を移動する借用するのか決める必要がある。
そして、移動するにせよ借用するにせよ、取り出した時点から所有権システムの制約により
その親にあたるOption型の変数がスコープを抜けるまでは参照不可になる。
移動する場合は、スコープが抜ければOption変数ごと一緒に消費されるはずなので問題ないと思うが、
借用の場合は、スコープを抜けるまでOption変数が参照不可のままじゃ困る場合も多いだろう。
結局は、if let や match 等のスコープを使って借用が終わるタイミングを
コンパイラに知らせるための表現が必要になるんじゃないかと思う。
自分も所有権システムを完全に把握してるわけではないので、間違ってたら指摘してくれ。
319:デフォルトの名無しさん
17/11/02 16:01:49.17 24MXnSEE.net
panic の代わりに未定義動作を行うことで、最適化時にNone時の経路が取り除かれる unchecked_unwrap() とかある。
外部クレートだけど。
320:デフォルトの名無しさん
17/11/02 18:20:00.53 hBgfRlI6.net
FFIと静的型は相性悪いなあ
321:デフォルトの名無しさん
17/11/02 21:04:39.70 aCC/XP/X.net
嫌われているプログラミング言語ランキング - Stack Overflow
URLリンク(news.mynavi.jp)
322:デフォルトの名無しさん
17/11/02 21:06:15.09 aCC/XP/X.net
最も嫌われているプログラミング言語は?--Stack Overflowが調査結果を発表
URLリンク(japan.zdnet.com)
323:デフォルトの名無しさん
17/11/03 01:51:06.45 8/ecCbDm.net
だから何度も言ってるだろ
型なし能なし未来なしの糞言語が
使ってる連中は今すぐ首吊ってなるべく苦しんで無様に血糞尿にまみれて死ねよ
324:デフォルトの名無しさん
17/11/03 01:55:11.36 KPeHygtG.net
>>316
死ぬだけじゃダメだな
来世でも来来世でも苦しみ抜いてもらわないと
325:デフォルトの名無しさん
17/11/03 09:09:40.17 8/ecCbDm.net
>>317
せやな
一族郎党末代まで呪われて地獄の業火で焼かれるべきだ
326:デフォルトの名無しさん
17/11/03 09:10:55.64 FED00RZ3.net
その政策の予算をいくらまでなら払えるか考えよう
予算なしは能なし未来なし
327:デフォルトの名無しさん
17/11/03 10:56:17.26 Z9aKc5RB.net
すまんが型なし言語って何ンゴ?
328:デフォルトの名無しさん
17/11/03 11:18:42.35 4GoOMjot.net
機械語のことかな?
329:デフォルトの名無しさん
17/11/03 11:44:21.79 TD8MDvzA.net
変数に型の無い言語か
330:デフォルトの名無しさん
17/11/03 14:34:55.34 5BCFVkq4.net
Go言語で
var 変数名 = 値
�
331:フ表記の時は型を省略できるそうですが 値が数値で、値から型が確定できない場合はどうなるのでしょうか? 値から型を確定できるのは文字列型と真偽値くらいだと思いますが
332:デフォルトの名無しさん
17/11/03 14:43:12.88 tw8puOLs.net
>>323
値に応じたデフォルトの型か決まっている
333:デフォルトの名無しさん
17/11/03 14:58:26.87 5BCFVkq4.net
>>324
なるほど
たしかにだいたい推測できますね
ありがとうございました
334:デフォルトの名無しさん
17/11/03 15:00:00.55 fYVptX6H.net
>>319
予算がないからクソゴミクズ汚物言語を使い続ける?
地獄に落ちろビチグソ野郎
335:デフォルトの名無しさん
17/11/03 15:50:26.42 Tuvr4QS2.net
VBA は explicit 付ければ堅く書くこともできるんやで~。
そんな書き方するやつあんまいないけど。。
336:デフォルトの名無しさん
17/11/03 16:36:07.91 FED00RZ3.net
>>326
誘導尋問するなよ
というかどうせ誘導するなら天国に誘導しろよ
337:デフォルトの名無しさん
17/11/03 17:02:16.49 Ro85MhDs.net
>>320
PHPは型がないから
とかおっしゃってるいつもの人だろ
338:デフォルトの名無しさん
17/11/03 23:58:20.96 HHSOzVXl.net
>>328
なーにが誘導尋問じゃ
どんな理由があろうと下痢未満言語未満のぷぃーえっちぷぃーを使うことを肯定する時点でお前は地獄行きじゃ!
地獄でビチグソにまみれて二度と転生してくるな!!
339:デフォルトの名無しさん
17/11/04 00:00:53.97 I+CIRt80.net
次スレはワッチョイつけないとな。
330みたいな異常者をNGするために。
340:デフォルトの名無しさん
17/11/04 00:03:54.76 gh0lmyH1.net
HHVMを使うという手もあるんじゃ
341:あ
17/11/04 00:24:15.28 CAYPLKQ7.net
と言うか、では実務ではウェブの案件には何をお使いで?と聞きたいな。
ホントに何なんだろ。
342:デフォルトの名無しさん
17/11/04 00:42:18.37 OREBcHC8.net
>>333
330じゃねーけど、フツーにRailsって答えそうではある
フロントいらないAPIサーバならFlaskかGoかってところか
343:デフォルトの名無しさん
17/11/04 00:42:59.68 xCfQAlvJ.net
node + ts
未だにphpでlampとかもう(笑)も付かないレベル
344:デフォルトの名無しさん
17/11/04 00:46:07.02 sWNabS3I.net
叩きは理想の言語とやらでRails越を越える
フレームワークを作ってからしてくれ。
345:デフォルトの名無しさん
17/11/04 02:10:05.95 gh0lmyH1.net
俺の中ではgoでgoaかな。swagger.jsonを介して通信周りもコード生成できる。
API設計するとclientライブラリまで一括して作れるからSPA開発が捗る。
TypeScriptのクライアントライブラリ生成してapiの返すjsonのinterfaceまで作ってくれるから至れり尽くせり。
346:あ
17/11/04 02:22:57.88 CAYPLKQ7.net
Railsか。なるほどありがち。
APIサーバはGoとかnode確かに便利。
tsは置いといて。
あれやるくらいならc#とnancyで書いたほうが余程安定する。寿命の面でも。
そして.net coreすごいわ。
TSは最近イケイケドンドン過ぎる気がする。
イシューは閉じれてないけど、次以降のリリースに頑張るわ、ところでこれ!新機能盛りました!
みたいなノリ。
347:デフォルトの名無しさん
17/11/04 08:30:20.53 xYAYvDdv.net
nodeはnodeで闇深いがな……あいつ結構非自明なメモリリーク起こしやがる
ts on nodeってその辺解決できてるのか?
348:デフォルトの名無しさん
17/11/04 08:35:04.21 xCfQAlvJ.net
で。おまえは実務ではウェブの案件には何をお使いで?
PHPとか言って笑いを取る必要はないぞ
349:デフォルトの名無しさん
17/11/04 09:38:29.95 ZfOcIIq3.net
Django
何だかんだ言われてるけど強いよこいつは
350:あ
17/11/04 13:55:52.44 CAYPLKQ7.net
>>340
何でも使う。書捨てでビューがあればphp
ビューがあって書捨てじゃなけりゃasp.net
Tomcatとservletは嫌い。
安定したAPIサーバはGoかc#とNancy。
nodeは個人用。
イントラ多いから、デプロイ先がWindowsサーバで、セットアップが必要な処理系は入れづらいのよね。
phpは過去の案件ですでに入ってたり、だいたいIISは動いてる。
351:デフォルトの名無しさん
17/11/04 15:34:33.21 F1n0Y3Pu.net
ウチはseaside.st
352:デフォルトの名無しさん
17/11/04 18:58:28.17 xCfQAlvJ.net
>>342
浅く広くの器用貧乏なんだね
どうりで、知識はあるけど深い話になるとボロがでるわけで
353:あ
17/11/04 22:22:28.71 F/oA6Mmk.net
>>344
器用貧乏だろうなぁ。メインの言語以外は特に。
そもそもしばらくシステム屋じゃないし。
道具としては色々使うけど。用を果たせば良い部分と、趣味として使う分は別けてる。
流石に20代でもあるまいし、わきまえてるよ。仕事は。
ボロが出るというより、単純に知らんので参考になってる事も多いよ。
354:デフォルトの名無しさん
17/11/04 22:23:05.19 M2bfsYrO.net
しったかするから、自分の知らない領域ついても知識があるように見えるだけだぞ
355:あ
17/11/04 22:28:21.22 F/oA6Mmk.net
>>346
勝手にそう見てるだけで、俺自身が知ってるよ言ったことはあんま無いんじゃないかな。
俺はこう捉えてる、は話すけど。
356:デフォルトの名無しさん
17/11/04 23:34:55.56 M2bfsYrO.net
>>347
854 :デフォルトの名無しさん:2017/05/30(火) 13:17:09.64 ID:ynDKwlR5
851
>当たり前だがHaskellみたいに実行時に多相性を解決してる
おいおい、Haskellの実装知ってんのか?
Haskellで実行時に型情報が必要な多相性はほんの一部だ。
ほとんどの場合、コンパイル時に解決される。
863 :あ:2017/05/30(火) 16:00:40.31 ID:CncaY8jR
854
知ってるよ。実行時に多相性を「しない」のならその主張もわかるが、「ほとんどの場合しない」は「してる」だよ。
「施錠確認した?」「ほとんどしました」って、要は全く施錠の確認できてないのと変わらんよね。
357:あ
17/11/05 00:07:40.19 NGm20Afw.net
>>348
おお、それは知ってたから。
あんまりと書いてるからわかるだろうけど。
358:デフォルトの名無しさん
17/11/05 01:40:33.90 LYbC1fh+.net
>>341
scaffoldがないのが非常に残念
俺は言語としてはPythonが好きなのに、webとなると無意識にRailsを選ぶようになってしまった
359:デフォルトの名無しさん
17/11/05 11:59:20.40 3qpI8vVt.net
器用貧乏の対義語に名前をつけたい
サンクコスト貧乏かな
360:デフォルトの名無しさん
17/11/05 12:02:14.14 KWRWj+y1.net
Railsって未だに生産性高いんか。
PHPがパクっていろんなフレームワーク作ってるけど
361:デフォルトの名無しさん
17/11/05 12:11:59.33 /wBATO2P.net
ペチパーって何であんなにフレームワーク作りたがるんだろうな
自己主張が強いのか、ママの愛が足りなくて承認欲求に飢えてるのか
362:デフォルトの名無しさん
17/11/05 12:16:38.92 KWRWj+y1.net
>>353
たかがテンプレートエンジンがでしゃばりやがって感ある。
でもインスタンスの生存時間が短いから開発者に優しい言語ではある。
まぁwebScoketとか繋ぎっぱなしにするような仕組みには弱くなるけど
363:デフォルトの名無しさん
17/11/05 12:26:54.29 LYbC1fh+.net
>>352
なんだかんだであれは死なないよ
資産が豊富で、webのラピッドプロトタイピングにおいては群を抜いておる
Railsライクな他言語のフレームワークがRailsを羨ましがる場面はあっても、恐らくその逆はない
364:デフォルトの名無しさん
17/11/05 12:
365:51:00.18 ID:CS19J9AT.net
366:デフォルトの名無しさん
17/11/05 13:29:53.61 KWRWj+y1.net
時代はSPAの方向を向いている中あえて今Rails使うメリットってあるんかな。
最初からWebAPI提供できたほうがいいし。
React覚えるとモバイルももれなく作れるのがいい
367:デフォルトの名無しさん
17/11/05 14:06:42.08 k+vH6ph9.net
Node.jsとTypeScript使っとけば幸せになれるということ?
368:デフォルトの名無しさん
17/11/05 14:17:26.71 o4zLpSg/.net
>>358
webassemblyの時代が来るまではね
369:デフォルトの名無しさん
17/11/05 14:50:39.74 PoYQIzOm.net
wasm時代の覇権がどうなるか想像出来ん
とりあえずC++は安定だろうけど
370:デフォルトの名無しさん
17/11/05 15:02:45.09 /wBATO2P.net
PHP使ってれば食いっぱぐれることはないやろ
ガイジどもが作った負の遺産を保守し続ける楽なお仕事が半永久的にあるで
371:あ
17/11/05 15:14:12.83 kqNrnSiP.net
>>351
器用貧乏の反対は、ホントにその役職に居なければ「大先生」とか「教授」だろ。
372:デフォルトの名無しさん
17/11/05 15:32:04.98 3qpI8vVt.net
フレームワークやIDEを
ドラえもんの道具にたとえると四次元ポケット
373:デフォルトの名無しさん
17/11/05 20:51:56.70 vWNY+clC.net
>>361
真っ先に自動化されるか、見捨てられるシステムだな。
374:デフォルトの名無しさん
17/11/05 20:55:20.91 Fa7z1jl7.net
COBOLやJavaならわかるけどPHPではなあ
ある日突然消えてなくなったところで大した問題のないゴミばかりだろ
375:デフォルトの名無しさん
17/11/05 21:28:49.35 wTe1xxd0.net
おい、アスペチプァさんを馬鹿にするなよ
彼らが本気出したらお前ら血便漏らして死ぬようなコード書くぞ
376:デフォルトの名無しさん
17/11/05 21:40:31.01 RFcD7Uma.net
日本の技術力ガーとか言ってたくせに
結局全部嘘ばかり
バカチョン以下やでホンマ
そりゃペチパーが闊歩しますわ
Rustアンチくんはペチパー
はっきりわかんだね
これだからペチプァは
それ以上ペチパーの心のより所を叩くのはやめてやれw
彼ら、憤死してしまうでwww
ペチパーって何であんなにフレームワーク作りたがるんだろうな
自己主張が強いのか、ママの愛が足りなくて承認欲求に飢えてるのか
おい、アスペチプァさんを馬鹿にするなよ
マジキチ
377:デフォルトの名無しさん
17/11/05 23:19:35.12 wTe1xxd0.net
>>367
巣へお帰り
自称次世代言語議論スレ[PHP PHP PHP] [無断転載禁止]©2ch.net
スレリンク(tech板)
378:デフォルトの名無しさん
17/11/05 23:22:51.31 2EuxY2gH.net
ペチアンチの面白語録非難してる奴って胸に突き刺さって抜けないペチパーか?
379:あ
17/11/06 00:12:29.28 /hMSyilp.net
好きの反対は無関心になるはずだしな。
嫌いな事と言うのは、実は興味があったり、かつて好きだった事があったり、強制され抵抗できなかった惨めさがあったりするもんだ。
あまり人の憎しみを面白半分で扱ってはいかんな。
380:デフォルトの名無しさん
17/11/06 01:15:12.61 TNQjb5Zj.net
>>357
SPAは一番最初のローディングがアホみたいに遅いじゃん
これ解決するためだけにSSRもやるの辛い
じゃあ最初からSPAいらないやってなる
381:デフォルトの名無しさん
17/11/06 01:24:21.52 HP5doPtx.net
【泥沼】 京都市のシステム開発失敗、IT企業に7億5千万円の損害賠償請求 企業側は支払い拒否
スレリンク(news板)
382:デフォルトの名無しさん
17/11/06 07:18:27.19 9YhppvEm.net
>>371
dynamic importが実装されている現状から言って最初のローディングが遅いって問題は解決する。というかminifyすれば十分小さい。
せいぜい500kbとかでしょ開発中は10MBとかだったりしてビビるけど。