次世代言語議論スレ[Go Rust Kotlin Scala]第4世代at TECH
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 - 暇つぶし2ch110:デフォルトの名無しさん
17/04/26 00:34:00.42 Boe/ixbX.net
>>99
うろ覚えだが、文字列から文字を取り出すのが思い切り変わった。
これは阿鼻叫喚になるなって印象はあった。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

127:デフォルトの名無しさん
17/04/26 22:30:36.25 SZlYFMhx.net
>>120
$ irb1.9
irb(main):001:0> "abc".each { |x| p x }
NoMethodError: undefined method `each' for "abc":String
from (irb):1
from /usr/bin/irb:12:in `<main>'
うん、確かに実行時エラーになった
では、ここで呪文を唱えてみよう
irb(main):002:0> class String; alias :each :each_char; end
=> nil
irb(main):003:0> "abc".each { |x| p x }
"a"
"b"
"c"
=> "abc"
irb(main):004:0>
あれ、おかしいなあ、Ruby 1.9 の String クラスなのに、Ruby 1.8 と同じく
配列と同じように扱えるようになったぞ、しかも元のコードは一切改変されていない
いったいどうなってるんだあ…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

174:デフォルトの名無しさん
17/05/02 06:00:14.79 IDWdkJdY.net
Mathematica 11.1 | 2017年4月(日本語版) 詳細 ≫
バージョン11.1では,機械学習,ニューラルネットワーク, 音声処理,ロバストな記述統計等の分野における
MathematicaおよびWolfram言語の最先端機能が拡張されています.
広範な応用分野に加わった,130を超える新関数
ニューラルネットワークの新しい20種類の層の追加,および再帰型ネットワークと可変長シーケンスのシームレスなサポート
NetModelにより,増加し続ける完全なニューラルネットワーク(訓練されたものとされていないものを含む)のリポジトリにアクセス
データ,画像,テキスト等の空間を機械学習ベースで可視化するFeatureSpacePlot
SequencePredict,ActiveClassification,ActivePredictionを含む,新しい機械学習関数
AudioCaptureを使って音声を直接ノートブック内で録音することによって,すぐに処理・解析することが可能に
2Dおよび3D画像に対する,*,-等を使った計算が可能に
計算写真学と計算顕微鏡学に対するサポートの拡張
ImageGraphicsを使って,ビットマップのベクトルグラフィックスによる近似を求める
HilbertCurveやSierpinskiMesh等の空間充填およびフラクタル領域コンストラクタ
WinsorizedMean, SpatialMedianを含む,新しいロバスト統計と空間統計
新しいGeoBubbleChartと,Callout,ScalingFunctions等のサポートの拡張
記号次数を持つ導関数のサポート
解像度が高くなった標高データ
シームレスに統合されたWeb検索,Web画像検索,テキスト翻訳のための外部サービス
セッション間の値をローカル,あるいはクラウド等に保存するための,幅広いPersistentValueシステム
クラウド内で個別に編集できるノートブックをシームレスに配布するためのAutoCopy
ノートブックベースのスクリプトエディタを使ったWolframScriptの.wlsファイルの生成
Wolfram言語スクリプトの自動実行がWindowsでも可能に
ドキュメントセンターおよびオンラインの例題すべてが新しくレスポンシブデザインに
URLリンク(www.wolfram.com)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

240:デフォルトの名無しさん
17/05/05 23:29:21.86 RNJ7gaAH.net
取り敢えず拡張性比べるんならプログラム組むべ。
まずはファイル名とキーワードを受け取って、ファイルの中にキーワードがあったらTrue。無かったらFalseと表示するコマンド。
プログラミング自体から離れてだいぶ経ったので、錆びた頭だったがHaskellでどうにか書いてみた。
search部分を拡張してくから、各自searchは自前で書いてくれ。
import System.Environment
search _ [] = False
search s ns | take (length s) ns == s = True
search s (_:ns) = search s ns
main = do
arga <- getArgs
content <- readFile $ args!!0
print $ search (args!!1) content

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

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

243:デフォルトの名無しさん
17/05/05 23:59:41.96 tVaTXT91.net
>>242
いや別に>>240へのレスというわけではないのだが…
これでいいか?(Squeak Smalltalk、もしくはPharo)
| search |
search := [:fname :keywd |
 FileStream oldFileNamed: fname do: [:file |
  (file findString: keywd) > 0
 ]
].
search value: 'test.txt' value: 'something' "=> true "

URLリンク(ws.stfx.eu)

