次世代言語11[Rust Swift TypeScript Dart]

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2018/06/03(日) 23:53:27.92ID:vrBh4O6u
スレタイ以外の言語もok

前スレ
次世代言語10[Rust Swift TypeScript Dart]
https://mevius.5ch.net/test/read.cgi/tech/1524607347/
2018/07/01(日) 11:08:34.39ID:7m3QggRW
中身読んだら結合度の差だったので >>865 の最後2行は撤回する
2018/07/01(日) 11:16:48.58ID:5prQoZWD
>>864
妄想が激しいね。
ヒント:Smalltalkっていうのは、Rubyのそのヘンテコな仕様はSmalltalk由来だということなんだけど。
お大事にね
2018/07/01(日) 11:19:42.69ID:5prQoZWD
>>862
きみ、結局はSmalltalkでのクロージャからのreturnの仕様を調べることすらしないで
思い込みだけで騒いでるでしょ?
そういうのを「バカ」って言うんだよ
869857
垢版 |
2018/07/01(日) 11:25:18.69ID:usR85dqh
>>867
smalltalkには break や continue (next) はないだろう?
ruby のは、closure に break や next を持ち込んでおかしくなっているように見えるよ。
2018/07/01(日) 11:43:42.24ID:fENDu7uP
Smalltalkの仕様がどうであれ、それがRubyの仕様を正当化すると思ってなされているレス(>>847だの>>867だの)は
結局Smalltalkの仕様に権威がある、またはRubyがSmalltalkを模倣するだけの理由があるのを前提にしているわけで
傲慢という批判は妥当に思うな
2018/07/01(日) 11:52:10.11ID:tX8JlSDC
気持ち悪い挙動だと言いがかりをつける気満々のレスに対して
smalltalk でもそうだった昔からある挙動ですよと指摘しているだけでは。

なにも知らなければ議論はできない
といって smalltalk の知識は前提にしていいのかは疑問
とはいえやはり共通の知識がないと議論は無理だし難しいわ
2018/07/01(日) 12:46:18.88ID:fENDu7uP
Smalltalkを前提にすることに意味はない(Rubyと周辺状況が違いすぎるのに何故真似た?)というのが
すぐ直前の議論では
2018/07/01(日) 12:59:23.83ID:gbNzWOju
俺を批判するのはSmalltalkを批判するのと同じだっていうことの意味は一応ある
自分自身を守るためではなく仲間を守るためという大義名分ができる
2018/07/01(日) 13:03:25.38ID:QlwNZjji
滅びた言語のヘンテコな機能を真似た言語が
やっぱりヘンテコになって滅びつつある
それだけの話ではある
2018/07/01(日) 13:04:20.30ID:yp7ufL3+
もうRubyの話はやめよう
次世代でも現世代でもないし
2018/07/01(日) 13:25:35.07ID:5wbqPO3N
なんで?
rubyは触ってないけど、rubykaigiとかで盛り上がってる様子見てると、楽しそうだし盛り上がってる感あるけど。未だ現役じゃないの?
スタートアップがrails採用するイメージって、まだ古くないよね?
最近だとrailsのボトルネック部分をgoで書く話が面白かった。
2018/07/01(日) 13:42:13.57ID:k6Y+DK56
perlの後継になりそこなったし
海外の人気がかなり落ちてるからね
rails用言語で終わってしまった感
2018/07/01(日) 13:43:43.18ID:3SrV2o5x
railsにincludedされてるバッテリーだろ?www
2018/07/01(日) 13:57:23.22ID:5wbqPO3N
つーかrails言語で別に良くないか?
言語なんて所詮はツールなんだから。
bashでwebサービス作るやつはいないだろ?
2018/07/01(日) 14:06:40.12ID:gbNzWOju
目的と結果を比較されるから
目的はこれだったのに結果はこれなのか?と

