X



次世代言語議論スレ[Go Rust Scala Haskell]第5世代 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0541デフォルトの名無しさん
垢版 |
2017/07/31(月) 15:45:00.94ID:u2+qVqAB
オブジェクト指向言語で作るときよくOMT(オブジェクトモデリングテクニックとかなんとか)をよく使って設計してたんだけど、
関数型言語で作るときは何使えばいいの?
0542デフォルトの名無しさん
垢版 |
2017/07/31(月) 16:27:21.72ID:uq0CdBZz
今思いついたんだが
数学は公理を使えばいいというより、公理以外の何も使わない方がいいな
特に言語に依存するテクニックを使ってはいけない
言語を変えた途端に使えなくなるので
0543デフォルトの名無しさん
垢版 |
2017/07/31(月) 16:28:38.94ID:A1TauzTI
三項演算子は構文がまるで違うからね
式中にもif書けるようにするからそれ使えの方向
(逆にif廃止全部三項演算子使えな言語があったらおもしろいけどw)
0544デフォルトの名無しさん
垢版 |
2017/07/31(月) 19:35:10.71ID:xqAPypbO
>>541
関数型の重要な設計指針として、トップダウンで考えるというのがある
1. 問題全体の結果を求める関数のスタブを作る
2. スタブを一つ選ぶ
3. 2で選んだ関数を実装するために必要なものを考え、それぞれを求める関数のスタブを作る
4. 2へ戻る
これを、すべての関数が十分(容易に実装できるレベル)に細分化されるまで繰り返す
こうやっていくと非常に明快で平易なコードになる
逆に入力から出力を導くという考え方で作ろうとすると、俺スゲェに陥って意味不明なコードになりやすい
0546デフォルトの名無しさん
垢版 |
2017/07/31(月) 20:05:13.60ID:ZV6hqn66
「おまえはこういうコマンドを与えるとこれをやるクラス」って
トップダウンで構造決めてくオブジェクト指向の基本手法の
単語入れ替えたコピペかと思ったw
そしてそれならコマンドに対するふるまい変えられるオブジェクト指向の方がいいや
0547デフォルトの名無しさん
垢版 |
2017/07/31(月) 20:42:45.33ID:uq0CdBZz
トップダウンの細分化をどこで止めるかを考えないと意味がない
CPUの種類までトップが決めるのか?
CPUを変えたり仮想関数のふるまいを変えたいならトップダウンを止める必要がある
0548デフォルトの名無しさん
垢版 |
2017/07/31(月) 21:03:46.00ID:iyeoTq8u
>>537
この需要ならrustがベストかいなー
何をするにも面倒な言語というイメージがあって避けて来たけどやってみるか
ありがと
0549デフォルトの名無しさん
垢版 |
2017/07/31(月) 21:35:05.34ID:VY/jm5nF
もし関数型で大規模な業務アプリを作るなら、大まかなところは伝統的なIPOベースのDFDで描いて
各プロセスを>>544のようなスタイルで実装していくことになるんじゃないかな
データ指向の設計ってCOBOL時代に既に完成してて、あとは莫大なコピペコードの問題を関数型の高度な宣言的記述によって回避できるなら
設計手法としてはわざわざ意識高そうな複雑な手法を持ち出すまでもなく十分に完成と言えると思う
0553デフォルトの名無しさん
垢版 |
2017/08/01(火) 12:52:24.85ID:PIQ133u2
関数型が注目されてるのってマルチコア時代の並列処理を効率良く動かすための
手法として注目されてるわけで
更に次の世代というと、量子コンピュータってことになるけど
今の実用化している量子コンピュータは機械学習に最適化されてるんで
つまり機械学習専用言語ってことになるのかな
0555デフォルトの名無しさん
垢版 |
2017/08/01(火) 15:56:17.80ID:HS7kzK9m
機械学習のハードが実現してなくても、ソフトで実現すれば数世代先取りできるだろ
現にソフトで機械学習やってるし
ソフトでやるのに飽きた頃にハードが出てくる
0561デフォルトの名無しさん
垢版 |
2017/08/03(木) 19:54:19.27ID:eWbe8h/f
>>559
Googleは君の興味関心を学習して君の見たい世界を見せているということを念頭に置いておいたほうがいいよ
0562デフォルトの名無しさん
垢版 |
2017/08/03(木) 20:14:27.98ID:JgW7vvvx
>>560
東大辺りの奴らで、機械学習をわざわざOCamlで書いてる輩が増えているらしい 。ライブラリも整備されてきたってよ
>>561
知ってる。ちなみにOCamlの情報はGoogleじゃなくてリアルの交友経由の情報
0564デフォルトの名無しさん
垢版 |
2017/08/03(木) 21:24:53.35ID:JgW7vvvx
まああくまで微妙にアツイだからな
ScalaとかHaskellもあったかな?
他はもうC++FortranPythonMatlabMathematicaしか知らんなあ
ケムインフォマティックスなんかはHaskell Scalaはやってる人いるけど Ocamlは聞かないし、やっぱりHaskell Scalaのが上かな?
0565デフォルトの名無しさん
垢版 |
2017/08/03(木) 21:35:28.91ID:VGeKeN5L
haskell とか scala とかってもはや学習した時間を無駄だと思いたくない人たちが
無理やり盛り上げてるようにしか思えないんだが。
0566デフォルトの名無しさん
垢版 |
2017/08/03(木) 21:36:52.08ID:8l5FpDvx
OCamlはマルチコア対応になったらまた始めたい
Jocamlとか折角面白いのにシングルコアなんで魅力半減
0568デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:18:12.98ID:nBK54dRQ
HaskellもScalaも関数型言語の考え方だけ学んだら用済みで、
取り入れるだけ取り入れたJava8や、Kotlinが正義
このスレでは叩かれたが、今となっては俺の言った通りになったじゃないか
0569デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:21:48.14ID:WxFDmNeE
正直kotlinが優勢だよね。感覚的には
golangは早めに安定したから今はやってるけど、
また状況は変わりそう。
rustはメモリオーナーシップモデルをswiftにパクられたらいらない子になりそう。
0570デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:25:27.52ID:N0DDjuI1
>>565
たし蟹
Scalaはそこそこ良い言語だったけど
尖りすぎてKotlinにあっさり置いて枯れてしまった
0571デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:39:07.10ID:563u4f2I
kotlinはscalaの知識使えるし別に
webならplayあるscalaの方が有利だし使い分けじゃね
0572デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:08:37.77ID:nBK54dRQ
>>571
Playは絶賛失速中だろう
コミュニティは機能してないし勉強会もイベントもなく、QiitaやTwitterにももう何もない
Scalaで使ってた人はRailsやDjangoを使い始め、Javaやってる人はSpringに戻っていった
0575デフォルトの名無しさん
垢版 |
2017/08/04(金) 00:11:57.82ID:O3MamTZa
>>572
今さらRailsとかどんだけセンスないのおまえ(暗黒藁半紙)

