次世代言語13 Go Rust Swift Kotlin TypeScript

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/08/20(月) 21:55:53.03ID:JBCtYT+G
スレタイ以外の言語もok

前スレ
次世代言語12 Go Rust Swift Kotlin TypeScript
http://mevius.5ch.net/test/read.cgi/tech/1530664695/
2018/09/01(土) 10:56:33.83ID:y+HuzDXi
>>267
あんまり出てこないって言っただけで、>>265の二つめは出来た方が良いと思うよ。三つめガイジだけど
で、>>261に挙げられた言語は出来ないの?出来るんじゃね?
269267
垢版 |
2018/09/01(土) 11:13:45.36ID:8XWt4TWp
>>268
その上で、範囲チェックにしか使えないんなら範囲チェックに特化した表記の方が望ましいという意見なんだけど、言ってる意味わかる?
表記上は一般的に広く使えそうに見えて実は特定の限定的なパターンしか認めないってのは典型的なダメ言語だよ
2018/09/01(土) 11:16:35.64ID:33FbYz6y
「数学では〜」っていう言い方見ると悲しくなる
高校数学やそれに毛の生えたようなとこしか触ってないのに
それをもって「数学では〜」などと笑止千万

これは>>265にあてつけたんじゃなくて
昔からずーっと思ってたこと
2018/09/01(土) 11:19:23.27ID:4l6T8pEq
まさかMaybeが出来ない初心者なんていませんよね

foo p x y = if p y x then Just x else Nothing
bar m p = maybe False p m

(a <= b && b < c && c == d)
== ((Just a >>= foo (<=) b >>= foo (<) c) `bar` (==d))
2018/09/01(土) 11:19:31.04ID:y+HuzDXi
>>269
いや、だからキモいしガイジしか書かないけど、書けた方が良いって言ってんじゃん
で?>>261の言語は書けるんじゃないの?
2018/09/01(土) 11:27:25.51ID:pVUyxPYl
数学でも a < b > c みたいな書き方はしないし
許してる言語もないだろ
2018/09/01(土) 11:37:23.08ID:8XWt4TWp
>>273
それが文法上許されないことを説明する一貫性のある理由がない
<と<=を特別扱いみたいな一貫性の欠片もないガイジ仕様にするくらいなら要らない、という設計判断は十分にありうる
2018/09/01(土) 11:47:25.54ID:4l6T8pEq
必要か不要かを判断するコストは実際にはものすごく高い
簡単に作れるかどうかで判断してたくさん自由に作ってどれかひとつ成功すればいい
2018/09/01(土) 11:52:13.22ID:VcQ5WdQC
Juliaだと a < b > c は合法だった
多分 a < b && b > c を計算してるっぽい
しかし文法的に一貫性があるのはわかるのだが
これが書けてしまうのはやはり気持ち悪いな

この手のでRangeで書きにくいやつだと、
行列の上三角成分だけ舐めるときに
1 <= i < j <= n
とか書けるとちょっとだけ嬉しい
2018/09/01(土) 12:00:11.31ID:bn2L0QEe
a < f(b) < c
fは何回呼ばれるべきか
2018/09/01(土) 12:11:13.69ID:xDnWzldj
理想的にfが純粋関数でbの値がconstで1回だけ評価が素直だと思うが
2018/09/01(土) 12:11:17.71ID:Lo8welT8
pythonの場合、 a < b という式の型がboolなのに (a < b) < c ができてしまうというのが
非常に分かりにくいね。なんというか、むりやり捻じ込んだ感。
2018/09/01(土) 12:14:38.95ID:+BAvd4bn
a < b < c

b > a and b < c

