X



次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0002垢版2017/04/20(木) 07:32:05.38ID:AyFGgpwk
0003デフォルトの名無しさん垢版2017/04/20(木) 08:19:51.38ID:zhxiAG0o
TypeScriptも次世代言語に入れてくれ。

https://trends.google.co.jp/trends/explore?q=Golang,Typescript,Kotlin
Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017
http://www.publickey1.jp/blog/17/googletypescriptng-conf_2017.html
TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー
http://www.publickey1.jp/blog/17/typescriptdartgoogle.html
0004デフォルトの名無しさん垢版2017/04/20(木) 08:44:47.83ID:jeWo4Dft
208 デフォルトの名無しさん[sage] 2017/04/19(水) 12:20:37.70 ID:rIlDsUIc

継承もカプセル化もオブジェクト指向には必要ない
クラスを作る、つまり型を定義する事こそがオブジェクト指向

265 デフォルトの名無しさん[sage] 2017/04/19(水) 23:10:42.57 ID:2dTlCsss

>>208
代数的データ型で型を定義できるHaskellはオブジェクト志向言語だった……?

266 デフォルトの名無しさん[sage] 2017/04/19(水) 23:12:01.85 ID:qOdNs+TP

>>265
代数的データ型とはなんぞや?

269 デフォルトの名無しさん[sage] 2017/04/19(水) 23:19:37.80 ID:qOdNs+TP

type c = a or b
みたいな?

270 デフォルトの名無しさん[sage] 2017/04/19(水) 23:20:37.20 ID:qOdNs+TP

これもオブジェクト指向と言ってもいいでしょう!


こんなん草生える
0005デフォルトの名無しさん垢版2017/04/20(木) 12:21:47.82ID:yNBy9eOM
TypeScriptはJavaScriptのクソな点をまともに直しただけで
次世代というものを感じないのだがなんかあるの?
0006デフォルトの名無しさん垢版2017/04/20(木) 19:50:17.61ID:VIiPRj9u
TypeScriptは次世代を担うってよりも
旧世代の資産をなんとか次世代まで持ちこたえさせるつなぎって感じ
0008デフォルトの名無しさん垢版2017/04/21(金) 13:54:11.80ID:cmecYv9F
>>5
とはいえ次世代は次世代でしょ
0009垢版2017/04/21(金) 16:45:28.52ID:KFYgHFHL
TypeScriptは手段が目的化してきてるからな。
構文は嫌いじゃないけど。
0011デフォルトの名無しさん垢版2017/04/21(金) 23:42:05.24ID:1EW2mi9U
うん
Haskell学ぶなんて時間の無駄だってことに気づいたの
0012デフォルトの名無しさん垢版2017/04/21(金) 23:59:18.37ID:9S9WRWBb
>>10
前スレでHaskellは次世代言語ではなく遅延評価に問題があるとされた。
でもHaskellの考え方を学んで他の言語で活かすならありだと思う。
0013デフォルトの名無しさん垢版2017/04/22(土) 00:57:02.64ID:Kjd2lTg6
問題とされたのは遅延することではなく何秒遅れるか予測不可能なことだと思う
タイミングを何秒後と指定して評価するのは問題ないとされる
現にそういう問題が出題されたしね
0014デフォルトの名無しさん垢版2017/04/22(土) 02:36:22.27ID:gXJYMt+Q
いやHaskellを声高にプッシュしていた奴が例題のコードも出さずに逃亡して、Haskellそんなに詳しくない人が替わりに書くという事態になったからだよ
Haskellに詳しい人もHaskellについて議論できる人もいなかったんで対象として取り上げるには不適切になった(このスレでは)
Haskell上げの意見は説得力が無いしHaskell下げの意見はただのレッテル貼りにしかならない
0017デフォルトの名無しさん垢版2017/04/22(土) 09:34:02.47ID:Kjd2lTg6
>>14
逃亡というレッテル貼りをおそれて多くの人が努力したんだな
レッテル貼りには人を努力させる効果があった
レッテル貼りは悪という意見にはあまり説得力がない
この場合、逃亡は悪ではかったと考える方が説得力がある
0019デフォルトの名無しさん垢版2017/04/22(土) 10:24:05.10ID:69jc9pki
糞問題、糞設計、糞実装だの言うわりにどれ一つ代替案は出てこなかった(つまりパラダイムは変えない)
加えて、正直な感想として現行言語の方が次世代と称される言語よりずっとすっきり書けていた
という現状をふまえると次世代の「売り」って何なのだろう

クラスや付随する言語機能を捨ててシンプルさを求めたこと(継承のデメリットの排除と学習コストの軽減)と
それで生じる表現力・抽象度の低下を型チェックや型推論機構の充実で補ってバランスをとったところ?
0020デフォルトの名無しさん垢版2017/04/22(土) 10:33:00.05ID:d4ODGBV8
HaskellとDが最底辺であることに変わりはない。
実用性皆無なプログラム言語は存在価値無し。
0021デフォルトの名無しさん垢版2017/04/22(土) 10:40:11.00ID:Kjd2lTg6
訂正
逃亡は悪ではかった→逃亡は悪ではなかった

>>18
レッテル貼りは悪とは限らないし、そもそも悪と戦うことが目的ではない
戦いが目的でないなら逃亡は合理的だ
0022デフォルトの名無しさん垢版2017/04/22(土) 11:00:51.13ID:69jc9pki
>>21
そこじゃない!www>訂正

逃亡というレッテル張りを恐れて他の善意のファンが努力
→レッテル張り自体は悪だが結果はそう悪いものでもなかった

という流れからどうして逃亡自体が悪でないという帰結が導かれるのか?
ひたすら机上の空論を展開し、他を貶め、蔑み、悪態をつくだけついて
じゃあ動くコードやよりよい設計を出せというと逃げるのはどうみても身勝手だろう
0023デフォルトの名無しさん垢版2017/04/22(土) 11:14:59.00ID:Kjd2lTg6
悪口を言われたから賠償してほしいって?
そんな出題者の意図があるとは知らなかった
0024デフォルトの名無しさん垢版2017/04/22(土) 11:36:19.62ID:69jc9pki
>>23
この場合、出題者は関係ないだろう
「他を」は「他言語(あるいはその使い手、ファン、コミュニティ)を」だ
0025デフォルトの名無しさん垢版2017/04/22(土) 11:53:17.53ID:69jc9pki
なんかいちいち噛み合わないな
もしかしてHaskell儲がまだいるのか?
なら逃亡行為を好意的に解釈したがるのも頷ける
0026デフォルトの名無しさん垢版2017/04/22(土) 12:24:45.77ID:VCLbyEjA
あんまり荒らしたくはないが、できるかできないかで言えばできたんだから問題ないだろ
それにType Classのコード理解できるやつ何人いた?
単なる継承だと勘違いしてるっぽい奴はいたが
0028デフォルトの名無しさん垢版2017/04/22(土) 13:11:14.86ID:69jc9pki
>>27
旧世代言語なら実質50行程度せいぜい10分で書けるコードにいくら請求するつもりだよww

それに単価ならカンブリア言語のSmalltalkerの方がよほど高いわ
奴ら呼べばきっと頼まれなくてもホイホイ書くぞ
Rust使いに次いで自分言語大好きだからな
https://developers.srad.jp/story/17/03/31/0448232/
0029デフォルトの名無しさん垢版2017/04/22(土) 13:55:32.78ID:/fxOrStV
どうせお前ら、フレームワークに用意されたメソッドを
サンプル通りに呼び出すだけのドカタだろ?
次世代言語なんて要らんだろ
0031デフォルトの名無しさん垢版2017/04/22(土) 19:55:27.63ID:2QNaIclJ
次世代言語ならおっさんにマウントされずに
仕事できると思ってるバカが多いってだけなんだよ結局。
0033デフォルトの名無しさん垢版2017/04/23(日) 14:04:42.00ID:NE9/Voyw
個人的にはスレタイからRustも抜いてほしい。まともに物が作れないのにクソモジラのステマだけで話題になってる、言語未満のクソの塊。
0035デフォルトの名無しさん垢版2017/04/23(日) 15:35:02.72ID:zop66JA+
よく分からんよね
いつか知らないけど、次に主流になる言語が何かを決めたいんだろう
0038デフォルトの名無しさん垢版2017/04/23(日) 16:10:21.34ID:svTWBXfu
多次元配列弱いC++はFortran以下
まず配列アクセス演算子が引数一つしか取れない時点で終わってる
0039デフォルトの名無しさん垢版2017/04/23(日) 16:16:54.85ID:dVBaHUf3
そりゃ、関数で十分だからな。テンプレートとオーバーロードと参照があれば
配列アクセス演算子なんて最初から必要なかった。
0040デフォルトの名無しさん垢版2017/04/23(日) 16:20:47.89ID:svTWBXfu
まあ確かにEigenなんかは関数呼び出し演算子で代用してるな
そのEigenでさえ3次元以上には対応してないっていうのがC++の自由度の低さを物語ってるが
0043デフォルトの名無しさん垢版2017/04/23(日) 17:38:01.40ID:svTWBXfu
>>41
深層学習とか統計処理とかには必須だぞ
量子化学にもあれば便利だな
データ整理一般にも使うしな
0044デフォルトの名無しさん垢版2017/04/23(日) 19:47:31.29ID:zjYzndui
いや、そんな要素一つ一つに対して別個の処理をするようなコードは
あんまいらんだろ。
本当に必要な場合は結局、配列レベルで高速化が望まれる場合だけだし。
誰かが用意した python のライブラリでも使ってなさいってこった。
カスが個人的に作ったものよりもよっぽど速くて正確なものがあるんだから。
0046デフォルトの名無しさん垢版2017/04/23(日) 20:19:34.87ID:PCQQgnKm
C++er「もう全部C++でいい」
配列マン「多次元配列需要あるのにC++にはないやん」
C++er「そんなもんあんまいらんだろ。Pythonでも使ってなさいカス」

C++erってやっぱダブルスタンダードのカスだわ
0047デフォルトの名無しさん垢版2017/04/23(日) 20:36:30.78ID:zjYzndui
用途によって使い分けるという当たり前の発送のないバカと一緒にされたくないんだけど。。
0048デフォルトの名無しさん垢版2017/04/23(日) 21:11:17.67ID:OBcWFFpc
皮肉なのにマジで取られても
0050デフォルトの名無しさん垢版2017/04/23(日) 21:50:20.49ID:bkkcl6Xn
多次元配列とはいえ結局は仮想メモリ上に一次元に乗るデータになるんだから、多次元→一次元マッピングを最初から最適にデータ設計出来てればいらんだろそんなもん。
そこを処理系任せにしてメモリ上のデータ構造チューニングできないようなものが次世代言語なのか?
0052デフォルトの名無しさん垢版2017/04/23(日) 22:10:15.66ID:bkkcl6Xn
最先端のアルゴリズムで実用ライブラリを書く言語としてのC++はこの先100年安泰で、
ラッパ用スクリプトのPythonとはそもそも言語としての立ち位置が違うって話。
0053デフォルトの名無しさん垢版2017/04/23(日) 22:22:19.93ID:mKAZq6VZ
100年後の言語ってどうなってんだろな
頭にチンポ型の伝送デバイスハメるだけでプログラミングできたりする?
0054デフォルトの名無しさん垢版2017/04/23(日) 22:24:04.51ID:NBHRohTD
そりゃもう感応入力で思考の速度でプログラミングできてるだろう
言語はなくなってるかもしれん
0055デフォルトの名無しさん垢版2017/04/23(日) 23:40:41.71ID:OBcWFFpc
C++を今の地位から引きずり下ろすためにもRustには頑張って欲しいものだ
0056デフォルトの名無しさん垢版2017/04/24(月) 00:14:14.60ID:Hq5/eqGq
言語がなくなる
科学がなくなる
数学がなくなる
こういう無数の可能性から一個選んで的中させるのはほぼ不可能だよな
0058デフォルトの名無しさん垢版2017/04/24(月) 00:26:31.35ID:6h5JoTUe
>>36
早くネットワーク系のライブラリを標準で入れてくれぃ
0059デフォルトの名無しさん垢版2017/04/24(月) 00:33:57.43ID:6NGlh03T
ID:UJAzDyB2「C++は実用的な言語である。多次元配列がなくても実用的なプログラムでは困らない」
ID:bkkcl6Xn「私はID:UJAzDyB2である。C++は実用ライブラリを書くための言語だ」

なにこれ
0060デフォルトの名無しさん垢版2017/04/24(月) 00:40:56.94ID:zwhieng4
>>50
多次元配列でチューニングすべきところなんかあるか?せいぜい格納方向が2通りあるくらいだろ。チューニング出来るものは一切搭載してないFortranにすらデフォルトで搭載されてる機能だぜ?
それにそれ言っちゃあSTLなんてどうなるんだよ? まさかSTLは使うけど多次元配列は自分で作るなんて言わないよなあ?
0061デフォルトの名無しさん垢版2017/04/24(月) 00:56:56.87ID:FOMNUfbf
>>60
ガチ用途でSTL使わねえだろバカも休み休み言えよ……
STL使うC++なんてちょっと速いPythonやらRubyじゃねえか。
0063デフォルトの名無しさん垢版2017/04/24(月) 01:04:22.49ID:FOMNUfbf
>>62
そりゃ自分の書くものに一番合うように書くから、あらゆるベンチを通すように丸く作られたSTLに全分野で勝てるわけないだろ。
0064デフォルトの名無しさん垢版2017/04/24(月) 01:10:06.24ID:zwhieng4
>>63
この用途ならこれが一番速くて信頼性が高くて拡張性も優れていて、自分で書いてSTLを使わないコストという面でも釣り合いが取れるっていうのがあるってことだよな?
用途から自分で設定していいから書いてみろよ。
0065デフォルトの名無しさん垢版2017/04/24(月) 01:16:51.68ID:lffXTkps
いや、そもそも多次元配列の話してたんだし、numpyを超えるスピード、信頼性の多次元配列を書いてもらうべきだな
0067デフォルトの名無しさん垢版2017/04/24(月) 01:22:28.66ID:zwhieng4
ああ、そもそもSTLで出来ないことを書いて「勝った」っていうのはなしだぞ。それこそ疎行列とかな
0068デフォルトの名無しさん垢版2017/04/24(月) 01:30:31.10ID:p282pyvh
ハッシュマップ
0069デフォルトの名無しさん垢版2017/04/24(月) 01:36:23.44ID:zwhieng4
ってか割と真面目にC++上で動く多次元配列欲しいんだけど
1〜5次元くらいまで同じインターフェースで動く奴作ろうとして、思いの外面倒だったから辞めてFortranに乗り換えたことあるんだよな
0071デフォルトの名無しさん垢版2017/04/24(月) 20:17:17.36ID:zyXx2ugF
>>65
だよねぇ、多次元配列の操作で Python に勝るのは Fortran くらいしか思いつかないや
純粋手続き型言語の始祖である Fortran と、同じく純粋手続き型スクリプト言語である
Python、誰にも否定できない当然の結果だよね

もう、このスレでは次世代 Fortran は Python で決まり!!ってこと結論が出たね
0075デフォルトの名無しさん垢版2017/04/25(火) 00:38:05.23ID:O6VBfE9R
>>74
Qiitaで検索するかAdvent Calendarsを読め。
普及が始まっている次世代言語は
たいていAdvent Calendars 2016がある。
0076デフォルトの名無しさん垢版2017/04/25(火) 02:23:12.66ID:wELv0O7d
言語オタクが重視する言語間の細かいシンタックスの差なんてどうでも良くて、
次世代言語に必要だったのは高速で便利な多次元配列だったってオチか
0080デフォルトの名無しさん垢版2017/04/25(火) 11:10:54.53ID:x9Sc69FW
>>76
多次元配列が必要な人間は一部だけど文法が全員に影響があるから、多数決で文法優先
オタクではなく多数決です
0081デフォルトの名無しさん垢版2017/04/25(火) 11:51:27.86ID:DZfkzF9H
RubyとPythonとか観てると文法より多次元配列やライブラリのが重要だと実感するが。
C#やJavaScriptにしても、簡潔に書けるとかじゃなくて何を作れる(サポートするプラットフォームの多さ)で選ばれてるし。
0084垢版2017/04/25(火) 12:49:25.85ID:m9LocPpZ
多次元配列ってジャグじゃないものの事だよな?
マクロ書いちゃえばいいんでないの?
アクセス演算子と大仰な言い方するが、要は単に掛け算なんだし。アライメントも揃えられるしさ。

適当な並べ方してるとメモリアクセスで悲しい思いをする気がする。特にどーんとクラスタに投げるときとか。
Fortranでもメモリマップ的には後ろの列からの順番になるから思い付きで並べると重いよ。
0085垢版2017/04/25(火) 12:51:38.43ID:m9LocPpZ
>>83
テンソルに係数を掛けたり、テンソルとベクトルを掛けたりすると、欲しくなるのは確か。
unionって思ってたより随分便利だなーって思うやつ。
0086デフォルトの名無しさん垢版2017/04/25(火) 12:56:48.67ID:DZfkzF9H
>>82
Rubyが流行りそうになった時、RoRの登場で一躍有名になった。
Pythonにはそれに相当するものが無かった。
後に同じようなの出来たけど、Rubyを引き離すほどじゃ無かった。
Ruby1.9の時、互換性切り捨てでRuby自滅が決定打だった。
結果としてディープラーニング向けライブラリの登場で揺るぎない地位を得た。

文法はRuby1.9以降のが好きだし理に適ってる。
でも、世界的には終わった言語。
0087垢版2017/04/25(火) 13:06:52.92ID:m9LocPpZ
Rubyは理想を追いかけ過ぎ。
自然言語で言えば、エッセイストは言語学者じゃないのに形態素に基づくなんとかかんとか、こういうしきたり、こういうルールってのを並べられてもって感じで、
しかも、言語学者側はそれを素晴らしいと絶賛してると言う狂った状態に近い。

英語なんかあんな破綻した闇仕様に溢れた言語
(例えば、Shipの口語の代名詞に失われた性を補完してsheを使う)なのに、
あんなに全世界で使われてるんだから。

言語なんて歯ブラシなんや、ってPHPの方が随分スタンスとして好き。
0088デフォルトの名無しさん垢版2017/04/25(火) 13:39:27.32ID:9lYWlQQl
次世代の定義と合わなくね?って書き込みになんでそんなレスがつくんだろ
0089デフォルトの名無しさん垢版2017/04/25(火) 13:59:47.20ID:DZfkzF9H
かつて次世代だった言語の栄枯盛衰から、次世代言語に何が必要かが分かると思って投下した。
0090デフォルトの名無しさん垢版2017/04/25(火) 14:18:46.85ID:x9Sc69FW
文法は繁栄の原因にはならないけど互換性云々で衰退の原因になるんだ
0091垢版2017/04/25(火) 14:31:36.92ID:m9LocPpZ
>>88
あんまり原理主義的な事話してると怒られるから。。
0092デフォルトの名無しさん垢版2017/04/25(火) 14:54:40.56ID:3KXt8ND/
文法は繁栄の原因にもなり得たよ。
Rubyも注目された当初は簡単でなんでも出来る言語としてsmalltalk作ったけど、真のsmalltalkはRubyだったとかアラン・ケイも絶賛してたし、RoRもRubyの文法に惚れて作られた。
その後の保守戦略家で差が付いた。
0094デフォルトの名無しさん垢版2017/04/25(火) 18:40:55.97ID:x9Sc69FW
戦略ってなんだろう
どうやって決めたかは教えないけど、成功とか失敗とか成果だけ教えてやるよって感じ
成果だけが重要と思っているからなのか
0095デフォルトの名無しさん垢版2017/04/25(火) 18:52:57.84ID:e9WI/SQ5
>>86
>Ruby1.9の時、互換性切り捨てでRuby自滅が決定打だった。

互換性切り捨てってのは、これのこと?

http://echo.2ch.net/test/read.cgi/tech/1413113999/128

うーみゅ、確かに Hello world レベルのお題ですら動かなくなるようでは、
互換性切り捨てと批判されるのも仕方ないよね
0096デフォルトの名無しさん垢版2017/04/25(火) 19:19:36.86ID:gy+i7xO9
>>94
戦略って言っても、私が結果だけ見てそう判定しただけだがね。
結局、言語の開発管理側が業務で使われているって事実を重要と見たかどうかってだけ。
どっちも互換性切り捨ててるんだけど、Pythonはまだ旧バージョン系列サポート切ってないし、長々とアナウンスしてる。
0097デフォルトの名無しさん垢版2017/04/25(火) 19:40:02.70ID:e9WI/SQ5
訂正してあげるね

X:Pythonはまだ旧バージョン系列サポート切ってないし
O:Pythonはまだ旧バージョン系列サポート切れないし

Pythonはまだ新旧バージョンでの後方互換性切り捨てが災いして、
未だに旧バージョン系列から新バージョン系列へ移行できていないだけの話
だから旧バージョン系列サポートを切りたくても切れないってのが現実

http://blog-imgs-82.fc2.com/n/o/r/noriaki3/201508310726369c2.jpg
0099デフォルトの名無しさん垢版2017/04/25(火) 20:09:39.00ID:e9WI/SQ5
こうなった
http://echo.2ch.net/test/read.cgi/tech/1486026729/900

ところで、Rubyの互換性切り捨てとは具体的には何を指しているのかな?
少なくとも Hello world レベルであれば、RoR登場以前の 1.6 から最新の 2.2 に至るまで、
Ruby であれば Syntax Error にならず正常動作するから互換性は維持されているけどね
0100 ◆QZaw55cn4c 垢版2017/04/25(火) 20:17:10.34ID:Vqnsayjn
>>87
うーん,LL(1)に徹している pascal が古今東西素晴らしいとおもっているんだが‥ruby ってそんなにすごいの?
0103 ◆QZaw55cn4c 垢版2017/04/25(火) 21:06:43.69ID:Vqnsayjn
>>102
>自然言語で言えば、エッセイストは言語学者じゃないのに形態素に基づくなんとかかんとか、こういうしきたり、こういうルールってのを並べられてもって感じで、
だろうね
0105デフォルトの名無しさん垢版2017/04/25(火) 22:43:32.29ID:lEn+EjQK
python3 とか好きじゃないんだよな。。
1/ 2 = 0.5
とか型が弱くなる方向に修正したんだか。。
明示的に書かせるのが python の良さなのにそれと逆行しようとしてるのが好きになれん。
0106垢版2017/04/25(火) 23:45:33.40ID:RguWTiRy
>>100
pascalは素晴らしいと思うよ。俺も。
いつの間にか呼ばれてるto_intみたいな馬鹿な仕様もないし。
あれは理想ではなくて現実。
>>101
追いかけてるだろー。
「Objectには不要なものが多すぎる、好ましくない。でも、互換性失いたくない。
 そうだ、Objectの親にBasicObjectを作って白紙のオブジェクトとしよう」
なんてまともな神経してたらちょっと思いついたけど敢えて忘れるレベルの実装をマジでやった上に、
一番やめてほしい==の実装をBasicObjectに持ってったんだぞ。
気が狂ってる。
わざわざtrueClassやらnilClass作ってたのが原理主義っぽくて良かったのに。
n = true if false
で、nがnilになるのもおかしい。
n = n+1でnilに+はねえよってメッセージの原因だけど、こればっかりは異常。
0108垢版2017/04/25(火) 23:50:40.24ID:RguWTiRy
メッセージパッシングで大枠作ったのにな

そもそも、クラスを破壊せずに機能追加せよ、って矛盾した設問がおかしい事にまだ気づかんのかなぁ。
0109デフォルトの名無しさん垢版2017/04/26(水) 00:00:43.82ID:T5a4wmc6
>>100
俺もpascalはシンプルで好きな方。
だけどブロックは波括弧が好きなんだよなぁ。
0110デフォルトの名無しさん垢版2017/04/26(水) 00:34:00.42ID:Boe/ixbX
>>99
うろ覚えだが、文字列から文字を取り出すのが思い切り変わった。
これは阿鼻叫喚になるなって印象はあった。
0112デフォルトの名無しさん垢版2017/04/26(水) 03:53:03.15ID:2ISuU/qN
スレタイからElixir抜いた奴俺の許可とったの?
0113101垢版2017/04/26(水) 04:48:11.60ID:gEnKLRTK
>>106
Objectクラスの親クラスにProtoObjectクラスがあるのも、
==をProtoObjectで実装するのも、
TrueクラスやUndefinedObjectクラスがあるのも、
false ifTrue: [true]がnilになるのも、
みんなSmalltalkでは理想どころじゃない、
ProtoObjectは90年代のOO普及期からずっと当たり前のこと、
それ以外は80年代のOO黎明期からずっと当たり前のことだが、
どこがどう理想なのか、どこがどう次世代なのか、教えてくれよ。
0115デフォルトの名無しさん垢版2017/04/26(水) 07:22:08.94ID:xY5d2zmE
「うろ覚え」の誤り。「うろ覚え」は、はっきりと覚えていない様子を意味する語。空洞を意味する「うろ」が、文字や音の似た「うる」に置き換わって生じたといわれている。ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。

ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。
ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。
0118垢版2017/04/26(水) 08:27:05.94ID:aLqmc7M7
>>113
だから、理想に走りすぎで現実見えてないって言ってるの。その論調だとsmailltalkが自然で目指すべきだと聞こえるが?俺はそうは思わないけど。
泥の中の蓮的な理想感はあるが、実際にはそんな物が必要ならそれこそRubyなんか使ったら劣化コピーで気持ち悪いものをこねくり回して満足してる学者大先生と同じ。
エスペラント語を素晴らしいと言いはって、エスペラント語でエッセイ書くようなもんだ。書いてみりゃわかるが、無謀だよ。
正しくしか書けないし、元の発想が比喩で作られてるようなもんだから、比喩表現は比喩の比喩になってもう意味がわからない姿になる。
永遠に次世代になりたくて、実は永遠に次世代ではない。
0121デフォルトの名無しさん垢版2017/04/26(水) 10:59:41.81ID:pV6k193k
スクリプトは純粋仮想関数が無意味だからクラスの意味をこじつけるのが大変
Pythonのクラスは演算子を定義する機能のような印象
0122垢版2017/04/26(水) 12:47:25.64ID:aLqmc7M7
>>119
小論文の意味のエッセイなら割とそうだろうけど、それでも主観の表現方法を無理やり曲げられる時点でダメだろ。
グーグルをラ行五段活用する事を無理に実現するために他の名詞が巻き沿い食う感じ。
0123デフォルトの名無しさん垢版2017/04/26(水) 13:48:30.98ID:pV6k193k
経験則
表音文字に依存するな、記号に依存しろ
0124デフォルトの名無しさん垢版2017/04/26(水) 15:44:49.66ID:TQfkYYQc
(みんなあってもよくね?と思ってたはずなのに)
ずっとクラスベースを拒否し続けたJavaScriptも
ある意味プロトタイプベースの理想を追い続けてるような
0125垢版2017/04/26(水) 16:06:30.69ID:aLqmc7M7
>>123
まぁ、恐ろしいほどに無意識に使ってるスペースなんて記号も英語ベースだしな。
コアダンプが漢詩のように見える事もあるけど。