型無し能無しセンスなしの糞ゴミ言語は全員死ね
マツボックリだかなんだか知らんヒゲ爺は
さっさとこのゴミ言語を潰せボケ
0580560
垢版 |
2017/08/04(金) 14:49:35.41ID:eMF9uhYU
>>562
レスと御教示ありがとう
機械学習のコードをOCamlでですか
0581デフォルトの名無しさん
垢版 |
2017/08/04(金) 23:25:50.79ID:vuZIQLpQ
むやみやたらと大量のソースコードを量産して、ディスクの肥やしにする最近の風潮になじめない。

元凶はJavaあたりか。

価値のあるコードってのは、定義が難しそうだけど、

たとえば実行可能コードとそのソースコードのボリューム比較を考えてみると、
ソースが理不尽にふくらんでいる気がする。

hello,worldに数十行ってのは本末転倒。

なんでもかんでもオブジェクト指向しなくても、昔も別に困ったわけじゃないんだから、OOが必然ではないはず。

どんどん全体を見渡せる、いわゆる、神の目を持つものが少なくなっている。

まあ、仕事を増やすって意味で業界に貢献してるんだろうけど、ばかばかしいほどにまで非効率になっている
気がするね。
0583デフォルトの名無しさん
垢版 |
2017/08/05(土) 00:35:23.13ID:yfDugfcM
どこの世界の話だ
ここ最近の風潮では、短いコードが正義だと関数型を採用しひたすら抽象化に邁進する流れじゃないのか
0585デフォルトの名無しさん
垢版 |
2017/08/05(土) 02:27:20.31ID:r+UIi6ic
少なくとも日本ではなさそうだな

