1 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 04:43:27.12 ID:mNwXvrXv.net] いざ、語ろうぞ。 スレタイ超過のため、一部省略。 Go, Erlang, Kotlin, etcもウェルカム。 Haskellは協議により次世代失格になりました 前スレ 次世代言語議論スレ[Go Rust Haskell Scala]第3世代 echo.2ch.net/test/read.cgi/tech/1488608741/
309 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:08:49.23 ID:m17h7+4k.net] >>308 オブジェクト指向も関数型言語も、仕様変更に強いって言われて広まったり注目されてるから、次世代言語も仕様変更に強くないと使える言語と言えないと思って。 だから、書き捨てでも良いし、どんな変更が来るか事前に予測した設計でも良いけど、設計変更に強いと言うのを示せるか?って感じ。 ちなみに私のHaskellは何にも考えてはいない。 自信があるとかじゃなくて、デザパタとか知らない。 関数型言語が設計変更に強いなら、まあ何とかなるだろうってノリ。 全体の趣旨 >>277 第一形態 >>240 第二形態<-今ここ >>304
310 名前:デフォルトの名無しさん [2017/05/07(日) 18:14:46.33 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:18:38.81 ID:zdh+Rbcj.net] >>309 仕様変更に強いっていってもこのお題の長さなら仕様変更というより新たに書き上げる短さを競うことになるな 一切再利用考えなくても三行だし
312 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:23:23.71 ID:/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' ws.stfx.eu/RU59LGEMKG9G
313 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:23:58.94 ID:m17h7+4k.net] そこをどうにか機能追加で search test.txt hoge Ture 4 みたいな感じに表示項目増えるように第一形態のコードを育てる様にして欲しいんだが。。。 関数名以外は中身が丸っと変わっても良いけどさ。
314 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:27:46.84 ID:zdh+Rbcj.net] え、関数名変えたらいかんの? それはおかしいやろ 一回作った関数の振る舞いを変更するのはおかしい。別の関数を作るべき
315 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:28:27.76 ID:m17h7+4k.net] Haskellではタプルをそのまま表示して search test.txt hoge (True,4) ってする予定。
316 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:29:37.82 ID:m17h7+4k.net] >>314 そう言う問題も第二弾として考えてる。
317 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:32:35.47 ID:zdh+Rbcj.net] うーん。この程度の量で無理に機能追加で育てていくこと自体が設計ミスだと思うけどなあ
318 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:42:25.99 ID:m17h7+4k.net] そこは承知の上で、まだ次世代言語入門したばかりでも参入しやすい様にってのと、過去のコードに影響あるよね?って事で第二弾に持って行きたい。
319 名前:デフォルトの名無しさん [2017/05/07(日) 18:47:14.19 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 18:51:13.41 ID:zdh+Rbcj.net] >>318 やりたいことは了解したけど、回答者としては適切な設計でいきたいから、再利用したほうがいいと判断するまで再利用しないからな まあいい具合に短いし気が向いたら次世代っぽい言語でもやってみるか
321 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 19:24:12.22 ID:m17h7+4k.net] (しぶしぶ)了解。
322 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 19:36:18.70 ID:4ZC1qsBr.net] 再利用しないほうが少ない変更でいけるものに再利用を強制して、その分量で言語の優劣を測るというのは理不尽な話だ
323 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 20:18:32.73 ID:zdh+Rbcj.net] Pythonのコードで再利用せずに済んでるのはバッテリー付き言語であるのが大きいな。もし次世代言語でmatchとかcountすらないようなのがあるとしたらその言語にとってはそこそこいい課題になるかもな
324 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 20:59:47.13 ID:/lTp1FVO.net] >>304 ファイルの行ごとの内容はメモリに収まる程度なのか、とか 例えば 'xxxoooxxx' という文字列内に 'oo' は1個なのか2個なのか、とかは 回答側の都合がいいように自由に決めていい?
325 名前:デフォルトの名無しさん [2017/05/07(日) 21:31:50.41 ID:6O1o1Sih.net] 仕様変更というから仕様バグをデバッグするのかと思ったら バグのない完成品に機能追加して多機能化すれば優秀さを示せるって発想か 嫌な予感がする
326 名前:あ mailto:sage [2017/05/07(日) 21:34:41.10 ID:tachXp58.net] >>322 可換であるべき理由を殺しに来てるよね。
327 名前:デフォルトの名無しさん mailto:sage [2017/05/07(日) 23:11:40.56 ID:4ZC1qsBr.net] >>326 どういう意味?
328 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 01:06:43.83 ID:F16X/4LX.net] Ocamlって型クラスないのか
329 名前:あ mailto:sage [2017/05/08(月) 06:18:15.11 ID:FkyLZnez.net] >>327 再利用せずに入れ替えたいから、その部品が使われるときのインターフェイスを定義して、関係ないものをカプセル化するんじゃん? 再利用して無理に機能追加してると、割りと早めにインターフェイスは形骸化するよ。 引き戸である、とか、このドアは回転扉で開けると反対が閉まる、とか、エアロックみたく、どちらかしか開かない制限をかけたいとか、そういう要件で安易に 扉だったものを魔改造するハメになる。 そうすると、インターフェイスってものや、カプセル化ってものが、完全に無意味になる。 魔改造されてて、本来の意味を失ったインターフェイスの「ドアを押す」メソッドとか怖すぎるじゃん。
330 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 06:39:47.64 ID:pk8djPQr.net] >>329 横レスだけど ざっくり言うとインターフェイスや型クラスの存在理由を殺しにかかってるって意味だよね 元の言い方だとちょっとわからなかったよ
331 名前:あ mailto:sage [2017/05/08(月) 06:45:50.09 ID:FkyLZnez.net] >>330 インターフェイス、型、あとはクラス構造自体の意義、もうちょっと広くとっても良いかなって思って。 Cでもアセンブラでも可換な作り方って出来るから、あまりに具体例にするのも話が矮小化しそうだなぁって思ったんよ。 申し訳ない。 「も、含めて」とかちょっと言い方考えるわ。
332 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 06:53:05.16 ID:pk8djPQr.net] >>331 言いたいことはわかるよ ただ可換なって言うだけだと 上の問題例もアリになっちゃうかなと…
333 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 06:57:25.03 ID:Ya4nTupG.net] アルゴリズムなんてどれで書いても同じなんだから もっとUI作りやすい言語くれよ。
334 名前:あ mailto:sage [2017/05/08(月) 07:22:21.17 ID:FkyLZnez.net] >>332 あーなるほど。 難しいもんだな。表現ってのは。 ありがとう、勉強になる。ちょっともう少し練ってから話すわ。
335 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 18:51:10.68 ID:nU60kBJx.net] >>324 行は基本メモリに収まる程度だよ。 小説とか、常識的なテキストで問題無ければおk。 行に一個二個を回答側の都合ってのは普通駄目だろう。。。 でも、あんまりにも回答者いないんでもう良いよ。。。
336 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 18:54:25.80 ID:nU60kBJx.net] >>329 あー。。。 あんま考えずに提案してたわ。。。 うーん。。。 インターフェースは変えずにって条件付ける? 実際に引数増やさないと駄目な時は補助関数作って、実際の処理はそっちに丸投げみたいな形で。 一応第二弾ではそう言うのも考慮して、既存の関数に手を加えないで機能拡張ってテーマで行く予定だけど。
337 名前:デフォルトの名無しさん mailto:sage [2017/05/08(月) 21:10:34.76 ID:nbca9qQS.net] >>335 > 行に一個二個を回答側の都合ってのは普通駄目だろう。。。 であれば、正規表現に丸投げするのでもなければ処理内容にも影響するので 例えば 'xxxoooxxx' 内に 'oo' は1個と数えるか2個と数えるかとかは出題側で事前にきちんと決めてください
338 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 00:31:37.08 ID:fIUN0UPL.net] ああ! 勘違いしてた。 そう言うことね。 ラッキー7(777)検索してて7777ってなってたら1個と数えるか2個と数えるかって事か。 私の方法だと2個に数えてるので2個にしましょう。
339 名前:あ mailto:sage [2017/05/09(火) 02:14:34.77 ID:w3DidVUp.net] メモリをジャブジャブ使えて1個で考えて良いなら殆どの言語で一行なんだけどなぁ。 jsで言うと(content+'').split(delimiter).length-1だから。
340 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 07:18:26.65 ID:83wQykSi.net] >>335 「小説とか」ということは、日本語の可能性もあるの?その場合に想定してるエンコードは? とにかくideone.comとかで参加者が気軽に動作を確認でき、かつ仕様を満たした回答例を先に出しといてください 実戦向きとか言うわりに細かな仕様がまったくわからんし、動くコードでもなければエスパーするにも限界があるよ
341 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 08:36:02.65 ID:YN7Krfta.net] 言語が次世代になっても要件定義(笑)などが旧世代だと どうにもならんね
342 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 09:22:59.82 ID:7e9h09Aa.net] >>339 +'' ってなんかのおまじない?
343 名前:あ mailto:sage [2017/05/09(火) 10:56:31.08 ID:b+ihuqXk.net] >>342 splitがundefにならんように、文字列とコンカチしてる。
344 名前:あ mailto:sage [2017/05/09(火) 11:59:38.90 ID:b+ihuqXk.net] 言葉足らずだったな。文字列と見せかけて数値にどっかで化けさせた奴対策だったり、そもそも引数来なかったとかそういうやつ。
345 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 13:13:43.62 ID:7e9h09Aa.net] >>344 なるほど ただ、それでエラーは出なくなるだろうけどバグが見つかりにくくなる悪寒しかしない
346 名前:あ mailto:sage [2017/05/09(火) 15:17:46.56 ID:tzdZ6ACH.net] >>345 数数えるんだから、数えられないものが来たらゼロになっていいんよ。
347 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 16:14:33.37 ID:PEK3Ov/R.net] >>339 そうなんだ。。。 じゃあ、両方のを書くのでどっちもおkにします。 >>340 長さは?とか聞かれて小説とかって書いたけど、今回は適当なソース読ませる程度しか想定してないし、参入障壁にしたくないからアスキー文字だけしか想定してない。 本当、思い付きで申し訳ない。 そんな訳で下のコードをコピペして検索にかけると >search search.hs search (True,16) ってなるはず。 んで、777を検索して7777を1個と数える版はsearch2として書いてみた。 最早Pythonよりも修正箇所多そうだけど気にしない。 do形式よりモナド形式が好きなのでdo形式コメントアウトしてるのは気にしないで欲しい。 (ちょうど良かったんで7777を確認用にdoの後ろに追加してる)
348 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 16:15:07.28 ID: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 名前:デフォルトの名無しさん mailto:sage [2017/05/09(火) 16:29:20.54 ID:7e9h09Aa.net] >>346 contentがundefinedでdelimiterが'e'とかだったら?
350 名前:あ mailto:sage [2017/05/09(火) 20:01:48.57 ID:Qrp6KBdW.net] >>349 undefinedと空文字列かー、jsdoだと空になったけど、文字列化してしまうなら辛いな。
351 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 14:33:48.35 ID:xTl8MRgt.net] 第三形態とやらはどうなった?
352 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 14:41:22.16 ID:+i4P6kRh.net] 第一第二形態で次世代言語の回答もないのに出して良いものか。。。
353 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 14:47:49.71 ID:+i4P6kRh.net] まとめとこう。 >>309 で一旦まとめて インターフェース(引数)固定縛り。 (補助関数可) 英数字のみのファイル前提。 行やファイル全体もメモリに収まる程度を想定。 777で検索した際、7777は検索結果1個とカウントしても2個とカウントしてもおk。
354 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 17:06:04.00 ID:xTl8MRgt.net] そういうのいらないから第三形態と回答例はよ
355 名前:デフォルトの名無しさん [2017/05/11(木) 17:14:36.14 ID:+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 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 17:32:30.86 ID:+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 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 17:35:54.43 ID:/dUENRjT.net] 結局俺たちの次世代言語はハスケルとスモールトークだったということか。
358 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 17:41:01.83 ID:+i4P6kRh.net] んな訳ないと思うんだが。。。 第三形態まで出たんだから、次世代言語勢たのんますよ。 本当。
359 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 18:01:32.36 ID:+i4P6kRh.net] 要約 英数字のみのテキストファイルと検索文字列を受け取るコマンド。 行の長さや、ファイル自体の大きさは常識の範囲内。(メモリに収まる大きさ) 関数のインターフェース(引数)固定縛り。 第一形態からなるべく大きな変更無しで拡張して行くルール。 第一形態 検索文字列が存在するかどうかのみ表示 第二形態 検索文字列の存在と何個あるか表示 第三形態 検索文字列の存在、個数、見つかった位置を表示 Haskell 第一形態 >>276 第二形態 >>348 第三形態 >>355
360 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 18:04:33.44 ID:+i4P6kRh.net] あ、777検索してて7777は一個二個どっちで数えてもおk。
361 名前:あ mailto:sage [2017/05/11(木) 18:41:45.50 ID:lLJXISKu.net] >>359 ガバガバでは? type LookupResult struct { //略 } func (lr LookupResult) foundAsBool Bool{ return lr.found } func Lookup(needle,haystack String) LookupResult{ //検索処理 return LookupResult{found:結果} } って第一形態書いとけば、LookupResultが超リッチになってくだけでインターフェイスもへったくれもない石器時代の発想で書けちゃうよ。 そして往々にして業務アプリ屋ならちょっと気がおかしいレベルで、こんな形で結果をラップする事を徹底してる。 大きな変更は無いけど、いい事も無い。
362 名前:あ mailto:sage [2017/05/11(木) 18:42:31.33 ID:lLJXISKu.net] >>361 あ、ごめん。foundAsBoolの後ろに()無いな。
363 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 18:46:17.93 ID:TwpHLB2C.net] しもた。。。 7777を一個と数える版(search2)でバグあった。 見つけたらdrop (length w)してるんだから、リストに追加する発見位置はそのままだけど、現在位置は検索文字列の長さ分足さなきゃだった。 適当に修正お願いします。(おい)
364 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 20:01:32.06 ID:o2lqEhku.net] 第三形態も1から書いたほうが早いな そう、バッテリー付き言語ならね
365 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 20:43:01.26 ID:pualqazL.net] ていうか何のスレ? 次世代言語議論してないよな
366 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 21:12:13.28 ID:w7aTa8S+.net] 次世代言語での>>359 への回答待ち。
367 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 21:28:25.35 ID:w7aTa8S+.net] って事は実行結果の例も修正せなな。。。 >>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)])
368 名前:デフォルトの名無しさん mailto:sage [2017/05/11(木) 22:14:35.58 ID:pualqazL.net] 久しぶりにコードみたけどHaskellちゃんキモイな〜 10年前から主要言語TOP10は変わってないという事実をお忘れなきように
369 名前:デフォルトの名無しさん [2017/05/11(木) 23:32:16.09 ID:5z6DmCSe.net] 10年間スマホを世界中で売りまくっても何も変わらなかったのは意外だな
370 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 00:30:03.06 ID:3oRK7AIr.net] それは今後も主要言語は変わらないから次世代言語について考えることは無意味ってことかな
371 名前:259=359 mailto:sage [2017/05/12(金) 02:24:49.85 ID:QHw9MbYN.net] >>368 >>259
372 名前:デフォルトの名無しさん [2017/05/12(金) 06:43:44.99 ID:4vGyFDSj.net] 実装基準がよくわからない。 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
373 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 08:36:47.18 ID:u9nYGLh2.net] そもそもこのスレからHaskellはスレ違いになったんだが
374 名前:あ mailto:sage [2017/05/12(金) 08:40:43.26 ID:6RnAOpKz.net] >>364 第二形態書いた時点で第一形態は、第二形態を中で呼ぶ様に書き換えないと悲劇だし、第三形態も同じ。 レビューで辛辣な第一形態を安易に書いたdisりを受けたあと、直交性が失われるために、それより前の形態をAPIとしてobsoluteにしてライブラリ関数とかマクロに降格するレベルだよね。
375 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 10:34:41.20 ID:nQbZenvu.net] >>372 Data.Listの関数はisInfixOfとisPrefixOf、tailsを本で読んだだけで使った事ないな。。。 それ以外は見た事すらない。 ちゃんと使うと、ここまで書けるのね。 そう言う意味じゃ、おいらのは入門書前半の知識だけでも書けるって感じやね。 おいらがHaskell好きなのは美しさもだけど、ひたすらミニマムな知識だけでも何とかなっちゃうのが良い。 数学と同じで便利な関数知ってれば、強力な武器だし周りからは難しそうに見えるけど、基本はとても簡単で、少ない武器でもどうにかこうにか自力でも解ける。 これこそ初心者向け言語だって思ってるんだけどねぇ。。。
376 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 10:35:36.50 ID:nQbZenvu.net] >>373 Haskell追い出せるだけの次世代言語の立派な回答求む。
377 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 13:24:07.84 ID:H6Uk5vuw.net] "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)]. ] ] ]. ws.stfx.eu/DQART2BS6GYF
378 名前:デフォルトの名無しさん [2017/05/12(金) 17:26:32.26 ID:k//9Mr+f.net] >>368-369 でもCの地盤沈下は確実に進んでるわけで まー2017にはさすがにCOBOL使ってるシステムも リプレースされただろ?されてるよね?ってところ
379 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 20:20:28.20 ID:H6Uk5vuw.net] >>377 の search3rd はもっとシンプルに書けたので差し替え search3rd := [:str :kw | (str lines collectWithIndex: [:line :idx | (line allRangesOfSubstring: kw) collect: [:range | idx -> range first] ]) concatenation ]. ws.stfx.eu/A3HB6MT66GI5
380 名前:デフォルトの名無しさん mailto:sage [2017/05/12(金) 22:43:42.90 ID:y9SJMwIK.net] 第4世代、4番目、英語で言えば、Forth
381 名前:片山博文MZ mailto:sage [2017/05/12(金) 22:45:07.26 ID:r6F8dCD7.net] 残念、fourth でした。
382 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 00:01:55.41 ID:hYOIVOdy.net] そんなの良いから。 実際問題キャットドアより簡単だから。 次世代言語以外が回答してるのがおかしいから。
383 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 01:15:28.36 ID:VbJPsYiJ.net] 終わった言語が必死にコード載せてアッピールしようとしててウケるw
384 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 01:52:43.37 ID:7Z9U0QOC.net] pascalとかForceとかね。次世代言語だよ? Fortunは77じゃないよね
385 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 04:50:33.84 ID:j31cCXIw.net] 数行のコードも書けぬ低脳に担がれ哀れな次世代()言語
386 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 08:16:21.72 ID:2mf4fJqx.net] ぶっちゃけ新しい言語とか覚えるの面倒だから次世代とかいらねーって思ってるんだろ?
387 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 08:20:03.99 ID:zCDOTfft.net] 次世代言語を考えるなら古典に立ち戻ることが重要だな。 スレタイに挙げられた言語は局所最適の枝葉末節だらけで参考にならない。
388 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 08:26:47.84 ID:pUHHN6Pq.net] じゃあ原点に立ち返って、Smalltalkのどこがゴミで死んだのか確認しようぜ
389 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 09:04:37.48 ID:1FO9O0uX.net] さすがにそれはスレ違いだろう
390 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 09:12:34.64 ID:4agJqfcC.net] いくらお題がアレとはいっても、 ここまで来てなんで一つもKotlinとかGoで書くやつがいないのか。 簡単だし時間かからないだろ? Smalltalk馬鹿にしてる奴も意味不明。
391 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 10:51:00.22 ID:Cn0XNRH7.net] お題が簡単すぎて面白くないからだろ
392 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 10:59:13.12 ID:n2tLG6k9.net] ほんまそれ。Pythonの例で問題の糞さが示されたと思ったが
393 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 11:11:25.11 ID:XdPYiSal.net] python がいかに読みやすいかが示されただけだな。
394 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 11:14:51.78 ID:GlvX42FB.net] Pythonの第三形態マダー?
395 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 11:51:00.37 ID:rBo1iP3S.net] Pythonから次世代言語に乗り換える意味が見当たらない
396 名前:あ mailto:sage [2017/05/13(土) 12:14:40.76 ID:Mm9GiQ8r.net] >>390 夜か明日、書いてもいいけど、全く以って問題が悪すぎて、次世代もクソも無いと思うよ。
397 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 14:48:56.11 ID:7U8nUyJb.net] >>394 現実、3.x だから第3形態じゃないのか? 0.9 もあったから第4形態かもしれんが。
398 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 16:19:26.54 ID:XdPYiSal.net] プログラミングエアプ勢の一発逆転の可能性 それが次世代言語の意義なんだよ。
399 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 18:54:00.95 ID:zCDOTfft.net] 問題が悪いとふんぞり返っていれば次世代言語がどこからか降って湧いてくるのか。 便利なスレだな。
400 名前:あ mailto:sage [2017/05/13(土) 21:16:28.56 ID:l2RlSRsK.net] また、「エアプ」か。どこで流行ってんだその言葉。。 問題が悪いからと言って次世代言語が降ってこないのは当たり前と言うか、 自動車が発明される前に人々にニーズ調査したら「すごく早くて馬が疲れにくい、壊れにくい馬車がほしい」って答えただろうってフォードのおっさんの名言に尽きるだろ。
401 名前:デフォルトの名無しさん mailto:sage [2017/05/13(土) 21:56:48.51 ID:QiNZfANm.net] >>384 英文は無理でも言語名の綴りぐらいはちゃんと書こうね ForceじゃなくてForth FortrunじゃなくてFortran pascalはPascal (固有名詞だから頭文字は大文字、なお全部を大文字で書く・・・PASCAL・・・か否かは趣味の問題だが 全部を大文字で書くのは小文字がディスプレイやプリンタで表示・印字できなかった古い時代の名前というニュアンスが加わる)
402 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 06:47:23.26 ID:FpH7uWr+.net] >>397 すぐ手前の流れも読まないPython使いってなんかマヌケだね
403 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 11:16:19.57 ID:g1XH9FW+.net] マジな話、いまだにショボいお題にご執心のハスケラの方がマヌケだけどね
404 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 12:32:07.52 ID:1QHY+inp.net] ドア云々とかよりは実践向きだと思うけどな
405 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 12:40:55.67 ID:ZZLeiCLl.net] まあドアよりはな
406 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 13:56:58.74 ID:KHWozqTm.net] >>403 結局それか 何か叩いてないと安心できないだけ
407 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 14:23:56.19 ID:tMuNfTLo.net] ドアは糞 だがしかしコードをちゃんと読めて(あるいは書けて)改めて糞だと言えてる奴がどのくらいいるかは怪しいな ドア→実用なし→糞と短絡してるだけとか 実際、>>404 や>>405 はドアのお題、何分ぐらいで書けるの?
408 名前:405 mailto:sage [2017/05/14(日) 16:59:45.21 ID:ZZLeiCLl.net] >>407 Juliaの書いて、書いた上でドア糞って言い始めたのは俺だぞ あれ思い出しながら書いたから一時間くらいのかかったわ なんか言語仕様変更してる所とかあったし
409 名前:デフォルトの名無しさん mailto:sage [2017/05/14(日) 18:38:38.10 ID:tMuNfTLo.net] >>408 それはお見それしました で>>404 は?