次世代言語議論スレ[Go Rust Kotlin Scala]第4世代at TECH
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 - 暇つぶし2ch200:デフォルトの名無しさん
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。

361:あ
17/05/11 18:41:45.50 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:あ
17/05/11 18:42:31.33 lLJXISKu.net
>>361
あ、ごめん。foundAsBoolの後ろに()無いな。

363:デフォルトの名無しさん
17/05/11 18:46:17.93 TwpHLB2C.net
しもた。。。
7777を一個と数える版(search2)でバグあった。
見つけたらdrop (length w)してるんだから、リストに追加する発見位置はそのままだけど、現在位置は検索文字列の長さ分足さなきゃだった。
適当に修正お願いします。(おい)

364:デフォルトの名無しさん
17/05/11 20:01:32.06 o2lqEhku.net
第三形態も1から書いたほうが早いな
そう、バッテリー付き言語ならね

365:デフォルトの名無しさん
17/05/11 20:43:01.26 pualqazL.net
ていうか何のスレ?
次世代言語議論してないよな

366:デフォルトの名無しさん
17/05/11 21:12:13.28 w7aTa8S+.net
次世代言語での>>359への回答待ち。

367:デフォルトの名無しさん
17/05/11 21:28:25.35 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:デフォルトの名無しさん
17/05/11 22:14:35.58 pualqazL.net
久しぶりにコードみたけどHaskellちゃんキモイな~
10年前から主要言語TOP10は変わってないという事実をお忘れなきように

369:デフォルトの名無しさん
17/05/11 23:32:16.09 5z6DmCSe.net
10年間スマホを世界中で売りまくっても何も変わらなかったのは意外だな

370:デフォルトの名無しさん
17/05/12 00:30:03.06 3oRK7AIr.net
それは今後も主要言語は変わらないから次世代言語について考えることは無意味ってことかな

371:259=359
17/05/12 02:24:49.85 QHw9MbYN.net
>>368
>>259

372:デフォルトの名無しさん
17/05/12 06:43:44.99 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:デフォルトの名無しさん
17/05/12 08:36:47.18 u9nYGLh2.net
そもそもこのスレからHaskellはスレ違いになったんだが

374:あ
17/05/12 08:40:43.26 6RnAOpKz.net
>>364
第二形態書いた時点で第一形態は、第二形態を中で呼ぶ様に書き換えないと悲劇だし、第三形態も同じ。
レビューで辛辣な第一形態を安易に書いたdisりを受けたあと、直交性が失われるために、それより前の形態をAPIとしてobsoluteにしてライブラリ関数とかマクロに降格するレベルだよね。

375:デフォルトの名無しさん
17/05/12 10:34:41.20 nQbZenvu.net
>>372
Data.Listの関数はisInfixOfとisPrefixOf、tailsを本で読んだだけで使った事ないな。。。
それ以外は見た事すらない。
ちゃんと使うと、ここまで書けるのね。
そう言う意味じゃ、おいらのは入門書前半の知識だけでも書けるって感じやね。
おいらがHaskell好きなのは美しさもだけど、ひたすらミニマムな知識だけでも何とかなっちゃうのが良い。
数学と同じで便利な関数知ってれば、強力な武器だし周りからは難しそうに見えるけど、基本はとても簡単で、少ない武器でもどうにかこうにか自力でも解ける。
これこそ初心者向け言語だって思ってるんだけどねぇ。。。

376:デフォルトの名無しさん
17/05/12 10:35:36.50 nQbZenvu.net
>>373
Haskell追い出せるだけの次世代言語の立派な回答求む。

377:デフォルトの名無しさん
17/05/12 13:24:07.84 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)].
  ]
 ]
].
URLリンク(ws.stfx.eu)

378:デフォルトの名無しさん
17/05/12 17:26:32.26 k//9Mr+f.net
>>368-369
でもCの地盤沈下は確実に進んでるわけで
まー2017にはさすがにCOBOL使ってるシステムも
リプレースされただろ?されてるよね?ってところ

379:デフォルトの名無しさん
17/05/12 20:20:28.20 H6Uk5vuw.net
>>377 の search3rd はもっとシンプルに書けたので差し替え
search3rd := [:str :kw |
 (str lines collectWithIndex: [:line :idx |
  (line allRangesOfSubstring: kw) collect: [:range | idx -> range first]
 ]) concatenation
].
URLリンク(ws.stfx.eu)

380:デフォルトの名無しさん
17/05/12 22:43:42.90 y9SJMwIK.net
第4世代、4番目、英語で言えば、Forth

381:片山博文MZ
17/05/12 22:45:07.26 r6F8dCD7.net
残念、fourth でした。

382:デフォルトの名無しさん
17/05/13 00:01:55.41 hYOIVOdy.net
そんなの良いから。
実際問題キャットドアより簡単だから。
次世代言語以外が回答してるのがおかしいから。

383:デフォルトの名無しさん
17/05/13 01:15:28.36 VbJPsYiJ.net
終わった言語が必死にコード載せてアッピールしようとしててウケるw

384:デフォルトの名無しさん
17/05/13 01:52:43.37 7Z9U0QOC.net
pascalとかForceとかね。次世代言語だよ?
Fortunは77じゃないよね

385:デフォルトの名無しさん
17/05/13 04:50:33.84 j31cCXIw.net
数行のコードも書けぬ低脳に担がれ哀れな次世代()言語

386:デフォルトの名無しさん
17/05/13 08:16:21.72 2mf4fJqx.net
ぶっちゃけ新しい言語とか覚えるの面倒だから次世代とかいらねーって思ってるんだろ?

387:デフォルトの名無しさん
17/05/13 08:20:03.99 zCDOTfft.net
次世代言語を考えるなら古典に立ち戻ることが重要だな。
スレタイに挙げられた言語は局所最適の枝葉末節だらけで参考にならない。

388:デフォルトの名無しさん
17/05/13 08:26:47.84 pUHHN6Pq.net
じゃあ原点に立ち返って、Smalltalkのどこがゴミで死んだのか確認しようぜ

389:デフォルトの名無しさん
17/05/13 09:04:37.48 1FO9O0uX.net
さすがにそれはスレ違いだろう

390:デフォルトの名無しさん
17/05/13 09:12:34.64 4agJqfcC.net
いくらお題がアレとはいっても、
ここまで来てなんで一つもKotlinとかGoで書くやつがいないのか。
簡単だし時間かからないだろ?
Smalltalk馬鹿にしてる奴も意味不明。