どっちがわかりやすいか?
2018/09/01(土) 12:36:45.65ID:rtR930fJ
なんで
a < b and b < c
じゃないの?
2018/09/01(土) 12:53:55.22ID:7zNJuyPV
センス
2018/09/01(土) 13:05:45.26ID:8oBLXasx
>>280
1=1<2だったらどうすんの?
2018/09/01(土) 13:19:35.77ID:vTDtzWWE
>>280
コンパイラは大抵
b > a and b < c
のがわかりやすいと判断している。
285デフォルトの名無しさん
垢版 |
2018/09/01(土) 18:37:02.95ID:/wwW4VSs
だれかがいってるように
マジで頭悪い。。。

aho = a < b ← 結果はブーリアン
baka = aho < c ← ブーリアンを大きさで比較してる
< は普通2項演算子で予約されてるからな

3項演算子みたいに使ってない記号を組み合わせるならまだ理解できる
2018/09/01(土) 18:51:27.82ID:TMvFd8Nd
>>281
その書き方だと 0 < x < 100 が
0 < x and x<100になるからセンス悪いと思った

x > 0 and x <100

xが0より大きく100より小さいにマッチするような記法がない
2018/09/01(土) 19:03:39.36ID:7zNJuyPV
ワロた
2018/09/01(土) 19:34:08.16ID:+4zR3ral
半角の人はいい加減に自分が馬鹿なことを認めてほしい。
2018/09/01(土) 19:34:46.46ID:8XWt4TWp
>>285
ineqop ::= ('<' | '<=' | '>' | '>=')
ineqexpr ::= shiftexpr { ineqop shiftexpr }
みたいに定義すりゃいいだけだろ
290デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:47:34.46ID:/wwW4VSs
なにも解決してない
構文規則と演算の規則は
なんの関係もないからな

知恵遅れは構文規則でかければ
自動的に演算規則ができて

なんでも演算できると思ってるらしい
構文規則と解釈が分離できてない

コレが低学歴知恵遅れの限界
ホントな気の毒なぐらい頭悪い
2018/09/01(土) 19:51:19.20ID:8XWt4TWp
>>290
任意個数のオペランドを持ったノードとして左から順に評価すればいいだけだぞ
CやJSのカンマ演算子なんかと一緒
292デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:52:39.70ID:/wwW4VSs
a < bは
普通にブーリアン返す演算子だからな
普通にブーリアン返すのが正しい演算だ
293デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:53:45.56ID:/wwW4VSs
aho ? baka1 : baka2
全然違う
2018/09/01(土) 19:56:29.75ID:4l6T8pEq
a < b の値は最初はintだったのをboolに変えたんなら次はMaybeに変えてもいいぞ
295291
垢版 |
2018/09/01(土) 19:56:58.30ID:8XWt4TWp
カンマ演算子と一緒は間違いだな、撤回する
例えば配列リテラル式と一緒だと考えればいい
あれは任意個数のオペランドを引数にとって全体として配列型を返す演算子であると解釈できる
296デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:57:48.29ID:/wwW4VSs
非ゼロを非ゼロでないかを
真偽にしても別に問題はない
297デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:00:11.15ID:/wwW4VSs
真偽値をどういう値にするかどうかなんか関係ないからな
式の評価で真偽判定を行わないという解釈の問題になるからな
298デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:01:12.82ID:/wwW4VSs
とりあえず低学歴知恵遅れは
とてつもなくオツムに問題があるのが
このスレみててもよく分かる

適切な問題の分離のしかたが分かってない
2018/09/01(土) 20:03:28.96ID:8XWt4TWp
アホだなあ
演算記号が単独で式を構成しなければならないなんて決まりはない
全体で式を構成すると考えれば何の問題もない
300デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:06:47.42ID:/wwW4VSs
a < b < c
まず a < b を評価して
その評価結果を
(a < b) < c
で評価するという決まりだからな
コレが正しい解釈になる