>>124
あれはあれで、リストをああいう形で実現した時点で割と言語としては完成してた。冗長だけど。
0126デフォルトの名無しさん垢版2017/04/26(水) 21:50:24.12ID:SZlYFMhx
>>98
>それが企業に好感持たれてる現実。

Hello world すら Syntax Error になってしまう(>>95)ほどの壊滅的な
後方互換性切り捨てを強行してなお旧バージョンのサポート打ち切りなんて、
常識的な企業倫理からはありえないだろ
そんな対応を指して「好感」という言葉は冷酷な皮肉でしかない

あるいは、過去に Hello world がバージョンアップで動かなくなったメジャー言語が存在するの?

print が文なのか関数なのかという言語とライブラリ設計における根源的な決定、
言い換えると入出力処理は構文で実現すべきなのか(すなわち文)、それとも
ライブラリで提供すべきなのか(すなわち関数または手続き)という言語設計の哲学、
そんな初歩的な判断すらできない人物によって行き当たりばったりに設計されたのが
Python だろ
0127デフォルトの名無しさん垢版2017/04/26(水) 22:30:36.25ID:SZlYFMhx
>>120
$ irb1.9
irb(main):001:0> "abc".each { |x| p x }
NoMethodError: undefined method `each' for "abc":String
from (irb):1
from /usr/bin/irb:12:in `<main>'

うん、確かに実行時エラーになった
では、ここで呪文を唱えてみよう

irb(main):002:0> class String; alias :each :each_char; end
=> nil
irb(main):003:0> "abc".each { |x| p x }
"a"
"b"
"c"
=> "abc"
irb(main):004:0>

あれ、おかしいなあ、Ruby 1.9 の String クラスなのに、Ruby 1.8 と同じく
配列と同じように扱えるようになったぞ、しかも元のコードは一切改変されていない
いったいどうなってるんだあ…
0128垢版2017/04/26(水) 23:16:03.93ID:WASTpqE2
メソッド生やしてしまえる事自体がオブジェクト指向でも何でもない気持ち悪さ。
0131デフォルトの名無しさん垢版2017/04/27(木) 00:39:07.48ID:NvHKpotz
Stringは定数ではなくグローバル変数のように改変される
全ての関数をクラスという箱に入れた結果全てが事実上のグローバル変数になった
0132デフォルトの名無しさん垢版2017/04/27(木) 00:55:55.98ID:jbk1ehAe
>>131
見方によってはそう(グローバル変数)なんだよね。
スコープは狭い方が良い。
正直オープクラスはイマイチと思うのだが、でもjavascript はそのおかげでpolyfillとかできるんだよな。
0133垢版2017/04/27(木) 01:20:41.99ID:S1ERYEjc
>>130
Smalltalkはレシーバだろ
0135デフォルトの名無しさん垢版2017/04/27(木) 07:23:11.77ID:1+VMbtmi
>>134
ビヤーネ・ストラウストラップらの抽象データ型のOOP(カプセル化、継承、多態性)と
アラン・ケイの遅延結合徹底のOOP(オブジェクトにメッセージを送る)は別物だって事をいいたいのかな
0136デフォルトの名無しさん垢版2017/04/27(木) 07:38:57.38ID:0Df9bF2U
Smalltalkがウンコ過ぎて世間からそっぽ向かれて死滅したんだから
後追いのRubyも死滅するのは歴史が証明している
0137垢版2017/04/27(木) 08:15:10.34ID:YQ2WW8c/
>>135
そう。パッシングの口でしかない。
0140デフォルトの名無しさん垢版2017/04/27(木) 08:58:08.10ID:/s/zy9NN
Smalltalkはうんこすぎて死滅したと2ちゃんでクダ巻いてるだけの爺さんを横目に、
今日もSmalltalkが世界の海上コンテナ輸送の30%を捌いているわけだが。
0142デフォルトの名無しさん垢版2017/04/27(木) 09:25:15.12ID:wBdpEusi
>>140
もしかしてOOCLのこと言ってんの?
とっくにそんなシェア無くなって、今年に入って買収の噂が出るくらい落ちぶれてるぞ
0147デフォルトの名無しさん垢版2017/04/27(木) 13:02:15.04ID:jfFmbm9g
>>146
なんでとても素晴らしいsmalltalkで再実装されなかったの?
0148デフォルトの名無しさん垢版2017/04/27(木) 13:17:16.51ID:+ggBtOYn
おそらく同じ言語で再実装するとeachをeach_charに変えたくなるから
そんなことするなら言語ごと変えた方が良い
0153デフォルトの名無しさん垢版2017/04/27(木) 22:14:26.81ID:McKGSVbG
もう風化してて蹴るものもないと思ったのに
0154デフォルトの名無しさん垢版2017/04/27(木) 22:36:43.95ID:+ggBtOYn
風化すればまた再発明される
過去に同じことがあったと口で言っても証拠が残ってなければ同じことが繰り返される
0155デフォルトの名無しさん垢版2017/04/27(木) 23:26:29.59ID:Yjb8fh0C
死んだ言語の死んだ理由ってのは新しい言語の糞機能アピールよりかは勉強にはなる。
0158垢版2017/04/28(金) 17:12:11.94ID:Yq+yDopp
>>157
いつでも同じクオリティじゃないか
0160垢版2017/04/28(金) 20:29:25.20ID:0gV62uUk
>>159
まぁ具体的に「パラグラフが長い」「言い回しがくどい」と言われたら、
なるほどと思うし、ちょっと気を付けられるからな。
読みにくい、ガイジか!とだけ言われたら、読みにくいだけならしっかり読めとしか言いたくなくなる。
0161デフォルトの名無しさん垢版2017/04/29(土) 02:55:48.56ID:R+WhfS42
シミュレーションをより簡略に作成するための新言語開発を。

「ロボットは東大に入れるか」成果報告会 in 2016(11/14)レポート
http://blog.livedoor.jp/dg_law/archives/52354118.html

これからはシミュレーションシステムの構築が簡略化されるので、来年のセンター物理は大きく得点が伸びるに違いない。

 スーパーコンピュータでの計算に必要となるプログラムはときに数十万行にも及び、作成やチューニングは大変困難です。
一方で、原理的にはシミュレーションしたい自然現象とその離散化法(注2)を指定すれば、プログラムは機械的に生成できます。
しかし、プログラミングはシミュレーションとコンピュータ双方に深い知識が必要となる非常に高度な作業であり、多数の計算機を
協調して動作させるスーパーコンピュータの性能を引き出す高度なプログラムを、自動かつ汎用的に生成することは不可能でした。
 そこで共同研究グループは、方程式がプログラムに変換されるまでの一連の段階に対応する数学的定義を作りました。
スーパーコンピュータが持つ階層のすべての段階において、自然が元来備えている「並列性」と「局所性」(注3)を保持する変換
を厳密に定めることで、新たなプログラミング言語「Formura」を開発しました。これによって、これまで不可能だったプログラミング
の機械化に成功しました。さらにFormuraは、同じアプリケーションに対して何万通りものプログラムを試し、最も速かったものを自動的に選択します。
 Formuraを開発したことで、規則格子シミュレーション(注4)分野においては、自然科学者が慣れ親しんだ方程式の記法を使ってシミュレーション
したい対象を記述することで、スーパーコンピュータの性能を引き出すための高度なプログラムが自動的に作成できるようになりました。
気象、地震、宇宙、生態ネットワークの研究など、規則格子シミュレーションを用いる分野の研究の加速が期待できます。
http://pr.fujitsu.com/jp/news/2016/12/2.html
0162垢版2017/04/29(土) 12:11:59.50ID:R/nsoadB
投機ベースは確かに分野限られるし、実用例と先端の研究者が解離してる典型だわなぁ。
「5%の不良率で100個発注したら当たり前のように105個納品されてくるようなどっかのおおざっぱな国の発想だ」
と、日本の会社だと反発されるやつ。
ナップサックとか問題持ち出して、モノによっては泥臭く計算せなあかんのやと言うのと、
次は百万台でやっても一つのタスクの不可分な時間以下にはならんのだよ、
を説明して説得して導入するようなものだから。

トポロジ解析と図面生成か何かで原始的なそれやった事ある。
0163デフォルトの名無しさん垢版2017/04/29(土) 13:21:11.09ID:rB0Fvmgg
>>161
多くの深層学習フレームワークはNN構造をPythonなどで記述すると
それをテンソルの計算グラフに変換してGPUで高速計算してくれる。
NN構造や規則格子をさらに簡略に記述したければJuliaがある。
Fomuraの20行のシミュレーション記述も既存の言語でできるはずだ。

つまりシミュレーションをより簡略に作成するために新言語は必要ない。
必要なのは用途毎のフレームワークだ。
0165デフォルトの名無しさん垢版2017/04/29(土) 19:09:01.68ID:0nTkChzC
言語の良さを理解して使い続けられる人と、ゴミ屑同然の脳みそですぐに忘れ去ってしまう人、何が違うんだろうなぁ
0167デフォルトの名無しさん垢版2017/04/30(日) 01:03:20.38ID:E30HxT2S
>>164
いろんなプログラム言語を開発しておいて、その上で『良いとこ取り』で新言語を開発する。
0170デフォルトの名無しさん垢版2017/04/30(日) 09:42:21.85ID:QitJ8eBZ
>>168
実際死んでね?言語としては。
言語として死んでるのをGoogle謹製の周辺ツールで無理やりカバーしてゾンビ化してる感じ。
ゾンビなので一周回って死ににくい。
0172デフォルトの名無しさん垢版2017/04/30(日) 12:02:29.80ID:kLDfBj4F
>>168 >>170
Goは文法が簡単で高性能という特徴がある。
おかげで文法は簡単だが低性能な言語から移行しやすい。
だから難しい言語が選ばれない所で活躍している。

Gopherの道を歩む – Node.jsからGo言語への移行
http://postd.cc/the-way-of-the-gopher/
Go言語の低レイテンシGC実現のための取り組み
http://postd.cc/gos-march-to-low-latency-gc/
0173デフォルトの名無しさん垢版2017/04/30(日) 15:36:43.63ID:4Q8qZxsi
Goって手続き型だろ?
Mainに集中して必要な機能呼び出すだけでいいんだから設計書なしで良さそう
0174デフォルトの名無しさん垢版2017/05/02(火) 06:00:14.79ID:IDWdkJdY
Mathematica 11.1 | 2017年4月(日本語版) 詳細 ≫
バージョン11.1では,機械学習,ニューラルネットワーク, 音声処理,ロバストな記述統計等の分野における
MathematicaおよびWolfram言語の最先端機能が拡張されています.
広範な応用分野に加わった,130を超える新関数
ニューラルネットワークの新しい20種類の層の追加,および再帰型ネットワークと可変長シーケンスのシームレスなサポート
NetModelにより,増加し続ける完全なニューラルネットワーク(訓練されたものとされていないものを含む)のリポジトリにアクセス
データ,画像,テキスト等の空間を機械学習ベースで可視化するFeatureSpacePlot
SequencePredict,ActiveClassification,ActivePredictionを含む,新しい機械学習関数
AudioCaptureを使って音声を直接ノートブック内で録音することによって,すぐに処理・解析することが可能に
2Dおよび3D画像に対する,*,-等を使った計算が可能に
計算写真学と計算顕微鏡学に対するサポートの拡張
ImageGraphicsを使って,ビットマップのベクトルグラフィックスによる近似を求める
HilbertCurveやSierpinskiMesh等の空間充填およびフラクタル領域コンストラクタ
WinsorizedMean, SpatialMedianを含む,新しいロバスト統計と空間統計
新しいGeoBubbleChartと,Callout,ScalingFunctions等のサポートの拡張
記号次数を持つ導関数のサポート
解像度が高くなった標高データ
シームレスに統合されたWeb検索,Web画像検索,テキスト翻訳のための外部サービス
セッション間の値をローカル,あるいはクラウド等に保存するための,幅広いPersistentValueシステム
クラウド内で個別に編集できるノートブックをシームレスに配布するためのAutoCopy
ノートブックベースのスクリプトエディタを使ったWolframScriptの.wlsファイルの生成
Wolfram言語スクリプトの自動実行がWindowsでも可能に
ドキュメントセンターおよびオンラインの例題すべてが新しくレスポンシブデザインに
https://www.wolfram.com/mathematica/quick-revision-history.ja.html?footer=lang
0175デフォルトの名無しさん垢版2017/05/02(火) 06:54:00.89ID:hkg4cpdn
回転放物面の方程式と東大の問題
http://mathtrain.jp/kaitenhobutsu

「放物線 y = 3/4 - x^2」

「y軸の回りに回転させる」

・・・例えば、こういう操作ができる3次元CADって開発されてないんですか?

統計的機械翻訳では自然言語処理は無理という話も聞いているけれど、高校数学でやることは内容が限られており、
一般的な機械翻訳よりは難易度は低いと思われます。
0176デフォルトの名無しさん垢版2017/05/02(火) 07:13:28.68ID:iysKcMgd
3次元CADを名乗っていて回転体を作れないもののほうが珍しいと思うが、
その問題を解けるCADは多くないだろうな。
近似的な数値解が求まることと、解を方程式で表して数式処理できることは全くの別物。
0177デフォルトの名無しさん垢版2017/05/02(火) 07:39:13.20ID:IDWdkJdY
>>176
>その問題を解けるCADは多くないだろうな。

そのための新プログラム言語開発ってことだよな。
0178垢版2017/05/02(火) 11:18:08.85ID:Ua7wVMyf
>>175
ごく当たり前の機能として存在する。
面で切り取る事もできる(面に対する押し出しで、相手方を削り取る感じ)
体積も求められるよ。
拘束条件は厳密だし、カーブを式で入れることもできるから。

ただ、それのために1License300万出す?
0179デフォルトの名無しさん垢版2017/05/02(火) 14:54:44.43ID:iysKcMgd
ああ、高精度な数値解を導出することと、任意の拘束条件から方程式を導出することの区別がつかない人がいるようだ。
0181垢版2017/05/02(火) 17:06:18.52ID:Ua7wVMyf
>>179
うちでつかってるのは数値解じゃなくて方程式まで自由じゃないけど変数の式でも出たはず。あれ内製だったかな。
AutoCADのMASSPROPとかくらいだと、悲しいかな数値解しか出ないけど、カーネルに手を出せる会社ならだいたいその辺持ってると思うよ。
0182垢版2017/05/02(火) 17:07:00.26ID:Ua7wVMyf
もし内製だったら、当たり前の機能として、とは言えんな。
それはすまん。
0184垢版2017/05/02(火) 22:27:44.92ID:Ua7wVMyf
>>183
押出する元の図形をプロシージャルではなくて、曲線定義で描く。
曲線への拘束条件で何を取るか次第だけど、問題文通り入れればそれで良いと思うよ。
ゴールデンウイークは試せないのがもどかしいな。
0185デフォルトの名無しさん垢版2017/05/03(水) 16:11:10.64ID:dCKp/m7W
Smalltalkって名前だけ変えて次世代言語って紹介されたら
殆どの人は信じてしまうくらい先進的だよね
進歩しすぎてて理解されない不幸な言語
0186デフォルトの名無しさん垢版2017/05/03(水) 16:33:31.70ID:RICjVVNj
比較的新しい言語ってvar t : Type形式が多い気がするけどType t形式を利用しなくなった理由ってあるのかね
0188デフォルトの名無しさん垢版2017/05/03(水) 16:53:47.90ID:jNZhewdQ
型を書いたり書かなかったりする場合に記述を大きく変える必要がなくて都合がいいんだろう。
型推論を使う言語とか、動的型言語に型ヒントを追加する場合とか。
0189デフォルトの名無しさん垢版2017/05/03(水) 17:10:47.34ID:UME+lawj
たとえばC#だと基本はType tで後から型推論var t(: typeはない)を追加した
だったら最初から統一的な記法で良くね?ってなる
0190デフォルトの名無しさん垢版2017/05/03(水) 19:11:09.93ID:RICjVVNj
なるほど
型推論が流行ってる(のかはわからないが)から型推論の書き方+αで書けるようにしたってことか
0191デフォルトの名無しさん垢版2017/05/03(水) 20:37:23.26ID:21J3ISub
デニス・リッチーも型前置にしたことを後悔していたんじゃなかったっけ?
たぶん型後置の方が合理的という点には大方の一致があって、あとは合理性を取るか、Cの語順に近づけることを取るかっていう感じなんじゃないかな?
0192デフォルトの名無しさん垢版2017/05/03(水) 22:01:20.86ID:mJ/QVcTI
>>186
pascalがそういう記法だけど、コンパイル速いのはpascalがコンパイラの都合に合わせた文法だからって読んだことある。
何かしらコンパイラが解釈し易い記法なんじゃね?
0193デフォルトの名無しさん垢版2017/05/03(水) 23:27:43.76ID:AGrCBSz0
>>192
Pascalの構文は再帰的パーサを簡単に書けるLL(1)文法なんじゃなかったかな
LL(1)ならトップダウンで構文解析できるからパーサは書きやすいしパーサの効率も多分だけど高い

Cの場合は、例えば

  atype;

という宣言があった場合、"atype"という識別子が

1.typedefで型の名前として既に定義済であれば「変数が指定されてない構文エラー」となるし

2.そうでない場合、"atype"という名前のint型の変数の宣言として扱われ
  2―1."atype"という変数が既に宣言済であれば2重宣言のエラー、
  2―2.そうでなければ正しい変数宣言

となるので、構文解析の際にsymbol tableを参照する必要がある(つまり本質的なレベルで文脈依存文法)ケースが存在するので
当然ながらコンパイラの効率が下がるだろうね
0194デフォルトの名無しさん垢版2017/05/04(木) 00:37:37.35ID:lJ9s6a1R
昔のpascalは1パスコンパイラだった。コンパイルの速さはそれもあったかもね。
今のobject pascalはジェネリクスもあるしどうだろう?
0196デフォルトの名無しさん垢版2017/05/04(木) 09:04:54.52ID:IvFxbTrW
値の演算だけでなく型の演算として同じ記号を使うのがCのポインタや配列
これは評判が悪かった
悪いのはポインタだけだというのがJava
全部悪いから全部変えるのが次世代
0197デフォルトの名無しさん垢版2017/05/04(木) 09:34:14.90ID:L3vkrSi7
まあポインタの宣言と参照のための記号に同じ * 使ってんのは今でもなんでなんとは思う。
0198デフォルトの名無しさん垢版2017/05/04(木) 09:51:37.05ID:l8/ufUYV
関数の戻り値型の指定はPython,TypeScriptが=>、Swiftだと->が混ざって
いまいち統一感がないんだよな。:のままだと構文的にうまくない部分があるんだろうか。
0199デフォルトの名無しさん垢版2017/05/04(木) 10:09:01.14ID:g5LPBSe2
>>186
C方式に慣らされてるからそう感じるだけであって
あれはパースしづらいクソ構文だよ

struct S s;
を捨てたのは何でだろうと問うべきだよ
0200デフォルトの名無しさん垢版2017/05/04(木) 10:44:22.27ID:IvFxbTrW
そもそも静的型が悪いと思えば単純明快だな

静的型は悪くない、だがジェネリクスは不要、ただし Array<T> 等はこっそり入れておく
こんな状態で統一感(笑)を期待する方がおかしい
0201垢版2017/05/04(木) 11:53:43.54ID:iOTKQL/7
>>200
思いっきりGoだな。
まぁ、Goに統一感なんか無いし、期待してはいかんw
あれは誰でもかける便利な言語だよ。

一切の原理原則以外を排除する崇高な思想で作られた芸術品ではなくて、
「その辺にある便利そうなものを誤謬矛盾なく突っ込めるようにそれなりにルール作りました。
 とりあえずこのルール破ると突っ込めなくなるからやめてね。コンパイルさせないよ。」
という、実用のためのルールが細かいのがGoだよ。
電動ドリルのチャックとビットの規格みたいなもん。

「対称性がなくなるからこのメソッドを実装する」という発想ではない。
0202デフォルトの名無しさん垢版2017/05/04(木) 12:29:38.64ID:IvFxbTrW
原理原則というのは崇高な思想じゃなくて無駄な仕様変更の防止という実用の技術だ
0204垢版2017/05/04(木) 13:45:55.83ID:iOTKQL/7
>>202
口実やね。
専用品と汎用品なら、圧倒的に前者の方か仕様変更の回数は少ない。
無理に延命したり使いましたりしたいからこそ、よくわからん仕様変更するハメになる。
無駄な仕様変更なら、最初からしなけりゃいいんだよ。
無駄なんでしょ。
使い捨てを使い捨てと認識する事こそがスタート地点。
歯が折れたら取り替えたいし、違う歯を使いたいからチャックがあるんだから。
歯の代わりにバフ付けることも出来るけど、それに対して仕様変更なんか要らないでしょ。バフを新規に作るだけじゃん。
置換原則出してきて証明する必要も無い。

>>203
そうだ、と言う認識だなぁ、俺は。
PHPも同じ理由で、いろんな意味でとても潔い言語だと思うよ。
0206垢版2017/05/04(木) 17:00:05.42ID:iOTKQL/7
呆れるなら簡単だからな。
どう違うかをきっちり教えて欲しいわ。
本当に勉強になったら素直に勉強になったと言うことにしてるし、実際何度もそうレスしてるよ。

言語なんて外から見たときに一意に呼び出し規約や入出力が決まってりゃそれでいいんだよ。
これでも素晴らしい言語とやらを5個10個と多数見てから言ってるんだけどな。

それ以上の、実用性以上の思想の旗を振りたいなら、何故その思想が必要か語ってほしい。
0207垢版2017/05/04(木) 17:07:42.27ID:iOTKQL/7
しかし、式に型をつける構文が後置だから出来るのは本当なのかな。
キャストの前置や後置と何か違うのかなぁ。

って考えたら「宣言文 名前 型」の方が遥かに簡単にパースできるなって思わんのかな。
式に型をつけるってのも、コンパイラに教える意味での型か、キャストの型か2つの意味あるけど、どっちの事かな。
疑問。
0208デフォルトの名無しさん垢版2017/05/04(木) 21:21:01.22ID:IvFxbTrW
>>204
多分それは使い捨てではなく交換
これを捨てる代わりにあれが欲しい
見返りがあれば捨てるが無条件に捨てられそうになったら使い捨てに反対するだろう
0209デフォルトの名無しさん垢版2017/05/04(木) 22:18:26.60ID:L3vkrSi7
むしろ変な原理原則に縛られてる方が糞仕様の増加を招くのだが。
haskell みたいにな。
0210デフォルトの名無しさん垢版2017/05/04(木) 22:34:29.63ID:IvFxbTrW
確かに、関数型とかいう変な原理でHaskellを理解しようとしてるならやめた方がいい
静的型の原理だけで理解できるから
0211垢版2017/05/04(木) 22:35:23.26ID:iOTKQL/7
>>208
「交換できる、交換出来ない」と「使い捨てである、改良を加えて連用する」は同時にどの組み合わせも成り立つのでは?
これを捨てる代わりに、これと同じ機能プラスαの新ライブラリを作る、みたいな話で、
完全に前方後方互換の代替品であるかもしれないし、そうではないものかもしれない。

そういう意味では、無条件に捨てる事ができるってのは立派な見返りだよ。
0212デフォルトの名無しさん垢版2017/05/04(木) 22:36:44.00ID:hGwzsYkf
良いんだよ。
Haskellは美しさが売りなんだから。
むしろ美しさを保ったまま、どこまで実用的なの作れるかが楽しいんだよ。

そう言う意味じゃsmalltalkと同じ、純粋xx言語でxxの真髄理解するなら〜って言語であって、次世代言語じゃあない。
0213垢版2017/05/04(木) 22:36:44.02ID:iOTKQL/7
>>210
ならPrologの方が賢いし、Scalaの方がまともだし、Lispの方が最低限の原理から出来てるから、Haskellは要らない子だな。
0214垢版2017/05/04(木) 22:39:24.44ID:iOTKQL/7
>>212
それそれ。エスペラント語とかロジバンみたいなもん。
実用的ではないけど面白いのは認める。
0216垢版2017/05/05(金) 03:41:35.36ID:05XvGSte
>>215
OCamlの方がシンプルかな。
Haxeの方が記法はきれい。
Kotlinはいささか冗長で使い物になるのかな?みたいな羊感出てるけど、when使うときに逆に便利になる。
0221デフォルトの名無しさん垢版2017/05/05(金) 08:48:03.35ID:2f8pCQ29
IntelliJとかのマトモなIDEを使った後に
Smalltalkの時代遅れのIDEモドキ?を使ってみると、
終わった言語の進化に取り残されてる感がよく分かるし
こんな出来損ないを使うの強制されるSmalltalkerって哀れだなーって優しい気持ちになれるよ
0224デフォルトの名無しさん垢版2017/05/05(金) 09:54:56.24ID:WrAdTxbV
文字列クラスを改変したら元に戻せないという話はSmalltalkにも当てはまるのかな
文字列クラスクラスがあれば壊れたクラスを使い捨てて新品のクラスに交換できるのに
0225デフォルトの名無しさん垢版2017/05/05(金) 10:13:52.40ID:b5hiFaeg
>>224
クラスが壊れるという事自体が糞めんどくさい
0227デフォルトの名無しさん垢版2017/05/05(金) 16:27:38.21ID:lho11o7a
RESTful API等でサービス間を遅延結合するのは流行ってるしメリットがあるけど
ひとつのプロセス内で遅延結合しても意味が無い