391:デフォルトの名無しさん
17/05/13 10:51:00.22 Cn0XNRH7.net
お題が簡単すぎて面白くないからだろ

392:デフォルトの名無しさん
17/05/13 10:59:13.12 n2tLG6k9.net
ほんまそれ。Pythonの例で問題の糞さが示されたと思ったが

393:デフォルトの名無しさん
17/05/13 11:11:25.11 XdPYiSal.net
python がいかに読みやすいかが示されただけだな。

394:デフォルトの名無しさん
17/05/13 11:14:51.78 GlvX42FB.net
Pythonの第三形態マダー?

395:デフォルトの名無しさん
17/05/13 11:51:00.37 rBo1iP3S.net
Pythonから次世代言語に乗り換える意味が見当たらない

396:あ
17/05/13 12:14:40.76 Mm9GiQ8r.net
>>390
夜か明日、書いてもいいけど、全く以って問題が悪すぎて、次世代もクソも無いと思うよ。

397:デフォルトの名無しさん
17/05/13 14:48:56.11 7U8nUyJb.net
>>394
現実、3.x だから第3形態じゃないのか?
0.9 もあったから第4形態かもしれんが。

398:デフォルトの名無しさん
17/05/13 16:19:26.54 XdPYiSal.net
プログラミングエアプ勢の一発逆転の可能性
それが次世代言語の意義なんだよ。

399:デフォルトの名無しさん
17/05/13 18:54:00.95 zCDOTfft.net
問題が悪いとふんぞり返っていれば次世代言語がどこからか降って湧いてくるのか。
便利なスレだな。

400:あ
17/05/13 21:16:28.56 l2RlSRsK.net
また、「エアプ」か。どこで流行ってんだその言葉。。
問題が悪いからと言って次世代言語が降ってこないのは当たり前と言うか、
自動車が発明される前に人々にニーズ調査したら「すごく早くて馬が疲れにくい、壊れにくい馬車がほしい」って答えただろうってフォードのおっさんの名言に尽きるだろ。

401:デフォルトの名無しさん
17/05/13 21:56:48.51 QiNZfANm.net
>>384
英文は無理でも言語名の綴りぐらいはちゃんと書こうね
ForceじゃなくてForth
FortrunじゃなくてFortran
pascalはPascal
(固有名詞だから頭文字は大文字、なお全部を大文字で書く・・・PASCAL・・・か否かは趣味の問題だが
全部を大文字で書くのは小文字がディスプレイやプリンタで表示・印字できなかった古い時代の名前というニュアンスが加わる)

402:デフォルトの名無しさん
17/05/14 06:47:23.26 FpH7uWr+.net
>>397
すぐ手前の流れも読まないPython使いってなんかマヌケだね

403:デフォルトの名無しさん
17/05/14 11:16:19.57 g1XH9FW+.net
マジな話、いまだにショボいお題にご執心のハスケラの方がマヌケだけどね

404:デフォルトの名無しさん
17/05/14 12:32:07.52 1QHY+inp.net
ドア云々とかよりは実践向きだと思うけどな

405:デフォルトの名無しさん
17/05/14 12:40:55.67 ZZLeiCLl.net
まあドアよりはな

406:デフォルトの名無しさん
17/05/14 13:56:58.74 KHWozqTm.net
>>403
結局それか
何か叩いてないと安心できないだけ

407:デフォルトの名無しさん
17/05/14 14:23:56.19 tMuNfTLo.net
ドアは糞
だがしかしコードをちゃんと読めて(あるいは書けて)改めて糞だと言えてる奴がどのくらいいるかは怪しいな
ドア→実用なし→糞と短絡してるだけとか
実際、>>404>>405はドアのお題、何分ぐらいで書けるの?

408:405
17/05/14 16:59:45.21 ZZLeiCLl.net
>>407
Juliaの書いて、書いた上でドア糞って言い始めたのは俺だぞ
あれ思い出しながら書いたから一時間くらいのかかったわ
なんか言語仕様変更してる所とかあったし

409:デフォルトの名無しさん
17/05/14 18:38:38.10 tMuNfTLo.net
>>408 それはお見それしました
>>404は?

410:デフォルトの名無しさん
17/05/14 19:19:30.14 oT3eSlat.net
キャットドア問題も解けないくせに

411:デフォルトの名無しさん
17/05/14 19:34:09.72 hXmCvLEt.net
>>408
Images のデータ構造また変えやがった。いい加減にしてくれ。

412:デフォルトの名無しさん
17/05/14 19:53:34.96 tMuNfTLo.net
>>410
あれはコンポジットで解決だろ
その前に問題点理解できてるのか?

413:デフォルトの名無しさん
17/05/14 22:19:02.85 USv6MFnh.net
Go: URLリンク(ideone.com)
Kotlin: URLリンク(ideone.com)

414:デフォルトの名無しさん
17/05/15 00:34:41.47 vRkjYJPr.net
次世代言語でも手続き型言語の呪縛からは解き放たれないのか。。。
既存言語の着せ替えでしか無いなら、プログラムの組み易さも大差無かろう。

415:デフォルトの名無しさん
17/05/15 00:54:38.55 vRkjYJPr.net
>>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...

416:デフォルトの名無しさん
17/05/15 01:06:58.66 8Y8+/ZxP.net
結局関数型の雄はなんなの?

417:デフォルトの名無しさん
17/05/15 01:32:26.10 hQsWbFnv.net
既存の言語でやれってことだろ。
オブジェクト指向をむりやり c でやったように。
結局それが正解。

418:デフォルトの名無しさん
17/05/15 01:34:34.82 vRkjYJPr.net
何が関数型言語の雄になろうと次世代言語にはならないかなぁ。。。
私はただHaskellに惚れてるだけで、ここが良いって紹介もするけど、それって結局Lisperと同じ道を歩んでると思う。

419:デフォルトの名無しさん
17/05/15 01:36:41.34 vRkjYJPr.net
しまった。。。
一人称が真面目モードに。
x私
oおいら

420:デフォルトの名無しさん
17/05/15 06:38:31.61 k5wZeeQn.net
アテクシはScalaが最強だと思いましてよ、ホホ

421:デフォルトの名無しさん
17/05/15 09:32:58.17 G/N4Afa9.net
量子コンピュータ向けの言語じゃね?
言語なのかどうか知らんけど。