244:デフォルトの名無しさん
17/05/06 00:04:14.20 nikLe03p.net
>>240
それだとコンパイル通らないよ
import System.Environment (getArgs)
import System.IO (readFile)
import Data.List (isInfixOf)
search :: String -> String -> Bool
search = isInfixOf
main :: IO ()
main = do
 (word:file:_) <- getArgs
 putStrLn . show =<< search word <$> readFile file

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

276:デフォルトの名無しさん
17/05/06 15:30:08.75 TldMS9JZ.net
ここまで次世代言語から>>240のコードが出てない件。
単純な力押し検索だから、難しいアルゴリズムでも無いんだが。。。
おいらも頭悪いんよ。
>>244の書き方でargs書き換えと、nsをcontentから取ってcsへ変更。sも折角だからwordから取ってwへ。
import System.Environment
search _ [] = False
search w cs | take (length w) cs == w = True
search w (_:cs) = search w cs
main = do
(file:word:_) <- getArgs
content <- readFile file
print $ search word content

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

301:デフォルトの名無しさん
17/05/07 14:58:24.43 EXP2lJkU.net
>>240
>>276
ライブラリ使うのとかはありかな?
主旨から外れるかもしれないが、こんなのどうだろう
import System.Environment
import Data.Conduit
import qualified Data.Conduit.Text as CT
import qualified Data.Conduit.Binary as CB
import Control.Monad.Trans.Resource
import qualified Data.Text as T
import Control.Monad.IO.Class (MonadIO)
searchSink :: (Monad m, MonadIO m) => T.Text -> Sink T.Text m Bool
searchSink w = do
n <- await
return $ case n of
Nothing -> False
Just s -> T.isInfixOf w s
main :: IO ()
main = do
(file:word:_) <- getArgs
x <- runResourceT
$ CB.sourceFile file
$= CT.decode CT.utf8
$$ searchSink (T.pack word)
print x

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

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

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

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

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

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

308:デフォルトの名無しさん
17/05/07 17:57:04.14 zdh+Rbcj.net
>>307
意図が良く分からないんだけど、Pythonで言えば
from sys import argv

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

if __name__ == '__main__':
____print(search(argv[1], argv[2]))
みたいなのでいいの? とりあえず書き捨ての簡単なプログラムから初めて拡張していく感じで
多分これ拡張しろって言われたらsearch関数まるっと書き直しちゃうけど

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

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

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

312:デフォルトの名無しさん
17/05/07 18:23:23.71 /lTp1FVO.net
>>304 Squeak/Pharo Smalltalk
| search |
search := [:fname :keywd |
 FileStream oldFileNamed: fname do: [:file |
  | count |
  count := 0.
  [file match: keywd] whileTrue: [
   count := count + 1.
   file atEnd ifFalse: [file skip: 1 - keywd size]].
  count
 ]
].
search value: 'test.txt' value: 'something'
URLリンク(ws.stfx.eu)

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

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

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

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

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

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

319:デフォルトの名無しさん
17/05/07 18:47:14.19 zdh+Rbcj.net
はいPythonまとめ
searchはもっと短い実装思いついたから短くした。
from sys import argv

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

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

if __name__ == '__main__':
# print(search(argv[1], argv[2])) # 1st
print(count(argv[1], argv[2])) # 2nd
変更は2ndって書いてある4行。一切再利用とかしてないけど、このお題に関して分かりやすさ、変更の少なさ、安全さでこれ超えるのは無理でしょ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

348:デフォルトの名無しさん
17/05/09 16:15:07.28 PEK3Ov/R.net
import System.Environment
search w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1) w cs
search' t w (_,cs) = search' t w cs
search2 w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w cts | take (length w) cts == w = search' (True,n + 1) w $ drop (length w) cts
search' t w (_:cs) = search' t w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word) -> readFile file >>= print.search word

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

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

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

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

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

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

355:デフォルトの名無しさん
17/05/11 17:14:36.14 +i4P6kRh.net
はいはい・・・。
んじゃ、検索で見つけた位置も追加で表示するように拡張。
import System.Environment
search w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y,x)) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1,(y,x + 1):ps,(y,x + 1)) w cs
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
search2 w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y, x)) w cts | take (length w) cts == w = search' (True,n + 1,(y, x + 1):ps,(y, x + 1)) w $ drop (length w) cts
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word:_) -> readFile file >>= print.search2 word

356:デフォルトの名無しさん
17/05/11 17:32:30.86 +i4P6kRh.net
>>348のコードをコピペしたテスト用テキストだとこう表示されるはず。
>search test.txt search
(True,16,[(3,1),(3,11),(5,1),(6,1),(6,51),(7,1),(7,17),(9,1),(9,12),(11,1),(12,1),(12,45),(13,1),(13,17),(18,12),(20,60)])

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

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

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

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

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
>従来の物のほうがなじみやすい
これはさすがにアホだろ


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