X



次世代言語18 Go Rust Elixir Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
0495デフォルトの名無しさん
垢版 |
2020/02/26(水) 21:17:35.91ID:LEGaL302
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が採用曲線において遅れを取っていることは否めない事実です。
0496デフォルトの名無しさん
垢版 |
2020/02/26(水) 22:47:29.71ID:dT4BwRcy
TypeScriptは高カインド型作れないのを早くなんとかしてくれ
インターフェース使って無理やり実現するハックもあるけど、ポリモーフィックな関数のUnionをちゃんと単一化できないあたり雑魚いなあという印象
0500デフォルトの名無しさん
垢版 |
2020/02/27(木) 00:26:44.33ID:SC3VM5LZ
カリー化か
0502デフォルトの名無しさん
垢版 |
2020/02/27(木) 09:21:04.85ID:OJ5+vP6y
低知パキスタン型と戦わせよう
0504デフォルトの名無しさん
垢版 |
2020/02/27(木) 13:01:06.82ID:OJ5+vP6y
VIRUSをUIRUSって書くって古代ローマ人かよお前www
0507デフォルトの名無しさん
垢版 |
2020/02/27(木) 17:11:17.64ID:igir/6Hq
mapの引数がlist<A>ならlist<B>を
vector<A>ならvector<B>を返したい
だが引数の型をTとすると返り値の型を宣言できない
0508デフォルトの名無しさん
垢版 |
2020/02/27(木) 17:43:30.43ID:jwUSyqkl
c++の型出しテンプレートの不自由版みたいなもんか
0509デフォルトの名無しさん
垢版 |
2020/02/27(木) 20:01:01.74ID:SC3VM5LZ
型宣言のないネイティブJavaScriptが
いかに最強かが分かるな
0514デフォルトの名無しさん
垢版 |
2020/03/01(日) 00:36:11.71ID:D/Yz/cH7
高カインド型は、要は型引数を取るジェネリック型の総称だよ

たとえばArrayは、Array<number>とかArray<Indo>は具体型(実行時に存在する値をとりうる型という意味で、抽象クラスに対する具象クラスという意味の具体ではないことに注意)だけど、
型引数を入れてないArray<_>のままだと実行時の値をつくれない
これにnumberなど具体型を入力してやれば、はじめてArray<number>などの具体型となる

そこでArray<_>は「具体型に作用して新たな具体型を作るもので、具体型ではないなにか」と考えられ、こういうものを1階カインドとか Type → Type のカインドを持つという

同様に型引数2個のジェネリック型は2階カインドだったり、具体型は0階カインドともいう。
0階以外のカインドを持つ型を総称し高カインド型と呼ぶ
0516デフォルトの名無しさん
垢版 |
2020/03/01(日) 00:47:37.29ID:D/Yz/cH7
TypeScriptのジェネリクスの高階カインド型サポートがいまいちなのは、
「ジェネリック型に入れられるのが具体型に限定されていること」で、

たとえば map をサポートするジェネリックインターフェースとして
Mappable<f>を作るとする

そのインターフェースを実装できるクラスはカインド1、つまりArray< >など
型引数を1個とるクラスだけにしたい けど、できない

また、カインド Type -> Type -> Type の高カインド型に型1個入れたものは
カインドType -> Type になってほしいけど、こういうこともできない