422:デフォルトの名無しさん
17/05/15 10:34:46.05 OVQU3b0Y.net
次世代と称される流れには2つの傾向があって
ひとつはScalaやSwiftのように従来のOOPLをベースにして(つまり機能は特に削らずに)
これまで関数型言語の独擅場だった型推論やオプショナル型といった型システムのサポートを手厚くしたもの
もうひとつは、さらに一歩進めていろいろな不都合の元凶であったクラス(もっというと継承)を外して言語機能を大胆にシンプルにしたもの
GoやRustがこれにあたる…ってところか
あと個人的には並行・並列処理のサポートを手厚くした言語、Clojureや前と重複するけどGoとかも
この調子でコアが増え続ければ重宝されると思う
Rubyは両方を狙っているけどたぶん失敗する

423:あ
17/05/15 12:50:33.96 HDk+iNO5.net
Rust、今更もう一度触ってみたけど、割とまとまってきてるな。
風呂敷広げ過ぎた悲壮感減ってきてる。
ただ、それでもすごく安全なCとして使うほうが便利な気がするわ。

424:デフォルトの名無しさん
17/05/15 13:17:14.26 CnSqTz4B.net
Rustなんて木構造もまともに書けない言語が次世代とか飯食ってるときにわらかすなwwwwwww

425:デフォルトの名無しさん
17/05/15 14:36:26.20 JAUTsopg.net
わらかす

426:デフォルトの名無しさん
17/05/15 14:45:26.78 CnSqTz4B.net
「笑かす」な。

427:デフォルトの名無しさん
17/05/15 15:08:17.40 hQsWbFnv.net
木構造もすべて配列で用意させる硬派な言語

428:デフォルトの名無しさん
17/05/15 15:50:28.38 CnSqTz4B.net
Rustって言わばCより低機能な言語だからな。
そりゃ何も出来なきゃ安全だよな。

429:あ
17/05/15 17:18:40.45 HDk+iNO5.net
>>424
RcとRefCellで書けるんじゃないの?

430:デフォルトの名無しさん
17/05/15 17:20:05.97 ciuqqN4z.net
>>416
sml/nj

431:デフォルトの名無しさん
17/05/15 17:33:40.67 CnSqTz4B.net
>>429
教科書的に書くだけならな。Cのように実用に耐え得るものは書けない
URLリンク(hackernoon.com)

432:あ
17/05/15 18:36:33.51 HDk+iNO5.net
>>431
この人が行き詰まってるのは、オブジェクト指向そのまま当てたからでは?
structのImplでもなく、traitの関数でもなく、
traitのImplで書けば何とかなりそうだけど。
あと、サイズを取得したいだけなら、lifetimeを明示してCopyちゃんとすれば良いのでは?

433:デフォルトの名無しさん
17/05/15 19:00:47.68 RWNXh8sg.net
書けると主張するなら書けばいいのに

434:デフォルトの名無しさん
17/05/15 19:24:57.87 jxMhaoqU.net
笑かす

435:デフォルトの名無しさん
17/05/15 20:17:30.50 hQsWbFnv.net
実際書くと大変なことを無意識に理解してんでしょ。
そういう種類のごまかしをするやつはよくいる。

436:あ
17/05/15 20:54:20.75 HDk+iNO5.net
書いたら面倒だって事は否定してないじゃん。
この人が行き詰まってるのは、借用とは割と関係ないオブジェクト指向脳ではって話してるんだけどなぁ。
CでもMISRA-C通そうと思うと木構造相当辛いし。
産業向けのC書いてる奴なら耐えられるレベルの話だと思うけどなぁ。
手軽さ的には俺はGoを押し続けるが、否定するもんでもないと思うようになったな。

437:デフォルトの名無しさん
17/05/15 21:00:18.80 zTfCWGM6.net
チューリング完全だからなw

438:デフォルトの名無しさん
17/05/16 00:41:59.04 HLEZgw56.net
なぜか C 書く人はみんな MISRA-Cを守ってるという話になってんな。。

439:デフォルトの名無しさん
17/05/16 01:26:25.84 YrF/ZMci.net
まあ当のMozillaがRustでDOM木の処理書くのに難儀してるとは聞くから簡単ではないんだろうな。
物が作れない最高の言語より、物がつくれる嫌われ言語の方が結局世の中に貢献するんだよな。この点ではPHPでさえRustより世の中に役に立ってる言語と言える。

440:デフォルトの名無しさん
17/05/16 01:30:45.27 /yslofcu.net
ようするに?

441:デフォルトの名無しさん
17/05/16 01:46:35.68 O9oAiYi/.net
firefoxの書き換えが成功したなら実用性では文句無しになるの?

442:デフォルトの名無しさん
17/05/16 02:00:35.86 PbASgT1d.net
というかまだ書き換えられてないのか…

443:デフォルトの名無しさん
17/05/16 11:18:02.03 PSQsih3e.net
>>441
成功するなんて妄想してるからChromeにシェア完全に奪われたんじゃねーの?

444:あ
17/05/16 13:09:50.84 RIytWhRI.net
>>438
守ってない部分はGoやらなんやら、もっと手軽な物で書いたほうが楽じゃん。
あれは要は、ヒープやスタックの領域の担保やら、死んだポインタへのアクセスの回避やら、そういう部分に対して言語側から縛りかけて安全にしよう、ってスタンスなのでは?
本人らは推してるが、副次的にGCが無い言語になってるように見える。
>>439
歯ブラシ言語はマジで強い。PHPはdisる奴がわからんレベル。
遅いしまともじゃない動きしたりするけど「とにかく動くwebページ」は一瞬で作れる。

445:デフォルトの名無しさん
17/05/16 13:14:04.12 dZpCRHDk.net
また発狂してる……

446:デフォルトの名無しさん
17/05/16 13:18:30.66 D7FkMXFe.net
次世代スマートポインタだけでよさそうな気がするけどそれをやったらC++の独壇場だな
Goやらなんやらの出る幕がなくなってしまう

447:デフォルトの名無しさん
17/05/16 13:43:07.20 PSQsih3e.net
Goの何がすごいって、言語の批評家にこんだけタコ殴りにされても、もの作る速さが圧倒的の一点でここまででかい言語になったことだよな。
RustはCを安全に倒しすぎた結果なにも作れなくなった言語って意味では対照的。
Servoは失敗するだろうが、そこで得られた知見でRust2.0(1.xと互換性なし)が出てからが本番と見てる。