アホは適切な抽象化レベルってものが分からないから
やりすぎてナンセンスになっちゃうんだよね
Smalltalkはアホがナンセンスなデザインした結果死ぬべくして死んだ言語
0228デフォルトの名無しさん垢版2017/05/05(金) 17:23:18.30ID:9atsKcF/
Haskellは遅延評価が本当に苦痛すぎる
あの辛さはやってみるまで想像もつかなかった
0229デフォルトの名無しさん垢版2017/05/05(金) 17:51:23.35ID:tVaTXT91
Smalltalkにおいて「遅延結合の徹底」に期待されるのは通常の言語で想定されるそれとは違って
システム構築中に得られた新たな知見を、既に構築済みだったり運用中の部分へ適用できたり
オブジェクトとそのストアを長期にわたって運用し続けるために細胞の新陳代謝を模した試みだから
http://metatoys.org/oxymoron/oxymoron.html
'70年代からほんの数回の再起動で動き続けている同システムは狙いとしては成功しているんだよね
0230デフォルトの名無しさん垢版2017/05/05(金) 17:51:28.56ID:RNJ7gaAH
無限リスト扱えるし便利でもあり、バグ取りで厄介でもあるね。
RWHにその辺の解決策載ってるから手元に置いとくと良い。
0232垢版2017/05/05(金) 19:50:22.56ID:05XvGSte
>>227
意味無いとは言わんがなぁ。
プロセス内でもプロトコル決めてやっとくと、あとでスケールするとか、
固まりへのインアウトが自ずと決まるから可換だと言いやすいとは思う。
やりすぎると自分の重さで死ぬだけで。
0235垢版2017/05/05(金) 20:51:14.85ID:05XvGSte
>>234
してないよw
シンプルってのは字数が少ないって意味じゃないぞ。
0237デフォルトの名無しさん垢版2017/05/05(金) 21:31:07.05ID:n4hNDFR+
全然関係ないけど、字数が少ないコードって一目で取れる情報が多くて読みやすくて好きだわ
0238デフォルトの名無しさん垢版2017/05/05(金) 21:42:23.21ID:RNJ7gaAH
>>231
時代によって変わる程度問題だけどね。
C++だって、昔はクラスってなんだよ。Cより遅くなるじゃねーかって言われてたらしい。
昔よりも抽象度の高さが問題になる場面は少ない。
0240デフォルトの名無しさん垢版2017/05/05(金) 23:29:21.86ID:RNJ7gaAH
取り敢えず拡張性比べるんならプログラム組むべ。
まずはファイル名とキーワードを受け取って、ファイルの中にキーワードがあったらTrue。無かったらFalseと表示するコマンド。

プログラミング自体から離れてだいぶ経ったので、錆びた頭だったがHaskellでどうにか書いてみた。

search部分を拡張してくから、各自searchは自前で書いてくれ。

import System.Environment

search _ [] = False
search s ns | take (length s) ns == s = True
search s (_:ns) = search s ns

main = do
arga <- getArgs
content <- readFile $ args!!0
print $ search (args!!1) content
0242デフォルトの名無しさん垢版2017/05/05(金) 23:36:43.64ID:RNJ7gaAH
だから、使い所不明なクラス書いてどうしろと。
プログラム組みたいのであってクラス作りたいんじゃ無いんだぞ?
0243デフォルトの名無しさん垢版2017/05/05(金) 23:59:41.96ID:tVaTXT91
>>242
いや別に>>240へのレスというわけではないのだが…

これでいいか?(Squeak Smalltalk、もしくはPharo)

| search |
search := [:fname :keywd |
 FileStream oldFileNamed: fname do: [:file |
  (file findString: keywd) > 0
 ]
].
search value: 'test.txt' value: 'something' "=> true "


http://ws.stfx.eu/1UQT4K8GSVHU
0244デフォルトの名無しさん垢版2017/05/06(土) 00:04:14.20ID:nikLe03p
>>240
それだとコンパイル通らないよ

import System.Environment (getArgs)
import System.IO (readFile)
import Data.List (isInfixOf)

search :: String -> String -> Bool
search = isInfixOf

main :: IO ()
main = do
 (word:file:_) <- getArgs
 putStrLn . show =<< search word <$> readFile file
0247デフォルトの名無しさん垢版2017/05/06(土) 00:29:23.53ID:9tv813Aq
>>243
おk。
強いて言えば、この後拡張する時、どこまで今のコードから書き換えないで済ませられるかが仕様変更に強い基準になると思う。
0248デフォルトの名無しさん垢版2017/05/06(土) 00:33:03.34ID:nikLe03p
>>245
そのままじゃ通らなかった
けどごめんね、詳しく見てなかったけど駄目だったのはタイポだけだったみたいだね
0249デフォルトの名無しさん垢版2017/05/06(土) 00:35:03.84ID:9tv813Aq
あ、argsをargaってタイポしてた。。。
LinuxにHaskell入れたばかりなのでPCで実行確認してiPhoneで書き込んでるんで、コピペでコンパイル出来ない時はどこかタイポあると思う。
0250デフォルトの名無しさん垢版2017/05/06(土) 00:50:29.93ID:9tv813Aq
次世代言語勢に参戦して貰わんとだから、第二形態は明日の夜発表って感じで良いかな。
一応、第三形態までの予定。
明後日から夜勤なんで、第三形態どうすっかな。
0251垢版2017/05/06(土) 02:06:36.33ID:BE072L/9
>>236
そうなのかなぁ。
例えばそれぞれのどんな例からシンプルさがわかる?
後学のため教えて欲しい
0252垢版2017/05/06(土) 02:11:17.59ID:BE072L/9
>>241
Go版、マシどころか疎にしておいたところ密にされてしまったな。
ノブのないドア、ノブはあるけどラッチのないドア
実現する術がなくなったね。

With Withなんて気色悪い無理に継承関係を作ったような型作るくらいならもう継承とか全部捨てたほうがマシ。
もうちょっと真面目にやって。
0253デフォルトの名無しさん垢版2017/05/06(土) 03:50:07.06ID:oP2bFz9u
Kotlinになれるためにアプリを作ってるんだけど、久しぶりにc++触るとセミコロンがうっとおしくなるね
参照、ポインタ、値を自由に扱えてかつ新しい言語の特徴を捉えてるような言語が出てほしい
0254デフォルトの名無しさん垢版2017/05/06(土) 06:35:37.73ID:7HgaeBZn
勝手にHaskellをスレタイから省くな。
0255デフォルトの名無しさん垢版2017/05/06(土) 07:19:08.10ID:gBi5/Vqg
>>252
前スレの埋め込みを使った再帰型の試みとして、主要なメソッドを再定義しなければならない版より「マシ」と言ったまでで
君のチャンネル版よりマシという意味ではない

それは他言語版と同じ設計で比較しやすくしたって程度だから気にしないで
0256デフォルトの名無しさん垢版2017/05/06(土) 07:23:37.59ID:gXvlLccW
各自、次世代言語に求めるものが違うのだろうけど、
気を悪くしないで欲しいがHaskell外してKotlinは個人的にはないかな。
敢えて外すなら次世代感満載のAgdaを入れて欲しい。
が、呼び水としての趣旨からしたらHaskellを敢えて外す理由が分からない、個人的な怨嗟?
0257デフォルトの名無しさん垢版2017/05/06(土) 08:00:28.21ID:Yu22orOs
実用性が乏しすぎるので次世代にふさわしくないとの事
あと前スレでまともなコードを掲示しなかったので、そもそもHaskellerが居ない事が分かった
0258デフォルトの名無しさん垢版2017/05/06(土) 08:15:37.40ID:JdaZnrFf
>>256
Javaより古いHaskellを次世代言語に混ぜた初代スレの>>1がどうかしている。
初代スレはHaskellの美しさを語るエアプログラマーが多かったが
次世代言語の実用性を語るスレに変わってよかったと思うよ。
0259デフォルトの名無しさん垢版2017/05/06(土) 08:35:08.14ID:9tv813Aq
Haskell推しだが、次世代取れるほどライブラリ充実してないし、速くもないからsmalltalk的な立ち位置だと思ってる。
次世代じゃ無いけど、学ぶべき価値ある言語。
0261デフォルトの名無しさん垢版2017/05/06(土) 08:43:22.81ID:9tv813Aq
>>257
Mix-inとか言われては書けなかったね。
普通のクラス代りなら何とかなったが。
そもそも目的のプログラム作るアプローチとして関数かクラスかなのに、クラス作れは問題としてオブジェクト指向に有利過ぎ。
実際に動くプログラムで拡張勝負のが公平っしょ。
だから>>240提案した。
0262垢版2017/05/06(土) 08:50:48.08ID:BE072L/9
>>255
なるほど。申し訳ない絡み方したな。
smalltalkでもパッシングに徹すればひたすらコーディング量はあるけど割りと文句無いのできそう。
>>256
Kotlinなしなの?使いやすいのに。実用性あるから?
0263デフォルトの名無しさん垢版2017/05/06(土) 08:56:13.51ID:VviFbgmi
各言語、得意分野あるからな。
証明付きでプログラム書けとかなったら、Coqなどの証明支援系の独壇場で、
他言語の入り込む余地がないように思われるが如何?
0265デフォルトの名無しさん垢版2017/05/06(土) 09:31:45.79ID:nikLe03p
自分もRubyやGroovy使ってたせいかもしれないが
Kotlinは言語としては悪くないけど次世代感は感じない
golangぐらい簡素な仕様にしてくれればまた違ったとは思うけどJVM言語だしなあ
0266デフォルトの名無しさん垢版2017/05/06(土) 10:21:48.72ID:BwUsBv8i
言語が次世代でありさえすればライブラリはJVMでもなんでもいいぞ
ライブラリ関係ないなら、ライブラリがない言語でも参加しやすい
0267デフォルトの名無しさん垢版2017/05/06(土) 10:22:29.07ID:ubF1nelW
>>262
> smalltalkでもパッシングに徹すればひたすらコーディング量はあるけど割りと文句無いのできそう

具体的にはどこらへんにその「量」を感じた?
ドアの振る舞いを記述してるコード自体はGoで書くよりずっと簡潔でステップ数も少ないはずだけど

念のため補足すると件のSmalltalk版では、通常はGUIやIDE任せにするクラスやメソッドの定義
(ちなみにGNU Smalltalkなどを除き、IDE前提のSmalltalkにはクラスやメソッド定義の構文が無い)
をあえてクラスへのメッセージングでやっているのでそのぶん冗長にみえるかもしれないけど
0268デフォルトの名無しさん垢版2017/05/06(土) 12:29:53.45ID:64kzmcng
何でSmalltalkerさんは劣った設計で比較する事に拘ってんの?
Goが得意な技法はダメ、Smalltalkで書きやすい技法だけ使って書くっていう縛りでもあるの?
0269デフォルトの名無しさん垢版2017/05/06(土) 12:43:22.47ID:xfCUj8G0
>>259
同意
0270デフォルトの名無しさん垢版2017/05/06(土) 12:46:26.00ID:ye19IDAy
>>268
どうしてそういう発想になるのか全く不明。
人間の言葉でしゃべって。

>>267 を補足すると、
compile:とかがやたら続いているコードブロックがクラスやトレイトの定義に相当する部分で、
それ以外がドアやストッパーを操作するサンプルコードな。
0271デフォルトの名無しさん垢版2017/05/06(土) 12:52:37.52ID:ubF1nelW
>>268
いや別に拘ってないですよ

そもそも誤解があるようなので断わっておくとGoを貶めるつもりは全然なくて
Smalltalkに難癖を付けてるID:BE072L/9が前スレからGoが詳しそうなんで
その方がわかりやすかろうとGoを引き合いに出したまでです

Goの得意な技法を駆使した優れた設計ってどんなのですか?ぜひ教えてください
今のところ埋め込みスタイル以外で出ているのだとこういうのでしょうか?→http://ideone.com/yvttId
このお題自体では設計を工夫しにくいと言うことであれば、新たにGoに有利なお題をご提供いただければと
0272デフォルトの名無しさん垢版2017/05/06(土) 12:58:55.97ID:ubF1nelW
>>268
あと、

> Smalltalkで書きやすい技法だけ使って書くっていう縛り

とのご指摘ですが、少なくとも Ruby、Python、Scala、Swift では Go よりすんなり書けています>>260 から
旧世代言語で書きやすい…ならともかく、Smalltalkで書きやすい技法だけって縛りにはならないですよね?
0273デフォルトの名無しさん垢版2017/05/06(土) 13:05:23.06ID:BwUsBv8i
愚問という便利な言葉がある
答える側には間違えるリスクがあるのに問う側を無リスクで無謬とするのは不公平
0275デフォルトの名無しさん垢版2017/05/06(土) 14:24:42.57ID:wNWjHlrM
>Goの得意な技法を駆使した優れた設計

chan と select 使ったサーバープログラムなんでねーの。
ああいうふうにチャンネルに放り込んだものを適当に一列に並べてくれるのはかなり楽。
0276デフォルトの名無しさん垢版2017/05/06(土) 15:30:08.75ID:TldMS9JZ
ここまで次世代言語から>>240のコードが出てない件。
単純な力押し検索だから、難しいアルゴリズムでも無いんだが。。。
おいらも頭悪いんよ。

>>244の書き方でargs書き換えと、nsをcontentから取ってcsへ変更。sも折角だからwordから取ってwへ。

import System.Environment

search _ [] = False
search w cs | take (length w) cs == w = True
search w (_:cs) = search w cs

main = do
(file:word:_) <- getArgs
content <- readFile file
print $ search word content
0277デフォルトの名無しさん垢版2017/05/06(土) 15:43:50.78ID:TldMS9JZ
仕様変更への耐性だから、基準となる第一形態のコードの長さは問わない。
どんな変更があるか事前準備したクラスがあってもおk。
第三形態までの変更箇所の少なさが言語の優劣とする。
0278垢版2017/05/06(土) 16:40:50.57ID:BE072L/9
意見≒難癖とは生きづらいな
0280デフォルトの名無しさん垢版2017/05/06(土) 20:12:56.46ID:XqR1goBE
エンジニアガイジのGo版ってあのなぜか最初から並列化を意識して書かれてたやつだっけ?
0281垢版2017/05/06(土) 23:05:01.66ID:BE072L/9
>>279
主観としての悪評価と客観としての悪評価を混同すんなよ…。
採点してる訳じゃないんだから。そこまで傲慢でも無いよ。

俺Rubyボロクソに言ってるけど、主観としてだよ。

>>280
並列化を意識してるんじゃないよ。
コンポーネントとして存在し得るかを考えただけ。
ノブがノブだけで存在できないなんておかしいじゃん。何にも繋がってない地面に転がったノブさえ定義できないのに、突然ドアについてる突起をノブだと言うくらい不自然じゃないの?
オブジェクト指向ってなんなの?
地面に転がってるのも、ドアについててもノブであって、ノブとしての役割を果たしているか否かでしかないのでは?
確かにそのノブがノブとして成立するのはドアについたときだろうけど、それ以前からそいつ自身の存在が変わったわけじゃないじゃん。
0283垢版2017/05/06(土) 23:16:33.79ID:BE072L/9
>>282
スレッドと言うかまあマイクロスレッド使ってるけど。
キューイングしてる所で同期をGoにやってもらった形に近い。
イベントやらメッセージパッシングと変わらんつもりだけど、キュー抜いて中もgoroutineなのは確かに悪手は悪手か。
それは確かにそうだな。
0284デフォルトの名無しさん垢版2017/05/07(日) 02:09:25.68ID:bNWzpChq
まだHaskell信者が暴れてるのか
ラッチの開閉すら実装出来ないと前スレで判明してのによく再登場出来るな
0289デフォルトの名無しさん垢版2017/05/07(日) 08:26:48.70ID:HF1KyfYe
まぁここであーだこーだ言ったところで、大手の採用が多くなった言語が次世代扱いになるだけだからな
主に決めるのは外人だ
0290デフォルトの名無しさん垢版2017/05/07(日) 09:55:32.27ID:6O1o1Sih
>>289
まるでトクホや世界遺産に採用されるみたいな
官僚主義だな
0292デフォルトの名無しさん垢版2017/05/07(日) 10:48:31.07ID:6O1o1Sih
嘘ニュースを野放しにして個人の感想を問題視するのは本末転倒
0295デフォルトの名無しさん垢版2017/05/07(日) 11:25:56.17ID:6O1o1Sih
静的型が難しすぎて失格なんだよ
叩きたいことと叩くべきことが一致してない
0296デフォルトの名無しさん垢版2017/05/07(日) 11:29:53.16ID:Kq+qtoGk
microsoft word の動作が難しいって意味での難しさだわな。
無意味なむずかしさだわ。
0297デフォルトの名無しさん垢版2017/05/07(日) 11:56:43.37ID:uANj4DVJ
性的型が難しいって。。。
自分で正しくプログラム組めてませんって言ってるようなもんじゃん。。。
0300デフォルトの名無しさん垢版2017/05/07(日) 14:53:43.84ID:38Z51qvh
>>299
キャットドア問題って言いたいだけだろお前
すでに答えは出てるし、そもそも問題の把握すら出来てないじゃないか?
0301デフォルトの名無しさん垢版2017/05/07(日) 14:58:24.43ID:EXP2lJkU
>>240
>>276
ライブラリ使うのとかはありかな?
主旨から外れるかもしれないが、こんなのどうだろう

import System.Environment
import Data.Conduit
import qualified Data.Conduit.Text as CT
import qualified Data.Conduit.Binary as CB
import Control.Monad.Trans.Resource
import qualified Data.Text as T
import Control.Monad.IO.Class (MonadIO)

searchSink :: (Monad m, MonadIO m) => T.Text -> Sink T.Text m Bool
searchSink w = do
n <- await
return $ case n of
Nothing -> False
Just s -> T.isInfixOf w s

main :: IO ()
main = do
(file:word:_) <- getArgs
x <- runResourceT
$ CB.sourceFile file
$= CT.decode CT.utf8
$$ searchSink (T.pack word)
print x
0303デフォルトの名無しさん垢版2017/05/07(日) 16:13:25.59ID:m17h7+4k
>>301
仕様変更への耐性を競うだけなので、まあライブラリ使ってもそれで仕様変更に強いなら構わないけど。。。

Haskellとsmalltalkしか回答寄せて貰えてない。。。
キャットドアのクラス作るだけの問題よりも、客からこんな機能付けてって要望に応える形で仕様変更されたのを如何にコード変えずに対応するかって問題は実践向きで良いと思ったんだが。。。
0304デフォルトの名無しさん垢版2017/05/07(日) 16:18:52.35ID:m17h7+4k
あと3時間もすれば会社行くからコードは明日。。。も出かける予定で無理か。。。
明後日には書くので、第二形態の問題だけ出しとく。

ファイル中に検索するキーワード見つかったら、見つかった数も表示するように機能追加。
見つからなかった時は表示しなくても良いし、表示を分けるの面倒臭かったら0個って表示で見つかった時と表示機能を共有しても良い。
0305デフォルトの名無しさん垢版2017/05/07(日) 16:26:36.91ID:EXP2lJkU
>>303
なるほどね
ならConduit使った方が処理簡単に挟めるから、仕様変更には強いと思う
あとはストリーム処理だから読み込むファイルが巨大になっても一定のメモリしか使わないってのも考えてみた
0306デフォルトの名無しさん垢版2017/05/07(日) 17:24:00.66ID:zdh+Rbcj
>>303
多分実戦向きの問題でいい感じなんだと思うんだけど、出題レスがとっちらかってて全部探すのめんどくさくてやる気起きなくてすまん
綺麗に纏まったレスどれ?
0308デフォルトの名無しさん垢版2017/05/07(日) 17:57:04.14ID:zdh+Rbcj
>>307
意図が良く分からないんだけど、Pythonで言えば

from sys import argv


def search(path, word):
____with open(path) as f:
________for l in f:
____________if word in l:
________________return True
________else:
____________return False


if __name__ == '__main__':
____print(search(argv[1], argv[2]))

みたいなのでいいの? とりあえず書き捨ての簡単なプログラムから初めて拡張していく感じで
多分これ拡張しろって言われたらsearch関数まるっと書き直しちゃうけど
0309デフォルトの名無しさん垢版2017/05/07(日) 18:08:49.23ID:m17h7+4k
>>308
オブジェクト指向も関数型言語も、仕様変更に強いって言われて広まったり注目されてるから、次世代言語も仕様変更に強くないと使える言語と言えないと思って。

だから、書き捨てでも良いし、どんな変更が来るか事前に予測した設計でも良いけど、設計変更に強いと言うのを示せるか?って感じ。
ちなみに私のHaskellは何にも考えてはいない。
自信があるとかじゃなくて、デザパタとか知らない。
関数型言語が設計変更に強いなら、まあ何とかなるだろうってノリ。

全体の趣旨
>>277

第一形態
>>240

第二形態<-今ここ
>>304
0310デフォルトの名無しさん垢版2017/05/07(日) 18:14:46.33ID:zdh+Rbcj
おっと2問目もあったか
Pythonで言えば

def count(path, word):
____with open(path) as f:
________return sum(l.count(word) for l in f)

でも追加しておけばOKだな。うん。searchの内容一切使ってないけど変更は3行やね
つーかsearchももっと短くできたな
0311デフォルトの名無しさん垢版2017/05/07(日) 18:18:38.81ID:zdh+Rbcj
>>309
仕様変更に強いっていってもこのお題の長さなら仕様変更というより新たに書き上げる短さを競うことになるな
一切再利用考えなくても三行だし
0312デフォルトの名無しさん垢版2017/05/07(日) 18:23:23.71ID:/lTp1FVO
>>304 Squeak/Pharo Smalltalk

| search |
search := [:fname :keywd |
 FileStream oldFileNamed: fname do: [:file |
  | count |
  count := 0.
  [file match: keywd] whileTrue: [
   count := count + 1.
   file atEnd ifFalse: [file skip: 1 - keywd size]].
  count
 ]
].
search value: 'test.txt' value: 'something'

http://ws.stfx.eu/RU59LGEMKG9G
0313デフォルトの名無しさん垢版2017/05/07(日) 18:23:58.94ID:m17h7+4k
そこをどうにか機能追加で
search test.txt hoge
Ture 4

みたいな感じに表示項目増えるように第一形態のコードを育てる様にして欲しいんだが。。。
関数名以外は中身が丸っと変わっても良いけどさ。
0314デフォルトの名無しさん垢版2017/05/07(日) 18:27:46.84ID:zdh+Rbcj
え、関数名変えたらいかんの?
それはおかしいやろ
一回作った関数の振る舞いを変更するのはおかしい。別の関数を作るべき
0317デフォルトの名無しさん垢版2017/05/07(日) 18:32:35.47ID:zdh+Rbcj
うーん。この程度の量で無理に機能追加で育てていくこと自体が設計ミスだと思うけどなあ
0318デフォルトの名無しさん垢版2017/05/07(日) 18:42:25.99ID:m17h7+4k
そこは承知の上で、まだ次世代言語入門したばかりでも参入しやすい様にってのと、過去のコードに影響あるよね?って事で第二弾に持って行きたい。
0319デフォルトの名無しさん垢版2017/05/07(日) 18:47:14.19ID:zdh+Rbcj
はいPythonまとめ
searchはもっと短い実装思いついたから短くした。

from sys import argv


def search(path, word): # 1st
____with open(path) as f: # 1st
________return any(word in l for l in f) # 1st


def count(path, word): # 2nd
____with open(path) as f: # 2nd
________return sum(l.count(word) for l in f) # 2nd


if __name__ == '__main__':
# print(search(argv[1], argv[2])) # 1st
print(count(argv[1], argv[2])) # 2nd

変更は2ndって書いてある4行。一切再利用とかしてないけど、このお題に関して分かりやすさ、変更の少なさ、安全さでこれ超えるのは無理でしょ
0320デフォルトの名無しさん垢版2017/05/07(日) 18:51:13.41ID:zdh+Rbcj
>>318
やりたいことは了解したけど、回答者としては適切な設計でいきたいから、再利用したほうがいいと判断するまで再利用しないからな
まあいい具合に短いし気が向いたら次世代っぽい言語でもやってみるか
0322デフォルトの名無しさん垢版2017/05/07(日) 19:36:18.70ID:4ZC1qsBr
再利用しないほうが少ない変更でいけるものに再利用を強制して、その分量で言語の優劣を測るというのは理不尽な話だ
0323デフォルトの名無しさん垢版2017/05/07(日) 20:18:32.73ID:zdh+Rbcj
Pythonのコードで再利用せずに済んでるのはバッテリー付き言語であるのが大きいな。もし次世代言語でmatchとかcountすらないようなのがあるとしたらその言語にとってはそこそこいい課題になるかもな
0324デフォルトの名無しさん垢版2017/05/07(日) 20:59:47.13ID:/lTp1FVO
>>304
ファイルの行ごとの内容はメモリに収まる程度なのか、とか
例えば 'xxxoooxxx' という文字列内に 'oo' は1個なのか2個なのか、とかは
回答側の都合がいいように自由に決めていい?
0325デフォルトの名無しさん垢版2017/05/07(日) 21:31:50.41ID:6O1o1Sih
仕様変更というから仕様バグをデバッグするのかと思ったら

