X



次世代言語9[Haskell Rust Kotlin TypeScript Dart]
■ このスレッドは過去ログ倉庫に格納されています
0002デフォルトの名無しさん垢版2018/03/06(火) 10:30:06.56ID:nMdAiw1E
Dartきてんね
0004デフォルトの名無しさん垢版2018/03/06(火) 11:43:03.15ID:DTiE8Uxw
Googleは言語選択保守的すぎるだろ
関数型言語採用しないどころかGolang作っちゃう時点で
0008デフォルトの名無しさん垢版2018/03/06(火) 20:42:29.39ID:cU7JZ0/j
>>6
enum・traitと関数型は関係ないだろ?どちらもHaskellの型システムをパクって来たってだけ
関数型言語の特徴として真っ先に思いつくのは関数を第一級オブジェクトとして扱えるか否かというところだろうな
ただその考え方だけだとC言語でさえ関数ポインタがあるから関数型言語に含まれてしまうことになる
そこからさらに副作用を出来る限り避ける文化があるか否かとかも判断基準になるのかな?
言語の文化とかふんわりした表現は具体性を伴わないから説得力に欠けるんだよな
改めて関数型を具体的に説明しろと言われると難しいな…
0009デフォルトの名無しさん垢版2018/03/06(火) 20:57:45.92ID:xvhpcg6j
>>8
関数ポインタは確かにC/C++系独自だけれども(Javaにはなかった)第一級オブジェクトではない、とおもうよ
0012デフォルトの名無しさん垢版2018/03/06(火) 21:40:19.40ID:MoZw2NXu
c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。
0015デフォルトの名無しさん垢版2018/03/06(火) 22:19:34.09ID:xvhpcg6j
C++ のラムダ式でYコンビネータを記述できるのですか?
できないのならラムダ式などと呼称していいのでしょうか?
0016デフォルトの名無しさん垢版2018/03/06(火) 22:36:28.04ID:qto5wiY+
>>15
2つの話題を勝手に混ぜるな
>>14>>12 に安価付けなかったのは俺が悪いけどさ

実行時の環境を用いた関数定義の有無についてc++ならラムダ式を使おうという話をしているだけだ
しゃーねーだろ言語機能としてラムダ式って命名されてるんだから

関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない
Yコンビネータに関しては確かできた気がするが
0021デフォルトの名無しさん垢版2018/03/07(水) 01:21:30.28ID:EDSn5kWw
goの攻めてるところ。
ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。
例外を辞めた。
公開、非公開をメンバ名が大文字始まりかどうかで決めるように。
クラスをやめて、構造体だけにした。
インターフェース実装は該当メソッドの有無で決定


といった具合に他の言語の当たり前の部分を壊した。全然保守的とは思えないが。
0022デフォルトの名無しさん垢版2018/03/07(水) 01:26:49.68ID:EDSn5kWw
後は未使用ライブラリのimportをコンパイルエラーにするというのも、他の言語であんまり見ない気がする。 

これは、積み重なるとコンパイル時間に影響するから、言語設計にコンパイル時間の考慮を重きにおいている証拠の一つと言える
0023デフォルトの名無しさん垢版2018/03/07(水) 01:27:38.81ID:487L5ZU0
>>21
例外とか構造体はC時代に逆戻りしてるだけだし、静的ダックタイピングは他の言語にもあるし、githubのurl指定は結局色々な問題起きてるし(この間のgo-bindata騒動とか)、公開/非公開の大文字小文字も気軽に変えられなくて不便だし何のメリットがあるんだ?
0024デフォルトの名無しさん垢版2018/03/07(水) 01:28:30.13ID:487L5ZU0
>>22
他の言語はエラーにはしないけど警告出す
初期の開発中は未使用importエラーも邪魔なだけでしょ
0025デフォルトの名無しさん垢版2018/03/07(水) 01:41:57.73ID:EDSn5kWw
>>23
むしろ、今まで当たり前にあった言語仕様を振り返って本当に必要かどうかを再検討して
削りに削った仕様だと思うけどな。