それ以外は不適切な解釈
2018/09/01(土) 20:07:36.43ID:Lo8welT8
Iconという言語だとこれが、a < b という式は成功した場合の値がbになるから a < b < c が
自然に実現できるんだよな。
2018/09/01(土) 20:13:43.79ID:8XWt4TWp
>>300
じゃあ関数呼び出し式 (f)(a, b) はどう解釈する?
君のいう正しい解釈のように ((f)(a))(b) と解釈する言語も実際に存在するけど、あまり一般的ではないよね
2018/09/01(土) 20:22:54.83ID:rtR930fJ
>>300
この辺レガシーな言語なら最初の比較で出るのはbool型になるからcと比較してまともな結果になるはずがないんだよね
2018/09/01(土) 20:25:39.05ID:Lo8welT8
>>302
二項演算子 a < b と三項演算子 a < b < c が同時に存在するというイメージなんだろうか。
a < b がコンテキストによってboolを返すかbを返すか変化するという方がまだ無理がないな。
2018/09/01(土) 20:32:20.02ID:4l6T8pEq
if(対象 == オブジェクト)
if(事象)
対象コンテキストと事象コンテキスト
すべてがオブジェクトといったな、あれは嘘だ
306デフォルトの名無しさん
垢版 |
2018/09/01(土) 20:50:05.62ID:/wwW4VSs
関数呼出規約なんかこの話となんの関係もない
まともなオツムしてたら関数呼出で順序の副作用がおきるような書き方なんかしないからな

昔のMCSのコンパイラでも例えば、cdeclとpascal呼出規約があった
cdeclとpascal呼出規約をかえると、結果が変わるような知恵遅れなコード書くヤツなんか
このスレにいるような低学歴知恵遅れしかいない

わかった?
2018/09/01(土) 20:56:58.84ID:1LBe8Cyr
>>304
C言語的な演算子の概念に拘るなら、比較式はn項演算だと考えれば理解しやすいかな
実際scalaやF#のmatchとかRubyのifとかはn項演算の例だし、そんなに珍しいもんじゃないよ
2018/09/01(土) 21:36:47.04ID:Lo8welT8
>>307
構文解析の難易度の話なんだけど、matchなどといった開始語を欠いているうえに
<=や>など他の演算子との混在も考慮しなければならないとなったら、かなり
困難なものになる思うが。
309デフォルトの名無しさん
垢版 |
2018/09/01(土) 21:39:24.86ID:/wwW4VSs
それは可変引数をもった特定の関数呼び出しと意味的同じだからな
低学歴知恵遅れにそんなこといってもしょうがない
2018/09/01(土) 21:49:16.31ID:4l6T8pEq
学校で教えるのはプログラムではなく物理とか微分とかなので
学歴重視はハードウェア重視や機械学習重視になりがち
2018/09/01(土) 21:57:05.44ID:OmCLr4/c
>>308
>>289で終わりじゃね
312デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:17:22.89ID:/wwW4VSs
知恵遅れに理解はムリ
知恵遅れの自覚がまったくいない
2018/09/01(土) 22:26:51.47ID:Lo8welT8
>>289はshiftexprの定義がないんで厳密なところがわからんけど、後者のshiftexprは
ineqexprじゃないの?
2018/09/01(土) 22:39:41.95ID:bEXb+lmV
>>313
合ってるよ
これでわかるか?
比較式 ::= 低優先順位の式 {比較演算子 低優先順位の式}
{}はEBNFで一回以上の繰り返し
2018/09/01(土) 22:40:56.19ID:bEXb+lmV
失礼
低優先順位じゃなくて高優先順位の式の間違いだな
316デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:41:42.09ID:/wwW4VSs
>>300でオワリ
それ以外は知恵遅れの寝言だからな
317デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:45:20.98ID:/wwW4VSs
構文解析できればなんでもできると思い込んでるからな
低学歴知恵遅れには、その先の解釈のレベルまでおとしこむ知能がない
2018/09/01(土) 22:56:42.31ID:NoXfDUjm
オペランドを順に評価しながらandで繋ぐだけだろ?
半角クンにとっては難しいのかな
319デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:58:45.07ID:/wwW4VSs
そういう問題じゃないからな
やはり知能の問題
2018/09/01(土) 23:23:52.10ID:Omwrv276
小学校でプログラミング教育ってチューリングマシンとか
ラムダ計算とかするわけでしょ
すごいよね
2018/09/01(土) 23:34:33.99ID:0V80T0Sa
ブーリアンヴォーイズは、いい加減パーキンソンの凡俗法則でググろうな
322デフォルトの名無しさん
垢版 |
2018/09/01(土) 23:44:33.13ID:33FbYz6y
流れ本体とは関係ないが
>>286のレスが意味不明
とくに
> 0 < x and x<100になるからセンス悪いと思った
この部分