たとえばkey-valueペアのMap<_, _>なんかは2階カインドだけど、
キータイプだけ指定した Map<string, _> を1階カインドと見なしてMappableを実装させたい(map はMapの各値を変換する関数になる) けど、これもできない
0519デフォルトの名無しさん
垢版 |
2020/03/01(日) 09:39:10.97ID:wTWFPuO/
高力インド型
0520デフォルトの名無しさん
垢版 |
2020/03/01(日) 09:46:16.48ID:J3IrN4Ey
higher-kinded typesの日本語訳は高階型で別に良いと思うんだがな
カインド強調する意味がゼロとは言わないがデメリットのほうが大きい
0521デフォルトの名無しさん
垢版 |
2020/03/01(日) 10:24:35.13ID:TbG8Ke0I
高階関数という言葉を知ってれば、そこから類推できる高階型って呼び方の方が良いよね
0523デフォルトの名無しさん
垢版 |
2020/03/01(日) 12:37:26.26ID:GdO9iGlh
何でもできる方がいいと思い込んでるのはバカにありがちなセンスなのでしょうがない。
0524デフォルトの名無しさん
垢版 |
2020/03/01(日) 15:16:31.84ID:TbG8Ke0I
変につまみ食いしようとして使い勝手が悪くなるってこともあるよ
Java8から入ったStreamとOptionalみたいなのを自分で書くのすごい面倒くさい
0525デフォルトの名無しさん
垢版 |
2020/03/01(日) 16:33:14.39ID:hFYkB74O
null禁止型の配列の初期化に必要な無引数コンストラクタ
が無かったらコンパイルエラーになるコンパイラを自分で書けない
0527デフォルトの名無しさん
垢版 |
2020/03/01(日) 19:10:26.22ID:D/Yz/cH7
高階型はまた別じゃね?
Higher-kinded typesじゃなくてrank-N typesのことかと
0529デフォルトの名無しさん
垢版 |
2020/03/01(日) 21:22:24.37ID:GdO9iGlh
そんな糞機能がほしけりゃマクロ使ってでも実装すりゃいいんだよ。
そうすればゴミ機能ってことに気づくから。
0532デフォルトの名無しさん
垢版 |
2020/03/02(月) 08:24:29.53ID:vmTfu2dg
>>529
自分が理解できなかったものを話してる人がいるからってイライラするなよw
0533デフォルトの名無しさん
垢版 |
2020/03/02(月) 13:22:02.15ID:dzgadk5u
本当にいい言語は遠くから絶賛なんかじゃく、
自分ところの基幹言語としてプロジェクト全体の10%以上ぐらいの割合で採用するから。
0534デフォルトの名無しさん
垢版 |
2020/03/02(月) 13:48:47.72ID:JudLh/rB
>>532
理解してるから下らねーつってんだよカス。
お前こそその機能の無駄さとバギーさを理解しろ。
0535デフォルトの名無しさん
垢版 |
2020/03/02(月) 17:54:10.41ID:lNfcnDid
>>534
わかったわかった。
ジェネリクスについてちゃんと勉強してきてからまた読み直してくれよ。
0536デフォルトの名無しさん
垢版 |
2020/03/02(月) 18:08:36.58ID:1of+/HmK
C/C++が絶賛されないのはテストしすぎてリスクの大きさが見えるからだろ
本当に科学的なやつらはテストを嫌う
0538デフォルトの名無しさん
垢版 |
2020/03/02(月) 19:55:38.54ID:JudLh/rB
>>535
勉強しても問題が理解できてないのかよ。。少しは自分でコード組んでみれば?

>本当に科学的なやつらはテストを嫌う
こんな大嘘をよく平気で言えるな。
0539デフォルトの名無しさん
垢版 |
2020/03/03(火) 00:50:53.97ID:halZ50DI
>>538
確かに中途半端にしかポリモーフィズム意識してないお前みてーなやつには
難しくて理解できんのでメンテできる人が限られたコードにはなるという問題はあるな…
0540デフォルトの名無しさん
垢版 |
2020/03/03(火) 01:30:28.89ID:9peK0gCx
くりかーえーす♪この
0542デフォルトの名無しさん
垢版 |
2020/03/03(火) 14:51:04.88ID:9peK0gCx
Rust勉強してんだけど、
let mut n = 5;
println!("{}", n = 4);
println!("{}", n);
〜結果〜
4
5
なるほど分からん
0543デフォルトの名無しさん
垢版 |
2020/03/03(火) 15:42:26.74ID:lzYVFoFM
>>542
>println!("{}", n = 4);

named parameterがformat stringで使われてないから
エラーにすべきケースかもね
0544デフォルトの名無しさん
垢版 |
2020/03/03(火) 17:25:37.47ID:9peK0gCx
あー、assignmentではなく…
なるほどだけど、
えー…
Rustでは代入式は右辺の評価値ではなく空のタプルを返すとあったから確かめようとしたらこうなったw
大根乱ですよ
0545デフォルトの名無しさん
垢版 |
2020/03/03(火) 17:31:22.84ID:EXykEa9V
むしろ何で代入してると思ったのか
0546デフォルトの名無しさん
垢版 |
2020/03/03(火) 18:04:04.14ID:9peK0gCx