c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、
すごくしっくりきた。
0026デフォルトの名無しさん垢版2018/03/07(水) 01:51:00.36ID:EDSn5kWw
>>24
IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。
linuxカーネルもコンパイルすると警告出てるし
0027デフォルトの名無しさん垢版2018/03/07(水) 01:54:34.87ID:487L5ZU0
>>25
構造体とクラスに関しては個人的に同意
ただ型パラメーターとか例外がないのはありえない
エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ
型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない
0029デフォルトの名無しさん垢版2018/03/07(水) 02:03:48.32ID:EDSn5kWw
>>27
例外いるかな?
tryで包まなきゃいけないメソッドや、関数ってドキュメント読むか、実際に実行するまでわかんなくないか?
言語によっては例外が飛ぶ可能性がある関数かどうかわかるんだっけ?
jsはわかんないから不便。
0030デフォルトの名無しさん垢版2018/03/07(水) 02:08:04.97ID:EDSn5kWw
>>27
結局interface{}使うのかよ的なね。わかる。
俺はコード生成に可能性を見出してる。
goはコード生成フレンドリーな言語仕様だし標準ライブラリに、AST系が揃ってるから
0031デフォルトの名無しさん垢版2018/03/07(水) 02:19:43.98ID:487L5ZU0
>>28
nodeもあったけどnodeの場合はnpmの仕様変えれば解決出来るやん
でもGoはgithubに依存してるから解決不可能じゃん

>>29
それならEither型作ってメソッドチェーンで書けるようにして欲しい
Goのエラー処理は関数呼び出し毎にしないといけないからだるすぎ

>>30
型パラメーターが複雑だから、コンパイル速度に影響出るからって入れなかったのにコード生成しろって矛盾してない?
どっちが複雑だよ。どっちがコンパイル速度に影響出るよ?
0032デフォルトの名無しさん垢版2018/03/07(水) 03:07:39.19ID:EDSn5kWw
>>31
コード生成はプリプロセスとしてコンパイルの度に毎回動かすわけじゃない。stringerとか使ったことない?

inportに関しては、
nodeがnpmの仕様を変えたら解決するならgoもそうすればいいのでは?

現状でも、vendor/もコミット対象にしてしまえば、依存ライブラリを管理対象にできるから

サードパーティライブラリに頼る以上はライブラリ作者の影響をどの言語だって受ける。
0033デフォルトの名無しさん垢版2018/03/07(水) 03:12:09.66ID:rBtvNRXK
Yコンビネータ forall a. (a -> a) -> a のように
forallがつく関数は第一級オブジェクトにならないのが普通だ
総称型がある比較的新しい言語はもう第一級オブジェクトにこだわらない
0035デフォルトの名無しさん垢版2018/03/07(水) 07:45:36.47ID:zWLX9kTq
goってなんだかよく使われてる以外の理由で使う理由がないよ
同じことするならrustのがいいわ
0036デフォルトの名無しさん垢版2018/03/07(水) 08:21:04.51ID:JwI5qwvI
Goはマイクロスレッド得意なのはありがたいな。
あとチャンネルと。
そして静的リンクがデフォ。
これだけで、Go使う価値あると思ってる。
0037デフォルトの名無しさん垢版2018/03/07(水) 09:16:51.01ID:L0uTy1l9
>>35
WEBサーバ: go,php,ruby,java,Elixir
IOSアプリ:swift,dart
Androidアプリ:java,kotlin,dart
WEBクライアント:JavaScript,elm,TypeScript
cliツール:go

どこにrustが入る?
0038デフォルトの名無しさん垢版2018/03/07(水) 09:50:59.47ID:vL0QsqKL
Rustは生ポインタが使えるし、C ffiが比較的容易に可能、そのうえwebassemblyにまで対応してる
>>37以外にも組み込み、OS、ドライバ、デスクトップアプリ等どこにでも入ろうと思えば入れる
C++の後継を目指してるだけあってかなり万能な言語ではあるんだが
問題は普及するかどうか…
0039デフォルトの名無しさん垢版2018/03/07(水) 10:25:38.57ID:487L5ZU0
>>32
goはgithubに依存してるからgithubの仕様変えないと駄目じゃん
具体的にはリポジトリやユーザーの削除禁止。でもそれは無理だろ?