>>281へのレスとしては
最後の一行もさっぱり意味分からんが
2018/09/01(土) 23:59:16.46ID:siIpxtD6
>>280
a < b and b < c
2018/09/02(日) 00:22:13.35ID:W5ilUQmj
上座と下座みたいなセンスかな
OOPでは引数の中で一番偉いやつを左に書くよな
2018/09/02(日) 00:30:30.37ID:KFJPmGJr
a < b > c が合法になるぐらいなら a < b && b < c でいい
2018/09/02(日) 00:33:32.41ID:2XQmbsmV
>>322
比較するときにつねに左に変数がないと気持ち悪いタイプなんだろう
個人的にはそれはそれで分からなくはない
俺はこの場合は数直線順のほうが読みやすいと思うが
2018/09/02(日) 00:40:47.30ID:ssHYSt2l
> 比較するときにつねに左に変数がないと

プログラミングエアプか?
変数と変数を比較するケースを>>286以外のみんなは当然想定したわけで
2018/09/02(日) 01:37:29.19ID:tqSo+8/2
不等号をカリー化しようや
2018/09/02(日) 02:01:29.06ID:Vtrj0PDM
a < b < c
Pythonが採用して、Rubyが採用しなかった
そう言うことだと思う
330デフォルトの名無しさん
垢版 |
2018/09/02(日) 05:30:33.71ID:4Jf6YH6e
>>288
愚か者はその愚かさ故に自分が愚かであることがわからず思い上がって傲慢になる。
賢い者はその賢さ故に自分が愚かであることがわかり遜って謙虚になる。
2018/09/02(日) 06:00:58.71ID:7CaEiwfk
常にってわけじゃないけど
RangeやRectなどで繋がりのある組を明示すると意図を読みやすいと思う
シンプルなケースは a < b で良いけど、複雑になる程inとかも使わず普通にメソッドで

if (a ..< c).contains( b ) {
  print("含まれる")
}

if (a ..< c).contains( a ..< b ) {
  print("含まれる")
}

if (10 ..< 30).overlaps( 20 ..< 40 ) {
  print("重なっている")
}

if Rect(x:10, y:20, w:100, h:100).contains( Point(x:50, y:50) ) {
  print("含まれる")
}
2018/09/02(日) 06:48:37.78ID:5WqNet32
以下の2つの書き方がある

左に、小さく方を書く
0 < x and x < 100

左に定数を書く。
定数には代入できないため、すぐにエラーが発見できる
0 < x and 100 > X
2018/09/02(日) 07:13:44.39ID:HcdhtgGT
スレチかもしれないけど
人工知能が今後発展していくにつれて、CとかJavaとかRubyみたいな言語って廃れていって、人工知能に関連しない分野のプログラミングスキルは無価値になって、人工知能に特化したPython一強みたいな感じになるの?
プログラミング始めたばかりなんだけどふと疑問に思った(同じくらい初心者であるはずの知人がこれからは人工知能に関わる言語だけやっていればいい、それ以外じゃ食っていけない、みたいなこと言ってたから)
こういう話題は何度も出ていてうんざりしてたらごめん
2018/09/02(日) 08:18:58.41ID:Y3BoGqKi
>>332
下はヨーダ記法って言ってな
時代遅れなんだよ池沼
335デフォルトの名無しさん
垢版 |
2018/09/02(日) 08:33:01.84ID:KdakvMsf
人工知能というか機械学習な
その中でも深層学習ってやつね
pythonは特化してるわけじゃなくて深層学習に必要な行列計算が簡単に書けるnumpyというライブラリがあるから使われている
未来のことは分からないが、気にしても仕方ないように思える
プログラマにとって技術の陳腐化は日常的なことだし
機械学習やりたいならプログラミングじゃなくて統計を学んだ方がいいよ
2018/09/02(日) 08:46:50.28ID:RsxSrY9y
>>333
世の中の全てのコンピュータが人工知能とやらになればそうなるかも知れんが
物理的にあり得ないので、その他の言語が廃れることはないよ
それどころか、コンピュータが多様化してるからどんどん新しい言語も必要になってくる

