18/06/25 02:39:47.18 sauGlQNA.net
日本じゃ全然話題にならないけどEveのトピックはいつも大論争になる。
果たしてEveは革新的なプロジェクトなのか、誤って定義した問題を解決しようとしているに過ぎないのか。
URLリンク(news.ycombinator.com)
URLリンク(news.ycombinator.com)
URLリンク(news.ycombinator.com)
URLリンク(news.ycombinator.com)
751:デフォルトの名無しさん
18/06/25 03:16:00.10 /4lQWXmM.net
Egisonのパターンマッチちょっと感動した
752:デフォルトの名無しさん
18/06/25 03:17:17.70 44m9rNA8.net
記号なしの数学はより分かりやすく役に立つか
753:デフォルトの名無しさん
18/06/25 09:16:08.84 5QtoeHUB.net
パトロン見つからなくてプロジェクト終了してたんだな。残念
754:デフォルトの名無しさん
18/06/25 14:24:03.82 KTJIIKxw.net
>>170
は?vscodeもtsも不安しかねえんだけど
シェア一強になるまでは低姿勢、なった瞬間に手のひら返し、が今までのMSのテンプレ
今回もまったく芸のないテンプレでむしろ呆れてるところ
お前みたいなバカが信者かわからんがMS持ち上げる阿呆が出てくるからタチ悪い
755:デフォルトの名無しさん
18/06/25 14:27:50.78 NzmJfW7/.net
マイナーvsマイナーだと、設計そのものの良し悪しよりも
どれだけ労力をかけて作り込まれているかの方が影響でかいからなあ……
作ってる側が「いやそこの最適化は後回し」とか思ってるところを測ってもしょうがないし
(いやメジャーvsメジャーでもそういうとこあるけど)
756:デフォルトの名無しさん
18/06/25 15:24:30.75 3bOE7bXX.net
一生疑って暮らすのは楽しいのかな
757:ぁ
758:デフォルトの名無しさん
18/06/25 15:50:06.67 d4UYbnp8.net
「疑う」の反対は「割る」
割れば楽しいのはわかった上で敢えて疑う方を選ぶんだろう
759:デフォルトの名無しさん
18/06/25 16:43:18.37 1uudit/q.net
>>738
なんかSmalltalk風味があるな・・・
760:デフォルトの名無しさん
18/06/25 19:42:46.10 Vbt8BrVm.net
MSのやり方について講釈垂れる前に
ライセンス見ろよとしか(VSCode,vscode)
761:デフォルトの名無しさん
18/06/25 23:28:09.79 RDIsdPp/.net
>>742
陰謀論者は生きづらそうで大変ですね。
もしMSが手のひら返したら、forkするだけですけど?
762:デフォルトの名無しさん
18/06/25 23:37:34.43 XbrJPmKw.net
forkするだけ(藁)
強がっちゃってまあ
いいのか?フォフォフォカヌポォしますぞ!!!(憤怒)←草www
763:デフォルトの名無しさん
18/06/25 23:47:42.02 d4UYbnp8.net
forkするより製品版を単純にコピーするだけの方が早い
MSの影響で民度が下がる
MSと無関係でいる方が安全
764:デフォルトの名無しさん
18/06/26 00:04:43.71 Si7josaM.net
永遠にvimかemacsしか使わなければよい
765:デフォルトの名無しさん
18/06/26 00:07:22.28 RrNymGzT.net
数年前の意識高い系達が「Web開発のスピードにIDEなど邪魔(キリッ」とか言ってたのが嘘みたいだよな
結局のところ彼等は電気を知らない原始人だったのだ
766:デフォルトの名無しさん
18/06/26 00:09:45.57 5qApnOMl.net
火に怯えてた猿、の間違いだろw
767:デフォルトの名無しさん
18/06/26 00:10:17.87 PwoRxl17.net
Vimは操作性や立ち上がりの速さが優れている
Guiのエディタはプラグイン導入の楽さが優れている
Emacsは間くらい
768:デフォルトの名無しさん
18/06/26 01:10:33.16 OhefK1bS.net
>>742
つーか誰もツッコんでないんだけど、なんでこんな遅レスなんだっていう
769:デフォルトの名無しさん
18/06/26 02:31:41.82 z7QfCwwb.net
>>742
不安を感じないものを上げてみて
770:デフォルトの名無しさん
18/06/26 07:48:27.74 8nfGtP67.net
アメリカ人「銃があれば原始人を倒せるのに」
771:デフォルトの名無しさん
18/06/26 10:23:19.59 /82hZ4jz.net
>>756
Gitlabは少なくとも信頼できる
Azureで動いてるとか言ってる奴いるけどもうやめるって話出てる
エディタはEmacsで十分だし、babelあればES2016でもまともに書けるからTSは不要
772:デフォルトの名無しさん
18/06/26 10:30:34.11 Uq9cj0Jx.net
>>758
DB消すようなとこが信頼できる?
773:デフォルトの名無しさん
18/06/26 10:39:38.33 /82hZ4jz.net
>>759
消したあとの対応は信頼できる
MSなら消しても揉み消してた
774:デフォルトの名無しさん
18/06/26 10:43:02.43 jiePcum7.net
>>760
MSそんな事したことあったっけ?
ただの妄想?
775:デフォルトの名無しさん
18/06/26 11:38:55.58 8nfGtP67.net
疑問を持つ人はいっぱいいるが疑問を解決する人は少ないのが現実で
すぐに解決すると思うのは非現実的
776:デフォルトの名無しさん
18/06/26 17:29:52.82 iZChSW1/.net
年食うと一度学んだ思考回路は変えられないんだろうな
多分死ぬまでMSは邪悪でEmacsは最高のエディタなんだろう
777:デフォルトの名無しさん
18/06/26 18:29:07.51 SLOKSalZ.net
>>677
URLリンク(benchmarksgame-team.pages.debian.net)
Swiftは遅い
778:デフォルトの名無しさん
18/06/26 19:30:48.24 Si7josaM.net
Goより速いじゃん
779:デフォルトの名無しさん
18/06/26 19:55:40.04 HsrbbpJS.net
>>763
それも偏った思考回路だな
780:デフォルトの名無しさん
18/06/26 19:56:14.90 SLOKSalZ.net
あとSwiftでパターンマッチ使うときさ「case let」の「let」ってなんの意味有るの?
781:そもそも「case」自体いらないよね。 Rustみたいに簡潔な構文にしない意味がわからん。
782:デフォルトの名無しさん
18/06/26 20:18:13.51 ouGSlrDx.net
簡潔って記号だらけにしろってこと?
perlでも使ってれば
783:デフォルトの名無しさん
18/06/26 20:22:26.08 wzcThIhT.net
Rustの構文が簡潔……??
784:デフォルトの名無しさん
18/06/26 20:23:51.43 SLOKSalZ.net
Scalaも構文ダメだけど、Dottyでかなり改善されてるみたいだね
URLリンク(dotty.epfl.ch)
785:デフォルトの名無しさん
18/06/26 20:32:08.64 SLOKSalZ.net
>>768
>>769
冗長な構文にするなってこと。
```Rust
match number {
1 => "one",
2 => "two",
_ => "else",
}
```
```swift
switch number {
case 1: return "one"
case 2: return "two"
default: return "else"
}
```
786:デフォルトの名無しさん
18/06/26 20:36:27.71 Rm57MuZK.net
msが嫌いならflow使っとけばいいよ。
俺はTypeScriptで行く
787:デフォルトの名無しさん
18/06/26 20:37:59.55 Rm57MuZK.net
>>771
rustをそんなに押すなら、
毎日ちょっとずつ使い方教えていけよ。
面白い内容ならそのまま覚えるから
788:デフォルトの名無しさん
18/06/26 20:40:42.88 wjruZlWa.net
>>767
case varがあるからでは
789:デフォルトの名無しさん
18/06/26 21:03:22.89 1/94qv1z.net
>>770
dottyは流石に見苦しいわ
今更互換性ブチ壊して誰がわざわざScalaなんか使い続けるんだよ
Lightbendは一度プラットフォーム主導者の味を覚えてしまってもう後に引けなくなってるんだろうな
790:デフォルトの名無しさん
18/06/26 21:08:47.59 SIV9Ebow.net
元が冗長だと、機能追加したときの新構文(大抵元と区別のために冗長になる)が
あまり違和感なくなるというメリット?もある
C++とか酷いだろ。rustも多分20年ぐらいしたら酷くなる
791:デフォルトの名無しさん
18/06/26 21:18:39.20 SLOKSalZ.net
>>774
Rust: URLリンク(play.rust-lang.org)
Swift: URLリンク(ideone.com)
この場合Rustのようにlet書く必要ないと思うんだけど?
792:デフォルトの名無しさん
18/06/26 21:33:59.71 uCVrG76/.net
>>776
Rustが20年も残ってるとか信者かよ
793:デフォルトの名無しさん
18/06/26 21:38:20.73 uCVrG76/.net
>>763
いつMSが邪悪じゃなくなったんだよ
エディタについてはVimとEmacs以上のものがいまだにないだけ
794:デフォルトの名無しさん
18/06/26 21:42:01.06 z7QfCwwb.net
>>779
老害おつ
795:デフォルトの名無しさん
18/06/26 21:43:00.71 SIV9Ebow.net
>>778
ObjectPascalは30年経ってるが、元が冗長と言われまくってたPascalだったおかげで
魔改造されまくった今でもあんまり浮いた構文は無いぞ
初期Macで採用されてたのは別格としても、その後は大したプロダクトもないDelphiぐらいでしか残ってないのに
一応生き残ってるんだから、FirefoxのあるRustも同じぐらいは残るだろ多分
796:デフォルトの名無しさん
18/06/26 21:46:10.71 uCVrG76/.net
>>780
どっちかっていうと、若者がMSの暴虐の歴史を学んでないから
今現在進んでる暴虐が暴虐と分からないだけだぞ
797:デフォルトの名無しさん
18/06/26 21:49:11.80 uCVrG76/.net
>>781
火狐に使われてるから残るとか
火狐の世界シェア見てから言おうぜ……
Rustごと自殺して消えるって自白したようなもん
798:デフォルトの名無しさん
18/06/26 21:49:29.84 1/94qv1z.net
完全に半島人
799:デフォルトの名無しさん
18/06/26 21:49:47.34 jiePcum7.net
>>777
だからletとvarがあるんだって
let: URLリンク(ideone.com)
var: URLリンク(ideone.com)
800:デフォルトの名無しさん
18/06/26 21:50:20.36 z7QfCwwb.net
>>782
具
801:体的に
802:デフォルトの名無しさん
18/06/26 21:50:49.04 K3KwuDCb.net
Delphiで残れたのなら火狐で残れるだろ
803:デフォルトの名無しさん
18/06/26 21:54:24.01 1lcgGYQy.net
この爺さんはこのスレに何しにきとるんだ
特養じゃないっつの
804:デフォルトの名無しさん
18/06/26 21:56:05.20 SIV9Ebow.net
>>787が書いてくれたが
俺も、どっちも細々としたもんだがFirefoxのほうがDelphi(製アプリ)よりはまだマシだろう、というつもりだった
その上で20年後の変更されまくったrustはDelphiやswiftより汚くなってそう、という予想
805:デフォルトの名無しさん
18/06/26 22:07:57.87 TI86xS9J.net
すでに汚いしな。
806:デフォルトの名無しさん
18/06/26 22:12:37.76 SLOKSalZ.net
>>785
varがあるのはわかるけど、そこでvarを使う場面てあるのかね?
URLリンク(ideone.com)
```swift
case let .B(n):
let t = n+1
return String(t)
```
だって変わらんし
807:デフォルトの名無しさん
18/06/26 22:24:29.16 SLOKSalZ.net
>>785
それにvarのときだけつければ良くないかね,Rustだと「mut」つけるだけだけど
URLリンク(play.rust-lang.org)
```rust
AB::B(mut n) => {
n+=1;
n.to_string().into()
}
```
808:デフォルトの名無しさん
18/06/26 22:33:54.59 wjruZlWa.net
>>791
変数束縛にletとvarがある言語において、switchのときだけ変数束縛を特別扱いしてletやvarを省略できるのは一貫性が無いという考え方もある
809:デフォルトの名無しさん
18/06/26 22:39:59.15 wjruZlWa.net
それに短ければ良いなら、rustのlet mulよりswiftのvarの方が短い
パターンマッチより変数宣言方が良く出て来るしね
810:デフォルトの名無しさん
18/06/26 22:47:02.38 b30is1tn.net
20年後に汚くなるってのはみんなわりと納得するんじゃね?
C++もJavaも、時間経過とともにきっちり汚くなった
言語仕様こねくり回すのが仕事の人が存在するからしゃーないっちゃあしゃーない
811:デフォルトの名無しさん
18/06/26 22:48:50.88 cumK515O.net
難しい・易しいではなく汚い・美しいという見方をするのはなんでだろう
数学を諦めた感が漂ってる
812:デフォルトの名無しさん
18/06/26 22:49:48.96 SLOKSalZ.net
>>793
そういう見方もあるけどね
でも
```
case let .B(x): return String(n)
```
と
```
case .B(let x): return String(n)
```
の違いってなんなのかね、違いがないなら「let」省略できたほうがいいように思うが
813:デフォルトの名無しさん
18/06/26 22:51:21.79 SLOKSalZ.net
>>797
訂正: xじゃなくてn
814:デフォルトの名無しさん
18/06/26 22:57:45.92 SLOKSalZ.net
>>794
短いことがいいんじゃないよ、理由なく冗長な構文がだめなだけ。
Rustはわざと「var」とかじゃなく「let mut」にしている理由は、通常イミュータブルを使うようにするため。
ミュータブルの構文が長いことでプログラマがイミュータブルをより一般的に使うよう促す効果がある。
815:デフォルトの名無しさん
18/06/26 23:00:40.71 HsrbbpJS.net
可読性の高い綺麗なPerlコードを書けるものだけが石を投げなさい
816:デフォルトの名無しさん
18/06/26 23:12:38.14 SIV9Ebow.net
>>799みたいなのは設計当初は綺麗なんだけど
後から、例えばD言語のconst/immutableみたいな選択肢を追加してしまうと罠に化けそうじゃない?(妄想だけど)
その点元が冗長ならある程度耐性がある、という話。後から省略可能にする方はできるしな
817:デフォルトの名無しさん
18/06/26 23:29:44.42 SLOKSalZ.net
>>801
Dは全然知らないけど、調べたらデフォルトがミュータブルで、immutableをつけるとイミュータブルになるのか。
```
int x = 3; // ミュータブル
immutable int x = 3; // イミュータブル
auto s = "hello"; // イミュータブル
```
これはひどいな
818:デフォルトの名無しさん
18/06/26 23:32:04.35 SIV9Ebow.net
>>802
そこはまあしょうがないとして、イミュータブルにも種類があるという点
819:に注目してくれ
820:デフォルトの名無しさん
18/06/26 23:40:45.19 cumK515O.net
コンパイル時に値がわかるのが定数
実行時に初期化するがその後は変更しないのがimmutableかな
821:デフォルトの名無しさん
18/06/26 23:56:28.51 SIV9Ebow.net
加えて、現在のスコープからは変更不可能だが実体はミュータブルかもしれないのがconst
更にそれぞれに推移のON/OFFがある
何も書かないのがイミュータブルだとその内の1つを適当に使ってるということで
選択肢が増えたときにどれか1つが不自然に短く書けてたことになるし
現状を突き詰め直したときにコンテキスト毎に別のだったなんてことになると目も当てられない
822:デフォルトの名無しさん
18/06/27 00:01:32.20 3Z0mJH5D.net
やっぱり言語仕様は頻繁に変えるべきということだな!w
823:デフォルトの名無しさん
18/06/27 00:50:40.19 jdISqR1B.net
>>802
ゲェジかな
ワイの方がよっぽどいい設計できるわ
この作者はワイのケツ穴でも舐めてた方が幾分有益な人生になったんじゃないかw
824:デフォルトの名無しさん
18/06/27 00:59:47.78 CkpNpuYk.net
>>805
GCが必須ではない言語の場合、ミュータブルならばメモリ解放もできる
現在のスコープからは変更不可能だが実体はメモリ解放するかも
というのは非常にまずい
現在のスコープから変更不可能ならば実体も変更不可能にしたい
825:デフォルトの名無しさん
18/06/27 01:19:45.86 9jxZxPuA.net
>>808
それだとイミュータブルなオブジェクトを貰って何かする関数に
ミュータブルなオブジェクトを渡せなくならない?
そうすると print とか toString とか hash とか compare とかありとあらゆるものが
immutable / mutable 2種類必要になる
引数に2つオブジェクトがあると4種
3つなら8種
826:デフォルトの名無しさん
18/06/27 20:24:28.42 GckfUNYK.net
ただの再代入不可な変数をイミュータブルって言い始めたのって何の言語からなの
827:デフォルトの名無しさん
18/06/27 21:06:16.07 7rLtDwhR.net
>>810
たぶん英語だと思う
828:デフォルトの名無しさん
18/06/28 08:21:12.64 1UW06GNd.net
>>795
pythonなんかも細かいところはど汚いわけだがあんまりそういう汚いところ
触らんでも仕事になるって違いはある。
てかシンタックスなんててきとうにチェックでもそんな問題にならんよ。
self書かされることなんて文法で規制されてるわけでもないが問題になることなんてない。
829:デフォルトの名無しさん
18/06/29 09:12:05.44 iOzvNZgV.net
>>810
変更可、不可という概念は別に変数に限った話じゃない
830:デフォルトの名無しさん
18/06/29 09:23:47.61 XwuS30Hh.net
Pythonの型アノテーション試してるけど正直苦痛
TypeScriptを使ってるときには全く感じなかった無駄なもの書かされてる感がすごい
というかTypeScriptの統合が完璧すぎるんだな
型書くことはノイズになるどころかコードをむしろ美しくするとすら思えるもんな
831:デフォルトの名無しさん
18/06/29 10:57:44.57 0VaRYdhC.net
少しでも欲を出せばそうなる
完璧な無欲か完璧な満足かの1bitしかない
HaskellやRustのようになるまで止まらないぞ
832:デフォルトの名無しさん
18/06/29 11:15:41.22 tgpXEKjE.net
>>814
Python 3.6の変数アノテーションはTypeScriptと大して変わらないのでは?
以前のコメント形式は糞だったけど
833:デフォルトの名無しさん
18/06/29 13:13:42.11 8rEU0m4z.net
>>814
全部の変数にアノテーション付けようとしてる?
基本、関数・メソッドの入出力だけでいいぞ
残りは大体推測してくれる
834:デフォルトの名無しさん
18/06/29 13:43:06.77 HOtQS3nQ.net
>>817
ライブラリなどの既存メソッドの戻り値はほとんど型なしだから結局オレオレ型宣言を左辺の変数に付けて回
835:ることになる
836:デフォルトの名無しさん
18/06/29 15:55:24.38 546QQsBD.net
>>818
あー、過渡期だからそれはあるかもね
対策としては、他モジュールを呼び出すところはなるべく集める、いきなり完璧を目指さないぐらいか
837:デフォルトの名無しさん
18/06/29 20:05:29.68 SWySBfmj.net
そんなに型に気を使って消耗する位ならもう生js使おう
適当にラッパーかけとけラッパー
838:デフォルトの名無しさん
18/06/29 21:06:52.59 M/T+ZgVo.net
>>820
TypeScriptユーザーがシコシコ型定義ファイル作ってるおかげで、vscodeでjsでも補完きくんやで。感謝せーや
839:デフォルトの名無しさん
18/06/29 21:09:19.97 0KEVr9Fm.net
せめて同梱の標準ライブラリくらいは網羅しておいてほしいよね。
840:デフォルトの名無しさん
18/06/29 21:11:52.89 M/T+ZgVo.net
>>814
typeScriptみたく型定義ファイルの共有する仕組み無いの?
いちいち書くのはしんどいな。
841:デフォルトの名無しさん
18/06/29 21:39:48.60 0VaRYdhC.net
>>823
しんどいのか
その作業がないということはライブラリの作者は楽をしている
だからライブラリが増やすのも楽
そういう仕組みなんだろう
842:デフォルトの名無しさん
18/06/29 22:21:57.95 5dIySMmw.net
>>824
TypeScriptの場合は型定義を提供することでTypeScriptユーザーに使ってもらいやすくなり、
ユーザーの増加がライブラリ製作者にとって一手間かけるモチベーションになる
Pythonの場合は型アノテーションを付けたらPython3.5以上でしか使えなくなるのでユーザーは確実に減る
結果、誰も対応しない
根本的に破綻してるんだよ
843:デフォルトの名無しさん
18/06/29 22:35:49.90 0VaRYdhC.net
>>825
破綻してるのはお前のマウンティングだよ
マウントが酷いのはHaskellで、TypeScriptは無関係みたいなイメージが根本的に壊れた
844:デフォルトの名無しさん
18/06/29 22:39:04.05 Yl8lnP6m.net
そんなんでイメージ変わるのかよ…
845:デフォルトの名無しさん
18/06/29 23:18:51.02 ifNvOhNj.net
おれ的にはこのまま型定義ファイルがすべてのライブラリに標準装備されて緩やかにjsがts化していくことを希望したい。
最初から型定義がライブラリに入っていること多くなってきたよな、
846:デフォルトの名無しさん
18/06/29 23:54:19.04 uRtJ4/dJ.net
>>828
それには同意
847:デフォルトの名無しさん
18/06/30 02:42:20.84 eHfkv0CB.net
このスレに来て初めてマウンティングって言葉を知ったわ。
848:デフォルトの名無しさん
18/06/30 03:36:46.79 +abKhVkF.net
>>823
あるよ。
typeshedてのがそれ
>>825
関数の引数、返値なら3.0から書けるし、コメント使うか別ファイルに書くやり方なら2.7にも対応可能ですが
849:デフォルトの名無しさん
18/06/30 08:02:10.37 tr0WXiW5.net
Haxe では型定義ファイルがあるから、型推論も入力補完もできる
850:デフォルトの名無しさん
18/06/30 09:44:21.50 4h701pQF.net
通常ならライブラリ本体丸ごと読んで型を調べるべきだ
本体に型がないなら別ファイルに書く
851:デフォルトの名無しさん
18/06/30 12:26:26.59 aZHCYAl9.net
>>831
なんだあるんだ。なら型付言語として使われるのも時間の問題だな。
rubyにもあるみたいだし、
ライブラリのインターフェースだけでも型付き当たり前の世界が来そうだね
852:デフォルトの名無しさん
18/06/30 14:15:03.20 BB0BPsjY.net
まーたruby信者のそ、そんなのる、るびぃでもできるし!か。呆れ
なんでもかんでも深く考えず流行りをそうやって後付けで増築してって奇形極まってるよね。二度と使わないよ。
853:デフォルトの名無しさん
18/06/30 15:58:28.61 9HearrjU.net
rubyの違法建築感は否定しない
が、なんかまとめ臭い書き方だなおい
5chエアプか?
854:デフォルトの名無しさん
18/06/30 16:41:24.65 oxrLiD+S.net
るびぃ
855:信者、Proc.new、ラムダ、ブロックにおけるreturn、break、nextの挙動の違いをまとめようとした模様 https://qiita.com/jnchito/items/83410c0cda446efea582 結果、ややこしすぎるためコーディングを工夫してreturnやbreakの使用を避けましょうというなんじゃそりゃな結論www 何か理由があってわざわざ挙動を変えたんだろうが(まさか行き当たりばったりってことはないよね笑)ややこしすぎで使用自体を避けられてちゃ本末転倒だよなwww
856:デフォルトの名無しさん
18/06/30 17:39:57.19 RHrrdh8p.net
>>836
その人はrustがコンパイルできないおじさんだからほっときなさい
857:デフォルトの名無しさん
18/06/30 18:00:17.99 Q/uEsP1n.net
rust
ruby
似てないこともないな
858:デフォルトの名無しさん
18/06/30 18:59:53.28 +abKhVkF.net
>>834,836
とはいえ、ruby にまともに使える型チェックの実装があるのかには興味あるな。
まえ調べた感じだと、教祖の型チェック周りの発言はフワッフワだし、実装してみたい個人が互換性のない「オレオレ型チェック」を作っては破棄してる感じで、万人が使えるものは何一つないようなんだが。
859:デフォルトの名無しさん
18/06/30 19:02:48.17 6fEIEQu0.net
どうせ
if type(...) != my_class:
とかのシュガーだろ。そんなもんに目くじら立てても意味あるのかね。
860:デフォルトの名無しさん
18/06/30 19:33:21.11 CMs/fWc6.net
Rubyはオモチャだから型付けなんて要りません
それより散らかったオモチャを片付けなさい
861:デフォルトの名無しさん
18/06/30 20:38:08.56 4h701pQF.net
自分のために違法建築したとは考えにくい
ユーザーを忖度して違法建築なら利己的ではないからOKという風潮があったんじゃないか
会ったこともないユーザーをモチベーションにするのはやめてほしい
862:デフォルトの名無しさん
18/06/30 23:16:50.81 tr0WXiW5.net
>>837
Ruby のProc, block はクロージャだから、クロージャを囲む関数から戻る。
一方ラムダは、単にクロージャを抜けるだけ。
Groovy なども参照
def f
(0..5).each do |i|
puts i
return if i == 3
end
end
f() #=> 0, 1, 2, 3
863:デフォルトの名無しさん
18/06/30 23:39:42.18 xV+Shhkx.net
>Ruby のProc, block はクロージャだから、クロージャを囲む関数から戻る。
クロージャ「だから」、クロージャを囲む関数から戻る??
まるでクロージャだったら当然の挙動と言わんばかりの書き方だけど、クロージャってそんなんだっけ?
864:デフォルトの名無しさん
18/07/01 00:39:17.02 tX8JlSDC.net
そんなものちゃんと読んでる>>845に感心したw
ネットにはゴミが多いね
865:デフォルトの名無しさん
18/07/01 01:54:08.61 5prQoZWD.net
>>845
ヒント:Smalltalk
866:844
18/07/01 02:00:27.83 YZ+qvhoO.net
クロージャは、クロージャの外側の環境をつかんでいる。
つまり、クロージャを囲む関数内の変数をつかんでいる
だから、クロージャ内でreturn すれば、外側の関数も抜けて、
関数内の変数なども、解放した方が良いと考えた
Groovy の挙動とは違うかも
867:デフォルトの名無しさん
18/07/01 02:11:27.56 FQlsc9Xo.net
>>848
return だけだったら納得できるんだが、next や break の扱いがぐちゃぐちゃなのはどう説明するの?
868:デフォルトの名無しさん
18/07/01 02:52:24.35 QlwNZjji.net
>>847
関数型でもないウンコ言語がクロージャの話に入ってくんな
何の参考にもならんわ
869:デフォルトの名無しさん
18/07/01 03:04:39.74 3SrV2o5x.net
>>837
> まさか行き当たりばったりってことはないよね笑
その、まさかだぞ。
楽しくプログラミング()した結果が仕様だ文句あるか!w
870:844
18/07/01 08:32:31.95 YZ+qvhoO.net
クロージャ(block
871:)内のbreak は、クロージャを抜けるだけで、外側の関数は抜けない。 関数の最後まで実行される クロージャ内のnext は、次の繰り返しに進むだけで、クロージャも抜けない。 クロージャの最後まで実行される def f num = 0 (0..5).each do |i| num = i break if i == 3 end puts num end f() #=> 3
872:デフォルトの名無しさん
18/07/01 08:58:20.58 mO0FHij0.net
すみませんがゴミの話は当該スレでお願いします
873:デフォルトの名無しさん
18/07/01 09:01:20.31 TobyyIDd.net
これ他の言語にも影響あるだろ
continueはバグの原因になるとか、gotoの方がマシとか言われる
874:デフォルトの名無しさん
18/07/01 09:18:30.80 5prQoZWD.net
>>850
えー?closureが関数型特有な概念だと思ってるわけー?
面白いね、それ。本当は純粋関数型ではclosureはさほど重要ではないのだけど。
どうしてclosureが関数型固有な概念だと思ったのか、説明してごらん?
875:デフォルトの名無しさん
18/07/01 09:22:52.78 TobyyIDd.net
>>855
おまえが自分で説明しないで人に説明させようとするからだよ
もし関数型の人が説明したら関数型の概念になるに決まってるだろ
876:デフォルトの名無しさん
18/07/01 09:23:49.76 FQlsc9Xo.net
>>852
あなたが closure だからと主張する、block は 952の挙動だが Proc では break は例外吐くらしいけど何で?
# 言っちゃ悪いが、closure は定義した時点での環境を基準に動作が普通だと思うんで、
# ループ外で定義されているならば next/break は一律例外吐くで無いと一貫性がないようにしか見えん。
877:デフォルトの名無しさん
18/07/01 09:24:49.31 FQlsc9Xo.net
>>857
すまん、「block は >>852の挙動」だな。
878:デフォルトの名無しさん
18/07/01 09:25:25.69 89p34iy1.net
このbreakとnextは並列コレクションで困る気はする
879:デフォルトの名無しさん
18/07/01 10:22:00.59 5prQoZWD.net
>>856
へー、技術のベースになる概念が、関数型の人が説明したら別物になるのかー
おもしろいねークスクス
880:デフォルトの名無しさん
18/07/01 10:23:24.47 5prQoZWD.net
>>856
で、関数型の人って誰?ばか?
881:デフォルトの名無しさん
18/07/01 10:45:16.40 QlwNZjji.net
Smalltalkの人たちはScalaやRustのtraitsに対して、オリジナルのSmalltalkと違うからダメだ!あれは別物!って批判するくせに
他の言語より後に実装したclosureについては独自仕様でも問題ない、技術ベースで語れっておかしくね?
ダブスタも甚だしいだろ
882:デフォルトの名無しさん
18/07/01 10:48:49.50 TobyyIDd.net
忖度とか伝言ゲームとかいう問題を織り込むまでがITです
883:デフォルトの名無しさん
18/07/01 10:59:11.30 uHA6sqOS.net
>>844はクロージャなら当然あるべき姿としてRubyのProcを語ってるからなぁ
それに対して>>847がヒント:Smalltalkって言ってるのは
要するにSmalltalkがクロージャのあるべき姿を体現してるって言ってるワケで、そりゃ傲慢すぎる
ただの一例としてSmalltalkのような仕様もあるって言うなら批判されないのに
884:デフォルトの名無しさん
18/07/01 11:00:03.93 7m3QggRW.net
クロージャの方が自身の関数スコープを持ってる印象だな
メジャーな中では Java, C#, C++, JavaScript, Obj-C, Swift などがそうだし
Rubyのラムダも上記と概ね同じに見える
ブロックは文字通りコードの塊と考えるとreturnやbreakについて妥当な動きに見える
Proc.newは挙動がキモい
↓によるとdo…endも挙動が違うらしいから >>837 のリンク先は4種で比較した方がいいかもな
URLリンク(qiita.com)
885:デフォルトの名無しさん
18/07/01 11:08:34.39 7m3QggRW.net
中身読んだら結合度の差だったので >>865 の最後2行は撤回する
886:デフォルトの名無しさん
18/07/01 11:16:48.58 5prQoZWD.net
>>864
妄想が激しいね。
ヒント:Smalltalkっていうのは、Rubyのそのヘンテコな仕様はSmalltalk由来だということなんだけど。
お大事にね
887:デフォルトの名無しさん
18/07/01 11:19:42.69 5prQoZWD.net
>>862
きみ、結局はSmalltalkでのクロージャからのreturnの仕様を調べることすらしないで
思い込みだけで騒いでるでしょ?
そういうのを「バカ」って言うんだよ
888:857
18/07/01 11:25:18.69 usR85dqh.net
>>867
smalltalkには break や continue (next) はないだろう?
ruby のは、closure に break や next を持ち込んでおかしくなっているように見えるよ。
889:デフォルトの名無しさん
18/07/01 11:43:42.24 fENDu7uP.net
Smalltalkの仕様がどうであれ、それがRubyの仕様を正当化すると思ってなされているレス(>>847だの>>867だの)は
結局Smalltalkの仕様に権威がある、またはRubyがSmalltalkを模倣するだけの理由があるのを前提にしているわけで
傲慢という批判は妥当に思うな
890:デフォルトの名無しさん
18/07/01 11:52:10.11 tX8JlSDC.net
気持ち悪い挙動だと言いがかりをつける気満々のレスに対して
smalltalk でもそうだった昔からある挙動ですよと指摘しているだけでは。
なにも知らなければ議論はできない
といって smalltalk の知識は前提にしていいのかは疑問
とはいえやはり共通の知識がないと議論は無理だし難しいわ
891:デフォルトの名無しさん
18/07/01 12:46:18.88 fENDu7uP.net
Smalltalkを前提にすることに意味はない(Rubyと周辺状況が違いすぎるのに何故真似た?)というのが
すぐ直前の議論では
892:デフォルトの名無しさん
18/07/01 12:59:23.83 gbNzWOju.net
俺を批判するのはSmalltalkを批判するのと同じだっていうことの意味は一応ある
自分自身を守るためではなく仲間を守るためという大義名分ができる
893:デフォルトの名無しさん
18/07/01 13:03:25.38 QlwNZjji.net
滅びた言語のヘンテコな機能を真似た言語が
やっぱりヘンテコになって滅びつつある
それだけの話ではある
894:デフォルトの名無しさん
18/07/01 13:04:20.30 yp7ufL3+.net
もうRubyの話はやめよう
次世代でも現世代でもないし
895:デフォルトの名無しさん
18/07/01 13:25:35.07 5wbqPO3N.net
なんで?
rubyは触ってないけど、rubykaigiとかで盛り上がってる様子見てると、楽しそうだし盛り上がってる感あるけど。未だ現役じゃないの?
スタートアップがrails採用するイメージって、まだ古くないよね?
最近だとrailsのボトルネック部分をgoで書く話が面白かった。
896:デフォルトの名無しさん
18/07/01 13:42:13.57 k6Y+DK56.net
perlの後継になりそこなったし
海外の人気がかなり落ちてるからね
rails用言語で終わってしまった感
897:デフォルトの名無しさん
18/07/01 13:43:43.18 3SrV2o5x.net
railsにincludedされてるバッテリーだろ?www
898:デフォルトの名無しさん
18/07/01 13:57:23.22 5wbqPO3N.net
つーかrails言語で別に良くないか?
言語なんて所詮はツールなんだから。
bashでwebサービス作るやつはいないだろ?
899:デフォルトの名無しさん
18/07/01 14:06:40.12 gbNzWOju.net
目的と結果を比較されるから
目的はこれだったのに結果はこれなのか?と
目的などどうでもいいと断言できる人は少ない
900:デフォルトの名無しさん
18/07/01 15:32:54.19 5prQoZWD.net
>>870
そこまで妄想が激しいようだと治療は困難だね。
でもあきらめないで、先生からもらった薬をちゃんと飲むようにね。
でないと他人様に迷惑かけることになるから。
やくそくだよ。
901:デフォルトの名無しさん
18/07/01 15:34:06.79 2efWQwxv.net
薬? お薬の幻覚でも見えてんのか?
902:デフォルトの名無しさん
18/07/01 15:40:22.85 QlwNZjji.net
Smalltalkという完全に終わった言語に執着してるんだから
まあフツーに頭がおかしいんでしょう
薬飲めも普段自分が言われてるんだろうね
903:デフォルトの名無しさん
18/07/01 15:55:04.17 2efWQwxv.net
自分が言われたら嫌なことを人に言うって奴かw
904:デフォルトの名無しさん
18/07/01 16:07:47.75 rXvfzJkI.net
ここでも見てとれるようにRubyは言語と言うより信者がクソ。
他言語のスレで聞いてもないのにルビーデワールビーデワー宣伝必死過ぎてウザい。
Ruby自体は悪くない。
905:デフォルトの名無しさん
18/07/01 16:15:05.64 lS5AQxvk.net
>>885
同感
906:デフォルトの名無しさん
18/07/01 16:33:48.43 gbNzWOju.net
陰謀論みたいに、お前が世界を支配してるんだろって言われるのは嫌じゃないが
907:デフォルトの名無しさん
18/07/01 17:13:50.39 fENDu7uP.net
>>873
今回のSmalltalkは道連れ的に名前出されただけでむしろ被害者
変なのが混ざってないSmalltalk内ではちゃんと一貫した挙動のはずだろ?知らんけど
908:デフォルトの名無しさん
18/07/01 17:30:42.04 009IG+wv.net
>>885
よくわからんのだけど
Rubyでは~って意見が出たらそんなに嫌なん?w
俺なら他の言語でどうって意見はむしろ感心があるが
909:デフォルトの名無しさん
18/07/01 17:32:52.47 i54g35bC.net
>>889
同感
910:デフォルトの名無しさん
18/07/01 17:49:59.60 5prQoZWD.net
>>883
Smalltalkを知っている != Smalltalk信者
ちゃんとお薬のんでる?
勝手にやめちゃいけないよ?
911:857
18/07/01 18:07:48.02 FQlsc9Xo.net
>>891
なあ、smalltalk と ruby に詳しいんだったら、意味の無い罵倒を止めて、 >>869 の答えてくれない?
912:デフォルトの名無しさん
18/07/01 18:22:04.92 IY9E+BQR.net
Perlさん何で死んでもうたん?
913:デフォルトの名無しさん
18/07/01 18:23:52.18 mbUvUy2m.net
Perlはワンライナーとして生き残ったのさ
914:デフォルトの名無しさん
18/07/01 19:07:07.35 QlwNZjji.net
>>891
まあお前がSmalltalk信者かどうかは見た人間が判断するから気にするな。病気が進行するぞ
ただ客観的な事実としてSmalltalkは完全なオワコンw
このスレでは場違いすぎて引くレベル
915:デフォルトの名無しさん
18/07/01 19:34:13.12 5wbqPO3N.net
>>894
わかる。awkよりも使い勝手はいい。正規表現処理ツールとして有り。ふとnode.jsでもいい気がしたけど
916:デフォルトの名無しさん
18/07/01 19:46:03.96 x/qhOfWF.net
スレタイ読まずに書き込んでる奴らなんなの?
917:デフォルトの名無しさん
18/07/01 19:51:05.54 e+fGbKAY.net
>>862
> Smalltalkの人たちはScalaやRustのtraitsに対して、オリジナルのSmalltalkと違うからダメだ!あれは別物!って批判する
それは「批判」ではなく、理解や運用の混乱を避けるための「区別」の必要性を訴えているのです。
「オブジェクト指向」もそうで、Smalltalkが重きを置く「決定の遅延のためのメッセージングのオブジェクト指向」と
C++以降の「抽象データ型をクラス(またはそれに準ずるエンティティ)で実現するオブジェクト指向」とは区別すべきと一緒です。
批判があるとすればそれは、本質的に違うものに後から同じ名前を付けて混乱を招いていることに対するものでしょうね。
918:デフォルトの名無しさん
18/07/01 20:00:26.61 e+fGbKAY.net
>>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.
^'
919:'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 の複雑な状況の説明を試みるのはあまりよい方法ではないのは確かですね。
920:デフォルトの名無しさん
18/07/01 20:01:01.72 gbNzWOju.net
>>897
pythonやrubyで型を宣言させる話だったな
型を宣言すれば次世代に行けるらしい
921:857
18/07/01 21:20:45.24 FQlsc9Xo.net
>>900
かといって、スレタイの TypeScript だって、 Python + 型チェック とあんまり変わらなくないか?
#まあ、TypeScript は次世代じゃないという主張はありだけど
922:デフォルトの名無しさん
18/07/01 21:23:13.47 mO0FHij0.net
掲示板の書き込みに#で補足コメントするスタイルはキモすぎる
923:デフォルトの名無しさん
18/07/01 21:23:34.86 8lWKFGMK.net
どんな言語も最初は簡単で使いやすいと言う。
しかし、注目されて実用レベルになると言語仕様が破綻してくる。
お前さんが使っている次世代言語もいつのまにか消えてなくなるさ
924:デフォルトの名無しさん
18/07/01 21:28:36.04 jMta/5/n.net
とりあえず動的言語嫌いだから次世代に遺さなくていいよ
925:デフォルトの名無しさん
18/07/01 22:10:15.50 iGjgOveK.net
せやな
// 型なし糞言語は死ね
926:デフォルトの名無しさん
18/07/01 22:47:05.58 IY9E+BQR.net
米は//より#のが好きです
//や’はスカスカし過ぎててなんか
927:デフォルトの名無しさん
18/07/01 23:13:47.55 CF9fODYJ.net
まーたsmalltalker来てんのか。草
928:デフォルトの名無しさん
18/07/01 23:27:37.29 eYdB7t9V.net
>>906
俺逆だ
#の目にうるさいこと極まりない
コメントですらバグったのかと思う
929:デフォルトの名無しさん
18/07/01 23:41:20.04 YPIrazbz.net
‘
930:デフォルトの名無しさん
18/07/02 02:35:06.08 1yNW4Sj0.net
スクリプト言語はshebangあるから#じゃないとうれしくないな
コンパイル言語は好きにすればええ
931:デフォルトの名無しさん
18/07/02 03:45:57.45 sK89Ta1p.net
>>876
Rubykaigiは井の中の蛙の見本市だから
Ruby最強他言語バーカって精神異常者の集まり
そら宗教の本山みたいなもんだから盛り上がり自体はあるが
技術的にはもう終わってる
932:844
18/07/02 06:42:05.84 9wGdj7CA.net
>>857
Ruby のProc, block はクロージャで、
Procは、blockを変数に入れて、持ち運んで、後で呼べるようにしたもの
その際、block内でbreak を呼ぶと、ループ処理が完遂せず、失敗とみなしたのだろう
ラムダは後に作られたから、return で値を返すようにした
結局、Proc, block、ラムダ、クラス・モジュールも、
スコープチェーンという単一の概念から出来ている
自分の1つ外側のスコープを指す、ポインタを持っている
933:デフォルトの名無しさん
18/07/02 09:01:43.20 Ovw/GWMA.net
>>911
すげー思い込み強すぎ。中にはそういう人もいるかもだけど多数派じゃないだろ。
原理主義者怖すぎ。あんまり偏りすぎて人刺したりするなよ。
934:デフォルトの名無しさん
18/07/02 09:17:09.45 BcUDQh/y.net
> Procは、blockを変数に入れて、持ち運んで、後で呼べるようにしたもの
これしょうもない設計だよな。
jsとかだったらコールバック関数で統一的に扱えてるところだろ。
こんな本質じゃない言語機能
935:ムダに複雑にして何やってんだか。 わざとパズル難しくして解いて「楽しい」こんな言語かな?
936:857
18/07/02 09:49:51.97 OVGUyhuB.net
>>912
あなたがrubyを好きなのはよくわかる、が
>結局、Proc, block、ラムダ、クラス・モジュールも、
>スコープチェーンという単一の概念から出来ている
>
>自分の1つ外側のスコープを指す、ポインタを持っている
単一の概念にするのは失敗してるんだ
理由は簡単、blockにbreakがあるせい。breakの飛び先は、通常のlexcal scope では解決できない。飛び先は定義時と関係ない、後で呼び出される each などのblockを呼び出す関数内に有るからな
他の内部イテレータ使う言語は、諦めて例外やcall/ccなどの大域ジャンプでエミュすることにしてる。
rubyは頑張ってなんとかしようとして、結局統一出来ず、でも似てるから使用が困惑する結果に
937:デフォルトの名無しさん
18/07/02 10:18:33.33 nMhGW4st.net
>>913
このレスの方が怖い
938:デフォルトの名無しさん
18/07/02 10:41:05.97 XQH9Y7UX.net
連想配列[名前] = ラムダ
こうして連想配列と代入とラムダで統一すればclassは本質ではないのに
統一を阻止して、classを次世代に遺そうとするのはRubyもECMAScriptも同じ穴の狢
939:デフォルトの名無しさん
18/07/02 10:47:23.08 j4QNCpln.net
まだ80年代の技術に追いつけないのか、次世代言語wスレの住民は…ばか?
940:デフォルトの名無しさん
18/07/02 10:50:09.56 FaPINm7E.net
Smalltalkとか言うカビ臭いクソ言語について語ってるやつの頭の中だけ80年代で止まってるけど
他の人は普通に話ししてると思うけど
941:デフォルトの名無しさん
18/07/02 13:03:54.58 EdW/pwjk.net
>>913
原理主義者怖すぎ、については、
そっくりそのままRubyistにお返しするわ
942:デフォルトの名無しさん
18/07/02 19:19:13.27 NAI8Vih0.net
建て前上だけでもclassを消したら次世代感あると、思います
943:デフォルトの名無しさん
18/07/02 19:39:32.22 NyO7x8zO.net
>>921
ハスケルばかにしてる?
944:デフォルトの名無しさん
18/07/02 19:42:13.22 HeCnpISr.net
アンチMicrosoftを掲げる以上、Rubyを使うべきだろね。
945:デフォルトの名無しさん
18/07/02 20:33:18.53 9WbprnCr.net
クロージャの問題は結局変数の評価タイミングが分かりづらくなりやすいってところ。
common lispはその点わかりやすい。
946:デフォルトの名無しさん
18/07/02 20:47:10.91 HeCnpISr.net
あちらこちらに分身がいて、どれかを書き換えると他に影響してしまう。
そんな混とんとした世界で生き抜くにはいろいろなものが必要になる。
つまり、コピーとムーブが一番楽。
947:デフォルトの名無しさん
18/07/02 20:47:29.49 nj5wv8+r.net
>>920
goとかjsとかparser用意しないとast作れないところを見るとlispが次世代感あるように感じてきた
948:デフォルトの名無しさん
18/07/02 20:50:20.50 lajLSwSc.net
>>917>>921
やはりここはLuaの出番か
949:デフォルトの名無しさん
18/07/02 21:36:57.09 F0SAJ301.net
luaはnginxと組みわせて使う
950:デフォルトの名無しさん
18/07/02 21:49:01.21 TJD/4INa.net
>>926
astそのもの書いてるだけじゃん。
靴に足を合わせる理屈は御免です。
951:デフォルトの名無しさん
18/07/02 21:51:14.33 vpeKf2Dq.net
Lispはいいぞ
952:デフォルトの名無しさん
18/07/02 21:58:33.96 SHnfHk0h.net
>>920
社会に出ろよ。
953:デフォルトの名無しさん
18/07/02 21:59:57.72 JnEvidvy.net
>>920
ドカタの社会に出ろよ
ドカタの社会に出てないの丸わかりレベル低すぎ
954:デフォルトの名無しさん
18/07/02 22:00:32.20 9WbprnCr.net
algol系のシンタックスに合わせてる方が無理がある。
955:デフォルトの名無しさん
18/07/02 22:06:32.06 3279IT8S.net
久々に社会に出てみたら、
青春を捧げたRubyがすっかりオワコンになってて哀しいです(^q^)
956:デフォルトの名無しさん
18/07/02 22:27:57.20 sXgZmTLa.net
インターンってRubyばっかだな
素人学生にRuby書かせるとか頭おかしなるで
正気か?どうゆうロジックなんだ?
957:デフォルトの名無しさん
18/07/02 22:42:00.11 F0SAJ301.net
世代的にrubyで育ったリーダが多いからじゃない
外資ではgoとかpythonが多い
メガネのヒョロガリが写真に写っていてRoRエンジニアを募集してたらまずハズレだ
958:デフォルトの名無しさん
18/07/03 00:16:39.10 ulFfuTSn.net
何故breakにしたんだろねRuby。returnじゃ駄目だった理由が分からない
959:844
18/07/03 01:06:30.72 LtnxPY8P.net
Ruby では、break, return、例外も、単一の同じ仕組みを使っている。
コールスタックをさかのぼるポインタ。
つまり、どこから呼ばれて、どこへ戻るか
breakは、1つ外側のスコープへ戻る。
returnは、最も外側のスコープを抜ける
(レキシカル)スコープチェーンと、コールスタックの2大柱。
実装系・VM を作るには、この本がおすすめ
Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの内部の仕組み
960:デフォルトの名無しさん
18/07/03 01:19:37.85 rBmEiF9u.net
いいえ、私は遠慮しておきます
961:デフォルトの名無しさん
18/07/03 01:55:27.47 gSJ8jPZs.net
旧世代言語のネタですっかり過疎ってしまった
962:デフォルトの名無しさん
18/07/03 03:04:30.31 V6NmESsv.net
RailsってC#でいう.Netみたいなもん?
963:デフォルトの名無しさん
18/07/03 03:29:58.10 LeNHWyDL.net
>>928
redisも便利
964:デフォルトの名無しさん
18/07/03 06:19:51.17 ZNPbo2Ku.net
相手が望んでいない解説をするときは、それがスレの内容として意味があるかを基準にするべき
単にこの言語ではこうなっている(中身はさして珍しくもない)というだけならやめとけ。余計嫌われる
965:デフォルトの名無しさん
18/07/03 06:53:27.01 MH5+eiAJ.net
スレタイに並んでいる言語だとtsは張り合う相手いないから語るようなことないよな
ネイティブアプリ向けも張り合う相手なし
領域が被るのはサーバサイドにおけるrust,swift,kotkin nativeくらい?
966:デフォルトの名無しさん
18/07/03 07:30:13.14 oQIvqi2O.net
>>925
だから次世代言語って何よ?
スレタイに沿って話せって言うけど、次世代言語がなにかも曖昧で
967:デフォルトの名無しさん
18/07/03 08:27:38.25 CN6nXbG2.net
旧世代の言語の(しがらみとかで)回避できなかった欠点を既存機能を損なうことなくうまく克服し
次世代を担うべく存在する言語だよ
C++のメモリリークを所有権で回避した「Rust」
Obj-Cのnil禍をオプショナル型で回避した「Swift」
JSの実行時エラーを静的型で回避した「TS」
Rubyはこの20年自らの欠点をちょこちょこ直す以外なにもやっていない
968:デフォルトの名無しさん
18/07/03 08:31:16.08 gQdpXUBz.net
TSは別格すぎる
さすがにもう現世代扱いでいいだろ
969:857
18/07/03 09:12:56.01 0xlHwX4q.net
>>937
いや、next はともかく、 break は lexical scope の範囲内では実装出来ないんだよ。
break が for や while でキャッチされる特殊な例外扱いならば、こんなおかしな事にならず、Proc 内でも break 使える様に出来たのに。
>>938
ここでいっているスコープは、 dynamic scope であることに注意ね。
内部イテレータでは、本来 break は例外と同じ方法でしか実装出来ない事を理解いただいて何よりです。
でも、ruby では、 Proc で break 呼び出したときの例外が LocalJumpError になっていて、どういう扱いにした�
970:「かよく分からないんだよね。 for, while 内の break との整合も取れないし まあ、次世代言語の話じゃないんで、そろそろ突っ込みは止めときます。
971:デフォルトの名無しさん
18/07/03 09:15:15.62 cg5PW7i9.net
swiftが次世代だってぷぷ
めちゃくちゃclassicなんだけど
972:デフォルトの名無しさん
18/07/03 09:26:00.07 N+3lR6RH.net
>>947
msが怒涛の開発力で一気に使いやすくしたよなぁ。
しかもEditorとセットで。
しかもlspを考えてどのEditorからでも補完が効くようにしたりとか。
まだ開発スピードが止まる気配がないけど、
他に何を開発する余地があるんだろ。
973:デフォルトの名無しさん
18/07/03 09:33:01.11 TTM9k7xe.net
世代の交代を駆動するのが枯れた技術であってもいいんだよ
まあ仕様の腐った言語しか眼中にない人間には理解できんだろうけどね
974:デフォルトの名無しさん
18/07/03 10:15:55.62 CZ1ZSS89.net
開発元が腐ってるRustとTypescript
これは次世代とは言えまい
これが覇権取ったらディストピア一直線
975:デフォルトの名無しさん
18/07/03 10:25:54.60 CZ1ZSS89.net
真に次世代の言語はNim
今までの言語の焼き直しに留まらない書きやすさと実行速度を両立した言語で
開発元もモジラとかMSみたいな邪悪な企業じゃない
976:デフォルトの名無しさん
18/07/03 10:44:28.82 pQbF/VH/.net
単なるCのソースコードジェネレータじゃん。
nimが速いんじゃなくてCが速いの。Cのソースコード吐いてCのソースコードコンパイルしてるんだから。
coffeescript()なんかのaltjsと同じようなもんだね笑
977:デフォルトの名無しさん
18/07/03 11:31:15.91 jh9a6Llj.net
高度なシンタックスシュガーだからね
でもCよりは確実に使いやすいしいいと思うよ
978:デフォルトの名無しさん
18/07/03 12:11:26.83 H2PJV6CA.net
>>941
c#で言うとasp.netみたいなもの。
c#ユーザだとしてもEFとビュー関数が無いと何もできない低レベルな人間。
979:デフォルトの名無しさん
18/07/03 12:13:14.64 H2PJV6CA.net
ついにMSだけじゃなくてMozillaも槍玉にあげ始めたのか。
980:デフォルトの名無しさん
18/07/03 12:43:16.36 4OdwMirb.net
Rubyがブロック引数を組み込みの制御構文のように見せたかったというのは旧世代の発想としてはよくわかるけど、
第一級関数や高階関数が十分に一般的なものになった現代においては組み込みのループのように見せるという発想自体がもう時代にあってないと思うわ
むしろ次世代言語は組み込みの制御構文なんか撤廃して関数に寄せればいいと思うんだが、
なかなか手続きベースの言語でforで捨てるものは現れないね
981:デフォルトの名無しさん
18/07/03 12:55:23.66 onhdh/0N.net
forとかを単なる関数として提供してる言語いくつかなかった?
982:デフォルトの名無しさん
18/07/03 13:05:27.52 TTM9k7xe.net
>>958
> 制御構文なんか撤廃して関数に寄せればいい
具体的には?
983:デフォルトの名無しさん
18/07/03 13:15:41.14 ZYDLmzQl.net
>>958
手続き型言語と呼んでいいのかわからんが、tclなら、制御構造は全て「コマンド」扱いで、BNFとか笑っちゃうぐらいシンプル
984:デフォルトの名無しさん
18/07/03 13:45:16.08 taCiD/Gz.net
>>958
条件分岐と繰り返しはプログラムの基本構造なわけだが
逆に関数とかサブルーチンとかは基本構造に入ってないわけだが
お前は、超天才かドアホかのどちらかだなw
985:デフォルトの名無しさん
18/07/03 13:58:16.98 ZNPbo2Ku.net
>>958
俺は味方だよヽ(´Д` )
986:デフォルトの名無しさん
18/07/03 14:53:19.41 78ysfJXf.net
俺は勝った方の味方するよ。
最初から味方だった、俺のおかげで勝てたみたいな感じで。
987:デフォルトの名無しさん
18/07/03 15:16:48.85 U5Zq1zkR.net
第一級関数というやつ
ほとんどの場合意味がわかってないか
勘違いしてるよな
クロージャーっぽく書けたら第一級ってわけじゃないから
988:デフォルトの名無しさん
18/07/03 16:26:35.93 dRr5lTkl.net
>>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の製作者とはプログラミング言語に対する基本的な見識においてレベルが違いすぎますからね
かつてプログラミング言語の形式的意味論までか否かは別にして言語の基本概念は何かきちんと学び理解するのが常識だったが
簡単に言語を実装できるようになって=マイ言語化されて以降、スクリプト言語のような軽い言語が百花繚乱の如く咲き乱れる(と言えば聞こえは良いが要するに粗製乱造される)ようになって以降
基本概念をきちんと学び理解していない人でも新しい言語は簡単に作れ、上手くファンを掴めるとそれなりに流行ってしまうようになったので
実際にきちんと意味を考えるととても不自然で理解が困難になるような言語機能の組み合わせ方を単に「だって便利だもの」という理由で言語に組み入れられてしまうようになった
単なる便利さだけで深い考慮なく導入されたものを意味論などから合理的・体系的に説明・理解するのは困難、年寄りの戯言でした
989:デフォルトの名無しさん
18/07/03 18:34:43.36 iZrusKUj.net
戯言とわかりつつ書き込むのか……(困惑)
990:デフォルトの名無しさん
18/07/03 18:36:16.17 TTM9k7xe.net
>>966
空気読めない老人が上から目線でしゃしゃり出てくるのほんとやめてほしいわ
だいたいALGOL68を持ってこようがSmalltalk-80を持ってこようが場違いなのはさして変わらんよ
そもそも誰もクロージャーの本来も一般論も論じてないとか、すでにその話は終了しているとか読んでわからんのかね
991:デフォルトの名無しさん
18/07/03 18:53:34.68 kPEfeblV.net
ボクちゃんの大好きなrubyがディスられて怒り心頭のようだねw
992:デフォルトの名無しさん
18/07/03 18:55:02.78 A246qspJ.net
URLリンク(i.imgur.com)
993:デフォルトの名無しさん
18/07/03 19:00:25.45 lz4xpNmJ.net
>>953
NimはRustのような安全性がないからダメだわ
URLリンク(github.com)
994:デフォルトの名無しさん
18/07/03 19:10:03.39 Y44wiyUJ.net
>>970
自分の思いを述べてるんだから何もしていなくはない
そういう性格だから嫌われるんじゃない
こいつが嫌いな性格を一般化してるだけだ
995:デフォルトの名無しさん
18/07/03 19:11:22.15 iZrusKUj.net
RustはRustで安全のために犠牲を払いすぎ
そこまで犠牲を払わないNimという選択肢はダメではない
996:デフォルトの名無しさん
18/07/03 19:12:12.22 1eNrhjxU.net
>>972
うわあ……
997:デフォルトの名無しさん
18/07/03 19:15:29.04 Y44wiyUJ.net
>>974
うわぁってなんやねん
空気読むことばっか押し付けるからお前んとこのプロジェクト炎上してるんや
998:デフォルトの名無しさん
18/07/03 19:15:31.69 A246qspJ.net
犠牲にしてるかな?どうせやらなきゃいけないことを強制してるだけでわ
999:デフォルトの名無しさん
18/07/03 19:23:30.28 2atZvleV.net
>>972
スレに沿った議論をしない人は何もしてないと同じなんだよ
お仕事だってそうでしょう
1000:デフォルトの名無しさん
18/07/03 19:26:31.83 Y44wiyUJ.net
ようは後付けで人がついてくりゃリーダシップそのものじゃないか
1001:デフォルトの名無しさん
18/07/03 19:32:14.46 2DeV5pvZ.net
スレに沿った議論といっても誰も次世代言語の話なんてしてないしなw
1002:857
18/07/03 19:33:36.60 0xlHwX4q.net
Nim は書きやすさと速度、Rust は安全性と速度、
に注力したイメージなんだが、安全性と速度に比べて、書きやすさと速度って一つの言語でカバーする必要性が薄いように思うんだよな。
従来の「スクリプト言語+速度が必要なところだけC/C++」に比べて、どうしてもNimが良いっていう場面ある?
1003:デフォルトの名無しさん
18/07/03 19:43:18.67 MH5+eiAJ.net
>>978
えぇっ
>>979
途中までしてたじゃん
話につい来れなかったルビーィストとおじいちゃんたちが突然昔話を始めるまでは
1004:デフォルトの名無しさん
18/07/03 19:53:46.17 Y44wiyUJ.net
>>981
もうとっくに日本は移民国家だ
自分が雰囲気の中心にいるんだって顔してるだけで
さしたる理由もなく他人をDisれると思うなよ
昔の次世代言語の話したっていいじゃない
1005:デフォルトの名無しさん
18/07/03 20:01:32.10 dPHNxxkk.net
>>976
木ですら実装結構しんどいのは犠牲ではなかった……?
Nimならすぐよ
1006:デフォルトの名無しさん
18/07/03 20:14:55.16 T5T8ZL2Z.net
>>980
書きやすくて速いとか最強やろ
スクリプト+Cとかめんどくさいんじゃ
1007:デフォルトの名無しさん
18/07/03 20:38:32.57 zqxfY0jY.net
>>966
Smalltalkのブロックはselfと^の挙動がクロージャとして完全にウンコなので
こんなものを基本形として議論のベースにしたくないです
Schemeの方が1万倍マシです
1008:デフォルトの名無しさん
18/07/03 20:41:29.96 MH5+eiAJ.net
>>983
その木は安全なの?
個人的には木構造実装したりしないから別に困ってないけど
1009:デフォルトの名無しさん
18/07/03 21:17:11.31 4+jY1mlb.net
Nimは一体いつになったら1.0をリリースするんですかね?
1010:デフォルトの名無しさん
18/07/03 21:31:35.15 XAeheViZ.net
Nim製組み込み言語Min
URLリンク(min-lang.org)
いいんだけどさ、なんで文法Lisp風にしたし。
ホスト言語より書きにくい組み込み言語ってなんやねん
1011:デフォルトの名無しさん
18/07/03 22:03:10.71 ZNPbo2Ku.net
Lispに見えて実はForth風では
処理系のサイズを小さくまとめるのが目的みたいだしいいんじゃないかな。どうせ個人の試作言語だろうし
1012:デフォルトの名無しさん
18/07/03 22:16:17.34 T5T8ZL2Z.net
Lispが書きにくい……?
URLリンク(i.imgur.com)
1013:デフォルトの名無しさん
18/07/03 22:25:50.65 s9qpeMkn.net
Lispは脳がパーサになってる人向け
1014:デフォルトの名無しさん
18/07/03 22:27:10.82 2DeV5pvZ.net
いうてもc++の文法なら自分でパースした方がマシだろ。
1015:デフォルトの名無しさん
18/07/03 22:28:51.19 OApKU83S.net
factorなんか0.97から4年も音沙汰なしだぞ
1016:デフォルトの名無しさん
18/07/03 23:50:32.40 T5T8ZL2Z.net
安全だからRustは良い←わかる
安全でないからNimはいらない。書きやすさとかどうでも良い←それあなたの感想ですよね
1017:デフォルトの名無しさん
18/07/04 00:39:03.37 SVer28O9.net
>>993
音沙汰なしではないよ、最終更新は3日前
URLリンク(github.com)
1018:デフォルトの名無しさん
18/07/04 00:44:54.31 SVer28O9.net
書きやすくても保守性が高くなるわけじゃないからな、
自分で書いて自分一人だけで保守するならいいんじゃないかね
1019:デフォルトの名無しさん
18/07/04 00:55:14.74 M17EkYCN.net
そうそう、Rustは可読性が低く保守性も低い
1020:デフォルトの名無しさん
18/07/04 01:36:19.71 mmoPrDKP.net
>>997
いやいや、Rustは可読性も保守性も高いでしょ
書く前にある程度の考える必要があるだけ
むしろ思ったことすぐに書けちゃう言語の方が
可読性も保守性も低いでしょ
1021:デフォルトの名無しさん
18/07/04 05:38:29.74 XdTckET+.net
Rustって名前で損してる気がする。
1022:デフォルトの名無しさん
18/07/04 05:39:21.37 XdTckET+.net
錆って何よ、触ったらヤバそうじゃんww
1023:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 30日 5時間 45分 54秒
1024:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています