次世代言語議論スレ[Go Rust Kotlin Scala]第4世代at TECH
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 - 暇つぶし2ch2:あ
17/04/20 07:32:05.38 AyFGgpwk.net


3:デフォルトの名無しさん
17/04/20 08:19:51.38 zhxiAG0o.net
TypeScriptも次世代言語に入れてくれ。
URLリンク(trends.google.co.jp)
Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017
URLリンク(www.publickey1.jp)
TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー
URLリンク(www.publickey1.jp)

4:デフォルトの名無しさん
17/04/20 08:44:47.83 jeWo4Dft.net
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
これもオブジェクト指向と言ってもいいでしょう!

こんなん草生える

5:デフォルトの名無しさん
17/04/20 12:21:47.82 yNBy9eOM.net
TypeScriptはJavaScriptのクソな点をまともに直しただけで
次世代というものを感じないのだがなんかあるの?

6:デフォルトの名無しさん
17/04/20 19:50:17.61 VIiPRj9u.net
TypeScriptは次世代を担うってよりも
旧世代の資産をなんとか次世代まで持ちこたえさせるつなぎって感じ

7:デフォルトの名無しさん
17/04/21 00:32:39.17 TpnuMFUz.net
別に便利ならそれでいいと思うけど。

8:デフォルトの名無しさん
17/04/21 13:54:11.80 cmecYv9F.net
>>5
とはいえ次世代は次世代でしょ

9:あ
17/04/21 16:45:28.52 KFYgHFHL.net
TypeScriptは手段が目的化してきてるからな。
構文は嫌いじゃないけど。

10:デフォルトの名無しさん
17/04/21 23:38:23.47 F8Tq/dHs.net
なんでHaskell無くなってるの?もう学ぶの諦めたの?

11:デフォルトの名無しさん
17/04/21 23:42:05.24 1EW2mi9U.net
うん
Haskell学ぶなんて時間の無駄だってことに気づいたの

12:デフォルトの名無しさん
17/04/21 23:59:18.37 9S9WRWBb.net
>>10
前スレでHaskellは次世代言語ではなく遅延評価に問題があるとされた。
でもHaskellの考え方を学んで他の言語で活かすならありだと思う。

13:デフォルトの名無しさん
17/04/22 00:57:02.64 Kjd2lTg6.net
問題とされたのは遅延することではなく何秒遅れるか予測不可能なことだと思う
タイミングを何秒後と指定して評価するのは問題ないとされる
現にそういう問題が出題されたしね

14:デフォルトの名無しさん
17/04/22 02:36:22.27 gXJYMt+Q.net
いやHaskellを声高にプッシュしていた奴が例題のコードも出さずに逃亡して、Haskellそんなに詳しくない人が替わりに書くという事態になったからだよ
Haskellに詳しい人もHaskellについて議論できる人もいなかったんで対象として取り上げるには不適切になった(このスレでは)
Haskell上げの意見は説得力が無いしHaskell下げの意見はただのレッテル貼りにしかならない

15:デフォルトの名無しさん
17/04/22 07:18:18.45 yb9XO/RM.net
で、Haskellよりも劣った言語が次世代言語候補として残ったわけか
おもしれーw

16:デフォルトの名無しさん
17/04/22 07:49:13.55 9MR2WQGe.net
次世代言語なんだから、現行の言語を語っても意味ないよね。

17:デフォルトの名無しさん
17/04/22 09:34:02.47 Kjd2lTg6.net
>>14
逃亡というレッテル貼りをおそれて多くの人が努力したんだな
レッテル貼りには人を努力させる効果があった
レッテル貼りは悪という意見にはあまり説得力がない
この場合、逃亡は悪ではかったと考える方が説得力がある

18:デフォルトの名無しさん
17/04/22 09:54:38.02 69jc9pki.net
>>17
最後の1行がそれより前とつながらないんだが

19:デフォルトの名無しさん
17/04/22 10:24:05.10 69jc9pki.net
糞問題、糞設計、糞実装だの言うわりにどれ一つ代替案は出てこなかった(つまりパラダイムは変えない)
加えて、正直な感想として現行言語の方が次世代と称される言語よりずっとすっきり書けていた
という現状をふまえると次世代の「売り」って何なのだろう
クラスや付随する言語機能を捨ててシンプルさを求めたこと(継承のデメリットの排除と学習コストの軽減)と
それで生じる表現力・抽象度の低下を型チェックや型推論機構の充実で補ってバランスをとったところ?

20:デフォルトの名無しさん
17/04/22 10:33:00.05 d4ODGBV8.net
HaskellとDが最底辺であることに変わりはない。
実用性皆無なプログラム言語は存在価値無し。

21:デフォルトの名無しさん
17/04/22 10:40:11.00 Kjd2lTg6.net
訂正
逃亡は悪ではかった→逃亡は悪ではなかった
>>18
レッテル貼りは悪とは限らないし、そもそも悪と戦うことが目的ではない
戦いが目的でないなら逃亡は合理的だ

22:デフォルトの名無しさん
17/04/22 11:00:51.13 69jc9pki.net
>>21
そこじゃない!www>訂正
逃亡というレッテル張りを恐れて他の善意のファンが努力
→レッテル張り自体は悪だが結果はそう悪いものでもなかった
という流れからどうして逃亡自体が悪でないという帰結が導かれるのか?
ひたすら机上の空論を展開し、他を貶め、蔑み、悪態をつくだけついて
じゃあ動くコードやよりよい設計を出せというと逃げるのはどうみても身勝手だろう

23:デフォルトの名無しさん
17/04/22 11:14:59.00 Kjd2lTg6.net
悪口を言われたから賠償してほしいって?
そんな出題者の意図があるとは知らなかった

24:デフォルトの名無しさん
17/04/22 11:36:19.62 69jc9pki.net
>>23
この場合、出題者は関係ないだろう
「他を」は「他言語(あるいはその使い手、ファン、コミュニティ)を」だ

25:デフォルトの名無しさん
17/04/22 11:53:17.53 69jc9pki.net
なんかいちいち噛み合わないな
もしかしてHaskell儲がまだいるのか?
なら逃亡行為を好意的に解釈したがるのも頷ける

26:デフォルトの名無しさん
17/04/22 12:24:45.77 VCLbyEjA.net
あんまり荒らしたくはないが、できるかできないかで言えばできたんだから問題ないだろ
それにType Classのコード理解できるやつ何人いた?
単なる継承だと勘違いしてるっぽい奴はいたが

27:デフォルトの名無しさん
17/04/22 12:38:09.97 yb9XO/RM.net
そもそも単価の高いHaskellerにタダでコード書けというほうが間違っている

28:デフォルトの名無しさん
17/04/22 13:11:14.86 69jc9pki.net
>>27
旧世代言語なら実質50行程度せいぜい10分で書けるコードにいくら請求するつもりだよww
それに単価ならカンブリア言語のSmalltalkerの方がよほど高いわ
奴ら呼べばきっと頼まれなくてもホイホイ書くぞ
Rust使いに次いで自分言語大好きだからな
URLリンク(developers.srad.jp)

29:デフォルトの名無しさん
17/04/22 13:55:32.78 /fxOrStV.net
どうせお前ら、フレームワークに用意されたメソッドを
サンプル通りに呼び出すだけのドカタだろ?
次世代言語なんて要らんだろ

30:デフォルトの名無しさん
17/04/22 14:38:27.32 XG8YtWUq.net
そういう言語こそ切望されている。

31:デフォルトの名無しさん
17/04/22 19:55:27.63 2QNaIclJ.net
次世代言語ならおっさんにマウントされずに
仕事できると思ってるバカが多いってだけなんだよ結局。

32:デフォルトの名無しさん
17/04/23 13:37:29.12 mKAZq6VZ.net
新スレ
abc系でみんなで人工知能を作ろう!
スレリンク(tech板)

33:デフォルトの名無しさん
17/04/23 14:04:42.00 NE9/Voyw.net
個人的にはスレタイからRustも抜いてほしい。まともに物が作れないのにクソモジラのステマだけで話題になってる、言語未満のクソの塊。

34:デフォルトの名無しさん
17/04/23 14:08:54.35 HdKb/Sdq.net
このスレは何を目指してるの?

35:デフォルトの名無しさん
17/04/23 15:35:02.72 zop66JA+.net
よく分からんよね
いつか知らないけど、次に主流になる言語が何かを決めたいんだろう

36:デフォルトの名無しさん
17/04/23 15:41:50.81 OBcWFFpc.net
もう全部C++でいいんじゃないかな
これから100年先までずっとC++だ

37:デフォルトの名無しさん
17/04/23 16:07:52.01 UJAzDyB2.net
>>36
それでいいそれで。他を圧倒的に突き放して一番早くて実用的な言語だ。

38:デフォルトの名無しさん
17/04/23 16:10:21.34 svTWBXfu.net
多次元配列弱いC++はFortran以下
まず配列アクセス演算子が引数一つしか取れない時点で終わってる

39:デフォルトの名無しさん
17/04/23 16:16:54.85 dVBaHUf3.net
そりゃ、関数で十分だからな。テンプレートとオーバーロードと参照があれば
配列アクセス演算子なんて最初から必要なかった。

40:デフォルトの名無しさん
17/04/23 16:20:47.89 svTWBXfu.net
まあ確かにEigenなんかは関数呼び出し演算子で代用してるな
そのEigenでさえ3次元以上には対応してないっていうのがC++の自由度の低さを物語ってるが

41:デフォルトの名無しさん
17/04/23 16:24:19.41 UJAzDyB2.net
逆に聞くけどそれなくて何か実用的なプログラミングで困るの?

42:デフォルトの名無しさん
17/04/23 16:29:32.67 mKAZq6VZ.net
C++++あくしろよ

43:デフォルトの名無しさん
17/04/23 17:38:01.40 svTWBXfu.net
>>41
深層学習とか統計処理とかには必須だぞ
量子化学にもあれば便利だな
データ整理一般にも使うしな

44:デフォルトの名無しさん
17/04/23 19:47:31.29 zjYzndui.net
いや、そんな要素一つ一つに対して別個の処理をするようなコードは
あんまいらんだろ。
本当に必要な場合は結局、配列レベルで高速化が望まれる場合だけだし。
誰かが用意した python のライブラリでも使ってなさいってこった。
カスが個人的に作ったものよりもよっぽど速くて正確なものがあるんだから。

45:デフォルトの名無しさん
17/04/23 20:12:53.69 svTWBXfu.net
Python >>>> C++が証明されたな
速度においてもCython擁するPythonが負ける要素はないし

46:デフォルトの名無しさん
17/04/23 20:19:34.87 PCQQgnKm.net
C++er「もう全部C++でいい」
配列マン「多次元配列需要あるのにC++にはないやん」
C++er「そんなもんあんまいらんだろ。Pythonでも使ってなさいカス」
C++erってやっぱダブルスタンダードのカスだわ

47:デフォルトの名無しさん
17/04/23 20:36:30.78 zjYzndui.net
用途によって使い分けるという当たり前の発送のないバカと一緒にされたくないんだけど。。

48:デフォルトの名無しさん
17/04/23 21:11:17.67 OBcWFFpc.net
皮肉なのにマジで取られても

49:デフォルトの名無しさん
17/04/23 21:15:41.28 PCQQgnKm.net
あとはID:UJAzDyB2だけか

50:デフォルトの名無しさん
17/04/23 21:50:20.49 bkkcl6Xn.net
多次元配列とはいえ結局は仮想メモリ上に一次元に乗るデータになるんだから、多次元→一次元マッピングを最初から最適にデータ設計出来てればいらんだろそんなもん。
そこを処理系任せにしてメモリ上のデータ構造チューニングできないようなものが次世代言語なのか?

51:デフォルトの名無しさん
17/04/23 21:51:12.16 bkkcl6Xn.net
あ、ID変わったけどID:UJAzDyB2。

52:デフォルトの名無しさん
17/04/23 22:10:15.66 bkkcl6Xn.net
最先端のアルゴリズムで実用ライブラリを書く言語としてのC++はこの先100年安泰で、
ラッパ用スクリプトのPythonとはそもそも言語としての立ち位置が違うって話。

53:デフォルトの名無しさん
17/04/23 22:22:19.93 mKAZq6VZ.net
100年後の言語ってどうなってんだろな
頭にチンポ型の伝送デバイスハメるだけでプログラミングできたりする?

54:デフォルトの名無しさん
17/04/23 22:24:04.51 NBHRohTD.net
そりゃもう感応入力で思考の速度でプログラミングできてるだろう
言語はなくなってるかもしれん

55:デフォルトの名無しさん
17/04/23 23:40:41.71 OBcWFFpc.net
C++を今の地位から引きずり下ろすためにもRustには頑張って欲しいものだ

56:デフォルトの名無しさん
17/04/24 00:14:14.60 Hq5/eqGq.net
言語がなくなる
科学がなくなる
数学がなくなる
こういう無数の可能性から一個選んで的中させるのはほぼ不可能だよな

57:デフォルトの名無しさん
17/04/24 00:21:20.12 lffXTkps.net
ID:bkkcl6Xnの発言は一番気が狂っていた頃のエンジニアガイジと似てるな

58:デフォルトの名無しさん
17/04/24 00:26:31.35 6h5JoTUe.net
>>36
早くネットワーク系のライブラリを標準で入れてくれぃ

59:デフォルトの名無しさん
17/04/24 00:33:57.43 6NGlh03T.net
ID:UJAzDyB2「C++は実用的な言語である。多次元配列がなくても実用的なプログラムでは困らない」
ID:bkkcl6Xn「私はID:UJAzDyB2である。C++は実用ライブラリを書くための言語だ」
なにこれ

60:デフォルトの名無しさん
17/04/24 00:40:56.94 zwhieng4.net
>>50
多次元配列でチューニングすべきところなんかあるか?せいぜい格納方向が2通りあるくらいだろ。チューニング出来るものは一切搭載してないFortranにすらデフォルトで搭載されてる機能だぜ?
それにそれ言っちゃあSTLなんてどうなるんだよ? まさかSTLは使うけど多次元配列は自分で作るなんて言わないよなあ?

61:デフォルトの名無しさん
17/04/24 00:56:56.87 FOMNUfbf.net
>>60
ガチ用途でSTL使わねえだろバカも休み休み言えよ……
STL使うC++なんてちょっと速いPythonやらRubyじゃねえか。

62:デフォルトの名無しさん
17/04/24 00:58:00.30 zwhieng4.net
>>61
ほーんSTLより速いの書いてあげてみ?
絶対無理だろ

63:デフォルトの名無しさん
17/04/24 01:04:22.49 FOMNUfbf.net
>>62
そりゃ自分の書くものに一番合うように書くから、あらゆるベンチを通すように丸く作られたSTLに全分野で勝てるわけないだろ。

64:デフォルトの名無しさん
17/04/24 01:10:06.24 zwhieng4.net
>>63
この用途ならこれが一番速くて信頼性が高くて拡張性も優れていて、自分で書いてSTLを使わないコストという面でも釣り合いが取れるっていうのがあるってことだよな?
用途から自分で設定していいから書いてみろよ。

65:デフォルトの名無しさん
17/04/24 01:16:51.68 lffXTkps.net
いや、そもそも多次元配列の話してたんだし、numpyを超えるスピード、信頼性の多次元配列を書いてもらうべきだな

66:デフォルトの名無しさん
17/04/24 01:19:28.66 p282pyvh.net
疎行列

67:デフォルトの名無しさん
17/04/24 01:22:28.66 zwhieng4.net
ああ、そもそもSTLで出来ないことを書いて「勝った」っていうのはなしだぞ。それこそ疎行列とかな

68:デフォルトの名無しさん
17/04/24 01:30:31.10 p282pyvh.net
ハッシュマップ

69:デフォルトの名無しさん
17/04/24 01:36:23.44 zwhieng4.net
ってか割と真面目にC++上で動く多次元配列欲しいんだけど
1~5次元くらいまで同じインターフェースで動く奴作ろうとして、思いの外面倒だったから辞めてFortranに乗り換えたことあるんだよな

70:デフォルトの名無しさん
17/04/24 06:51:30.21 wCWPirmZ.net
>>42
亀だけど、C#って、C++++という意味を込めてるんだよ。

71:デフォルトの名無しさん
17/04/24 20:17:17.36 zyXx2ugF.net
>>65
だよねぇ、多次元配列の操作で Python に勝るのは Fortran くらいしか思いつかないや
純粋手続き型言語の始祖である Fortran と、同じく純粋手続き型スクリプト言語である
Python、誰にも否定できない当然の結果だよね
もう、このスレでは次世代 Fortran は Python で決まり!!ってこと結論が出たね

72:デフォルトの名無しさん
17/04/24 21:50:54.50 CyDBAtYH.net
その結論は何を表すの?

73:デフォルトの名無しさん
17/04/24 23:19:46.46 H47kwRKj.net
>>71
多次元配列操作で次世代言語を選ぶならJuliaだろう。
Python使いをJuliaに引き込むサンプル集
URLリンク(www.mwsoft.jp)
RユーザのためのJulia入門(行列編)
URLリンク(rishida.hatenablog.com)

74:デフォルトの名無しさん
17/04/24 23:52:45.18 lffXTkps.net
Juliaのステマ貼るならせめて最新版の解説貼れよ
ないけどさ

75:デフォルトの名無しさん
17/04/25 00:38:05.23 O6VBfE9R.net
>>74
Qiitaで検索するかAdvent Calendarsを読め。
普及が始まっている次世代言語は
たいていAdvent Calendars 2016がある。

76:デフォルトの名無しさん
17/04/25 02:23:12.66 wELv0O7d.net
言語オタクが重視する言語間の細かいシンタックスの差なんてどうでも良くて、
次世代言語に必要だったのは高速で便利な多次元配列だったってオチか

77:デフォルトの名無しさん
17/04/25 08:40:21.09 fJvGo7FT.net
>>75
Julia0.3の化石みたいな記事貼るなって意味だよ

78:デフォルトの名無しさん
17/04/25 10:54:45.65 niXLk7Hx.net
Juliaって化石なの?

79:デフォルトの名無しさん
17/04/25 10:55:45.34 cMLOigtr.net
0.3はね
そろそろ0.6

80:デフォルトの名無しさん
17/04/25 11:10:54.53 x9Sc69FW.net
>>76
多次元配列が必要な人間は一部だけど文法が全員に影響があるから、多数決で文法優先
オタクではなく多数決です

81:デフォルトの名無しさん
17/04/25 11:51:27.86 DZfkzF9H.net
RubyとPythonとか観てると文法より多次元配列やライブラリのが重要だと実感するが。
C#やJavaScriptにしても、簡潔に書けるとかじゃなくて何を作れる(サポートするプラットフォームの多さ)で選ばれてるし。

82:デフォルトの名無しさん
17/04/25 12:35:16.20 0RXyPjWo.net
利用者が多い・ライブラリが豊富って現在流行っているものの話でしょ

83:デフォルトの名無しさん
17/04/25 12:35:23.60 KAzBuoYA.net
多次元配列が重要って感覚がわからないんだけど、
どういう分野の人が使うの?

84:あ
17/04/25 12:49:25.85 m9LocPpZ.net
多次元配列ってジャグじゃないものの事だよな?
マクロ書いちゃえばいいんでないの?
アクセス演算子と大仰な言い方するが、要は単に掛け算なんだし。アライメントも揃えられるしさ。
適当な並べ方してるとメモリアクセスで悲しい思いをする気がする。特にどーんとクラスタに投げるときとか。
Fortranでもメモリマップ的には後ろの列からの順番になるから思い付きで並べると重いよ。

85:あ
17/04/25 12:51:38.43 m9LocPpZ.net
>>83
テンソルに係数を掛けたり、テンソルとベクトルを掛けたりすると、欲しくなるのは確か。
unionって思ってたより随分便利だなーって思うやつ。

86:デフォルトの名無しさん
17/04/25 12:56:48.67 DZfkzF9H.net
>>82
Rubyが流行りそうになった時、RoRの登場で一躍有名になった。
Pythonにはそれに相当するものが無かった。
後に同じようなの出来たけど、Rubyを引き離すほどじゃ無かった。
Ruby1.9の時、互換性切り捨てでRuby自滅が決定打だった。
結果としてディープラーニング向けライブラリの登場で揺るぎない地位を得た。
文法はRuby1.9以降のが好きだし理に適ってる。
でも、世界的には終わった言語。

87:あ
17/04/25 13:06:52.92 m9LocPpZ.net
Rubyは理想を追いかけ過ぎ。
自然言語で言えば、エッセイストは言語学者じゃないのに形態素に基づくなんとかかんとか、こういうしきたり、こういうルールってのを並べられてもって感じで、
しかも、言語学者側はそれを素晴らしいと絶賛してると言う狂った状態に近い。
英語なんかあんな破綻した闇仕様に溢れた言語
(例えば、Shipの口語の代名詞に失われた性を補完してsheを使う)なのに、
あんなに全世界で使われてるんだから。
言語なんて歯ブラシなんや、ってPHPの方が随分スタンスとして好き。

88:デフォルトの名無しさん
17/04/25 13:39:27.32 9lYWlQQl.net
次世代の定義と合わなくね?って書き込みになんでそんなレスがつくんだろ

89:デフォルトの名無しさん
17/04/25 13:59:47.20 DZfkzF9H.net
かつて次世代だった言語の栄枯盛衰から、次世代言語に何が必要かが分かると思って投下した。

90:デフォルトの名無しさん
17/04/25 14:18:46.85 x9Sc69FW.net
文法は繁栄の原因にはならないけど互換性云々で衰退の原因になるんだ

91:あ
17/04/25 14:31:36.92 m9LocPpZ.net
>>88
あんまり原理主義的な事話してると怒られるから。。

92:デフォルトの名無しさん
17/04/25 14:54:40.56 3KXt8ND/.net
文法は繁栄の原因にもなり得たよ。
Rubyも注目された当初は簡単でなんでも出来る言語としてsmalltalk作ったけど、真のsmalltalkはRubyだったとかアラン・ケイも絶賛してたし、RoRもRubyの文法に惚れて作られた。
その後の保守戦略家で差が付いた。

93:デフォルトの名無しさん
17/04/25 14:55:18.59 3KXt8ND/.net
x保守戦略家
o保守戦略

94:デフォルトの名無しさん
17/04/25 18:40:55.97 x9Sc69FW.net
戦略ってなんだろう
どうやって決めたかは教えないけど、成功とか失敗とか成果だけ教えてやるよって感じ
成果だけが重要と思っているからなのか

95:デフォルトの名無しさん
17/04/25 18:52:57.84 e9WI/SQ5.net
>>86
>Ruby1.9の時、互換性切り捨てでRuby自滅が決定打だった。
互換性切り捨てってのは、これのこと?
スレリンク(tech板:128番)
うーみゅ、確かに Hello world レベルのお題ですら動かなくなるようでは、
互換性切り捨てと批判されるのも仕方ないよね

96:デフォルトの名無しさん
17/04/25 19:19:36.86 gy+i7xO9.net
>>94
戦略って言っても、私が結果だけ見てそう判定しただけだがね。
結局、言語の開発管理側が業務で使われているって事実を重要と見たかどうかってだけ。
どっちも互換性切り捨ててるんだけど、Pythonはまだ旧バージョン系列サポート切ってないし、長々とアナウンスしてる。

97:デフォルトの名無しさん
17/04/25 19:40:02.70 e9WI/SQ5.net
訂正してあげるね
X:Pythonはまだ旧バージョン系列サポート切ってないし
O:Pythonはまだ旧バージョン系列サポート切れないし
Pythonはまだ新旧バージョンでの後方互換性切り捨てが災いして、
未だに旧バージョン系列から新バージョン系列へ移行できていないだけの話
だから旧バージョン系列サポートを切りたくても切れないってのが現実
URLリンク(blog-imgs-82.fc2.com)

98:デフォルトの名無しさん
17/04/25 20:00:00.53 DCpQVXaD.net
それが企業に好感持たれてる現実。
強行したRubyはどうなったよ。

99:デフォルトの名無しさん
17/04/25 20:09:39.00 e9WI/SQ5.net
こうなった
スレリンク(tech板:900番)
ところで、Rubyの互換性切り捨てとは具体的には何を指しているのかな?
少なくとも Hello world レベルであれば、RoR登場以前の 1.6 から最新の 2.2 に至るまで、
Ruby であれば Syntax Error にならず正常動作するから互換性は維持されているけどね

100:
17/04/25 20:17:10.34 Vqnsayjn.net
>>87
うーん,LL(1)に徹している pascal が古今東西素晴らしいとおもっているんだが‥ruby ってそんなにすごいの?

101:デフォルトの名無しさん
17/04/25 20:37:45.43 KIIhfRh7.net
Rubyが理想を追いかけてるとか、苦笑しか出てこない。

102:デフォルトの名無しさん
17/04/25 20:45:57.84 MvOKB5m4.net
>>100

低機能パーザー使うと何ですごいの?

103:
17/04/25 21:06:43.69 Vqnsayjn.net
>>102
>自然言語で言えば、エッセイストは言語学者じゃないのに形態素に基づくなんとかかんとか、こういうしきたり、こういうルールってのを並べられてもって感じで、
だろうね

104:デフォルトの名無しさん
17/04/25 21:16:47.80 qd1hD0YR.net
結局、キャットドア問題解決できなかったしね

105:デフォルトの名無しさん
17/04/25 22:43:32.29 lEn+EjQK.net
python3 とか好きじゃないんだよな。。
1/ 2 = 0.5
とか型が弱くなる方向に修正したんだか。。
明示的に書かせるのが python の良さなのにそれと逆行しようとしてるのが好きになれん。

106:あ
17/04/25 23:45:33.40 RguWTiRy.net
>>100
pascalは素晴らしいと思うよ。俺も。
いつの間にか呼ばれてるto_intみたいな馬鹿な仕様もないし。
あれは理想ではなくて現実。
>>101
追いかけてるだろー。
「Objectには不要なものが多すぎる、好ましくない。でも、互換性失いたくない。
 そうだ、Objectの親にBasicObjectを作って白紙のオブジェクトとしよう」
なんてまともな神経してたらちょっと思いついたけど敢えて忘れるレベルの実装をマジでやった上に、
一番やめてほしい==の実装をBasicObjectに持ってったんだぞ。
気が狂ってる。
わざわざtrueClassやらnilClass作ってたのが原理主義っぽくて良かったのに。
n = true if false
で、nがnilになるのもおかしい。
n = n+1でnilに+はねえよってメッセージの原因だけど、こればっかりは異常。

107:デフォルトの名無しさん
17/04/25 23:47:17.89 qd1hD0YR.net
>>106
言葉に気をつけろよ
キャットドア問題の前にお前らはボロ雑巾のように敗れ去っているのだから

108:あ
17/04/25 23:50:40.24 RguWTiRy.net
メッセージパッシングで大枠作ったのにな
そもそも、クラスを破壊せずに機能追加せよ、って矛盾した設問がおかしい事にまだ気づかんのかなぁ。

109:デフォルトの名無しさん
17/04/26 00:00:43.82 T5a4wmc6.net
>>100
俺もpascalはシンプルで好きな方。
だけどブロックは波括弧が好きなんだよなぁ。

110:デフォルトの名無しさん
17/04/26 00:34:00.42 Boe/ixbX.net
>>99
うろ覚えだが、文字列から文字を取り出すのが思い切り変わった。
これは阿鼻叫喚になるなって印象はあった。

111:デフォルトの名無しさん
17/04/26 00:43:56.99 9BTWZVlt.net
>>110
>うろ覚え
正しくは。うる覚え。な
学がないやつはこれだから

112:デフォルトの名無しさん
17/04/26 03:53:03.15 2ISuU/qN.net
スレタイからElixir抜いた奴俺の許可とったの?

113:101
17/04/26 04:48:11.60 gEnKLRTK.net
>>106
Objectクラスの親クラスにProtoObjectクラスがあるのも、
==をProtoObjectで実装するのも、
TrueクラスやUndefinedObjectクラスがあるのも、
false ifTrue: [true]がnilになるのも、
みんなSmalltalkでは理想どころじゃない、
ProtoObjectは90年代のOO普及期からずっと当たり前のこと、
それ以外は80年代のOO黎明期からずっと当たり前のことだが、
どこがどう理想なのか、どこがどう次世代なのか、教えてくれよ。

114:ich1
17/04/26 07:20:16.12 KcpaNie5.net
URLリンク(goo.gl)
これは嘘でしょ?
本当なら落ち込むわ。。

115:デフォルトの名無しさん
17/04/26 07:22:08.94 xY5d2zmE.net
「うろ覚え」の誤り。「うろ覚え」は、はっきりと覚えていない様子を意味する語。空洞を意味する「うろ」が、文字や音の似た「うる」に置き換わって生じたといわれている。ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。
ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。
ネットスラングとしては、「ふいんき」と同様に、誤記を承知で敢えて用いられる例が見られる。

116:デフォルトの名無しさん
17/04/26 08:01:30.06 70MJdvvC.net
>>111

117:デフォルトの名無しさん
17/04/26 08:02:47.44 GreYiU3v.net
>>71
Python の配列って、list でしょ?

118:あ
17/04/26 08:27:05.94 aLqmc7M7.net
>>113
だから、理想に走りすぎで現実見えてないって言ってるの。その論調だとsmailltalkが自然で目指すべきだと聞こえるが?俺はそうは思わないけど。
泥の中の蓮的な理想感はあるが、実際にはそんな物が必要ならそれこそRubyなんか使ったら劣化コピーで気持ち悪いものをこねくり回して満足してる学者大先生と同じ。
エスペラント語を素晴らしいと言いはって、エスペラント語でエッセイ書くようなもんだ。書いてみりゃわかるが、無謀だよ。
正しくしか書けないし、元の発想が比喩で作られてるようなもんだから、比喩表現は比喩の比喩になってもう意味がわからない姿になる。
永遠に次世代になりたくて、実は永遠に次世代ではない。

119:デフォルトの名無しさん
17/04/26 09:01:42.16 uVr9LBvI.net
エッセイなら正しく書けばいいだろ。
ポエムは難しいけど。

120:デフォルトの名無しさん
17/04/26 09:43:39.33 A4NmaPdj.net
>>111
思い出したよ。
Stringクラスからeachメソッド無くなって、each_lineとかeach_charsになったんだ。
お陰で配列と同じように扱ってたのが、文字列だけ別扱いになったから、ダックタイピング出来なくなった。
あと文字コードの扱いとか。
詳細はこっち。
URLリンク(www.oreilly.co.jp)

121:デフォルトの名無しさん
17/04/26 10:59:41.81 pV6k193k.net
スクリプトは純粋仮想関数が無意味だからクラスの意味をこじつけるのが大変
Pythonのクラスは演算子を定義する機能のような印象

122:あ
17/04/26 12:47:25.64 aLqmc7M7.net
>>119
小論文の意味のエッセイなら割とそうだろうけど、それでも主観の表現方法を無理やり曲げられる時点でダメだろ。
グーグルをラ行五段活用する事を無理に実現するために他の名詞が巻き沿い食う感じ。

123:デフォルトの名無しさん
17/04/26 13:48:30.98 pV6k193k.net
経験則
表音文字に依存するな、記号に依存しろ

124:デフォルトの名無しさん
17/04/26 15:44:49.66 TQfkYYQc.net
(みんなあってもよくね?と思ってたはずなのに)
ずっとクラスベースを拒否し続けたJavaScriptも
ある意味プロトタイプベースの理想を追い続けてるような

125:あ
17/04/26 16:06:30.69 aLqmc7M7.net
>>123
まぁ、恐ろしいほどに無意識に使ってるスペースなんて記号も英語ベースだしな。
コアダンプが漢詩のように見える事もあるけど。
>>124
あれはあれで、リストをああいう形で実現した時点で割と言語としては完成してた。冗長だけど。

126:デフォルトの名無しさん
17/04/26 21:50:24.12 SZlYFMhx.net
>>98
>それが企業に好感持たれてる現実。
Hello world すら Syntax Error になってしまう(>>95)ほどの壊滅的な
後方互換性切り捨てを強行してなお旧バージョンのサポート打ち切りなんて、
常識的な企業倫理からはありえないだろ
そんな対応を指して「好感」という言葉は冷酷な皮肉でしかない
あるいは、過去に Hello world がバージョンアップで動かなくなったメジャー言語が存在するの?
print が文なのか関数なのかという言語とライブラリ設計における根源的な決定、
言い換えると入出力処理は構文で実現すべきなのか(すなわち文)、それとも
ライブラリで提供すべきなのか(すなわち関数または手続き)という言語設計の哲学、
そんな初歩的な判断すらできない人物によって行き当たりばったりに設計されたのが
Python だろ

127:デフォルトの名無しさん
17/04/26 22:30:36.25 SZlYFMhx.net
>>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 と同じく
配列と同じように扱えるようになったぞ、しかも元のコードは一切改変されていない
いったいどうなってるんだあ…

128:あ
17/04/26 23:16:03.93 WASTpqE2.net
メソッド生やしてしまえる事自体がオブジェクト指向でも何でもない気持ち悪さ。

129:デフォルトの名無しさん
17/04/27 00:01:25.31 GJNrvvrA.net
Open Class だろ。モンキーパッチ

130:デフォルトの名無しさん
17/04/27 00:31:22.08 1+VMbtmi.net
>>128
その理屈だとSmalltalkはオブジェクト指向じゃなくてなんだったんだ?

131:デフォルトの名無しさん
17/04/27 00:39:07.48 NvHKpotz.net
Stringは定数ではなくグローバル変数のように改変される
全ての関数をクラスという箱に入れた結果全てが事実上のグローバル変数になった

132:デフォルトの名無しさん
17/04/27 00:55:55.98 jbk1ehAe.net
>>131
見方によってはそう(グローバル変数)なんだよね。
スコープは狭い方が良い。
正直オープクラスはイマイチと思うのだが、でもjavascript はそのおかげでpolyfillとかできるんだよな。

133:あ
17/04/27 01:20:41.99 S1ERYEjc.net
>>130
Smalltalkはレシーバだろ

134:デフォルトの名無しさん
17/04/27 02:05:35.72 XheCn2mn.net
>>133
記法の問題ってこと?

135:デフォルトの名無しさん
17/04/27 07:23:11.77 1+VMbtmi.net
>>134
ビヤーネ・ストラウストラップらの抽象データ型のOOP(カプセル化、継承、多態性)と
アラン・ケイの遅延結合徹底のOOP(オブジェクトにメッセージを送る)は別物だって事をいいたいのかな

136:デフォルトの名無しさん
17/04/27 07:38:57.38 0Df9bF2U.net
Smalltalkがウンコ過ぎて世間からそっぽ向かれて死滅したんだから
後追いのRubyも死滅するのは歴史が証明している

137:あ
17/04/27 08:15:10.34 YQ2WW8c/.net
>>135
そう。パッシングの口でしかない。

138:デフォルトの名無しさん
17/04/27 08:28:33.27 /s/zy9NN.net
まさか、rubyがADT拡張としてのOOPLだと思ってる?

139:デフォルトの名無しさん
17/04/27 08:44:30.71 N3r3uYtr.net
>>136
死滅したとか記憶から消し去りたいロートルがいる一方でスタートアップで勝負をかける奇特な人もいる
URLリンク(pharo.org)
スタートアップ界の異端児!産業機器 x IT x SmalltalkのSORABITO株式会社
URLリンク(thepedia.co)
Smalltalkのとらえ方は人それぞれやね

140:デフォルトの名無しさん
17/04/27 08:58:08.10 /s/zy9NN.net
Smalltalkはうんこすぎて死滅したと2ちゃんでクダ巻いてるだけの爺さんを横目に、
今日もSmalltalkが世界の海上コンテナ輸送の30%を捌いているわけだが。

141:デフォルトの名無しさん
17/04/27 09:17:39.03 N3r3uYtr.net
>>140
OOCLのことを言っているんなら、あれってJavaに置き換えられたんじゃないの?
Who uses Smalltalk? : programming - Reddit
URLリンク(www.reddit.com)

142:デフォルトの名無しさん
17/04/27 09:25:15.12 wBdpEusi.net
>>140
もしかしてOOCLのこと言ってんの?
とっくにそんなシェア無くなって、今年に入って買収の噂が出るくらい落ちぶれてるぞ

143:デフォルトの名無しさん
17/04/27 10:07:04.57 Cz6WFEXA.net
爺さん批判してる奴の知識が爺さんだったか

144:デフォルトの名無しさん
17/04/27 10:10:47.76 sNquU9cU.net
Smalltalkがどうこう以前にファンやアンチがうんこすぎてわらた

145:デフォルトの名無しさん
17/04/27 10:12:00.41 /ppzzK1q.net
Smalltalk信者とHaskell信者はよく似てる

146:デフォルトの名無しさん
17/04/27 12:35:13.63 /s/zy9NN.net
>>141
よく読め。再実装されたのはUIだけだ。あほか?

147:デフォルトの名無しさん
17/04/27 13:02:15.04 jfFmbm9g.net
>>146
なんでとても素晴らしいsmalltalkで再実装されなかったの?

148:デフォルトの名無しさん
17/04/27 13:17:16.51 +ggBtOYn.net
おそらく同じ言語で再実装するとeachをeach_charに変えたくなるから
そんなことするなら言語ごと変えた方が良い

149:デフォルトの名無しさん
17/04/27 14:09:11.99 Yjb8fh0C.net
>>147
Smalltalk は開発環境含めてあまりにオールインワン過ぎるから。

150:デフォルトの名無しさん
17/04/27 17:05:36.01 sNquU9cU.net
>>146
そんなどーでもいいことより30%シェア撤回マダー

151:デフォルトの名無しさん
17/04/27 20:07:13.14 PwOPvcNg.net
どーでもいいな、クソくだらねえ。

152:デフォルトの名無しさん
17/04/27 20:28:54.10 zXLo9cW8.net
もう死んでる言語を追い詰めても仕方ないよな
死体蹴りは良くない

153:デフォルトの名無しさん
17/04/27 22:14:26.81 McKGSVbG.net
もう風化してて蹴るものもないと思ったのに

154:デフォルトの名無しさん
17/04/27 22:36:43.95 +ggBtOYn.net
風化すればまた再発明される
過去に同じことがあったと口で言っても証拠が残ってなければ同じことが繰り返される

155:デフォルトの名無しさん
17/04/27 23:26:29.59 Yjb8fh0C.net
死んだ言語の死んだ理由ってのは新しい言語の糞機能アピールよりかは勉強にはなる。

156:デフォルトの名無しさん
17/04/28 08:28:08.68 WPyfQjET.net
死んだ言語ねえ…
死んでるのはおめーの脳みそだろ?
URLリンク(pharo.org)

157:デフォルトの名無しさん
17/04/28 08:55:25.45 j+L8+G8p.net
SmallTalkガイジって一番ガイジだった頃のエンジニアガイジとちょっと似てるな

158:あ
17/04/28 17:12:11.94 Yq+yDopp.net
>>157
いつでも同じクオリティじゃないか

159:デフォルトの名無しさん
17/04/28 20:19:57.31 j+L8+G8p.net
>>158
最近文読みやすくなってきてるしちょっとええ感じやで

160:あ
17/04/28 20:29:25.20 0gV62uUk.net
>>159
まぁ具体的に「パラグラフが長い」「言い回しがくどい」と言われたら、
なるほどと思うし、ちょっと気を付けられるからな。
読みにくい、ガイジか!とだけ言われたら、読みにくいだけならしっかり読めとしか言いたくなくなる。

161:デフォルトの名無しさん
17/04/29 02:55:48.56 R+WhfS42.net
シミュレーションをより簡略に作成するための新言語開発を。
「ロボットは東大に入れるか」成果報告会 in 2016(11/14)レポート
URLリンク(blog.livedoor.jp)
これからはシミュレーションシステムの構築が簡略化されるので、来年のセンター物理は大きく得点が伸びるに違いない。
 スーパーコンピュータでの計算に必要となるプログラムはときに数十万行にも及び、作成やチューニングは大変困難です。
一方で、原理的にはシミュレーションしたい自然現象とその離散化法(注2)を指定すれば、プログラムは機械的に生成できます。
しかし、プログラミングはシミュレーションとコンピュータ双方に深い知識が必要となる非常に高度な作業であり、多数の計算機を
協調して動作させるスーパーコンピュータの性能を引き出す高度なプログラムを、自動かつ汎用的に生成することは不可能でした。
 そこで共同研究グループは、方程式がプログラムに変換されるまでの一連の段階に対応する数学的定義を作りました。
スーパーコンピュータが持つ階層のすべての段階において、自然が元来備えている「並列性」と「局所性」(注3)を保持する変換
を厳密に定めることで、新たなプログラミング言語「Formura」を開発しました。これによって、これまで不可能だったプログラミング
の機械化に成功しました。さらにFormuraは、同じアプリケーションに対して何万通りものプログラムを試し、最も速かったものを自動的に選択します。
 Formuraを開発したことで、規則格子シミュレーション(注4)分野においては、自然科学者が慣れ親しんだ方程式の記法を使ってシミュレーション
したい対象を記述することで、スーパーコンピュータの性能を引き出すための高度なプログラムが自動的に作成できるようになりました。
気象、地震、宇宙、生態ネットワークの研究など、規則格子シミュレーションを用いる分野の研究の加速が期待できます。
URLリンク(pr.fujitsu.com)

162:あ
17/04/29 12:11:59.50 R/nsoadB.net
投機ベースは確かに分野限られるし、実用例と先端の研究者が解離してる典型だわなぁ。
「5%の不良率で100個発注したら当たり前のように105個納品されてくるようなどっかのおおざっぱな国の発想だ」
と、日本の会社だと反発されるやつ。
ナップサックとか問題持ち出して、モノによっては泥臭く計算せなあかんのやと言うのと、
次は百万台でやっても一つのタスクの不可分な時間以下にはならんのだよ、
を説明して説得して導入するようなものだから。
トポロジ解析と図面生成か何かで原始的なそれやった事ある。

163:デフォルトの名無しさん
17/04/29 13:21:11.09 rB0Fvmgg.net
>>161
多くの深層学習フレームワークはNN構造をPythonなどで記述すると
それをテンソルの計算グラフに変換してGPUで高速計算してくれる。
NN構造や規則格子をさらに簡略に記述したければJuliaがある。
Fomuraの20行のシミュレーション記述も既存の言語でできるはずだ。
つまりシミュレーションをより簡略に作成するために新言語は必要ない。
必要なのは用途毎のフレームワークだ。

164:デフォルトの名無しさん
17/04/29 18:34:55.63 n+S+CElE.net
発展し続ける言語とゴミ屑同然に忘れ去られる言語、何が違うんだろうなぁ

165:デフォルトの名無しさん
17/04/29 19:09:01.68 0nTkChzC.net
言語の良さを理解して使い続けられる人と、ゴミ屑同然の脳みそですぐに忘れ去ってしまう人、何が違うんだろうなぁ

166:デフォルトの名無しさん
17/04/30 00:13:09.75 feM/rwNV.net
>>164
覚えやすさとチューニングのしやすさ。
以上。

167:デフォルトの名無しさん
17/04/30 01:03:20.38 E30HxT2S.net
>>164
いろんなプログラム言語を開発しておいて、その上で『良いとこ取り』で新言語を開発する。

168:デフォルトの名無しさん
17/04/30 01:49:39.39 9UtCfcRf.net
>>164 バックでしょ
Goはグーグル発じゃなかったら「今どき継承もない言語作ったのかよ?w」で即死

169:デフォルトの名無しさん
17/04/30 01:50:36.87 2awuHSHC.net
>>167
なおScala

170:デフォルトの名無しさん
17/04/30 09:42:21.85 QitJ8eBZ.net
>>168
実際死んでね?言語としては。
言語として死んでるのをGoogle謹製の周辺ツールで無理やりカバーしてゾンビ化してる感じ。
ゾンビなので一周回って死ににくい。

171:デフォルトの名無しさん
17/04/30 10:18:39.25 H2bTIgd1.net
どんだけバックが大きくてゴリ押ししても
死ぬときは死ぬ
Dartとか

172:デフォルトの名無しさん
17/04/30 12:02:29.80 kLDfBj4F.net
>>168 >>170
Goは文法が簡単で高性能という特徴がある。
おかげで文法は簡単だが低性能な言語から移行しやすい。
だから難しい言語が選ばれない所で活躍している。
Gopherの道を歩む – Node.jsからGo言語への移行
URLリンク(postd.cc)
Go言語の低レイテンシGC実現のための取り組み
URLリンク(postd.cc)

173:デフォルトの名無しさん
17/04/30 15:36:43.63 4Q8qZxsi.net
Goって手続き型だろ?
Mainに集中して必要な機能呼び出すだけでいいんだから設計書なしで良さそう

174:デフォルトの名無しさん
17/05/02 06:00:14.79 IDWdkJdY.net
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でも可能に
ドキュメントセンターおよびオンラインの例題すべてが新しくレスポンシブデザインに
URLリンク(www.wolfram.com)

175:デフォルトの名無しさん
17/05/02 06:54:00.89 hkg4cpdn.net
回転放物面の方程式と東大の問題
URLリンク(mathtrain.jp)
「放物線 y = 3/4 - x^2」

「y軸の回りに回転させる」
・・・例えば、こういう操作ができる3次元CADって開発されてないんですか?
統計的機械翻訳では自然言語処理は無理という話も聞いているけれど、高校数学でやることは内容が限られており、
一般的な機械翻訳よりは難易度は低いと思われます。

176:デフォルトの名無しさん
17/05/02 07:13:28.68 iysKcMgd.net
3次元CADを名乗っていて回転体を作れないもののほうが珍しいと思うが、
その問題を解けるCADは多くないだろうな。
近似的な数値解が求まることと、解を方程式で表して数式処理できることは全くの別物。

177:デフォルトの名無しさん
17/05/02 07:39:13.20 IDWdkJdY.net
>>176
>その問題を解けるCADは多くないだろうな。
そのための新プログラム言語開発ってことだよな。

178:あ
17/05/02 11:18:08.85 Ua7wVMyf.net
>>175
ごく当たり前の機能として存在する。
面で切り取る事もできる(面に対する押し出しで、相手方を削り取る感じ)
体積も求められるよ。
拘束条件は厳密だし、カーブを式で入れることもできるから。
ただ、それのために1License300万出す?

179:デフォルトの名無しさん
17/05/02 14:54:44.43 iysKcMgd.net
ああ、高精度な数値解を導出することと、任意の拘束条件から方程式を導出することの区別がつかない人がいるようだ。

180:デフォルトの名無しさん
17/05/02 14:57:14.02 Q2w+FZwb.net
解析解が必要な場面なのか?これは

181:あ
17/05/02 17:06:18.52 Ua7wVMyf.net
>>179
うちでつかってるのは数値解じゃなくて方程式まで自由じゃないけど変数の式でも出たはず。あれ内製だったかな。
AutoCADのMASSPROPとかくらいだと、悲しいかな数値解しか出ないけど、カーネルに手を出せる会社ならだいたいその辺持ってると思うよ。

182:あ
17/05/02 17:07:00.26 Ua7wVMyf.net
もし内製だったら、当たり前の機能として、とは言えんな。
それはすまん。

183:デフォルトの名無しさん
17/05/02 17:33:48.15 iysKcMgd.net
任意の方程式を扱えないと、>>175 の問題は解けないよね?

184:あ
17/05/02 22:27:44.92 Ua7wVMyf.net
>>183
押出する元の図形をプロシージャルではなくて、曲線定義で描く。
曲線への拘束条件で何を取るか次第だけど、問題文通り入れればそれで良いと思うよ。
ゴールデンウイークは試せないのがもどかしいな。

185:デフォルトの名無しさん
17/05/03 16:11:10.64 dCKp/m7W.net
Smalltalkって名前だけ変えて次世代言語って紹介されたら
殆どの人は信じてしまうくらい先進的だよね
進歩しすぎてて理解されない不幸な言語

186:デフォルトの名無しさん
17/05/03 16:33:31.70 RICjVVNj.net
比較的新しい言語ってvar t : Type形式が多い気がするけどType t形式を利用しなくなった理由ってあるのかね

187:デフォルトの名無しさん
17/05/03 16:46:20.28 MC+KZ03m.net
>>186
型推論の問題じゃない?多分

188:デフォルトの名無しさん
17/05/03 16:53:47.90 jNZhewdQ.net
型を書いたり書かなかったりする場合に記述を大きく変える必要がなくて都合がいいんだろう。
型推論を使う言語とか、動的型言語に型ヒントを追加する場合とか。

189:デフォルトの名無しさん
17/05/03 17:10:47.34 UME+lawj.net
たとえばC#だと基本はType tで後から型推論var t(: typeはない)を追加した
だったら最初から統一的な記法で良くね?ってなる

190:デフォルトの名無しさん
17/05/03 19:11:09.93 RICjVVNj.net
なるほど
型推論が流行ってる(のかはわからないが)から型推論の書き方+αで書けるようにしたってことか

191:デフォルトの名無しさん
17/05/03 20:37:23.26 21J3ISub.net
デニス・リッチーも型前置にしたことを後悔していたんじゃなかったっけ?
たぶん型後置の方が合理的という点には大方の一致があって、あとは合理性を取るか、Cの語順に近づけることを取るかっていう感じなんじゃないかな?

192:デフォルトの名無しさん
17/05/03 22:01:20.86 mJ/QVcTI.net
>>186
pascalがそういう記法だけど、コンパイル速いのはpascalがコンパイラの都合に合わせた文法だからって読んだことある。
何かしらコンパイラが解釈し易い記法なんじゃね?

193:デフォルトの名無しさん
17/05/03 23:27:43.76 AGrCBSz0.net
>>192
Pascalの構文は再帰的パーサを簡単に書けるLL(1)文法なんじゃなかったかな
LL(1)ならトップダウンで構文解析できるからパーサは書きやすいしパーサの効率も多分だけど高い
Cの場合は、例えば
  atype;
という宣言があった場合、"atype"という識別子が
1.typedefで型の名前として既に定義済であれば「変数が指定されてない構文エラー」となるし
2.そうでない場合、"atype"という名前のint型の変数の宣言として扱われ
  2―1."atype"という変数が既に宣言済であれば2重宣言のエラー、
  2―2.そうでなければ正しい変数宣言
となるので、構文解析の際にsymbol tableを参照する必要がある(つまり本質的なレベルで文脈依存文法)ケースが存在するので
当然ながらコンパイラの効率が下がるだろうね

194:デフォルトの名無しさん
17/05/04 00:37:37.35 lJ9s6a1R.net
昔のpascalは1パスコンパイラだった。コンパイルの速さはそれもあったかもね。
今のobject pascalはジェネリクスもあるしどうだろう?

195:デフォルトの名無しさん
17/05/04 05:29:59.66 TpHQvZsj.net
>>186
v: Type形式なら変数の型だけでなく、式に型をつける構文としてもそのまま使えるから。

196:デフォルトの名無しさん
17/05/04 09:04:54.52 IvFxbTrW.net
値の演算だけでなく型の演算として同じ記号を使うのがCのポインタや配列
これは評判が悪かった
悪いのはポインタだけだというのがJava
全部悪いから全部変えるのが次世代

197:デフォルトの名無しさん
17/05/04 09:34:14.90 L3vkrSi7.net
まあポインタの宣言と参照のための記号に同じ * 使ってんのは今でもなんでなんとは思う。

198:デフォルトの名無しさん
17/05/04 09:51:37.05 l8/ufUYV.net
関数の戻り値型の指定はPython,TypeScriptが=>、Swiftだと->が混ざって
いまいち統一感がないんだよな。:のままだと構文的にうまくない部分があるんだろうか。

199:デフォルトの名無しさん
17/05/04 10:09:01.14 g5LPBSe2.net
>>186
C方式に慣らされてるからそう感じるだけであって
あれはパースしづらいクソ構文だよ
struct S s;
を捨てたのは何でだろうと問うべきだよ

200:デフォルトの名無しさん
17/05/04 10:44:22.27 IvFxbTrW.net
そもそも静的型が悪いと思えば単純明快だな
静的型は悪くない、だがジェネリクスは不要、ただし Array<T> 等はこっそり入れておく
こんな状態で統一感(笑)を期待する方がおかしい

201:あ
17/05/04 11:53:43.54 iOTKQL/7.net
>>200
思いっきりGoだな。
まぁ、Goに統一感なんか無いし、期待してはいかんw
あれは誰でもかける便利な言語だよ。
一切の原理原則以外を排除する崇高な思想で作られた芸術品ではなくて、
「その辺にある便利そうなものを誤謬矛盾なく突っ込めるようにそれなりにルール作りました。
 とりあえずこのルール破ると突っ込めなくなるからやめてね。コンパイルさせないよ。」
という、実用のためのルールが細かいのがGoだよ。
電動ドリルのチャックとビットの規格みたいなもん。
「対称性がなくなるからこのメソッドを実装する」という発想ではない。

202:デフォルトの名無しさん
17/05/04 12:29:38.64 IvFxbTrW.net
原理原則というのは崇高な思想じゃなくて無駄な仕様変更の防止という実用の技術だ

203:デフォルトの名無しさん
17/05/04 12:53:07.54 g5LPBSe2.net
なんだ PHP だったのか

204:あ
17/05/04 13:45:55.83 iOTKQL/7.net
>>202
口実やね。
専用品と汎用品なら、圧倒的に前者の方か仕様変更の回数は少ない。
無理に延命したり使いましたりしたいからこそ、よくわからん仕様変更するハメになる。
無駄な仕様変更なら、最初からしなけりゃいいんだよ。
無駄なんでしょ。
使い捨てを使い捨てと認識する事こそがスタート地点。
歯が折れたら取り替えたいし、違う歯を使いたいからチャックがあるんだから。
歯の代わりにバフ付けることも出来るけど、それに対して仕様変更なんか要らないでしょ。バフを新規に作るだけじゃん。
置換原則出してきて証明する必要も無い。
>>203
そうだ、と言う認識だなぁ、俺は。
PHPも同じ理由で、いろんな意味でとても潔い言語だと思うよ。

205:デフォルトの名無しさん
17/05/04 15:09:17.79 TpHQvZsj.net
言語設計とドリルチャックを一緒くたとか…完全に呆れた

206:あ
17/05/04 17:00:05.42 iOTKQL/7.net
呆れるなら簡単だからな。
どう違うかをきっちり教えて欲しいわ。
本当に勉強になったら素直に勉強になったと言うことにしてるし、実際何度もそうレスしてるよ。
言語なんて外から見たときに一意に呼び出し規約や入出力が決まってりゃそれでいいんだよ。
これでも素晴らしい言語とやらを5個10個と多数見てから言ってるんだけどな。
それ以上の、実用性以上の思想の旗を振りたいなら、何故その思想が必要か語ってほしい。

207:あ
17/05/04 17:07:42.27 iOTKQL/7.net
しかし、式に型をつける構文が後置だから出来るのは本当なのかな。
キャストの前置や後置と何か違うのかなぁ。
って考えたら「宣言文 名前 型」の方が遥かに簡単にパースできるなって思わんのかな。
式に型をつけるってのも、コンパイラに教える意味での型か、キャストの型か2つの意味あるけど、どっちの事かな。
疑問。

208:デフォルトの名無しさん
17/05/04 21:21:01.22 IvFxbTrW.net
>>204
多分それは使い捨てではなく交換
これを捨てる代わりにあれが欲しい
見返りがあれば捨てるが無条件に捨てられそうになったら使い捨てに反対するだろう

209:デフォルトの名無しさん
17/05/04 22:18:26.60 L3vkrSi7.net
むしろ変な原理原則に縛られてる方が糞仕様の増加を招くのだが。
haskell みたいにな。

210:デフォルトの名無しさん
17/05/04 22:34:29.63 IvFxbTrW.net
確かに、関数型とかいう変な原理でHaskellを理解しようとしてるならやめた方がいい
静的型の原理だけで理解できるから

211:あ
17/05/04 22:35:23.26 iOTKQL/7.net
>>208
「交換できる、交換出来ない」と「使い捨てである、改良を加えて連用する」は同時にどの組み合わせも成り立つのでは?
これを捨てる代わりに、これと同じ機能プラスαの新ライブラリを作る、みたいな話で、
完全に前方後方互換の代替品であるかもしれないし、そうではないものかもしれない。
そういう意味では、無条件に捨てる事ができるってのは立派な見返りだよ。

212:デフォルトの名無しさん
17/05/04 22:36:44.00 hGwzsYkf.net
良いんだよ。
Haskellは美しさが売りなんだから。
むしろ美しさを保ったまま、どこまで実用的なの作れるかが楽しいんだよ。
そう言う意味じゃsmalltalkと同じ、純粋xx言語でxxの真髄理解するなら~って言語であって、次世代言語じゃあない。

213:あ
17/05/04 22:36:44.02 iOTKQL/7.net
>>210
ならPrologの方が賢いし、Scalaの方がまともだし、Lispの方が最低限の原理から出来てるから、Haskellは要らない子だな。

214:あ
17/05/04 22:39:24.44 iOTKQL/7.net
>>212
それそれ。エスペラント語とかロジバンみたいなもん。
実用的ではないけど面白いのは認める。

215:デフォルトの名無しさん
17/05/05 01:26:49.15 xfO5LNpr.net
Haskellは代数的データ型が便利
何気にあのレベルに便利な型システム他に見ない

216:あ
17/05/05 03:41:35.36 05XvGSte.net
>>215
OCamlの方がシンプルかな。
Haxeの方が記法はきれい。
Kotlinはいささか冗長で使い物になるのかな?みたいな羊感出てるけど、when使うときに逆に便利になる。

217:デフォルトの名無しさん
17/05/05 05:49:16.66 IB1/E975.net
SmalltalkとHaskellは使ってみるとゴミと分かる二大巨頭
信者が煩いとこもソックリ

218:デフォルトの名無しさん
17/05/05 07:09:34.37 +77JIYq6.net
>>217
アンチがウザいのもそっくりだよね

219:デフォルトの名無しさん
17/05/05 07:18:58.13 IB1/E975.net
>>218
どっちの信者?

220:デフォルトの名無しさん
17/05/05 07:39:38.28 dc5WkLcd.net
>>217
アンチが無知なのもそっくりだよね

221:デフォルトの名無しさん
17/05/05 08:48:03.35 2f8pCQ29.net
IntelliJとかのマトモなIDEを使った後に
Smalltalkの時代遅れのIDEモドキ?を使ってみると、
終わった言語の進化に取り残されてる感がよく分かるし
こんな出来損ないを使うの強制されるSmalltalkerって哀れだなーって優しい気持ちになれるよ

222:デフォルトの名無しさん
17/05/05 09:20:19.67 7NmAzLlS.net
>>221
言語としてはどこらへんがゴミなの?

223:デフォルトの名無しさん
17/05/05 09:39:59.96 2f8pCQ29.net
>>222
動的型言語の中ではぶっちぎりで冗長なコードになるところ

224:デフォルトの名無しさん
17/05/05 09:54:56.24 WrAdTxbV.net
文字列クラスを改変したら元に戻せないという話はSmalltalkにも当てはまるのかな
文字列クラスクラスがあれば壊れたクラスを使い捨てて新品のクラスに交換できるのに

225:デフォルトの名無しさん
17/05/05 10:13:52.40 b5hiFaeg.net
>>224
クラスが壊れるという事自体が糞めんどくさい

226:デフォルトの名無しさん
17/05/05 13:00:01.57 tVaTXT91.net
Smalltalkっていうか遅延結合の徹底ってスタイルは人類には早すぎたんだな

227:デフォルトの名無しさん
17/05/05 16:27:38.21 lho11o7a.net
RESTful API等でサービス間を遅延結合するのは流行ってるしメリットがあるけど
ひとつのプロセス内で遅延結合しても意味が無い
アホは適切な抽象化レベルってものが分からないから
やりすぎてナンセンスになっちゃうんだよね
Smalltalkはアホがナンセンスなデザインした結果死ぬべくして死んだ言語

228:デフォルトの名無しさん
17/05/05 17:23:18.30 9atsKcF/.net
Haskellは遅延評価が本当に苦痛すぎる
あの辛さはやってみるまで想像もつかなかった

229:デフォルトの名無しさん
17/05/05 17:51:23.35 tVaTXT91.net
Smalltalkにおいて「遅延結合の徹底」に期待されるのは通常の言語で想定されるそれとは違って
システム構築中に得られた新たな知見を、既に構築済みだったり運用中の部分へ適用できたり
オブジェクトとそのストアを長期にわたって運用し続けるために細胞の新陳代謝を模した試みだから
URLリンク(metatoys.org)
'70年代からほんの数回の再起動で動き続けている同システムは狙いとしては成功しているんだよね

230:デフォルトの名無しさん
17/05/05 17:51:28.56 RNJ7gaAH.net
無限リスト扱えるし便利でもあり、バグ取りで厄介でもあるね。
RWHにその辺の解決策載ってるから手元に置いとくと良い。

231:デフォルトの名無しさん
17/05/05 17:51:33.32 xTb1W+Ca.net
馬鹿は抽象化することがなんでもえらいと思ってるからね。。

232:あ
17/05/05 19:50:22.56 05XvGSte.net
>>227
意味無いとは言わんがなぁ。
プロセス内でもプロトコル決めてやっとくと、あとでスケールするとか、
固まりへのインアウトが自ずと決まるから可換だと言いやすいとは思う。
やりすぎると自分の重さで死ぬだけで。

233:デフォルトの名無しさん
17/05/05 20:29:10.87 RNJ7gaAH.net
FacebookでHaskell採用されたね。

234:デフォルトの名無しさん
17/05/05 20:49:47.45 JET5JsI8.net
>>216
Haskellと比べてOCamlがシンプルって
SMLと勘違いしてない?

235:あ
17/05/05 20:51:14.85 05XvGSte.net
>>234
してないよw
シンプルってのは字数が少ないって意味じゃないぞ。

236:デフォルトの名無しさん
17/05/05 21:21:35.63 JET5JsI8.net
>>235
そんなら勘違いしてるね

237:デフォルトの名無しさん
17/05/05 21:31:07.05 n4hNDFR+.net
全然関係ないけど、字数が少ないコードって一目で取れる情報が多くて読みやすくて好きだわ

238:デフォルトの名無しさん
17/05/05 21:42:23.21 RNJ7gaAH.net
>>231
時代によって変わる程度問題だけどね。
C++だって、昔はクラスってなんだよ。Cより遅くなるじゃねーかって言われてたらしい。
昔よりも抽象度の高さが問題になる場面は少ない。

239:デフォルトの名無しさん
17/05/05 22:47:31.33 PGBNZ8Aw.net
いつの間にかHaskellがスレタイから抜けててワロた。

240:デフォルトの名無しさん
17/05/05 23:29:21.86 RNJ7gaAH.net
取り敢えず拡張性比べるんならプログラム組むべ。
まずはファイル名とキーワードを受け取って、ファイルの中にキーワードがあったら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

241:デフォルトの名無しさん
17/05/05 23:31:16.17 tVaTXT91.net
前スレのドアのお題をPharo Smalltalkでも書いてみた
URLリンク(ws.stfx.eu)
Go版ももう少しマシな感じにしてみた
URLリンク(ideone.com)

242:デフォルトの名無しさん
17/05/05 23:36:43.64 RNJ7gaAH.net
だから、使い所不明なクラス書いてどうしろと。
プログラム組みたいのであってクラス作りたいんじゃ無いんだぞ?

243:デフォルトの名無しさん
17/05/05 23:59:41.96 tVaTXT91.net
>>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 "

URLリンク(ws.stfx.eu)

244:デフォルトの名無しさん
17/05/06 00:04:14.20 nikLe03p.net
>>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

245:デフォルトの名無しさん
17/05/06 00:23:53.40 9tv813Aq.net
え。。。
通ったけど。。。

246:デフォルトの名無しさん
17/05/06 00:29:01.13 gXvlLccW.net
うん、普通のデータ処理の比較は面白そうだ。

247:デフォルトの名無しさん
17/05/06 00:29:23.53 9tv813Aq.net
>>243
おk。
強いて言えば、この後拡張する時、どこまで今のコードから書き換えないで済ませられるかが仕様変更に強い基準になると思う。

248:デフォルトの名無しさん
17/05/06 00:33:03.34 nikLe03p.net
>>245
そのままじゃ通らなかった
けどごめんね、詳しく見てなかったけど駄目だったのはタイポだけだったみたいだね

249:デフォルトの名無しさん
17/05/06 00:35:03.84 9tv813Aq.net
あ、argsをargaってタイポしてた。。。
LinuxにHaskell入れたばかりなのでPCで実行確認してiPhoneで書き込んでるんで、コピペでコンパイル出来ない時はどこかタイポあると思う。

250:デフォルトの名無しさん
17/05/06 00:50:29.93 9tv813Aq.net
次世代言語勢に参戦して貰わんとだから、第二形態は明日の夜発表って感じで良いかな。
一応、第三形態までの予定。
明後日から夜勤なんで、第三形態どうすっかな。

251:あ
17/05/06 02:06:36.33 BE072L/9.net
>>236
そうなのかなぁ。
例えばそれぞれのどんな例からシンプルさがわかる?
後学のため教えて欲しい

252:あ
17/05/06 02:11:17.59 BE072L/9.net
>>241
Go版、マシどころか疎にしておいたところ密にされてしまったな。
ノブのないドア、ノブはあるけどラッチのないドア
実現する術がなくなったね。
With Withなんて気色悪い無理に継承関係を作ったような型作るくらいならもう継承とか全部捨てたほうがマシ。
もうちょっと真面目にやって。

253:デフォルトの名無しさん
17/05/06 03:50:07.06 oP2bFz9u.net
Kotlinになれるためにアプリを作ってるんだけど、久しぶりにc++触るとセミコロンがうっとおしくなるね
参照、ポインタ、値を自由に扱えてかつ新しい言語の特徴を捉えてるような言語が出てほしい

254:デフォルトの名無しさん
17/05/06 06:35:37.73 7HgaeBZn.net
勝手にHaskellをスレタイから省くな。

255:デフォルトの名無しさん
17/05/06 07:19:08.10 gBi5/Vqg.net
>>252
前スレの埋め込みを使った再帰型の試みとして、主要なメソッドを再定義しなければならない版より「マシ」と言ったまでで
君のチャンネル版よりマシという意味ではない
それは他言語版と同じ設計で比較しやすくしたって程度だから気にしないで

256:デフォルトの名無しさん
17/05/06 07:23:37.59 gXvlLccW.net
各自、次世代言語に求めるものが違うのだろうけど、
気を悪くしないで欲しいがHaskell外してKotlinは個人的にはないかな。
敢えて外すなら次世代感満載のAgdaを入れて欲しい。
が、呼び水としての趣旨からしたらHaskellを敢えて外す理由が分からない、個人的な怨嗟?

257:デフォルトの名無しさん
17/05/06 08:00:28.21 Yu22orOs.net
実用性が乏しすぎるので次世代にふさわしくないとの事
あと前スレでまともなコードを掲示しなかったので、そもそもHaskellerが居ない事が分かった

258:デフォルトの名無しさん
17/05/06 08:15:37.40 JdaZnrFf.net
>>256
Javaより古いHaskellを次世代言語に混ぜた初代スレの>>1がどうかしている。
初代スレはHaskellの美しさを語るエアプログラマーが多かったが
次世代言語の実用性を語るスレに変わってよかったと思うよ。

259:デフォルトの名無しさん
17/05/06 08:35:08.14 9tv813Aq.net
Haskell推しだが、次世代取れるほどライブラリ充実してないし、速くもないからsmalltalk的な立ち位置だと思ってる。
次世代じゃ無いけど、学ぶべき価値ある言語。

260:デフォルトの名無しさん
17/05/06 08:41:48.81 gBi5/Vqg.net
>>255
参考まで、ほぼ同じ設計にした場合の
Ruby版 URLリンク(ideone.com)
Python版 URLリンク(ideone.com)
Scala版 URLリンク(scastie.org)
Swift版 URLリンク(swift.sandbox.bluemix.net)

261:デフォルトの名無しさん
17/05/06 08:43:22.81 9tv813Aq.net
>>257
Mix-inとか言われては書けなかったね。
普通のクラス代りなら何とかなったが。
そもそも目的のプログラム作るアプローチとして関数かクラスかなのに、クラス作れは問題としてオブジェクト指向に有利過ぎ。
実際に動くプログラムで拡張勝負のが公平っしょ。
だから>>240提案した。

262:あ
17/05/06 08:50:48.08 BE072L/9.net
>>255
なるほど。申し訳ない絡み方したな。
smalltalkでもパッシングに徹すればひたすらコーディング量はあるけど割りと文句無いのできそう。
>>256
Kotlinなしなの?使いやすいのに。実用性あるから?

263:デフォルトの名無しさん
17/05/06 08:56:13.51 VviFbgmi.net
各言語、得意分野あるからな。
証明付きでプログラム書けとかなったら、Coqなどの証明支援系の独壇場で、
他言語の入り込む余地がないように思われるが如何?

264:デフォルトの名無しさん
17/05/06 08:58:57.84 ye19IDAy.net
Bertrand MeyerがEiffelを大事そうに抱えながら>>263を睨んでいるぞ。

265:デフォルトの名無しさん
17/05/06 09:31:45.79 nikLe03p.net
自分もRubyやGroovy使ってたせいかもしれないが
Kotlinは言語としては悪くないけど次世代感は感じない
golangぐらい簡素な仕様にしてくれればまた違ったとは思うけどJVM言語だしなあ

266:デフォルトの名無しさん
17/05/06 10:21:48.72 BwUsBv8i.net
言語が次世代でありさえすればライブラリはJVMでもなんでもいいぞ
ライブラリ関係ないなら、ライブラリがない言語でも参加しやすい

267:デフォルトの名無しさん
17/05/06 10:22:29.07 ubF1nelW.net
>>262
> smalltalkでもパッシングに徹すればひたすらコーディング量はあるけど割りと文句無いのできそう
具体的にはどこらへんにその「量」を感じた?
ドアの振る舞いを記述してるコード自体はGoで書くよりずっと簡潔でステップ数も少ないはずだけど
念のため補足すると件のSmalltalk版では、通常はGUIやIDE任せにするクラスやメソッドの定義
(ちなみにGNU Smalltalkなどを除き、IDE前提のSmalltalkにはクラスやメソッド定義の構文が無い)
をあえてクラスへのメッセージングでやっているのでそのぶん冗長にみえるかもしれないけど