>>32
毎回動かすわけじゃないけど、変更あったら動かすだろ?
しかもそれは他の言語でも差分コンパイルで出来る
0040デフォルトの名無しさん垢版2018/03/07(水) 10:51:52.29ID:JwI5qwvI
>>39
githubが便利だからgithub使ってるけど、別にgithub以外でも公開出来るし、依存してると言うより多くの人間がgithub使ってるだけでは?
0041デフォルトの名無しさん垢版2018/03/07(水) 13:02:44.71ID:s6OLNjGp
プログラマの労力よりコンパイル速度を優先してるのが謎
0044デフォルトの名無しさん垢版2018/03/07(水) 13:14:29.36ID:upKMxxIv
>>38
Rust嫌いじゃないけど普及しないと思う
今年のロードマップもwasmとCLIとNetwork頑張る、っておとなしすぎだろ
いろいろできるならもっとぶっ込んで来いやゴルア ってね
0046デフォルトの名無しさん垢版2018/03/07(水) 13:45:40.70ID:MMWrPDHz
>>37
ウエッブサーバ: rust
他のサーバ: rust
ウエッブクライアント: rust
CLI: rust
0048デフォルトの名無しさん垢版2018/03/07(水) 14:07:05.01ID:vL0QsqKL
>>46
一応マジメに返しておくと現状webクライアントはrustだけじゃダメだよ
現状ではまだwebassemblyでDOM操作はできないし他にも出来ないことは沢山ある
webクライアントにはRust+JSの組み合わせが必須になる

ただし、Rustのマクロ使ってRustの中にJS書いてビルド時にwasmとJSを両方吐きだして
無理やりRust onlyを実現してるstdwebとかいう先進的?なフレームワークも存在する
あのクレート発見したときは「こいつ天才かよ?」って思った
0049デフォルトの名無しさん垢版2018/03/07(水) 14:22:34.19ID:L0uTy1l9
Rustは気になるけど、さわるモチベーションとなるキッカケがないんだよな。
FirefoxベースのElectronとかでて直接レンダリング部分をrustでいじるようなライブラリがでたら考えるかな
0051デフォルトの名無しさん垢版2018/03/07(水) 15:25:36.37ID:n65ilySP
jsのファミコンエミュを苦労してrust(→webassembly)に書き直してもぜんぜん速くならないという悲しい現実。
ハマるユースケース少なそう。
0052デフォルトの名無しさん垢版2018/03/07(水) 16:03:24.12ID:vL0QsqKL
>>51
憶測でしがないが、それはRustやwasmが遅いというわけではなくて
ファミコン程度の演算ならJSだろうがwasmだろうがパフォーマンス的には大差なくて
それよりもwasmとJSでデータをやり取りする際のコピーのコストが高くついてるんじゃない?
3Dゲームの演算とかもっと重い処理じゃない限りwasmのメリットが活きてこないんじゃ…
もしくは、将来的にwasmから直接DOM操作ができるようになれば…
0053デフォルトの名無しさん垢版2018/03/07(水) 16:26:53.26ID:lIV1PIoV
GoとRustはバランスが悪いんだよな
ラムダ式とかジェネリクスとかGCがあればこそ手軽に使えるものなのに
GoはGC有るのにどちらも無くて
RustはどちらもあるけどGCが無いから不便
0055デフォルトの名無しさん垢版2018/03/07(水) 16:48:10.62ID:vL0QsqKL
>>55
RustにARCがあるってのは誤解を招く恐れがあるので補足
RustではARCは標準ライブラリとして用意されてる
SwiftみたいにARCでメモリ管理してるわけじゃないよ
0056デフォルトの名無しさん垢版2018/03/07(水) 17:13:59.44ID:8jwTNUb7
Rustなんてmozillaに金掴まされた奴しか見向きもしてない何にも使えない言語が
次世代言語とか笑わせんでくれ
0059デフォルトの名無しさん垢版2018/03/07(水) 18:15:46.78ID:EDSn5kWw
googleがxi-editor作ってたり、
後railcarってdocker代替作ってたり。
どっちもあんまり魅力的じゃないないな。
ゲームエンジンがrustで書いたらどうなるか興味ある。
0065デフォルトの名無しさん垢版2018/03/07(水) 19:17:10.88ID:487L5ZU0
>>53
本当これだよな
両方バランスが悪い
ネイティブでバランスの良いKotlinみたいな言語欲しい
Kotlin Nativeはどうなんだろうね
0066デフォルトの名無しさん垢版2018/03/07(水) 20:42:19.89ID:vL0QsqKL
>>53
ラムダ式とジェネリクスはGCとはあまり関係ない機能だと思うが…
特にジェネリクスとGCには全く何の関係も無いような…
0067デフォルトの名無しさん垢版2018/03/07(水) 20:57:01.38ID:L0uTy1l9
https://taiyaq.com/contents/VXd2aV04Gr1mLC8e3AbEg4XKly
Dartの言語ツアーみてるけど、結構言語仕様が辛い。