ジャップランド土人は屁臭いペチプゥで
型無し能無しセンス無しの糞コードウンコモリモリ大将軍してる
基地害低脳ゴミカスしかおらんからな
0587デフォルトの名無しさん
垢版 |
2017/08/05(土) 12:37:44.56ID:ioSmFHmD
Ceylon は消えるだろうな。キラーアプリが出てくれば別だけど。
(Ruby がRailsで一発当てたみたいに、すごいソフトが出てくればの話だけど)
0588デフォルトの名無しさん
垢版 |
2017/08/05(土) 12:38:46.91ID:ioSmFHmD
最近のKotolin 推しって何なの?
一時期Scala を押していた人たちがKotolin に移っているのかな?
0589デフォルトの名無しさん
垢版 |
2017/08/05(土) 12:56:21.44ID:r+UIi6ic
Androidもしらないサーバーサイドお爺ちゃん
組み込み曾お爺ちゃんの後を継ぐのは君だ
0590デフォルトの名無しさん
垢版 |
2017/08/05(土) 13:04:32.77ID:wQFjSmwa
きっかけはAndroidの件だけど、Kotlinを話題にしてるのはサーバーサイドの連中が中心だろう
Android開発なんて金にならない三流分野で、プログラミングのメインストリームを変えるような影響力なんて無いよ
0591デフォルトの名無しさん
垢版 |
2017/08/05(土) 13:16:01.72ID:POjfJmBG
今はなんとなくSwiftやTypeScriptのような言語が流行っている雰囲気があるから。
Java/Android界隈の人も var 変数 : 型 って書きたいんだろう。
0592デフォルトの名無しさん
垢版 |
2017/08/05(土) 15:02:06.08ID:j/cNGuAY
>>590
プログラミングのメインストリーム変えるような連中は、Android開発だろうとサーバサイドだろうとなんでもできるフルスタックが多いんじゃない?
0593デフォルトの名無しさん
垢版 |
2017/08/05(土) 15:05:18.69ID:RDrQu3eT
var 変数 で型推論してくれるのが前提の書き方のはずで
関数型言語だと「型注釈は(コンパイラが失敗するまで)書くな」だけど
: 型 つけないとコンパイラに怒られまくるなら最初から書いとくのも仕方ないね
0594デフォルトの名無しさん
垢版 |
2017/08/05(土) 15:37:15.82ID:wQFjSmwa
>>592
フルスタックな人ならクライアントに置くコードは最小限にするはずだから、
Androidアプリを何で書くかなんて深く議論するに値しない些細な問題だよ
0595デフォルトの名無しさん
垢版 |
2017/08/05(土) 15:51:07.66ID:5/nXCXeI
>>593
>関数型言語だと「型注釈は(コンパイラが失敗するまで)書くな」だけど
誰がそんなデマを言いふらしてるんだ?
0599デフォルトの名無しさん
垢版 |
2017/08/05(土) 19:21:58.27ID:j/cNGuAY
まぁ書かないのが良いとはされてるが、プロダクションコードはコード規約とかで、全てに型注釈入れろとしてるとこが多いね
0606デフォルトの名無しさん
垢版 |
2017/08/06(日) 03:34:23.31ID:0wpHTVIH
OCamlとか死んだ老害言語の話はしてないから
耄碌お爺ちゃんはあっち行ってて
0609デフォルトの名無しさん
垢版 |
2017/08/06(日) 04:54:54.04ID:X6yw5Nga
もしかして式一つずつに型注釈入れるとでも思ってるのかね
そんなのJavaですらやらんよ?

HaskellやScalaは少なくとも各モジュールのトップレベルの関数には型注釈つけるし、つけないと効率悪くなる
コンパイル遅くなりやすいし、推論に頼りすぎるとエラー時に問題箇所が曖昧になるから
0610デフォルトの名無しさん
垢版 |
2017/08/06(日) 07:49:45.80ID:K4D4wFtM
書いても書かなくてもよいというのが客観的事実だから
理系なら話はそれで終わり
それ以上踏み込むのは文系の仕事
0614デフォルトの名無しさん
垢版 |
2017/08/06(日) 11:40:40.31ID:+mclrVGG
>>613
よく知らないけど金融で使ってる人がいるらしいのと、最近機械学習で使ってる輩がいるらしい
0618デフォルトの名無しさん
垢版 |
2017/08/06(日) 14:51:53.14ID:9I48IW8u
ocaml, haskell の比較

ttp://d.hatena.ne.jp/camlspotter/20101212/1292165692

まあ極論抜きにして普通に考えればこういうことだろうなという印象。
0619デフォルトの名無しさん
垢版 |
2017/08/06(日) 15:00:38.52ID:X6yw5Nga
>>618
この人は良く分かってるなあ
純粋言いながらunsafePerformIO使うって件はまさにその通り
結局このIO書くときの面倒さがあるから、ScalaやOCamlのが使いやすい印象になってしまう
0620デフォルトの名無しさん
垢版 |
2017/08/06(日) 16:21:58.97ID:HqZ4NE4V
割り切れば楽なのにと思ったりもするw

