次世代言語9[Haskell Rust Kotlin TypeScript Dart]

■ このスレッドは過去ログ倉庫に格納されています
2018/03/06(火) 10:09:15.60ID:x/Au45rc
スレタイ以外の言語もok

前スレ
次世代言語Part8[Haskell Rust Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1512137301/
2デフォルトの名無しさん
垢版 |
2018/03/06(火) 10:30:06.56ID:nMdAiw1E
Dartきてんね
2018/03/06(火) 11:03:49.49ID:05hne0v2
DartとDlangの違いを教えてください
2018/03/06(火) 11:43:03.15ID:DTiE8Uxw
Googleは言語選択保守的すぎるだろ
関数型言語採用しないどころかGolang作っちゃう時点で
2018/03/06(火) 12:27:31.20ID:KV/wZ8PJ
Goと関数型は土俵が違わん?
2018/03/06(火) 14:53:26.90ID:+D30KD0L
関数型とは具体的に何のことやら
Rustが採用したenumとtraitは関数型か?
2018/03/06(火) 20:42:26.57ID:MoZw2NXu
>>4
別にそんなとこで冒険しても生産性上がらんよねって感覚なんだろ。
8デフォルトの名無しさん
垢版 |
2018/03/06(火) 20:42:29.39ID:cU7JZ0/j
>>6
enum・traitと関数型は関係ないだろ?どちらもHaskellの型システムをパクって来たってだけ
関数型言語の特徴として真っ先に思いつくのは関数を第一級オブジェクトとして扱えるか否かというところだろうな
ただその考え方だけだとC言語でさえ関数ポインタがあるから関数型言語に含まれてしまうことになる
そこからさらに副作用を出来る限り避ける文化があるか否かとかも判断基準になるのかな?
言語の文化とかふんわりした表現は具体性を伴わないから説得力に欠けるんだよな
改めて関数型を具体的に説明しろと言われると難しいな…
2018/03/06(火) 20:57:45.92ID:xvhpcg6j
>>8
関数ポインタは確かにC/C++系独自だけれども(Javaにはなかった)第一級オブジェクトではない、とおもうよ
2018/03/06(火) 21:32:52.86ID:MoZw2NXu
もう少しだけ動的に関数定義を変えて返したりできるのが関数型ぽい。
2018/03/06(火) 21:34:37.20ID:qto5wiY+
Cの関数は実行時に生成挟めないから第一級オブジェクトではないよ
2018/03/06(火) 21:40:19.40ID:MoZw2NXu
c++ならクラスのメンバに情報持たせて、メソッド使うことでクロージャぽいものはできるけど。
2018/03/06(火) 21:45:38.71ID:DG7WbBnA
λ理論を念頭に置いて実装されたかどうかやぞ
2018/03/06(火) 22:00:19.48ID:qto5wiY+
c++なら素直にラムダ式使おうよ…
2018/03/06(火) 22:19:34.09ID:xvhpcg6j
C++ のラムダ式でYコンビネータを記述できるのですか?
できないのならラムダ式などと呼称していいのでしょうか?
2018/03/06(火) 22:36:28.04ID:qto5wiY+
>>15
2つの話題を勝手に混ぜるな
>>14>>12 に安価付けなかったのは俺が悪いけどさ

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

関数型言語とはなんぞやという話題についてc++のラムダ式を例に挙げてc++は関数型だ!なんて言うつもりは毛頭ない
Yコンビネータに関しては確かできた気がするが
2018/03/06(火) 22:44:51.87ID:DG7WbBnA
>>16
正論すぎて草
2018/03/07(水) 00:36:57.39ID:EDSn5kWw
>>4
goって保守的かな?結構攻めてる言語だと思うが。
swiftのほうが断然保守的。
2018/03/07(水) 00:55:59.65ID:487L5ZU0
>>18
保守的にするという意味で攻めてる言語だな
2018/03/07(水) 00:59:12.93ID:JwI5qwvI
諦めと開き直りを全面に押し出してくる言語だな、確かに。
2018/03/07(水) 01:21:30.28ID:EDSn5kWw
goの攻めてるところ。
ライブラリのimportにuriを指定してできるようにしてgithubから直接importできるようにした。
例外を辞めた。
公開、非公開をメンバ名が大文字始まりかどうかで決めるように。
クラスをやめて、構造体だけにした。
インターフェース実装は該当メソッドの有無で決定


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

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

c++とか触ってたとき、クラスと、構造体って、本当に両方必要か?どっちか要らないだろって思ってたりしたから、
すごくしっくりきた。
2018/03/07(水) 01:51:00.36ID:EDSn5kWw
>>24
IDE使ってると半自動だからあんまり面倒だと感じたことはない。警告を無視する開発者もいるから徹底したほうが良いんだろう。
linuxカーネルもコンパイルすると警告出てるし
2018/03/07(水) 01:54:34.87ID:487L5ZU0
>>25
構造体とクラスに関しては個人的に同意
ただ型パラメーターとか例外がないのはありえない
エラー処理は長すぎる。if分岐でチェックとかいつの時代だよ
型パラメーターないせいでDRY原則を破るか型安全を破るかしないといけない
2018/03/07(水) 01:56:06.25ID:EDSn5kWw
>>23
go-bindata騒動はgo固有の問題でもない。nodeだって似たようなことあっただろ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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