変数宣言がC由来の「型 変数名」なのがつらい。
GoとかTypeScriptみたいに変数宣言は「変数名 型」にして欲しいわ
あと内部コードがutf16というのが気になる。jsより後発なのにjsと同じ仕様って。

Flutterは良さげなのになぁ。
0068デフォルトの名無しさん垢版2018/03/07(水) 21:02:27.65ID:ZH5MFU7m
RustがC++の代替って枠だと先にも出てる大規模ゲームなんだが、個人やインディーズなら大手エンジンでいいし社内独自エンジンだとこれまでの資産的にツールもゲーム本体も言語変える必要なくない?みたいな所がなぁ
0069デフォルトの名無しさん垢版2018/03/07(水) 21:13:00.74ID:xaPv5Ark
気軽に書くならswiftを使うかな
0070デフォルトの名無しさん垢版2018/03/07(水) 21:18:56.44ID:L0uTy1l9
>>68
rustってc++に絶対勝てないのかね?
メモリ管理を静的に解決できるって不思議なんだけど、もしかしてメモリ節約プログラミングが得意だったらスマホとかIOTでワンチャンあるかもしれん。
0071デフォルトの名無しさん垢版2018/03/07(水) 21:24:30.78ID:Fw456RXb
今rustで書いてるよ、勿論mozilla全く関係無い
映像系のバックエンドでは結構使ってる情報見るけどな
0072デフォルトの名無しさん垢版2018/03/07(水) 21:51:29.88ID:hDt5Kv7q
rustは理論好きで実際はコードほとんど書かないような連中に人気あるだけだろ。
ゼロコスト抽象化カッケーとかそういう層。
0073デフォルトの名無しさん垢版2018/03/07(水) 21:58:39.87ID:ZH5MFU7m
>>70
ヒープ周りは言う程魔法みたいな事をしてる訳ではないよ
どこまでいってもコンパイル時の制限をカッツカツにして開放を保証するって話だし