バグのない完成品に機能追加して多機能化すれば優秀さを示せるって発想か
嫌な予感がする
0326垢版2017/05/07(日) 21:34:41.10ID:tachXp58
>>322
可換であるべき理由を殺しに来てるよね。
0329垢版2017/05/08(月) 06:18:15.11ID:FkyLZnez
>>327
再利用せずに入れ替えたいから、その部品が使われるときのインターフェイスを定義して、関係ないものをカプセル化するんじゃん?
再利用して無理に機能追加してると、割りと早めにインターフェイスは形骸化するよ。
引き戸である、とか、このドアは回転扉で開けると反対が閉まる、とか、エアロックみたく、どちらかしか開かない制限をかけたいとか、そういう要件で安易に
扉だったものを魔改造するハメになる。
そうすると、インターフェイスってものや、カプセル化ってものが、完全に無意味になる。
魔改造されてて、本来の意味を失ったインターフェイスの「ドアを押す」メソッドとか怖すぎるじゃん。
0330デフォルトの名無しさん垢版2017/05/08(月) 06:39:47.64ID:pk8djPQr
>>329
横レスだけど
ざっくり言うとインターフェイスや型クラスの存在理由を殺しにかかってるって意味だよね
元の言い方だとちょっとわからなかったよ
0331垢版2017/05/08(月) 06:45:50.09ID:FkyLZnez
>>330
インターフェイス、型、あとはクラス構造自体の意義、もうちょっと広くとっても良いかなって思って。
Cでもアセンブラでも可換な作り方って出来るから、あまりに具体例にするのも話が矮小化しそうだなぁって思ったんよ。
申し訳ない。
「も、含めて」とかちょっと言い方考えるわ。
0333デフォルトの名無しさん垢版2017/05/08(月) 06:57:25.03ID:Ya4nTupG
アルゴリズムなんてどれで書いても同じなんだから
もっとUI作りやすい言語くれよ。
0334垢版2017/05/08(月) 07:22:21.17ID:FkyLZnez
>>332
あーなるほど。
難しいもんだな。表現ってのは。
ありがとう、勉強になる。ちょっともう少し練ってから話すわ。
0335デフォルトの名無しさん垢版2017/05/08(月) 18:51:10.68ID:nU60kBJx
>>324
行は基本メモリに収まる程度だよ。
小説とか、常識的なテキストで問題無ければおk。
行に一個二個を回答側の都合ってのは普通駄目だろう。。。
でも、あんまりにも回答者いないんでもう良いよ。。。
0336デフォルトの名無しさん垢版2017/05/08(月) 18:54:25.80ID:nU60kBJx
>>329
あー。。。
あんま考えずに提案してたわ。。。
うーん。。。
インターフェースは変えずにって条件付ける?
実際に引数増やさないと駄目な時は補助関数作って、実際の処理はそっちに丸投げみたいな形で。
一応第二弾ではそう言うのも考慮して、既存の関数に手を加えないで機能拡張ってテーマで行く予定だけど。
0337デフォルトの名無しさん垢版2017/05/08(月) 21:10:34.76ID:nbca9qQS
>>335
> 行に一個二個を回答側の都合ってのは普通駄目だろう。。。

であれば、正規表現に丸投げするのでもなければ処理内容にも影響するので
例えば 'xxxoooxxx' 内に 'oo' は1個と数えるか2個と数えるかとかは出題側で事前にきちんと決めてください
0338デフォルトの名無しさん垢版2017/05/09(火) 00:31:37.08ID:fIUN0UPL
ああ!
勘違いしてた。
そう言うことね。
ラッキー7(777)検索してて7777ってなってたら1個と数えるか2個と数えるかって事か。
私の方法だと2個に数えてるので2個にしましょう。
0339垢版2017/05/09(火) 02:14:34.77ID:w3DidVUp
メモリをジャブジャブ使えて1個で考えて良いなら殆どの言語で一行なんだけどなぁ。
jsで言うと(content+'').split(delimiter).length-1だから。
0340デフォルトの名無しさん垢版2017/05/09(火) 07:18:26.65ID:83wQykSi
>>335
「小説とか」ということは、日本語の可能性もあるの?その場合に想定してるエンコードは?

とにかくideone.comとかで参加者が気軽に動作を確認でき、かつ仕様を満たした回答例を先に出しといてください
実戦向きとか言うわりに細かな仕様がまったくわからんし、動くコードでもなければエスパーするにも限界があるよ
0343垢版2017/05/09(火) 10:56:31.08ID:b+ihuqXk
>>342
splitがundefにならんように、文字列とコンカチしてる。
0344垢版2017/05/09(火) 11:59:38.90ID:b+ihuqXk
言葉足らずだったな。文字列と見せかけて数値にどっかで化けさせた奴対策だったり、そもそも引数来なかったとかそういうやつ。
0346垢版2017/05/09(火) 15:17:46.56ID:tzdZ6ACH
>>345
数数えるんだから、数えられないものが来たらゼロになっていいんよ。
0347デフォルトの名無しさん垢版2017/05/09(火) 16:14:33.37ID:PEK3Ov/R
>>339
そうなんだ。。。
じゃあ、両方のを書くのでどっちもおkにします。

>>340
長さは?とか聞かれて小説とかって書いたけど、今回は適当なソース読ませる程度しか想定してないし、参入障壁にしたくないからアスキー文字だけしか想定してない。
本当、思い付きで申し訳ない。
そんな訳で下のコードをコピペして検索にかけると

>search search.hs search
(True,16)

ってなるはず。

んで、777を検索して7777を1個と数える版はsearch2として書いてみた。
最早Pythonよりも修正箇所多そうだけど気にしない。
do形式よりモナド形式が好きなのでdo形式コメントアウトしてるのは気にしないで欲しい。
(ちょうど良かったんで7777を確認用にdoの後ろに追加してる)
0348デフォルトの名無しさん垢版2017/05/09(火) 16:15:07.28ID:PEK3Ov/R
import System.Environment

search w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1) w cs
search' t w (_,cs) = search' t w cs

search2 w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w cts | take (length w) cts == w = search' (True,n + 1) w $ drop (length w) cts
search' t w (_:cs) = search' t w cs

-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content

main = getArgs >>= \(file:word) -> readFile file >>= print.search word
0350垢版2017/05/09(火) 20:01:48.57ID:Qrp6KBdW
>>349
undefinedと空文字列かー、jsdoだと空になったけど、文字列化してしまうなら辛いな。
0353デフォルトの名無しさん垢版2017/05/11(木) 14:47:49.71ID:+i4P6kRh
まとめとこう。
>>309で一旦まとめて

インターフェース(引数)固定縛り。
(補助関数可)
英数字のみのファイル前提。
行やファイル全体もメモリに収まる程度を想定。
777で検索した際、7777は検索結果1個とカウントしても2個とカウントしてもおk。
0355デフォルトの名無しさん垢版2017/05/11(木) 17:14:36.14ID:+i4P6kRh
はいはい・・・。
んじゃ、検索で見つけた位置も追加で表示するように拡張。

import System.Environment

search w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y,x)) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1,(y,x + 1):ps,(y,x + 1)) w cs
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs

search2 w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y, x)) w cts | take (length w) cts == w = search' (True,n + 1,(y, x + 1):ps,(y, x + 1)) w $ drop (length w) cts
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs

-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content

main = getArgs >>= \(file:word:_) -> readFile file >>= print.search2 word
0356デフォルトの名無しさん垢版2017/05/11(木) 17:32:30.86ID:+i4P6kRh
>>348のコードをコピペしたテスト用テキストだとこう表示されるはず。

>search test.txt search
(True,16,[(3,1),(3,11),(5,1),(6,1),(6,51),(7,1),(7,17),(9,1),(9,12),(11,1),(12,1),(12,45),(13,1),(13,17),(18,12),(20,60)])
0358デフォルトの名無しさん垢版2017/05/11(木) 17:41:01.83ID:+i4P6kRh
んな訳ないと思うんだが。。。
第三形態まで出たんだから、次世代言語勢たのんますよ。
本当。
0359デフォルトの名無しさん垢版2017/05/11(木) 18:01:32.36ID:+i4P6kRh
要約

英数字のみのテキストファイルと検索文字列を受け取るコマンド。
行の長さや、ファイル自体の大きさは常識の範囲内。(メモリに収まる大きさ)
関数のインターフェース(引数)固定縛り。
第一形態からなるべく大きな変更無しで拡張して行くルール。

第一形態
検索文字列が存在するかどうかのみ表示

第二形態
検索文字列の存在と何個あるか表示

第三形態
検索文字列の存在、個数、見つかった位置を表示

Haskell
第一形態
>>276

第二形態
>>348

第三形態
>>355
0361垢版2017/05/11(木) 18:41:45.50ID:lLJXISKu
>>359
ガバガバでは?

type LookupResult struct {
//略
}
func (lr LookupResult) foundAsBool Bool{
return lr.found
}
func Lookup(needle,haystack String) LookupResult{
//検索処理
return LookupResult{found:結果}
}

って第一形態書いとけば、LookupResultが超リッチになってくだけでインターフェイスもへったくれもない石器時代の発想で書けちゃうよ。
そして往々にして業務アプリ屋ならちょっと気がおかしいレベルで、こんな形で結果をラップする事を徹底してる。
大きな変更は無いけど、いい事も無い。
0362垢版2017/05/11(木) 18:42:31.33ID:lLJXISKu
>>361
あ、ごめん。foundAsBoolの後ろに()無いな。
0363デフォルトの名無しさん垢版2017/05/11(木) 18:46:17.93ID:TwpHLB2C
しもた。。。
7777を一個と数える版(search2)でバグあった。
見つけたらdrop (length w)してるんだから、リストに追加する発見位置はそのままだけど、現在位置は検索文字列の長さ分足さなきゃだった。
適当に修正お願いします。(おい)
0367デフォルトの名無しさん垢版2017/05/11(木) 21:28:25.35ID:w7aTa8S+
って事は実行結果の例も修正せなな。。。

>>348のコードをコピペしたテスト用テキストだとこう表示されるはず。

>search test.txt search
(True,16,[(3,1),(3,16),(5,1),(6,1),(6,56),(7,1),(7,22),(9,1),(9,17),(11,1),(12,1),(12,50),(13,1),(13,22),(18,12),(20,60)])
0368デフォルトの名無しさん垢版2017/05/11(木) 22:14:35.58ID:pualqazL
久しぶりにコードみたけどHaskellちゃんキモイな〜

10年前から主要言語TOP10は変わってないという事実をお忘れなきように
0369デフォルトの名無しさん垢版2017/05/11(木) 23:32:16.09ID:5z6DmCSe
10年間スマホを世界中で売りまくっても何も変わらなかったのは意外だな
0370デフォルトの名無しさん垢版2017/05/12(金) 00:30:03.06ID:3oRK7AIr
それは今後も主要言語は変わらないから次世代言語について考えることは無意味ってことかな
0372デフォルトの名無しさん垢版2017/05/12(金) 06:43:44.99ID:4vGyFDSj
実装基準がよくわからない。

import System.Environment(getArgs)
import Data.List(isInfixOf,isPrefixOf,tails,findIndices)

search1 = isInfixOf
search2 word = length . filter (isPrefixOf word) . tails
search3 word content = (ps /= [], length ps, ps)
 where ps = concat . zipWith indices [0..] $ lines content
    indices l = zip (repeat l) . findIndices (isPrefixOf word) . tails

main = do
 (file:word:_) <- getArgs
 print =<< search1 word <$> readFile file
 print =<< search2 word <$> readFile file
 print =<< search3 word <$> readFile file
0374垢版2017/05/12(金) 08:40:43.26ID:6RnAOpKz
>>364
第二形態書いた時点で第一形態は、第二形態を中で呼ぶ様に書き換えないと悲劇だし、第三形態も同じ。
レビューで辛辣な第一形態を安易に書いたdisりを受けたあと、直交性が失われるために、それより前の形態をAPIとしてobsoluteにしてライブラリ関数とかマクロに降格するレベルだよね。
0375デフォルトの名無しさん垢版2017/05/12(金) 10:34:41.20ID:nQbZenvu
>>372
Data.Listの関数はisInfixOfとisPrefixOf、tailsを本で読んだだけで使った事ないな。。。
それ以外は見た事すらない。
ちゃんと使うと、ここまで書けるのね。

そう言う意味じゃ、おいらのは入門書前半の知識だけでも書けるって感じやね。

おいらがHaskell好きなのは美しさもだけど、ひたすらミニマムな知識だけでも何とかなっちゃうのが良い。
数学と同じで便利な関数知ってれば、強力な武器だし周りからは難しそうに見えるけど、基本はとても簡単で、少ない武器でもどうにかこうにか自力でも解ける。

これこそ初心者向け言語だって思ってるんだけどねぇ。。。
0377デフォルトの名無しさん垢版2017/05/12(金) 13:24:07.84ID:H6Uk5vuw
"Pharo Smalltalk"

search1st := [:str :kw | str includesSubstring: kw].

search2nd := [:str :kw | (str splitOn: kw) size - 1 ].

search3rd := [:str :kw |
 Array streamContents: [:ss |
  (str lines collect: #readStream) doWithIndex: [:strm :idx |
   [strm match: kw] whileTrue: [ss nextPut: idx -> (strm position - kw size + 1)].
  ]
 ]
].

http://ws.stfx.eu/DQART2BS6GYF
0378デフォルトの名無しさん垢版2017/05/12(金) 17:26:32.26ID:k//9Mr+f
>>368-369
でもCの地盤沈下は確実に進んでるわけで

まー2017にはさすがにCOBOL使ってるシステムも
リプレースされただろ?されてるよね?ってところ
0382デフォルトの名無しさん垢版2017/05/13(土) 00:01:55.41ID:hYOIVOdy
そんなの良いから。
実際問題キャットドアより簡単だから。
次世代言語以外が回答してるのがおかしいから。
0386デフォルトの名無しさん垢版2017/05/13(土) 08:16:21.72ID:2mf4fJqx
ぶっちゃけ新しい言語とか覚えるの面倒だから次世代とかいらねーって思ってるんだろ?
0387デフォルトの名無しさん垢版2017/05/13(土) 08:20:03.99ID:zCDOTfft
次世代言語を考えるなら古典に立ち戻ることが重要だな。
スレタイに挙げられた言語は局所最適の枝葉末節だらけで参考にならない。
0390デフォルトの名無しさん垢版2017/05/13(土) 09:12:34.64ID:4agJqfcC
いくらお題がアレとはいっても、
ここまで来てなんで一つもKotlinとかGoで書くやつがいないのか。
簡単だし時間かからないだろ?
Smalltalk馬鹿にしてる奴も意味不明。
0396垢版2017/05/13(土) 12:14:40.76ID:Mm9GiQ8r
>>390
夜か明日、書いてもいいけど、全く以って問題が悪すぎて、次世代もクソも無いと思うよ。
0399デフォルトの名無しさん垢版2017/05/13(土) 18:54:00.95ID:zCDOTfft
問題が悪いとふんぞり返っていれば次世代言語がどこからか降って湧いてくるのか。
便利なスレだな。
0400垢版2017/05/13(土) 21:16:28.56ID:l2RlSRsK
また、「エアプ」か。どこで流行ってんだその言葉。。
問題が悪いからと言って次世代言語が降ってこないのは当たり前と言うか、
自動車が発明される前に人々にニーズ調査したら「すごく早くて馬が疲れにくい、壊れにくい馬車がほしい」って答えただろうってフォードのおっさんの名言に尽きるだろ。
0401デフォルトの名無しさん垢版2017/05/13(土) 21:56:48.51ID:QiNZfANm
>>384
英文は無理でも言語名の綴りぐらいはちゃんと書こうね
ForceじゃなくてForth
FortrunじゃなくてFortran
pascalはPascal
(固有名詞だから頭文字は大文字、なお全部を大文字で書く・・・PASCAL・・・か否かは趣味の問題だが
全部を大文字で書くのは小文字がディスプレイやプリンタで表示・印字できなかった古い時代の名前というニュアンスが加わる)
0407デフォルトの名無しさん垢版2017/05/14(日) 14:23:56.19ID:tMuNfTLo
ドアは糞
だがしかしコードをちゃんと読めて(あるいは書けて)改めて糞だと言えてる奴がどのくらいいるかは怪しいな
ドア→実用なし→糞と短絡してるだけとか
実際、>>404>>405はドアのお題、何分ぐらいで書けるの?
0408405垢版2017/05/14(日) 16:59:45.21ID:ZZLeiCLl
>>407
Juliaの書いて、書いた上でドア糞って言い始めたのは俺だぞ
あれ思い出しながら書いたから一時間くらいのかかったわ
なんか言語仕様変更してる所とかあったし
0414デフォルトの名無しさん垢版2017/05/15(月) 00:34:41.47ID:vRkjYJPr
次世代言語でも手続き型言語の呪縛からは解き放たれないのか。。。
既存言語の着せ替えでしか無いなら、プログラムの組み易さも大差無かろう。
0415デフォルトの名無しさん垢版2017/05/15(月) 00:54:38.55ID:vRkjYJPr
>>410
Haskellスレのおいらの過去の書き込みより。
341 名前:デフォルトの名無しさん [sage] :2017/04/29(土) 15:22:04.96 ID:nyANDfpK
デザパタみたいなの?
パターンって程実践で使われてないだろ。
んー。。。
使ってた感触だと、割と行き当たりばったりからの仕様変更でも何とかなるのが関数型言語の強み?と思わなくも無い。
ちょっとの変更にも関数経由するから、自然と既存の関数使い回せないか考えるし、関数型言語もそう言う風に進化して行ってるように感じる。

某スレで話題になったキャットドアクラスも、変な縛りがなければ究極的には機能の組み合わせでドアが開くかどうかの問題なのだから、タプルにBoolを並べれば良い。
ただ、同じBool値ばかりだと違う機能を付いてる(付いてない)と表現しやすいので、適当な型を作ってコンパイラが順番間違えたらエラー出すようにする。
cd = (False,型Aの値)
値が欲しかったら
getA t = snd t
または引数の時点で直接欲しい値にアクセス。
getA (_,x) = x
仕様の拡張に関してはタプルを入れ子にする事とする。
継承というよりは委譲に近い。
理屈では(以前の機能,拡張機能)の形でいくらでも入れ子に出来る。
cdEx = (cd,型Cの値,型Dの値)
cdFX = (cdEx,型Eの値)
基本機能だけなら基本のタプル取り出して使う。
getA $ fst cdEx
拡張機能だけまたは、拡張機能と基本機能の組み合わせは引数の時点で(以下略)
getC (_,x,_) = x
getAD ((_,x),_,y) = x + y

ただ、関数型言語は元々多くの状態を管理するのに向かない。
例の通り、構造が複雑になると扱い難い。
HTMLなりXMLなりXAMLなりに状態管理は任せた方がいい。
んじゃ、おいら夜勤明けなんで寝るわ。
お休みzzz...
0417デフォルトの名無しさん垢版2017/05/15(月) 01:32:26.10ID:hQsWbFnv
既存の言語でやれってことだろ。
オブジェクト指向をむりやり c でやったように。
結局それが正解。
0418デフォルトの名無しさん垢版2017/05/15(月) 01:34:34.82ID:vRkjYJPr
何が関数型言語の雄になろうと次世代言語にはならないかなぁ。。。
私はただHaskellに惚れてるだけで、ここが良いって紹介もするけど、それって結局Lisperと同じ道を歩んでると思う。
0422デフォルトの名無しさん垢版2017/05/15(月) 10:34:46.05ID:OVQU3b0Y
次世代と称される流れには2つの傾向があって
ひとつはScalaやSwiftのように従来のOOPLをベースにして(つまり機能は特に削らずに)
これまで関数型言語の独擅場だった型推論やオプショナル型といった型システムのサポートを手厚くしたもの
もうひとつは、さらに一歩進めていろいろな不都合の元凶であったクラス(もっというと継承)を外して言語機能を大胆にシンプルにしたもの
GoやRustがこれにあたる…ってところか

あと個人的には並行・並列処理のサポートを手厚くした言語、Clojureや前と重複するけどGoとかも
この調子でコアが増え続ければ重宝されると思う

Rubyは両方を狙っているけどたぶん失敗する
0423垢版2017/05/15(月) 12:50:33.96ID:HDk+iNO5
Rust、今更もう一度触ってみたけど、割とまとまってきてるな。
風呂敷広げ過ぎた悲壮感減ってきてる。
ただ、それでもすごく安全なCとして使うほうが便利な気がするわ。
0424デフォルトの名無しさん垢版2017/05/15(月) 13:17:14.26ID:CnSqTz4B
Rustなんて木構造もまともに書けない言語が次世代とか飯食ってるときにわらかすなwwwwwww
0425デフォルトの名無しさん垢版2017/05/15(月) 14:36:26.20ID:JAUTsopg
わらかす
0429垢版2017/05/15(月) 17:18:40.45ID:HDk+iNO5
>>424
RcとRefCellで書けるんじゃないの?
0431デフォルトの名無しさん垢版2017/05/15(月) 17:33:40.67ID:CnSqTz4B
>>429
教科書的に書くだけならな。Cのように実用に耐え得るものは書けない

ttps://hackernoon.com/why-im-dropping-rust-fd1c32986c88
0432垢版2017/05/15(月) 18:36:33.51ID:HDk+iNO5
>>431
この人が行き詰まってるのは、オブジェクト指向そのまま当てたからでは?
structのImplでもなく、traitの関数でもなく、
traitのImplで書けば何とかなりそうだけど。
あと、サイズを取得したいだけなら、lifetimeを明示してCopyちゃんとすれば良いのでは?
0434デフォルトの名無しさん垢版2017/05/15(月) 19:24:57.87ID:jxMhaoqU
笑かす
0435デフォルトの名無しさん垢版2017/05/15(月) 20:17:30.50ID:hQsWbFnv
実際書くと大変なことを無意識に理解してんでしょ。
そういう種類のごまかしをするやつはよくいる。
0436垢版2017/05/15(月) 20:54:20.75ID:HDk+iNO5
書いたら面倒だって事は否定してないじゃん。
この人が行き詰まってるのは、借用とは割と関係ないオブジェクト指向脳ではって話してるんだけどなぁ。

CでもMISRA-C通そうと思うと木構造相当辛いし。
産業向けのC書いてる奴なら耐えられるレベルの話だと思うけどなぁ。

手軽さ的には俺はGoを押し続けるが、否定するもんでもないと思うようになったな。
0439デフォルトの名無しさん垢版2017/05/16(火) 01:26:25.84ID:YrF/ZMci
まあ当のMozillaがRustでDOM木の処理書くのに難儀してるとは聞くから簡単ではないんだろうな。

物が作れない最高の言語より、物がつくれる嫌われ言語の方が結局世の中に貢献するんだよな。この点ではPHPでさえRustより世の中に役に立ってる言語と言える。
0444垢版2017/05/16(火) 13:09:50.84ID:RIytWhRI
>>438
守ってない部分はGoやらなんやら、もっと手軽な物で書いたほうが楽じゃん。
あれは要は、ヒープやスタックの領域の担保やら、死んだポインタへのアクセスの回避やら、そういう部分に対して言語側から縛りかけて安全にしよう、ってスタンスなのでは?
本人らは推してるが、副次的にGCが無い言語になってるように見える。

>>439
歯ブラシ言語はマジで強い。PHPはdisる奴がわからんレベル。
遅いしまともじゃない動きしたりするけど「とにかく動くwebページ」は一瞬で作れる。
0446デフォルトの名無しさん垢版2017/05/16(火) 13:18:30.66ID:D7FkMXFe
次世代スマートポインタだけでよさそうな気がするけどそれをやったらC++の独壇場だな
Goやらなんやらの出る幕がなくなってしまう
0447デフォルトの名無しさん垢版2017/05/16(火) 13:43:07.20ID:PSQsih3e
Goの何がすごいって、言語の批評家にこんだけタコ殴りにされても、もの作る速さが圧倒的の一点でここまででかい言語になったことだよな。

RustはCを安全に倒しすぎた結果なにも作れなくなった言語って意味では対照的。
Servoは失敗するだろうが、そこで得られた知見でRust2.0(1.xと互換性なし)が出てからが本番と見てる。
0448デフォルトの名無しさん垢版2017/05/16(火) 14:33:32.43ID:rFzXLZrQ
GUI付きのOSまで作られてるのに何も作れないとは
0449デフォルトの名無しさん垢版2017/05/16(火) 14:47:31.26ID:D7FkMXFe
歯ブラシではなく弱者で同じことができれば尊敬されるだろうな
弱者を批判する批評家から弱者を守ってみろ
0451 ◆QZaw55cn4c 垢版2017/05/16(火) 20:55:08.15ID:szD5YOp7
MISRA ってそんなに厳しいのかい?
0452デフォルトの名無しさん垢版2017/05/16(火) 20:55:48.40ID:zxK8tMMg
phpはガチでないわ
php持て囃してるやつらって、php書いたことないやつらだろ
プロトタイピングならまだしも、phpをプロダクトに使うたら頭おかすなるで
0453デフォルトの名無しさん垢版2017/05/16(火) 20:57:15.12ID:gJA+c77n
関数各々link時に再帰の有無て判別できるんだろうか?
0454垢版2017/05/16(火) 22:59:06.93ID:RIytWhRI
>>451
めんどくさいけど、あれ通りに書いてたらバイナリパッチ作りやすい。
>>452
世の中、プロトタイプ程度の物で充分な事が多いって事でしょ。
0457デフォルトの名無しさん垢版2017/05/17(水) 04:28:27.85ID:2wQy2LFh
Nimってどうなん?
次世代感は無い気もするけど
0458デフォルトの名無しさん垢版2017/05/17(水) 04:48:40.76ID:bqqNuZww
>>432
似た印象を持った
問題提起者が新しい型と型制約の逆転に気づいてないし、
RustをRubyか何かと勘違いしている感じだ
0461デフォルトの名無しさん垢版2017/05/17(水) 07:38:49.95ID:dkQOogT2
まともなプログラマならPHPなんて金積まれても書かないから、
PHPを書いたことがあるプログラマは全て無能のクズペチパーでFA
0465デフォルトの名無しさん垢版2017/05/17(水) 13:07:19.59ID:rCny4GOf
>>464
え?

まあ、EC-CUBEは開発当初流行ってたからPHPで作った
というだけで今一から同じもの作るとしたらPHPという
選択肢は無いんじゃないかなぁ。
PHPが流行ったのは歴史的な経緯が大きいと思うし。
0466デフォルトの名無しさん垢版2017/05/17(水) 13:16:25.89ID:l7mhfXJ7
>>447
つーかああいう馬鹿な批評家みたいなやつが生産性を落としてるんじゃねーかっていうことを
証明したのが go という印象。
0467垢版2017/05/17(水) 14:32:20.84ID:FjYdmJm+
>>455
夏休みの工作をフライス盤で作るような事したくないじゃんww
悪いもの使ってるから悪いものしか作れないと言う意味じゃなくてな。
俺の字が汚く見えるから鉛筆は使わない、みたいな情けない字が下手なやつの言い訳に聞こえる。

>>458
この辺思想だから、移植物だと仕方ないっちゃ仕方ないんだよね。
0468デフォルトの名無しさん垢版2017/05/17(水) 17:32:30.07ID:0Ygr9k03
PHPはテンプレートエンジンであって、それを使って無理矢理プログラミングしてるのが異常事態っていうテンプレは置いといても、
誰がが言ってたが生産性が高いんじゃなくて生産性を前借りしてるっていうのは言い得て妙だと思った。Rubyに対しての話だがPHPにもしっかり当てはまるな。