448:デフォルトの名無しさん
17/05/16 14:33:32.43 rFzXLZrQ.net
GUI付きのOSまで作られてるのに何も作れないとは

449:デフォルトの名無しさん
17/05/16 14:47:31.26 D7FkMXFe.net
歯ブラシではなく弱者で同じことができれば尊敬されるだろうな
弱者を批判する批評家から弱者を守ってみろ

450:デフォルトの名無しさん
17/05/16 14:57:19.22 bxFACSIv.net
TiDBつーかTiKVに続報がないのがな。
対抗馬のゴキちゃんは1.0リリースしたのに。

451:
17/05/16 20:55:08.15 szD5YOp7.net
MISRA ってそんなに厳しいのかい?

452:デフォルトの名無しさん
17/05/16 20:55:48.40 zxK8tMMg.net
phpはガチでないわ
php持て囃してるやつらって、php書いたことないやつらだろ
プロトタイピングならまだしも、phpをプロダクトに使うたら頭おかすなるで

453:デフォルトの名無しさん
17/05/16 20:57:15.12 gJA+c77n.net
関数各々link時に再帰の有無て判別できるんだろうか?

454:あ
17/05/16 22:59:06.93 RIytWhRI.net
>>451
めんどくさいけど、あれ通りに書いてたらバイナリパッチ作りやすい。
>>452
世の中、プロトタイプ程度の物で充分な事が多いって事でしょ。

455:デフォルトの名無しさん
17/05/16 23:37:19.01 q2BEchMh.net
>>454
ねーよガイジ
ペチプァは死ね

456:デフォルトの名無しさん
17/05/17 00:01:12.17 3IJ9wgg6.net
ペチパーへの強い憎しみを感じる……

457:デフォルトの名無しさん
17/05/17 04:28:27.85 2wQy2LFh.net
Nimってどうなん?
次世代感は無い気もするけど

458:デフォルトの名無しさん
17/05/17 04:48:40.76 bqqNuZww.net
>>432
似た印象を持った
問題提起者が新しい型と型制約の逆転に気づいてないし、
RustをRubyか何かと勘違いしている感じだ

459:デフォルトの名無しさん
17/05/17 06:25:59.43 IyzcLayy.net
>>457
開発者が足りなくてライバル言語との開発競争に負けている。
それにこの用途ならNimという用途がない。
URLリンク(github.com)
URLリンク(github.com)
URLリンク(github.com)

460:デフォルトの名無しさん
17/05/17 07:38:00.11 sxUcFyDL.net
性的オッパイソンみたい

461:デフォルトの名無しさん
17/05/17 07:38:49.95 dkQOogT2.net
まともなプログラマならPHPなんて金積まれても書かないから、
PHPを書いたことがあるプログラマは全て無能のクズペチパーでFA

462:デフォルトの名無しさん
17/05/17 08:29:33.19 wJf0VzTx.net
>>460
何それ?楽しそう。

463:デフォルトの名無しさん
17/05/17 11:39:01.15 RUw3nkZO.net
EC-CUBEとかphpじゃん?
求人多いじゃん?
でも言語としてはダメってこと?

464:デフォルトの名無しさん
17/05/17 12:43:44.96 F+w5XH8T.net
>>463
PHPは言語ではない。まずそこからだ。

465:デフォルトの名無しさん
17/05/17 13:07:19.59 rCny4GOf.net
>>464
え?
まあ、EC-CUBEは開発当初流行ってたからPHPで作った
というだけで今一から同じもの作るとしたらPHPという
選択肢は無いんじゃないかなぁ。
PHPが流行ったのは歴史的な経緯が大きいと思うし。

466:デフォルトの名無しさん
17/05/17 13:16:25.89 l7mhfXJ7.net
>>447
つーかああいう馬鹿な批評家みたいなやつが生産性を落としてるんじゃねーかっていうことを
証明したのが go という印象。

467:あ
17/05/17 14:32:20.84 FjYdmJm+.net
>>455
夏休みの工作をフライス盤で作るような事したくないじゃんww
悪いもの使ってるから悪いものしか作れないと言う意味じゃなくてな。
俺の字が汚く見えるから鉛筆は使わない、みたいな情けない字が下手なやつの言い訳に聞こえる。
>>458
この辺思想だから、移植物だと仕方ないっちゃ仕方ないんだよね。

468:デフォルトの名無しさん
17/05/17 17:32:30.07 0Ygr9k03.net
PHPはテンプレートエンジンであって、それを使って無理矢理プログラミングしてるのが異常事態っていうテンプレは置いといても、
誰がが言ってたが生産性が高いんじゃなくて生産性を前借りしてるっていうのは言い得て妙だと思った。Rubyに対しての話だがPHPにもしっかり当てはまるな。
Goは「前借り」感が少ない。少ないだけでまだあるがRubyやPHPよりはるかにマシ

469:デフォルトの名無しさん
17/05/17 17:33:55.88 0Ygr9k03.net
借りて返さなくていいプロダクトなら確かに一つの選択肢になり得るってのは否定しようがないけどな

470:デフォルトの名無しさん
17/05/17 23:33:27.42 NA6XP0ND.net
今出てきてる次世代言語はどれも外れ臭い
洗練されてない
くどい
従来の物のほうがなじみやすい
目立った成果をあげていない

471:デフォルトの名無しさん
17/05/17 23:56:52.27 MByoVwD6.net
>従来の物のほうがなじみやすい
これはさすがにアホだろ

472:デフォルトの名無しさん
17/05/18 01:36:26.16 ahqmwSBr.net
>目立った成果をあげていない
新興言語が既存言語の積み上げた資産ぶち抜く成果上げたらびびるわ。
コンテナオーケストレーション領域やNewSQL領域みたいなそもそも新しい分野ではGoが結構強い。

473:デフォルトの名無しさん
17/05/18 03:34:10.58 DKg0Na73.net
AndroidでKotlinサポート!

474:デフォルトの名無しさん
17/05/18 06:06:25.90 TSzqrQQ0.net
HaskellはClojureよりは実用的。。。らしい。
【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]©2ch.net
スレリンク(tech板)
>>37
>facebook傘下のwitaiが基盤実装をclojureからc++かhaskellに移行する予定だったらしく、haskellにしたとのこと。
>移行したら読みやすいみたいな話もちょっとだけ。