純粋とは副作用有りと無しを分けて書くことで
try-catchで正常処理とエラー処理を分けて書くようなものだ
0621デフォルトの名無しさん
垢版 |
2017/08/07(月) 11:39:10.26ID:tDzZ+7xU
>>620
ちょっと脇道にそれるけど
try-catchって言うほど正常処理とエラー処理をきれいに分けられる?
goのようにその構文を捨ててる言語があるとこも考えると
いうほど価値あるのかなって思う。

あと関数型だとEither型とかもあるよね。
0622デフォルトの名無しさん
垢版 |
2017/08/07(月) 12:10:20.41ID:r7C/NYo5
>>621
返り値が一つしかない言語では有能機能だった。多値返却が当たり前になりつつある今はもう……
0623デフォルトの名無しさん
垢版 |
2017/08/07(月) 12:28:03.34ID:tDzZ+7xU
>>622
まぁ。それでもリストなりタプルで返せば一緒だけどね。
前の会社の上司がphpの関数の返却値を必ず配列で返してたの思い出した。
言語としての基本方針がそうなっているかどうかだよなー。
結局誰かがそういう実装にしてもメンテする過程で混在しちゃったら地獄と化す
0624デフォルトの名無しさん
垢版 |
2017/08/07(月) 12:37:33.59ID:tDzZ+7xU
elixirの言語仕様の中に、結構何これかっこいいって仕様がたくさんあった気がする。

例えばパイプ演算子とか、
バイト配列に対するパターンマッチとか。
0625デフォルトの名無しさん
垢版 |
2017/08/07(月) 14:18:21.77ID:JP8gCgB5
OCamlでは常備薬だったよ>パイプ演算子
haskellの$や.より読みやすくて好きなんだけど、関数型も取り入れててオブジェクト指向もサポートしている言語だと、
メソッドチェーンでええやん勢がいるのが難点
自由度はパイプの方が高い気がするんだがな
0629デフォルトの名無しさん
垢版 |
2017/08/07(月) 20:45:36.62ID:n9zFQLuH
>>628
すべての言語はすべからくパクりパクられの関係であるといえる。
一番言語を上手く作れている会社だと思うけど >MS
と言うか開発環境セットでいい感じ。
vscodeの完成度は高い。TypeScript大好き。
ただTypeScriptはあくまでESの型拡張に限定してるからES側に機能追加がないと
言語として成長できないという問題はある。

ドッチかというとFacebookが言語開発イマイチ感
Hackとかflowとか
0630デフォルトの名無しさん
垢版 |
2017/08/07(月) 20:52:47.52ID:E9IdpB60
>>629
BASICっぽくないのにVisualBASICとか名前をパクってるってこと
他の言語は移行者を配慮してだが、MSは騙す努力ばかりに見える
開発環境とセットというのがまたダメだ
プログラマによる変革が生まれにくい
単なる作業者ならいいが
0631デフォルトの名無しさん
垢版 |
2017/08/07(月) 21:02:50.52ID:n9zFQLuH
>>630
俺もちょい前まではMS気に食わなかったし
vscodeが最初登場したときは、なにこれatomパクって車輪の再発明?
みたいな感じだったが使ってみてハマった。
別に開発環境で囲い込もうってわけでもないと思う。

一緒にlangage server protoolというのも定義して公開した。
IDEと言語サーバ間のプロトコルを共通化し対応するEditorならなんでも使えるようにする。

gccがサポートしてるってニュース見たよこないだ。
ということで最近のMSはオープンソースとの関係がよい。気がする。
0632デフォルトの名無しさん
垢版 |
2017/08/07(月) 21:36:59.12ID:NP3377Zu
>>629
FBだけじゃなくてGoogleもイマイチ
DartやGo
0635デフォルトの名無しさん
垢版 |
2017/08/07(月) 22:03:25.57ID:JP8gCgB5
Electronベースのエディタとしては後発なのに他を追い抜いたのが凄いわ>vscode
vscodeはatomやbracketと同じElectronベースなのにどうしてあんなに軽いのかね
0636デフォルトの名無しさん
垢版 |
2017/08/07(月) 22:19:19.22ID:NP3377Zu
>>635
MSは長い間VS作ってるしエディタとかIDEのノウハウが凄いのでは
0637デフォルトの名無しさん
垢版 |
2017/08/07(月) 22:34:23.14ID:60+6AuiC
構造化BASICの正統進化なんだけど
ついでに8bit機にのってたようなのは当時既にストリートBASICって言われてた
(漏れもwikipediaで知ったんだけどさw)
■ このスレッドは過去ログ倉庫に格納されています