目的などどうでもいいと断言できる人は少ない
2018/07/01(日) 15:32:54.19ID:5prQoZWD
>>870
そこまで妄想が激しいようだと治療は困難だね。
でもあきらめないで、先生からもらった薬をちゃんと飲むようにね。
でないと他人様に迷惑かけることになるから。
やくそくだよ。
2018/07/01(日) 15:34:06.79ID:2efWQwxv
薬? お薬の幻覚でも見えてんのか?
2018/07/01(日) 15:40:22.85ID:QlwNZjji
Smalltalkという完全に終わった言語に執着してるんだから
まあフツーに頭がおかしいんでしょう
薬飲めも普段自分が言われてるんだろうね
2018/07/01(日) 15:55:04.17ID:2efWQwxv
自分が言われたら嫌なことを人に言うって奴かw
2018/07/01(日) 16:07:47.75ID:rXvfzJkI
ここでも見てとれるようにRubyは言語と言うより信者がクソ。
他言語のスレで聞いてもないのにルビーデワールビーデワー宣伝必死過ぎてウザい。
Ruby自体は悪くない。
2018/07/01(日) 16:15:05.64ID:lS5AQxvk
>>885
同感
2018/07/01(日) 16:33:48.43ID:gbNzWOju
陰謀論みたいに、お前が世界を支配してるんだろって言われるのは嫌じゃないが
2018/07/01(日) 17:13:50.39ID:fENDu7uP
>>873
今回のSmalltalkは道連れ的に名前出されただけでむしろ被害者
変なのが混ざってないSmalltalk内ではちゃんと一貫した挙動のはずだろ?知らんけど
2018/07/01(日) 17:30:42.04ID:009IG+wv
>>885
よくわからんのだけど
Rubyでは〜って意見が出たらそんなに嫌なん?w
俺なら他の言語でどうって意見はむしろ感心があるが
2018/07/01(日) 17:32:52.47ID:i54g35bC
>>889
同感
2018/07/01(日) 17:49:59.60ID:5prQoZWD
>>883
Smalltalkを知っている != Smalltalk信者
ちゃんとお薬のんでる?
勝手にやめちゃいけないよ?
892857
垢版 |
2018/07/01(日) 18:07:48.02ID:FQlsc9Xo
>>891
なあ、smalltalk と ruby に詳しいんだったら、意味の無い罵倒を止めて、 >>869 の答えてくれない?
2018/07/01(日) 18:22:04.92ID:IY9E+BQR
Perlさん何で死んでもうたん?
2018/07/01(日) 18:23:52.18ID:mbUvUy2m
Perlはワンライナーとして生き残ったのさ
2018/07/01(日) 19:07:07.35ID:QlwNZjji
>>891
まあお前がSmalltalk信者かどうかは見た人間が判断するから気にするな。病気が進行するぞ

ただ客観的な事実としてSmalltalkは完全なオワコンw
このスレでは場違いすぎて引くレベル
2018/07/01(日) 19:34:13.12ID:5wbqPO3N
>>894
わかる。awkよりも使い勝手はいい。正規表現処理ツールとして有り。ふとnode.jsでもいい気がしたけど
897デフォルトの名無しさん
垢版 |
2018/07/01(日) 19:46:03.96ID:x/qhOfWF
スレタイ読まずに書き込んでる奴らなんなの?
2018/07/01(日) 19:51:05.54ID:e+fGbKAY
>>862
> Smalltalkの人たちはScalaやRustのtraitsに対して、オリジナルのSmalltalkと違うからダメだ!あれは別物!って批判する

それは「批判」ではなく、理解や運用の混乱を避けるための「区別」の必要性を訴えているのです。
「オブジェクト指向」もそうで、Smalltalkが重きを置く「決定の遅延のためのメッセージングのオブジェクト指向」と
C++以降の「抽象データ型をクラス(またはそれに準ずるエンティティ)で実現するオブジェクト指向」とは区別すべきと一緒です。