>clojureの場合、ライブラリは一度作るまでいろいろいじって、一回出来るとあまりいじらないイメージもあるけど、実装を多人数でよくいじるみたいなのだと、難しいのかな?
>IDE上手く使えばそういう開発もできるのだけど、最初からなんでも決まってるほうがいいってのはgo見るとわかる気もする。
URLリンク(wit.ai)

475:あ
17/05/18 08:04:06.63 j3O3T+hJ.net
>>468
それはその通りだろうな。
まぁ、使い捨てるためのものであって、確かにあれでバッチ処理とか書いてたのは直させたことある。
>>472
新しい概念に新しい言語はマッチするし、やっぱ効率的だと思う。
PCODEとパスカルとか。
資産活用なら、すごい親和性のKotlinかな。JavaのクラスのgetXXXとsetXXXが、勝手にクラスのプロパティになるとかすげえなって思う。

476:デフォルトの名無しさん
17/05/18 10:38:06.37 CUeY4+YJ.net
>>475
そこらへんのKotlinの機能はただのGroovyのパクリ
というか静的型以外は大体Groovyのパクリ

477:デフォルトの名無しさん
17/05/18 11:37:49.17 sfBdYfQZ.net
過去の資産を自然に利用できるってのは次世代言語にとってでかいってことかね。
そういう意味じゃ c++ は先見性のある言語だったんだろうな。

478:デフォルトの名無しさん
17/05/18 11:58:01.78 Ueu9cV6M.net
Rustもbindgenとかで頑張ろうという姿勢はなくはないな。
肝心の言語がアレだが。
一方GoはGoogleの暴力で全部自前で資産を構築した。

479:あ
17/05/18 12:37:01.30 j3O3T+hJ.net
>>476
当時の次世代だったじゃん、Groovy。
まぁ、KotlinもAndroidの一級言語になったし、暴力かどうかはおいといてこれからどうなるかはわからんが。

480:デフォルトの名無しさん
17/05/18 13:10:22.49 Ueu9cV6M.net
あ、暴力っていうのは恐怖政治って意味じゃなくて、圧倒的な自前リソースで叩き上げたって意味ね。数の暴力のニュアンスに近い

481:デフォルトの名無しさん
17/05/18 13:17:24.91 XKDAC558.net
Kotlinは無事次世代から現世代に格上げされたようだな
さようなら次世代言語ことりん

482:デフォルトの名無しさん
17/05/18 13:31:05.44 twTr7KgU.net
>>459
まぁそれ言うとRoR出る前のRubyとか・・・って話に
なっちゃうしなぁ。
別に推したい訳じゃないけど、サラサラッと見た感じ
ツボは押さえてて悪くなさそうなので、今まで俺は全然
聞いたことなかったし何故かなーと思った次第。

483:デフォルトの名無しさん
17/05/18 13:54:46.39 V9vRGfQu.net
Google、KotlinをAndroidアプリ開発言語に選定―I/O会場から大喝采
URLリンク(jp.techcrunch.com)

484:デフォルトの名無しさん
17/05/18 14:02:21.88 Ueu9cV6M.net
Nimの競合はCrystalやJuliaって気がする。
この中ではJuliaがリードしてる。

485:デフォルトの名無しさん
17/05/18 14:50:52.71 TSzqrQQ0.net
>>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形態作りませんか?

486:デフォルトの名無しさん
17/05/18 14:54:47.81 TSzqrQQ0.net
動かすとこんな感じ
>zipArgs hello world good by
[("hello","world"),("good","by")]

487:デフォルトの名無しさん
17/05/18 15:53:54.50 XatVFB8/.net
コテになってくれればNGにぶちこめるのになあ

488:名前は開発中のものです。
17/05/18 16:14:27.77 ymL7Ro8a.net
GoogleはJVM捨てたいと思ってたからKotlin採用したの意外だな
というかGoに自信ないの?

489:デフォルトの名無しさん
17/05/18 17:11:11.24 ZGxkwhYz.net
>>486
言語組み込みの1メソッドで対処できる程度のつまんないお題しか出せてないってそろそろ気付けよ

490:デフォルトの名無しさん
17/05/18 18:22:51.27 5cH1kli9.net
>>488
Goは文系土方を集めて開発する時の言語じゃない?
Google社員は優秀な人多そうだからGo使うより別の言語使った方が効率良いんだろ

491:デフォルトの名無しさん
17/05/18 18:27:00.09 f8y2NPBR.net
いや単純にGoのバイナリがモノリシックでバカでかすぎるからじゃねえの?
JVMとKotlinランタイム積んだ方が総合的にスマホでは得なんだろ。

492:デフォルトの名無しさん
17/05/18 18:45:04.78 XAZP4kgQ.net
>>489
1メソッドで対応出来るの見せてもらえれば、流石次世代言語と思うけど。
じゃあ何かお題出してくださいな。
クラス作れとかじゃなくて何か実際に動くものの。
出来れば高卒のおっさんでも解けるレベルなら有難いw
>>359をより実用的にするアイデア浮かんでて、まず上の通り複数ファイル対応の後、見つけた場所と同じ行の文章を表示させたいって思ってる。
これを一行丸々か、前後を何十文字ずつ切り取るってするか考え中だが。

493:デフォルトの名無しさん
17/05/18 19:09:30.79 oGyoSyzb.net
Haskell使いって変なのしかいないよな
なんでかしらんけど
インターフェースって書いたり文末に。つけたり
おじいちゃんなんだろうか?

494:デフォルトの名無しさん
17/05/18 19:19:39.20 XAZP4kgQ.net
多いと言うか、おいらだけかと。
若くはない。
そう歳でもないつもりだったが、おっさん言われる歳になっちまった。
次世代言語にも興味あるのに、言葉ばかりでコードがあんまり出てこないから問題出せば見られるかと思ったんだが、上手くいかないね。

495:デフォルトの名無しさん
17/05/18 19:22:15.02 oGyoSyzb.net
sed ,grep

awk

perl

ruby

496:デフォルトの名無しさん
17/05/18 19:58:51.19 twTr7KgU.net
句点打つとおじいちゃんて何か非常に新鮮だな。
これで俺もおじいちゃんの仲間入り。

497:デフォルトの名無しさん
17/05/18 20:03:00.27 XAZP4kgQ.net
まー何にせよ、お話ばかりで全然コード出ないのにウンザリなのよ。
簡単なので良いから次世代言語のコード見て見たいのよ。

