X



次世代言語11[Rust Swift TypeScript Dart]
レス数が1000を超えています。これ以上書き込みはできません。
0671デフォルトの名無しさん
垢版 |
2018/06/22(金) 18:49:57.22ID:y18AFRdV
Dとは一緒にしないでいただきたい!

ってのは冗談だけどDとは違うと信じたい
アホみたいに機能消したり追加したりしてないし
0673デフォルトの名無しさん
垢版 |
2018/06/23(土) 05:57:11.77ID:tcOUUI9f
なんだんだ理由付けて勉強したくないだけでしょ
わたしはrustで先にゆきますよ
0674デフォルトの名無しさん
垢版 |
2018/06/23(土) 07:38:19.54ID:0Hl7KNt9
rust自体はちょこちょこ迷走やまずい部分も見られるので、本当に使い物になるのは
rustの成果を引き継ぎだか横取りだかした次の言語だと思ってる
0675デフォルトの名無しさん
垢版 |
2018/06/23(土) 08:08:55.39ID:tcOUUI9f
はいはい次は本気出すパターンね
0676デフォルトの名無しさん
垢版 |
2018/06/23(土) 08:21:35.71ID:xKUV9tWt
個人的に勉強するだけならいいと思いますよ。
他人にクソコンパイラの使用を押し付けなければね。
0677デフォルトの名無しさん
垢版 |
2018/06/23(土) 08:33:57.94ID:XcMMhDbo
>>674
swiftかな。swiftはにんきあるよな。俺には理解できないけど。関数型に興味を持つきっかけとnull安全な言語仕様の有効性を教えてくれた
0678デフォルトの名無しさん
垢版 |
2018/06/23(土) 09:33:29.90ID:4aGgjPWw
QBの契約ですら押し付けではないと擁護する人はいるから
あれより酷いことをしない限り押し付けとの指摘は当たらない
0679デフォルトの名無しさん
垢版 |
2018/06/23(土) 09:38:21.33ID:tcOUUI9f
押し付けがましく感じる人がいても知ったことではないよ
そういう雑魚はずっとjava8の導入を検討していればよい、個人的にね
0682デフォルトの名無しさん
垢版 |
2018/06/23(土) 11:30:28.12ID:4aGgjPWw
コメントは個人の感想
moveとかborrowとか宣言するのは事実を宣言している
後者の方が押し付けがましくないと考えられていた時期もあったのだ
個人の意見を排除し事実だけを述べれば押し付けがましくならないと思ってた
0683デフォルトの名無しさん
垢版 |
2018/06/23(土) 13:10:25.11ID:TEFAVffv
Go: マスコットきもい
Rust: C++と潰し合え
Swift: Apple専用の域を出ず
Kotlin: Javaの代わり
Nim: v1.0を出せ、cpp, m, js へのトランスパイルいるか?
D: 最先端を目指した化石
0684デフォルトの名無しさん
垢版 |
2018/06/23(土) 13:52:47.56ID:4aGgjPWw
最近の人類がC++を使いこなしているのは想定外だった
短期的に考えると進化するのは言語やAIであり生物は進化するはずがないと思ってた
0687デフォルトの名無しさん
垢版 |
2018/06/23(土) 16:07:05.54ID:0Hl7KNt9
特有じゃないんだよなあ……
Ruby、Delphi、Haskell、Scalaその他諸々みんな罹患してた
既に治った人は生暖かい目で見てるし、看取った側の人はまたかぐらいにしか思ってない
むしろ>>685の新鮮な反応が羨ましい
0688デフォルトの名無しさん
垢版 |
2018/06/23(土) 16:19:09.66ID:tcOUUI9f
>>685
出た出た自己肯定のためのレッテル貼り
0689デフォルトの名無しさん
垢版 |
2018/06/23(土) 16:28:28.71ID:XcMMhDbo
今のPM新しい物好きでTypeScript案件でサーバサイドとクライアント側を同時開発するような人だけど、その人でもrustはきついっていうとった。
0693デフォルトの名無しさん
垢版 |
2018/06/23(土) 19:29:19.08ID:tcOUUI9f
>>692
プログラマーとは思えないポンコツ発言だな
笑えるけど君の洗脳を解く義務はないので一人でそこにいてくれ
0694デフォルトの名無しさん
垢版 |
2018/06/23(土) 19:37:07.37ID:xKUV9tWt
学習しがいのある機能が盛り込まれた言語の最大の欠点て
こういうバカが大量生産されるとこだよな。
0695デフォルトの名無しさん
垢版 |
2018/06/23(土) 20:14:12.75ID:coHxpUCl
そんな因果関係に縛られて予想通りバカになるのは嫌だな
予想を裏切って自由になれよ
0697 ◆QZaw55cn4c
垢版 |
2018/06/23(土) 21:03:04.54ID:OlLfOCSW
>予想を裏切って自由になれ
すばらしい!
私も従来の枠にとらわれない、思い込みから離れた、全く新しい発想というものを求めています
嫌いなこともあえてやってみて自分の反応を観察する、とか、
今までやったことのないことを、あえてやってみる、とか
いろいろ試しているのです…