いや以下expected `i32`, found `()`でエラーになるけど代入の結果空のタプルが返ったればこそでしょ??どういう意味?
fn foo(x: i32) -> i32 {
x * 2
}
let mut n = 5i32;
let m = foo(n = 4i32);
0547デフォルトの名無しさん
垢版 |
2020/03/03(火) 18:44:54.59ID:uIYzrTnG
nを定義しても呼び出された側からは見えないのがレキシカルスコープ
でもやっぱり見えるスコープが欲しい
これはダイナミックスコープの再発明だな
0550デフォルトの名無しさん
垢版 |
2020/03/04(水) 22:33:59.46ID:/mNi51EN
行儀の悪いことするな、で終わってもいいかもしれんが、結局>>542はどう解釈するのが正しいの?
0551デフォルトの名無しさん
垢版 |
2020/03/04(水) 22:54:37.02ID:yiNVycVp
>>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
0552デフォルトの名無しさん
垢版 |
2020/03/04(水) 23:01:20.25ID:4yioSA0z
fn print6(a:()){ println!("{}", 6); }
let mut n = 5;
println!("{}", n = 4); //マクロの引数: 代入じゃない(マクロの仕様次第)
println!("{}", n);
print6(n = 7); //関数の引数: これは代入
println!("{}", n);

4
5
6
7
0553デフォルトの名無しさん
垢版 |
2020/03/07(土) 00:08:15.14ID:po15mmZE
書けば書くほどPython嫌いになるわ
機械学習とかやるにはいいんだろうけど、これでサーバーサイド組むとか狂気もいいとこ
やっぱ型無し言語って糞だわ
0556デフォルトの名無しさん
垢版 |
2020/03/07(土) 10:09:34.67ID:po15mmZE
>>555
過去のおガイジどもが色んな言語使いすぎて保守不能になって
社内標準言語がPythonとJavaScriptだけになったから

>>554
最低でもJava8
どんなに type hinting 書いても IDE は黙ったままだし補完も大して効かないし
糞of糞、糞の山マウンテンがチョモランマ

__init__.pyがないとimportできない糞
pyenv使ってbuildしてもruntimeエラーがでる糞
venv,pipenv,poetry,pyflow, おまえいったいいくつパッケージ管理ツールつくるねんの糞

糞糞糞糞
0557デフォルトの名無しさん
垢版 |
2020/03/07(土) 10:35:22.99ID:Gh4Y79Ev
PythonとJavaScriptだけって結論出した奴も含めておガイジやん
つまるところ一番の糞はその職場や
0558デフォルトの名無しさん
垢版 |
2020/03/07(土) 10:38:36.62ID:XLWmxUUx
>過去のおガイジどもが色んな言語使いすぎて保守不能になって
これはまあよくある話だが
>社内標準言語がPythonとJavaScriptだけになったから
こうなるのは珍しいな。。普通は逆にこいつの言うように堅めのやつでjava一択とかなりそうな気はするが。
0559デフォルトの名無しさん
垢版 |
2020/03/07(土) 10:49:17.19ID:tB1OTpLA
今javaは時期が悪いよ
0560デフォルトの名無しさん
垢版 |
2020/03/07(土) 11:19:48.16ID:po15mmZE
>>557
わかっとるわそんなん
だがPythonが糞なのも事実

>>558
超消極的な理由で選ばれただけ
バックエンドは機械学習プロダクトもあるからPythonは必須
フロントエンドはJavaScript必須

他はなんも考えてない
笑えよ
0561デフォルトの名無しさん
垢版 |
2020/03/07(土) 11:31:51.02ID:XLWmxUUx
またとりあえず機械学習に手を出しちゃうところも糞要素として取り上げたいw
0562デフォルトの名無しさん
垢版 |
2020/03/07(土) 12:21:08.97ID:z518jRtl
>>556
>どんなに type hinting 書いても IDE は黙ったままだし補完も大して効かないし