268:デフォルトの名無しさん
17/05/06 12:29:53.45 64kzmcng.net
何でSmalltalkerさんは劣った設計で比較する事に拘ってんの?
Goが得意な技法はダメ、Smalltalkで書きやすい技法だけ使って書くっていう縛りでもあるの?

269:デフォルトの名無しさん
17/05/06 12:43:22.47 xfCUj8G0.net
>>259
同意

270:デフォルトの名無しさん
17/05/06 12:46:26.00 ye19IDAy.net
>>268
どうしてそういう発想になるのか全く不明。
人間の言葉でしゃべって。
>>267 を補足すると、
compile:とかがやたら続いているコードブロックがクラスやトレイトの定義に相当する部分で、
それ以外がドアやストッパーを操作するサンプルコードな。

271:デフォルトの名無しさん
17/05/06 12:52:37.52 ubF1nelW.net
>>268
いや別に拘ってないですよ
そもそも誤解があるようなので断わっておくとGoを貶めるつもりは全然なくて
Smalltalkに難癖を付けてるID:BE072L/9が前スレからGoが詳しそうなんで
その方がわかりやすかろうとGoを引き合いに出したまでです
Goの得意な技法を駆使した優れた設計ってどんなのですか?ぜひ教えてください
今のところ埋め込みスタイル以外で出ているのだとこういうのでしょうか?→URLリンク(ideone.com)
このお題自体では設計を工夫しにくいと言うことであれば、新たにGoに有利なお題をご提供いただければと

272:デフォルトの名無しさん
17/05/06 12:58:55.97 ubF1nelW.net
>>268
あと、
> Smalltalkで書きやすい技法だけ使って書くっていう縛り
とのご指摘ですが、少なくとも Ruby、Python、Scala、Swift では Go よりすんなり書けています>>260 から
旧世代言語で書きやすい…ならともかく、Smalltalkで書きやすい技法だけって縛りにはならないですよね?

273:デフォルトの名無しさん
17/05/06 13:05:23.06 BwUsBv8i.net
愚問という便利な言葉がある
答える側には間違えるリスクがあるのに問う側を無リスクで無謬とするのは不公平

274:デフォルトの名無しさん
17/05/06 13:51:25.64 dM6SBXFL.net
その言語特有の機能で書いた方が優劣分かりやすくね?

275:デフォルトの名無しさん
17/05/06 14:24:42.57 wNWjHlrM.net
>Goの得意な技法を駆使した優れた設計
chan と select 使ったサーバープログラムなんでねーの。
ああいうふうにチャンネルに放り込んだものを適当に一列に並べてくれるのはかなり楽。

276:デフォルトの名無しさん
17/05/06 15:30:08.75 TldMS9JZ.net
ここまで次世代言語から>>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

277:デフォルトの名無しさん
17/05/06 15:43:50.78 TldMS9JZ.net
仕様変更への耐性だから、基準となる第一形態のコードの長さは問わない。
どんな変更があるか事前準備したクラスがあってもおk。
第三形態までの変更箇所の少なさが言語の優劣とする。

278:あ
17/05/06 16:40:50.57 BE072L/9.net
意見≒難癖とは生きづらいな

279:デフォルトの名無しさん
17/05/06 18:13:57.91 ye19IDAy.net
事実に基づかない悪評価は難癖だわな

280:デフォルトの名無しさん
17/05/06 20:12:56.46 XqR1goBE.net
エンジニアガイジのGo版ってあのなぜか最初から並列化を意識して書かれてたやつだっけ?

281:あ
17/05/06 23:05:01.66 BE072L/9.net
>>279
主観としての悪評価と客観としての悪評価を混同すんなよ…。
採点してる訳じゃないんだから。そこまで傲慢でも無いよ。
俺Rubyボロクソに言ってるけど、主観としてだよ。
>>280
並列化を意識してるんじゃないよ。
コンポーネントとして存在し得るかを考えただけ。
ノブがノブだけで存在できないなんておかしいじゃん。何にも繋がってない地面に転がったノブさえ定義できないのに、突然ドアについてる突起をノブだと言うくらい不自然じゃないの?
オブジェクト指向ってなんなの?
地面に転がってるのも、ドアについててもノブであって、ノブとしての役割を果たしているか否かでしかないのでは?
確かにそのノブがノブとして成立するのはドアについたときだろうけど、それ以前からそいつ自身の存在が変わったわけじゃないじゃん。

282:デフォルトの名無しさん
17/05/06 23:09:30.32 bKqO2+sL.net
>>281
んー。クローザーついてないドアにもスレッド使ってなかったっけ?

283:あ
17/05/06 23:16:33.79 BE072L/9.net
>>282
スレッドと言うかまあマイクロスレッド使ってるけど。
キューイングしてる所で同期をGoにやってもらった形に近い。
イベントやらメッセージパッシングと変わらんつもりだけど、キュー抜いて中もgoroutineなのは確かに悪手は悪手か。
それは確かにそうだな。

284:デフォルトの名無しさん
17/05/07 02:09:25.68 bNWzpChq.net
まだHaskell信者が暴れてるのか
ラッチの開閉すら実装出来ないと前スレで判明してのによく再登場出来るな

285:デフォルトの名無しさん
17/05/07 02:38:17.71 zdh+Rbcj.net
いやあの問題が糞だと思ったHaskellerが問題出してる流れじゃないの?

286:デフォルトの名無しさん
17/05/07 02:59:03.65 JOXD31Or.net
>>284
実装はできてたでしょ?

287:デフォルトの名無しさん
17/05/07 04:54:40.21 ehHyxLGM.net
久しぶりに覗いてみたけど、お前らまだやってたの?
良く飽きないな

288:デフォルトの名無しさん
17/05/07 08:02:58.35 M/7nygcc.net
Smalltalkerはお題で使って良い言語機能に縛りを入れようとするからクソ

289:デフォルトの名無しさん
17/05/07 08:26:48.70 HF1KyfYe.net
まぁここであーだこーだ言ったところで、大手の採用が多くなった言語が次世代扱いになるだけだからな
主に決めるのは外人だ

290:デフォルトの名無しさん
17/05/07 09:55:32.27 6O1o1Sih.net
>>289
まるでトクホや世界遺産に採用されるみたいな
官僚主義だな

291:デフォルトの名無しさん
17/05/07 10:05:54.32 4Tfm86M3.net
>>281
主観で悪評価しているなら、それこそ難癖以外の要素ゼロじゃないか。

292:デフォルトの名無しさん
17/05/07 10:48:31.07 6O1o1Sih.net
嘘ニュースを野放しにして個人の感想を問題視するのは本末転倒

293:デフォルトの名無しさん
17/05/07 10:56:51.74 U5ljnRqU.net
Haskell 難しすぎて叩きたくなるのもわかる。

294:デフォルトの名無しさん
17/05/07 11:24:25.93 PZmLVVS1.net
ほんと難しいよ
物を作る道具としては失格だな

295:デフォルトの名無しさん
17/05/07 11:25:56.17 6O1o1Sih.net
静的型が難しすぎて失格なんだよ
叩きたいことと叩くべきことが一致してない

296:デフォルトの名無しさん
17/05/07 11:29:53.16 Kq+qtoGk.net
microsoft word の動作が難しいって意味での難しさだわな。
無意味なむずかしさだわ。

297:デフォルトの名無しさん
17/05/07 11:56:43.37 uANj4DVJ.net
性的型が難しいって。。。
自分で正しくプログラム組めてませんって言ってるようなもんじゃん。。。

298:デフォルトの名無しさん
17/05/07 12:01:01.50 uANj4DVJ.net
溜まってんのかな。。。
x性的型が
o静的型が

299:デフォルトの名無しさん
17/05/07 14:33:06.42 2RFcNsFZ.net
お前らのゆう次世代言語って、キャットドア問題を解けるのか?

300:デフォルトの名無しさん
17/05/07 14:53:43.84 38Z51qvh.net
>>299
キャットドア問題って言いたいだけだろお前
すでに答えは出てるし、そもそも問題の把握すら出来てないじゃないか?

301:デフォルトの名無しさん
17/05/07 14:58:24.43 EXP2lJkU.net
>>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

302:デフォルトの名無しさん
17/05/07 15:03:42.15 zdh+Rbcj.net
キャットドアが解けて何かいいことがあるんですかね?

303:デフォルトの名無しさん
17/05/07 16:13:25.59 m17h7+4k.net
>>301
仕様変更への耐性を競うだけなので、まあライブラリ使ってもそれで仕様変更に強いなら構わないけど。。。
Haskellとsmalltalkしか回答寄せて貰えてない。。。
キャットドアのクラス作るだけの問題よりも、客からこんな機能付けてって要望に応える形で仕様変更されたのを如何にコード変えずに対応するかって問題は実践向きで良いと思ったんだが。。。

304:デフォルトの名無しさん
17/05/07 16:18:52.35 m17h7+4k.net
あと3時間もすれば会社行くからコードは明日。。。も出かける予定で無理か。。。
明後日には書くので、第二形態の問題だけ出しとく。
ファイル中に検索するキーワード見つかったら、見つかった数も表示するように機能追加。
見つからなかった時は表示しなくても良いし、表示を分けるの面倒臭かったら0個って表示で見つかった時と表示機能を共有しても良い。

305:デフォルトの名無しさん
17/05/07 16:26:36.91 EXP2lJkU.net
>>303
なるほどね
ならConduit使った方が処理簡単に挟めるから、仕様変更には強いと思う
あとはストリーム処理だから読み込むファイルが巨大になっても一定のメモリしか使わないってのも考えてみた

306:デフォルトの名無しさん
17/05/07 17:24:00.66 zdh+Rbcj.net
>>303
多分実戦向きの問題でいい感じなんだと思うんだけど、出題レスがとっちらかってて全部探すのめんどくさくてやる気起きなくてすまん
綺麗に纏まったレスどれ?

307:デフォルトの名無しさん
17/05/07 17:30:40.95 m17h7+4k.net
>>240>>277だけ見てくれればおkかと。

308:デフォルトの名無しさん
17/05/07 17:57:04.14 zdh+Rbcj.net
>>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関数まるっと書き直しちゃうけど

309:デフォルトの名無しさん
17/05/07 18:08:49.23 m17h7+4k.net
>>308
オブジェクト指向も関数型言語も、仕様変更に強いって言われて広まったり注目されてるから、次世代言語も仕様変更に強くないと使える言語と言えないと思って。
だから、書き捨てでも良いし、どんな変更が来るか事前に予測した設計でも良いけど、設計変更に強いと言うのを示せるか?って感じ。
ちなみに私のHaskellは何にも考えてはいない。
自信があるとかじゃなくて、デザパタとか知らない。
関数型言語が設計変更に強いなら、まあ何とかなるだろうってノリ。
全体の趣旨
>>277
第一形態
>>240
第二形態<-今ここ
>>304

310:デフォルトの名無しさん
17/05/07 18:14:46.33 zdh+Rbcj.net
おっと2問目もあったか
Pythonで言えば
def count(path, word):
____with open(path) as f:
________return sum(l.count(word) for l in f)
でも追加しておけばOKだな。うん。searchの内容一切使ってないけど変更は3行やね
つーかsearchももっと短くできたな

311:デフォルトの名無しさん
17/05/07 18:18:38.81 zdh+Rbcj.net
>>309
仕様変更に強いっていってもこのお題の長さなら仕様変更というより新たに書き上げる短さを競うことになるな
一切再利用考えなくても三行だし

312:デフォルトの名無しさん
17/05/07 18:23:23.71 /lTp1FVO.net
>>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'
URLリンク(ws.stfx.eu)

313:デフォルトの名無しさん
17/05/07 18:23:58.94 m17h7+4k.net
そこをどうにか機能追加で
search test.txt hoge
Ture 4
みたいな感じに表示項目増えるように第一形態のコードを育てる様にして欲しいんだが。。。
関数名以外は中身が丸っと変わっても良いけどさ。

314:デフォルトの名無しさん
17/05/07 18:27:46.84 zdh+Rbcj.net
え、関数名変えたらいかんの?
それはおかしいやろ
一回作った関数の振る舞いを変更するのはおかしい。別の関数を作るべき