民法をやっていますが、これが全く予想外におもしろいのです
0698デフォルトの名無しさん
垢版 |
2018/06/23(土) 21:10:14.97ID:xKUV9tWt
予想を裏切るだけならバカでもできるわけだが。
自由にやるなら個人でやれって話がまるで通じないってのはすごいね。
0699デフォルトの名無しさん
垢版 |
2018/06/23(土) 21:46:46.64ID:tcOUUI9f
使う気がないならなぜこのスレにいるのか分からない
勉強しなくていい理由をみんなで出し合って安心するためか
0701デフォルトの名無しさん
垢版 |
2018/06/23(土) 22:14:12.79ID:rbpQhZkO
てかさ、押し付けられても無視すれば良いだけの話じゃん
仕事のプロジェクトに採用されそうになったら反対すれば良いだけの話
それでも採用された場合はお前の言葉が理論的でなく説得力が無いか
お前がよっぽど社内で信用されていないかのどちらか
その場合は押し付けられたと感じること自体が筋違い
0708デフォルトの名無しさん
垢版 |
2018/06/24(日) 07:43:19.88ID:yrJGTcca
>>701
そうだよね
0709デフォルトの名無しさん
垢版 |
2018/06/24(日) 13:29:15.56ID:tiUGZk0g
swiftってゴチャゴチャ機能詰め込んだモダンなC++って印象しかないけど良い言語なのか
0713デフォルトの名無しさん
垢版 |
2018/06/24(日) 14:16:19.36ID:aS0z5WOn
なんでチェック例外なくしてしもうたん
みんなナチュラルに例外無視して例外が例外した時例外的な挙動になるじゃん
馬鹿?
0715デフォルトの名無しさん
垢版 |
2018/06/24(日) 14:22:38.49ID:aS0z5WOn
>>714
は?日本語でやりなおせこのカス
しょうもない神とかいってマウント取ってチンポおっ立ててるゴミは死なす
0716デフォルトの名無しさん
垢版 |
2018/06/24(日) 14:22:38.79ID:aS0z5WOn
>>714
は?日本語でやりなおせこのカス
しょうもない神とかいってマウント取ってチンポおっ立ててるゴミは死なす
0717デフォルトの名無しさん
垢版 |
2018/06/24(日) 14:26:16.08ID:afUW8/ml
> If the new version of foo is going to throw a new exception that clients should think about handling, isn't their code broken just by the fact that they didn't expect that exception when they wrote the code?
> Anders Hejlsberg: No, because in a lot of cases, people don't care. They're not going to handle any of these exceptions.
これを堂々と言えるのがヘルスバーグの凄さだよな
言語厨はこういうくだらない問題に固執して、その結果、使えないものを生み出す
0718デフォルトの名無しさん
垢版 |
2018/06/24(日) 15:08:00.23ID:zgy+o43M
1つの誤りを減らすために倍の工数をかけるのは意味がある
100万行に1つエラーがあるとき1つ減ったら品質2倍
0719デフォルトの名無しさん
垢版 |
2018/06/24(日) 15:23:54.41ID:I6qT+7Vz
チェック例外はステータスコードをリターンして呼び出し側に毎回チェックを要求するようなもの
例外を開発した根本的な理由を否定するおかしな機能だ
0723デフォルトの名無しさん
垢版 |
2018/06/24(日) 16:08:53.37ID:NdKqGL5r
exitがあるならexitを使え
exitとは違うと言いたいだけのためにcatchするのはやめろ
0724デフォルトの名無しさん
垢版 |
2018/06/24(日) 17:10:33.48ID:5X6JCb05
>>701
まあ一理あるよ。
実際転職してこういうバカがいない環境で作業するようになったが
めちゃくちゃ楽になったというのはある。
バカと議論するくらいなら自分の環境を変える方が有効なのは事実だ。
0725デフォルトの名無しさん
垢版 |
2018/06/24(日) 18:21:51.58ID:7besbNmD
そういえば、Swiftってチェック例外しか無いけど
StackOverflowExceptionみたいなどうしようもないタイプのエラーはどう扱ってるんだ?
0727デフォルトの名無しさん
垢版 |
2018/06/24(日) 19:10:21.85ID:rCnjXQm/
Swiftのthrowsは投げる例外の種類を特定できない
規模が大きくなればほぼ全てのメソッドにthrowsが付くので何の意味もなくなる
iOSアプリ専用言語ってことでスケーラビリティを捨てて簡潔さを取ったんだよ
全く検査例外の問題を解決していない
0728デフォルトの名無しさん
垢版 |
2018/06/24(日) 19:20:57.72ID:yrJGTcca
議論しなくて楽といいながら反論しないと我慢できないあたり、敗北に耐えられなくなったんだろうなあ
0738デフォルトの名無しさん
垢版 |
2018/06/25(月) 02:39:47.18ID:sauGlQNA
日本じゃ全然話題にならないけどEveのトピックはいつも大論争になる。
果たしてEveは革新的なプロジェクトなのか、誤って定義した問題を解決しようとしているに過ぎないのか。
https://news.ycombinator.com/item?id=12817468
https://news.ycombinator.com/item?id=13010396
https://news.ycombinator.com/item?id=16227130
https://news.ycombinator.com/item?id=16630359
0742デフォルトの名無しさん
垢版 |
2018/06/25(月) 14:24:03.82ID:KTJIIKxw
>>170
は?vscodeもtsも不安しかねえんだけど
シェア一強になるまでは低姿勢、なった瞬間に手のひら返し、が今までのMSのテンプレ

今回もまったく芸のないテンプレでむしろ呆れてるところ
お前みたいなバカが信者かわからんがMS持ち上げる阿呆が出てくるからタチ悪い
0743デフォルトの名無しさん
垢版 |
2018/06/25(月) 14:27:50.78ID:NzmJfW7/
マイナーvsマイナーだと、設計そのものの良し悪しよりも
どれだけ労力をかけて作り込まれているかの方が影響でかいからなあ……
作ってる側が「いやそこの最適化は後回し」とか思ってるところを測ってもしょうがないし
(いやメジャーvsメジャーでもそういうとこあるけど)
0745デフォルトの名無しさん
垢版 |
2018/06/25(月) 15:50:06.67ID:d4UYbnp8
「疑う」の反対は「割る」
割れば楽しいのはわかった上で敢えて疑う方を選ぶんだろう
0746デフォルトの名無しさん
垢版 |
2018/06/25(月) 16:43:18.37ID:1uudit/q
>>738
なんかSmalltalk風味があるな・・・
0748デフォルトの名無しさん
垢版 |
2018/06/25(月) 23:28:09.79ID:RDIsdPp/
>>742
陰謀論者は生きづらそうで大変ですね。
もしMSが手のひら返したら、forkするだけですけど?
0749デフォルトの名無しさん
垢版 |
2018/06/25(月) 23:37:34.43ID:XbrJPmKw
forkするだけ(藁)
強がっちゃってまあ