だから、このスレが存在してる
2018/09/02(日) 08:59:02.89ID:KFJPmGJr
>>333
そのpythonが今強い理由がCで書かれたライブラリなんだよなあ
2018/09/02(日) 09:00:04.40ID:W5ilUQmj
囲碁と画像処理のスキルが無価値になったから言語は滅亡するというのは意味不明だな
0 < x はセンス悪い説よりももっと意味不明
2018/09/02(日) 09:11:23.18ID:TkJi8FAz
まぁCythonってあるもんな
https://www.oreilly.co.jp/books/images/picture_large978-4-87311-727-0.jpeg

大体それの知識だけっていう狭い視野の人間は碌なもの作れない
プログラミングに絞って言えばOSとかネットワークの事もっと知ってろよってな
2018/09/02(日) 09:12:14.22ID:2NNLLZ0f
>>336
>だから、このスレが存在してる

カッコイイ(゚∀゚)
2018/09/02(日) 09:15:33.58ID:9dGgsJL0
>>333
人工知能によってプログラミングが要らない時代になったとしたらそもそもPythonも不要だから無駄
例えばメルカリみたいなシステムを作るとして、今だとAIって写真を画像認識して自動的にカテゴリ分けしたりするのに使うわけ
一方、出品などシステムの「仕組み」の部分は人間が手作りしてて、こういうのは前者よりも遥かに複雑でAIには難しいの
後者がAIに置き換わる頃には「AIを使う」プログラミングなんてとっくにAI化されてるよ
「AIを作る」側になるなら話は別だけど、後者をAI化できるほどのレベルになれば今みたいに個別にAI利用システムを開発するんじゃなくて
どっかが開発した汎用的なAIをサービスやパッケージとして利用する形になるだろうから、
最終的にAIベンダーとして残るのは本当に1つか2つの企業だろうね
2018/09/02(日) 10:00:25.05ID:ceygCyU3
>>333

知り合いもどうせ大学生とかそんなレベルなんだろ

mac使って自称データサイエンティスト()とか名乗ってる意識高い系の方々は自分がバカだと気づかない
2018/09/02(日) 10:02:50.62ID:ceygCyU3
mac使ってカタカタターンってやって
これをこうしたらいいだけなんですよと謎の上から目線