498:デフォルトの名無しさん
17/05/18 20:19:35.82 PWYbvK6z.net
githubでも漁ってれば良いのでは

499:デフォルトの名無しさん
17/05/18 20:45:13.68 lDLOBuVe.net
インタフェース?
インタネット?

500:デフォルトの名無しさん
17/05/18 21:19:37.89 CUeY4+YJ.net
>>493
いつも本題と別のとこに難癖つけて荒らしてるのお前だろ
なんか明らかに引っ掻き回してる奴いるなと思ってたが、今回ので確信した

501:デフォルトの名無しさん
17/05/18 21:22:49.46 oGyoSyzb.net
別人だろ
昨日から見始めたんだから

502:デフォルトの名無しさん
17/05/18 22:13:42.45 CUeY4+YJ.net
>>479
そうか次世代ではあったか
しかし動的で静的にも使えるGroovyのが書いてて楽しかった
普通のJavaコードをそのままコンパイルできたし敷居も低かった
KotlInは今使ってはいるが、優等生過ぎて自分には合わない感じがするな

503:デフォルトの名無しさん
17/05/18 22:17:31.87 CUeY4+YJ.net
>>501
ほんとかよw

504:デフォルトの名無しさん
17/05/18 22:32:46.48 L+z+Rh5o.net
>>501
半年ROMってから書き込めよクソザコナメクジ

505:デフォルトの名無しさん
17/05/18 23:37:06.81 oGyoSyzb.net
>>503
多分こいつが犯人だろw
>>504

506:デフォルトの名無しさん
17/05/19 01:22:16.89 NMLOtQ5J.net
今回みたいにGoogleとかその他大企業が採用するかどうかが全てだな
ここでこれは次世代、そうじゃないとか言っててもチラシの裏だな
ともかく、GoogleはJVM捨てる方向に行くかと思ったけど、このタイミングで捨てなかったらずっと使われるだろうな

507:デフォルトの名無しさん
17/05/19 01:29:41.16 PoZXo8Ro.net
別にビジネスにするわけでもなし、酒の肴にあーでもない
こーでもない言って楽しむスレでしょ?
もっとマイナーな奴発掘してみても面白いんじゃないかな

508:デフォルトの名無しさん
17/05/19 06:03:36.39 a+VoRKlA.net
kotlinてネイティブでも動かす方向みたいだけど
やっぱjvm嫌なんかね
URLリンク(blog.jetbrains.com)

509:デフォルトの名無しさん
17/05/19 07:21:55.50 VJmnxTyM.net
>>506
それは製品を選ぶ消費者が全てだと言っているようなものだな
消費者の気持ちが全てだから作者の気持ちなどは無意味だと

510:あ
17/05/19 08:11:43.65 3tW0/dbk.net
JackとJillがいまいちだった、ってので、なんとかしたかったんだろうな。
JVMはARTの時点でほぼ捨ててるのでは?LLVMベースのAOTに近い動きしてたと思う。

511:デフォルトの名無しさん
17/05/19 09:33:01.74 Ig6oJN7I.net
Google的にはとりあえずOracleに訴状は勝ったしな
そのうちJetBrain買収して全権掌握、kotlinもやりたい放題弄りだすんじゃね
androidがjavaもどきである必要性は世界的に皆無だしみんなハッピー

512:デフォルトの名無しさん
17/05/19 10:05:13.89 PoZXo8Ro.net
元々は上物の開発しやすいようにJavaなんだよね?
でもパフォーマンスとかに問題があったからなんやかんや
していた感じで。
一時期UIというか上位層にJavaって流行ってたしナァ。

513:デフォルトの名無しさん
17/05/19 10:15:34.60 VJmnxTyM.net
Oracleは大企業の中で最弱・・・みたいな設定を後出しするやつは無能
最初から大企業の強さを疑問視していた方が正しい

514:デフォルトの名無しさん
17/05/19 11:05:24.31 oL/PZTz9.net
webkitをblinkにフォークしたgoogleのことだ
そのうちコトリンもポロリンとかにフォークされる

515:デフォルトの名無しさん
17/05/19 11:16:40.28 +diyR2T6.net
Kotlinとやらは今のScalaよりも良いものなのかね?

516:デフォルトの名無しさん
17/05/19 11:42:51.86 DP36oPkJ.net
kotlinのニュース聞いて調べてみたけど、なんだよOOP(笑)か。
ここで関数型の言語指名してればGoogleもまだやるなぁと感心したけれど。

517:デフォルトの名無しさん
17/05/19 11:59:32.63 Jt2Le5fJ.net
>>498
2ch住民がどんなコード書くのか見たかってん。。。
例えば>>485のコードRubyで書いて見たけど、イマイチ命令的で宣言的にはならんのよな。
次世代言語ならもっと宣言的に書けないかなとか。

518:あ
17/05/19 12:05:33.38 3tW0/dbk.net
>>516
書いてみ。
クラス宣言は必ずしも要らんし、データの定義だけが出来たり
クラスみたいだけど、ブロック始まって即関数ではなく束縛とか宣言できたり処理できたり関数書いたりできて、それがメソッドやプロパティになったり、
割と無茶できる言語だよ。

519:デフォルトの名無しさん
17/05/19 13:23:54.29 2r0FKFiQ.net
今のScalaはランタイムの大きさとかコンパイル時間とかでモバイルに適合しないってのは理解できるんだが、
Googleともあろう企業がScalaのランタイム改良ではなく言語としては劣化ScalaのKotlin採用って方針にしてるのは違和感あるんだよな。

520:デフォルトの名無しさん
17/05/19 14:09:46.57 A3h0WO1I.net
わかりやすいってのは重要なポイントでしょ。
次世代ヲタからすれば、SwiftとかKotlinとかGoが憎くて憎くて仕方ないんだろうな。

521:デフォルトの名無しさん
17/05/19 14:15:46.20 rZS5Oczq.net
わかりやすいのは大事だな
低機能言語が読みやすいとは思わんけど

522:デフォルトの名無しさん
17/05/19 14:20:00.44 kmqi8gbh.net
可読性の観点から言うと、Kotlinが読みにくいというよりはScalaのimplicit嫌ったか。
それなら納得できるわ。