批判があるとすればそれは、本質的に違うものに後から同じ名前を付けて混乱を招いていることに対するものでしょうね。
2018/07/01(日) 20:00:26.61ID:e+fGbKAY
>>862
> 他の言語より後に実装したclosureについては独自仕様でも問題ない、技術ベースで語れ

私はSmalltalk信者wですが、この文脈での>>844の「クロージャだから」もそれを受けた>>847の「ヒント:Smalltalk」も
混乱を招きかねない説明やサジェスチョンだと思いまよ。

# 以下は比較的に古典的かつナイーブな実装の Squeak や Pharo を想定しています。為念。

Ruby の retrun に相当する Smalltalk の(唯一の)制御構造である「^戻り値」は、
Ruby の>>837の例では prco_return や block_retrun と同じ挙動になります。

Object compile: 'rubyReturn
 | f ret |
 f := [:n | ^ n * 10. "以降に処理を書くとコンパイル時エラー"].
 ret := #(1 2 3) collect: f.
 ^''ret: '', ret printString'.

self rubyReturn "=> 10 "

余談ですが、lambda_return の挙動も「thisContext retrun」(戻り値が欲しいときは「return: 戻り値」)
という表現を使えばまあできなくはないです(が普通はやりません)。

Object compile: 'rubyLambdaReturn
 | f ret |
 f := [:n | thisContext return: n * 10. #以降の処理は無視].
 ret := #(1 2 3) collect: f.
 ^''ret: '', ret printString'.

self rubyLambdaReturn "=> 'ret: #(10 20 30)' "

いずれにせよ、Smalltalk でクロージャ内のリターンがそのクロージャを実行中のメソッドコンテキストを抜けるという挙動をもって
(継続渡しとかならともかく)Ruby の複雑な状況の説明を試みるのはあまりよい方法ではないのは確かですね。
2018/07/01(日) 20:01:01.72ID:gbNzWOju
>>897
pythonやrubyで型を宣言させる話だったな
型を宣言すれば次世代に行けるらしい
901857
垢版 |
2018/07/01(日) 21:20:45.24ID:FQlsc9Xo
>>900
かといって、スレタイの TypeScript だって、 Python + 型チェック とあんまり変わらなくないか?

#まあ、TypeScript は次世代じゃないという主張はありだけど
902デフォルトの名無しさん
垢版 |
2018/07/01(日) 21:23:13.47ID:mO0FHij0
掲示板の書き込みに#で補足コメントするスタイルはキモすぎる
903デフォルトの名無しさん
垢版 |
2018/07/01(日) 21:23:34.86ID:8lWKFGMK
どんな言語も最初は簡単で使いやすいと言う。

しかし、注目されて実用レベルになると言語仕様が破綻してくる。

お前さんが使っている次世代言語もいつのまにか消えてなくなるさ
2018/07/01(日) 21:28:36.04ID:jMta/5/n
とりあえず動的言語嫌いだから次世代に遺さなくていいよ
2018/07/01(日) 22:10:15.50ID:iGjgOveK
せやな

// 型なし糞言語は死ね
2018/07/01(日) 22:47:05.58ID:IY9E+BQR
米は//より#のが好きです
//や’はスカスカし過ぎててなんか
2018/07/01(日) 23:13:47.55ID:CF9fODYJ
まーたsmalltalker来てんのか。草
2018/07/01(日) 23:27:37.29ID:eYdB7t9V
>>906
俺逆だ
#の目にうるさいこと極まりない
コメントですらバグったのかと思う
2018/07/01(日) 23:41:20.04ID:YPIrazbz
2018/07/02(月) 02:35:06.08ID:1yNW4Sj0
スクリプト言語はshebangあるから#じゃないとうれしくないな
コンパイル言語は好きにすればええ
2018/07/02(月) 03:45:57.45ID:sK89Ta1p
>>876
Rubykaigiは井の中の蛙の見本市だから

Ruby最強他言語バーカって精神異常者の集まり

そら宗教の本山みたいなもんだから盛り上がり自体はあるが
技術的にはもう終わってる
912844
垢版 |
2018/07/02(月) 06:42:05.84ID:9wGdj7CA
>>857
Ruby のProc, block はクロージャで、
Procは、blockを変数に入れて、持ち運んで、後で呼べるようにしたもの

その際、block内でbreak を呼ぶと、ループ処理が完遂せず、失敗とみなしたのだろう

ラムダは後に作られたから、return で値を返すようにした

結局、Proc, block、ラムダ、クラス・モジュールも、
スコープチェーンという単一の概念から出来ている

自分の1つ外側のスコープを指す、ポインタを持っている
2018/07/02(月) 09:01:43.20ID:Ovw/GWMA
>>911
すげー思い込み強すぎ。中にはそういう人もいるかもだけど多数派じゃないだろ。
原理主義者怖すぎ。あんまり偏りすぎて人刺したりするなよ。
2018/07/02(月) 09:17:09.45ID:BcUDQh/y
> Procは、blockを変数に入れて、持ち運んで、後で呼べるようにしたもの

これしょうもない設計だよな。
jsとかだったらコールバック関数で統一的に扱えてるところだろ。
こんな本質じゃない言語機能ムダに複雑にして何やってんだか。
わざとパズル難しくして解いて「楽しい」こんな言語かな?
915857
垢版 |
2018/07/02(月) 09:49:51.97ID:OVGUyhuB
>>912
あなたがrubyを好きなのはよくわかる、が

>結局、Proc, block、ラムダ、クラス・モジュールも、
>スコープチェーンという単一の概念から出来ている
>
>自分の1つ外側のスコープを指す、ポインタを持っている

単一の概念にするのは失敗してるんだ

理由は簡単、blockにbreakがあるせい。breakの飛び先は、通常のlexcal scope では解決できない。飛び先は定義時と関係ない、後で呼び出される each などのblockを呼び出す関数内に有るからな

他の内部イテレータ使う言語は、諦めて例外やcall/ccなどの大域ジャンプでエミュすることにしてる。
rubyは頑張ってなんとかしようとして、結局統一出来ず、でも似てるから使用が困惑する結果に
2018/07/02(月) 10:18:33.33ID:nMhGW4st
>>913
このレスの方が怖い
2018/07/02(月) 10:41:05.97ID:XQH9Y7UX
連想配列[名前] = ラムダ

こうして連想配列と代入とラムダで統一すればclassは本質ではないのに
統一を阻止して、classを次世代に遺そうとするのはRubyもECMAScriptも同じ穴の狢
2018/07/02(月) 10:47:23.08ID:j4QNCpln
まだ80年代の技術に追いつけないのか、次世代言語wスレの住民は…ばか?
2018/07/02(月) 10:50:09.56ID:FaPINm7E
Smalltalkとか言うカビ臭いクソ言語について語ってるやつの頭の中だけ80年代で止まってるけど
他の人は普通に話ししてると思うけど
2018/07/02(月) 13:03:54.58ID:EdW/pwjk
>>913
原理主義者怖すぎ、については、
そっくりそのままRubyistにお返しするわ
2018/07/02(月) 19:19:13.27ID:NAI8Vih0
建て前上だけでもclassを消したら次世代感あると、思います
2018/07/02(月) 19:39:32.22ID:NyO7x8zO
>>921
ハスケルばかにしてる?
923デフォルトの名無しさん
垢版 |
2018/07/02(月) 19:42:13.22ID:HeCnpISr
アンチMicrosoftを掲げる以上、Rubyを使うべきだろね。
2018/07/02(月) 20:33:18.53ID:9WbprnCr
クロージャの問題は結局変数の評価タイミングが分かりづらくなりやすいってところ。
common lispはその点わかりやすい。
925デフォルトの名無しさん
垢版 |
2018/07/02(月) 20:47:10.91ID:HeCnpISr
あちらこちらに分身がいて、どれかを書き換えると他に影響してしまう。
そんな混とんとした世界で生き抜くにはいろいろなものが必要になる。
つまり、コピーとムーブが一番楽。
2018/07/02(月) 20:47:29.49ID:nj5wv8+r
>>920
goとかjsとかparser用意しないとast作れないところを見るとlispが次世代感あるように感じてきた
2018/07/02(月) 20:50:20.50ID:lajLSwSc
>>917>>921
やはりここはLuaの出番か
928デフォルトの名無しさん
垢版 |
2018/07/02(月) 21:36:57.09ID:F0SAJ301
luaはnginxと組みわせて使う
2018/07/02(月) 21:49:01.21ID:TJD/4INa
>>926
astそのもの書いてるだけじゃん。
靴に足を合わせる理屈は御免です。
2018/07/02(月) 21:51:14.33ID:vpeKf2Dq
Lispはいいぞ
2018/07/02(月) 21:58:33.96ID:SHnfHk0h
>>920
社会に出ろよ。
2018/07/02(月) 21:59:57.72ID:JnEvidvy
>>920
ドカタの社会に出ろよ
ドカタの社会に出てないの丸わかりレベル低すぎ
2018/07/02(月) 22:00:32.20ID:9WbprnCr
algol系のシンタックスに合わせてる方が無理がある。
2018/07/02(月) 22:06:32.06ID:3279IT8S
久々に社会に出てみたら、
青春を捧げたRubyがすっかりオワコンになってて哀しいです(^q^)
2018/07/02(月) 22:27:57.20ID:sXgZmTLa
インターンってRubyばっかだな
素人学生にRuby書かせるとか頭おかしなるで
正気か?どうゆうロジックなんだ?
936デフォルトの名無しさん
垢版 |
2018/07/02(月) 22:42:00.11ID:F0SAJ301
世代的にrubyで育ったリーダが多いからじゃない
外資ではgoとかpythonが多い
メガネのヒョロガリが写真に写っていてRoRエンジニアを募集してたらまずハズレだ
2018/07/03(火) 00:16:39.10ID:ulFfuTSn
何故breakにしたんだろねRuby。returnじゃ駄目だった理由が分からない
938844
垢版 |
2018/07/03(火) 01:06:30.72ID:LtnxPY8P
Ruby では、break, return、例外も、単一の同じ仕組みを使っている。
コールスタックをさかのぼるポインタ。
つまり、どこから呼ばれて、どこへ戻るか

breakは、1つ外側のスコープへ戻る。
returnは、最も外側のスコープを抜ける

(レキシカル)スコープチェーンと、コールスタックの2大柱。
実装系・VM を作るには、この本がおすすめ

Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの内部の仕組み
2018/07/03(火) 01:19:37.85ID:rBmEiF9u
いいえ、私は遠慮しておきます
2018/07/03(火) 01:55:27.47ID:gSJ8jPZs
旧世代言語のネタですっかり過疎ってしまった
941デフォルトの名無しさん
垢版 |
2018/07/03(火) 03:04:30.31ID:V6NmESsv
RailsってC#でいう.Netみたいなもん?
2018/07/03(火) 03:29:58.10ID:LeNHWyDL
>>928
redisも便利
2018/07/03(火) 06:19:51.17ID:ZNPbo2Ku
相手が望んでいない解説をするときは、それがスレの内容として意味があるかを基準にするべき
単にこの言語ではこうなっている(中身はさして珍しくもない)というだけならやめとけ。余計嫌われる
944デフォルトの名無しさん
垢版 |
2018/07/03(火) 06:53:27.01ID:MH5+eiAJ
スレタイに並んでいる言語だとtsは張り合う相手いないから語るようなことないよな
ネイティブアプリ向けも張り合う相手なし
領域が被るのはサーバサイドにおけるrust,swift,kotkin nativeくらい?
2018/07/03(火) 07:30:13.14ID:oQIvqi2O
>>925
だから次世代言語って何よ?
スレタイに沿って話せって言うけど、次世代言語がなにかも曖昧で
2018/07/03(火) 08:27:38.25ID:CN6nXbG2
旧世代の言語の(しがらみとかで)回避できなかった欠点を既存機能を損なうことなくうまく克服し
次世代を担うべく存在する言語だよ

C++のメモリリークを所有権で回避した「Rust」
Obj-Cのnil禍をオプショナル型で回避した「Swift」
JSの実行時エラーを静的型で回避した「TS」

Rubyはこの20年自らの欠点をちょこちょこ直す以外なにもやっていない
2018/07/03(火) 08:31:16.08ID:gQdpXUBz
TSは別格すぎる
さすがにもう現世代扱いでいいだろ
948857
垢版 |
2018/07/03(火) 09:12:56.01ID:0xlHwX4q
>>937
いや、next はともかく、 break は lexical scope の範囲内では実装出来ないんだよ。
break が for や while でキャッチされる特殊な例外扱いならば、こんなおかしな事にならず、Proc 内でも break 使える様に出来たのに。

>>938
ここでいっているスコープは、 dynamic scope であることに注意ね。
内部イテレータでは、本来 break は例外と同じ方法でしか実装出来ない事を理解いただいて何よりです。
でも、ruby では、 Proc で break 呼び出したときの例外が LocalJumpError になっていて、どういう扱いにしたいかよく分からないんだよね。
for, while 内の break との整合も取れないし

まあ、次世代言語の話じゃないんで、そろそろ突っ込みは止めときます。
2018/07/03(火) 09:15:15.62ID:cg5PW7i9
swiftが次世代だってぷぷ
めちゃくちゃclassicなんだけど
2018/07/03(火) 09:26:00.07ID:N+3lR6RH
>>947
msが怒涛の開発力で一気に使いやすくしたよなぁ。
しかもEditorとセットで。
しかもlspを考えてどのEditorからでも補完が効くようにしたりとか。

まだ開発スピードが止まる気配がないけど、
他に何を開発する余地があるんだろ。
2018/07/03(火) 09:33:01.11ID:TTM9k7xe
世代の交代を駆動するのが枯れた技術であってもいいんだよ
まあ仕様の腐った言語しか眼中にない人間には理解できんだろうけどね
2018/07/03(火) 10:15:55.62ID:CZ1ZSS89
開発元が腐ってるRustとTypescript
これは次世代とは言えまい
これが覇権取ったらディストピア一直線
2018/07/03(火) 10:25:54.60ID:CZ1ZSS89
真に次世代の言語はNim
今までの言語の焼き直しに留まらない書きやすさと実行速度を両立した言語で
開発元もモジラとかMSみたいな邪悪な企業じゃない
2018/07/03(火) 10:44:28.82ID:pQbF/VH/
単なるCのソースコードジェネレータじゃん。
nimが速いんじゃなくてCが速いの。Cのソースコード吐いてCのソースコードコンパイルしてるんだから。
coffeescript()なんかのaltjsと同じようなもんだね笑
2018/07/03(火) 11:31:15.91ID:jh9a6Llj
高度なシンタックスシュガーだからね
でもCよりは確実に使いやすいしいいと思うよ
2018/07/03(火) 12:11:26.83ID:H2PJV6CA
>>941
c#で言うとasp.netみたいなもの。
c#ユーザだとしてもEFとビュー関数が無いと何もできない低レベルな人間。
2018/07/03(火) 12:13:14.64ID:H2PJV6CA
ついにMSだけじゃなくてMozillaも槍玉にあげ始めたのか。
2018/07/03(火) 12:43:16.36ID:4OdwMirb
Rubyがブロック引数を組み込みの制御構文のように見せたかったというのは旧世代の発想としてはよくわかるけど、
第一級関数や高階関数が十分に一般的なものになった現代においては組み込みのループのように見せるという発想自体がもう時代にあってないと思うわ
むしろ次世代言語は組み込みの制御構文なんか撤廃して関数に寄せればいいと思うんだが、
なかなか手続きベースの言語でforで捨てるものは現れないね
2018/07/03(火) 12:55:23.66ID:onhdh/0N
forとかを単なる関数として提供してる言語いくつかなかった?
2018/07/03(火) 13:05:27.52ID:TTM9k7xe
>>958
> 制御構文なんか撤廃して関数に寄せればいい

具体的には?
961デフォルトの名無しさん
垢版 |
2018/07/03(火) 13:15:41.14ID:ZYDLmzQl
>>958
手続き型言語と呼んでいいのかわからんが、tclなら、制御構造は全て「コマンド」扱いで、BNFとか笑っちゃうぐらいシンプル
2018/07/03(火) 13:45:16.08ID:taCiD/Gz
>>958
条件分岐と繰り返しはプログラムの基本構造なわけだが
逆に関数とかサブルーチンとかは基本構造に入ってないわけだが

お前は、超天才かドアホかのどちらかだなw
2018/07/03(火) 13:58:16.98ID:ZNPbo2Ku
>>958
俺は味方だよヽ(´Д` )
964デフォルトの名無しさん
垢版 |
2018/07/03(火) 14:53:19.41ID:78ysfJXf
俺は勝った方の味方するよ。
最初から味方だった、俺のおかげで勝てたみたいな感じで。
2018/07/03(火) 15:16:48.85ID:U5Zq1zkR
第一級関数というやつ
ほとんどの場合意味がわかってないか
勘違いしてるよな
クロージャーっぽく書けたら第一級ってわけじゃないから
2018/07/03(火) 16:26:35.93ID:dRr5lTkl
>>869
> smalltalkには break や continue (next) はないだろう?

横レスだが少なくともXEROXのグループが書籍として出版した初期のSmalltalk-80にはその類のものなかったね
なお、closure本来の議論をする上ではSmalltalk-80のブロックを引き合いに出したのは悪くないと読んでいて思ったけどね
というのはHaskellのような代入命令のない言語でなく代入命令を持つ言語でのclosureとしてはSmalltalk-80のブロックは最も基本形なので議論のベースとしては分かりやすい
本来ならAlgol 68のproc mode(modeは普通の言語での型に相当)の値がclosureなんだがAlgol 68は概念は良く整理されていても用語が変態過ぎて議論のベースとしては使いやすくない
Smalltalk-80のブロックはAlgol 68のprocを素直に継いでいると考えて構わないので、要するにSmalltalk-80のブロックを議論での叩き台にするのは
命令的言語でのclosureとしてオリジナルであるAlgol 68のprocを叩き台としてclosureの議論をしようというものなのでclosureの一般論が目的ならば悪くない

ただ特定の言語、特にrubyのような比較的新しい言語(後述のマイ言語化以降の時代に登場した言語)限定の議論には不適切かも

> ruby のは、closure に break や next を持ち込んでおかしくなっているように見えるよ。

そりゃAlgol 60やAlgol 68やSchemeなどを作った人々とRubyの製作者とはプログラミング言語に対する基本的な見識においてレベルが違いすぎますからね

かつてプログラミング言語の形式的意味論までか否かは別にして言語の基本概念は何かきちんと学び理解するのが常識だったが
簡単に言語を実装できるようになって=マイ言語化されて以降、スクリプト言語のような軽い言語が百花繚乱の如く咲き乱れる(と言えば聞こえは良いが要するに粗製乱造される)ようになって以降
基本概念をきちんと学び理解していない人でも新しい言語は簡単に作れ、上手くファンを掴めるとそれなりに流行ってしまうようになったので
実際にきちんと意味を考えるととても不自然で理解が困難になるような言語機能の組み合わせ方を単に「だって便利だもの」という理由で言語に組み入れられてしまうようになった
単なる便利さだけで深い考慮なく導入されたものを意味論などから合理的・体系的に説明・理解するのは困難、年寄りの戯言でした
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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