いいのか?フォフォフォカヌポォしますぞ!!!(憤怒)←草www
0750デフォルトの名無しさん
垢版 |
2018/06/25(月) 23:47:42.02ID:d4UYbnp8
forkするより製品版を単純にコピーするだけの方が早い
MSの影響で民度が下がる
MSと無関係でいる方が安全
0752デフォルトの名無しさん
垢版 |
2018/06/26(火) 00:07:22.28ID:RrNymGzT
数年前の意識高い系達が「Web開発のスピードにIDEなど邪魔(キリッ」とか言ってたのが嘘みたいだよな
結局のところ彼等は電気を知らない原始人だったのだ
0754デフォルトの名無しさん
垢版 |
2018/06/26(火) 00:10:17.87ID:PwoRxl17
Vimは操作性や立ち上がりの速さが優れている
Guiのエディタはプラグイン導入の楽さが優れている
Emacsは間くらい
0758デフォルトの名無しさん
垢版 |
2018/06/26(火) 10:23:19.59ID:/82hZ4jz
>>756
Gitlabは少なくとも信頼できる
Azureで動いてるとか言ってる奴いるけどもうやめるって話出てる

エディタはEmacsで十分だし、babelあればES2016でもまともに書けるからTSは不要
0762デフォルトの名無しさん
垢版 |
2018/06/26(火) 11:38:55.58ID:8nfGtP67
疑問を持つ人はいっぱいいるが疑問を解決する人は少ないのが現実で
すぐに解決すると思うのは非現実的
0763デフォルトの名無しさん
垢版 |
2018/06/26(火) 17:29:52.82ID:iZChSW1/
年食うと一度学んだ思考回路は変えられないんだろうな
多分死ぬまでMSは邪悪でEmacsは最高のエディタなんだろう
0767デフォルトの名無しさん
垢版 |
2018/06/26(火) 19:56:14.90ID:SLOKSalZ
あとSwiftでパターンマッチ使うときさ「case let」の「let」ってなんの意味有るの?
そもそも「case」自体いらないよね。
Rustみたいに簡潔な構文にしない意味がわからん。
0770デフォルトの名無しさん
垢版 |
2018/06/26(火) 20:23:51.43ID:SLOKSalZ
Scalaも構文ダメだけど、Dottyでかなり改善されてるみたいだね

http://dotty.epfl.ch/
0771デフォルトの名無しさん
垢版 |
2018/06/26(火) 20:32:08.64ID:SLOKSalZ
>>768
>>769
冗長な構文にするなってこと。

```Rust
match number {
1 => "one",
2 => "two",
_ => "else",
}
```
```swift
switch number {
case 1: return "one"
case 2: return "two"
default: return "else"
}
```
0773デフォルトの名無しさん
垢版 |
2018/06/26(火) 20:37:59.55ID:Rm57MuZK
>>771
rustをそんなに押すなら、
毎日ちょっとずつ使い方教えていけよ。
面白い内容ならそのまま覚えるから
0775デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:03:22.89ID:1/94qv1z
>>770
dottyは流石に見苦しいわ
今更互換性ブチ壊して誰がわざわざScalaなんか使い続けるんだよ
Lightbendは一度プラットフォーム主導者の味を覚えてしまってもう後に引けなくなってるんだろうな
0776デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:08:47.59ID:SIV9Ebow
元が冗長だと、機能追加したときの新構文(大抵元と区別のために冗長になる)が
あまり違和感なくなるというメリット?もある
C++とか酷いだろ。rustも多分20年ぐらいしたら酷くなる
0779デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:38:20.73ID:uCVrG76/
>>763
いつMSが邪悪じゃなくなったんだよ

エディタについてはVimとEmacs以上のものがいまだにないだけ
0781デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:43:00.71ID:SIV9Ebow
>>778
ObjectPascalは30年経ってるが、元が冗長と言われまくってたPascalだったおかげで
魔改造されまくった今でもあんまり浮いた構文は無いぞ
初期Macで採用されてたのは別格としても、その後は大したプロダクトもないDelphiぐらいでしか残ってないのに
一応生き残ってるんだから、FirefoxのあるRustも同じぐらいは残るだろ多分
0782デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:46:10.71ID:uCVrG76/
>>780
どっちかっていうと、若者がMSの暴虐の歴史を学んでないから
今現在進んでる暴虐が暴虐と分からないだけだぞ
0783デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:49:11.80ID:uCVrG76/
>>781
火狐に使われてるから残るとか
火狐の世界シェア見てから言おうぜ……

Rustごと自殺して消えるって自白したようなもん
0788デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:54:24.01ID:1lcgGYQy
この爺さんはこのスレに何しにきとるんだ
特養じゃないっつの
0789デフォルトの名無しさん
垢版 |
2018/06/26(火) 21:56:05.20ID:SIV9Ebow
>>787が書いてくれたが
俺も、どっちも細々としたもんだがFirefoxのほうがDelphi(製アプリ)よりはまだマシだろう、というつもりだった
その上で20年後の変更されまくったrustはDelphiやswiftより汚くなってそう、という予想
0791デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:12:37.76ID:SLOKSalZ
>>785

varがあるのはわかるけど、そこでvarを使う場面てあるのかね?

https://ideone.com/vMGLEg
```swift
case let .B(n):
let t = n+1
return String(t)
```

だって変わらんし
0793デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:33:54.59ID:wjruZlWa
>>791
変数束縛にletとvarがある言語において、switchのときだけ変数束縛を特別扱いしてletやvarを省略できるのは一貫性が無いという考え方もある
0794デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:39:59.15ID:wjruZlWa
それに短ければ良いなら、rustのlet mulよりswiftのvarの方が短い
パターンマッチより変数宣言方が良く出て来るしね
0795デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:47:02.38ID:b30is1tn
20年後に汚くなるってのはみんなわりと納得するんじゃね?
C++もJavaも、時間経過とともにきっちり汚くなった
言語仕様こねくり回すのが仕事の人が存在するからしゃーないっちゃあしゃーない
0796デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:48:50.88ID:cumK515O
難しい・易しいではなく汚い・美しいという見方をするのはなんでだろう
数学を諦めた感が漂ってる
0797デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:49:48.96ID:SLOKSalZ
>>793
そういう見方もあるけどね

でも
```
case let .B(x): return String(n)
```

```
case .B(let x): return String(n)
```
の違いってなんなのかね、違いがないなら「let」省略できたほうがいいように思うが
0798デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:51:21.79ID:SLOKSalZ
>>797
訂正: xじゃなくてn
0799デフォルトの名無しさん
垢版 |
2018/06/26(火) 22:57:45.92ID:SLOKSalZ
>>794
短いことがいいんじゃないよ、理由なく冗長な構文がだめなだけ。

Rustはわざと「var」とかじゃなく「let mut」にしている理由は、通常イミュータブルを使うようにするため。
ミュータブルの構文が長いことでプログラマがイミュータブルをより一般的に使うよう促す効果がある。
0801デフォルトの名無しさん
垢版 |
2018/06/26(火) 23:12:38.14ID:SIV9Ebow
>>799みたいなのは設計当初は綺麗なんだけど
後から、例えばD言語のconst/immutableみたいな選択肢を追加してしまうと罠に化けそうじゃない?(妄想だけど)
その点元が冗長ならある程度耐性がある、という話。後から省略可能にする方はできるしな
0802デフォルトの名無しさん
垢版 |
2018/06/26(火) 23:29:44.42ID:SLOKSalZ
>>801
Dは全然知らないけど、調べたらデフォルトがミュータブルで、immutableをつけるとイミュータブルになるのか。

```
int x = 3; // ミュータブル
immutable int x = 3; // イミュータブル
auto s = "hello"; // イミュータブル
```

これはひどいな
0804デフォルトの名無しさん
垢版 |
2018/06/26(火) 23:40:45.19ID:cumK515O
コンパイル時に値がわかるのが定数
実行時に初期化するがその後は変更しないのがimmutableかな
0805デフォルトの名無しさん
垢版 |
2018/06/26(火) 23:56:28.51ID:SIV9Ebow
加えて、現在のスコープからは変更不可能だが実体はミュータブルかもしれないのがconst
更にそれぞれに推移のON/OFFがある

何も書かないのがイミュータブルだとその内の1つを適当に使ってるということで
選択肢が増えたときにどれか1つが不自然に短く書けてたことになるし
現状を突き詰め直したときにコンテキスト毎に別のだったなんてことになると目も当てられない
0807デフォルトの名無しさん
垢版 |
2018/06/27(水) 00:50:40.19ID:jdISqR1B
>>802
ゲェジかな
ワイの方がよっぽどいい設計できるわ
この作者はワイのケツ穴でも舐めてた方が幾分有益な人生になったんじゃないかw
0808デフォルトの名無しさん
垢版 |
2018/06/27(水) 00:59:47.78ID:CkpNpuYk
>>805
GCが必須ではない言語の場合、ミュータブルならばメモリ解放もできる

現在のスコープからは変更不可能だが実体はメモリ解放するかも
というのは非常にまずい
現在のスコープから変更不可能ならば実体も変更不可能にしたい
0809デフォルトの名無しさん
垢版 |
2018/06/27(水) 01:19:45.86ID:9jxZxPuA
>>808
それだとイミュータブルなオブジェクトを貰って何かする関数に
ミュータブルなオブジェクトを渡せなくならない?

そうすると print とか toString とか hash とか compare とかありとあらゆるものが
immutable / mutable 2種類必要になる
引数に2つオブジェクトがあると4種
3つなら8種
0810デフォルトの名無しさん
垢版 |
2018/06/27(水) 20:24:28.42ID:GckfUNYK
ただの再代入不可な変数をイミュータブルって言い始めたのって何の言語からなの
0812デフォルトの名無しさん
垢版 |
2018/06/28(木) 08:21:12.64ID:1UW06GNd
>>795
pythonなんかも細かいところはど汚いわけだがあんまりそういう汚いところ
触らんでも仕事になるって違いはある。
てかシンタックスなんててきとうにチェックでもそんな問題にならんよ。
self書かされることなんて文法で規制されてるわけでもないが問題になることなんてない。
0814デフォルトの名無しさん
垢版 |
2018/06/29(金) 09:23:47.61ID:XwuS30Hh
Pythonの型アノテーション試してるけど正直苦痛
TypeScriptを使ってるときには全く感じなかった無駄なもの書かされてる感がすごい
というかTypeScriptの統合が完璧すぎるんだな
型書くことはノイズになるどころかコードをむしろ美しくするとすら思えるもんな
0815デフォルトの名無しさん
垢版 |
2018/06/29(金) 10:57:44.57ID:0VaRYdhC
少しでも欲を出せばそうなる
完璧な無欲か完璧な満足かの1bitしかない
HaskellやRustのようになるまで止まらないぞ
0816デフォルトの名無しさん
垢版 |
2018/06/29(金) 11:15:41.22ID:tgpXEKjE
>>814
Python 3.6の変数アノテーションはTypeScriptと大して変わらないのでは?
以前のコメント形式は糞だったけど
0817デフォルトの名無しさん
垢版 |
2018/06/29(金) 13:13:42.11ID:8rEU0m4z
>>814
全部の変数にアノテーション付けようとしてる?
基本、関数・メソッドの入出力だけでいいぞ
残りは大体推測してくれる
0818デフォルトの名無しさん
垢版 |
2018/06/29(金) 13:43:06.77ID:HOtQS3nQ
>>817
ライブラリなどの既存メソッドの戻り値はほとんど型なしだから結局オレオレ型宣言を左辺の変数に付けて回ることになる
0819デフォルトの名無しさん
垢版 |
2018/06/29(金) 15:55:24.38ID:546QQsBD
>>818
あー、過渡期だからそれはあるかもね
対策としては、他モジュールを呼び出すところはなるべく集める、いきなり完璧を目指さないぐらいか
0820デフォルトの名無しさん
垢版 |
2018/06/29(金) 20:05:29.68ID:SWySBfmj
そんなに型に気を使って消耗する位ならもう生js使おう
適当にラッパーかけとけラッパー
0821デフォルトの名無しさん
垢版 |
2018/06/29(金) 21:06:52.59ID:M/T+ZgVo
>>820

TypeScriptユーザーがシコシコ型定義ファイル作ってるおかげで、vscodeでjsでも補完きくんやで。感謝せーや
0824デフォルトの名無しさん
垢版 |
2018/06/29(金) 21:39:48.60ID:0VaRYdhC
>>823
しんどいのか
その作業がないということはライブラリの作者は楽をしている
だからライブラリが増やすのも楽
そういう仕組みなんだろう
0825デフォルトの名無しさん
垢版 |
2018/06/29(金) 22:21:57.95ID:5dIySMmw
>>824
TypeScriptの場合は型定義を提供することでTypeScriptユーザーに使ってもらいやすくなり、
ユーザーの増加がライブラリ製作者にとって一手間かけるモチベーションになる
Pythonの場合は型アノテーションを付けたらPython3.5以上でしか使えなくなるのでユーザーは確実に減る
結果、誰も対応しない
根本的に破綻してるんだよ
0826デフォルトの名無しさん
垢版 |
2018/06/29(金) 22:35:49.90ID:0VaRYdhC
>>825
破綻してるのはお前のマウンティングだよ
マウントが酷いのはHaskellで、TypeScriptは無関係みたいなイメージが根本的に壊れた
0828デフォルトの名無しさん
垢版 |
2018/06/29(金) 23:18:51.02ID:ifNvOhNj
おれ的にはこのまま型定義ファイルがすべてのライブラリに標準装備されて緩やかにjsがts化していくことを希望したい。
最初から型定義がライブラリに入っていること多くなってきたよな、
0829デフォルトの名無しさん
垢版 |
2018/06/29(金) 23:54:19.04ID:uRtJ4/dJ
>>828
それには同意
0831デフォルトの名無しさん
垢版 |
2018/06/30(土) 03:36:46.79ID:+abKhVkF
>>823
あるよ。
typeshedてのがそれ

>>825
関数の引数、返値なら3.0から書けるし、コメント使うか別ファイルに書くやり方なら2.7にも対応可能ですが
0833デフォルトの名無しさん
垢版 |
2018/06/30(土) 09:44:21.50ID:4h701pQF
通常ならライブラリ本体丸ごと読んで型を調べるべきだ
本体に型がないなら別ファイルに書く
0834デフォルトの名無しさん
垢版 |
2018/06/30(土) 12:26:26.59ID:aZHCYAl9
>>831
なんだあるんだ。なら型付言語として使われるのも時間の問題だな。
rubyにもあるみたいだし、
ライブラリのインターフェースだけでも型付き当たり前の世界が来そうだね
0835デフォルトの名無しさん
垢版 |
2018/06/30(土) 14:15:03.20ID:BB0BPsjY
まーたruby信者のそ、そんなのる、るびぃでもできるし!か。呆れ
なんでもかんでも深く考えず流行りをそうやって後付けで増築してって奇形極まってるよね。二度と使わないよ。
0836デフォルトの名無しさん
垢版 |
2018/06/30(土) 15:58:28.61ID:9HearrjU
rubyの違法建築感は否定しない
が、なんかまとめ臭い書き方だなおい
5chエアプか?
0837デフォルトの名無しさん
垢版 |
2018/06/30(土) 16:41:24.65ID:oxrLiD+S
るびぃ信者、Proc.new、ラムダ、ブロックにおけるreturn、break、nextの挙動の違いをまとめようとした模様
https://qiita.com/jnchito/items/83410c0cda446efea582

結果、ややこしすぎるためコーディングを工夫してreturnやbreakの使用を避けましょうというなんじゃそりゃな結論www

何か理由があってわざわざ挙動を変えたんだろうが(まさか行き当たりばったりってことはないよね笑)ややこしすぎで使用自体を避けられてちゃ本末転倒だよなwww
0838デフォルトの名無しさん
垢版 |
2018/06/30(土) 17:39:57.19ID:RHrrdh8p
>>836
その人はrustがコンパイルできないおじさんだからほっときなさい
0840デフォルトの名無しさん
垢版 |
2018/06/30(土) 18:59:53.28ID:+abKhVkF
>>834,836
とはいえ、ruby にまともに使える型チェックの実装があるのかには興味あるな。
まえ調べた感じだと、教祖の型チェック周りの発言はフワッフワだし、実装してみたい個人が互換性のない「オレオレ型チェック」を作っては破棄してる感じで、万人が使えるものは何一つないようなんだが。
0841デフォルトの名無しさん
垢版 |
2018/06/30(土) 19:02:48.17ID:6fEIEQu0
どうせ
if type(...) != my_class:
とかのシュガーだろ。そんなもんに目くじら立てても意味あるのかね。
0842デフォルトの名無しさん
垢版 |
2018/06/30(土) 19:33:21.11ID:CMs/fWc6
Rubyはオモチャだから型付けなんて要りません
それより散らかったオモチャを片付けなさい
0843デフォルトの名無しさん
垢版 |
2018/06/30(土) 20:38:08.56ID:4h701pQF
自分のために違法建築したとは考えにくい
ユーザーを忖度して違法建築なら利己的ではないからOKという風潮があったんじゃないか

会ったこともないユーザーをモチベーションにするのはやめてほしい
0844デフォルトの名無しさん
垢版 |
2018/06/30(土) 23:16:50.81ID:tr0WXiW5
>>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
0845デフォルトの名無しさん
垢版 |
2018/06/30(土) 23:39:42.18ID:xV+Shhkx
>Ruby のProc, block はクロージャだから、クロージャを囲む関数から戻る。

クロージャ「だから」、クロージャを囲む関数から戻る??

まるでクロージャだったら当然の挙動と言わんばかりの書き方だけど、クロージャってそんなんだっけ?
0847デフォルトの名無しさん
垢版 |
2018/07/01(日) 01:54:08.61ID:5prQoZWD
>>845
ヒント:Smalltalk
0848844
垢版 |
2018/07/01(日) 02:00:27.83ID:YZ+qvhoO
クロージャは、クロージャの外側の環境をつかんでいる。
つまり、クロージャを囲む関数内の変数をつかんでいる

だから、クロージャ内でreturn すれば、外側の関数も抜けて、
関数内の変数なども、解放した方が良いと考えた

Groovy の挙動とは違うかも
0849デフォルトの名無しさん
垢版 |
2018/07/01(日) 02:11:27.56ID:FQlsc9Xo
>>848
return だけだったら納得できるんだが、next や break の扱いがぐちゃぐちゃなのはどう説明するの?
0851デフォルトの名無しさん
垢版 |
2018/07/01(日) 03:04:39.74ID:3SrV2o5x
>>837
> まさか行き当たりばったりってことはないよね笑

その、まさかだぞ。
楽しくプログラミング()した結果が仕様だ文句あるか!w
0852844
垢版 |
2018/07/01(日) 08:32:31.95ID:YZ+qvhoO
クロージャ(block)内のbreak は、クロージャを抜けるだけで、外側の関数は抜けない。
関数の最後まで実行される

クロージャ内のnext は、次の繰り返しに進むだけで、クロージャも抜けない。
クロージャの最後まで実行される

def f
num = 0
(0..5).each do |i|
num = i
break if i == 3
end
puts num
end

f() #=> 3
0853デフォルトの名無しさん
垢版 |
2018/07/01(日) 08:58:20.58ID:mO0FHij0
すみませんがゴミの話は当該スレでお願いします
0854デフォルトの名無しさん
垢版 |
2018/07/01(日) 09:01:20.31ID:TobyyIDd
これ他の言語にも影響あるだろ
continueはバグの原因になるとか、gotoの方がマシとか言われる
0855デフォルトの名無しさん
垢版 |
2018/07/01(日) 09:18:30.80ID:5prQoZWD
>>850
えー?closureが関数型特有な概念だと思ってるわけー?
面白いね、それ。本当は純粋関数型ではclosureはさほど重要ではないのだけど。
どうしてclosureが関数型固有な概念だと思ったのか、説明してごらん?
0856デフォルトの名無しさん
垢版 |
2018/07/01(日) 09:22:52.78ID:TobyyIDd
>>855
おまえが自分で説明しないで人に説明させようとするからだよ
もし関数型の人が説明したら関数型の概念になるに決まってるだろ
0857デフォルトの名無しさん
垢版 |
2018/07/01(日) 09:23:49.76ID:FQlsc9Xo
>>852
あなたが closure だからと主張する、block は 952の挙動だが Proc では break は例外吐くらしいけど何で?

# 言っちゃ悪いが、closure は定義した時点での環境を基準に動作が普通だと思うんで、
# ループ外で定義されているならば next/break は一律例外吐くで無いと一貫性がないようにしか見えん。
0858デフォルトの名無しさん
垢版 |
2018/07/01(日) 09:24:49.31ID:FQlsc9Xo
>>857
すまん、「block は >>852の挙動」だな。
0860デフォルトの名無しさん
垢版 |
2018/07/01(日) 10:22:00.59ID:5prQoZWD
>>856
へー、技術のベースになる概念が、関数型の人が説明したら別物になるのかー
おもしろいねークスクス
0862デフォルトの名無しさん
垢版 |
2018/07/01(日) 10:45:16.40ID:QlwNZjji
Smalltalkの人たちはScalaやRustのtraitsに対して、オリジナルのSmalltalkと違うからダメだ!あれは別物!って批判するくせに
他の言語より後に実装したclosureについては独自仕様でも問題ない、技術ベースで語れっておかしくね?
ダブスタも甚だしいだろ
0864デフォルトの名無しさん
垢版 |
2018/07/01(日) 10:59:11.30ID:uHA6sqOS
>>844はクロージャなら当然あるべき姿としてRubyのProcを語ってるからなぁ

それに対して>>847がヒント:Smalltalkって言ってるのは
要するにSmalltalkがクロージャのあるべき姿を体現してるって言ってるワケで、そりゃ傲慢すぎる

ただの一例としてSmalltalkのような仕様もあるって言うなら批判されないのに
0865デフォルトの名無しさん
垢版 |
2018/07/01(日) 11:00:03.93ID:7m3QggRW
クロージャの方が自身の関数スコープを持ってる印象だな
メジャーな中では Java, C#, C++, JavaScript, Obj-C, Swift などがそうだし
Rubyのラムダも上記と概ね同じに見える

ブロックは文字通りコードの塊と考えるとreturnやbreakについて妥当な動きに見える

Proc.newは挙動がキモい

↓によるとdo…endも挙動が違うらしいから >>837 のリンク先は4種で比較した方がいいかもな
https://qiita.com/riocampos/items/43e4431ddff93e01a18d
0867デフォルトの名無しさん
垢版 |
2018/07/01(日) 11:16:48.58ID:5prQoZWD
>>864
妄想が激しいね。
ヒント:Smalltalkっていうのは、Rubyのそのヘンテコな仕様はSmalltalk由来だということなんだけど。
お大事にね
0868デフォルトの名無しさん
垢版 |
2018/07/01(日) 11:19:42.69ID:5prQoZWD
>>862
きみ、結局はSmalltalkでのクロージャからのreturnの仕様を調べることすらしないで
思い込みだけで騒いでるでしょ?
そういうのを「バカ」って言うんだよ
0869857
垢版 |
2018/07/01(日) 11:25:18.69ID:usR85dqh
>>867
smalltalkには break や continue (next) はないだろう?
ruby のは、closure に break や next を持ち込んでおかしくなっているように見えるよ。
0870デフォルトの名無しさん
垢版 |
2018/07/01(日) 11:43:42.24ID:fENDu7uP
Smalltalkの仕様がどうであれ、それがRubyの仕様を正当化すると思ってなされているレス(>>847だの>>867だの)は
結局Smalltalkの仕様に権威がある、またはRubyがSmalltalkを模倣するだけの理由があるのを前提にしているわけで
傲慢という批判は妥当に思うな
0871デフォルトの名無しさん
垢版 |
2018/07/01(日) 11:52:10.11ID:tX8JlSDC
気持ち悪い挙動だと言いがかりをつける気満々のレスに対して
smalltalk でもそうだった昔からある挙動ですよと指摘しているだけでは。

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

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

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

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

批判があるとすればそれは、本質的に違うものに後から同じ名前を付けて混乱を招いていることに対するものでしょうね。
0899デフォルトの名無しさん
垢版 |
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 の複雑な状況の説明を試みるのはあまりよい方法ではないのは確かですね。
0901857
垢版 |
2018/07/01(日) 21:20:45.24ID:FQlsc9Xo
>>900
かといって、スレタイの TypeScript だって、 Python + 型チェック とあんまり変わらなくないか?

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

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

お前さんが使っている次世代言語もいつのまにか消えてなくなるさ
0910デフォルトの名無しさん
垢版 |
2018/07/02(月) 02:35:06.08ID:1yNW4Sj0
スクリプト言語はshebangあるから#じゃないとうれしくないな
コンパイル言語は好きにすればええ
0911デフォルトの名無しさん
垢版 |
2018/07/02(月) 03:45:57.45ID:sK89Ta1p
>>876
Rubykaigiは井の中の蛙の見本市だから

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

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

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

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

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

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

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

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

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

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

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

こうして連想配列と代入とラムダで統一すればclassは本質ではないのに
統一を阻止して、classを次世代に遺そうとするのはRubyもECMAScriptも同じ穴の狢
0919デフォルトの名無しさん
垢版 |
2018/07/02(月) 10:50:09.56ID:FaPINm7E
Smalltalkとか言うカビ臭いクソ言語について語ってるやつの頭の中だけ80年代で止まってるけど
他の人は普通に話ししてると思うけど
0923デフォルトの名無しさん
垢版 |
2018/07/02(月) 19:42:13.22ID:HeCnpISr
アンチMicrosoftを掲げる以上、Rubyを使うべきだろね。
0924デフォルトの名無しさん
垢版 |
2018/07/02(月) 20:33:18.53ID:9WbprnCr
クロージャの問題は結局変数の評価タイミングが分かりづらくなりやすいってところ。
common lispはその点わかりやすい。
0925デフォルトの名無しさん
垢版 |
2018/07/02(月) 20:47:10.91ID:HeCnpISr
あちらこちらに分身がいて、どれかを書き換えると他に影響してしまう。
そんな混とんとした世界で生き抜くにはいろいろなものが必要になる。
つまり、コピーとムーブが一番楽。
0926デフォルトの名無しさん
垢版 |
2018/07/02(月) 20:47:29.49ID:nj5wv8+r
>>920
goとかjsとかparser用意しないとast作れないところを見るとlispが次世代感あるように感じてきた
0928デフォルトの名無しさん
垢版 |
2018/07/02(月) 21:36:57.09ID:F0SAJ301
luaはnginxと組みわせて使う
0934デフォルトの名無しさん
垢版 |
2018/07/02(月) 22:06:32.06ID:3279IT8S
久々に社会に出てみたら、
青春を捧げたRubyがすっかりオワコンになってて哀しいです(^q^)
0935デフォルトの名無しさん
垢版 |
2018/07/02(月) 22:27:57.20ID:sXgZmTLa
インターンってRubyばっかだな
素人学生にRuby書かせるとか頭おかしなるで
正気か?どうゆうロジックなんだ?
0936デフォルトの名無しさん
垢版 |
2018/07/02(月) 22:42:00.11ID:F0SAJ301
世代的にrubyで育ったリーダが多いからじゃない
外資ではgoとかpythonが多い
メガネのヒョロガリが写真に写っていてRoRエンジニアを募集してたらまずハズレだ
0938844
垢版 |
2018/07/03(火) 01:06:30.72ID:LtnxPY8P
Ruby では、break, return、例外も、単一の同じ仕組みを使っている。
コールスタックをさかのぼるポインタ。
つまり、どこから呼ばれて、どこへ戻るか

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

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

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

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

Rubyはこの20年自らの欠点をちょこちょこ直す以外なにもやっていない
0948857
垢版 |
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 との整合も取れないし

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

まだ開発スピードが止まる気配がないけど、
他に何を開発する余地があるんだろ。
0951デフォルトの名無しさん
垢版 |
2018/07/03(火) 09:33:01.11ID:TTM9k7xe
世代の交代を駆動するのが枯れた技術であってもいいんだよ
まあ仕様の腐った言語しか眼中にない人間には理解できんだろうけどね
0952デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:15:55.62ID:CZ1ZSS89
開発元が腐ってるRustとTypescript
これは次世代とは言えまい
これが覇権取ったらディストピア一直線
0953デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:25:54.60ID:CZ1ZSS89
真に次世代の言語はNim
今までの言語の焼き直しに留まらない書きやすさと実行速度を両立した言語で
開発元もモジラとかMSみたいな邪悪な企業じゃない
0954デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:44:28.82ID:pQbF/VH/
単なるCのソースコードジェネレータじゃん。
nimが速いんじゃなくてCが速いの。Cのソースコード吐いてCのソースコードコンパイルしてるんだから。
coffeescript()なんかのaltjsと同じようなもんだね笑
0955デフォルトの名無しさん
垢版 |
2018/07/03(火) 11:31:15.91ID:jh9a6Llj
高度なシンタックスシュガーだからね
でもCよりは確実に使いやすいしいいと思うよ
0956デフォルトの名無しさん
垢版 |
2018/07/03(火) 12:11:26.83ID:H2PJV6CA
>>941
c#で言うとasp.netみたいなもの。
c#ユーザだとしてもEFとビュー関数が無いと何もできない低レベルな人間。
0958デフォルトの名無しさん
垢版 |
2018/07/03(火) 12:43:16.36ID:4OdwMirb
Rubyがブロック引数を組み込みの制御構文のように見せたかったというのは旧世代の発想としてはよくわかるけど、
第一級関数や高階関数が十分に一般的なものになった現代においては組み込みのループのように見せるという発想自体がもう時代にあってないと思うわ
むしろ次世代言語は組み込みの制御構文なんか撤廃して関数に寄せればいいと思うんだが、
なかなか手続きベースの言語でforで捨てるものは現れないね
0961デフォルトの名無しさん
垢版 |
2018/07/03(火) 13:15:41.14ID:ZYDLmzQl
>>958
手続き型言語と呼んでいいのかわからんが、tclなら、制御構造は全て「コマンド」扱いで、BNFとか笑っちゃうぐらいシンプル
0962デフォルトの名無しさん
垢版 |
2018/07/03(火) 13:45:16.08ID:taCiD/Gz
>>958
条件分岐と繰り返しはプログラムの基本構造なわけだが
逆に関数とかサブルーチンとかは基本構造に入ってないわけだが

お前は、超天才かドアホかのどちらかだなw
0964デフォルトの名無しさん
垢版 |
2018/07/03(火) 14:53:19.41ID:78ysfJXf
俺は勝った方の味方するよ。
最初から味方だった、俺のおかげで勝てたみたいな感じで。
0965デフォルトの名無しさん
垢版 |
2018/07/03(火) 15:16:48.85ID:U5Zq1zkR
第一級関数というやつ
ほとんどの場合意味がわかってないか
勘違いしてるよな
クロージャーっぽく書けたら第一級ってわけじゃないから
0966デフォルトの名無しさん
垢版 |
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の製作者とはプログラミング言語に対する基本的な見識においてレベルが違いすぎますからね

かつてプログラミング言語の形式的意味論までか否かは別にして言語の基本概念は何かきちんと学び理解するのが常識だったが
簡単に言語を実装できるようになって=マイ言語化されて以降、スクリプト言語のような軽い言語が百花繚乱の如く咲き乱れる(と言えば聞こえは良いが要するに粗製乱造される)ようになって以降
基本概念をきちんと学び理解していない人でも新しい言語は簡単に作れ、上手くファンを掴めるとそれなりに流行ってしまうようになったので
実際にきちんと意味を考えるととても不自然で理解が困難になるような言語機能の組み合わせ方を単に「だって便利だもの」という理由で言語に組み入れられてしまうようになった
単なる便利さだけで深い考慮なく導入されたものを意味論などから合理的・体系的に説明・理解するのは困難、年寄りの戯言でした
0968デフォルトの名無しさん
垢版 |
2018/07/03(火) 18:36:16.17ID:TTM9k7xe
>>966
空気読めない老人が上から目線でしゃしゃり出てくるのほんとやめてほしいわ
だいたいALGOL68を持ってこようがSmalltalk-80を持ってこようが場違いなのはさして変わらんよ
そもそも誰もクロージャーの本来も一般論も論じてないとか、すでにその話は終了しているとか読んでわからんのかね
0972デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:10:03.39ID:Y44wiyUJ
>>970
自分の思いを述べてるんだから何もしていなくはない

そういう性格だから嫌われるんじゃない
こいつが嫌いな性格を一般化してるだけだ
0973デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:11:22.15ID:iZrusKUj
RustはRustで安全のために犠牲を払いすぎ
そこまで犠牲を払わないNimという選択肢はダメではない
0975デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:15:29.04ID:Y44wiyUJ
>>974
うわぁってなんやねん

空気読むことばっか押し付けるからお前んとこのプロジェクト炎上してるんや
0976デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:15:31.69ID:A246qspJ
犠牲にしてるかな?どうせやらなきゃいけないことを強制してるだけでわ
0977デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:23:30.28ID:2atZvleV
>>972
スレに沿った議論をしない人は何もしてないと同じなんだよ
お仕事だってそうでしょう
0980857
垢版 |
2018/07/03(火) 19:33:36.60ID:0xlHwX4q
Nim は書きやすさと速度、Rust は安全性と速度、
に注力したイメージなんだが、安全性と速度に比べて、書きやすさと速度って一つの言語でカバーする必要性が薄いように思うんだよな。

従来の「スクリプト言語+速度が必要なところだけC/C++」に比べて、どうしてもNimが良いっていう場面ある?
0981デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:43:18.67ID:MH5+eiAJ
>>978
えぇっ

>>979
途中までしてたじゃん
話につい来れなかったルビーィストとおじいちゃんたちが突然昔話を始めるまでは
0982デフォルトの名無しさん
垢版 |
2018/07/03(火) 19:53:46.17ID:Y44wiyUJ
>>981
もうとっくに日本は移民国家だ
自分が雰囲気の中心にいるんだって顔してるだけで
さしたる理由もなく他人をDisれると思うなよ


昔の次世代言語の話したっていいじゃない
0985デフォルトの名無しさん
垢版 |
2018/07/03(火) 20:38:32.57ID:zqxfY0jY
>>966
Smalltalkのブロックはselfと^の挙動がクロージャとして完全にウンコなので
こんなものを基本形として議論のベースにしたくないです
Schemeの方が1万倍マシです
0986デフォルトの名無しさん
垢版 |
2018/07/03(火) 20:41:29.96ID:MH5+eiAJ
>>983
その木は安全なの?
個人的には木構造実装したりしないから別に困ってないけど
0989デフォルトの名無しさん
垢版 |
2018/07/03(火) 22:03:10.71ID:ZNPbo2Ku
Lispに見えて実はForth風では
処理系のサイズを小さくまとめるのが目的みたいだしいいんじゃないかな。どうせ個人の試作言語だろうし
0994デフォルトの名無しさん
垢版 |
2018/07/03(火) 23:50:32.40ID:T5T8ZL2Z
安全だからRustは良い←わかる
安全でないからNimはいらない。書きやすさとかどうでも良い←それあなたの感想ですよね
0996デフォルトの名無しさん
垢版 |
2018/07/04(水) 00:44:54.31ID:SVer28O9
書きやすくても保守性が高くなるわけじゃないからな、
自分で書いて自分一人だけで保守するならいいんじゃないかね
0998デフォルトの名無しさん
垢版 |
2018/07/04(水) 01:36:19.71ID:mmoPrDKP
>>997
いやいや、Rustは可読性も保守性も高いでしょ
書く前にある程度の考える必要があるだけ

むしろ思ったことすぐに書けちゃう言語の方が
可読性も保守性も低いでしょ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 30日 5時間 45分 54秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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