315:デフォルトの名無しさん
17/05/07 18:28:27.76 m17h7+4k.net
Haskellではタプルをそのまま表示して
search test.txt hoge
(True,4)
ってする予定。

316:デフォルトの名無しさん
17/05/07 18:29:37.82 m17h7+4k.net
>>314
そう言う問題も第二弾として考えてる。

317:デフォルトの名無しさん
17/05/07 18:32:35.47 zdh+Rbcj.net
うーん。この程度の量で無理に機能追加で育てていくこと自体が設計ミスだと思うけどなあ

318:デフォルトの名無しさん
17/05/07 18:42:25.99 m17h7+4k.net
そこは承知の上で、まだ次世代言語入門したばかりでも参入しやすい様にってのと、過去のコードに影響あるよね?って事で第二弾に持って行きたい。

319:デフォルトの名無しさん
17/05/07 18:47:14.19 zdh+Rbcj.net
はい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行。一切再利用とかしてないけど、このお題に関して分かりやすさ、変更の少なさ、安全さでこれ超えるのは無理でしょ

320:デフォルトの名無しさん
17/05/07 18:51:13.41 zdh+Rbcj.net
>>318
やりたいことは了解したけど、回答者としては適切な設計でいきたいから、再利用したほうがいいと判断するまで再利用しないからな
まあいい具合に短いし気が向いたら次世代っぽい言語でもやってみるか

321:デフォルトの名無しさん
17/05/07 19:24:12.22 m17h7+4k.net
(しぶしぶ)了解。

322:デフォルトの名無しさん
17/05/07 19:36:18.70 4ZC1qsBr.net
再利用しないほうが少ない変更でいけるものに再利用を強制して、その分量で言語の優劣を測るというのは理不尽な話だ

323:デフォルトの名無しさん
17/05/07 20:18:32.73 zdh+Rbcj.net
Pythonのコードで再利用せずに済んでるのはバッテリー付き言語であるのが大きいな。もし次世代言語でmatchとかcountすらないようなのがあるとしたらその言語にとってはそこそこいい課題になるかもな

324:デフォルトの名無しさん
17/05/07 20:59:47.13 /lTp1FVO.net
>>304
ファイルの行ごとの内容はメモリに収まる程度なのか、とか
例えば 'xxxoooxxx' という文字列内に 'oo' は1個なのか2個なのか、とかは
回答側の都合がいいように自由に決めていい?

325:デフォルトの名無しさん
17/05/07 21:31:50.41 6O1o1Sih.net
仕様変更というから仕様バグをデバッグするのかと思ったら
バグのない完成品に機能追加して多機能化すれば優秀さを示せるって発想か
嫌な予感がする

326:あ
17/05/07 21:34:41.10 tachXp58.net
>>322
可換であるべき理由を殺しに来てるよね。

327:デフォルトの名無しさん
17/05/07 23:11:40.56 4ZC1qsBr.net
>>326
どういう意味?

328:デフォルトの名無しさん
17/05/08 01:06:43.83 F16X/4LX.net
Ocamlって型クラスないのか

329:あ
17/05/08 06:18:15.11 FkyLZnez.net
>>327
再利用せずに入れ替えたいから、その部品が使われるときのインターフェイスを定義して、関係ないものをカプセル化するんじゃん?
再利用して無理に機能追加してると、割りと早めにインターフェイスは形骸化するよ。
引き戸である、とか、このドアは回転扉で開けると反対が閉まる、とか、エアロックみたく、どちらかしか開かない制限をかけたいとか、そういう要件で安易に
扉だったものを魔改造するハメになる。
そうすると、インターフェイスってものや、カプセル化ってものが、完全に無意味になる。
魔改造されてて、本来の意味を失ったインターフェイスの「ドアを押す」メソッドとか怖すぎるじゃん。

330:デフォルトの名無しさん
17/05/08 06:39:47.64 pk8djPQr.net
>>329
横レスだけど
ざっくり言うとインターフェイスや型クラスの存在理由を殺しにかかってるって意味だよね
元の言い方だとちょっとわからなかったよ

331:あ
17/05/08 06:45:50.09 FkyLZnez.net
>>330
インターフェイス、型、あとはクラス構造自体の意義、もうちょっと広くとっても良いかなって思って。
Cでもアセンブラでも可換な作り方って出来るから、あまりに具体例にするのも話が矮小化しそうだなぁって思ったんよ。
申し訳ない。
「も、含めて」とかちょっと言い方考えるわ。

332:デフォルトの名無しさん
17/05/08 06:53:05.16 pk8djPQr.net
>>331
言いたいことはわかるよ
ただ可換なって言うだけだと
上の問題例もアリになっちゃうかなと…

333:デフォルトの名無しさん
17/05/08 06:57:25.03 Ya4nTupG.net
アルゴリズムなんてどれで書いても同じなんだから
もっとUI作りやすい言語くれよ。

334:あ
17/05/08 07:22:21.17 FkyLZnez.net
>>332
あーなるほど。
難しいもんだな。表現ってのは。
ありがとう、勉強になる。ちょっともう少し練ってから話すわ。

335:デフォルトの名無しさん
17/05/08 18:51:10.68 nU60kBJx.net
>>324
行は基本メモリに収まる程度だよ。
小説とか、常識的なテキストで問題無ければおk。
行に一個二個を回答側の都合ってのは普通駄目だろう。。。
でも、あんまりにも回答者いないんでもう良いよ。。。

336:デフォルトの名無しさん
17/05/08 18:54:25.80 nU60kBJx.net
>>329
あー。。。
あんま考えずに提案してたわ。。。
うーん。。。
インターフェースは変えずにって条件付ける?
実際に引数増やさないと駄目な時は補助関数作って、実際の処理はそっちに丸投げみたいな形で。
一応第二弾ではそう言うのも考慮して、既存の関数に手を加えないで機能拡張ってテーマで行く予定だけど。

337:デフォルトの名無しさん
17/05/08 21:10:34.76 nbca9qQS.net
>>335
> 行に一個二個を回答側の都合ってのは普通駄目だろう。。。
であれば、正規表現に丸投げするのでもなければ処理内容にも影響するので
例えば 'xxxoooxxx' 内に 'oo' は1個と数えるか2個と数えるかとかは出題側で事前にきちんと決めてください

338:デフォルトの名無しさん
17/05/09 00:31:37.08 fIUN0UPL.net
ああ!
勘違いしてた。
そう言うことね。
ラッキー7(777)検索してて7777ってなってたら1個と数えるか2個と数えるかって事か。
私の方法だと2個に数えてるので2個にしましょう。

339:あ
17/05/09 02:14:34.77 w3DidVUp.net
メモリをジャブジャブ使えて1個で考えて良いなら殆どの言語で一行なんだけどなぁ。
jsで言うと(content+'').split(delimiter).length-1だから。

340:デフォルトの名無しさん
17/05/09 07:18:26.65 83wQykSi.net
>>335
「小説とか」ということは、日本語の可能性もあるの?その場合に想定してるエンコードは?
とにかくideone.comとかで参加者が気軽に動作を確認でき、かつ仕様を満たした回答例を先に出しといてください
実戦向きとか言うわりに細かな仕様がまったくわからんし、動くコードでもなければエスパーするにも限界があるよ

341:デフォルトの名無しさん
17/05/09 08:36:02.65 YN7Krfta.net
言語が次世代になっても要件定義(笑)などが旧世代だと
どうにもならんね

342:デフォルトの名無しさん
17/05/09 09:22:59.82 7e9h09Aa.net
>>339
+'' ってなんかのおまじない?

343:あ
17/05/09 10:56:31.08 b+ihuqXk.net
>>342
splitがundefにならんように、文字列とコンカチしてる。

344:あ
17/05/09 11:59:38.90 b+ihuqXk.net
言葉足らずだったな。文字列と見せかけて数値にどっかで化けさせた奴対策だったり、そもそも引数来なかったとかそういうやつ。

345:デフォルトの名無しさん
17/05/09 13:13:43.62 7e9h09Aa.net
>>344
なるほど
ただ、それでエラーは出なくなるだろうけどバグが見つかりにくくなる悪寒しかしない

346:あ
17/05/09 15:17:46.56 tzdZ6ACH.net
>>345
数数えるんだから、数えられないものが来たらゼロになっていいんよ。

347:デフォルトの名無しさん
17/05/09 16:14:33.37 PEK3Ov/R.net
>>339
そうなんだ。。。
じゃあ、両方のを書くのでどっちもおkにします。
>>340
長さは?とか聞かれて小説とかって書いたけど、今回は適当なソース読ませる程度しか想定してないし、参入障壁にしたくないからアスキー文字だけしか想定してない。
本当、思い付きで申し訳ない。
そんな訳で下のコードをコピペして検索にかけると
>search search.hs search
(True,16)
ってなるはず。
んで、777を検索して7777を1個と数える版はsearch2として書いてみた。
最早Pythonよりも修正箇所多そうだけど気にしない。
do形式よりモナド形式が好きなのでdo形式コメントアウトしてるのは気にしないで欲しい。
(ちょうど良かったんで7777を確認用にdoの後ろに追加してる)

348:デフォルトの名無しさん
17/05/09 16:15:07.28 PEK3Ov/R.net
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

349:デフォルトの名無しさん
17/05/09 16:29:20.54 7e9h09Aa.net
>>346
contentがundefinedでdelimiterが'e'とかだったら?

350:あ
17/05/09 20:01:48.57 Qrp6KBdW.net
>>349
undefinedと空文字列かー、jsdoだと空になったけど、文字列化してしまうなら辛いな。

351:デフォルトの名無しさん
17/05/11 14:33:48.35 xTl8MRgt.net
第三形態とやらはどうなった?

352:デフォルトの名無しさん
17/05/11 14:41:22.16 +i4P6kRh.net
第一第二形態で次世代言語の回答もないのに出して良いものか。。。

353:デフォルトの名無しさん
17/05/11 14:47:49.71 +i4P6kRh.net
まとめとこう。
>>309で一旦まとめて
インターフェース(引数)固定縛り。
(補助関数可)
英数字のみのファイル前提。
行やファイル全体もメモリに収まる程度を想定。
777で検索した際、7777は検索結果1個とカウントしても2個とカウントしてもおk。

354:デフォルトの名無しさん
17/05/11 17:06:04.00 xTl8MRgt.net
そういうのいらないから第三形態と回答例はよ

355:デフォルトの名無しさん
17/05/11 17:14:36.14 +i4P6kRh.net
はいはい・・・。
んじゃ、検索で見つけた位置も追加で表示するように拡張。
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

356:デフォルトの名無しさん
17/05/11 17:32:30.86 +i4P6kRh.net
>>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)])

357:デフォルトの名無しさん
17/05/11 17:35:54.43 /dUENRjT.net
結局俺たちの次世代言語はハスケルとスモールトークだったということか。

358:デフォルトの名無しさん
17/05/11 17:41:01.83 +i4P6kRh.net
んな訳ないと思うんだが。。。
第三形態まで出たんだから、次世代言語勢たのんますよ。
本当。

359:デフォルトの名無しさん
17/05/11 18:01:32.36 +i4P6kRh.net
要約
英数字のみのテキストファイルと検索文字列を受け取るコマンド。
行の長さや、ファイル自体の大きさは常識の範囲内。(メモリに収まる大きさ)
関数のインターフェース(引数)固定縛り。
第一形態からなるべく大きな変更無しで拡張して行くルール。
第一形態
検索文字列が存在するかどうかのみ表示
第二形態
検索文字列の存在と何個あるか表示
第三形態
検索文字列の存在、個数、見つかった位置を表示
Haskell
第一形態
>>276
第二形態
>>348
第三形態
>>355

360:デフォルトの名無しさん
17/05/11 18:04:33.44 +i4P6kRh.net
あ、777検索してて7777は一個二個どっちで数えてもおk。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch