次世代言語18 Go Rust Elixir Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
スレタイ以外の言語もok
前スレ
次世代言語17 Go Rust Kotlin TypeScript Julia
https://mevius.5ch.net/test/read.cgi/tech/1567602619/ >>493
マジンゴーZ??
2020年でサポートおわりやん
ウンコマンブリッチョか? IBMがSwift開発を終了 - Chris Bailey氏とのQ&A
https://www.infoq.com/jp/news/2020/02/ibm-stop-work-swift-server/
IBMは先頃、サーバサイドSwiftの開発を中止した。これはSwiftがオープンソース化して間もなく開始されたもので、Swift Server Worl Griup[SSWG]のリーダシップも同時に譲渡されている。
GoとRust、そしてSwiftは、型安全でコンパイル可能なネイティブ言語として、CおよびC++の代替となる"現代的ネイティブ言語"としてグループ分けされることが少なくありません。
GoはKubernetesのようなクラウドテクノロジのコアインフラストラクチャや、CLIの開発などに使われるシステム言語として、真の得意分野を見つけることに成功しました。
Rustはまだ展開すべき場所を模索している段階ですが、Web Assemblyによって大きな関心を集めるようになっています。
Swiftが採用曲線において遅れを取っていることは否めない事実です。 TypeScriptは高カインド型作れないのを早くなんとかしてくれ
インターフェース使って無理やり実現するハックもあるけど、ポリモーフィックな関数のUnionをちゃんと単一化できないあたり雑魚いなあという印象 const people: Namasute = new Indo()
people.eat(curry).yogaFire()
こんな感じか? $j = new Jap(colonaUirus)
$j.touhyo(jimin) === gaiji // true VIRUSをUIRUSって書くって古代ローマ人かよお前www mapの引数がlist<A>ならlist<B>を
vector<A>ならvector<B>を返したい
だが引数の型をTとすると返り値の型を宣言できない c++の型出しテンプレートの不自由版みたいなもんか 型宣言のないネイティブJavaScriptが
いかに最強かが分かるな void* で全部持てばいいみたいな糞議論し始めたぞ。。 高カインド型は、要は型引数を取るジェネリック型の総称だよ
たとえばArrayは、Array<number>とかArray<Indo>は具体型(実行時に存在する値をとりうる型という意味で、抽象クラスに対する具象クラスという意味の具体ではないことに注意)だけど、
型引数を入れてないArray<_>のままだと実行時の値をつくれない
これにnumberなど具体型を入力してやれば、はじめてArray<number>などの具体型となる
そこでArray<_>は「具体型に作用して新たな具体型を作るもので、具体型ではないなにか」と考えられ、こういうものを1階カインドとか Type → Type のカインドを持つという
同様に型引数2個のジェネリック型は2階カインドだったり、具体型は0階カインドともいう。
0階以外のカインドを持つ型を総称し高カインド型と呼ぶ TypeScriptのジェネリクスの高階カインド型サポートがいまいちなのは、
「ジェネリック型に入れられるのが具体型に限定されていること」で、
たとえば map をサポートするジェネリックインターフェースとして
Mappable<f>を作るとする
そのインターフェースを実装できるクラスはカインド1、つまりArray< >など
型引数を1個とるクラスだけにしたい けど、できない
また、カインド Type -> Type -> Type の高カインド型に型1個入れたものは
カインドType -> Type になってほしいけど、こういうこともできない
たとえばkey-valueペアのMap<_, _>なんかは2階カインドだけど、
キータイプだけ指定した Map<string, _> を1階カインドと見なしてMappableを実装させたい(map はMapの各値を変換する関数になる) けど、これもできない ゴチャゴチャ言わずも508でfinal fugure っしょ 機能足りないと思うやつが自分で実装してPR送るんだよ higher-kinded typesの日本語訳は高階型で別に良いと思うんだがな
カインド強調する意味がゼロとは言わないがデメリットのほうが大きい 高階関数という言葉を知ってれば、そこから類推できる高階型って呼び方の方が良いよね 何でもできる方がいいと思い込んでるのはバカにありがちなセンスなのでしょうがない。 変につまみ食いしようとして使い勝手が悪くなるってこともあるよ
Java8から入ったStreamとOptionalみたいなのを自分で書くのすごい面倒くさい null禁止型の配列の初期化に必要な無引数コンストラクタ
が無かったらコンパイルエラーになるコンパイラを自分で書けない 高階型はまた別じゃね?
Higher-kinded typesじゃなくてrank-N typesのことかと そんな糞機能がほしけりゃマクロ使ってでも実装すりゃいいんだよ。
そうすればゴミ機能ってことに気づくから。 >>529
自分が理解できなかったものを話してる人がいるからってイライラするなよw 本当にいい言語は遠くから絶賛なんかじゃく、
自分ところの基幹言語としてプロジェクト全体の10%以上ぐらいの割合で採用するから。 >>532
理解してるから下らねーつってんだよカス。
お前こそその機能の無駄さとバギーさを理解しろ。 >>534
わかったわかった。
ジェネリクスについてちゃんと勉強してきてからまた読み直してくれよ。 C/C++が絶賛されないのはテストしすぎてリスクの大きさが見えるからだろ
本当に科学的なやつらはテストを嫌う >>535
勉強しても問題が理解できてないのかよ。。少しは自分でコード組んでみれば?
>本当に科学的なやつらはテストを嫌う
こんな大嘘をよく平気で言えるな。 >>538
確かに中途半端にしかポリモーフィズム意識してないお前みてーなやつには
難しくて理解できんのでメンテできる人が限られたコードにはなるという問題はあるな… Androidアプリ開発ってGoogle自身は未だにJava使ってるのかな? Rust勉強してんだけど、
let mut n = 5;
println!("{}", n = 4);
println!("{}", n);
〜結果〜
4
5
なるほど分からん >>542
>println!("{}", n = 4);
named parameterがformat stringで使われてないから
エラーにすべきケースかもね あー、assignmentではなく…
なるほどだけど、
えー…
Rustでは代入式は右辺の評価値ではなく空のタプルを返すとあったから確かめようとしたらこうなったw
大根乱ですよ ?
いや以下expected `i32`, found `()`でエラーになるけど代入の結果空のタプルが返ったればこそでしょ??どういう意味?
fn foo(x: i32) -> i32 {
x * 2
}
let mut n = 5i32;
let m = foo(n = 4i32); nを定義しても呼び出された側からは見えないのがレキシカルスコープ
でもやっぱり見えるスコープが欲しい
これはダイナミックスコープの再発明だな 行儀の悪いことするな、で終わってもいいかもしれんが、結局>>542はどう解釈するのが正しいの? >>550
2行目のn=4は println!マクロの中で
`n`というnamed parameterを新しく定義してそれに4を入れてるので1行目のnとは別物
https://doc.rust-lang.org/std/fmt/index.html#named-parameters
個人的にはエラーにすべきケースだと思うけど
named parameterが明示的に使われてなくても
format stringが必要としてるパラメータの数に合致してるとエラーが出ないっぽい
let x = 100;
println!("{}, {}, {}", x, x=200, y=300); //=> 100, 200, 300 fn print6(a:()){ println!("{}", 6); }
let mut n = 5;
println!("{}", n = 4); //マクロの引数: 代入じゃない(マクロの仕様次第)
println!("{}", n);
print6(n = 7); //関数の引数: これは代入
println!("{}", n);
4
5
6
7 書けば書くほどPython嫌いになるわ
機械学習とかやるにはいいんだろうけど、これでサーバーサイド組むとか狂気もいいとこ
やっぱ型無し言語って糞だわ サーバー組むならgo使えばええやん。なぜpython? >>555
過去のおガイジどもが色んな言語使いすぎて保守不能になって
社内標準言語がPythonとJavaScriptだけになったから
>>554
最低でもJava8
どんなに type hinting 書いても IDE は黙ったままだし補完も大して効かないし
糞of糞、糞の山マウンテンがチョモランマ
__init__.pyがないとimportできない糞
pyenv使ってbuildしてもruntimeエラーがでる糞
venv,pipenv,poetry,pyflow, おまえいったいいくつパッケージ管理ツールつくるねんの糞
糞糞糞糞 PythonとJavaScriptだけって結論出した奴も含めておガイジやん
つまるところ一番の糞はその職場や >過去のおガイジどもが色んな言語使いすぎて保守不能になって
これはまあよくある話だが
>社内標準言語がPythonとJavaScriptだけになったから
こうなるのは珍しいな。。普通は逆にこいつの言うように堅めのやつでjava一択とかなりそうな気はするが。 >>557
わかっとるわそんなん
だがPythonが糞なのも事実
>>558
超消極的な理由で選ばれただけ
バックエンドは機械学習プロダクトもあるからPythonは必須
フロントエンドはJavaScript必須
他はなんも考えてない
笑えよ またとりあえず機械学習に手を出しちゃうところも糞要素として取り上げたいw >>556
>どんなに type hinting 書いても IDE は黙ったままだし補完も大して効かないし
これはIDE自体の問題か使う側の問題じゃないか? >>562
じゃあVSCodeが糞かpythonのlspが糞かだな
糞ばっかりだ >>563
お前がうんこなんだと思うよ
職場でも無能と思われてそうw Pythonどちらかと言うと好きな方だけど開発環境周りは糞極めてるよね うるせーコロナで死ね
俺の言うこと聞かない言語は全て糞なんだよ糞、糞糞糞の糞 まあ発狂してもおかしくなさげな環境なのは同情の余地あるわな。。 Pythonの
JavaScriptに対するTypescript相当
の言語欲しい TypeScript作ってる当のMicrosoftがPyright出してるじゃん。何の不満が? >>569
使ったことあるか?
import先もまともに検知できないガチゴミガイジだぞ 要はライブラリでPythonを超えればPythonは消えるよね
でも大抵の言語はライブラリを管理するツール自体が保守不能になる
Pythonは手動またはC言語のツールに丸投げしておけば保守不能にはならない まあc言語のライブラリ管理はそんな簡単じゃないがな。
低レイヤー触るとどうしてもそうなる。 PythonがC FFI側に投げてるライブラリのバージョンの複雑さは結局ユーザじゃなくてメンテナがコスト払ってるだけな部分もあるからな…… >>574,575
そんな低レイヤーうんぬんなど些細な話だ
そもそも2系から3系への移行ではPython本体やCライブラリだけでなく、
あまたの2系ライブラリのメンテナが膨大なコストを払っているのだから…
「後方互換性の断絶」とはそうゆうものだ
Python利用者はそうした神の決定に逆らうことは許されない
神の行いは絶対であり、聖書PEPを疑ってはならない 2のメンテは終了しただろ。何言ってんだこの馬鹿は。 最新の3.8ですらJavaにすら劣るゴミという事実 一方で単一の言語処理系に過去バージョン互換をさせるとそれ自身の複雑さが極端に増すのは間違いない訳で
結局どこかしらでコストは払ってるんだよ
この辺はいくら次世代のいい感じの言語が出ようとも変わらないと思う んなあたりまえのこといわれても、でっ?ていう。
最適な互換性の維持具合についてなんか意見でもあるなら言えばいいけど
なんも考えてなさげだな。 Pythonには2と3があるから駄目
そしてPythonをJavaに置き換えることを意識した時点で
Javaもその駄目なグループのメンバーになったようなもの
GCがある言語は多分みんな駄目になってしまう >>578
ここは「次世代言語に憧れるレガシー言語労働者の愚痴スレ」だから >GCがある言語は多分みんな駄目になってしまう
なんの根拠もなく現状を全く無視したことを平然とのたまう精神はどこからきてるんだろうか。
こういう輩が好みそうなのはrustですかね。 そうだね
なんの根拠もないものは全く無視されて当然
その精神がある限り、古い仕様は無視されて互換性が無くなる 静的型付け言語(typescript)の設計を学ぶためには、HaskellとF♯どっちが向いてるんだろう。 TypeScriptの設計を学ぶならTypeScript以外に無いだろ javaScriptの数値は浮動小数点数だけなんたな ■ このスレッドは過去ログ倉庫に格納されています