次世代言語9[Haskell Rust Kotlin TypeScript Dart]
■ このスレッドは過去ログ倉庫に格納されています
スレタイ以外の言語もok
前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/ Googleは言語選択保守的すぎるだろ
関数型言語採用しないどころかGolang作っちゃう時点で 関数型とは具体的に何のことやら
Rustが採用したenumとtraitは関数型か? >>4
別にそんなとこで冒険しても生産性上がらんよねって感覚なんだろ。 >>6
enum・traitと関数型は関係ないだろ?どちらもHaskellの型システムをパクって来たってだけ
関数型言語の特徴として真っ先に思いつくのは関数を第一級オブジェクトとして扱えるか否かというところだろうな
ただその考え方だけだとC言語でさえ関数ポインタがあるから関数型言語に含まれてしまうことになる
そこからさらに副作用を出来る限り避ける文化があるか否かとかも判断基準になるのかな?
言語の文化とかふんわりした表現は具体性を伴わないから説得力に欠けるんだよな
改めて関数型を具体的に説明しろと言われると難しいな… >>8
関数ポインタは確かにC/C++系独自だけれども(Javaにはなかった)第一級オブジェクトではない、とおもうよ もう少しだけ動的に関数定義を変えて返したりできるのが関数型ぽい。 Cの関数は実行時に生成挟めないから第一級オブジェクトではないよ c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。 C++ のラムダ式でYコンビネータを記述できるのですか?
できないのならラムダ式などと呼称していいのでしょうか? >>15
2つの話題を勝手に混ぜるな
>>14 で >>12 に安価付けなかったのは俺が悪いけどさ
実行時の環境を用いた関数定義の有無についてc++ならラムダ式を使おうという話をしているだけだ
しゃーねーだろ言語機能としてラムダ式って命名されてるんだから
関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない
Yコンビネータに関しては確かできた気がするが >>4
goって保守的かな?結構攻めてる言語だと思うが。
swiftのほうが断然保守的。 >>18
保守的にするという意味で攻めてる言語だな 諦めと開き直りを全面に押し出してくる言語だな、確かに。 goの攻めてるところ。
ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。
例外を辞めた。
公開、非公開をメンバ名が大文字始まりかどうかで決めるように。
クラスをやめて、構造体だけにした。
インターフェース実装は該当メソッドの有無で決定
といった具合に他の言語の当たり前の部分を壊した。全然保守的とは思えないが。 後は未使用ライブラリのimportをコンパイルエラーにするというのも、他の言語であんまり見ない気がする。
これは、積み重なるとコンパイル時間に影響するから、言語設計にコンパイル時間の考慮を重きにおいている証拠の一つと言える >>21
例外とか構造体はC時代に逆戻りしてるだけだし、静的ダックタイピングは他の言語にもあるし、githubのurl指定は結局色々な問題起きてるし(この間のgo-bindata騒動とか)、公開/非公開の大文字小文字も気軽に変えられなくて不便だし何のメリットがあるんだ? >>22
他の言語はエラーにはしないけど警告出す
初期の開発中は未使用importエラーも邪魔なだけでしょ >>23
むしろ、今まで当たり前にあった言語仕様を振り返って本当に必要かどうかを再検討して
削りに削った仕様だと思うけどな。
c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、
すごくしっくりきた。 >>24
IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。
linuxカーネルもコンパイルすると警告出てるし >>25
構造体とクラスに関しては個人的に同意
ただ型パラメーターとか例外がないのはありえない
エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ
型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない >>23
go-bindata騒動はgo固有の問題でもない。nodeだって似たようなことあっただろ。 >>27
例外いるかな?
tryで包まなきゃいけないメソッドや、関数ってドキュメント読むか、実際に実行するまでわかんなくないか?
言語によっては例外が飛ぶ可能性がある関数かどうかわかるんだっけ?
jsはわかんないから不便。 >>27
結局interface{}使うのかよ的なね。わかる。
俺はコード生成に可能性を見出してる。
goはコード生成フレンドリーな言語仕様だし標準ライブラリに、AST系が揃ってるから >>28
nodeもあったけどnodeの場合はnpmの仕様変えれば解決出来るやん
でもGoはgithubに依存してるから解決不可能じゃん
>>29
それならEither型作ってメソッドチェーンで書けるようにして欲しい
Goのエラー処理は関数呼び出し毎にしないといけないからだるすぎ
>>30
型パラメーターが複雑だから、コンパイル速度に影響出るからって入れなかったのにコード生成しろって矛盾してない?
どっちが複雑だよ。どっちがコンパイル速度に影響出るよ? >>31
コード生成はプリプロセスとしてコンパイルの度に毎回動かすわけじゃない。stringerとか使ったことない?
inportに関しては、
nodeがnpmの仕様を変えたら解決するならgoもそうすればいいのでは?
現状でも、vendor/もコミット対象にしてしまえば、依存ライブラリを管理対象にできるから
サードパーティライブラリに頼る以上はライブラリ作者の影響をどの言語だって受ける。 Yコンビネータ forall a. (a -> a) -> a のように
forallがつく関数は第一級オブジェクトにならないのが普通だ
総称型がある比較的新しい言語はもう第一級オブジェクトにこだわらない maybe/eitherが無い言語はあまり触りたくないな goってなんだかよく使われてる以外の理由で使う理由がないよ
同じことするならrustのがいいわ Goはマイクロスレッド得意なのはありがたいな。
あとチャンネルと。
そして静的リンクがデフォ。
これだけで、Go使う価値あると思ってる。 >>35
WEBサーバ: go,php,ruby,java,Elixir
IOSアプリ:swift,dart
Androidアプリ:java,kotlin,dart
WEBクライアント:JavaScript,elm,TypeScript
cliツール:go
どこにrustが入る? Rustは生ポインタが使えるし、C ffiが比較的容易に可能、そのうえwebassemblyにまで対応してる
>>37以外にも組み込み、OS、ドライバ、デスクトップアプリ等どこにでも入ろうと思えば入れる
C++の後継を目指してるだけあってかなり万能な言語ではあるんだが
問題は普及するかどうか… >>32
goはgithubに依存してるからgithubの仕様変えないと駄目じゃん
具体的にはリポジトリやユーザーの削除禁止。でもそれは無理だろ?
>>32
毎回動かすわけじゃないけど、変更あったら動かすだろ?
しかもそれは他の言語でも差分コンパイルで出来る >>39
githubが便利だからgithub使ってるけど、別にgithub以外でも公開出来るし、依存してると言うより多くの人間がgithub使ってるだけでは? プログラマの労力よりコンパイル速度を優先してるのが謎 コンパイル速度が短いとデバッグしやすいからじゃね? >>38
Rust嫌いじゃないけど普及しないと思う
今年のロードマップもwasmとCLIとNetwork頑張る、っておとなしすぎだろ
いろいろできるならもっとぶっ込んで来いやゴルア ってね Googleが採用しなかったDartよりはMozillaが採用したRustの方が将来性はあると思う >>37
ウエッブサーバ: rust
他のサーバ: rust
ウエッブクライアント: rust
CLI: rust >>41-42
その辺の話は
https://talks.golang.org/2012/splash.article
に書いているけど、
Google社内の巨大なソースのコンパイル時間が45分とかかかるようになっちゃって
なんとかしないとという流れで始まったって書いてる。
つまりGoogle以外で恩恵を得る可能性は低いな。 >>46
一応マジメに返しておくと現状webクライアントはrustだけじゃダメだよ
現状ではまだwebassemblyでDOM操作はできないし他にも出来ないことは沢山ある
webクライアントにはRust+JSの組み合わせが必須になる
ただし、Rustのマクロ使ってRustの中にJS書いてビルド時にwasmとJSを両方吐きだして
無理やりRust onlyを実現してるstdwebとかいう先進的?なフレームワークも存在する
あのクレート発見したときは「こいつ天才かよ?」って思った Rustは気になるけど、さわるモチベーションとなるキッカケがないんだよな。
FirefoxベースのElectronとかでて直接レンダリング部分をrustでいじるようなライブラリがでたら考えるかな 人気が下降しプログラマの求人も少ないプログラミング言語ワースト10は? 一方で仕事の多い言語は? CodementorXとCoding Dojoの調査結果
http://www.publickey1.jp/blog/18/5_codementorxcoding_dojo.html jsのファミコンエミュを苦労してrust(→webassembly)に書き直してもぜんぜん速くならないという悲しい現実。
ハマるユースケース少なそう。 >>51
憶測でしがないが、それはRustやwasmが遅いというわけではなくて
ファミコン程度の演算ならJSだろうがwasmだろうがパフォーマンス的には大差なくて
それよりもwasmとJSでデータをやり取りする際のコピーのコストが高くついてるんじゃない?
3Dゲームの演算とかもっと重い処理じゃない限りwasmのメリットが活きてこないんじゃ…
もしくは、将来的にwasmから直接DOM操作ができるようになれば… GoとRustはバランスが悪いんだよな
ラムダ式とかジェネリクスとかGCがあればこそ手軽に使えるものなのに
GoはGC有るのにどちらも無くて
RustはどちらもあるけどGCが無いから不便 RustにもARCはあるんだろ
まあでもARCはゴミのようだという意見には一理あるわな >>55
RustにARCがあるってのは誤解を招く恐れがあるので補足
RustではARCは標準ライブラリとして用意されてる
SwiftみたいにARCでメモリ管理してるわけじゃないよ Rustなんてmozillaに金掴まされた奴しか見向きもしてない何にも使えない言語が
次世代言語とか笑わせんでくれ 実際誰がどこで使ってるのか教えてくれ
モジラの金掴まされた企業以外で googleがxi-editor作ってたり、
後railcarってdocker代替作ってたり。
どっちもあんまり魅力的じゃないないな。
ゲームエンジンがrustで書いたらどうなるか興味ある。 dartを知らない人間がdartに触る例。
https://youtu.be/uDKCK8BBPJU
エンジニアのプログラミング実況動画面白いかも。これのrust版ってある? >>59
1.0出て何年も経ってるのに
その体たらくって時点でお察し >>59
ゲーム分野もUnityやUnrealでニーズ満たしてるし、それ以外のものは今さら流行らんでしょ >>41
コンパイル速度が早ければスループットが上がるんだから、労力の定義次第だろ。 >>59
こいつ反応楽しみたいだけの荒らしだから触れるな >>53
本当これだよな
両方バランスが悪い
ネイティブでバランスの良いKotlinみたいな言語欲しい
Kotlin Nativeはどうなんだろうね >>53
ラムダ式とジェネリクスはGCとはあまり関係ない機能だと思うが…
特にジェネリクスとGCには全く何の関係も無いような… https://taiyaq.com/contents/VXd2aV04Gr1mLC8e3AbEg4XKly
Dartの言語ツアーみてるけど、結構言語仕様が辛い。
変数宣言がC由来の「型 変数名」なのがつらい。
GoとかTypeScriptみたいに変数宣言は「変数名 型」にして欲しいわ
あと内部コードがutf16というのが気になる。jsより後発なのにjsと同じ仕様って。
Flutterは良さげなのになぁ。 RustがC++の代替って枠だと先にも出てる大規模ゲームなんだが、個人やインディーズなら大手エンジンでいいし社内独自エンジンだとこれまでの資産的にツールもゲーム本体も言語変える必要なくない?みたいな所がなぁ >>68
rustってc++に絶対勝てないのかね?
メモリ管理を静的に解決できるって不思議なんだけど、もしかしてメモリ節約プログラミングが得意だったらスマホとかIOTでワンチャンあるかもしれん。 今rustで書いてるよ、勿論mozilla全く関係無い
映像系のバックエンドでは結構使ってる情報見るけどな rustは理論好きで実際はコードほとんど書かないような連中に人気あるだけだろ。
ゼロコスト抽象化カッケーとかそういう層。 >>70
ヒープ周りは言う程魔法みたいな事をしてる訳ではないよ
どこまでいってもコンパイル時の制限をカッツカツにして開放を保証するって話だし
iotもスマホも(もちろんゲームも)クロスプラットフォームしたくて大変なのにそれぞれc++向けに書かれてるsdkラップする?っていう
オープン規格やらそういうsdkがrust向けを公式で出すようになれば採用も出てくるとは思うけどね メモリ解放のタイミングが分からなくなるっつーのは基本的に
インスタンスを共有してる変数がいくつもあるから
ってのがrustの主張の根幹でしょ。 わたすもrustで書いてるよ
webだけど
メインブラウザがファイヤーフォックスだからモジラの手先かもしれん 実行時に参照カウントを増減するのは、実行しないとわからない場合だけにしろ
コンパイル時にわかることを実行時にチェックするな
これはRustだけでなく静的型がさんざん主張していたこと >>1
Dartとかいう完全死産のゴミ言語をスレタイに入れるな
おまえほんっとセンスねーなバーカ Dart2で再始動って言ってるからDart4くらいで良くなるんじゃねw
Flutterはちょっと気になってる >>47
これでコード書く時間が逆に増えたらウケるな >>79
死んでしまったAngularちゃんの悪口はやめろ >>79
内部文字コードがutf16とか変数宣言がいまいちとか結構辛い。
flutterとdartを分離してTypeScriptから使えるようにしてくんないかな >>72
あーわかる超わかる
トイプログラムだけ書いて満足する奴のための言語みたいな >>83
個人が趣味でやってるプログラムなんてどんな言語だろうが大体そういうものだろ
別にRustで書いてる奴に限った話じゃない 本格的なものを作ろうとすれば企業が関わらざるを得なくて現状ではどの企業もまだ様子見状態ってだけ
むしろGoogleがRustで実験的にエディタを作ってるってことは
Googleも採用を検討するくらいには注目してる言語ということ >>86
残念ながらxi-editorは20%ルールの産物で完全に個人のトイプログラムなんですよね
そもそもGoogle社内の公認言語にRustなどという腐ったものは存在しない そだよ
てか、GoはRuby同様ガチ勢に嫌われすぎてて、なかなかカチッとしないね まじで。Go自体が20%ルールの産物なのは知らんかったわ
Goは初期のJava見てるような時代逆行感あるし、それが嫌われる原因だろうね
初期のJavaよりははるかにマシだけど ドワンゴや渋みたいな画質最悪回線ptptのプラットフォームの技術()なんて参考にならん
Youtubeとか嗶哩嗶哩とかネトフリくらいのプラットフォームが全く採用してない時点でお察しだろ アンチのいない言語ってあるんかな?
それって誰が見ても引っかかることがなくて無難で分かりやすい言語ってことだよね。
、、、、C言語かな?
いやーないか。Pythonかな? Goが嫌われるのは、意識高い系の人間が欲しがる機能をオミットしたからだろ。
欲しがるやつはバカぐらいの事言ってるし。
学者と機械屋が仲悪いのと同じようなもんで。 機能をオミットする方向を示しただけでもgoは価値あるよ。
他の言語はバカみたいに機能を追加する方向しかみてなかったし。 採用例提示しろって言われたから東証一部上場企業の採用例をいったらいったでまた難癖つけるね
グダグダ言ってないで自分が使わなきゃいいだけじゃん
それでもニコニコがRustでオリジナルファイルシステムまで作ってあのクソさってのはいろいろ思うところはある
よくもまあ10年近くも金をオフパコ会議に突っ込んでろくに鯖の整備もせずに来れたもんだ FacebookのMononokeとかも除外なのかな
有名所が軒並み使わないと認めないんだろうな、いやそれでも否定するか >>96
オミット大事だよね。バージョンを重ねていくと機能追加しかできないから
最初の機能は絞ったほうがいい。
Goにはきっと既存にはない独自発想のジェネリクス的な物が搭載されるであろう。
賛否両論なやつが。 ■ このスレッドは過去ログ倉庫に格納されています