Goは「前借り」感が少ない。少ないだけでまだあるがRubyやPHPよりはるかにマシ
0469デフォルトの名無しさん垢版2017/05/17(水) 17:33:55.88ID:0Ygr9k03
借りて返さなくていいプロダクトなら確かに一つの選択肢になり得るってのは否定しようがないけどな
0470デフォルトの名無しさん垢版2017/05/17(水) 23:33:27.42ID:NA6XP0ND
今出てきてる次世代言語はどれも外れ臭い

洗練されてない
くどい
従来の物のほうがなじみやすい
目立った成果をあげていない
0472デフォルトの名無しさん垢版2017/05/18(木) 01:36:26.16ID:ahqmwSBr
>目立った成果をあげていない
新興言語が既存言語の積み上げた資産ぶち抜く成果上げたらびびるわ。

コンテナオーケストレーション領域やNewSQL領域みたいなそもそも新しい分野ではGoが結構強い。
0474デフォルトの名無しさん垢版2017/05/18(木) 06:06:25.90ID:TSzqrQQ0
HaskellはClojureよりは実用的。。。らしい。

【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1483498849/

>>37
>facebook傘下のwitaiが基盤実装をclojureからc++かhaskellに移行する予定だったらしく、haskellにしたとのこと。
>移行したら読みやすいみたいな話もちょっとだけ。

>clojureの場合、ライブラリは一度作るまでいろいろいじって、一回出来るとあまりいじらないイメージもあるけど、実装を多人数でよくいじるみたいなのだと、難しいのかな?
>IDE上手く使えばそういう開発もできるのだけど、最初からなんでも決まってるほうがいいってのはgo見るとわかる気もする。
https://wit.ai/blog/2017/05/01/new-duckling
0475垢版2017/05/18(木) 08:04:06.63ID:j3O3T+hJ
>>468
それはその通りだろうな。
まぁ、使い捨てるためのものであって、確かにあれでバッチ処理とか書いてたのは直させたことある。
>>472
新しい概念に新しい言語はマッチするし、やっぱ効率的だと思う。
PCODEとパスカルとか。
資産活用なら、すごい親和性のKotlinかな。JavaのクラスのgetXXXとsetXXXが、勝手にクラスのプロパティになるとかすげえなって思う。
0477デフォルトの名無しさん垢版2017/05/18(木) 11:37:49.17ID:sfBdYfQZ
過去の資産を自然に利用できるってのは次世代言語にとってでかいってことかね。
そういう意味じゃ c++ は先見性のある言語だったんだろうな。
0478デフォルトの名無しさん垢版2017/05/18(木) 11:58:01.78ID:Ueu9cV6M
Rustもbindgenとかで頑張ろうという姿勢はなくはないな。
肝心の言語がアレだが。

一方GoはGoogleの暴力で全部自前で資産を構築した。
0479垢版2017/05/18(木) 12:37:01.30ID:j3O3T+hJ
>>476
当時の次世代だったじゃん、Groovy。
まぁ、KotlinもAndroidの一級言語になったし、暴力かどうかはおいといてこれからどうなるかはわからんが。
0480デフォルトの名無しさん垢版2017/05/18(木) 13:10:22.49ID:Ueu9cV6M
あ、暴力っていうのは恐怖政治って意味じゃなくて、圧倒的な自前リソースで叩き上げたって意味ね。数の暴力のニュアンスに近い
0481デフォルトの名無しさん垢版2017/05/18(木) 13:17:24.91ID:XKDAC558
Kotlinは無事次世代から現世代に格上げされたようだな
さようなら次世代言語ことりん
0482デフォルトの名無しさん垢版2017/05/18(木) 13:31:05.44ID:twTr7KgU
>>459
まぁそれ言うとRoR出る前のRubyとか・・・って話に
なっちゃうしなぁ。
別に推したい訳じゃないけど、サラサラッと見た感じ
ツボは押さえてて悪くなさそうなので、今まで俺は全然
聞いたことなかったし何故かなーと思った次第。
0485デフォルトの名無しさん垢版2017/05/18(木) 14:50:52.71ID:TSzqrQQ0
>>359書いたものだけど、今これを複数ファイル対応させたくてコマンド引数の奇数グループと偶数グループに分けてzipするプログラム試作してみた。

import System.Environment

makeList cs f = take (length cs `div` 2) [cs!!x | x <- [0..], f x]

zipArgs args = zip (makeList args even) (makeList args odd)

main = getAtgs >>= print.zipArgs

何が言いたいかと言うと、次世代言語で>>359の第4形態作りませんか?
0489デフォルトの名無しさん垢版2017/05/18(木) 17:11:11.24ID:ZGxkwhYz
>>486
言語組み込みの1メソッドで対処できる程度のつまんないお題しか出せてないってそろそろ気付けよ
0490デフォルトの名無しさん垢版2017/05/18(木) 18:22:51.27ID:5cH1kli9
>>488
Goは文系土方を集めて開発する時の言語じゃない?
Google社員は優秀な人多そうだからGo使うより別の言語使った方が効率良いんだろ
0491デフォルトの名無しさん垢版2017/05/18(木) 18:27:00.09ID:f8y2NPBR
いや単純にGoのバイナリがモノリシックでバカでかすぎるからじゃねえの?
JVMとKotlinランタイム積んだ方が総合的にスマホでは得なんだろ。
0492デフォルトの名無しさん垢版2017/05/18(木) 18:45:04.78ID:XAZP4kgQ
>>489
1メソッドで対応出来るの見せてもらえれば、流石次世代言語と思うけど。

じゃあ何かお題出してくださいな。
クラス作れとかじゃなくて何か実際に動くものの。
出来れば高卒のおっさんでも解けるレベルなら有難いw

>>359をより実用的にするアイデア浮かんでて、まず上の通り複数ファイル対応の後、見つけた場所と同じ行の文章を表示させたいって思ってる。
これを一行丸々か、前後を何十文字ずつ切り取るってするか考え中だが。
0493デフォルトの名無しさん垢版2017/05/18(木) 19:09:30.79ID:oGyoSyzb
Haskell使いって変なのしかいないよな
なんでかしらんけど

インターフェースって書いたり文末に。つけたり
おじいちゃんなんだろうか?
0494デフォルトの名無しさん垢版2017/05/18(木) 19:19:39.20ID:XAZP4kgQ
多いと言うか、おいらだけかと。
若くはない。
そう歳でもないつもりだったが、おっさん言われる歳になっちまった。

次世代言語にも興味あるのに、言葉ばかりでコードがあんまり出てこないから問題出せば見られるかと思ったんだが、上手くいかないね。
0496デフォルトの名無しさん垢版2017/05/18(木) 19:58:51.19ID:twTr7KgU
句点打つとおじいちゃんて何か非常に新鮮だな。
これで俺もおじいちゃんの仲間入り。
0497デフォルトの名無しさん垢版2017/05/18(木) 20:03:00.27ID:XAZP4kgQ
まー何にせよ、お話ばかりで全然コード出ないのにウンザリなのよ。
簡単なので良いから次世代言語のコード見て見たいのよ。
0500デフォルトの名無しさん垢版2017/05/18(木) 21:19:37.89ID:CUeY4+YJ
>>493
いつも本題と別のとこに難癖つけて荒らしてるのお前だろ
なんか明らかに引っ掻き回してる奴いるなと思ってたが、今回ので確信した
0502デフォルトの名無しさん垢版2017/05/18(木) 22:13:42.45ID:CUeY4+YJ
>>479
そうか次世代ではあったか
しかし動的で静的にも使えるGroovyのが書いてて楽しかった
普通のJavaコードをそのままコンパイルできたし敷居も低かった

KotlInは今使ってはいるが、優等生過ぎて自分には合わない感じがするな
0506デフォルトの名無しさん垢版2017/05/19(金) 01:22:16.89ID:NMLOtQ5J
今回みたいにGoogleとかその他大企業が採用するかどうかが全てだな
ここでこれは次世代、そうじゃないとか言っててもチラシの裏だな

ともかく、GoogleはJVM捨てる方向に行くかと思ったけど、このタイミングで捨てなかったらずっと使われるだろうな
0507デフォルトの名無しさん垢版2017/05/19(金) 01:29:41.16ID:PoZXo8Ro
別にビジネスにするわけでもなし、酒の肴にあーでもない
こーでもない言って楽しむスレでしょ?
もっとマイナーな奴発掘してみても面白いんじゃないかな
0509デフォルトの名無しさん垢版2017/05/19(金) 07:21:55.50ID:VJmnxTyM
>>506
それは製品を選ぶ消費者が全てだと言っているようなものだな
消費者の気持ちが全てだから作者の気持ちなどは無意味だと
0510垢版2017/05/19(金) 08:11:43.65ID:3tW0/dbk
JackとJillがいまいちだった、ってので、なんとかしたかったんだろうな。
JVMはARTの時点でほぼ捨ててるのでは?LLVMベースのAOTに近い動きしてたと思う。
0511デフォルトの名無しさん垢版2017/05/19(金) 09:33:01.74ID:Ig6oJN7I
Google的にはとりあえずOracleに訴状は勝ったしな
そのうちJetBrain買収して全権掌握、kotlinもやりたい放題弄りだすんじゃね
androidがjavaもどきである必要性は世界的に皆無だしみんなハッピー
0512デフォルトの名無しさん垢版2017/05/19(金) 10:05:13.89ID:PoZXo8Ro
元々は上物の開発しやすいようにJavaなんだよね?
でもパフォーマンスとかに問題があったからなんやかんや
していた感じで。
一時期UIというか上位層にJavaって流行ってたしナァ。
0513デフォルトの名無しさん垢版2017/05/19(金) 10:15:34.60ID:VJmnxTyM
Oracleは大企業の中で最弱・・・みたいな設定を後出しするやつは無能
最初から大企業の強さを疑問視していた方が正しい
0514デフォルトの名無しさん垢版2017/05/19(金) 11:05:24.31ID:oL/PZTz9
webkitをblinkにフォークしたgoogleのことだ
そのうちコトリンもポロリンとかにフォークされる
0516デフォルトの名無しさん垢版2017/05/19(金) 11:42:51.86ID:DP36oPkJ
kotlinのニュース聞いて調べてみたけど、なんだよOOP(笑)か。
ここで関数型の言語指名してればGoogleもまだやるなぁと感心したけれど。
0517デフォルトの名無しさん垢版2017/05/19(金) 11:59:32.63ID:Jt2Le5fJ
>>498
2ch住民がどんなコード書くのか見たかってん。。。
例えば>>485のコードRubyで書いて見たけど、イマイチ命令的で宣言的にはならんのよな。
次世代言語ならもっと宣言的に書けないかなとか。
0518垢版2017/05/19(金) 12:05:33.38ID:3tW0/dbk
>>516
書いてみ。
クラス宣言は必ずしも要らんし、データの定義だけが出来たり
クラスみたいだけど、ブロック始まって即関数ではなく束縛とか宣言できたり処理できたり関数書いたりできて、それがメソッドやプロパティになったり、
割と無茶できる言語だよ。
0519デフォルトの名無しさん垢版2017/05/19(金) 13:23:54.29ID:2r0FKFiQ
今のScalaはランタイムの大きさとかコンパイル時間とかでモバイルに適合しないってのは理解できるんだが、
Googleともあろう企業がScalaのランタイム改良ではなく言語としては劣化ScalaのKotlin採用って方針にしてるのは違和感あるんだよな。
0520デフォルトの名無しさん垢版2017/05/19(金) 14:09:46.57ID:A3h0WO1I
わかりやすいってのは重要なポイントでしょ。
次世代ヲタからすれば、SwiftとかKotlinとかGoが憎くて憎くて仕方ないんだろうな。
0522デフォルトの名無しさん垢版2017/05/19(金) 14:20:00.44ID:kmqi8gbh
可読性の観点から言うと、Kotlinが読みにくいというよりはScalaのimplicit嫌ったか。
それなら納得できるわ。
0523デフォルトの名無しさん垢版2017/05/19(金) 14:26:16.91ID:6kOz+D1v
あまり次世代っぽくはないけど、Goが並行処理を得意そうなのでこんなお題はどうでしょう?

お題
1) 1から1000までの整数からなる要素数1000の配列を作ってそれをランダムに並び替え
2) 当該配列の各要素nについて、sleep等でnミリ秒後にnを返す処理を別スレッドで起動し
3) 各スレッド終了順に配列等に結果を収めそれが昇順になっているかを真偽値で返すコードを書け。
4) 念のため (2)〜(3)にかかった時間を計測しこれも同時に提示せよ(1秒を大きく越えていないことを確認)
5) (3)が偽なら、(2)を「n*mミリ秒(mは2以上の整数)」に変えてmがいくつ以上なら真を返すかも示せ。

要はスリープソートですが…
0524デフォルトの名無しさん垢版2017/05/19(金) 14:37:07.10ID:v/FcS/dJ
おいらのPCがAtomなんだが。。。
Haskellで並列化は今一理解出来てないのか逆に遅くなる。。。
本の通りなら速くもなるんだろうが、使いこなせてない。
途中からシングルスレッド処理に切り替えるのが肝っぽい。
上手く行ったら参戦するけど、期待しないでね。
0525デフォルトの名無しさん垢版2017/05/19(金) 14:41:06.27ID:rZS5Oczq
俺もお題考えたぞ!!
ハートリーフォック方程式を解くコードを書け
基底はガウス基底。6-31G**でのベンゼンの計算結果を示すこと!!
分子積分は並列化して下さい!!
0526デフォルトの名無しさん垢版2017/05/19(金) 15:38:16.89ID:6kOz+D1v
>>523
回答例を兼ねてRubyで書いたのを晒します
手元の環境ではスレッド数的に厳しかったので100にしてmは5でした

$ ruby sleepsort.rb
m = 1; time(sec) = 0.129255; sorted? = false
m = 2; time(sec) = 0.3634174; sorted? = false
m = 3; time(sec) = 0.7056763; sorted? = false
m = 4; time(sec) = 1.1430185; sorted? = false
m = 5; time(sec) = 1.6765738; sorted? = true

http://ideone.com/RhQXqq
※ideone.comには制限があるようなのでスレッド数は更に減らして10にしています
0528デフォルトの名無しさん垢版2017/05/19(金) 18:37:46.78ID:co8auLJ+
次世代言語は物理や数学が扱いやすいことが必須ってわけじゃないから
数学を必要とするのはほんの一部

次世代でも手続型言語が主流なのは変わらないだろう
0529デフォルトの名無しさん垢版2017/05/19(金) 18:42:47.68ID:co8auLJ+
同じ処理をするにしても
より記述量が少なく
間違いが起こりにくく
学習時間が少ないものが今後も好まれるのではないか
0531デフォルトの名無しさん垢版2017/05/19(金) 18:47:42.86ID:EInD1neL
手続き型言語が主流なのは分かるけど、オブジェクト指向も宣言的なプログラミングを目指してるはずで、メソッドチェーンとかで済むように進化していくはずなんだ。

samlltalkやrubyはかなり宣言的に書ける場合がある。
pythonも>>485をリスト内包表記有るからHaskellみたいに宣言的に書けるはずだし。

次世代言語が過去の言語に宣言的プログラミングで劣ったら元も子もないよ。
0532デフォルトの名無しさん垢版2017/05/19(金) 18:53:11.32ID:co8auLJ+
宣言的プログラミング"も" 書けるのであって

宣言的プログラミングに近づけば優秀というわけじゃないから
0533デフォルトの名無しさん垢版2017/05/19(金) 18:57:49.08ID:EInD1neL
"も"で良いよ。
でも、手続き型言語でどこまで宣言的になったか見てみたい。

ifもforもここまで使わないで済むって。
0534デフォルトの名無しさん垢版2017/05/19(金) 19:24:24.98ID:rQS0QApr
>>529
一般にやれることがおおければそれだけ記述量は増える。
まあよく使われる書き方については短くかけるように符号を割り当てるってのは
あるのかもだが。
0535デフォルトの名無しさん垢版2017/05/19(金) 20:17:34.42ID:0YWm4zQf
そこそこ高学歴の学生としては数学扱いやすい言語以外はそもそも学ぶ気にならないなあ
だからPythonとか大好きだし、もし自分が言語を決める立場になったら、Pythonで出来ることは全部慣れてるPythonでやると思う
0536デフォルトの名無しさん垢版2017/05/19(金) 20:57:32.26ID:EInD1neL
>>485をHaskell(読みやすくしてみた)、Ruby、Pythonで書いてみた。
Haskell
import System.Environment

makeList cs f = take (length cs `div` 2) [cs!!x | x <- [0..], f x]
zipArgs args = zip evenList oddList
where
evenList = makeList args even
oddList = makeList args odd
main = getArgs >>= print.zipArgs

Ruby
evenarry,oddarry = [],[]
ARGV.each_with_index{|line, i|
evenarry.push line if i.even?
oddarry.push line if i.odd?
}
evenarry.zip(oddarry){|x,y| print [x,y] } if evenarry.size < oddarry.size
oddarry.zip(evenarry){|y,x| print [x,y] } if evenarry.size >= oddarry.size
puts

Python
import sys

evenList = [arg for i, arg in zip(range(len(sys.argv[1:])),sys.argv[1:]) if i % 2 == 0]
oddList = [arg for i, arg in zip(range(len(sys.argv[1:])),sys.argv[1:]) if i % 2 == 1]
for (x,y) in zip(evenList,oddList):
____print((x,y), end = '')
print()
0538デフォルトの名無しさん垢版2017/05/19(金) 22:22:13.75ID:E3Xd/U2i
今飲み屋なので明日確認するけど、おいらは(へっぽこ)Haskellerであって、RubyもPythonもそこまで得意じゃない。
あんたみたいな精通してる人のがずっと良いコード書けると思う。
ただ、オブジェクト指向も結局、宣言的プログラミングが理想の形なのは確か。
0540デフォルトの名無しさん垢版2017/05/19(金) 23:26:54.55ID:EInD1neL
>>537
クソが!!
コマンド引数が奇数の時にエラー出るじゃねーか!!!!
ちゃんとテストしやがれ!!!!!!
0541デフォルトの名無しさん垢版2017/05/19(金) 23:35:57.31ID:EInD1neL
>>539
ここで興味持って見て見たけど、文法がHaskellよりごちゃごちゃしてるんよ。。。
やっぱおいらはHaskellが好きやねん。
0542デフォルトの名無しさん垢版2017/05/19(金) 23:45:26.92ID:0YWm4zQf
>>539
別に数学好きってわけでもないけど、もちろんJuliaは使えるよ
最新の文法を全部追ってはいないから最新のをちゃんと使える自信はないが
0543デフォルトの名無しさん垢版2017/05/19(金) 23:48:20.94ID:R52jpALp
>>541
そりゃHaskellやLispと比べりゃどんな言語もごちゃごちゃしてるわ。
Juliaが狙撃対象にしてるのはRやPython(つーかNumpy)だから、Haskellはそもそも意識してないはず。

おまいさんに八つ当たりしてもしょうがないんだが、個人的にHaskellは二項演算子のググラビリティが死ぬほど低いのが困る。
0544デフォルトの名無しさん垢版2017/05/19(金) 23:54:27.07ID:co8auLJ+
pythonは言語的に優れてるとはおもわんけど簡素だよね全体的に
学習コストが低い

そこが高学歴wの人に好かれるとは思わなかったけど
0545デフォルトの名無しさん垢版2017/05/19(金) 23:59:47.82ID:0YWm4zQf
>>544
俺がPython好きなのは簡素だからではないけど、たしかに物理や数学の勉強で忙しくって、あんまり難しい言語は流行らないなあ
0547デフォルトの名無しさん垢版2017/05/20(土) 00:05:47.77ID:ntB1AqSN
>>543
自分で書いたコードはどうやって検索してるんだ
もしかして全部オープンソースにしてからぐぐるのか
0550デフォルトの名無しさん垢版2017/05/20(土) 01:38:29.31ID:l+OpXRNf
学歴たけーからこの言語は使えませんとかなんなんw
普通に言ってきたら馬鹿だとしか思えなくなるわw
0551デフォルトの名無しさん垢版2017/05/20(土) 08:02:40.56ID:1yTY6BxE
大学生と中学生って3年ちょっとの差しかないからな
0553デフォルトの名無しさん垢版2017/05/20(土) 08:56:41.66ID:Ykf9CvnE
>>543
すまん。
ググラビリティって何だ?
って調べたらググり易さ?
そんなに記号多かったっけ。。。
モナドとファンクタ以外は普通の言語にもある記号だろ?
本一冊持ってれば十分だし、Hoogle有るから。
それ言ったら2引数の関数全て二項演算子になるし、二項演算子も全て2引数の関数になる。
かえって(*)とかのセクション(2引数の関数)としてググれば見つかりやすいかもな。
0554デフォルトの名無しさん垢版2017/05/20(土) 09:03:31.15ID:Ykf9CvnE
>>544
プログラミングが本分じゃ無い人にとっては言語学習はコストだわな。
オブジェクト指向にどのくらい純粋かとか、そんなのどーでも良いんだろう。
おいらは言語オタだから純粋さにこだわって行き着いたのがHaskellだったが。
そのHaskellも実装が関数型言語ならこんな最適化が出来るって本に書いてたことをあんまり実現出来てない、理想から程遠い実装なんだが。
0556デフォルトの名無しさん垢版2017/05/20(土) 09:15:34.10ID:1yTY6BxE
言ってる奴はいるが、ちょろっと検索した程度では見つからないな
検索は万能じゃないというかむしろ無能である
0558デフォルトの名無しさん垢版2017/05/20(土) 10:34:26.74ID:oEL0pKOn
Kotlinが晴れて現世代になったから
次スレからHaskellはスレタイに復帰ですね
永遠の次世代言語として
0559デフォルトの名無しさん垢版2017/05/20(土) 10:36:59.62ID:Ykf9CvnE
へ〜

Haskellは、サーバサイド・ソフトウェアを構築する際の“秘密兵器に最も相応しい”とCarl Baatz氏(Better社の共同設立者)は述べている。
https://www.infoq.com/jp/news/2016/08/haskell-production-retrospective

サーバーサイドで実行するソフトウェアの構築を行う場合は、Haskellは今日探し得る中で最も秘密兵器に近いと言っていいかもしれません。
http://postd.cc/haskell-in-a-startup/
0560デフォルトの名無しさん垢版2017/05/20(土) 10:38:31.13ID:oEL0pKOn
永遠の秘密兵器
0561デフォルトの名無しさん垢版2017/05/20(土) 10:47:37.49ID:K5B4Hn4Z
twitterに捨てられ
採用したchatw○rksは運気が下がり
Kotlinにすら負けた

Scalaよ、どうしてこうなった?
0562デフォルトの名無しさん垢版2017/05/20(土) 11:34:53.45ID:PlVXA0LD
>>553
コードリーディングしてるとき、例えば<$>とか<*>とかが出てきて、さてこの二項演算子の意味はなんだ?って調べたいとする。
Googleの検索窓に突っ込む。記号しかないので検索結果がまともに出てこない。

Hoogleはしらんかったな。
0564デフォルトの名無しさん垢版2017/05/20(土) 11:58:59.27ID:1yTY6BxE
厳格なクラスベースOOPから撤退して手続き型に戻りたいだけじゃないか本音は
しかし撤退しただけというのを秘密にするための兵器が必要だった
0567デフォルトの名無しさん垢版2017/05/20(土) 12:15:26.38ID:Mj4DXfyk
>>561
記号が多すぎたな。
あと簡単に暗黙型変換ができるのはやりすぎだった。
F#にも機能としてはあるが、幸運にもあまり使われていないように思う。
0568デフォルトの名無しさん垢版2017/05/20(土) 12:50:31.59ID:jUCOTPFR
>>539
数学より工学よりだよね。配列扱うには便利。
今年中に1.0になるかな?
毎回のパッケージのコンパイルが不要にならないものか。
0569デフォルトの名無しさん垢版2017/05/20(土) 15:28:37.32ID:SgRoQNx5
>>543
そう言えば、おいらは数学が好きと言ってもHaskell切bチ掛けに好きにbネっただけだし=A数学で何か解瑞ヘしたいわけじb癘ウいんよ。
どっちかっつーと、数そのものの研究?みたいな事は趣味でしてる。
チャーチ数に符号付けてチャーチ数版整数作ったり、少数作ろうとしてチャーチ数って無限進数なんだと気付いて、まず10進数から作らなきゃとか。
0572デフォルトの名無しさん垢版2017/05/20(土) 17:11:03.97ID:SgRoQNx5
高卒の趣味グラマーに何求めてるか知らんが。。。
Haskellを切っ掛けに数学好きになったんだから、大した数学知識は無いよ。
0576デフォルトの名無しさん垢版2017/05/20(土) 21:09:17.84ID:RDFlCbPz
Mathematicaは研究室にあったけど貧乏研究室で2ライセンスしかなく
口頭で使ってるやつに早く終われとか言ってた…
0579デフォルトの名無しさん垢版2017/05/20(土) 22:48:46.22ID:5jKPuKGf
>>577
脇道的話題にレスして済まないのだが正直感謝だ。
エイプリルフールか夢かと思ったがマジだった。数万円が無料って… 意味がわからねえ。
0584デフォルトの名無しさん垢版2017/05/21(日) 04:22:10.79ID:YZtqITyu
>>573-583
言語試したいだけでハード買えって。。。
興味はあるよ。
手続きも書けるのがちょっと引っかかるけど。
純粋じゃ無いんかいって思うけど。
本読んだ限りじゃ悪い印象はそんな無かった。

Haskellみたいな汎用性無いのと導入のハードル(値段だったりハード購入だったり)がね。。。
0587デフォルトの名無しさん垢版2017/05/21(日) 09:30:54.35ID:fDsf7qWs
いあ、買えるけどさぁ。。。
買ってまで触りたいものじゃなし。
ノートじゃ無いから場所固定されるじゃん。
手軽じゃないなぁと。
0589デフォルトの名無しさん垢版2017/05/21(日) 09:33:34.85ID:aAAAG14z
純粋関数型とかモナドとかのワードに惹かれただけの
ショボいコードしか書けないゴミhaskellerモドキはこんなもんだよ
0590デフォルトの名無しさん垢版2017/05/21(日) 09:46:52.19ID:fDsf7qWs
うん。
最初はそう言うワードに惹かれた。
でも今はシンプルな仕様と言うか仕組みが好き。
少ない知識で書いて行けるのが。
そう言う意味じゃCも好きだけどね。