あなたたちのやってることは間違ってました
でも自分がなにか失敗したら顔真っ赤にして老害ガーとか言い出すゆとり世代
2018/09/02(日) 10:24:08.52ID:W5ilUQmj
GUIブームの時も、グラフィックがあるから文字は無価値になるとか言われていたような
2018/09/02(日) 10:30:13.21ID:KFJPmGJr
幅が広すぎて無意味だということに誰もが気づいて廃れた言葉である「ゆとり世代」を未だに使っている人がいるのか。
2018/09/02(日) 11:00:08.66ID:W5ilUQmj
登場人物の心を読むスキルを使うための登場人物
心を読めるから言葉は無価値になるという
2018/09/02(日) 13:46:55.56ID:TkJi8FAz
>>342
学生よりも分野外のおっさんの方が変な夢見過ぎな気がする
2018/09/02(日) 14:46:45.62ID:u8rOx+S9
AI妄想を差し引いたPythonはごく普通のスクリプト言語
2018/09/02(日) 17:35:10.60ID:IGne1itN
計算科学にも使える数少ないスクリプト言語やぞ
2018/09/02(日) 20:08:30.54ID:UJ9ET2d1
しかも極初期からOpenGLバインディングが使えたという魔改造スクリプト言語
2018/09/02(日) 20:33:11.59ID:JNdlpPmy
Pythonさほど好きじゃないけど、こいつが居なかったら
Rubyとかいうクソ言語が流行ってた可能性もあると考えると
Pythonが存在してくれて良かったと心から思う
2018/09/02(日) 20:45:40.92ID:kJn49GH1
手放しに良い言語とは思えないけど変えが効かない言語
353デフォルトの名無しさん
垢版 |
2018/09/02(日) 20:50:30.02ID:Tb3tt8fk
luaでいいわ
一番シンプル
2018/09/02(日) 21:24:26.73ID:ZCYaZIQc
俺はRubyでいいわ
なんかPyキチが目の敵にしてるが
2018/09/02(日) 21:29:19.32ID:Y3BoGqKi
Pythoはsyntaxはまーしょうがないにしても
設計がウンコですわ
PHP並に酷いものもある
2018/09/02(日) 21:32:00.92ID:TkJi8FAz
PHPは7になってから大分切り捨てられたけどな
2018/09/02(日) 21:56:03.31ID:wjrBsTt/
>>356
切り捨て?詳しく
2018/09/02(日) 22:15:39.01ID:TkJi8FAz
旧式のmysql接続モジュールとか旧式の正規表現とかが主だった切り捨てだったかな
5.xで非推奨って言われてた関数の類がバッサリ切り捨てられてた
2018/09/02(日) 22:16:48.58ID:TkJi8FAz
あとクラスの書き方もフィールド宣言にvarとか書けなくなってたな
2018/09/02(日) 22:20:46.75ID:Y3BoGqKi
array_ナンチャラとかいうウンポコペチプーの代名詞みたいなそびえ立つクソはどうなりましたか(小声)
2018/09/02(日) 22:58:40.04ID:mf3TKdIM
pythonが良いというよりperlのクソみたいななんでもあり感を無くしたのが良かったってだけ。
余計なことをしない言語が良い。
362デフォルトの名無しさん
垢版 |
2018/09/02(日) 23:10:24.54ID:Tb3tt8fk
つまりlua使っとけば間違ない
という結論になる

余計な機能があるせいで
いちいち余計なことを覚えないといけないという悪循環もなくなる

pythonは余計なもん大杉で初学者にも不向きといえる
余計なもんないほうが初学者もとっつきやすい

覚えることも少ない
簡単なのが一番
2018/09/02(日) 23:41:05.75ID:kJn49GH1
Luaさんにもnumpyがあればなあ
2018/09/03(月) 00:10:22.82ID:8OmPihsG
luaさんはjsと似てた記憶しかない
2018/09/03(月) 00:13:49.32ID:EdWLStdR
LuaさんについてはRubyと同じくIf End ifのクソ文法だったことも覚えている
2018/09/03(月) 00:28:46.48ID:9rZ1YNmO
luaは思いのほか流行ったけど、一般的なスクリプト用途で使ってる人なんているの?

使い捨てのスクリプトは、Rubyがいい。なんとか持ちこたえて欲しい
システムに入ってないから好きなバージョン使えるし、読みにくいかわりに書きやすいと思う
Python2しか使ったことないけど、Pythonって積極的に選ぶものでなく、消極的に選ばれるものだよね?
367デフォルトの名無しさん
垢版 |
2018/09/03(月) 00:38:38.73ID:E2St7m4+
luaは必要な機能を自分で拡張して使うもんだからな
cとの相性は抜群

そのバインディングも簡単
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。