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 はモナドとか圏論あつかってる、すげードヤ
くらいの数学観だろどうせ。
572:デフォルトの名無しさん
17/05/20 17:11:03.97 SgRoQNx5.net
高卒の趣味グラマーに何求めてるか知らんが。。。
Haskellを切っ掛けに数学好きになったんだから、大した数学知識は無いよ。
573:デフォルトの名無しさん
17/05/20 20:58:11.85 RDFlCbPz.net
Mathematica使わせたらしっこちびるんじゃねーの?
574:デフォルトの名無しさん
17/05/20 21:04:31.14 SQ1bJtqA.net
Mathematica 買えない雑魚に対するマウンティングが発生しました?
575:デフォルトの名無しさん
17/05/20 21:06:38.85 dTi7LQL4.net
高いンゴ
URLリンク(i.imgur.com)
576:デフォルトの名無しさん
17/05/20 21:09:17.84 RDFlCbPz.net
Mathematicaは研究室にあったけど貧乏研究室で2ライセンスしかなく
口頭で使ってるやつに早く終われとか言ってた…
577:デフォルトの名無しさん
17/05/20 21:27:42.49 l+OpXRNf.net
RaspberryPi
になぜか入ってるという。たぶんこれが一番安い入手方法かと。
578:デフォルトの名無しさん
17/05/20 21:28:00.05 dfia18z7.net
Raspberry Pi買えば
579:デフォルトの名無しさん
17/05/20 22:48:46.22 5jKPuKGf.net
>>577
脇道的話題にレスして済まないのだが正直感謝だ。
エイプリルフールか夢かと思ったがマジだった。数万円が無料って… 意味がわからねえ。
580:デフォルトの名無しさん
17/05/20 22:53:38.13 jUCOTPFR.net
>>575
ホームエディションはアカデミックと同じくらいじゃなかったか?
Wolfram Alpha なら無料だし。
581:デフォルトの名無しさん
17/05/21 00:12:07.55 X++SkHvT.net
Mathematicaなんて使って何するんだよ
時代遅れもいいとこ
582:デフォルトの名無しさん
17/05/21 00:15:45.94 tsOaukBL.net
微分積分
583:デフォルトの名無しさん
17/05/21 00:24:03.86 T2XhzD4X.net
アルゴリズムとかの可視化においてMathematica より手軽なものを知らない
584:デフォルトの名無しさん
17/05/21 04:22:10.79 YZtqITyu.net
>>573-583
言語試したいだけでハード買えって。。。
興味はあるよ。
手続きも書けるのがちょっと引っかかるけど。
純粋じゃ無いんかいって思うけど。
本読んだ限りじゃ悪い印象はそんな無かった。
Haskellみたいな汎用性無いのと導入のハードル(値段だったりハード購入だったり)がね。。。
585:デフォルトの名無しさん
17/05/21 09:17:42.41 Gn+6D2wr.net
ラズパイも買えないとか
お前は次世代にふさわしくないね
586:デフォルトの名無しさん
17/05/21 09:30:18.20 bYtGqajI.net
>>584
試したいならお試し版使えばいいだろ。
587:デフォルトの名無しさん
17/05/21 09:30:54.35 fDsf7qWs.net
いあ、買えるけどさぁ。。。
買ってまで触りたいものじゃなし。
ノートじゃ無いから場所固定されるじゃん。
手軽じゃないなぁと。
588:デフォルトの名無しさん
17/05/21 09:33:24.18 fDsf7qWs.net
>>586
せやね。
試すだけならそれで良いか。
ちびるような使い方出来る数学知識は無いし。
589:デフォルトの名無しさん
17/05/21 09:33:34.85 aAAAG14z.net
純粋関数型とかモナドとかのワードに惹かれただけの
ショボいコードしか書けないゴミhaskellerモドキはこんなもんだよ
590:デフォルトの名無しさん
17/05/21 09:46:52.19 fDsf7qWs.net
うん。
最初はそう言うワードに惹かれた。
でも今はシンプルな仕様と言うか仕組みが好き。
少ない知識で書いて行けるのが。
そう言う意味じゃCも好きだけどね。
そのショボいコードすら出てこない次世代言語は言語オタに支持されてるだけで、言語オタは実際に役立つコード書いてないんじゃ無い?
少なくとも、おいらのは最終的にはテキストで探したい文の大まかな文脈は表示出来る、文献を参照するのに便利なコマンドになる予定だよ。>>492
591:あ
17/05/21 09:51:06.00 SzG2p8Pq.net
そういやラズパイにmathematica入ったな、いつか。
俺ずっとMaximaで済ませてたからあれだが。
数学が好きなら、数学を処理する言語使ったほうがいいのは俺も同意する。
592:デフォルトの名無しさん
17/05/21 10:11:58.67 GQ3S98if.net
ついにMathematicaまで貶し始めたな…
ちなみにRaspPi のはZeroでも使えるはず
流石にこれぐらいなら出せるだろ
593:デフォルトの名無しさん
17/05/21 10:28:30.98 fDsf7qWs.net
え、貶してないよ?
次世代言語のここが良いあれがダメって言うだけでコード出さない言語オタは貶したけど。
まあ、おいらもHaskellに出会う前はRubyで"Hello World!!".length.displayとかやるだけで満足してたりする言語オタだったから、人の事言えないんだけどね。
何でもいいから一個の言語を使いこなせるようにまずならないと。
うん。お前が言うなだけど。
594:デフォルトの名無しさん
17/05/21 10:36:03.72 GQ3S98if.net
>>593
お前の事じゃない
自己主張強い自覚あるなら控えとけ
595:デフォルトの名無しさん
17/05/21 10:39:16.44 fDsf7qWs.net
おおう。。。
すまぬ。
しばらくROMるわ。
596:デフォルトの名無しさん
17/05/21 11:04:40.31 NrSnEm53.net
>>523
"Pharo Smalltalk"
| queue array ans msToRun sorted |
queue := SharedQueue new.
array := (1 to: 1e3) asArray shuffled.
ans := OrderedCollection new.
(1 to: 100) detect: [:m |
msToRun := [array do: [:n | [(n * m) milliSeconds asDelay wait. queue nextPut: n] fork].
sorted := (queue next: array size) isSorted] timeToRun asMilliSeconds.
(ans add: {#m->m. #msToRun->msToRun. #sorted->sorted}) last value.
] ifNone: [].
^ans asArray
"=> {
{#m->1. #msToRun->1003. #sorted->false}.
{#m->2. #msToRun->2004. #sorted->false}.
{#m->3. #msToRun->3004. #sorted->false}.
{#m->4. #msToRun->4016. #sorted->true}}
"
URLリンク(ws.stfx.eu)
597:デフォルトの名無しさん
17/05/21 11:07:22.37 bYtGqajI.net
>>593
最低でもフィボナッチはやらないとな。
598:デフォルトの名無しさん
17/05/22 19:21:13.10 MtDspqBa.net
>>523
Python3
URLリンク(ideone.com)
599:デフォルトの名無しさん
17/05/22 21:49:08.94 uTnQjVde.net
Javaドカタでも使える次世代言語は何?
600:デフォルトの名無しさん
17/05/22 21:53:40.25 np8fDJ8H.net
>>599
Java 9
601:デフォルトの名無しさん
17/05/22 21:54:21.22 sdGytzhA.net
Kotlin
間違ってもScalaには手を出すなよ
602:デフォルトの名無しさん
17/05/22 21:55:44.97 t4wHpx3M.net
コトィンだろ
603:デフォルトの名無しさん
17/05/22 21:59:52.84 uTnQjVde.net
ペチパーでも使える次世代言語はある?
604:デフォルトの名無しさん
17/05/22 22:08:33.54 k8jtGWEX.net
>>603
Go(笑)だな
VB以下の低脳言語よ
605:デフォルトの名無しさん
17/05/22 22:28:10.80 o+YzRX7H.net
小岩井Kotlin
606:デフォルトの名無しさん
17/05/22 22:31:28.97 t4wHpx3M.net
>>603
ペチプァ土方に次などない
糞ゴミ連想配列のドブに沈むか首吊って死ね
607:デフォルトの名無しさん
17/05/22 22:53:09.79 NUyV/iNa.net
ペチパー馬鹿にすんな
トレイトあるんやぞ
Scalaの優れたヤツじゃなくSmalltalk式の劣った方だが
608:デフォルトの名無しさん
17/05/22 23:04:48.46 ydRKGq7n.net
ペチパーってPHPerの事か
WEBならKotlinよりScalaじゃない?
609:デフォルトの名無しさん
17/05/22 23:13:47.67 npbAin+o.net
用途の違う言語並べてなにを比べるんだ、、、
610:デフォルトの名無しさん
17/05/22 23:30:44.58 8HqyDksp.net
>>607
scalaのほうってトレイトと呼んでるけど、実態はmixinじゃないの?
そっちの方が優れてるの?
611:デフォルトの名無しさん
17/05/23 00:08:59.76 Cmetwh8S.net
ちまちま金出し渋るんだったら
10万程度でpc組め
612:デフォルトの名無しさん
17/05/23 00:44:31.76 PZYq3vzy.net
ペチプァ~のプァ~は頭がくるくるプァ~
よくあんな汚物吐瀉物糞尿下痢で踊り狂えるな
狂気の沙汰だわホンマ
スレが臭くなるから近寄るなよ疫病神
早く死ね
613:デフォルトの名無しさん
17/05/23 01:15:17.85 Ut2KtnOs.net
今更mapとかfilterとかをforで書く言語のどこが次世代だよ
614:デフォルトの名無しさん
17/05/23 01:21:27.28 JnTuEITt.net
なんなのその for 書いたら負けみたいな無意味な思想は
615:デフォルトの名無しさん
17/05/23 01:24:34.96 Ut2KtnOs.net
Goは開発がGoogleじゃなかったら絶対流行らなかった
趣味で言語作りました。試しに作っただけなので複雑な事は出来ません
こんな言語をシンプルだから分かりやすいよ!ってGoogleの知名度使ってゴリ押ししてるだけ
616:デフォルトの名無しさん
17/05/23 01:26:38.72 Ut2KtnOs.net
>>614
forだと無駄な行が多すぎてパッと見て何をしているのか分からない
コメント書かなくても読めるのが良いソースだろ?
617:デフォルトの名無しさん
17/05/23 01:50:10.95 6XWqRRso.net
>>615
複雑なことっつーか抽象度の高いことが出来ないな。汎用ライブラリ書こうとするとinterface地獄になって悪夢見る。
でも不思議なことに手なりで動くもん量産するのにはものすごく向いてる。
マクロがないかわりにgo generateとかいうクソキモい(誉め言葉)機能があることと、
あとはPHPみたいな言語未満の何かで物書いた時のような負債に陥る危険性が、言語としての幅が狭いお陰である程度緩和されてるってのが案外バランス取れてるのよな。
汎用ライブラリ書くのには全然向かないけどね。
618:デフォルトの名無しさん
17/05/23 01:54:36.33 6XWqRRso.net
Googleが作らなかったら流行らなかったってのは大いに同意するが、正確に言うと「Googleじゃないとこんないかれた言語を完成品と言い張れなかった」だと思うね。
周辺ツールの異常な拡充もごり押し戦略の一環だろうしな。
619:デフォルトの名無しさん
17/05/23 01:56:50.35 6XWqRRso.net
総合して、Goは次世代のドカタ言語っていうのが一番しっくりくるわな。
あくまでドカタ言語。
620:デフォルトの名無しさん
17/05/23 07:27:48.45 JnTuEITt.net
>>616
いや、ワンライナーで無理やり書いたソースのが読みにくいよ。
てかそこまで行数使う複雑なコードなら関数で切り出せ。
そういうのは使ってる言語の問題じゃなくて書いてる奴の問題だから。
621:デフォルトの名無しさん
17/05/23 07:50:29.19 PZYq3vzy.net
>>620
でもペチプァ~のあなたは、テンプレートにSQLのfor string連結書いちゃうんでしょう?
死ね?
622:デフォルトの名無しさん
17/05/23 08:14:57.33 w55PtzH/.net
いや内包表記もしくはmap reduceがあるのは大事でしょ
関数として切り出す時にループの中で行うことだけ書けばいいのがmapないとループそのものを行うサブルーチンもかかなくちゃいけなくなるじゃん
map不要とか言う奴絶対Lispすら触ったことないハイパーエアプマンだろ
623:デフォルトの名無しさん
17/05/23 08:22:40.89 B87mZx5r.net
内包表記かmapに関数一つだけ渡すのが一番読みやすいな
624:デフォルトの名無しさん
17/05/23 09:04:41.99 PZYq3vzy.net
ペチプァ~さん・・・w
625:デフォルトの名無しさん
17/05/23 09:55:36.88 djHV+jRv.net
>>617
汎用ライブラリ書けないっていうのはかなり大問題だと思うんだが
ジェネリクスないのが原因でコレクションとかは特別扱いしないといけない
Setとか普通に使えないのは不便すぎるし、SortedSetとか追加しようと思ったらそれも言語で特別扱いするのかってなる
型ごとにコード書くのか?コピペは最も基本的なアンチパターンだよね?それをGoogleは推奨してるのか?
>>618
周辺ツールをこれだけ作ったのに言語がこれじゃもったいない
もう少し機能入れていれば間違えなくもっと流行ってた
626:デフォルトの名無しさん
17/05/23 10:09:21.11 6XWqRRso.net
>>625
ジェネリクスについてはさすがにいれようぜって議論はあるな。
今はそういうのをコピペなしに書くならinterface地獄で、自分もそこは嫌いなとこだ
ちなみにgoの汎用sorted setくらいならgithubに既にある上にめっちゃコード短いから、見てみるのも面白いかもしれんね。
627:デフォルトの名無しさん
17/05/23 10:30:08.82 +Srr1GFp.net
内包表記!ワンライナー!読みにくい!って普段どんな糞コード書いてたらそういう発想に陥るんだろう
628:デフォルトの名無しさん
17/05/23 11:30:14.87 3W0XlzKr.net
まあ長過ぎるワンライナーが読み難いのは分からなくは無い。
でも書くし、読むけど。
昔何かのJavaの本でJavaでも宣言的に書くべきだ。みたいな事が書いてあって、メソッドチェーンされたインスタンスが二行でちょっとした処理してた。
最近C#6実践入門とか言うの買ったけど、それに載ってるコードもifは出るけどforがほとんど無い宣言的なコードだった。
C#6の新機能紹介はほとんどオマケで、タイトル詐欺だけど。
いあ。。。詐欺じゃ無いけど、紹介された新機能が全然頭に入って来ない位、(ドロドロの)実務的な内容。。。
629:デフォルトの名無しさん
17/05/23 11:47:39.23 nY7S90+T.net
Javaは8になって一気に流れ変わった。
なお日本のドカタ現場はJava6をつかっていればましな方なのは内緒な。
ドカタ現場から見ればObj-Cすら次世代言語ってな。
630:デフォルトの名無しさん
17/05/23 13:10:57.22 fxr47P4A.net
Pythonは内包表記でもforって書くんだな
手続きが透けて見える
見えない奴はエアプ
631:デフォルトの名無しさん
17/05/23 13:14:25.27 hsNp2Xw3.net
その辺はhaskellのモナド内包表記も同じことよ
632:デフォルトの名無しさん
17/05/23 13:58:34.02 LlhYvOQ7.net
>>630
まあ透けて見えるのはその通りなんだが、逆に聞くが手続き型が透けてたらいかんのか?
機能としてPythonの内包になんか欠けてるのか?
633:デフォルトの名無しさん
17/05/23 17:59:05.36 JnTuEITt.net
やべーな。。
内包表記、map, reduce 使えるとだいぶ偉いプログラマーになった気分なのかね。。
別にあれば使うけれど、それで読みやすさが格段にあがるなんてことはないわ。
まさに枝葉としか言いようがない。
てかなんでこんなに php 嫌われてるのか使ったことないからわからんのだが。
perl には相当神経やられたってのは個人的にはあるけれど、
php ってそんな嫌なもんなんかね。
634:デフォルトの名無しさん
17/05/23 18:08:35.09 PJIONmxy.net
Haskell的には状態を持たないから、将来並列動作しても良い。
内部動作が実際はどうなってるか気にしなくて良い。
記述上は単純に一行になる。
書きかたによるけど、関数より意味が通じやすいかも。
リストの長さ求める関数length
再帰
length [] = 0
length (_:xs) = 1 + length xs
再帰はスタック消費するので末尾再帰
length cs = length' 0 cs
......................where
..……...................length' n [] = n
..……...................length' n (_:xs) = length (n + 1) xs
末尾再帰を一般化したfoldlで置き換え
length = foldl 0
リスト内包表記
length xs = sum [1 | _ <- xs]
過程を知ってればfoldlも意味分かるけど、リスト内包表記はHaskeller以外にも分かりやすいかも。
635:デフォルトの名無しさん
17/05/23 18:18:05.38 PJIONmxy.net
x length = foldl 0
端折り過ぎた。
length = foldl (/x _ -> x +1) 0
636:デフォルトの名無しさん
17/05/23 18:32:56.72 FtK5T5KY.net
>>633
単純にカテゴライズして蔑視したいだけだと思う。
そういうのを除いてPHPが嫌われるのは言語仕様が綺麗とか
汚いとかそういうのではなく、互換性とか環境問題で
無駄なエネルギー使うからだと思ってる。
同じような理由で俺はrubyとかはもう手を出したくないと
思うし。俺が好んで使ってたのは256倍本とか出てた頃で
パッケージやら何やらで随分と改善されてるのは
知ってるけどトラウマなんだよな。
637:デフォルトの名無しさん
17/05/23 18:40:57.13 IFQGAtt4.net
>内包表記、map, reduce 使えるとだいぶ偉いプログラマーになった気分なのかね。。
このレス痛々しくて面白いな
638:あ
17/05/23 19:15:59.04 9OGdTOvp.net
少なくとも嫌い好きではないわな、仕事なら。
パソコンの大先生なら孤高の言語でオナニーしてくれりゃいいけど。
次世代ってのは、未来の現世代なんだから。
夢ばっか見ても意味ない。
639:
17/05/23 19:43:11.53 F0rvxaiH.net
となると、C++ 一本でいくのがいいのでは?
640:デフォルトの名無しさん
17/05/23 19:51:46.81 ns4joxA3.net
結構な大企業でもLispとかHaskell 使ってるあたり自分で書ける能力あるなら採用言語なんか趣味だろ
641:デフォルトの名無しさん
17/05/23 21:37:46.03 qYVXIZT5.net
>>640
という楽観を華麗にぶち壊すRustとかいうクソ言語
642:デフォルトの名無しさん
17/05/23 23:00:33.25 ns4joxA3.net
>>641
どゆこと?
643:デフォルトの名無しさん
17/05/24 00:07:47.20 8Z1z+g0P.net
>>642
どんな優秀な人材でもまともに物がつくれない破綻した言語ってこと。
644:デフォルトの名無しさん
17/05/24 07:21:12.88 5yXboscj.net
>>630
forという単語を見ると手続きが透けて見えるほうがよほど手続き型に脳が汚染されてるだろ。
述語論理の for all は手続きか?
645:あ
17/05/24 07:39:36.26 IPP9nXuk.net
>>640
自分がかけたら使う、それじゃそいつがやめたら困るわ。
ある程度は浸透してくれたものでないと困る。
646:デフォルトの名無しさん
17/05/24 08:08:46.24 MYIIDec9.net
>>645
知らんがな。人材に逃げられないようにせいぜい厚遇するんだな
647:あ
17/05/24 08:23:16.84 IPP9nXuk.net
>>646
どういう事?
逃げる訳じゃなくて辞めるんだよ。定年とか、寿あるじゃん。それは仕方ないよ。
教育コストとその言語から得られるメリットのバランス次第じゃないのかな。
新しい人入れるときの問題で、その時に誰でも知ってる言語で地頭があって、そこに自社の資産とか話すのは簡単だし、教育に出しやすいじゃん。自社でもやるし。
書けるから雇うことも無ければ、雇ったからそいつの思うように書かせるわけでも無いんじゃないの?