そのショボいコードすら出てこない次世代言語は言語オタに支持されてるだけで、言語オタは実際に役立つコード書いてないんじゃ無い?

少なくとも、おいらのは最終的にはテキストで探したい文の大まかな文脈は表示出来る、文献を参照するのに便利なコマンドになる予定だよ。>>492
0591垢版2017/05/21(日) 09:51:06.00ID:SzG2p8Pq
そういやラズパイにmathematica入ったな、いつか。
俺ずっとMaximaで済ませてたからあれだが。

数学が好きなら、数学を処理する言語使ったほうがいいのは俺も同意する。
0592デフォルトの名無しさん垢版2017/05/21(日) 10:11:58.67ID:GQ3S98if
ついにMathematicaまで貶し始めたな…
ちなみにRaspPi のはZeroでも使えるはず
流石にこれぐらいなら出せるだろ
0593デフォルトの名無しさん垢版2017/05/21(日) 10:28:30.98ID:fDsf7qWs
え、貶してないよ?
次世代言語のここが良いあれがダメって言うだけでコード出さない言語オタは貶したけど。

まあ、おいらもHaskellに出会う前はRubyで"Hello World!!".length.displayとかやるだけで満足してたりする言語オタだったから、人の事言えないんだけどね。

何でもいいから一個の言語を使いこなせるようにまずならないと。
うん。お前が言うなだけど。
0596デフォルトの名無しさん垢版2017/05/21(日) 11:04:40.31ID:NrSnEm53
>>523
"Pharo Smalltalk"

| queue array ans msToRun sorted |

queue := SharedQueue new.
array := (1 to: 1e3) asArray shuffled.
ans := OrderedCollection new.