これはIDE自体の問題か使う側の問題じゃないか?
0565デフォルトの名無しさん
垢版 |
2020/03/07(土) 13:13:17.74ID:e127m1PH
Pythonどちらかと言うと好きな方だけど開発環境周りは糞極めてるよね
0566デフォルトの名無しさん
垢版 |
2020/03/07(土) 13:30:02.16ID:po15mmZE
うるせーコロナで死ね
俺の言うこと聞かない言語は全て糞なんだよ糞、糞糞糞の糞
0569デフォルトの名無しさん
垢版 |
2020/03/07(土) 15:06:23.05ID:Zs2bgd34
TypeScript作ってる当のMicrosoftがPyright出してるじゃん。何の不満が?
0571デフォルトの名無しさん
垢版 |
2020/03/07(土) 15:41:21.16ID:Zs2bgd34
乞食の癖に贅沢言うな!じゃあお前が作れ!
0573デフォルトの名無しさん
垢版 |
2020/03/07(土) 17:10:01.53ID:/3GyPk4K
要はライブラリでPythonを超えればPythonは消えるよね
でも大抵の言語はライブラリを管理するツール自体が保守不能になる
Pythonは手動またはC言語のツールに丸投げしておけば保守不能にはならない
0574デフォルトの名無しさん
垢版 |
2020/03/07(土) 19:26:36.13ID:XLWmxUUx
まあc言語のライブラリ管理はそんな簡単じゃないがな。
低レイヤー触るとどうしてもそうなる。
0575デフォルトの名無しさん
垢版 |
2020/03/07(土) 21:21:55.92ID:zyQisfjb
PythonがC FFI側に投げてるライブラリのバージョンの複雑さは結局ユーザじゃなくてメンテナがコスト払ってるだけな部分もあるからな……
0576デフォルトの名無しさん
垢版 |
2020/03/07(土) 22:13:32.23ID:7WCIBliR
>>574,575
そんな低レイヤーうんぬんなど些細な話だ
そもそも2系から3系への移行ではPython本体やCライブラリだけでなく、
あまたの2系ライブラリのメンテナが膨大なコストを払っているのだから…
「後方互換性の断絶」とはそうゆうものだ

Python利用者はそうした神の決定に逆らうことは許されない
神の行いは絶対であり、聖書PEPを疑ってはならない
0580デフォルトの名無しさん
垢版 |
2020/03/08(日) 07:27:02.29ID:8cCRMkvW
一方で単一の言語処理系に過去バージョン互換をさせるとそれ自身の複雑さが極端に増すのは間違いない訳で
結局どこかしらでコストは払ってるんだよ
この辺はいくら次世代のいい感じの言語が出ようとも変わらないと思う
0581デフォルトの名無しさん
垢版 |
2020/03/08(日) 08:57:57.34ID:WHPmDMrq
んなあたりまえのこといわれても、でっ?ていう。
最適な互換性の維持具合についてなんか意見でもあるなら言えばいいけど
なんも考えてなさげだな。
0582デフォルトの名無しさん
垢版 |
2020/03/08(日) 09:38:38.42ID:oRQj+xWf
Pythonには2と3があるから駄目
そしてPythonをJavaに置き換えることを意識した時点で
Javaもその駄目なグループのメンバーになったようなもの

GCがある言語は多分みんな駄目になってしまう
0584デフォルトの名無しさん
垢版 |
2020/03/08(日) 10:06:42.70ID:ZuSBaXSz
いやJSもGCあるだろ…
0585デフォルトの名無しさん
垢版 |
2020/03/08(日) 14:22:36.07ID:jdr/SdJJ
>GCがある言語は多分みんな駄目になってしまう
なんの根拠もなく現状を全く無視したことを平然とのたまう精神はどこからきてるんだろうか。

こういう輩が好みそうなのはrustですかね。
0586デフォルトの名無しさん
垢版 |
2020/03/08(日) 16:42:21.18ID:8nAE6D2E
そうだね
なんの根拠もないものは全く無視されて当然
その精神がある限り、古い仕様は無視されて互換性が無くなる
0587デフォルトの名無しさん
垢版 |
2020/03/08(日) 17:08:13.34ID:aNSOANJ3
仕様は根拠では?
0588デフォルトの名無しさん
垢版 |
2020/03/09(月) 12:56:13.44ID:sMpZHxT3
静的型付け言語(typescript)の設計を学ぶためには、HaskellとF♯どっちが向いてるんだろう。
0591デフォルトの名無しさん
垢版 |
2020/03/09(月) 16:12:01.63ID:yVhMK1Dj
Javaとか型システム微妙言語の代表だろ
0592デフォルトの名無しさん
垢版 |
2020/03/09(月) 16:54:47.41ID:SsKgVmjs
javaScriptの数値は浮動小数点数だけなんたな
■ このスレッドは過去ログ倉庫に格納されています

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