iotもスマホも(もちろんゲームも)クロスプラットフォームしたくて大変なのにそれぞれc++向けに書かれてるsdkラップする?っていう
オープン規格やらそういうsdkがrust向けを公式で出すようになれば採用も出てくるとは思うけどね
0074デフォルトの名無しさん垢版2018/03/07(水) 22:05:41.69ID:hDt5Kv7q
メモリ解放のタイミングが分からなくなるっつーのは基本的に
インスタンスを共有してる変数がいくつもあるから
ってのがrustの主張の根幹でしょ。
0075デフォルトの名無しさん垢版2018/03/07(水) 22:21:07.09ID:zWLX9kTq
わたすもrustで書いてるよ
webだけど
メインブラウザがファイヤーフォックスだからモジラの手先かもしれん
0077デフォルトの名無しさん垢版2018/03/07(水) 22:26:48.78ID:rBtvNRXK
実行時に参照カウントを増減するのは、実行しないとわからない場合だけにしろ
コンパイル時にわかることを実行時にチェックするな
これはRustだけでなく静的型がさんざん主張していたこと
0079デフォルトの名無しさん垢版2018/03/07(水) 23:22:26.51ID:TWVUeb1Y
Dart2で再始動って言ってるからDart4くらいで良くなるんじゃねw
Flutterはちょっと気になってる
0082デフォルトの名無しさん垢版2018/03/08(木) 02:29:26.18ID:to5KOUcv
>>79
内部文字コードがutf16とか変数宣言がいまいちとか結構辛い。
flutterとdartを分離してTypeScriptから使えるようにしてくんないかな
0085デフォルトの名無しさん垢版2018/03/08(木) 13:26:45.90ID:f+gZIHDW
>>83
個人が趣味でやってるプログラムなんてどんな言語だろうが大体そういうものだろ
別にRustで書いてる奴に限った話じゃない
0086デフォルトの名無しさん垢版2018/03/08(木) 13:27:26.60ID:f+gZIHDW
本格的なものを作ろうとすれば企業が関わらざるを得なくて現状ではどの企業もまだ様子見状態ってだけ
むしろGoogleがRustで実験的にエディタを作ってるってことは
Googleも採用を検討するくらいには注目してる言語ということ
0087デフォルトの名無しさん垢版2018/03/08(木) 13:36:32.00ID:XQ95i3sC
>>86
残念ながらxi-editorは20%ルールの産物で完全に個人のトイプログラムなんですよね

そもそもGoogle社内の公認言語にRustなどという腐ったものは存在しない
0090デフォルトの名無しさん垢版2018/03/08(木) 14:07:05.39ID:XQ95i3sC
まじで。Go自体が20%ルールの産物なのは知らんかったわ

Goは初期のJava見てるような時代逆行感あるし、それが嫌われる原因だろうね
初期のJavaよりははるかにマシだけど
0092デフォルトの名無しさん垢版2018/03/08(木) 16:57:24.84ID:XQ95i3sC
ドワンゴや渋みたいな画質最悪回線ptptのプラットフォームの技術()なんて参考にならん

Youtubeとか嗶哩嗶哩とかネトフリくらいのプラットフォームが全く採用してない時点でお察しだろ
0093デフォルトの名無しさん垢版2018/03/08(木) 17:38:09.62ID:3H4xAb5h
アンチのいない言語ってあるんかな?
それって誰が見ても引っかかることがなくて無難で分かりやすい言語ってことだよね。
、、、、C言語かな?
いやーないか。Pythonかな?
0096デフォルトの名無しさん垢版2018/03/08(木) 18:06:09.58ID:My+VxY9/
Goが嫌われるのは、意識高い系の人間が欲しがる機能をオミットしたからだろ。
欲しがるやつはバカぐらいの事言ってるし。
学者と機械屋が仲悪いのと同じようなもんで。
0097デフォルトの名無しさん垢版2018/03/08(木) 20:42:30.56ID:Qr0iRnUQ
機能をオミットする方向を示しただけでもgoは価値あるよ。
他の言語はバカみたいに機能を追加する方向しかみてなかったし。
0098デフォルトの名無しさん垢版2018/03/08(木) 20:50:41.00ID:OEgQLKAy
採用例提示しろって言われたから東証一部上場企業の採用例をいったらいったでまた難癖つけるね
グダグダ言ってないで自分が使わなきゃいいだけじゃん



それでもニコニコがRustでオリジナルファイルシステムまで作ってあのクソさってのはいろいろ思うところはある
よくもまあ10年近くも金をオフパコ会議に突っ込んでろくに鯖の整備もせずに来れたもんだ
0099デフォルトの名無しさん垢版2018/03/08(木) 20:53:13.13ID:39/jgBm7
FacebookのMononokeとかも除外なのかな
有名所が軒並み使わないと認めないんだろうな、いやそれでも否定するか
0100デフォルトの名無しさん垢版2018/03/08(木) 21:19:24.31ID:3H4xAb5h
>>96
オミット大事だよね。バージョンを重ねていくと機能追加しかできないから
最初の機能は絞ったほうがいい。
Goにはきっと既存にはない独自発想のジェネリクス的な物が搭載されるであろう。
賛否両論なやつが。
■ このスレッドは過去ログ倉庫に格納されています

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