(1 to: 100) detect: [:m |
   msToRun := [array do: [:n | [(n * m) milliSeconds asDelay wait. queue nextPut: n] fork].
   sorted := (queue next: array size) isSorted] timeToRun asMilliSeconds.
   (ans add: {#m->m. #msToRun->msToRun. #sorted->sorted}) last value.
] ifNone: [].
^ans asArray

"=> {
   {#m->1. #msToRun->1003. #sorted->false}.
   {#m->2. #msToRun->2004. #sorted->false}.
   {#m->3. #msToRun->3004. #sorted->false}.
   {#m->4. #msToRun->4016. #sorted->true}}
"

http://ws.stfx.eu/8W36PYP2PQ1G
0607デフォルトの名無しさん垢版2017/05/22(月) 22:53:09.79ID:NUyV/iNa
ペチパー馬鹿にすんな
トレイトあるんやぞ
Scalaの優れたヤツじゃなくSmalltalk式の劣った方だが
0610デフォルトの名無しさん垢版2017/05/22(月) 23:30:44.58ID:8HqyDksp
>>607
scalaのほうってトレイトと呼んでるけど、実態はmixinじゃないの?
そっちの方が優れてるの?
0612デフォルトの名無しさん垢版2017/05/23(火) 00:44:31.76ID:PZYq3vzy
ペチプァ〜のプァ〜は頭がくるくるプァ〜
よくあんな汚物吐瀉物糞尿下痢で踊り狂えるな
狂気の沙汰だわホンマ

スレが臭くなるから近寄るなよ疫病神
早く死ね
0615デフォルトの名無しさん垢版2017/05/23(火) 01:24:34.96ID:Ut2KtnOs
Goは開発がGoogleじゃなかったら絶対流行らなかった
趣味で言語作りました。試しに作っただけなので複雑な事は出来ません
こんな言語をシンプルだから分かりやすいよ!ってGoogleの知名度使ってゴリ押ししてるだけ
0616デフォルトの名無しさん垢版2017/05/23(火) 01:26:38.72ID:Ut2KtnOs
>>614
forだと無駄な行が多すぎてパッと見て何をしているのか分からない
コメント書かなくても読めるのが良いソースだろ?
0617デフォルトの名無しさん垢版2017/05/23(火) 01:50:10.95ID:6XWqRRso
>>615
複雑なことっつーか抽象度の高いことが出来ないな。汎用ライブラリ書こうとするとinterface地獄になって悪夢見る。

でも不思議なことに手なりで動くもん量産するのにはものすごく向いてる。
マクロがないかわりにgo generateとかいうクソキモい(誉め言葉)機能があることと、
あとはPHPみたいな言語未満の何かで物書いた時のような負債に陥る危険性が、言語としての幅が狭いお陰である程度緩和されてるってのが案外バランス取れてるのよな。
汎用ライブラリ書くのには全然向かないけどね。
0618デフォルトの名無しさん垢版2017/05/23(火) 01:54:36.33ID:6XWqRRso
Googleが作らなかったら流行らなかったってのは大いに同意するが、正確に言うと「Googleじゃないとこんないかれた言語を完成品と言い張れなかった」だと思うね。
周辺ツールの異常な拡充もごり押し戦略の一環だろうしな。
0619デフォルトの名無しさん垢版2017/05/23(火) 01:56:50.35ID:6XWqRRso
総合して、Goは次世代のドカタ言語っていうのが一番しっくりくるわな。
あくまでドカタ言語。
0620デフォルトの名無しさん垢版2017/05/23(火) 07:27:48.45ID:JnTuEITt
>>616
いや、ワンライナーで無理やり書いたソースのが読みにくいよ。
てかそこまで行数使う複雑なコードなら関数で切り出せ。
そういうのは使ってる言語の問題じゃなくて書いてる奴の問題だから。
0622デフォルトの名無しさん垢版2017/05/23(火) 08:14:57.33ID:w55PtzH/
いや内包表記もしくはmap reduceがあるのは大事でしょ
関数として切り出す時にループの中で行うことだけ書けばいいのがmapないとループそのものを行うサブルーチンもかかなくちゃいけなくなるじゃん
map不要とか言う奴絶対Lispすら触ったことないハイパーエアプマンだろ
0625デフォルトの名無しさん垢版2017/05/23(火) 09:55:36.88ID:djHV+jRv
>>617
汎用ライブラリ書けないっていうのはかなり大問題だと思うんだが
ジェネリクスないのが原因でコレクションとかは特別扱いしないといけない
Setとか普通に使えないのは不便すぎるし、SortedSetとか追加しようと思ったらそれも言語で特別扱いするのかってなる
型ごとにコード書くのか?コピペは最も基本的なアンチパターンだよね?それをGoogleは推奨してるのか?

>>618
周辺ツールをこれだけ作ったのに言語がこれじゃもったいない
もう少し機能入れていれば間違えなくもっと流行ってた
0626デフォルトの名無しさん垢版2017/05/23(火) 10:09:21.11ID:6XWqRRso
>>625
ジェネリクスについてはさすがにいれようぜって議論はあるな。
今はそういうのをコピペなしに書くならinterface地獄で、自分もそこは嫌いなとこだ

ちなみにgoの汎用sorted setくらいならgithubに既にある上にめっちゃコード短いから、見てみるのも面白いかもしれんね。
0627デフォルトの名無しさん垢版2017/05/23(火) 10:30:08.82ID:+Srr1GFp
内包表記!ワンライナー!読みにくい!って普段どんな糞コード書いてたらそういう発想に陥るんだろう
0628デフォルトの名無しさん垢版2017/05/23(火) 11:30:14.87ID:3W0XlzKr
まあ長過ぎるワンライナーが読み難いのは分からなくは無い。
でも書くし、読むけど。

昔何かのJavaの本でJavaでも宣言的に書くべきだ。みたいな事が書いてあって、メソッドチェーンされたインスタンスが二行でちょっとした処理してた。

最近C#6実践入門とか言うの買ったけど、それに載ってるコードもifは出るけどforがほとんど無い宣言的なコードだった。
C#6の新機能紹介はほとんどオマケで、タイトル詐欺だけど。
いあ。。。詐欺じゃ無いけど、紹介された新機能が全然頭に入って来ない位、(ドロドロの)実務的な内容。。。
0629デフォルトの名無しさん垢版2017/05/23(火) 11:47:39.23ID:nY7S90+T
Javaは8になって一気に流れ変わった。
なお日本のドカタ現場はJava6をつかっていればましな方なのは内緒な。

ドカタ現場から見ればObj-Cすら次世代言語ってな。
0630デフォルトの名無しさん垢版2017/05/23(火) 13:10:57.22ID:fxr47P4A
Pythonは内包表記でもforって書くんだな
手続きが透けて見える
見えない奴はエアプ
0632デフォルトの名無しさん垢版2017/05/23(火) 13:58:34.02ID:LlhYvOQ7
>>630
まあ透けて見えるのはその通りなんだが、逆に聞くが手続き型が透けてたらいかんのか?
機能としてPythonの内包になんか欠けてるのか?
0633デフォルトの名無しさん垢版2017/05/23(火) 17:59:05.36ID:JnTuEITt
やべーな。。
内包表記、map, reduce 使えるとだいぶ偉いプログラマーになった気分なのかね。。
別にあれば使うけれど、それで読みやすさが格段にあがるなんてことはないわ。
まさに枝葉としか言いようがない。
てかなんでこんなに php 嫌われてるのか使ったことないからわからんのだが。
perl には相当神経やられたってのは個人的にはあるけれど、
php ってそんな嫌なもんなんかね。
0634デフォルトの名無しさん垢版2017/05/23(火) 18:08:35.09ID:PJIONmxy
Haskell的には状態を持たないから、将来並列動作しても良い。
内部動作が実際はどうなってるか気にしなくて良い。
記述上は単純に一行になる。
書きかたによるけど、関数より意味が通じやすいかも。

リストの長さ求める関数length
再帰
length [] = 0
length (_:xs) = 1 + length xs

再帰はスタック消費するので末尾再帰
length cs = length' 0 cs
......................where
..……...................length' n [] = n
..……...................length' n (_:xs) = length (n + 1) xs

末尾再帰を一般化したfoldlで置き換え
length = foldl 0

リスト内包表記
length xs = sum [1 | _ <- xs]

過程を知ってればfoldlも意味分かるけど、リスト内包表記はHaskeller以外にも分かりやすいかも。
0636デフォルトの名無しさん垢版2017/05/23(火) 18:32:56.72ID:FtK5T5KY
>>633
単純にカテゴライズして蔑視したいだけだと思う。
そういうのを除いてPHPが嫌われるのは言語仕様が綺麗とか
汚いとかそういうのではなく、互換性とか環境問題で
無駄なエネルギー使うからだと思ってる。

同じような理由で俺はrubyとかはもう手を出したくないと
思うし。俺が好んで使ってたのは256倍本とか出てた頃で
パッケージやら何やらで随分と改善されてるのは
知ってるけどトラウマなんだよな。
0637デフォルトの名無しさん垢版2017/05/23(火) 18:40:57.13ID:IFQGAtt4
>内包表記、map, reduce 使えるとだいぶ偉いプログラマーになった気分なのかね。。
このレス痛々しくて面白いな
0638垢版2017/05/23(火) 19:15:59.04ID:9OGdTOvp
少なくとも嫌い好きではないわな、仕事なら。
パソコンの大先生なら孤高の言語でオナニーしてくれりゃいいけど。
次世代ってのは、未来の現世代なんだから。
夢ばっか見ても意味ない。
0639 ◆QZaw55cn4c 垢版2017/05/23(火) 19:43:11.53ID:F0rvxaiH
となると、C++ 一本でいくのがいいのでは?
0640デフォルトの名無しさん垢版2017/05/23(火) 19:51:46.81ID:ns4joxA3
結構な大企業でもLispとかHaskell 使ってるあたり自分で書ける能力あるなら採用言語なんか趣味だろ
0644デフォルトの名無しさん垢版2017/05/24(水) 07:21:12.88ID:5yXboscj
>>630
forという単語を見ると手続きが透けて見えるほうがよほど手続き型に脳が汚染されてるだろ。
述語論理の for all は手続きか?
0645垢版2017/05/24(水) 07:39:36.26ID:IPP9nXuk
>>640
自分がかけたら使う、それじゃそいつがやめたら困るわ。
ある程度は浸透してくれたものでないと困る。
0647垢版2017/05/24(水) 08:23:16.84ID:IPP9nXuk
>>646
どういう事?
逃げる訳じゃなくて辞めるんだよ。定年とか、寿あるじゃん。それは仕方ないよ。
教育コストとその言語から得られるメリットのバランス次第じゃないのかな。

新しい人入れるときの問題で、その時に誰でも知ってる言語で地頭があって、そこに自社の資産とか話すのは簡単だし、教育に出しやすいじゃん。自社でもやるし。
書けるから雇うことも無ければ、雇ったからそいつの思うように書かせるわけでも無いんじゃないの?
0648デフォルトの名無しさん垢版2017/05/24(水) 09:11:12.33ID:5yXboscj
知らない言語だからってコードメンテできなくなるようなら
Javaで書いたってろくにメンテできないだろうよ。
0651デフォルトの名無しさん垢版2017/05/24(水) 09:34:21.93ID:MYIIDec9
新人研修の事でもいいたいのか?
チームに組み込まれた新人はそのチームで先輩が使ってる言語と技術はどっちみち勉強するだろ
それすらできん屑新人しかこない企業に勤めてるんなら学校で教えてる言語しか使えなくなるなwww
0652デフォルトの名無しさん垢版2017/05/24(水) 09:37:50.21ID:ztUMEvdN
>>643
ということにしたいだけにしか見えないんだけど
0653垢版2017/05/24(水) 09:44:40.73ID:IPP9nXuk
>>648
とりあえず動くようにメンテするのと、思想含めて正しくメンテするのはちと違うでしょ。
>>649
Cだけわかるとエグいコードになりがちだしね。Cと最近のC#で充分。JavaScript一本でも良いくらい。
>>651
新人じゃなくても研修とかセミナー行くでしょ。
新人しか行かないなら、どんどん化石化するか社員の自費の自己研鑽に頼るしかないじゃん。
会社のために技術を使うなら、その技術は会社が伸ばして当然かと。。
0654デフォルトの名無しさん垢版2017/05/24(水) 10:08:00.08ID:YA6HRJ8D
>649
問題は「自分がその言語で書けるか」ではなく
「他人がその言語で書いたコードを保守できるか」なのでは?
自分が新規コードを書く分には自分が知っている範囲で書けば済むが、
他人のコードを保守するには文法とライブラリを網羅的に知っている必要がある。

C、C#、Java、Ruby、Pythonぐらいは保守できるべき、ぐらいならわかる。
でもC++、Scala、Haskellは文法とライブラリの知識を相当要求する。
C++は普及しているからいいけどScalaとHaskellは保守できる人を雇えるか分からない。
好き好んでScalaやHaskellを選ぶ人は初心者には読めないコードを書くだろうしね。
0655デフォルトの名無しさん垢版2017/05/24(水) 10:25:42.08ID:ZtHNZ56P
空気も読まずにコード投下。
>>537のエラー出ない版をたまたまRuby初心者スレッドで教えてもらえた。

ARGV.each_slice(2).take_while{|e| e.size == 2}.each{|a| print a}
puts

んで、これを元にHaskellでも書いてみた。

import System.Environment

slice2 [] = []
slice2 [_] = []
slice2 (x:y:zs) = (x,y):slice2 zs

main = getArgs >>= print.slice2


>>654
保守するやつが初心者?
得意じゃないとしても、Haskellは入門書とHoogleあれば十分だよ。
0656デフォルトの名無しさん垢版2017/05/24(水) 10:25:51.23ID:MYIIDec9
>>653
技術は会社が伸ばすから勝手な技術は使うなってことか
すごい文化だな。とてもリーディングカンパニーの考え方とは思えない
大方人から指定されたものを作るだけの創造性のない事業分野なんだろうな
0657デフォルトの名無しさん垢版2017/05/24(水) 10:32:58.90ID:IgnTlSHt
C++大先生レベルになったら未知の言語でも読めるだろ
未知だから学習コスト0だがなぜか読める
0659デフォルトの名無しさん垢版2017/05/24(水) 10:43:10.23ID:+1dTaw0E
>>656
社内開発用言語縛って生産性維持しながら会社全体で技術叩き上げてるGoogleさんのdisおっつおっつ
0661デフォルトの名無しさん垢版2017/05/24(水) 10:50:54.70ID:IgnTlSHt
縛りというか、C++禁止されてないのが重要だと思うが
0662デフォルトの名無しさん垢版2017/05/24(水) 10:57:13.01ID:AMRdndrm
>>660
プロトタイプのコードはメンテしないだろ。そりゃ好きな言語で書けばいいさ。
メンテするプロダクトコードはあのGoogleですら言語ガチガチに縛ってそのなかで技術上げてるのに(最近だとGrumpyとかな)、
出来る人材ならどんな言語でもすぐ習得して既存コードメンテ出来るようになるっていうのは幻想。
ある程度ならいけるが限度はある。
0664デフォルトの名無しさん垢版2017/05/24(水) 11:14:18.14ID:MYIIDec9
なんか主張がとっちらかってきたけど、実際割と好きな言語使えるリーディングカンパニーがあるんだから、それはダメとか俺に言われても知らんがな
0665デフォルトの名無しさん垢版2017/05/24(水) 12:19:17.63ID:5yXboscj
他人が書いたコードを思想も含めて正しくメンテできるのに
「だってこれボクが好きな言語じゃないもん」
とか言って仕事投げ出すのか。
ゆとった会社だな。
0666垢版2017/05/24(水) 12:20:52.22ID:IPP9nXuk
>>656
個人で伸ばせばそりゃ素晴らしい事だよ。
勝手な技術使うな、は当たり前では?
簡単なことで、単に社内に布教するだけだよ。
それだけで勝手な技術じゃなくなるんだから。

金貰って作ってる以上、指定されたと言うより要件定義から離れる事は良い方向でも悪い方向でも等しく害悪。
それを使うよう、要件定義を見直しゃいいじゃん?
0667デフォルトの名無しさん垢版2017/05/24(水) 12:23:07.52ID:MnuqeZiD
>>663
TypeScriptが承認されるまで延々レビューを繰り返して2年かかったという話を読んで、
Googleといえども典型的な大企業病からは逃れられなかったんだなと思った
0668垢版2017/05/24(水) 12:35:44.71ID:IPP9nXuk
勝手に使う、と、好きな言語を使う、は別だって事に尽きる。
好きな言語が使いたきゃ、ホント通せば良いだけじゃん。
0670デフォルトの名無しさん垢版2017/05/24(水) 13:09:07.02ID:MYIIDec9
つーか前半部分は当然のことすぎてそんなこと議論しようとしてるとは思わんかった
0672デフォルトの名無しさん垢版2017/05/24(水) 14:12:27.03ID:5yXboscj
広めるにしたって、仕事を通して広めるのが当然だろ。
そこを門前払いして「浸透してない言語はダメー」とか、ゆとりすぎ。
0673デフォルトの名無しさん垢版2017/05/24(水) 14:13:44.48ID:5yXboscj
上のほうが「マネージャ目線で考えろ、コストを減らせ、技術を革新しろ」と掛け声ばかりな会社でありがちそうな風景だな。
0675デフォルトの名無しさん垢版2017/05/24(水) 15:36:29.01ID:/ySUjkwg
>>674
それだけならkotlin, scala, ruby, php, perlあたりはとっくに承認されてるだろ
「それお前の好みの問題だよね?」と言われないような理由を示す必要があるんだと思うよ
0676デフォルトの名無しさん垢版2017/05/24(水) 15:44:55.21ID:AMRdndrm
さすがにperl PHPが通るとは思えんなwwwwwww
というのはともかくなんだかんだ追加承認のフローが整備されてるのは日本企業では考えられんよな。
0677垢版2017/05/24(水) 18:36:08.72ID:IPP9nXuk
>>672
仕事を通して広めるってのがわからんな。
別にプレゼン力次第じゃないの?
あとは、小物を同時に作って見せればいいと思う。
研究開発費くらいあるだろ。

>>676
追加承認なんてどこでもやってるだろ…。
別様式の帳票(物理)をスタンプリレーするみたいなオマケもついとる。
perlはともかく、phpはGAEでも動くし、嫌悪感と実利のちょうど真ん中程度の立ち位置じゃないの?
0679デフォルトの名無しさん垢版2017/05/24(水) 18:58:25.42ID:fS2T0Ehb
先輩が言語にこだわってるうちは伸びないって言ってたな。
所詮道具なんだから、作るものに合わせて相応しい言語選ぶだろ。
0680デフォルトの名無しさん垢版2017/05/24(水) 19:09:48.27ID:5yXboscj
バカバカしい。
既に職場で広く浸透した言語に限定するのなら、全く「次世代」の話じゃないな。
スレ違い。
0681デフォルトの名無しさん垢版2017/05/24(水) 19:14:40.02ID:MYIIDec9
全く誰だよこのスレで「ある程度は浸透してくれたものでないと困る。」とか言い出した奴は
0684垢版2017/05/24(水) 19:27:50.59ID:vKYHCzYh
>>680
次世代言語だから、その職場には浸透させるんだろ。
世間としてその存在やら概念が浸透していないのとはまた違う。
取り違えるなよ。バカバカしいのはお前だよ。
>>681
すまんな。ここまで読解力無いやつ想定してなかったわ。
0685デフォルトの名無しさん垢版2017/05/24(水) 19:29:22.75ID:AMRdndrm
「次流行る言語はなんだろうなー」って駄弁るのと、
「わが社で次に採用するべき言語はなんだ?」って会議するのとの違いじゃね?
自分は前者のつもりで駄弁ってたけど、後者のつもりのやつがスレに紛れ込んでるだけな気がするわ
0686垢版2017/05/24(水) 19:32:35.06ID:vKYHCzYh
>>685
我が社というより、皆が次に使うべき言語は何なんだろう、何故適しているんだろうって言う話かなと。
そうなると、前者も後者もあんまり変わらない話に聞こえる。
0689デフォルトの名無しさん垢版2017/05/24(水) 19:47:07.86ID:AMRdndrm
>>685
前者と後者が変わらんのはベンチャーもしくは顔本林檎みたいな超最先端企業くらいだぞ。
今使ってる言語を変えたい経営者なんていない。たとえそれがサポート切れたJavaでもVB6でもCOBOLでも。
0690デフォルトの名無しさん垢版2017/05/24(水) 19:50:28.81ID:DLDz9laB
Java8使ってもラムダ使用禁止の現場とかあるらしいな
全員が分からないからとか何とか
0691デフォルトの名無しさん垢版2017/05/24(水) 20:02:02.58ID:MYIIDec9
そんなドカタ現場の人が来るべきスレじゃないだろ……
繰り返すけどさ、採用言語は趣味だよ
変なのに噛みつかれないように厳密に書くと、社内で布教して一定の承認を得るのは当然の手続きであり、そこまで努力しなくてもそれが可能な企業orアカデミックは普通に存在する
そしてそもそもそれが出来ないような可能性を考慮しないといけないような奴が来るべきスレではない
0694垢版2017/05/24(水) 20:04:40.24ID:vKYHCzYh
>>687
Javaか…。まあ、環境変えるなのお達しがある案件だとどーしようもないのもわかる。
>>688
わかりにくいなら、わかりにくかったと言えよ。
誤解してドヤ顔で反論してからのそれは流石に言訳だろ。
0695デフォルトの名無しさん垢版2017/05/24(水) 20:05:22.82ID:AMRdndrm
>>691
また誤爆した。
つまりこのスレにいるドカタは俺くらいで他はみんなイケイケベンチャー社員か世界の大企業社員様くらいなのね。納得。

存在がスレチだったようですまんね。
0696デフォルトの名無しさん垢版2017/05/24(水) 20:13:22.76ID:MYIIDec9
>>694
今回は暫く意思疎通出来てないことに気づかなかったからな。具体的には>>666でやっと気づいたわ
だから意味分からなかった旨を>>670で伝えただろう?
これもまだ意味を汲めていないなら分からんけど
0698デフォルトの名無しさん垢版2017/05/24(水) 20:26:49.54ID:new7aopo
なんやこれ…
とりあえずエンジニアガイジは自分の主張を三行にまとめてみたら?
俺もよく分からんし
0699デフォルトの名無しさん垢版2017/05/24(水) 20:32:20.07ID:MYIIDec9
>>695
いや存在がスレチとまでは言わんけど……
でも自分が絶対使えない言語の議論してなんか意味あるかなーとは思うぞ
プロトタイピングの話ししてるんなら使えるから有効だと思うから、プロトタイピングの話ししにきてるんならスレチじゃないと思う
0700デフォルトの名無しさん垢版2017/05/24(水) 21:13:58.52ID:tWWOwCUP
なんつーか、リアルでは関わりたくないタイプではあるなぁ
0701垢版2017/05/24(水) 21:25:40.50ID:vKYHCzYh
>>696
なるほど。確かに。言ってるな。ごめん。
>>698
3行にまとめれば、理解できないやつに文句を言われ、
一つずつ演繹的に書けば、過去レスまで遡る気かと言われ、
長文で話すとこう言われ。

それぞれの方法で理解できてる人間もいる中で「僕に理解できる方法で話して!」って子供みたいなこと言われてもどーしようもなかろう。
0702デフォルトの名無しさん垢版2017/05/24(水) 21:27:44.10ID:oJe0HEfY
大企業じゃなくて中小がやるようなWebシステムとかなら以外と新しいもの使ったりするけどね
0703デフォルトの名無しさん垢版2017/05/24(水) 21:29:05.11ID:76en5qLo
本人だけ自覚が無いから
本人だけはいつまでも他人が悪いと思ってる
これが、放置され続けて来た子の末路です
0704デフォルトの名無しさん垢版2017/05/24(水) 21:45:09.29ID:+DimD/vP
では、大企業基準を採用して、
COBOL, VB6, Java 1.4の中からどれが次世代言語にふさわしいか議論しましょう
0705デフォルトの名無しさん垢版2017/05/24(水) 21:45:33.98ID:new7aopo
>>701
んー。本当に言いたいことだけを抽出できてない気がする
それと自分の立場を明示できていないせいで誤解されてるのかも
最初に自分の立場を明確にした上で、レスごとに大事な部分を強調するようにしてみたら?
0710デフォルトの名無しさん垢版2017/05/24(水) 23:43:15.95ID:DLDz9laB
3年程前まで居た現場はJava 1.4だったよ、客は一部上場企業ね
まぁ抜ける時に丁度バージョンアップどうするって話はしてたな
7は新しすぎるから6で、みたいだった記憶
0711デフォルトの名無しさん垢版2017/05/25(木) 01:15:47.85ID:S4aSECR+
>>709
Rustをわかってないな。あれはなんたらチェッカーが強すぎてHelloWorld以上のことをしようとするとコンパイルが通らずにそもそもプログラムにならんのさ。
PHPはとりあえずゴミやカスを生産はできる。でもRustからは何も生まれない。ゴミやカスが生まれないって意味ではよい言語かもな。製品も生まれんが。
0713垢版2017/05/25(木) 08:28:51.58ID:9n8bzUby
>>705
なるほど。マジでありがとう。
いろんな話に首突っ込んでるし余計にか。
会社では、とか、個人的には、とか枕つけるのと、うざいって言われるかもしらんが少々冗長でもパラグラフ末に結論書くとか、工夫するわ。
0714垢版2017/05/25(木) 08:31:56.06ID:9n8bzUby
>>711
まあ、若い人が存在を知ってるかはわからんが、イライラ棒に近いわな。
CのプロジェクトでMISRA-Cの推奨も網羅すること!でリンタ定義が配られて来たときくらいのめんどくささ。
0715デフォルトの名無しさん垢版2017/05/25(木) 09:03:26.85ID:tgvA03tX
Rust普通に使ってるけど、そんなに悪いかな?
社内用のgccのtemplate系のエラー解析ライブラリをRustで書いてみんなで使ってる
0718デフォルトの名無しさん垢版2017/05/25(木) 10:48:29.16ID:jD8c7u6v
そう言えばみんなは自分の好きな次世代言語のどんなコードが気に入って好きになったんだろう?
こう言う処理をこう書けるのがクール!!とか有ったんだよね?
0720デフォルトの名無しさん垢版2017/05/25(木) 11:34:58.13ID:9Efltc2N
>>714
イライラ棒にはちゃんとゴールあるじゃん。
Rustにゴール(コンパイルが通ってかつ望むロジックが実現できるコード)はない。
0723デフォルトの名無しさん垢版2017/05/25(木) 16:07:04.62ID:s+W1gv2M
>>721
ギターの弦のことかと思った
0726デフォルトの名無しさん垢版2017/05/25(木) 18:33:25.61ID:Gj42CiwS
>>724
チェッカー内で作れるもの作ってるだけじゃん。
PHPでもまともなものは作れるっていう戯言と何ら情報量変わらん。
0727垢版2017/05/25(木) 19:26:06.45ID:9n8bzUby
>>720
小物作る分にはゴールはあるよ。
イライラ棒の棒と同じで、全く何にも触れていない棒がゴールで手に入るだけ。
ホントに触れないことが必要なのかはおいといて。
0728垢版2017/05/25(木) 19:30:40.36ID:9n8bzUby
>>726
チェッカー内で作れる物作ってるだけ、ってなんだそりゃw
作ってはいけないものが作れなくなってるだけで、もともとそう言うコードは書くべきでないし、
そんな事言うと誰もがチェッカー内で作れるもの作ってるだけなんじゃねえの?
元からあったしね。推奨ですらハネてビルドかけてもらえないプロジェクトとか。

単に技術か経験どちらか、または両方足りないだけでは?
0730デフォルトの名無しさん垢版2017/05/25(木) 20:06:43.93ID:GLCbsyY4
次世代言語だから浸透させるんだとかいう一方で
浸透してないようなものは次世代言語じゃないとか言い出すような
一貫性の欠片もない人が紛れ込んでいるとスレの流れが速くなるなw
0731デフォルトの名無しさん垢版2017/05/25(木) 20:11:02.34ID:qvTBr+rP
次世代言語って開発効率は旧世代より高くあるべきだと思うし開発効率が低下するような言語は次世代言語とは言えないんじゃない?
0733デフォルトの名無しさん垢版2017/05/25(木) 21:19:02.52ID:Gj42CiwS
>>729
有名どころだとグラフ構造。あと木構造も結構辛い。
書けなくはないがチェッカー通そうと思ったらbox rc rcref祭とか色々あったり、イテレータの肩だけで一行の長さぶっちぎったり、無名関数引き回すとぶっ壊れたり、
とにかく存在が破綻してんの。
0734デフォルトの名無しさん垢版2017/05/25(木) 21:22:58.60ID:Gj42CiwS
>>731
そうそうこれこれ。俺たちは物を作りたいんであってチェッカーと腕相撲したいんじゃないって話。
Rustは生産性と書けるプログラムの幅が既存の言語よりはるかに低いっていう破綻があるわけよ。
0735デフォルトの名無しさん垢版2017/05/25(木) 21:24:57.72ID:Gj42CiwS
C++である程度の規模のプログラム書いてValgrind通したものをRustに移植してみれば俺の言ったことが分かるはずだ
0743デフォルトの名無しさん垢版2017/05/25(木) 22:23:36.26ID:Fjpm+mem
開発が有限時間で終わるか否かの1bitを予言するだけでも難しい
0744垢版2017/05/25(木) 22:44:08.26ID:hnBoF8Hs
>>730
説明してもまだ誤解してるのか。
浸透する場が違うじゃん。
0745垢版2017/05/25(木) 22:45:54.43ID:hnBoF8Hs
>>734
腕相撲なんかせんと、まともに考えれば良いだけじゃん?
今までいかに、問題を腕力でねじ伏せてたかよくわかる発言だな。
0746デフォルトの名無しさん垢版2017/05/25(木) 23:16:36.34ID:Fjpm+mem
要するに実行時にチェックするプログラムは簡単に作れるのに対して
コンパイル時だと全てのチェックを通り抜ける解が存在するのかという疑問がある
0747デフォルトの名無しさん垢版2017/05/26(金) 00:03:00.80ID:wwO+KkLH
HaskellでqueueをO(1)で実装しろって程度の話>Rustでグラフ/木を作る
純粋関数型なHaskellで2リストキューを使った素朴な方法だとしんどいし、所有権とメモリ管理が厳格なRustだとADTで書き下すグラフや木はめんどい

どっちもライブラリは既にあるんで、破綻してると声高に連呼するなんて馬鹿じゃないとできないよ
0748デフォルトの名無しさん垢版2017/05/26(金) 00:17:50.32ID:5gPc0nT0
>>733
>>715だけど再帰下降パーサで作ったから普通にグラフ構造でできてるよ
コンパイルエラーが嫌いなのかな?C++でもテンプレートとか嫌いそうな感じがする
0749デフォルトの名無しさん垢版2017/05/26(金) 00:24:47.24ID:W8U5vxkJ
終了直前まで一切メモリ解放しなくていいならできるのは自明

既に解かれた問題だけを選べば破綻しないのも自明
0751デフォルトの名無しさん垢版2017/05/26(金) 06:26:55.41ID:Xdie43+z
とりま>>748には最低限の機能のものでいいので
コンパイルがちゃんと通るグラフ構造の実装をplay.rust-lang.orgに上げてもらって
>>747はそれを他言語と同じくらい簡潔に書けるというライブラリで
書き直したのを見せてくれまいか?
0753垢版2017/05/26(金) 10:45:05.62ID:uOeVRBLK
>>752
反省はするが、こういう、特に意見がない限り発言しない、自分がノイジーマイノリティなのかどうかわからん場で、大多数は使うべきじゃないよ。
0756デフォルトの名無しさん垢版2017/05/26(金) 15:59:13.78ID:El26kNsy
そりゃ最初にソース書いたやつは楽だっただろうけどさ
1/1Mの確率で発生する実行時バグの再現とかうんざりなんだけどw

rustってそういう方向で発展した感じはする
0757デフォルトの名無しさん垢版2017/05/26(金) 16:13:44.05ID:/9nVrKkw
数千万人が使うFirefoxの開発のために作られた言語を
一般のソフトウェア開発に適用しようというのが間違いあり
0758垢版2017/05/26(金) 16:56:09.15ID:WBRM/ZCu
>>754
とヒトコト言い返されたのか。
0762デフォルトの名無しさん垢版2017/05/27(土) 08:54:52.85ID:L7+QfvMM
やっぱscalaってkotlinに駆逐されるのかな

プログラミング言語でさえ悪貨は良貨を駆逐する状態だからな
例えばPHP
それがkotlinくらいまともな言語で、ググールがバックで突き上げてくるとなると・・・・・・・
0763垢版2017/05/27(土) 09:42:37.89ID:sEq8ObI0
>>760
単純な興味だけど、どっちの何がほしいんだろ?
0764デフォルトの名無しさん垢版2017/05/27(土) 10:57:46.16ID:reRwAhMh
C#/TypeScript/Kotlinあたりは今やプログラミング言語の一つの大きな派閥をなしてるよな
あとはネイティブにも同様の思想の言語の決定版ができれば完成なんだが
0765デフォルトの名無しさん垢版2017/05/27(土) 11:00:36.94ID:Eqsuq0s8
>>764
Rust使うほどの速度は求めてないけど、Goはリスト操作関数とかジェネリクスとかなくて辛いって時に使える丁度良いネイティブ言語欲しいよね
0768デフォルトの名無しさん垢版2017/05/27(土) 13:20:29.95ID:XQaVXkEd
安全で性能が高いリストを言語の専門家の側で作ってくれてたら貴重な研究時間をリストのコーディングなんかに割かなくてよくなるからな
新しい言語を触るたびにまず自分専用のリストをコーディングするところから始まるなら既に資産のあるCかFortranでいいわw
0771デフォルトの名無しさん垢版2017/05/27(土) 18:41:54.29ID:iIPWFR2r
>>770
最近マルチコアやらHTやらでベンチ結果がC#と逆転することもあるとか聞いたけど
dotnet自体とネイティブでの話だっけ?
0773デフォルトの名無しさん垢版2017/05/28(日) 00:11:35.08ID:Sy0/3upe
偶にJavaでネイティブより早い場合があった記憶だけど、どんな理由でそうなるんだろう
0774デフォルトの名無しさん垢版2017/05/28(日) 00:23:47.84ID:ICysod8P
>>773
理屈で考えてそんなことあるわけねーだろ…
何もかかってないたこ焼きと、すでにソースとマヨがかかってるたこ焼きに何かを足して
どっちが美味しくなるポテンシャルありますかみたいなことだぞ
なんもかかってないほうがポテンシャルあるに決まってんだろ
0776デフォルトの名無しさん垢版2017/05/28(日) 00:54:48.38ID:U0KxOEQh
ネイティブとマネージドだと徹底的に最適化した場合は当然ネイティブが速いけど、
C(++)とかよりマルチスレッドを楽に実装出来るC#とかならC++だと面倒でスレッド使う気無くすような所でも使えるから同じ労力なら速くなる(かもしれない)
0777デフォルトの名無しさん垢版2017/05/28(日) 01:15:59.27ID:4Fx58v3m
JITでコンパイルしたネイティブコードだけじゃなく計算した結果も後で使いまわすんじゃねーの
うまくヒットすれば凄く速くなるけど下手すると効率悪い、メモリ喰う、処理も増えるの三重苦
0778デフォルトの名無しさん垢版2017/05/28(日) 01:17:31.30ID:U0KxOEQh
あとGCはメモリ足りなくなってから処理走らせるからC++で使い終わるたびにdeleteするより速い場合も極まれにあるって誰かが言ってた希ガス
0783垢版2017/05/28(日) 08:13:50.68ID:69h6ECeI
JITと何も考えてないネイティブなら、JITのほうが速いこともそこそこあるだろ。
有るか無いかわからないからベクトル演算命令使わないバイナリと、JITが使うように、使えないように、どちらでもなく展開できるように書いてある中間バイナリなら中間バイナリのほうがいいと思う。
0784デフォルトの名無しさん垢版2017/05/28(日) 08:55:10.15ID:7vnd2VbN
自分だけしか使わない常時起動の鯖に置くシステムで
長期間使うから次世代言語で作ろうと思ったけど
このスレ読んでたらどの言語選んだらいいのか判らなくなったから
RabbitMQ建ててとりあえずpythonで実装して連携させてみた

少しずつ次世代言語に置き換えていこうと思ったけと
常用するシステムって一度動いちゃうと
他の言語で再実装する気が無くなってくるね・・・

まずはerlang勉強してみる
0786デフォルトの名無しさん垢版2017/05/28(日) 09:48:01.98ID:3JFLUc/w
erlangとかElixirとか、そんな流行ってもない古いオワプロ(終わったプログラミング言語)使っても
ええことないで
0787デフォルトの名無しさん垢版2017/05/28(日) 10:12:17.25ID:rsSu7Dn/
キラーコンテンツ1本でひっくり返るような評価なんだから
好きなの作ればいい
世間の技術者はもっと柔軟だよ
0790デフォルトの名無しさん垢版2017/05/28(日) 12:59:24.25ID:U0KxOEQh
>>789
>Rust使うほどの速度は求めてないけど
つまりGCがあってメモリ安全って事な
0799デフォルトの名無しさん垢版2017/05/28(日) 14:54:43.46ID:f+PScB+/
不老不死の薬の名前を冠す言語がそう簡単に終わるはずはない
仮に終わっても魔術によって復活する
0807デフォルトの名無しさん垢版2017/05/28(日) 22:18:28.95ID:Sy0/3upe
Rust知らないけどGoは処理の都度軽量スレッド作成して実行するだけじゃないん?
haskellで軽量スレッドの便利さ知ったわ、有名なのはErlangだろうけど
0809デフォルトの名無しさん垢版2017/05/29(月) 09:14:05.07ID:GJ83UXew
マルチスレッドの分散処理とかネイティブなら意図的に書かないと分散されないとかあるんじゃない?
0810デフォルトの名無しさん垢版2017/05/29(月) 10:31:24.03ID:QfBUHXY+
ところで次世代言語スレとしては「書けるけど面倒」は「書けない」と同義と扱ってもいいよな?
チューリング完全を扱うスレじゃないんだし
0811デフォルトの名無しさん垢版2017/05/29(月) 11:14:43.44ID:iVofvGGy
はああ〜〜 息をするのも面倒でいやだ
0812垢版2017/05/29(月) 13:01:56.82ID:GBTOKQdE
>>810
かけるけど面倒だけど、他には無いメリットがある、ならアリだと思うが。
Rustはもちろん面倒だが、チェッカが正しいから面倒だし、
Goの if err != nilも、何回書くんだこれってなりがちだけど、シンプルさといろんな意味での長距離のジャンプをさせないがために面倒だし。

ただただひたすら面倒な物とは多少違うかと。
世の中にはチューリング完全でない、と言うことに意味のあるものもあるしね。
DSLだけど帳票出力言語とか書いたことあって、敢えてチューリング完全にならない様に書いた事ある。
事実それ以前の帳票出力言語で闇ばっかり生まれてたのが綺麗に抹殺されて、
見かけの工数は2割くらい増えてるけどトータルの工数で統計取ったら8割減という驚きの結果が出た。
0814デフォルトの名無しさん垢版2017/05/29(月) 14:12:49.13ID:QfBUHXY+
>>812
安全さのために面倒になってしまう進化もありということね? 確かにCは面倒な上に危険だもんね
後半の話はよくわからん。それ関係なくない?
>>813
賛成ということね?
0815デフォルトの名無しさん垢版2017/05/29(月) 14:23:05.93ID:MJszAqXA
次世代には開発での見かけの生産性だけ高くても意味ないじゃん
って問題意識があるような

rustはチェッカーでエラー出してはねとばし(だから警告じゃダメ)
Goは言語仕様小さくしまくって
でも目的は同じみたいな
0816デフォルトの名無しさん垢版2017/05/29(月) 14:30:20.43ID:KWmGTlOy
いくら優れてても流行らなければ何の意味もない
言語自体の優劣をどうやって決めるのか

次世代って言うのは単に次に流行る言語って意味だ
多くの人が使い次の世代を担っていく言語だ

なになにの機能がないから次世代じゃないとか本末転倒

見かけだけの生産性が高い言語が流行ったとしてそれが社会の求めるものだったら
そういうことだ
それが理解できないようでは次世代もくそもない
0817垢版2017/05/29(月) 14:44:37.26ID:GBTOKQdE
>>814
Kotlinなんかで、この中にDSLを内包しよう、という動きもあるが、あれには完全に賛成とは言わんと言う意味と、
○○の○○を書くときにめんどくさい、と言う反論への、○○を書くべく好きに言語選んだり作れと言う予め言っときたい反論。
0818デフォルトの名無しさん垢版2017/05/29(月) 16:10:34.95ID:QfBUHXY+
このスレに来てる人で「安全だけど面倒」系の言語を推してる人ってどういう人なんだろう?
そういう言語ってプロトタイピングに使える訳じゃないから本番用だろうし、本番の言語を決定出来る立場の人なんだろうか?
0821デフォルトの名無しさん垢版2017/05/29(月) 16:45:39.75ID:QfBUHXY+
>>819
ねえ神様その訂正って本当に正しいのですか?
横着が許されるような言語とはPHP以外にどのような言語があるのでしょう?
0826デフォルトの名無しさん垢版2017/05/29(月) 20:11:17.48ID:VknhjnwZ
つーかここの人が求めてるものってなんだ?趣味で扱う言語?それとも仕事で扱う言語?
仕事なら商品として売りものを作る用?それともプロトタイピング用?
俺はプロトタイピング+趣味なんだけど
0828デフォルトの名無しさん垢版2017/05/29(月) 20:46:24.41ID:ZANWFrCy
プロトタイピング目的なら型がだるいRustとかScalaとかHaskellとか選外だと思うんだが?
0829デフォルトの名無しさん垢版2017/05/29(月) 20:53:06.38ID:IJYAREKV
ろくにアセンブラ使ったことないヤツに限ってアセンブラ万能説唱えるよな
理論上可能だとしても現実的には大体無理
0830デフォルトの名無しさん垢版2017/05/29(月) 20:54:05.50ID:HfKGNWZk
>>828
お前は動的言語なら型を全く気にしないのか?
Rustはともかくただの静的言語でScalaの型ダルイっていうのはおかしいと思う
Haskellは触った事ないから知らん
0831デフォルトの名無しさん垢版2017/05/29(月) 21:00:14.21ID:ZANWFrCy
>>830
プロトタイプならって言ってるだろ……
プロダクションならScalaは良い候補。Haskellは性能で選外。Rustは欠陥なので選外
0832デフォルトの名無しさん垢版2017/05/29(月) 21:02:13.17ID:HfKGNWZk
>>831
プロトタイプでも動的は駄目だわ
書かないだけで型を意識するのは変わらないし
0833デフォルトの名無しさん垢版2017/05/29(月) 21:03:35.01ID:HfKGNWZk
理由が「型がだるい」じゃなくて「IDE起動がだるい」とか「コンパイルがだるい」ならまだ分かるけど
0834デフォルトの名無しさん垢版2017/05/29(月) 21:10:58.51ID:VknhjnwZ
>>828
プロトタイピングとか自分用の道具でもある程度規模が大きくなって来ると型のサポートが欲しくなって来てな
0835デフォルトの名無しさん垢版2017/05/29(月) 21:40:27.19ID:1GyH5Yoq
おまいらがアーアンがいいとかルーストがいいとかワガママ言っても、
コトィンがランゲージオブネクストザジェネレーションの地位を確立したのは疑いようのないトゥルス

0 == "0"がtrueかfalseかなんて疑問が毎秒1000ビリオンダラーの損失を叩き出すPHPが
なぜか世界最大級の地位を確立したように
おまいらは低きに、そして大流に流されるだけの哀れな落ち葉でしかないんだよ
いつか腐葉土になる日もくるかもしれないが、まぁね
0841デフォルトの名無しさん垢版2017/05/30(火) 05:38:55.18ID:LPiGbjps
10年前ならわかるが、今のHaskellの性能では論外になるような案件って、そう多くないんだがなあ。

まあ、言ってみたかっただけなんだろうけど。
0842デフォルトの名無しさん垢版2017/05/30(火) 07:33:30.59ID:v66/o58F
Haskellで書いたコードは見た目がキモくてジンマシンが出ちゃう人続出なのでダメです
0843デフォルトの名無しさん垢版2017/05/30(火) 08:43:27.37ID:83Cyphvh
性能で選外はどうかと思うなぁ
そんなもん使う人増えれば最適化進むんだし
0847デフォルトの名無しさん垢版2017/05/30(火) 11:11:01.01ID:cUShYlMs
Rustと比べたらHaskellだって実用言語。次スレからはHaskellの復活はいいとしてもRustをスレタイから外すことを提案
0849デフォルトの名無しさん垢版2017/05/30(火) 12:42:11.61ID:8eoxxCqM
まーた特定言語叩きが始まった
ネットの情報だけを元に叩く事しかしない引きこもりばかり
0851垢版2017/05/30(火) 12:52:24.90ID:CncaY8jR
>>818
横着にもかける言語で、横着が許されない類のプロジェクトに関わった事がある人では?俺もそうだし。
次世代という意味で期待してるってのもいろんな面があって、
とにかく楽な言語、とにかく早い言語、とにかくメモリー使わない言語、とにかく安全な言語と求めるものが違うところに、
これこそ至高!と全部中途半端なRubyとHaskell出てくるからめっちゃくちゃウザい。

>>824
再帰的な構造はかけるでしょ。
再帰的なデータ型も書ける。
だめなのは、多相の組み合わせが爆発するか循環してしまうもので、当たり前だがHaskellみたいに実行時に多相性を解決してるんじゃなくて、コンパイル時に解決されるからで、そのコンパイル時の解決を行うときに死ぬから。
コンパイル時解決は、というモットーというかテーゼなので、仕方ない。
し、そもそも、そんなものを作るべきではないというのが公式の見解かと。
コンパイル時に多相を解決する言語ならだいたい同じ。
0852垢版2017/05/30(火) 12:55:16.76ID:CncaY8jR
そもそも、そこまでプッシュしてないRustに、異常にアンチしてる奴がわからんなと思ってたら、
色んなスレに「僕には理解できなかったし、すごいプロダクトも見つからなかったからこれはゴミ!」って書いてる奴なんだな。
0854デフォルトの名無しさん垢版2017/05/30(火) 13:17:09.64ID:ynDKwlR5
>>851
>当たり前だがHaskellみたいに実行時に多相性を解決してる
おいおい、Haskellの実装知ってんのか?
Haskellで実行時に型情報が必要な多相性はほんの一部だ。
ほとんどの場合、コンパイル時に解決される。
0859デフォルトの名無しさん垢版2017/05/30(火) 14:34:50.93ID:cUShYlMs
別にRustのステマ部隊にガイジって言われようと本望だしなぁ……
まともに書けたっていうRustアプリのソースでもって出してくれりゃ退散するのにね。
0860デフォルトの名無しさん垢版2017/05/30(火) 14:54:59.04ID:3SkGkDqj
たしかにこの後に及んで一切ソースが出ないRustははっきり言って異常だ
Rust擁護勢の方がガイジレベル高いな
0863垢版2017/05/30(火) 16:00:40.31ID:CncaY8jR
>>853
おお、グイグイくるな。
最近言ってなきゃいいわけではないでそ。
>>854
知ってるよ。実行時に多相性を「しない」のならその主張もわかるが、「ほとんどの場合しない」は「してる」だよ。
「施錠確認した?」「ほとんどしました」って、要は全く施錠の確認できてないのと変わらんよね。

>>735
答えたような。それ。
0865デフォルトの名無しさん垢版2017/05/30(火) 16:40:24.65ID:8eoxxCqM
Ruby、Haskell、Smalltalkときて今度はRust
そもそも、まともに知りもせず想像でひたすら叩き合ってるだけ
それを建設的かのように振る舞うのがおかしい
0866デフォルトの名無しさん垢版2017/05/30(火) 16:45:38.14ID:xHXzQ5Z2
RustよりGo外そうぜ
実用的かもしれないけど次世代言語とは呼べない
あれ前世代実用言語だろ
0867デフォルトの名無しさん垢版2017/05/30(火) 16:49:34.00ID:2BqlBcyR
次世代言語は来るに任せるべき。 今はC#で十分。
大事なのは、ビジネスモデルを構築できるかという事。 言語はただのツール
0868デフォルトの名無しさん垢版2017/05/30(火) 16:53:10.33ID:xHXzQ5Z2
C#とScala(Kotlin)は二大実用次世代言語だと思う
0869デフォルトの名無しさん垢版2017/05/30(火) 16:53:38.72ID:cUShYlMs
>>865
知ってるから叩いてるんだよなあ。よくしらないとか想像で叩かないでほしい。

ステマに騙されてRustで無駄な時間を過ごす人が出ないようにしてる訳だから俺は建設的な話してる
0871デフォルトの名無しさん垢版2017/05/30(火) 16:59:32.47ID:rSfKoxDq
>>870
それはC++が至高だと仰ってる?
0872デフォルトの名無しさん垢版2017/05/30(火) 17:00:15.77ID:xHXzQ5Z2
>>870
C++が使われてるって事はいるって事だろ
0874デフォルトの名無しさん垢版2017/05/30(火) 17:26:58.34ID:xHXzQ5Z2
>>873
C++の後継はメモリ管理自由に出来てネイティブな事が最低条件だろ
0877デフォルトの名無しさん垢版2017/05/30(火) 18:23:19.22ID:ixvaRPT7
自己弁護の神だからしゃーない
>>863二段落目についてはあまりに下手糞な理論展開のせいで真意が伝わっていないだけだと思うけど
0878垢版2017/05/30(火) 18:42:50.81ID:CncaY8jR
>>864
例外を一般化してるわけではなくて、その例外を許さない事自体が言語仕様、言語設計なんでしょ。
お前が例外を例外と認識しているのに、敢えて混同してるんじゃん。
0879垢版2017/05/30(火) 18:46:31.86ID:CncaY8jR
自己弁護も何もなぁ。
べつにrust推しでも何でもなく、割とまともになってんじゃんって感想にここまで吠えられてるのに。

詭弁だと言うなら言い負かせば良いのに。
無理そうになったら狂ったり、論理否定のための人格否定で誤魔化すのやめてよ。つまらん。
0881デフォルトの名無しさん垢版2017/05/30(火) 18:49:24.03ID:ixvaRPT7
自分の文が読みにくいから勘違いされてるのに反省せずそういう書き込みする
あと、その理屈ならHaskell擁護も一部のキチガイ除けばそんなに悪くないと書き込んでるだけなのに噛みつかれて困惑してるよ
0882垢版2017/05/30(火) 18:57:43.16ID:CncaY8jR
>>881
読みにくいってまた主観的な意見だな。
何かダメなの?
こないだの、改行を適宜入れろって話のほうがはるかに役に立ってる。

後半。
Haskell自体が八方美人のブスみたいな印象で、実際問題その理念通りの使い物にはならんと言ってるだけで、Haskell使いは叩いてないぞ俺。
0883デフォルトの名無しさん垢版2017/05/30(火) 19:03:05.19ID:ixvaRPT7
>>882
その話は知らんが俺は>>705だ。前は具体的に指摘した。毎回具体的に指摘してほしいってか?
俺は超注意深く読んだから今回のはなんとか理解できてるけど、実際今二人ほど勘違いしてるよね?俺も最初彼らと同じ勘違いをしたよ
0884デフォルトの名無しさん垢版2017/05/30(火) 19:15:39.06ID:Eop9uX5M
>Haskell自体が八方美人のブスみたいな印象で、実際問題その理念通りの使い物にはならんと言ってるだけで、Haskell使いは叩いてないぞ俺。
これRust叩きの人も同じやん
0886デフォルトの名無しさん垢版2017/05/30(火) 19:24:22.10ID:MdPNaTW3
スレタイ読めないの?漏れ↓だと思ってんだけど
ここはアンチC++の巣くつ(わざと「すくつ」って書いたら予測変換出てきたw)
0887デフォルトの名無しさん垢版2017/05/30(火) 19:50:43.11ID:gVUCJ1iG
Rustは使い物にならないと批判してる人は
仮にfirefoxをちゃんとRustで書き直したら実用性はあると認めるの?
それとももっと基準は高い?
0888デフォルトの名無しさん垢版2017/05/30(火) 20:36:56.72ID:Eop9uX5M
威信にかけてFireFoxは書くだろ
むしろそれ出来上がらなかったら本格的にヤバいじゃん
0889デフォルトの名無しさん垢版2017/05/30(火) 21:03:27.26ID:5Aqfn1oc
とりあえずRustでJavaScriptを作れば後はJavaScriptで自由に書けるじゃん
0891デフォルトの名無しさん垢版2017/05/30(火) 21:44:23.55ID:J0ju3rCP
まあ待て待て、ここで挙げられてる言語は全部使ったことある俺が一番ウンコな言語を判定してやるよ

一番ウンコはSmalltalk!これは間違いない
0892デフォルトの名無しさん垢版2017/05/30(火) 22:21:32.00ID:8KwHai5R
最も
醜い言語はJS
美しい言語はScala
簡単な言語はpython
難解な言語はHaskel
柔軟な言語はC++
魅力がない言語はC#
意思を感じる言語はObjC
かっこいい言語はElixer
雑な言語はGo
愛された言語はJava
幸運な言語はRuby
迷走してる言語はPHP
0895デフォルトの名無しさん垢版2017/05/30(火) 22:24:39.69ID:tbholWW0
>>884
Rust使いはステマ部隊かステマ部隊に騙された不幸な人だからな。前者は叩いても後者は叩けんな。
0896デフォルトの名無しさん垢版2017/05/30(火) 22:30:20.45ID:tbholWW0
>>880
Rust信者というかモジラとかいう世界中のソフトウェア会社の敵が狙ってるのがこれだろうなってことは感じてた。
クソ言語をステマ工作してソフトウェア会社に売り込んで、自分達の給料の確保に使う。クソモジラならやる。
0897デフォルトの名無しさん垢版2017/05/30(火) 23:06:16.05ID:xHXzQ5Z2
>>892
ES6でかなりマシになったから(ガクブル
0898垢版2017/05/30(火) 23:25:03.18ID:CncaY8jR
>>883
なんとか理解できてるなら必要充分だってことでしょ。
まるで>>883以外は低能みたいに言ってはいかん。
0899垢版2017/05/30(火) 23:26:34.66ID:CncaY8jR
>>884
そうでもないだろ。
半コテでなんでここまで叩かれにゃならんのだ。
0901垢版2017/05/30(火) 23:42:29.76ID:CncaY8jR
>>900
誤解した人間が二人、誤解していた人間が一人、発言なく見えないどちらの状態かわからない人間が複数名。
これで有意差を出すなら、何人が母数なの?
自分の観測域で相手を評価するのは良くないと思うけど。
「自分と同じく誤解したが誤解が解けたか、誤解したままである」と周りを推定するのは、俺が相手は馬鹿ではないはずだと推定するのと同じでは無いのかと期待するのと同じレベルかと。

しかしまぁ、少なくとも議論スレならばもう少しマシな話がしたいし、不要な枕詞は使いたくないけど、まぁ通じないなら言い方をもうちょい気をつけるわ。
0903デフォルトの名無しさん垢版2017/05/30(火) 23:53:22.51ID:8eoxxCqM
>>878
何の反論にもなっとらん
俺はHaskellに例外はないなんて言ってないしそもそも知らん
難癖もいいとこだな
0905デフォルトの名無しさん垢版2017/05/31(水) 06:14:00.96ID:wEozaoTa
>>879
では、具体的にGHCが実行時型情報を必要とするケースを挙げてみろよ。
言っておくが、パラメトリック多相は全てコンパイル時に解決されるし、
型クラスによるアドホック多相も、あれは関数オーバーロードの形式化だからな。
関数オーバーロードはコンパイル時に解決されるぞ。
さあ、具体的に挙げてみろよ。
0906デフォルトの名無しさん垢版2017/05/31(水) 07:43:00.95ID:uGw1TdWN
多分、エンジニアガイジの主張は
「rustはコンパイル時に多相を解決する能力がないので、その能力のあるHaskell と違ってデータ構造が作りにくいのは仕方がない」
みたいな感じと思われる。難解だけど
0908垢版2017/05/31(水) 09:15:21.09ID:dc+IbjjD
>>903
あ、例外の一般化をしてる、ってのは「Haskellでは実行時にも多相の解決をする」ってのを「『Haskellでは多相の解決を実行時に必ずする』と一般化(というより誤解)してる」という意味ではないのか。なら的はずれな事言ってすまんな。

>>905
具体的に上げろと言われてもなぁ。
<T>を持ったenumがOptionかcar(T)とcdr(<T,T>)である時くらいかな。

>>906
そうそう。能力を敢えて持っていない、に近いけど。
実行時ゼロコストを目指してるから仕方ない。
0909デフォルトの名無しさん垢版2017/05/31(水) 09:37:51.17ID:uGw1TdWN
おお合ってたか。正直自信なかったんだよね
>>906を主張を三行に纏めるお手本にしてくれてもいいぞw
0910デフォルトの名無しさん垢版2017/05/31(水) 10:08:26.32ID:j+YATO3J
さすがに読み解けんわ……
エンジニアガイジは本気で伝え方の訓練した方がいい。
ID:uGw1TdWNみたいな有能な読み解き手がいつもおるとは限らんわ。
0911デフォルトの名無しさん垢版2017/05/31(水) 10:21:53.06ID:j+YATO3J
エンジニアガイジの主張がさっぱり伝わらない理由って何かと見返してみたが、
相手の反論を表面的にしか返さないせいだな。その質問がどういう疑問から出たかわかってない

「Haskellは実行時に型を解決する(からRustより型の表現力がある代わりにオーバーヘッドのトレードオフがある)」 って意見に
「Haskellもほとんどコンパイル時に解決できるわ」って反論が来たときに「ほとんどは全てじゃないだろ」なんてなにも伝わらん腐った返しするから伝わらないんだっての
「そのごく一部のおかげでそれが皆無のRustより型の表現力があるんだろ?」って、元の主張の()の部分を伝えればまだ理解してもらえるだろうに。

つまり疑問に対する反論が下手。
0912デフォルトの名無しさん垢版2017/05/31(水) 10:31:33.38ID:j+YATO3J
エンジニアガイジは相手が自分の主張に何か返してきたとき、「相手に何が伝わってなかったか」を考えるようにした方がいい。
それが出来てないから今はただ論破することしかできてない。
0914デフォルトの名無しさん垢版2017/05/31(水) 10:55:14.91ID:WMdxYZmu
>>913
本当に「はい論破」したいだけなのか、かわいそうに論破スタイルしか議論の方法知らんのか俺には区別つかないからなぁ。

自分の意見の伝わらなさの自覚はありそうだから(現状人のせいにしてるが)後者にかけて長文投下した
0915デフォルトの名無しさん垢版2017/05/31(水) 10:58:50.65ID:xgELgHJk
彼はアスペルガー症候群でしょう
本人に非があるわけではないが、治ることもない
0916デフォルトの名無しさん垢版2017/05/31(水) 11:03:36.26ID:WMdxYZmu
>>915
確かに「相手の反論が何を疑問点として出てきたかを推察できずに表面的な論破をしたがる」っていうのは典型的なアレだが、
それだけで病気認定は俺にはできんな。健常者でも多少の訓練は必要な事柄だからな。

ただ可能なら診察は受けた方がいいかもわからんね。純粋な心配として。
0917垢版2017/05/31(水) 11:08:50.13ID:dc+IbjjD
>>911
一から百指摘しないと理解できません、って取ったらいいの?

>>912-913
全然論破もしてるつもりないけど。
反論はまともにしてほしいだけで。
論破スタイルってか、ストレートに言わないと議論にならんでしょ。
雑談所なら雑談するよ。
0918垢版2017/05/31(水) 11:10:55.99ID:dc+IbjjD
>>916
子供作るときに一通りそういう気質があるか調べてもらったが、幸いながらアスペではなかったぞ。
残念ながら多動はあった。
0921デフォルトの名無しさん垢版2017/05/31(水) 11:20:10.30ID:WMdxYZmu
>>917
一から百の全部を要求するやつは蹴り倒していいとは自分も思うが、一から百のうち任意のどこかを要求する人の相手くらいできんと人と議論は進まんぞ。
相手の疑問から一から百のうちどこの説明をするべきか読み取ろうという話

反論がまともに来ないのはこれまでの積み重ねのせいじゃないのか?
別に論破スタイルじゃなくてもストレートに議論はできるだろ。
0924デフォルトの名無しさん垢版2017/05/31(水) 15:24:55.30ID:jQ0rWyUQ
>>908
><T>を持ったenumがOptionかcar(T)とcdr(<T,T>)である時くらいかな。

コンパイル時に解決できないHaskellの多相の例がそれか?
おまえHaskell書いたことあるか?
0925デフォルトの名無しさん垢版2017/05/31(水) 15:27:38.08ID:jQ0rWyUQ
多動のせいで議論ができないんじゃなくて、
シッタカで主張が支離滅裂になっているのを
多動のせいだと思ったおまえらが勝手に辻褄合わせをしてあげて
なんだか最初からそういう主張をしているかのように
本人もおまえらも思い込んでいるだけ。
0926デフォルトの名無しさん垢版2017/05/31(水) 15:40:30.39ID:T8V/ATS8
>>925
別に多動のせいじゃないと俺は思うがなあ。多動ってそもそも議論できる出来ないに関係あったっけ?
単に意見の擦り合わせが絶望的に出来ないから知ったかと同じような議論破綻に突っ込む感じで、
ディベートを議論と勘違いしてるよくある感じのやつだと思ってる。
0927デフォルトの名無しさん垢版2017/05/31(水) 15:53:44.27ID:T8V/ATS8
俺はHaskellはトーシロ(死語)だから実行時に型チェックするパターンがあるかどうかなんて細かいこと分からんが
エンジニアガイジが「Haskellの型はほとんどコンパイル時解決だ」って言われたときに
やるべきだった反応は
「俺はこのパターンは実行時解決だと思ってたけど違ったか?」であって
「ほとんどは全部じゃねえよはい論破」じゃない。
こういうところが議論向いてないんだよな。
0930垢版2017/05/31(水) 20:17:12.66ID:dc+IbjjD
>>921
相手の意見は汲み取れと言われながら、自分の主張は汲み取る必要が無いように余すことなく全て話せと言われると、
それは違う思う。

>>929
いや、完全に記憶だよりだからその辺違うなら違うんだと思う。
optionじゃなくてnilだった気もする。

なんと言うか、凄いな。Haskellを否定するだけでここまでヒートアップするのは。
スレタイからも抜けたし、否定し放題だとは思うが。
否定されるのが嫌ならHaskellスレに引きこもってりゃ良いのに。
0931デフォルトの名無しさん垢版2017/05/31(水) 20:44:50.62ID:uGw1TdWN
自分の意見が伝わりにくいことは現象として理解してる癖に、優しい人が理由を考えてあげると反論してしまい受け入れられない
誰かがいってた放置されてきた子って的確な表現だな
どんな優しい人でもこれは放置する
0932デフォルトの名無しさん垢版2017/05/31(水) 20:46:07.28ID:X6jg+zcK
言語についてテキトーな事を書いたらツッコミ入れるような奴が
このスレに集まってるだけだぞ
Haskell関係ない
0933デフォルトの名無しさん垢版2017/05/31(水) 21:11:21.68ID:43iY7lC1
>>930
>相手の意見は汲み取れと言われながら、自分の主張は汲み取る必要が無いように余すことなく全て話せ
それをお互いにやるんだよ。
でもどちらも人間なんだから限界あるだろ?そこを擦り合わせるんだよ。
それが論破合戦じゃない議論なんだよ。
0934デフォルトの名無しさん垢版2017/05/31(水) 21:29:09.19ID:43iY7lC1
もしかしてエンジニアガイジは自分の意見に反論や疑問が飛んできたとき、
「こいつは自分を潰しに来たから潰し返さないと」とか思ったりしてる?
0936デフォルトの名無しさん垢版2017/05/31(水) 22:39:52.28ID:EynlLbc5
>>930
Haskellを否定というか、
明らかに間違えてるので、知りもしないで突っ込んでるとしか思えないが
0937デフォルトの名無しさん垢版2017/05/31(水) 22:43:08.23ID:EynlLbc5
というか、この人Haskell触ったことなくて叩いてるよね
食わず嫌いは勝手だからいいとしても、さも知っていて、かつ理性的かのように振る舞うのはどうなんだ?
素直に理由はないがキモいと言えばいいのに
0940デフォルトの名無しさん垢版2017/06/01(木) 01:21:00.20ID:P48QZU+o
>>930
>いや、完全に記憶だよりだからその辺違うなら違うんだと思う。
>optionじゃなくてnilだった気もする。

記憶違いのレベルでなく、それはどこからどう見てもHaskellの型とは似ても似つかない。
記法の問題でもない。
概念レベルから根本的にHaskellとは異なるものをHaskellの欠点と言い張っているだけ。
0943デフォルトの名無しさん垢版2017/06/01(木) 02:27:16.60ID:8CaOxlMo
まあHaskell触った事ある奴はOptionとMaybe
Nothingとnilは間違えないよな
nullって書いても他言語とは全く異なるし
0945デフォルトの名無しさん垢版2017/06/01(木) 02:55:42.04ID:wUNQCT/b
>>930
どこから見てもお前の言ってる事がおかしいぞ
論理的におかしい事をさも正しい事のように言ってるから叩かれてるだけ
0947デフォルトの名無しさん垢版2017/06/01(木) 06:01:07.41ID:8CaOxlMo
>>946
何を言ってるかわからないほど破綻してるから、おかしいで合ってるし
そして論理そのものは前提で変わり、妥当性とは関係ないので、お前の主張もおかしい
論理的云々と言うやつほど論理を知らない証左
0948デフォルトの名無しさん垢版2017/06/01(木) 06:44:41.63ID:vNOzF29i
関数型の思想を一切使わずアプリケーションをバグ無く作れる者だけが、彼に石を投げなさい
0949垢版2017/06/01(木) 07:44:01.52ID:xXOCh96c
おお、皆に言われるとHaskellをもう一度学ばないといかん気はしてきたな。
割とありがたいし、せっかくだからちょっとやってみるわ。

>>933
あーなるほど。それはわからんでもないな。
ただ、指導教官に昔言われた「不明点は察するな、現実を話させろ」を実践してて、
言ってしまえばアスペ的思考をしてたから、ちょっと慣れるまでに時間かかるかも。
実際役にもたったしね。その発想。
0950デフォルトの名無しさん垢版2017/06/01(木) 08:26:56.92ID:fZ4Ynj9f
みんなが言ってくれてんのはね
Haskellbヌうのこうのとb「うよりもまず
お前は重度の知ったか自己弁護野郎であり
さすがに付き合いきれないよってこと

たぶん、そういうとこは伝わってないんやろな
0952デフォルトの名無しさん垢版2017/06/01(木) 10:36:58.41ID:2zjIoc8f
>>949
>不明点は察するな、現実を話させろ
大学の研究室や学会では正しいが、2chっつーかネット越しの文字でやるには向いてない手法だな
手法は場によって選ぼうな?

あと自分が間違ってるかもしれないって懸念は常に持っとこうな。
0953デフォルトの名無しさん垢版2017/06/01(木) 10:39:52.18ID:2zjIoc8f
>>952
下段は今回のHaskellのことに限らず知ったかぶり悪循環に陥ることへのフェイルセーフな。
俺はHaskell詳しくないから知ったかかどうかわからんのだが一応。
0954デフォルトの名無しさん垢版2017/06/01(木) 11:08:27.45ID:Bx3/ibOs
治療法を察するな、症状を話させろ
Haskellを知ったかぶるのは大したことないが、医学を知ったかぶると命に関わる
0957デフォルトの名無しさん垢版2017/06/01(木) 11:48:38.71ID:Bx3/ibOs
>>956
C++のコンパイル時ダックタイピングと同じ
実行時ディスパッチではない
0958デフォルトの名無しさん垢版2017/06/01(木) 12:35:37.68ID:bubu+W4z
>>956
後者で合ってる
GHCの場合は最適化無しでランタイムにdictionary lookupするコードを生成
最適化でコンパイル時解決になる
指定なしなら通常は最適化される
0959デフォルトの名無しさん垢版2017/06/01(木) 12:56:45.70ID:sszEh+oH
>>958
なるほど

If the type of a function contains a class, then this
is translated into a dictionary that is passed at runtime.

The translation simply assures that the appropriate dictionaries
passed at run-time; ...

One drawback of our translation method is that it introduces
new parameters to be passed at runtime, ...

等々しつこく書いてあったのでてっきり今もランタイムかと。
その後コンパイル時に完結できるようになっていたんですね。ありがとうございます。
0960デフォルトの名無しさん垢版2017/06/01(木) 14:21:39.82ID:JVCP5RQG
>>959
念のため言うが、飽くまで一般の話だよ
上での言及のように例外なく、必ずcompile timeになるかどうかはわからない
普通に考えれば、呼出側だけでなく、モジュールに何か細工が必要だろうし
0961デフォルトの名無しさん垢版2017/06/01(木) 14:30:58.85ID:Ty12p446
>>959
調べてみたが、少なくともHaskell 2010ではCompile timeが保証されているようだ
というか88年の文献は、いくらなんでも古すぎないか?
0962デフォルトの名無しさん垢版2017/06/01(木) 19:59:34.59ID:vNOzF29i
他者と誤解なく分かりあえるようになるための共通言語を開発しよう
もちろん、人と人だけでなく、人とコンピュータも分かりあえる共通言語だ
それこそが次世代言語だ
0963垢版2017/06/01(木) 20:05:18.45ID:23mplHvr
>>952
ネット越しだからやるべきかとは。。

>>961
ヨコからだけどありがとう。参考になるわ。見てくる。

>>962
エスペラントを一歩すすめる時代か。
0966デフォルトの名無しさん垢版2017/06/01(木) 22:45:39.05ID:14pfKSNM
あらゆるモダン言語で見るようになったmapとかflatmapっていうのはどこから生まれたものなの?
0969デフォルトの名無しさん垢版2017/06/02(金) 02:50:18.61ID:bQ6pitWP
再帰があっても深さを制限すればspecializeできるんじゃね
制限を超えたらエラーにするか、あるいはspecializeをやめたら無限に再帰できるか?
0970デフォルトの名無しさん垢版2017/06/02(金) 07:14:02.17ID:vc1fSB5M
>>968
あ、いえ、すみません
>>958+960 で理解の確認はできています
ありがとうございます

ただ一方で >>905 >>957 >>961 みたいな主張もあるようなので
最新の実装では型クラスを取り巻く状況もかなり違ってきているのかなと
0971デフォルトの名無しさん垢版2017/06/03(土) 09:45:16.91ID:1Cu2c1ce
これ互換性にあまり影響のない実装の変更だよね
それより互換性が完全になくなった変更を批判する方が建設的
0972デフォルトの名無しさん垢版2017/06/12(月) 07:29:42.96ID:nTXT2jNo
GOって手続き型言語?
可読性が高いって言われてる理由が知りたい
インスコしようかな
0973デフォルトの名無しさん垢版2017/06/12(月) 08:00:12.68ID:Fk2rI9BR
とりあえずインスコしてみたら
何系の言語かは自分で判断すべし
0974デフォルトの名無しさん垢版2017/06/12(月) 09:42:46.07ID:p/7lEol5
手続き型だよ
文法知らなくてもほぼほぼ読めるぐらい平易だから可読性高いって言われてるのでは
0975デフォルトの名無しさん垢版2017/06/12(月) 09:54:41.37ID:cGkmUezk
実質は新しいCOBOLなのにGoogleが推してるせいで意識高そうなイメージがあり、
Webの文系エンジニアにバカウケ
0977デフォルトの名無しさん垢版2017/06/12(月) 12:21:21.41ID:iBQdyh23
Goが流行ってしまうと今まで必死に体得してきたプログラミングの概念がほとんど無に還すから
プログラミング熟練度と人気が反比例してると聞いたな
0980デフォルトの名無しさん垢版2017/06/12(月) 13:55:38.04ID:GJqadCbs
さすがに今日日昔のJavaのobject地獄を再び見ることにもなれば嫌いにもなるわな。
それ以外は割とよくまとまってる。
0981デフォルトの名無しさん垢版2017/06/12(月) 14:00:31.39ID:GJqadCbs
Goにジェネリクスが入れば割と理想の言語感はある
ノリとしては極限まで肉をそぎ落としたJavaに近いかな。
0982デフォルトの名無しさん垢版2017/06/12(月) 17:23:51.63ID:uTHinYqc
>>981
手続き型言語でオブジェクト指向止めるとなるとグローバル変数が問題になる。
変数宣言時に、その変数へ読み書き出来る関数とかをホワイトリスト的なものを宣言する事で制限したりとか、そう言う仕組みが要るんじゃないかな。
0983デフォルトの名無しさん垢版2017/06/12(月) 18:19:16.46ID:m2AtO/U0
Cにガベコレと並行処理追加した正統後継言語
C++がキメラ化してるしある程度人気出るのも納得できる
0984垢版2017/06/12(月) 19:20:57.74ID:00nbEvZg
>>982
ローカル変数こそが、そもそもこいつが何者かわからん存在であるって言語もあるしな。
「僕この名前で変数使いたいから、いったん退けて。ブロック抜けたら要らないから捨てて」
「制御命令?IFとスタック積まないラベルジャンプとスタック積むサブルーチン呼び出しがあれば、それ以外要らないでしょ。仕方ないからブロック構文だけは作ってやったぞ」
という現代の言語から考えたら意味のわからん命令があるM言語みたいな。
ライセンス高いし大手以外ノウハウないし、最近オブジェクト指向しようと歪になってるらしいから、それこそ化石だろうけど。
今どこ使ってるんだろ。
0985デフォルトの名無しさん垢版2017/06/12(月) 19:33:33.80ID:5L3xq22d
%%%MC+7,8%%%

}

000-"M","LES","TUV=0.13325&/0\7&%&",

001-"23","1","0","2","7.14",[\b%7/1444*%812%2.3%7&6111\end\\]{%3%12%\br
0986デフォルトの名無しさん垢版2017/06/12(月) 21:06:32.45ID:P1PnDOe5
>>982
Goだとその辺はパッケージである程度制御はできるな
あとはクソカジュアルにmutexが使えたりcontextでセッションローカル変数簡単に引き回せたり、
Goroutineでの並列を売りにしてるのは伊達じゃねえやって感じ
0988デフォルトの名無しさん垢版2017/06/13(火) 00:16:36.48ID:1CBB/Bqq
>>977
熟練者はそれを逆手に取って嫌いなものを体得する
嫌いなものを無に還すことができるなら必死に体得するのは理にかなっている
0989デフォルトの名無しさん垢版2017/06/13(火) 00:41:45.36ID:GtIjnADE
>>980
>>981
同意
0994垢版2017/06/13(火) 07:09:42.20ID:MZxut8VL
>>988
一からできるなんて楽しすぎるしな。
>>990
Haskellはガイジと呼ばれる俺ですら感じるキチガイを集める事になるから反対。
TypeScriptは微妙。それより、いっそJS側に倒してESnextとかでいいんでないの?
0995垢版2017/06/13(火) 07:11:05.41ID:MZxut8VL
>>993
Scalaが要らんのは同意、Rustはちょっとどっちでもいい。
InのTypeScriptは反対。Swiftはもうちょいガチでマルチプラットフォームに来てほしいけど、くる気配あれば同意
0996デフォルトの名無しさん垢版2017/06/13(火) 07:21:44.82ID:Z6lFUzsL
TypeScriptは今時の流行りの言語の一つのリファレンスとしては悪くないと思うが、
まあC#系はKotlinが一つあれば十分かな
0997デフォルトの名無しさん垢版2017/06/13(火) 07:32:00.56ID:YUMHQx2e
ナウでヤングな型システムとかムーブセマンティクスとかモナドが次世代なんじゃないの?
ScalaとRustはずしてSwiftいれるとか正気か?
お手軽言語スレでも立ててそっちでやれと
0999デフォルトの名無しさん垢版2017/06/13(火) 08:43:16.91ID:L3B1EJOR
>>990
Haskellアンチは一人の発達障害だけであることが判明したので入れましょう
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 54日 4時間 11分 5秒
10021002垢版Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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