523:デフォルトの名無しさん
17/05/19 14:26:16.91 6kOz+D1v.net
あまり次世代っぽくはないけど、Goが並行処理を得意そうなのでこんなお題はどうでしょう?
お題
1) 1から1000までの整数からなる要素数1000の配列を作ってそれをランダムに並び替え
2) 当該配列の各要素nについて、sleep等でnミリ秒後にnを返す処理を別スレッドで起動し
3) 各スレッド終了順に配列等に結果を収めそれが昇順になっているかを真偽値で返すコードを書け。
4) 念のため (2)~(3)にかかった時間を計測しこれも同時に提示せよ(1秒を大きく越えていないことを確認)
5) (3)が偽なら、(2)を「n*mミリ秒(mは2以上の整数)」に変えてmがいくつ以上なら真を返すかも示せ。
要はスリープソートですが…

524:デフォルトの名無しさん
17/05/19 14:37:07.10 v/FcS/dJ.net
おいらのPCがAtomなんだが。。。
Haskellで並列化は今一理解出来てないのか逆に遅くなる。。。
本の通りなら速くもなるんだろうが、使いこなせてない。
途中からシングルスレッド処理に切り替えるのが肝っぽい。
上手く行ったら参戦するけど、期待しないでね。

525:デフォルトの名無しさん
17/05/19 14:41:06.27 rZS5Oczq.net
俺もお題考えたぞ!!
ハートリーフォック方程式を解くコードを書け
基底はガウス基底。6-31G**でのベンゼンの計算結果を示すこと!!
分子積分は並列化して下さい!!

526:デフォルトの名無しさん
17/05/19 15:38:16.89 6kOz+D1v.net
>>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
URLリンク(ideone.com)
※ideone.comには制限があるようなのでスレッド数は更に減らして10にしています

527:デフォルトの名無しさん
17/05/19 15:43:19.44 v/FcS/dJ.net
>>525
高卒のおいらには、そもそもその方程式が分からない。。。

528:デフォルトの名無しさん
17/05/19 18:37:46.78 co8auLJ+.net
次世代言語は物理や数学が扱いやすいことが必須ってわけじゃないから
数学を必要とするのはほんの一部
次世代でも手続型言語が主流なのは変わらないだろう

529:デフォルトの名無しさん
17/05/19 18:42:47.68 co8auLJ+.net
同じ処理をするにしても
より記述量が少なく
間違いが起こりにくく
学習時間が少ないものが今後も好まれるのではないか

530:デフォルトの名無しさん
17/05/19 18:44:19.31 co8auLJ+.net
あとはwebとの親和性かな…

531:デフォルトの名無しさん
17/05/19 18:47:42.86 EInD1neL.net
手続き型言語が主流なのは分かるけど、オブジェクト指向も宣言的なプログラミングを目指してるはずで、メソッドチェーンとかで済むように進化していくはずなんだ。
samlltalkやrubyはかなり宣言的に書ける場合がある。
pythonも>>485をリスト内包表記有るからHaskellみたいに宣言的に書けるはずだし。
次世代言語が過去の言語に宣言的プログラミングで劣ったら元も子もないよ。

532:デフォルトの名無しさん
17/05/19 18:53:11.32 co8auLJ+.net
宣言的プログラミング"も" 書けるのであって
宣言的プログラミングに近づけば優秀というわけじゃないから

533:デフォルトの名無しさん
17/05/19 18:57:49.08 EInD1neL.net
"も"で良いよ。
でも、手続き型言語でどこまで宣言的になったか見てみたい。
ifもforもここまで使わないで済むって。

534:デフォルトの名無しさん
17/05/19 19:24:24.98 rQS0QApr.net
>>529
一般にやれることがおおければそれだけ記述量は増える。
まあよく使われる書き方については短くかけるように符号を割り当てるってのは
あるのかもだが。

535:デフォルトの名無しさん
17/05/19 20:17:34.42 0YWm4zQf.net
そこそこ高学歴の学生としては数学扱いやすい言語以外はそもそも学ぶ気にならないなあ
だからPythonとか大好きだし、もし自分が言語を決める立場になったら、Pythonで出来ることは全部慣れてるPythonでやると思う

536:デフォルトの名無しさん
17/05/19 20:57:32.26 EInD1neL.net
>>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()

537:デフォルトの名無しさん
17/05/19 22:15:21.36 20gWsnkC.net
>>536
例えばRubyで
ARGV.each_slice(2){ |e| print e }; puts
と書くのと何が違うの?

538:デフォルトの名無しさん
17/05/19 22:22:13.75 E3Xd/U2i.net
今飲み屋なので明日確認するけど、おいらは(へっぽこ)Haskellerであって、RubyもPythonもそこまで得意じゃない。
あんたみたいな精通してる人のがずっと良いコード書けると思う。
ただ、オブジェクト指向も結局、宣言的プログラミングが理想の形なのは確か。

539:デフォルトの名無しさん
17/05/19 23:08:50.45 R52jpALp.net
>>535
数学好きならJulia使ってみようぜ。今年1.0出る予定だそうだ。

540:デフォルトの名無しさん
17/05/19 23:26:54.55 EInD1neL.net
>>537
クソが!!
コマンド引数が奇数の時にエラー出るじゃねーか!!!!
ちゃんとテストしやがれ!!!!!!

541:デフォルトの名無しさん
17/05/19 23:35:57.31 EInD1neL.net
>>539
ここで興味持って見て見たけど、文法がHaskellよりごちゃごちゃしてるんよ。。。
やっぱおいらはHaskellが好きやねん。

542:デフォルトの名無しさん
17/05/19 23:45:26.92 0YWm4zQf.net
>>539
別に数学好きってわけでもないけど、もちろんJuliaは使えるよ
最新の文法を全部追ってはいないから最新のをちゃんと使える自信はないが

543:デフォルトの名無しさん
17/05/19 23:48:20.94 R52jpALp.net
>>541
そりゃHaskellやLispと比べりゃどんな言語もごちゃごちゃしてるわ。
Juliaが狙撃対象にしてるのはRやPython(つーかNumpy)だから、Haskellはそもそも意識してないはず。
おまいさんに八つ当たりしてもしょうがないんだが、個人的にHaskellは二項演算子のググラビリティが死ぬほど低いのが困る。

544:デフォルトの名無しさん
17/05/19 23:54:27.07 co8auLJ+.net
pythonは言語的に優れてるとはおもわんけど簡素だよね全体的に
学習コストが低い
そこが高学歴wの人に好かれるとは思わなかったけど

545:デフォルトの名無しさん
17/05/19 23:59:47.82 0YWm4zQf.net
>>544
俺がPython好きなのは簡素だからではないけど、たしかに物理や数学の勉強で忙しくって、あんまり難しい言語は流行らないなあ

546:デフォルトの名無しさん
17/05/20 00:04:40.55 HfZ9LPLj.net
Pythonは教科書に載ってる模擬言語にそっくりだ
昔はpascal風のが多かったけど

547:デフォルトの名無しさん
17/05/20 00:05:47.77 ntB1AqSN.net
>>543
自分で書いたコードはどうやって検索してるんだ
もしかして全部オープンソースにしてからぐぐるのか

548:デフォルトの名無しさん
17/05/20 00:14:11.99 Mj4DXfyk.net
>>523
Haskell
URLリンク(ideone.com)

549:デフォルトの名無しさん
17/05/20 00:25:17.41 Mj4DXfyk.net
>>543
なぜHoogleを使わないんだ?
あと今のGoogleは記号検索も対応しているぞ。

550:デフォルトの名無しさん
17/05/20 01:38:29.31 l+OpXRNf.net
学歴たけーからこの言語は使えませんとかなんなんw
普通に言ってきたら馬鹿だとしか思えなくなるわw

551:デフォルトの名無しさん
17/05/20 08:02:40.56 1yTY6BxE.net
大学生と中学生って3年ちょっとの差しかないからな

552:デフォルトの名無しさん
17/05/20 08:20:32.04 4ZGrm/1B.net
>>523
Go
URLリンク(ideone.com)

553:デフォルトの名無しさん
17/05/20 08:56:41.66 Ykf9CvnE.net
>>543
すまん。
ググラビリティって何だ?
って調べたらググり易さ?
そんなに記号多かったっけ。。。
モナドとファンクタ以外は普通の言語にもある記号だろ?
本一冊持ってれば十分だし、Hoogle有るから。
それ言ったら2引数の関数全て二項演算子になるし、二項演算子も全て2引数の関数になる。
かえって(*)とかのセクション(2引数の関数)としてググれば見つかりやすいかもな。

554:デフォルトの名無しさん
17/05/20 09:03:31.15 Ykf9CvnE.net
>>544
プログラミングが本分じゃ無い人にとっては言語学習はコストだわな。
オブジェクト指向にどのくらい純粋かとか、そんなのどーでも良いんだろう。
おいらは言語オタだから純粋さにこだわって行き着いたのがHaskellだったが。
そのHaskellも実装が関数型言語ならこんな最適化が出来るって本に書いてたことをあんまり実現出来てない、理想から程遠い実装なんだが。

555:デフォルトの名無しさん
17/05/20 09:04:28.62 SQ1bJtqA.net
>>550
そんなん言ってる奴おる?

556:デフォルトの名無しさん
17/05/20 09:15:34.10 1yTY6BxE.net
言ってる奴はいるが、ちょろっと検索した程度では見つからないな
検索は万能じゃないというかむしろ無能である

557:デフォルトの名無しさん
17/05/20 10:10:53.27 /WJez+wG.net
>>519
Googleは開発言語に関しては保守的
社内で関数型言語使うの禁止されてるし

558:デフォルトの名無しさん
17/05/20 10:34:26.74 oEL0pKOn.net
Kotlinが晴れて現世代になったから
次スレからHaskellはスレタイに復帰ですね
永遠の次世代言語として

559:デフォルトの名無しさん
17/05/20 10:36:59.62 Ykf9CvnE.net
へ~
Haskellは、サーバサイド・ソフトウェアを構築する際の“秘密兵器に最も相応しい”とCarl Baatz氏(Better社の共同設立者)は述べている。
URLリンク(www.infoq.com)
サーバーサイドで実行するソフトウェアの構築を行う場合は、Haskellは今日探し得る中で最も秘密兵器に近いと言っていいかもしれません。
URLリンク(postd.cc)

560:デフォルトの名無しさん
17/05/20 10:38:31.13 oEL0pKOn.net
永遠の秘密兵器

561:デフォルトの名無しさん
17/05/20 10:47:37.49 K5B4Hn4Z.net
twitterに捨てられ
採用したchatw○rksは運気が下がり
Kotlinにすら負けた
Scalaよ、どうしてこうなった?

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

563:デフォルトの名無しさん
17/05/20 11:40:19.93 Ykf9CvnE.net
まずHaskell入門書なりサイトなり読めよ。
真っ先に紹介されるぞ->Hoogle

564:デフォルトの名無しさん
17/05/20 11:58:59.27 1yTY6BxE.net
厳格なクラスベースOOPから撤退して手続き型に戻りたいだけじゃないか本音は
しかし撤退しただけというのを秘密にするための兵器が必要だった

565:デフォルトの名無しさん
17/05/20 12:00:53.27 Mj4DXfyk.net
>>562
<$>とかはGoogleで検索できるよ

566:デフォルトの名無しさん
17/05/20 12:07:06.01 Mj4DXfyk.net
>>559
現状では、その記事にあるStackの守備範囲はそう大きくない。
誇張しすぎだろう。

567:デフォルトの名無しさん
17/05/20 12:15:26.38 Mj4DXfyk.net
>>561
記号が多すぎたな。
あと簡単に暗黙型変換ができるのはやりすぎだった。
F#にも機能としてはあるが、幸運にもあまり使われていないように思う。

568:デフォルトの名無しさん
17/05/20 12:50:31.59 jUCOTPFR.net
>>539
数学より工学よりだよね。配列扱うには便利。
今年中に1.0になるかな?
毎回のパッケージのコンパイルが不要にならないものか。

569:デフォルトの名無しさん
17/05/20 15:28:37.32 SgRoQNx5.net
>>543
そう言えば、おいらは数学が好きと言ってもHaskell切bチ掛けに好きにbネっただけだし=A数学で何か解瑞ヘしたいわけじb癘ウいんよ。
どっちかっつーと、数そのものの研究?みたいな事は趣味でしてる。
チャーチ数に符号付けてチャーチ数版整数作ったり、少数作ろうとしてチャーチ数って無限進数なんだと気付いて、まず10進数から作らなきゃとか。

570:デフォルトの名無しさん
17/05/20 15:52:34.74 UvQrCH4D.net
Haskell で扱えるなんて、ずいぶん狭い数学だな。

571:デフォルトの名無しさん
17/05/20 16:50:49.32 l+OpXRNf.net
haskell はモナドとか圏論あつかってる、すげードヤ
くらいの数学観だろどうせ。


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