トップページ⇒tech
1001コメント373KB

【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/07/21(月) 01:43:25.01ID:quvW9B9P
最近の情勢なども参考に
議論してください


米大学のコンピューターサイエンス学部上位39学部、Pythonが初級コースで教える言語1位に
http://developers.slashdot.jp/story/14/07/12/0659215/

Farewell Node.js
https://medium.com/code-adventures/farewell-node-js-4ba9e7f3e52b



前スレ
【JavaScript】スクリプト バトルロワイヤル44【pl,rb,php,py】
http://peace.2ch.net/test/read.cgi/tech/1402707917/
0002デフォルトの名無しさん2014/07/21(月) 02:10:34.31ID:bGaWqmfa
phpの勢いも落ちてきたな
もうphpに新規フレームワークも必要ないでしょう
今後は衰退するだけ
それでもまだLLではダントツ1位で使われてるけど
rubyはphp使ってるとバカにされるから使っている層もいるので技術者のレベルが極端に離れすぎてる
ちょいと初心者すぎるruby使いが増えてやしませんか
0003デフォルトの名無しさん2014/07/21(月) 02:12:34.21ID:bGaWqmfa
jsはnodejs次第だけど
nodejsをリアルタイムwebが目的な層ばっかりだと思う
websocketはpythonでもgoでもできるしnodejsだけの強みではなくなってきている
0004デフォルトの名無しさん2014/07/21(月) 09:38:25.14ID:GL7TaMAB
また醜い争いが始まる…
0005デフォルトの名無しさん2014/07/21(月) 10:57:07.69ID:wTJnMD0C
hacker newsみても、node.jsの話題しかないじゃん
PHPって息してるの?
0006デフォルトの名無しさん2014/07/21(月) 10:59:12.51ID:wTJnMD0C
numeric.jsさえあれば、VBAの糞コードから開放される
0007デフォルトの名無しさん2014/07/21(月) 12:38:20.11ID:wTJnMD0C
>>3
pythonじゃデザインは出来ないよね?
0008デフォルトの名無しさん2014/07/21(月) 12:48:05.97ID:N6YKvtVQ
デザインとは?まずそこの定義から
0009デフォルトの名無しさん2014/07/21(月) 14:15:44.59ID:VU7LZ8It
設計だろ
0010デフォルトの名無しさん2014/07/21(月) 14:27:45.13ID:ClN5gZ6P
>>9
日本語でいうデザインは、グラフィカルデザイン、UI/UXデザインのことでしょ。
0011デフォルトの名無しさん2014/07/21(月) 14:50:41.15ID:qfklhAEG
この板だからクライアントサイドのjavascript話ではないと思ったが
0012デフォルトの名無しさん2014/07/21(月) 15:12:20.78ID:wTJnMD0C
そういう思い込みがバグ作り込むし、絶対に謝らないから、>>11とは一緒に仕事したくないね
0013デフォルトの名無しさん2014/07/21(月) 15:13:19.09ID:+TobWlU/
とりあえずDropboxはクライアントも全てPythonで書かれてる
0014デフォルトの名無しさん2014/07/21(月) 15:45:48.68ID:By4oX885
最近の多機能なLinuxディストリでPython削除しようとすると酷いことになるよね
0015デフォルトの名無しさん2014/07/21(月) 16:21:25.64ID:wTJnMD0C
perlが消えていったんだよ?
pythonがnode.jsに取って代わられて何が不思議なのさ
0016デフォルトの名無しさん2014/07/21(月) 16:29:50.00ID:w7niC8il
node.jsは非同期イベントだから、プロセススレッド形式に取って代わることはないと思うけど。
0017デフォルトの名無しさん2014/07/21(月) 16:30:42.61ID:VU7LZ8It
雑魚の脳内には最初から存在しないんだろうけど
ぃぬx界隈じゃ全然消えてすらないしな
0018デフォルトの名無しさん2014/07/21(月) 16:41:50.26ID:b/wvyxgT
node.jsを仕事で使うようになった友人の口癖が
メモリリークになりました
0019デフォルトの名無しさん2014/07/21(月) 16:49:47.97ID:HJsm+jda
>>13
全てとあるけど、iOS版とAndroid版の Dropbox クライアントも
Python で書かれているの?もしそうなら、ソースはどこにある?

Windows版とMac版については、開発者の講演の中で
それぞれ WxPython と PyObjC で書かれていると確認できたんだけど、
iOS版とAndroid版のソースが自分じゃ見つけられないのよ

Dropbox の公式 Core API SDK を軽く眺めた範囲だと、
それぞれ Eclipse(Java) と XCode(Objectibe-C) を前提と
しているように見える
WxPython や PyObjC が iOS/Android へ移植されたなんて話は
聞いたことないし、いったいどうなっているのやら....
0020デフォルトの名無しさん2014/07/21(月) 16:59:49.96ID:wTJnMD0C
ttps://www.joyent.com/blog/walmart-node-js-memory-leak
0021デフォルトの名無しさん2014/07/21(月) 17:03:43.95ID:HJsm+jda
>>19を補足するけど、Stack Overflow で昨年の3月に同様の質問が
あるけど、決定的な返答が無いみたい

・How does DropBox protect its python code? - Stack Overflow
 http://stackoverflow.com/questions/15581890/how-does-dropbox-protect-its-python-code

パッケージ(JARファイル)を解凍してみたけど暗号化されているみたいな....
0022デフォルトの名無しさん2014/07/21(月) 18:02:32.67ID:quvW9B9P
AltJSって使われててもソースを公開しない限り
外部から分からないよね
ウチもPythonJSを使ってるけど、
端から見たらJavascriptと区別付かないはず
0023デフォルトの名無しさん2014/07/21(月) 19:02:16.98ID:GL7TaMAB
本番環境にもソースマップ置いてる場合はわかる
0024デフォルトの名無しさん2014/07/21(月) 23:16:06.77ID:wTJnMD0C
>>22
「ウチ」って自宅のこと?
0025デフォルトの名無しさん2014/07/22(火) 00:03:40.80ID:OPIBUn21
JSは現代のVB6なんだよ
底辺プログラマの受け皿なんだ

JSっていう言語の酷さが、まともなプログラマを遠ざける
参入障壁になって雑魚プログラマを守ってるのに、
そんな参入障壁を破壊するAltJSは
底辺の生活を脅かす敵だよ
0026デフォルトの名無しさん2014/07/22(火) 00:19:07.23ID:RYGlxIg7
>>25
(何言ってんだこいつ)
0027デフォルトの名無しさん2014/07/22(火) 01:00:57.33ID:K5R4WKSf
>>25
AltJSを使うと底辺派遣共をニートに追いやる手助けが出来るのか
そりゃすげぇ。絶対使うわ
0028デフォルトの名無しさん2014/07/22(火) 11:55:45.08ID:mFr1Tp1w
言語の勢い云々の前にコンピュータ関連に携わる人が
そもそもこんなに人数いらなくなってるだけ
一気に大勢失業させると不味いから段階を通じて徐々に失速させていくのが国の仕事
これも一種のバブルだって言ってんのに理解してないなんちゃって技術者が多い
0029デフォルトの名無しさん2014/07/22(火) 12:14:43.61ID:iu3Ufd63
個人の生産性が上がると雇用も増えるってどこかのえらい人がゆってましたよ
0030デフォルトの名無しさん2014/07/22(火) 12:32:30.37ID:OLIbXREN
機械のメンテや計算機の使い方を教える先生になろう
0031デフォルトの名無しさん2014/07/22(火) 13:18:52.79ID:9g25Oa3V
>>28
底辺と管理しかできない奴を別にすると
人はかなり不足してるけどな
0032デフォルトの名無しさん2014/07/22(火) 13:36:00.23ID:brrWCVo/
日本での一番の問題は優秀なエンジニアの給与と糞味噌のコーダの給与がほとんど変わらない事。
これじゃ優秀な人間は集まらないよ。 せめて数倍の差は付けないと。
0033デフォルトの名無しさん2014/07/22(火) 14:15:27.03ID:zJWBojIk
先生になるには教員免許が必要です
0034デフォルトの名無しさん2014/07/22(火) 14:46:39.84ID:brrWCVo/
>>33 準1級も持たない英語の先生が大半。 つまり、英検1級持ってようが英検2級しか持っていまいが給与は同じと言う日本社会が変。
0035デフォルトの名無しさん2014/07/22(火) 15:20:57.60ID:OLIbXREN
>>32
Web技術者って、計算機に対して高卒みたいな白痴でもできるじゃん
安くて当然だよ
0036デフォルトの名無しさん2014/07/22(火) 15:24:00.36ID:OLIbXREN
>>34
英検っていうけど、英語圏に居るホームレスを捕まえてきた方がはやい
0037デフォルトの名無しさん2014/07/22(火) 15:30:06.31ID:9g25Oa3V
>>35
そういうのしか周りにいないんですね
0038デフォルトの名無しさん2014/07/22(火) 15:47:58.34ID:cFa+HftP
>>35 おばさんの内職仕事になりつつ有る。
Web系の殆どはそのレベルの仕事でしか無い。
コピペで成り立つ。 またそうしないと競争に勝てない。
0039デフォルトの名無しさん2014/07/22(火) 15:50:47.56ID:cFa+HftP
>>36 それは無理だ。スペル、文法、読解力諸々。
ホームレスにプログラムしろと言うのに等しい。
0040デフォルトの名無しさん2014/07/22(火) 16:29:59.63ID:OLIbXREN
そもそも、あいつら、スペル、文法なんて、特に気にしてないだろw
0041デフォルトの名無しさん2014/07/22(火) 17:18:46.12ID:qC8GKtmW
>>35
> Web技術者って、

そっちじゃなくて、優秀な技術者の給料がそいつらとたいして変わらないのが問題なんだろ
底辺はプログラム以前に日本語理解力から足りてないんだよな (w
0042デフォルトの名無しさん2014/07/22(火) 17:24:44.73ID:cFa+HftP
>>35 優秀なシステムエンジニアさえも高卒の出来ない人間と同じとみなされてる。
学歴で物事を考えるお前もかなりいかれてる。
0043デフォルトの名無しさん2014/07/22(火) 18:52:35.67ID:OLIbXREN
>>41
てか、優秀な人って、皆、R&Dに行くだろ
プログラマなんて、ただの労働者だよ
0044デフォルトの名無しさん2014/07/22(火) 18:54:01.49ID:OLIbXREN
>>42
原子核物理や宇宙工学を専攻にしたWebプログラマなんて無能扱いするだろ?
プログラマなんて最底辺の労働者だよ
0045デフォルトの名無しさん2014/07/22(火) 19:03:16.73ID:cFa+HftP
>>43, 44 それは日本の悪しき習慣。
価値が解らない馬鹿ばかりだから。

アメリカだと医師免許を取った後IT業界に入る人もそれなりにいるぞ。

ま、言われたままプログラムをコーティングすると言う作業自体は労働集約型の土方仕事では有るが。
0046デフォルトの名無しさん2014/07/22(火) 19:08:04.90ID:OLIbXREN
>>45
そいつら、真面目に医者になる勉強したの?
0047デフォルトの名無しさん2014/07/22(火) 19:13:39.79ID:OLIbXREN
医師免許とる片手間でプログラマになってもさ、明らかに、労働集約型の土方仕事にしか参加できないだろw
それか、医療関係のソフトウェアの設計を行うSEみたいなポスト
計算機科学の知識なんて、少しもないよね?どのみち、最底辺の土方仕事
0048デフォルトの名無しさん2014/07/22(火) 19:13:43.72ID:cFa+HftP
>>46 医師免許取ってと書いてるだろ。
だからIT業界で金に成らなくても食いっぱぐれは無い。
0049デフォルトの名無しさん2014/07/22(火) 19:18:46.90ID:cFa+HftP
>>47 お前は一生底辺でしか生活出来ないな。
上層部の設計はいくらでも知識集約型の仕事が有るんだよ。
医師であれば最も近いのが医療系。

設計して作り上げ、テストするには医師免許がある人間にしか出来ない。
ME業界がどれだけ医者に金をつぎ込んでるか知ってるか? プログラムなんかなにもしないけど。
0050デフォルトの名無しさん2014/07/22(火) 19:35:19.62ID:cFa+HftP
>>47 つまり、プログラムを書くだけの仕事は単純労働なんだから、設計が出来る専門知識を養うことが大事なんだよ。

それなりに経験が有るプログラマーならわかると思うが、やってれば嫌がおうにも専門知識を知らなければろくなプログラムは出来ない。
だからだんだん特化して行くことが自分の価値を上げることになる。
0051デフォルトの名無しさん2014/07/22(火) 20:13:41.89ID:qC8GKtmW
>>47
世の中、とんでもなく頭のいいやつがいるんだよ
お前や俺らがそれなりに勉強して習得している技術を、そいつらはちょっと見ただけで易々と理解することができる
プログラマーと医療ならまだしも、野球選手(アメリカなので当然メジャーリーグ)として活躍しながら、30代でスパッと医者に転身した奴すらいるんだよ
しかも、そいつは野球選手から医者になることまでちゃんと計画していたと言うから驚きだよ
なので、自分に当てはめてどうのこうの言うのは全然的外れだよ
0052デフォルトの名無しさん2014/07/22(火) 20:31:24.50ID:ASPChdfI
くだらねーことでケンカすんな。他でやれ
0053デフォルトの名無しさん2014/07/22(火) 21:23:14.47ID:OLIbXREN
>>48
え?医師免許だけ取ってできる仕事ってあるの?名義貸し?
0054デフォルトの名無しさん2014/07/22(火) 21:26:27.66ID:OLIbXREN
>>51
そもそも、野球選手って基本的に体動かすだけで、素振りやキャッチボール、
移動中なんて、何か他の物事を考えるだけの頭が空いてるじゃん
0055デフォルトの名無しさん2014/07/22(火) 21:36:14.57ID:OLIbXREN
>>49
上流の知識集約でいう知識って、計算機科学的な意味会いでの知識じゃないでしょ?
ペトリネットなんて、その辺の四流国立でも簡単にやるよ。コーディングの方が難しいよね
0056デフォルトの名無しさん2014/07/22(火) 21:37:04.42ID:qC8GKtmW
野球選手なめすぎ
普通にやってたら、勉強する気力なんて維持できない
0057デフォルトの名無しさん2014/07/22(火) 21:38:48.08ID:OLIbXREN
中学の部活じゃなくって、十分に身体が出来上がってるだよ?そのぐらい余裕だよ
0058デフォルトの名無しさん2014/07/22(火) 21:54:57.99ID:OLIbXREN
javaでやるような仕事って、大して必要でもない上流工程の専門知識wだらけなんだよね
ろくなコーディング経験もないヤツらがやったお絵かきを元にするぐらいなら、
情報産業なんて見限って、クラウドの方へ行くよね?当然だよね。
0059デフォルトの名無しさん2014/07/22(火) 22:24:57.55ID:vNYu1ctv
>>19,21 だけど数日たってもレスが無いってことは、
Dropbox の iOS/Andriod 版クライアントが Python で
書かれているというソースは無いってことでいいのかね?

よく考えてみれば、>>19 の日本講演は2013年とつい最近の事で、
もし本当に iOS/Andriod 版クライアントが Python で書かれていれば、
その場で大々的かつ自慢げに紹介しているはずだと思う
それが無かったってことは、少なくとも講演のあった2013年9月の時点では
Python は使われていないと判断したほうが、よさげな気がする

まあ >>1 にもあるように、Python は手続き型プログラミングを学ぶ
初心者には最適かつ人気のある教育向け専用言語なんだから、
現実的な商用プラットフォームである iOS/Android を無視できるって
ことなんだろうなあ....

実際、iOSアプリの Pythonista が扱えるグラフィック機能は
キャンバス上でのお絵描き程度が限度で、GUIを備えた本格アプリには使えない
でも iOS 上で Python のお勉強をするには最高なアプリなんだよね
0060デフォルトの名無しさん2014/07/22(火) 22:36:23.14ID:OLIbXREN
python?ああ、数年前に流行ってたね
今もうgnuplotにhtml5のインタフェースが出来る時代だよ?まだ使ってたの?
0061デフォルトの名無しさん2014/07/23(水) 00:28:21.31ID:gKvkFWy8
アメリカって言っても、ただのプログラマーなら大して日本と給料変わらないよ
0062デフォルトの名無しさん2014/07/23(水) 00:39:55.11ID:xa9IqUVv
>>61 Apple のただのプログラマーがいくらもらってるか知ってるか?
0063デフォルトの名無しさん2014/07/23(水) 00:44:35.03ID:gU9I4UPn
>>61
アメリカのプログラマの平均年収は850万な。
まあ、社会保障とか考えたら、アメリカで働こうとは思わんが。
0064デフォルトの名無しさん2014/07/23(水) 00:53:59.14ID:xa9IqUVv
>>62 2012年のアメリカの平均的プログラマー収入 単位1000ドル

Objective-C 105 高い。

平均的技術者給与 2013年 85.6
0065デフォルトの名無しさん2014/07/23(水) 00:58:59.12ID:xa9IqUVv
日本のプログラマーの平均給与。420万円。
倍の差が有るな。
日本のSE 538万円
0066デフォルトの名無しさん2014/07/23(水) 00:59:39.38ID:gU9I4UPn
>>64
Obj-C高いな。Ovj-C得意だし、これ見ると転職したくなるは..

スクリプト系はPythonが求人数が多くて、給与も多かった記憶がある。
0067デフォルトの名無しさん2014/07/23(水) 01:02:50.54ID:6bOgx7OS
Objective-Cの人数少ないから高く、Pythonなど多いのは安い。
0068デフォルトの名無しさん2014/07/23(水) 01:04:24.84ID:mkGkREWO
仕事なんてVBとCOBOLで十分。
大体、向こうの平均的なプログラマと日本の平均的なプログラマのレベルって違うよね?
Objective-Cなんて、流行りってだけで殆んどの開発者たちは触りたくない言語の1つ。
高級なのは供給がおっつかないだけ。
計算機科学者たちは、haskellやcommon lispかSmalltalkぐらいしか使わないし、
真の漢たちは今でもperlを書いている
0069デフォルトの名無しさん2014/07/23(水) 01:06:16.75ID:gU9I4UPn
>>68
おっさん乙
0070デフォルトの名無しさん2014/07/23(水) 01:15:28.69ID:6bOgx7OS
2014年07月05日 アップルの新プログラミング言語Swiftと、Objective-Cの違い http://weekly.ascii.jp/elem/000/000/234/234844/

OS XやiOSの、ネイティブなアプリケーション開発言語として使われているObjecitve-C。この歴史はかなり古く、最初に開発されたのはMac本体とほぼ同時期となる30年前。

Objecitve-Cを最初に採用したのはNeXT
アップルとは何の関係もなく開発されたObjecitve-Cを最初に採用したのは、アップルを追い出されるようにして飛び出したジョブズが新たに起こしたコンピューターメーカー、NeXTだった。
NeXTでは、アプリだけでなく、アプリ実行環境、OSの一部までもObjective-Cによって記述し、当時としては最先端のオブジェクト指向のシステムを完成させた。
そのNeXTがアップルによって買収されると、そのシステム一式は、Objective-C言語とともにMacに移植され、その後iOSの中核としても利用されるようになる。

http://weekly.ascii.jp/elem/000/000/234/234845/Swift070501_cs1e1_448x.jpg
▲Objective-Cは、C言語をベースとし、そこにSmalltalk流のオブジェクト指向を付加して生まれたもの。

Objective-Cは、C言語をベースとして、その上に当時最先端だったSmalltalk風のオブジェクト指向を付加して構成されたもの。
それ以降も進化を続け、モダンな特長を徐々に取り入れてきたが、さすがに1970年代に生まれたC言語を基礎としているだけに、
完全にモダンな言語として生まれ変わることはできず、その進化にも限界が見られるようになった。
今後10年先、20年先を見据えれば、このまま使い続けるのに無理があったことは否めない。そこで登場したのがSwiftだ。

Swiftは、これまで開発されてきた多くの言語から影響を受けているとはいえ、特に何のしがらみもなく、現在考えられる最高のプログラミング環境を実現することを目指して設計された。
もちろんその実行環境については、これまでのObjective-CやOS XのCocoa、iOSのCocoa Touchと整合性を保つように考えられているのだ。
http://weekly.ascii.jp/elem/000/000/234/234846/Swift070502_cs1e1_426x.jpg

さて、MacPeople 8月号では、ここで紹介しているようにSwiftを20ページで大特集している。
Objective-Cと比較しながら徹底解説しているので、アップルの新言語が気になる人はぜひ一読してほしい。
0071デフォルトの名無しさん2014/07/23(水) 01:26:20.77ID:xa9IqUVv
Googleのソフトウエアエンジニアの給与
$119K
$250Kのプログラマーもいる。
Facebookもほぼ同じ。
Adobe 93.7K
0072デフォルトの名無しさん2014/07/23(水) 01:30:08.46ID:mkGkREWO
>>70
よくほら、ガンダムとかで、最強すぎる機体でニュータイプにしか使いこなせないってあるよね
Objective-Cですら扱うのが難しいのにさ。大事なことです。残念だけど
0073デフォルトの名無しさん2014/07/23(水) 01:51:23.92ID:x9ETGmWK
日本だとPythonでデータマイニングで1200万〜2000万円くらいかなぁ
0074デフォルトの名無しさん2014/07/23(水) 02:06:57.72ID:xa9IqUVv
>>72 何が言いたいの? Swiftが難しいとでも言いたいの?
C系のプログラマーなら直ぐに使えるだろう。
尤も、CとObjective-Cのライブラリの知識が必要にはなるが。

Objective-Cは参入障壁として働いてたが、Swiftでは障壁らしき物は無いから尻ごみしてたプログラマーがどっと参入し始めるだろう。

結果的にはObjective-Cも有る程度覚えることになるから、数年間は貴重な人材としてニーズは高いだろう。
0075デフォルトの名無しさん2014/07/23(水) 02:29:08.86ID:mkGkREWO
>>73
冗談でしょ?あんなの、300〜400万円ぐらいが妥当だって
0076デフォルトの名無しさん2014/07/23(水) 06:01:43.64ID:gWqCo8Ll
米国の人口は3.3億人で、GDPは日本の3倍。
1人当たりの売上が大きいから、給料も高い

例えば、日本の大手商社の年収は1,500万円だが、
中小商社は500万円
これも1人当たりの売上が3倍違うから

つまり、少ない人数で、大きい売上をねらえ(合理化)
0077デフォルトの名無しさん2014/07/23(水) 06:43:52.00ID:37asru4I
>>57
言うだけなら、簡単だわな (w
0078デフォルトの名無しさん2014/07/23(水) 08:36:05.14ID:x9ETGmWK
>>75
この手のポジションにはヘッドハンティングされる事でしか就けないけどね
0079デフォルトの名無しさん2014/07/23(水) 08:44:53.12ID:UT9I22cv
>>76
下請け(大数)をこき使って、元請け(少数)が搾取する、の間違いだろ。
まあ米も似たようなもんだが、こと一部のプログラマが不当な評価を受けているのは看過できん。
0080デフォルトの名無しさん2014/07/23(水) 13:23:38.12ID:mkGkREWO
ttp://breach.cc/
なん…だと…
0081デフォルトの名無しさん2014/07/23(水) 13:27:32.22ID:xa9IqUVv
>>79 正当な仕事をしてるのか? それで給与がおかしければ転職した方が良い。
0082デフォルトの名無しさん2014/07/23(水) 14:49:50.03ID:gKvkFWy8
高いところだけ言えば、GREEやDeNAは新卒で1000万円越えたりしてる
0083デフォルトの名無しさん2014/07/23(水) 15:12:34.27ID:F2A3Bmpn
>>82 それは経験者だろ。GREEの給与を見たら新卒500万。
経験者ならMax1500万まで有る。

DeNAも同じ。 隣の芝は青い。
0084デフォルトの名無しさん2014/07/23(水) 15:45:12.63ID:mkGkREWO
40〜60歳で、プログラミングなんかしないで1000万円もらえる企業へ就職した方がいい
0085デフォルトの名無しさん2014/07/23(水) 16:03:07.73ID:F2A3Bmpn
>>84 それだけの能力があれば、プログラムの世界でもそれなりに稼げるよ。

能力無いのはどの世界に行こうがそれなりの給与は当然。
0086デフォルトの名無しさん2014/07/23(水) 16:07:10.34ID:mkGkREWO
>>85
周りに1000万以上稼いでる40〜60歳の人間いないの?
0087デフォルトの名無しさん2014/07/23(水) 19:48:32.11ID:xa9IqUVv
>>86 能力無い奴が取ってる例は知らない。
0088デフォルトの名無しさん2014/07/23(水) 20:35:28.78ID:ct/sHGoz
>>70
SmalltalkとObjective-Cって似てるようでかなり距離があるよな。

似てる箇所って精々単純なMessage送信と
Methodの定義ぐらいじゃん。
ちょっと複雑になるとObjective-Cは途端に扱いづらくなる。

! Example methodsFor: 'Accessing' !
value
 ^ self
  block
   perform: #value:
   with: 0.
!!

@implements Example( Accessing )
- (id)value
{
 return
  [
   [ self block ]
    perform: @selector( "value:" )
    with: 0
  ];
}
@end
0089デフォルトの名無しさん2014/07/23(水) 21:02:19.40ID:mkGkREWO
>>87
能力って?世の中にあるのは、肩書という名の身分保証か専門職だけだよ?
0090デフォルトの名無しさん2014/07/23(水) 21:36:47.41ID:uT44zPRm
>>88
どっちもキモいけど、特に上の方のコードのキモさはヤバイな
0091デフォルトの名無しさん2014/07/23(水) 22:24:15.39ID:JxJ7Yhrp
慣れればSmalltalkの方が簡潔だしよっぽど読みやすいけどな。
MessageをそのままXMLの属性に変換する処理とか凄え直感的。

| document xml linerLayout button |

xml :=
 XML.Tag
  name: #xml
  format: XML.Tag format directive.
linerLayout :=
 XML.Tag
  name: #LinerLayout
  format: XML.Tag format node.
button :=
 XML.Tag
  name: #Button
  format: XML.Tag format node.
document :=
{
 xml with version: 1.0 encoding: #'utf-8'.
match_parent
 ( linerLayout with layoutWidth: #wrapContent layoutHeight: #wrapContent ) has:
 {
  button text: 'OK'.
 }
}
0092デフォルトの名無しさん2014/07/23(水) 22:44:15.64ID:JxJ7Yhrp
ゴミが入ってたんで書き直し

| document xml linerLayout button |

xml :=
 XML.Tag
  name: #xml
  format: XML.Tag format directive.
linerLayout :=
 XML.Tag
  name: #LinerLayout
  format: XML.Tag format node.
button :=
 XML.Tag
  name: #Button
  format: XML.Tag format node.
document :=
{
 xml with version: 1.0 encoding: #'utf-8'.
 ( linerLayout with layoutWidth: #wrapContent layoutHeight: #wrapContent ) has:
 {
  button text: 'OK'.
 }
}
0093デフォルトの名無しさん2014/07/23(水) 23:17:07.80ID:EONIR3QI
>>88,91
おそらく >>90 は、>>88 の冒頭にある感嘆符("!")で囲まれた部分が
コメントであり、しかもそれがブラウザがテキスト保存時に
自動挿入したものだという事を知らないんだと思う

知らなきゃ、キモいという感想も自然ではないかと....
0094デフォルトの名無しさん2014/07/23(水) 23:52:59.97ID:VCqAK7ht
>>93
正確には感嘆符はChank形式で保存したText Fileのみに必要で、
Class Browserは挿入しないんだけどね。
Class Browserはこんな風にMethodを追加するClassに
#compile:を送ってMethodを作ってる。

Example compile:
'
value
 ^ self
  block
   perform: #value:
   with: 0.
'.

もうひとつ言うと感嘆符はCommentの区切りじゃなくて、
Contextの切り替えで、
Example methodsFor:もちゃんとしたMessage式だったりする。
0095デフォルトの名無しさん2014/07/24(木) 00:56:27.92ID:dyntnBYy
Chankてもしかしてchunkのこと?
0096デフォルトの名無しさん2014/07/24(木) 08:10:51.67ID:JP3xDxVc
>>95
せやで
0097デフォルトの名無しさん2014/07/24(木) 08:27:55.92ID:jOl7q6Ci
Smalltalkerってアホなの?
0098デフォルトの名無しさん2014/07/24(木) 13:07:57.22ID:qN7cZzHR
>>88のObjective-Cの例を間違えてたので一応訂正

@implementation Example( Accessing )
- (id)value
{
 return
  [
   [ self block ]
    perform: @selector( value: )
    with: 0
  ];
}
@end
0099デフォルトの名無しさん2014/07/25(金) 11:14:57.08ID:3IqFdEs5
アメリカとの年収云々の差の前に
能力の差だろ・・・

プログラマの地位が確立されてるかどうかは
他業界と比べて、プログラマになる奴らの能力値が高いかどうか

年収の差を語る前に低いんですよ
能力値が。
0100デフォルトの名無しさん2014/07/25(金) 18:05:32.87ID:7iMP+P1B
年収と能力は関係ない。年収は会社の階層で決まる
仕事は1社間に入るたびに、3割抜かれるから、
2次下請け以下の階層は辛い
ハローワークに行けば、1次下請けまでに転職するように言われる

仕事は能力に関係なく、話を持ちかけた方と、
それに応じた方で、利益の分け前は、7:3となる
積極的か受け身かで決まる
日本人の経営者で、これをわかっている人は少ない

日本人は正解を求めるから、主導権を取れなくて、利益が少ない
外人は自分が有利になるように、すぐにルールを変える
何かを求められて出来なければ、すぐに話をそらして、
自分が有利な土俵に持ち込もうとする

ルールを守らず、前提条件自体を変えてしまう
つまり、そらす力が強い
でも、失敗するとすぐに撤退するから、最初から信用できない

外人は常に、自分が有利になるように、
主導権の取り合いばかりしている

Javaを買収したり、Swiftを作ったり、
MSはAndroidのスマホを作ったり。笑
相手を出し抜こうとする思いが強すぎる
0101デフォルトの名無しさん2014/07/25(金) 19:12:20.60ID:Q/F2+aKF
ボラクルと真っ黒ソフトの悪口は


もっとやれ
0102デフォルトの名無しさん2014/07/25(金) 19:31:36.53ID:J9MPRaj1
>>100 一番下の段落は企業なら当然の事。
それが理解出来なければ世捨て人にでもなった方が良い。
0103デフォルトの名無しさん2014/07/25(金) 20:53:32.57ID:T3w4l3wJ
>>100
能力があれば、年収の高い企業に入るかどうかを自分で選べるよ
低脳には選択肢なんて無いけど
0104デフォルトの名無しさん2014/07/25(金) 22:19:58.80ID:JNKb9OcC
>>100
n次請けとか以前に、SIer自体がウンコなんだよなぁ...
0105デフォルトの名無しさん2014/07/26(土) 11:31:22.72ID:aO8EXKyJ
PHPがいい。
他のスクリプト言語は公式モジュールが少ないか無い。
拡張モジュールは公式配布にどんどん取り込むのが優れてると思う。
バージョン違いで動作しないとか、インストールが不便とかは良くない。
多くの言語はテキストのスクリプトで拡張を配布してたりする。
0106デフォルトの名無しさん2014/07/26(土) 12:38:50.17ID:0b/aanrH
そういうのは諍いの種になるんだよなぁ
0107デフォルトの名無しさん2014/07/26(土) 18:51:47.63ID:y8Gk3QAa
起業家ゴッコして、熱り冷まして4次請けとかにつけばいい
0108デフォルトの名無しさん2014/07/26(土) 19:12:18.04ID:x2MBFUHb
node.js触ってあらかたの仕様、コールバックの書き方、使えそうなライブラリ等をなんとなく理解して思った
これGoでいいじゃんと
0109デフォルトの名無しさん2014/07/26(土) 19:14:39.09ID:70DG+pa0
>>108 なんで逆に思わなかった?
Go いら無いじゃん。
0110デフォルトの名無しさん2014/07/26(土) 19:35:34.30ID:SMow+4nR
>>109
流石にnode.jsよりはGoの方がマトモだよ
0111デフォルトの名無しさん2014/07/26(土) 20:06:24.90ID:Rn5qtPnO
TypeScriptはいいのに、MSアレルギーな人たちが大物も含めて
node.jsをディスり始めた。
0112デフォルトの名無しさん2014/07/26(土) 20:07:19.43ID:x2MBFUHb
・Goの方が枯れている、Nodeはついてくのちょっとしんどい
・yieldでごまかそうともコールバックは書いててやっぱ苦痛
・パフォーマンス

ありきたりだけどこの辺かなぁ
もうちょっと遊んでみるか
0113デフォルトの名無しさん2014/07/26(土) 20:43:31.86ID:Rn5qtPnO
MSがJavascriptを奪ってしまう様相だからね。
ASP.NETが数年後TypeScriptが主言語になる。
Win9のUIもTypeScriptで開発することになるでしょ。
0114デフォルトの名無しさん2014/07/26(土) 21:33:05.87ID:y8Gk3QAa
angular.jsつかうよ。今だって、knockoutよりangular.js使われるぐらい
0115デフォルトの名無しさん2014/07/26(土) 23:52:17.95ID:7tW4RhS5
TypeScriptは良いが、いつかはECMAScript6に落ち着くだろう。
ブラウザ言語が特定のベンダー言語に固定されることはない。
0116デフォルトの名無しさん2014/07/26(土) 23:54:10.33ID:3rBT0efM
>>112
goも良いが型安全を気にしない規模ならSmalltalkbフ方が手っ取り荘≠「な。
0117デャtォルトの名無bオさん2014/07/27(日) 00:57:43.91ID:XvMAOXox
SmalltalkなんてウンコがGoやNode.jsと張り合うなんて無理だから
お前のライバルはTclだから
0118デフォルトの名無しさん2014/07/27(日) 02:14:38.41ID:DcRvt70C
そもそも、FirefoxOSやChromeOSをSmalltalkにしてしまえば良かったはずなのに、
既にjavascriptが居たせいで普及できなかった
この世界で重要なのは既得権利を如何に守るかってことだけ
0119デフォルトの名無しさん2014/07/27(日) 14:03:35.08ID:Cs+keeN7
FirefoxOSは知らんが、ChromeOSと
AndroidじゃSmalltalkが動く。
iOSに関しては、技術上動くが、AppStoreに入れようとすると
Appleに蹴られる。

因みにAppleのFellowであるAlan kayが
Smalltalkの派生であるScratchをiOSに載せようとしたら
ハゲが蹴ったらしい。
端末の使用者がSourceを書いて
自由に使える端末は
意地でも作っちゃいけないんだと。
0120デフォルトの名無しさん2014/07/28(月) 11:24:20.26ID:UuHztnC8
半分ぐらい 金の話だね。
0121デフォルトの名無しさん2014/07/28(月) 11:35:31.17ID:zl94e36f
>>115 Dart が良からぬ事をたくらんでる。
0122デフォルトの名無しさん2014/07/29(火) 00:03:48.75ID:uBwVbvbs
Smalltalk()
0123デフォルトの名無しさん2014/07/29(火) 00:30:44.81ID:amKy8C2I
いまSmalltalkが地味に流行っとるな。
0124デフォルトの名無しさん2014/07/29(火) 01:45:03.00ID:Qxf0Td3R
>>120
ジョブズは市場を守った僕らの味方だよ
0125デフォルトの名無しさん2014/07/29(火) 01:49:06.13ID:Qxf0Td3R
dart,golang,node.jsなんてヒッピーしか使わないだろ?
マトモな大人たちは、C, Java, .net framework, COBOL
0126デフォルトの名無しさん2014/07/29(火) 01:59:20.66ID:yYRcHyEO
>>125 COBOL なんて寝たきり老人しか使わ無いだろ。 人口が少ないから稼ぎにはなるみたいだが。
0127デフォルトの名無しさん2014/07/29(火) 06:35:37.89ID:tfmMHDWA
>>120
残りの半分は、野蛮な言語にclassと型安全を与えて近代化してやろうって話だろ
こんな古臭い話を続けてなんで飽きないんだろうな
0128デフォルトの名無しさん2014/07/29(火) 07:23:35.79ID:0DNkJGU2
なにいってんだこいつ
0129デフォルトの名無しさん2014/07/29(火) 13:55:27.10ID:Qxf0Td3R
>>126
今でも銀行での給与の計算はCOBOLで行われてるはずだけど?
Webやスマホから入ったヤツらって白痴だよね。本当に。
0130デフォルトの名無しさん2014/07/29(火) 13:57:22.91ID:M1sSUXRJ
COBOLネタは隔離スレがあるんだからそっちでやれよ。
0131デフォルトの名無しさん2014/07/29(火) 18:32:28.99ID:Qxf0Td3R
派遣よりも、正社員で病院か介護施設の楽な仕事に就いた方が、やりたいことはできる
0132デフォルトの名無しさん2014/07/29(火) 18:50:59.44ID:rBtE9P3L
それ楽じゃない仕事じゃないですかー
0133デフォルトの名無しさん2014/07/29(火) 18:52:08.57ID:s2SUzqQF
>>132 楽に暮らしたければ公園で寝てたら?
0134デフォルトの名無しさん2014/07/29(火) 20:06:24.83ID:DxcW8iFR
Go や Node.js は、Ruby や Rails よりも先に滅びる運命なのかもしれない....


・【翻訳】Go言語がダメな理由 | POSTD
  http://postd.cc/why-go-is-not-good/
 Goは何も新しいことをしない。
 Goは全てにおいてうまく設計されているとは言えない。
 Goは他のプログラミング言語から退化したものである。


・Farewell Node.js (翻訳) - from scratch
  http://yosuke-furukawa.hatenablog.com/entry/2014/07/06/094617
 visionmedia、Node.js辞めるってよ
0135デフォルトの名無しさん2014/07/29(火) 21:26:15.75ID:Qxf0Td3R
>>132
求人票をよく見ると、薄給で、マターリしたものはある
景気が良い今がチャンス
0136デフォルトの名無しさん2014/07/29(火) 21:33:09.18ID:YLnrDWwp
元請コボラーは超絶ホワイトだよ
0137デフォルトの名無しさん2014/07/29(火) 21:49:06.40ID:Qxf0Td3R
何になりたいか、仕事のやりがいよりも、自社の権利と検閲を守ることが何より大事
世界ってのは職務と実績で出来てるんだ
1つの大手で順調にキャリアアップしていけば、40〜60歳で駐車場の整理する必要もないからね
IT業界に居た人間が、未経験で、どの他業界に入れると思う?
椅子に座ってるだけで500万円も稼げるなら、そっちを選んだ方がいいんだ
0138デフォルトの名無しさん2014/07/29(火) 22:29:31.91ID:v70pNYm/
まるで世界のすべてが何者かの職務で創造されたみたいな言い方だ

実際には誰も何もしてないのに壊れたり形成されたりするものは多い
0139デフォルトの名無しさん2014/07/30(水) 03:28:30.42ID:T03rYC/5
http://www.buzzword.jp/img/face10.png
0140デフォルトの名無しさん2014/07/30(水) 04:36:16.90ID:aL4vSCTj
はっ倒したくなる
0141デフォルトの名無しさん2014/07/30(水) 08:36:57.73ID:fBx3PM3h
Python糞過ぎワロタ

ファイルのエンコードを宣言しないと日本語が文字化け

文字列には通常の文字列とユニコード文字列がある

割り算の結果がfloat型にならない

新スタイルクラスと旧スタイルクラスがある

__new__と__init__という、どちらともコンストラクタなんじゃないの?と見える関数が2つある

メソッドのオーバーロードができない

for文にindexがない

http://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
0142デフォルトの名無しさん2014/07/30(水) 09:16:13.25ID:TeLih1jk
全然問題じゃないイチャモンか、Python3で解決されてるものばかりでワロタ
0143デフォルトの名無しさん2014/07/30(水) 11:30:17.18ID:OuXlkILC
py3kって使われてるの?全部、node.jsに侵食されたんだと思ってた
0144デフォルトの名無しさん2014/07/30(水) 11:53:42.22ID:rjbKabKz
python使ってた人みんなgolangに移ったから3k使ってる人いないよ
0145デフォルトの名無しさん2014/07/30(水) 12:28:58.18ID:RAFoABj3
普通に使ってるよ
0146デフォルトの名無しさん2014/07/30(水) 12:43:55.12ID:OuXlkILC
IT3k
0147デフォルトの名無しさん2014/07/30(水) 12:49:59.75ID:eXMcua25
Pythonは2と3の二種類あるけどECMAScriptは何種類あるの?
0148デフォルトの名無しさん2014/07/30(水) 14:49:34.77ID:+YSZmqYf
実装の数だけあるよ
APIがバラバラだから互換性は基本的に無い
0149デフォルトの名無しさん2014/07/30(水) 16:51:46.05ID:mLoOPXGz
>>147 気にすんな、ただECMAScriptは今第5版、殆どのブラウザはこれ準拠になりつつある。
6がぼちぼち実装され始めて来てる。
7も話題に上がってる。
0150デフォルトの名無しさん2014/07/30(水) 20:40:58.42ID:JOmnGzMa
node.jsが速いといってもスクリプト言語レベル
アセンブラレベルで最適化されたコードを呼び出すnumpy/scipyに比べたら問題外に遅くて笑ったわ
所詮Webドカタ用のオモチャだな
0151デフォルトの名無しさん2014/07/30(水) 21:00:33.88ID:cG7xMHTs
全く違う用途で比較してバカにするバカ
0152デフォルトの名無しさん2014/07/30(水) 21:06:01.53ID:JOmnGzMa
>>151
もちろん>>143-144に向かって言ってるんだよね?
0153デフォルトの名無しさん2014/07/31(木) 20:04:39.73ID:I1pqUuFI
Ruby糞過ぎワロタ

2.0までファイルのエンコードを宣言しないと日本語が文字化け

文字列には通常の文字列とシンボルがある

割り算の結果がfloat型にならない

クラスとモジュールがある

lambdaと->とProcという、どれもラムダなんじゃないの?と見えるシンタックスが3つある

メソッドのオーバーロードができない

for文にindexがない
0154デフォルトの名無しさん2014/07/31(木) 21:53:07.65ID:I9wcB7pD
>>153
>文字列には通常の文字列とシンボルがある

そもそもシンボルは文字列ではない
試験的に継承関係にあったこともあるが
やはり別物だから、問題が大きかった


>for文にindexがない
times
each_with_index
範囲式

お好きなものをどうぞ
0155デフォルトの名無しさん2014/07/31(木) 23:33:19.10ID:I1pqUuFI
Rubyのシンボルは実務上は省メモリな文字列だろ
他のプログラム言語なら文字列を使うような場面でも、Rubyの場合は、画面に文言として表示する場合を除いて、
基本的にシンボルが使われる傾向にあるな

Rubyの良いところのひとつでもあるのだが、その代償でto_symをいちいち使ったりHashWithIndifferentAccessみたいなものを生み出す理由にもなる
ある意味JavaScriptのような言語にあるべきだった機能だ
0156デフォルトの名無しさん2014/07/31(木) 23:47:27.69ID:qtlw7XO1
>>153
メソッドオーバーロードはメソッド定義時に引数の型が決まっていない動的型付け言語では使いにくい。
Rubyだけの問題ではない。

てか、153は批判する気があるのだろうか?釣られている気がしてならない
0157デフォルトの名無しさん2014/08/01(金) 00:01:17.19ID:CG17PR/g
ネタをネタと見抜けないやつがまだいるのか
0158デフォルトの名無しさん2014/08/01(金) 00:10:57.11ID:eMSkGEwW
>>157
なんか俺はすべてお見通しだよーって上から目線だけど、そんなこと言う暇あったら、反証したら?
口だけの人は要りませーん
0159デフォルトの名無しさん2014/08/01(金) 00:15:58.59ID:3wJnlar9
>>158
つまり >>141 の Python 批判に対して反証が一つもなかったってことは、
>>141 の指摘が適切すぎてグゥの音(ね)も出なかったってことなんですね


たいへん、よくわかりました
0160デフォルトの名無しさん2014/08/01(金) 00:17:14.47ID:7+EywXB6
直後にPython3で解決されてるって反証されてたような……?
0161デフォルトの名無しさん2014/08/01(金) 00:18:29.05ID:eMSkGEwW
>>159
すまんそのレスは見てなかった
Pythonは使っていないから知らないし、どうでもいい
0162デフォルトの名無しさん2014/08/01(金) 01:11:34.34ID:VllCqMBd
>>155
to_symが面倒ってどんな感じで面倒なの?

SmalltalkもSymbolが存在するけど、
こっちはkeywordに分割できるから面白い。

#one:tow:three keywords do:
[ :each |
 Transcript
  show: each printString;
  cr.
].

keywordに分割できることを応用してMessageを
連想配列っぽく扱えるとこも面白い。

"#one:tow:threeと1 2 3をmessageに格納"
message := MessageCatcher
 new
  one: 1
  two: 2
  three: 3.

"keywordと値の組を表示する。"
1 to: message selectors size do:
[ :each |
 Transcript
  show: ( message selectors at: each ) asString;
  show: ( message arguments at: each ) asString;
  cr.
].
 
0163デフォルトの名無しさん2014/08/01(金) 04:52:13.77ID:sCXaUzF7
ruby厨とpython厨って仲悪いよね
傍から見たらどっちもそんな変わらんよ
0164デフォルトの名無しさん2014/08/01(金) 06:31:16.22ID:vlQGaZzW
>>155
RubyのシンボルでなくてRailsのシンボルの話ならそう
確かにRailsはシンボルを文字列とごっちゃにしてる、でもそれはRailsに限った話

本来Rubyのシンボルはシンボルであって文字列ではないよ
頻繁にto_symってのは、要するに即値として扱えないってことだろ
eval乱用に限りなく近い行為だと思う
0165デフォルトの名無しさん2014/08/01(金) 08:08:33.24ID:7+EywXB6
書いてて一番楽しいのはCoffeeScript
0166デフォルトの名無しさん2014/08/01(金) 08:13:17.91ID:J39fVXGB
Coffeeは省略のルールに一貫性がなくてすごくイライラするわ
この書き方がダメなら前のこれも直しときたいな…がとても多い
0167デフォルトの名無しさん2014/08/01(金) 20:37:40.44ID:TiTL2nua
最も一貫性に優れるのはCoffeeScript

http://www.infoq.com/jp/news/2013/04/Language-Expressiveness
0168デフォルトの名無しさん2014/08/01(金) 23:39:36.14ID:1EdcRTNA
coffeeは言語そのものをラッパーしたイメージ
使ったことないから使いやすいかはわからないけど
0169デフォルトの名無しさん2014/08/02(土) 00:29:18.44ID:/wwVen7z
CoffeeScriptはデバッグするためにわざわざreturn nullと関数の最後に書かないといけないんだぜ

CoffeeScriptやBackboneは開発者のオナニー
0170デフォルトの名無しさん2014/08/02(土) 00:44:56.20ID:wGpqnjMj
>>169
へー、なんでデバッグするのにreturn nullが必要なん?
0171デフォルトの名無しさん2014/08/02(土) 07:23:51.81ID:kHizudTX
CoffeeScriptはNode.jsやってるやつみんな嫌ってるよ
0172デフォルトの名無しさん2014/08/02(土) 07:30:52.90ID:fNoV+ZBu
もともと無茶苦茶になりがちなRuby系構文にオフサイドルールとか狂気の沙汰
0173デフォルトの名無しさん2014/08/02(土) 13:14:24.52ID:/wwVen7z
>>170
関数がreturnされるとその関数のブレイクポイントで止まらないから
その下に明示的にreturn nullと書く必要がある
0174デフォルトの名無しさん2014/08/02(土) 13:30:30.76ID:wGpqnjMj
>>173
良く分からんが、それは言語じゃなくて特定のデバッガ固有の問題じゃないの?
C#におけるVSみたいな定番の開発環境があって、そのデバッガでの話?
0175デフォルトの名無しさん2014/08/02(土) 13:36:43.49ID:mNHtzbrp
>>117
TclとTkは疎結合っぽくて良いな
統合環境を作りたがる言語とは違う
0176デフォルトの名無しさん2014/08/02(土) 13:42:54.64ID:UBZX0AEK
>>174
自分もよく知らないから推測になるけど、CoffeeScript のコードを
標準的な JavaScript デバッガを使ってデバッグしている話だと思う

JavaScript は関数リターンにreturn文が必須だから
JavaScript デバッガではreturn文にブレークポイントを設定できるけど、
CoffeeScript ではreturn文を省略できるから同じ事は無理だ、って話
CoffeeScript 向けに専用設計されたデバッガを使うしかない(あるのかな?)
0177デフォルトの名無しさん2014/08/02(土) 16:10:14.35ID:HM7CQAr9
AltJSも加工食品、外食産業も、そうなのだけれど、
レイヤーが増える毎に異物が混入されて、その被害は大きなものとなるんだ
0178デフォルトの名無しさん2014/08/02(土) 16:15:06.21ID:FIwNTFpf
>>177
ブラウザでスクリプト動かしてる時点で
多重のレイヤーが入ってるのに今更すぎるだろ
レイヤーが嫌なら16進数で機械語書いてろよ
0179デフォルトの名無しさん2014/08/02(土) 16:34:23.72ID:HM7CQAr9
ブラウザがJVMや.netより優れている点は、ユーザーが多いことだよ
だから、なるべく早い段階で緑色になった鶏肉を発見できる
0180デフォルトの名無しさん2014/08/02(土) 17:23:39.29ID:HM7CQAr9
githubのatomにcoffee scriptが使われるのは、きっと任侠的な理由だよね
僕らはRubyとPythonが切り開いた未来を忘れちゃダメなんだ
0181デフォルトの名無しさん2014/08/02(土) 21:12:40.01ID:WcIVQvIh
foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'

他人が淹れたコーヒーは飲めそうにないや
0182デフォルトの名無しさん2014/08/03(日) 01:03:18.92ID:WfLo4fau
今後全てのプログラムはLispとHaskellでかかれるって言ってる人もいるくらいだから関数型言語を詳しくなった方が良さそうだね。

あとJavaScriptはGoogleのv8のお陰で地位を確立したんだろ?node.jsもそうなら
Coffeeなんとかなんて言わずにgoogleのDartの方が良さそうだけど。
Coffeeスクリプトとかコーヒー豆を紡ぐ黒人たち、安月給で働く奴隷たちをこの言語でコーディングしてるIT土方とを重ね合わせてるのか?
すんごい皮肉だ思う。

そもそも、コーヒーにあまり良いイメージがないのよね。
0183デフォルトの名無しさん2014/08/03(日) 01:16:11.21ID:Kg8uVIVR
>>182
釣り?
Java→コーヒー→CoffeeScript
JSはNetscapeで作られ、IEに搭載されブラウザ言語の地位確立
0184デフォルトの名無しさん2014/08/03(日) 01:26:53.84ID:HYKt9i+3
ActiveXとかJavascriptとか、セキュリティ絡みで問題視されて嫌われてたのにね
JavaScriptの普及はGoogleによるAjaxアプリと、Rails以降の一連の奇跡によるものだよ
皮肉なことに、Perl,Python,Rubyの闘いで漁夫の利を獲たカタチ
もう、javascriptで良いじゃんね。これが人類の獲た悟りだよ
0185デフォルトの名無しさん2014/08/03(日) 01:34:14.92ID:Kg8uVIVR
>>184
v8関係ねえじゃねえか
あと好き嫌い!=普及だから。NS、IEの頃からJSは普及してたっつーの
0186デフォルトの名無しさん2014/08/03(日) 01:36:12.98ID:HYKt9i+3
>>185
普及してません。JavaScript切れって言われて時代だし
0187デフォルトの名無しさん2014/08/03(日) 01:38:50.65ID:HYKt9i+3
SSJSって、SpiderMonkeyやRhinoみたいな実装あったんだけど、
実際に普及したのはv8を搭載したnode.jsがはじめて
パフォーマンスがRubyやPythonと比べて、特別に良いものでもなかったけど、
v8になってから、それらの比でなくなった印象
0188デフォルトの名無しさん2014/08/03(日) 01:42:07.18ID:Kg8uVIVR
>>186
てめえの周りだけだろそりゃ。
そもそも実質どのブラウザ上で動くプログラミング言語として唯一の存在だから、ブラウザの普及=JSの普及なんだよ。
0189デフォルトの名無しさん2014/08/03(日) 01:43:11.18ID:Kg8uVIVR
>>187
SSJSなんて今でも対して普及してねえよ。
0190デフォルトの名無しさん2014/08/03(日) 01:44:45.29ID:HYKt9i+3
>>188
違うよ。取り敢えずブラウザに仕方なく載ってただけで、蛇足みたいな状態。
そして、M$の方は、VBSを動かしたかったんじゃない
0191デフォルトの名無しさん2014/08/03(日) 01:45:22.47ID:HYKt9i+3
>>189
そう思うなら、そうなんだろ。お前の中では
0192デフォルトの名無しさん2014/08/03(日) 01:56:59.94ID:5GB5sDOv
>>190
めんどくせえなお前。これ嫁
http://ja.m.wikipedia.org/wiki/JavaScript

1.JSがIE搭載される。この時点ではインタラクティブな動作はJSぐらい
2.その後、JavaAppletやActiveXなどでWebの高機能化が始まるが、セキュリティの問題でポシャる
3.サンドボックスモデルのFlashが登場。RIA化が進む
4.Google Mapなど、JSでのRIAが出始める

JSにとっての契機は1.と4.だ。それぞれJSの普及に繋がっている。
JSによるRIAはてめえの言うとおりGoogleMap辺りからだが、JSの普及自体は最初っからされてたんだよ。
仕方ないとか関係ねえ
0193デフォルトの名無しさん2014/08/03(日) 02:01:55.01ID:g3w/WXUa
ソースがwikipediaとか恥ずかしくないのかよもしもしくんよー
0194デフォルトの名無しさん2014/08/03(日) 02:02:48.60ID:5GB5sDOv
>>191
違うよ。そもそもnode.jsはイベントドリブンで、用途は限られる。node.js以外はそもそも名前もまともに知られていないのでは?
また、ブラウザ上の言語と異なり、サーバーサイドは多種多様な言語(環境)が存在する。
Java,PHP,Perl,Ruby,Python,C#...etc

JavaScript(SS)なんて求人みたことあるかあ?
0195デフォルトの名無しさん2014/08/03(日) 02:05:27.45ID:5GB5sDOv
>>193
JavaAPIのJavaDocに記載されているくらいには信用されているよ。
そもそも、ソースだけでなく自分でも説明したわけだが?
君はソースも出さないの?
0196デフォルトの名無しさん2014/08/03(日) 02:24:45.62ID:HYKt9i+3
>>194
普通の人はCommonJSの実装ぐらい一通り調べるから
0197デフォルトの名無しさん2014/08/03(日) 02:26:25.52ID:HYKt9i+3
>>194
求人が重要なら、C#かJavaでいいでしょ
職場環境で考えたらnode.js一択
0198デフォルトの名無しさん2014/08/03(日) 02:41:22.76ID:Kg8uVIVR
>>197
お前バカだろ。
なんでCommonJSの話になるんだよ。(普通云々もどうしてそうなるんだ)
普及の話で、求人のこと話したら、職場環境とか言い出すし。
0199デフォルトの名無しさん2014/08/03(日) 02:55:39.90ID:c2e7+B8N
Google Mapって初期はIE専用だったの?

FxってまだXML_HTTP_REQUESTできなかったよな
0200デフォルトの名無しさん2014/08/03(日) 03:07:21.08ID:Kg8uVIVR
>>199
あったみたいよ。一番最後ら変に書いてある
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest
0201デフォルトの名無しさん2014/08/03(日) 03:41:50.46ID:g3w/WXUa
うわあこれはいたい
0202デフォルトの名無しさん2014/08/03(日) 04:56:30.13ID:fTzQNpqj
反証できない人間は他人に反対意見を言っちゃダメ
癖になるよ
0203デフォルトの名無しさん2014/08/03(日) 11:38:10.32ID:gUp0rt3Y
Node.jsはごく限定された用途でしか使い道がなく、
その使い道においてはErlangに遠く及ばない
0204デフォルトの名無しさん2014/08/03(日) 11:40:27.84ID:XJy/K5fZ
お前の中ではな
0205デフォルトの名無しさん2014/08/03(日) 11:41:33.53ID:gUp0rt3Y
あ、ごめん間違えてた
JSしか使えない低能でもワンチャンあるってメリットがあった
0206デフォルトの名無しさん2014/08/03(日) 21:12:21.83ID:WfLo4fau
>>192
バカなんだなほんとうに。
そんなの誰でも知ってるわ。
ウィキペディアに書いてることをドヤ顔でいうやつ恥ずかしい。

んじゃなくて、
おれが言いたかったのはJSはかつて人気がなくパフォーマンスも悪く、早くブラウザから切り離せだったのが
Googleのv8で流れが変わったんよ。

Javaのロゴがコーヒーなあたりでその辺も推測できてたけど。
JavaなりJavascriptなり、CoffeeScript なりコーヒー豆を連想させる辺りが
豆を収穫する人達、底辺が使う言語って雰囲気がある。

格調がないんだよな、拡張はあったとしても。
0207デフォルトの名無しさん2014/08/03(日) 21:19:52.07ID:Kg8uVIVR
>>206
あーもういいよそれで。
差別したり、寒いダジャレ言うやつと話しても何の意味もないし。
0208デフォルトの名無しさん2014/08/04(月) 04:17:51.68ID:fabHp71f
>>206
>JavaなりJavascriptなり、CoffeeScript なりコーヒー豆を連想させる辺りが
>豆を収穫する人達、底辺が使う言語って雰囲気がある。

軽い精神疾患だろこの人
0209デフォルトの名無しさん2014/08/04(月) 14:06:08.34ID:OwSuwvA7
自己紹介か?
0210デフォルトの名無しさん2014/08/04(月) 18:34:19.21ID:IrSTfOQC
>>203
Rubyとは比較にならないほど、アプリケーションが作られてるよ
WebサイトでもWebアプリでもない、「デスクトップアプリ」だよ
0211デフォルトの名無しさん2014/08/04(月) 18:45:28.93ID:IrSTfOQC
>>198
普通の人はnode.jsを検討するために、別のCommonJSの実装について調べるから。
何となく流行ってるって理由で飛びつくヤツはタダのミーハー。

何でって、node.jsを使わない企業は、Javaやc#で開発するから。
こうした会社はOSSの開発ツールの使用を様々な理由で制限する。
だから、node.jsを使う企業の方が開発者にとって快適なの。
0212デフォルトの名無しさん2014/08/04(月) 21:05:27.60ID:hMTJU4GJ
>>210
メジャーなデスクトップアプリを可能な限り挙げてみてよ
0213デフォルトの名無しさん2014/08/04(月) 22:09:00.70ID:IrSTfOQC
Atom, brackets,Nide
0214デフォルトの名無しさん2014/08/04(月) 22:16:54.77ID:e+dZtPD6
たった3つの上に Atom を除けばクソマイナーじゃん
マジでアホなの?
0215デフォルトの名無しさん2014/08/04(月) 22:27:19.18ID:IrSTfOQC
たった3つ挙げただけだけど、Rubyなんかより比較にならないぐらい多いよ
というか、Ruby製のデスクトップアプリって何かあるの?
それと、bracketsってadobe製だし、atomよりメジャーだよ
0216デフォルトの名無しさん2014/08/04(月) 22:47:49.90ID:u+J9LOc+
>>215
なぜRubyを引き合いに出すのか分からんが、Rubyはデスクトップアプリの実績はあまりないな。
だが、Rubyのライバル?のPythonは結構多いぞ
http://ja.m.wikipedia.org/wiki/Pythonを使っている製品あるいはソフトウェアの一覧

まあ、今後はWebベースの技術が脚光を浴びているし、逆転するかもな。
0217デフォルトの名無しさん2014/08/04(月) 22:56:08.57ID:gDpcXLgO
wikipedia.orgばかり貼ってはずかしいとおもわないのかこの知障もしもしは
0218デフォルトの名無しさん2014/08/04(月) 22:59:05.98ID:IrSTfOQC
pythonの没落なんて当然じゃん
golang, node.jsに挟まれて、どちらから見てもメリットがない
0219デフォルトの名無しさん2014/08/04(月) 23:01:25.92ID:u+J9LOc+
ソース元の媒体が何かではなく、そこに書かれていることが正しいかどうかが重要では?とマジレス
まあ今回は裏とってないけど、そこに書いてることで間違いある?
0220デフォルトの名無しさん2014/08/04(月) 23:01:52.46ID:IrSTfOQC
gnomeのアプリケーション開発の推奨言語はpythonからjavascriptに変わったからね
py-qtの開発が、まだ続いてると思う?本当に一瞬の出来事だったよ
0221デフォルトの名無しさん2014/08/04(月) 23:07:00.97ID:IrSTfOQC
>>216
今後だっておwwwwww
2004年からずっとWebベースで、もう下火wwwwww
0222デフォルトの名無しさん2014/08/04(月) 23:24:11.33ID:u+J9LOc+
RubyもPythonもこき下ろすのね。
node.jsのデスクトップアプリ多いと言ってたから、Pythonも結構あると返したら、
やれ落ち目だ、やれソースがWikipediaだと関係ないことで煽ってくるし。基本的に自分が好きな環境以外認められないんだろうな
夏休みだなあ
0223デフォルトの名無しさん2014/08/04(月) 23:28:56.07ID:JQ2Q6fyp
なんでわざわざJSでアプリ開発なんてすんだろ
JSで開発していると、地味にfunctionという単語が長いのが気になる
Rubyのinitializeもそうだけど、動的言語に長すぎる予約語いれんなよ
0224デフォルトの名無しさん2014/08/04(月) 23:35:19.69ID:LuHqaGTI
>>223
そこで省略と言えばPerlですよ。

もしくはLispのマクロですよ(適当)
0225デフォルトの名無しさん2014/08/04(月) 23:37:32.36ID:LuHqaGTI
>>220
gnome自体、3になってから、結構迷走してるんだけどね…。
いや3になる前から、その予兆はあったな。
0226デフォルトの名無しさん2014/08/04(月) 23:38:12.26ID:u+J9LOc+
>>223
フロントサイドエンジニアorデザイナーが本格的にプログラミングするにあたって、JSが都合がいいのだと思う。
俺もフロント寄り人間で、JSはシンプルで柔軟で好きだし、ほかの箇所もJSで書けたらいいと思う。

functionは長くて面倒なのは同意。またそれ以上に、return句と中括弧が必須なのもめんどい。
が、そこはECMAScript6でラムダ式っぽい表記(a->a+1)が導入されれば解決するぜ。
0227デフォルトの名無しさん2014/08/04(月) 23:40:53.26ID:IrSTfOQC
>>222
RubyやPythonって、もう、これ以上は発展しないから
browser, スマホに標準搭載できない時点で決着が付いていた

>>223
開発者にとっての負担が軽減されるから。JSのボイラープレートだけで済む
Javaやc++のポリモーフィズムなんてコードが追いにくいだけ
0228デフォルトの名無しさん2014/08/04(月) 23:41:56.90ID:AfY9nOzo
>>218
https://www.google.co.jp/trends/explore#q=python%20programming%2C%20golang%20programming%2C%20node.js%20programming&;cmpt=q
0229デフォルトの名無しさん2014/08/04(月) 23:44:19.43ID:e+dZtPD6
>>227
別にRuby, PythonからJavascriptにコンパイルできれば済む話だよ
ていうか、スマホはJavaかObjective-Cがメインで
Javascriptはやっつけゴミアプリ専用じゃん
0230デフォルトの名無しさん2014/08/04(月) 23:45:33.69ID:dICHKcL6
実行時に翻訳できる言語(動的言語)か
実行前しか翻訳できない言語(静的言語)に関わらず、
よく使うものに単語が必要ってのは面倒だな。

0 .equals( 1 ).ifTrue
(
 function()
 {
 }
);

上より下の方が断然読みやすい。

0 = 1 ifTrue:
[
].

但し識別子に訳のわからん略語使われたりすんのも勘弁。
0231デフォルトの名無しさん2014/08/04(月) 23:45:40.97ID:IrSTfOQC
>>229
ちょっと業務アプリ作ってくれって言われたときに、AndroidとiOSの技術者揃えるの?バカじゃね?
0232デフォルトの名無しさん2014/08/04(月) 23:50:01.89ID:e+dZtPD6
>>231
そういう底辺のドカタ仕事が世界の全てだと思ってるから
お前はいつまでたっても底辺のままなんだよ
0233デフォルトの名無しさん2014/08/04(月) 23:51:11.23ID:IrSTfOQC
>>232
高い所から落ちたプログラマを見たことないの?本当に、すごい最期だったよ
0234デフォルトの名無しさん2014/08/05(火) 00:45:52.08ID:52ECpDfa
高い場所にいたはずなのに、ハゲちらかったプログラマなら知ってる
出世に毛根を犠牲にwww
0235デフォルトの名無しさん2014/08/05(火) 00:53:58.45ID:52ECpDfa
日本人の性質として一番良い物は使われない
IT業界というのも、もっとカーストの高い奴らが支配している区域であって
そいつらにとっては力を付けすぎないように適度にアメとムチで働かせておけば良く
革命されちゃ困るんだよ
0236デフォルトの名無しさん2014/08/05(火) 01:17:15.41ID:qBtzteoc
JSはまだ過渡期と思う
サーバーサイドのウェブアプリをNodejsのexpressとかで作るのが有利ってケースはかなり限られると思う
余程並列処理を使いたい場合を除いて、現状のJSは言語機能が貧弱だし、ライブラリも全く揃ってない
ES6が当たり前になるのを待つ必要がある
0237デフォルトの名無しさん2014/08/05(火) 02:57:24.63ID:S6pEVZdO
Pythonは標準添付ライブラリが強いのが利点だわな
JavaScriptとはそもそもの出自が違う
jsもpyも好きだからこそ言うが、争うような話じゃない
住む世界が違うんだからお互いの言語の得意な分野でやってれば良いだけ
わざわざ競合する理由が何もないべ
0238デフォルトの名無しさん2014/08/05(火) 06:33:28.61ID:RpUyK0xo
>>236
所詮PythonやRubyみたいな汎用言語じゃなくてScriptだから仕方無い。
0239デフォルトの名無しさん2014/08/05(火) 07:07:29.79ID:SvQByvNV
こんな餌で俺がクマー!
0240デフォルトの名無しさん2014/08/05(火) 07:08:38.20ID:SvQByvNV
>>236
Apacheが有利なケースって?
0241デフォルトの名無しさん2014/08/05(火) 07:31:25.72ID:mzZC8VYe
古いOSを無かったことにして独自のブラウザとかスマホとかを作ろうとすると
ライブラリが増えないんだよな
0242デフォルトの名無しさん2014/08/05(火) 10:43:00.73ID:mXVVWrCz
>>238
元々ブラウザのDSLみたいなものだしね。

Perlも元々はUnixのテキスト処理のDSL(といっても、awkよりは遥かに汎用的だが)だし、
PHPもウェブのDSL(といってもウェブは範囲が凄く広いが)みたいなものだから、

これらが、汎用って意味では、何となく不器用だったりするのは、仕方無いね。
0243デフォルトの名無しさん2014/08/05(火) 10:59:47.49ID:mXVVWrCz
それに比べると、
Python→休日に暇だから作った
Ruby→ぼく(まつもとゆきひろさん)のかんがえたさいきょうげんご

で、必要に迫られて作ったわけじゃないんで、
いくらでも汎用的になれたのかと。

Perl→ラリーがテキスト処理が面倒でカッとなって作った。
Javascript→ネスケに乗せるために作った。javaに似せろと無茶振りされたり(似てないけど)、ご存知ブラウザ戦争でカオスな仕様になる
PHP→CGIをPerlよりも楽に使うためのものから、色々追加してプログラミング言語にしていってカオス化

下の3つは元々の用途にツギハギで足したって印象。
0244デフォルトの名無しさん2014/08/05(火) 11:44:03.96ID:b98OQbVv
JSのカオス化は言語本体には及ばずライブラリに限られてるし、
結局Javaに似たのは表面上の構文だけだし、他の2つとは格段に違うと思うけど?
0245デフォルトの名無しさん2014/08/05(火) 11:57:35.02ID:z7YQkDVj
PHPはやっぱりPerl・Java・JavaScriptのPHPの1つ前の世代のWeb関連で使われていた言語のごった煮に見えるw
0246デフォルトの名無しさん2014/08/05(火) 12:09:14.35ID:VDc80Yjj
JSがカオスなのはブラウザに依存する部分だけだろ
そうじゃない部分に文句言ってる奴は大抵仕様を理解してないだけ
ライブラリが貧相なのは認めるけどね
0247デフォルトの名無しさん2014/08/05(火) 12:11:10.86ID:VDc80Yjj
あとRubyなんてカオスの権化みたいな言語じゃん
好きだけど
0248デフォルトの名無しさん2014/08/05(火) 16:58:09.36ID:AhK4dQyZ
Go言語にDart、それにPythonでGoogleさんマンセーってしとけばいいってこと?
0249デフォルトの名無しさん2014/08/05(火) 17:38:44.48ID:mzZC8VYe
C++ Java JS Pythonと総当たりすれば確実に勝てるってこと
まさか学習コストがこわくて言語を一つしか選べない反知性企業はいないよな
0250デフォルトの名無しさん2014/08/05(火) 17:52:30.92ID:DgDBu3xR
>>249 勝てるってなんだよ。 単に就職マッチングのチャンスが多少多くなる位のもんだろ。
若ければ言語なんて知らなくても良い。 自分を売り込め。
0251デフォルトの名無しさん2014/08/05(火) 20:13:02.20ID:qBtzteoc
基本的に新しい言語ほど良くできてるね
0252デフォルトの名無しさん2014/08/05(火) 20:35:59.68ID:nTlGGMns
Python(1991)

↓

PHP(1995)
JavaScript(1995)
0253デフォルトの名無しさん2014/08/05(火) 21:50:39.45ID:mXVVWrCz
>>252

>>251の言ってることは、代替、後継者を狙ってる言語の話だろ。

C++→Java→C#とかな。

え?、CよりもC++は酷いって?
聞こえんなぁ。
0254デフォルトの名無しさん2014/08/05(火) 23:11:14.87ID:weyAPcVy
Python使えても仕事ないぞ
ソースは俺
0255デフォルトの名無しさん2014/08/06(水) 02:25:00.39ID:GjkGAAQy
データマイニングや機械学習周りで使われてるんだろ
地方の中小企業、零細企業なんてjava,c#しか使われないよ
だから、javascriptが一番に無難な選択肢なんだ
0256デフォルトの名無しさん2014/08/06(水) 02:27:04.99ID:GjkGAAQy
>>249
言語なんてcだけで良いよ。OSSの長いコードを読めないならプログラマなんて諦めた方が良い
0257デフォルトの名無しさん2014/08/06(水) 02:30:25.82ID:GjkGAAQy
一言で、pythonって言っても、pythonで何するのか分からないよね
cだって、システム開発なのか、組み込み開発なのか、画像処理なのか分からないのにさ
その点、PHPとJavaScript、Objective-Cは素敵だよね。言語を聞いただけで何するかまで分かる
0258デフォルトの名無しさん2014/08/06(水) 02:36:41.58ID:GjkGAAQy
>>243
JavaScriptは、もともとschemeを載せる予定で反対されたんだよ
もとより、JavaScriptはschemeの構文棟みたいな言語
0259デフォルトの名無しさん2014/08/06(水) 06:31:11.87ID:BndgycZH
PythonはRubyで書かれてしまっているツールの移植先としか使い道が無いからなw
0260デフォルトの名無しさん2014/08/06(水) 09:36:05.48ID:y9XkRQnX
>>259
互換性も何もかもが崩壊しているルビーに未来はないよ。
0261デフォルトの名無しさん2014/08/06(水) 15:39:40.91ID:GjkGAAQy
2014年度 Rubyアソシエーション助成金公募開始

ttp://www.ruby.or.jp/ja/news/20140805.html

Ruby処理系の改善(高速化、省メモリ化等)
Ruby開発支援ツール(デバッガ、プロファイラ、静的コード解析ツール等)
Web関連技術(HTTP・HTML等のWeb関連のライブラリやWebアプリケーションフレームワーク等)
業務システム向けツール(帳票出力やバッチ処理、他言語からの移行支援ツール等、業務システム開発で必要となるツール)

この手のツールを50万円で請け負うプログラマなんて日本に居るの?必死杉。
0262デフォルトの名無しさん2014/08/06(水) 15:58:38.76ID:4MouWiFt
>>261
ちがう。自分で販売する目的で開発して販売しても助成金が取れる可能性はある。


> 成果物の著作権とライセンス
> 採択された応募者が成果物のすべての権利を保持します。
0263デフォルトの名無しさん2014/08/06(水) 17:52:05.45ID:FGtiUc1O
結局、型の概念があって
コンパイル時にチェックされる
言語でないと業務では
広く使われないわ
仕様変更とかリファクタリング時に
ミスが多くなるから
0264デフォルトの名無しさん2014/08/06(水) 18:13:48.58ID:tkF9KocB
型は全てが事前の設計通りに完璧に推移してる時は非常に強力な道具だけど
事前の設計と実装が乖離して柔軟な対応をしたいときには足を引っ張ることになる
つまりウォーターフォール的なんだよ
0265デフォルトの名無しさん2014/08/06(水) 18:20:10.63ID:nIXS5zhn
SmalltalkやObjective-C見たいに、構文検査だけして型検査しない方がいいわ。
0266デフォルトの名無しさん2014/08/06(水) 18:24:08.31ID:GvRv1e44
>>264
関係ねーよ。動的型付けなら、実行時にエラーになるだけだ。
0267デフォルトの名無しさん2014/08/06(水) 18:35:38.72ID:nIXS5zhn
動的型検査は割りとどうでもいいが、
動的構文検査がかなりメンドイ。
変数を宣言しなくても動作勝手に作るもんだから、
ただ綴りを間違えただけで難解なBugを発生させる。
0268デフォルトの名無しさん2014/08/06(水) 18:38:01.39ID:4CuD/Gni
静的チェックすりゃいいじゃん
0269デフォルトの名無しさん2014/08/06(水) 18:46:06.89ID:4QcRPw91
マクロ的に構文がガシガシ変わるわけじゃなし。
C言語で、typedefによって単なる識別子が型名になったりするようなのと同程度。
0270デフォルトの名無しさん2014/08/06(水) 18:52:54.08ID:nIXS5zhn
ellipseをelipseと間違えた時のわかり連れぇ事わかり連れぇ事。
0271デフォルトの名無しさん2014/08/06(水) 18:54:58.55ID:R6wm14O9
>>268
Smalltalk見たいに静的構文検査してくれる動的型付け言語なんて、
Objective-C位じゃね?
0272デフォルトの名無しさん2014/08/06(水) 18:57:14.13ID:GvRv1e44
>>271
Dartもだ。マイナー言語なら他にもあると思うぞ
0273デフォルトの名無しさん2014/08/06(水) 19:00:53.15ID:GvRv1e44
あとPHPにtype hintingがあったな。あまり使われている感がないが
0274デフォルトの名無しさん2014/08/06(水) 19:12:56.38ID:l3mkDmMt
>>271
Smalltalkはどんな素晴らしい静的構文解析してくれるの?

Smalltalk使いって知識の幅が狭い奴が多いから(前スレでもgitの事全く知らなかったし)、
大抵の動的型言語で出来ることなのにSmalltalk特有だと思ってそうなんだけど。
0275デフォルトの名無しさん2014/08/06(水) 19:13:59.40ID:ScOG6r0I
動的型付言語なのにどうして静的チェックが出来るの?
例えば?
0276デフォルトの名無しさん2014/08/06(水) 19:27:43.17ID:l3mkDmMt
>>275
動的構文言語じゃないから
0277デフォルトの名無しさん2014/08/06(水) 19:35:36.46ID:GvRv1e44
>>275
ソースコードには型指定をするが、コンパイル時に型情報を消去して実行する。

Objective-Cで例えると
MyClass obj = [MyClass new];

と宣言した場合、コンパイラにはobjがMyClass型だと分かるが、コンパイル後は以下のように解釈される。
id obj = [MyClass new];

*idは何でも入る。Cの世界だとvoid*
0278デフォルトの名無しさん2014/08/06(水) 19:47:59.61ID:CtAgobuc
>>276
ん?Smalltalkには「大抵の動的型言語で出来」ないことはいっぱいあるぞ?
0279デフォルトの名無しさん2014/08/06(水) 20:13:06.29ID:cehpYGSr
>>261
コミュニティに注視する勢力向けのPR効果が一番のメリットか
0280デフォルトの名無しさん2014/08/06(水) 20:25:59.30ID:Vw96MtUK
Pythonを使ってるときは、メソッドも型推論で補完してくれるし
タイポもリアルタイムで教えてくれるので凄く快適なんだけど、
Smalltalkを試しに使ってみたら全然しょぼくてマジウンコだった
あれどうなってんの?
0281デフォルトの名無しさん2014/08/06(水) 20:48:47.50ID:tkF9KocB
>>266
>>263-264の「型の概念」の話がなんで急に「動的型付け」の話にすり替わったのかまるで理解できないんだが

誰かわかる人いる?
0282デフォルトの名無しさん2014/08/06(水) 21:02:33.39ID:YPP4gG0l
>>281
>>263は「型の概念があってコンパイル時にチェックされる言語」と書いてるから、
最初から静的型付け/動的型付けの話だったんじゃない?
0283デフォルトの名無しさん2014/08/06(水) 21:05:16.48ID:RE8PFak2
補完推進派とtemplate推進派は仲悪そう

template<typename T> void f(T obj) {
obj.なぜか補完できない
}
0284デフォルトの名無しさん2014/08/06(水) 21:12:38.06ID:tkF9KocB
>>282
その場合は「型の概念」ってどういう意味だと解釈すればいいの?
0285デフォルトの名無しさん2014/08/06(水) 21:35:08.97ID:x+dPwZMs
>>284
Lazy Kみたいな型が無い言語もあるから、そういう言語と区別してるんじゃ無いの?
0286デフォルトの名無しさん2014/08/06(水) 21:47:16.74ID:RE8PFak2
>>266
事前の設計でbyteだった所をcharに変えたくなったとすると
静的型付けならば修正しなければエラーになるが
動的型付けならどこがエラーになる?どこを修正する?
0287デフォルトの名無しさん2014/08/06(水) 22:34:51.86ID:GjkGAAQy
>>263
リファクタリングって、型よりテストの方が重要だろ
カバレッジ率ガー、な現場なら、型なんて、尚更、不要だよね
0288デフォルトの名無しさん2014/08/06(水) 22:39:57.02ID:m3/gfdXx
>>287
静的型付けだろうが、動的型付けだろうがテストは必要。
だが、静的型付けなら、型に関するテストケースを省ける。
また、型情報を利用したIDEなどの強力なリファクタリング機能を利用できる(クラス名、メソッド名の変更など)
不要と言うことはない
0289デフォルトの名無しさん2014/08/06(水) 23:24:18.63ID:m3/gfdXx
>>286
「エラーになるだけ」ってのは言葉足らずでした。
>動的型付けならどこがエラーになる?どこを修正する?
これがわかりにくいからこそ問題。
エラーになればまだよくて、最悪結果はおかしくなるのに、原因箇所がわからなくなる可能性がある。
まあ、キチンとモジュール化して、スコープを縮めておけばそれほど重大な問題にはなんないけど。
0290デフォルトの名無しさん2014/08/06(水) 23:46:53.31ID:sZEMoSUh
>>283
JavaのGenericsなら、Objectのメソッドくらいは補完できそうだが
templateだと、プリミティブ型来た時点でアウトだもんなあ
0291デフォルトの名無しさん2014/08/06(水) 23:48:34.18ID:RE8PFak2
>>289
>エラーになればまだよくて、最悪結果はおかしくなるのに、原因箇所がわからなくなる可能性がある。

原因がわからないなら動的型付けが原因だという証拠もないだろ
0292デフォルトの名無しさん2014/08/06(水) 23:54:53.21ID:m3/gfdXx
>>291
型に関する問題について話してるんだけど?
0293デフォルトの名無しさん2014/08/07(木) 00:01:04.27ID:m3/gfdXx
まあ、型に関する問題の原因が分かりにくいと言うのは、型付けの強弱の方が影響大きいかなあ。
0294デフォルトの名無しさん2014/08/07(木) 00:12:16.10ID:ZscN+XoP
>>275
翻訳時に検出してくれる。


Example compile:
'
something
 | a |

 a := 0.
 b := 1.

'.

実行結果→変数bは宣言されていません。
0295デフォルトの名無しさん2014/08/07(木) 00:12:16.47ID:FLoDAFid
>>288
> だが、静的型付けなら、型に関するテストケースを省ける。

型に関するテストケースなんて書いてるの?
どういう場合に必要になるの?
0296デフォルトの名無しさん2014/08/07(木) 00:17:32.56ID:ZscN+XoP
>>280
PharoやVisualWorksならSelectorの補完とか、
構文訂正とかしてくれる。
Squeakみたいな化石しか使ったこと無いだろ。
0297デフォルトの名無しさん2014/08/07(木) 00:25:39.18ID:FLoDAFid
>>296
そのSmalltalkの補完は、ちゃんと型に関係ある候補だけ出てくる?
0298デフォルトの名無しさん2014/08/07(木) 00:34:26.27ID:7g/ek2KL
>>295
よくあるのは関数の戻り値をコレクションに変更するとかかな。
静的型付けなら、関数の戻り値の型を変えた時点で、その関数を使っている箇所がコンパイルエラーになるから、エラーになっている箇所をしらみつぶしに直して行けばいい。
動的型付けもgrepを駆使したりで大体の箇所は直せるが、漏れがないか確認するには実行するしかない。
その際にテストするわけ。ただ、ケースは型に関してピンポイントで用意するわけではなく、ロジックの正常パターン1ケースあれば問題ない。
0299デフォルトの名無しさん2014/08/07(木) 00:38:14.77ID:ZscN+XoP
>>297
んにゃ。ただ、既存のMessageから絞り込んでくれたりする。

something: aString

 aString asFile. "aを入力するとaから始まるSelectorを列挙する"
 aString size. "asFileを持つclassのSelectorだけを列挙する。"
0300デフォルトの名無しさん2014/08/07(木) 00:52:26.76ID:ZscN+XoP
>>298

template<class point> point Inverse( const point &target, const point &source )
{
 return source - ( target - source );
}

auto result = Inverse( 1, 0 );
auto result = Inverse( FunctionA(), FunctionB() );


FunctionAの戻り値のためにInverseを修正すると、
Inverse( 1, 0 )も影響食らうけど
こういう時の置き換えはどうすんの?
0301デフォルトの名無しさん2014/08/07(木) 01:35:04.52ID:ov2AyO+F
もしプログラムが鉛筆で書かれていたら
リファクタリングは消しゴムを大量に消費するだろう(小学生並み)
0302デフォルトの名無しさん2014/08/07(木) 01:42:52.64ID:EqoC26iF
>>301
俺がその状況になったら、1行を付箋1枚に書いて
ルーズリーフに貼り付けるだろうから、付箋紙の消費のほうがヤバそうだ
0303デフォルトの名無しさん2014/08/07(木) 07:43:25.83ID:s8xdzsjq
>>299
なにそれ
クソしょぼいじゃん期待して損した

> PharoやVisualWorksならSelectorの補完とか、
> 構文訂正とかしてくれる。
> Squeakみたいな化石しか使ったこと無いだろ。

PharoやVisualWorksも完全に化石のウンコでしたね
0304デフォルトの名無しさん2014/08/07(木) 09:35:40.22ID:SPOem7NS
いまどきの動的型言語は字句解析と構文解析は実行前に済ませてるから、
実行前に構文エラーは見つけられるんだけど、
その程度のことを特別だと思ってるSmalltalkerさんは
いつの時代で知識が止まってるんだろう?
0305デフォルトの名無しさん2014/08/07(木) 10:48:33.97ID:U3MZ3t5n
ちなみに具体的にはどんな動的型言語やIDEなら可能?
いっぱいあって挙げきれないだろうけど、思い付く範囲で。
0306デフォルトの名無しさん2014/08/07(木) 13:36:31.33ID:EqoC26iF
>>280 の環境のが俺は知りたい
Smalltalk触ったことも触ることも多分無いけどPythonなら使うから
0307デフォルトの名無しさん2014/08/07(木) 14:55:13.66ID:vxThxfhX
PyCharmやintellij ideaならリアルタイムにタイポ教えてくれるし補完は強力に効くよ
普段intellij ideaしか使わないから他のIDEは知らん
0308デフォルトの名無しさん2014/08/07(木) 15:02:26.09ID:sMmW86Oe
Perlが出来て、ウェブで使うのに動的型付けのスクリプト言語がブームになったけど、それももう終わりだろうな
ある程度プログラムが複雑になれば静的型付けの方が有利なのは明らかだもの
0309デフォルトの名無しさん2014/08/07(木) 15:28:36.09ID:EqoC26iF
>>308
というか、そのPerlは
「テキスト処理スクリプトとしてUnix界で使われてたから」
って理由でCGIに引っ張り出されただけだから、始めから見えてた結果だよ
むしろ、書き捨て上等言語が未だに完全引退できないのが異常なんだよ…
0310デフォルトの名無しさん2014/08/07(木) 15:30:15.55ID:0DSTgDSP
静的型付けでも型推測が有れば不便じゃない。 むしろ勝手な型キャストの方が思わぬ結果を生むことが有る
0311デフォルトの名無しさん2014/08/07(木) 16:48:23.22ID:PyzgeFxZ
>>309
オライリーの有名なPerl本のリャマ本やアルカパ本にも、
CGIのCの字も無いからね。

というか、今時、CGI/Perlなんて使っている所あるの?

さすがにPHPやその他によって、もう駆逐されてると思ってた。
0312デフォルトの名無しさん2014/08/07(木) 18:01:55.03ID:EqoC26iF
>>311
されてないんだよなあ…微妙に残っちゃってる

Perl/CGIそのものが残っちゃってることはともかく
PerlをPerl/CGIの(しかも、質の悪いコードが蔓延してた時代の)イメージで語る人間が
残っちゃってることも気になるな

Perl/CGI自体古いとは言え、あの頃のコードはそれにしても酷かったんだし
そもそもそういう言語じゃねーからこれ
0313デフォルトの名無しさん2014/08/07(木) 18:46:36.18ID:rRqe4gq0
>>308
コンパイル時間が掛かるし、Webってデスクトップアプリケーションほど複雑なもの作らないでしょ
0314デフォルトの名無しさん2014/08/07(木) 18:51:46.36ID:j7LnXvCB
>>313
Webってのはクライアントサイドのことだよな?サーバーサイドも含めてならお笑いもん。
まあ、CSにしても、GoogleAppsとか見て、同じこと言えんの?って話だが
0315デフォルトの名無しさん2014/08/07(木) 18:52:15.90ID:rRqe4gq0
なんで、JavaからRubyになったかっていうと、Javaやxmlを書くのが糞面倒だから
JavaScriptに落ちつくのは自然な流れ
5年ほど前に、Flashがあるからhtml5は普及しないってブログ書いてた人居たよね。
node.jsが流行らないって人もね!
だから、phpもpythonも、node.jsに駆逐されるよ。
0316デフォルトの名無しさん2014/08/07(木) 18:54:44.34ID:rRqe4gq0
>>314
それって、システムよりのWebアプリじゃなくて、デスクトップアプリケーション寄りのものでしょ
0317デフォルトの名無しさん2014/08/07(木) 18:54:48.29ID:j7LnXvCB
>>315
日本語でおk
0318デフォルトの名無しさん2014/08/07(木) 18:56:45.45ID:aiDD+/bc
こいつこの前のnode.js厨か
頼むから、もう少し論理的な考え方をできるようになってから書き込んでくれ
0319デフォルトの名無しさん2014/08/07(木) 19:09:44.82ID:rRqe4gq0
Javaやc++でCMSが書かれない理由なんて、面倒だからとしか返ってこないよ。
そういう理由で、wordpressみたいなものを作る人たちが、
JavaScriptとFooの2つの言語に習熟しながら、それらをメンテするかって話。
皆、1つの言語で作りたがるし、おなじ動的言語なら、尚更、1つの言語を使うのは、当然だよね
0320デフォルトの名無しさん2014/08/07(木) 19:53:19.50ID:in3oiMEK
>>319
だからAltJSが流行ってるんだね
JavaやpythonをJSにコンパイルできるもんね
そりゃJavaやpythonで書けるならそっちで書くよね
0321デフォルトの名無しさん2014/08/07(木) 19:58:29.62ID:zBiJiHdD
>>304
具体的に教えてくれ
0322デフォルトの名無しさん2014/08/07(木) 20:46:34.08ID:rRqe4gq0
>>320
AltJSなんて流行ってないよ。何処かで緑色の鶏肉が混ざるだけだから
使われるとすれば、関数型ぐらい。python, rubyとかバカじゃねーの
0323デフォルトの名無しさん2014/08/07(木) 21:06:57.74ID:rRqe4gq0
>>307
お前らが浮気してる間に、emacsにもpackage-installとflymake, js2-modeがデフォルトで入ったよ
0324デフォルトの名無しさん2014/08/07(木) 21:07:30.80ID:in3oiMEK
プログラミングの議論中に、緑色の鳥肉みたいな
例え話で反論してくるのって
典型的なコード書けないゴミSEだよね
0325デフォルトの名無しさん2014/08/07(木) 21:11:34.73ID:rRqe4gq0
ていうか、GWTって、どこで使われてるの?
Googleですら、殆んどのプロジェクトをClosure toolで作ってるよね
0326デフォルトの名無しさん2014/08/07(木) 21:18:26.04ID:FLoDAFid
>>321
>>307にあるじゃん
あとはemacsかvimにプラグインでjediとpyflakesを組み込むのでも可
0327デフォルトの名無しさん2014/08/07(木) 21:36:01.58ID:7g/ek2KL
ジェットずれいんずの動的型付け言語向けIDEの補完能力はすごい。
俺はWebStorm,PHPStorm,RubyMine使ってるが。

ただ、Javaベースなのが問題なのか、結構重い。がっつりプログラム書くときはいいけど、さくっと書きたいときは起動が面倒。
あと、文脈的に補完が出ないときもあるので、そこは静的型付けとの差を感じることもあるな。
0328デフォルトの名無しさん2014/08/07(木) 22:10:28.90ID:rRqe4gq0
普段から立ちっぱなしのものなんて、browserか仮想端末ぐらい
sublimeよりはAtomが勝つよ。coffee script使ってるあたりは不安
0329デフォルトの名無しさん2014/08/07(木) 22:24:08.95ID:PyzgeFxZ
>>312
ありえそうだな。
PerlはCGIのほかにも、Perl4以前のコードも酷かったから、
そのイメージのせいで、印象悪いとかも、聞いたことある。

てか、Perlって、ウェブやブラウザができる前から存在してるから、
CGIのイメージ持ってる人は、古いというよりは、微妙に古いだなw
0330デフォルトの名無しさん2014/08/07(木) 23:00:47.99ID:9UDZRMrG
DeNAなんかはいまだにPerlで新規開発するらしいな
0331デフォルトの名無しさん2014/08/07(木) 23:14:44.41ID:2soaImT5
いつの情報だよそれ
0332デフォルトの名無しさん2014/08/07(木) 23:23:48.57ID:9UDZRMrG
じゃあお前の最新情報教えてくれよ
DeNAは何使ってんだよ
0333デフォルトの名無しさん2014/08/07(木) 23:26:00.33ID:rRqe4gq0
いまどき、perlって落ち目のmixiや、はてなぐらいじゃないの?
0334デフォルトの名無しさん2014/08/07(木) 23:27:13.01ID:rRqe4gq0
今時、perl4の話って、中堅SIerをリストラでもされたのかしら
0335デフォルトの名無しさん2014/08/07(木) 23:29:33.08ID:EqoC26iF
Perlはレガシーなのはedがレガシーなことぐらい分かり切った話で、もう随分と昔の話題なのに
未だにわざわざ「Perlはオワコン」みたいなことPerlスレに書く人って
10年以上もレガシーさを認められない人なのかな、と思う
0336デフォルトの名無しさん2014/08/07(木) 23:30:43.38ID:yuOaZbMp
>>326
vimをjedi風にするプラグインがあるのかと思ってググったらぜんぜん違ったw
0337デフォルトの名無しさん2014/08/07(木) 23:39:16.35ID:aAiPLxpv
mixiは知らんけど有名どころはscalaとかgolangとかerlang使ってる
0338デフォルトの名無しさん2014/08/07(木) 23:42:48.38ID:PyzgeFxZ
最近日経プログラミングか何かの雑誌で、
scalaは、RubyやPythonと、JavaやC#のいいとこどりをしてるとか、
書いてあったが、
実際どうなんだよ。
0339デフォルトの名無しさん2014/08/08(金) 00:12:16.00ID:4mDRKIt3
5年以上前の情報で、SFでscalaつかったようなベンチャーですら、普通のJavaに戻るような有り様。
1.scalaの使い方を、新しいメンバーに教えることができない
2.ツールが発展してない
0340デフォルトの名無しさん2014/08/08(金) 00:13:42.91ID:4mDRKIt3
Rubyの開発支援ツール作ってたとこも、javascriptに移ってたよ
0341デフォルトの名無しさん2014/08/08(金) 00:28:46.28ID:skLLYrwD
jsはインストールが簡単でなければ意味がない
node.jsのインストールなんてrubyのインストールと難易度変わらないから無意味だよ
0342デフォルトの名無しさん2014/08/08(金) 00:56:17.34ID:v77fcTJu
>>339
雑誌読んだ後、
そんな凄いなら思って、
アマゾンでscalaで検索したら、
2010年や2011年の本が多くて、
最近のが少なくて、やっぱ変だなとか思ったら、
そういうことな。

雑誌のくせに、情報が古すぎるw
0343デフォルトの名無しさん2014/08/08(金) 02:25:22.92ID:cGhNUCZt
C#、Ruby、Python、HaskelからScalaはあまり問題はないだろうけど、JavaやVBからScalaはかなりきついだろうな
この2つの言語をやってるのは完全な土方でそもそもプログラミングが好きなんじゃないから、良い書き方を摸索することはない
学習コストを嫌い自らの狭い経験と見識でコピペクソコードを連発するJava使いがわざわざ機能の広いScalaなんかやらんだろ。
0344デフォルトの名無しさん2014/08/08(金) 03:33:19.88ID:tmzEBGe1
Scalaなんて、大学辺りでHaskellやProlog辺りをガッツリやってないとメリットが無い
0345デフォルトの名無しさん2014/08/08(金) 07:12:25.32ID:o/iL8S5k
>>326
やっぱ宣言してない変数の参照とか検知すんのは無理なわけね。
0346デフォルトの名無しさん2014/08/08(金) 07:54:15.24ID:KEAxF1W6
>>345
なにがやっぱりなのか分からないけど
pyflakesで検知できるよ
flymake的なのと一緒に使えばリアルタイムで
0347デフォルトの名無しさん2014/08/08(金) 08:06:22.04ID:fgvgJsRX
いまどきであっても動的型言語で抽象構文木把握して
コード入力時に補完・修正できる処理系やIDEが
枚挙に暇がないほどには存在しないことはわかった。
0348デフォルトの名無しさん2014/08/08(金) 09:19:34.79ID:jyX/hVbP
既に何個も挙げられてたじゃないか
こんな2chの辺境のスレにも関わらず
0349デフォルトの名無しさん2014/08/08(金) 09:57:47.49ID:5zbZawy4
宣言してない変数の検出くらいPHPStormでも出来るでしょ
0350デフォルトの名無しさん2014/08/08(金) 10:59:07.44ID:skLLYrwD
C++やHaskellは型名をパラメーター化しまくってるから補完できないぞ
静的型を最優先に考えるやつらにとって補完の優先順位は低い
補完とかいう理想を追求するのは自由だが、静的型の名を騙るべきではない
0351デフォルトの名無しさん2014/08/08(金) 14:20:17.40ID:dvb9zQBx
>>345>>347
必死すぎワロタ
ボロクソに貶されたSmalltalk使いかな?
0352デフォルトの名無しさん2014/08/08(金) 15:04:53.16ID:1LDmGQ0b
>>350
キャストすれば補完の恩恵得られるよ
編集終えたら置換で戻せばいいだけという初歩的なテクだよ
0353デフォルトの名無しさん2014/08/08(金) 16:20:34.79ID:Cs8LPiXT
>>327
resharperはもっとすごい
動的型付け言語の限界が分かる
0354デフォルトの名無しさん2014/08/08(金) 16:21:02.94ID:skLLYrwD
>>352
キャストするためにわざわざ前方宣言するのか
というか前方宣言ではメンバーにはアクセスできないからincludeしないと駄目か
0355デフォルトの名無しさん2014/08/08(金) 16:54:15.87ID:tmzEBGe1
>>353
それって、単に開発ツールの問題だろ
JavaScriptにリソースが集まるから、嫌でもJavaScriptの開発ツールが発展するよ
0356デフォルトの名無しさん2014/08/08(金) 16:55:02.65ID:tmzEBGe1
JavaScriptの発展具合を見ていると、Javaの生産性の限界が見えてくるようだ
0357デフォルトの名無しさん2014/08/08(金) 17:44:24.75ID:1LDmGQ0b
>>354
そりゃまぁそうだよ。
auto f() { return randomClass(); }
こんなものがあったとして
決め打ちキャストぐらいしか出来ないだろ。
0358デフォルトの名無しさん2014/08/08(金) 18:21:00.25ID:VVmHMN7Q
>>346
できなかったよ。局所変数の初期化を忘れると、
何も言わず大域変数を読みに行きやがる。
0359デフォルトの名無しさん2014/08/08(金) 19:14:24.50ID:jyX/hVbP
>>358
同名の大域変数が見つからなければエラーになるよ



y = 10

def foo():
&nbsp;&nbsp;pass

def bar():
&nbsp;&nbsp;print(x) # undefined name 'x'
&nbsp;&nbsp;print(y) # エラーにならない
&nbsp;&nbsp;foo() # yをエラーにすると、こっちもエラーになるのでナンセンス
03603592014/08/08(金) 19:18:07.78ID:jyX/hVbP
インデントが化けてしまった



y = 10

def foo():
  pass

def bar():
  print(x) # undefined name 'x'
  print(y) # エラーにならない
  foo() # yをエラーにすると、こっちもエラーになるのでナンセンス
0361デフォルトの名無しさん2014/08/08(金) 20:28:25.94ID:KEAxF1W6
>>355
残念ながら、ドカタばっかり数だけ集まっても
優れた開発ツールは生まれません
0362デフォルトの名無しさん2014/08/08(金) 21:28:02.25ID:tmzEBGe1
>>361
シリコンバレーのハッカーばかり集まってるよ
0363デフォルトの名無しさん2014/08/08(金) 21:51:08.78ID:mK2YK1vl
JavaScriptが駄目だって言ってる人は何を理由に駄目だと思ってるのか気になる
ブラウザの互換性、DOMみたいなECMAScriptとは関係ない部分が嫌なだけなんじゃないの
0364デフォルトの名無しさん2014/08/08(金) 22:19:37.93ID:skLLYrwD
>>363
実装に責任転嫁するだけで仕様が反証不可能になるのが駄目だね
典型的なニセ科学なのになぜ気付かないのか
0365デフォルトの名無しさん2014/08/08(金) 22:27:05.21ID:mK2YK1vl
意味が分からん特に2行目
ただ気になっただけなんだけど
0366デフォルトの名無しさん2014/08/08(金) 23:29:08.24ID:OVQ4aJPR
>>351
リアルタイムに補完・修正しつつ
こんな感じに軽快にコーディングしている
Getting started with Pharo 3.0: http://youtu.be/n3gtVjGYRLI

Pythonかなにかのいまどきの動的型言語の
コーディングの様子がわかる動画があったら教えてください。
0367デフォルトの名無しさん2014/08/08(金) 23:41:10.84ID:olHthDax
>>366
補完は便利っちゃ便利だけどSmalltalkの場合、
正確な型情報に基づいた補完までは要らないなぁ。
型が有ってMessage送信があるというより、
Message送信が有って、Messageを受け取る型が
できる。みたいな感じだからねぇ。
0368デフォルトの名無しさん2014/08/09(土) 00:28:46.83ID:hKshZAbQ
Smalltalkの場合、てきとーにメッセージ送りつけてみて
たまたま上手く動けばOK、ダメならシカトしとけーって
行き当たりばったり&ヤケクソ感満載なプログラミングが
信条だからね
まともなシステムを組むには向いてないけど、バグってても何となく
動くものを作るには向いてるよ
0369デフォルトの名無しさん2014/08/09(土) 01:11:30.12ID:V2c7lTj7
>>368
ダメな場合、通常は例外投げるから解るよ。
最もその例外も#doesNotUnderstand:
から投げられてるわけで、
#doesNotUnderstand:を何もしないよう
上書きしてしまえば、例外も発生しなくなるけど。

それからSmalltalkが大規模に向かないってのは間違いだな。
そもそもSmalltalk環境自体が大規模だ。
それとSmalltalk環境の殆どはObjectの参照箇所や生成元を
特定出来る機能が有るから、
他の言語より、原因の特定が
圧倒的に簡単だ。
0370デフォルトの名無しさん2014/08/09(土) 01:16:14.81ID:tyb5Av5M
JavaScript最強!










これで満足かな坊や達。
0371デフォルトの名無しさん2014/08/09(土) 01:55:42.81ID:nyLka+AS
機械学習にPythonが良く使われてるね。ライブラリの良いのが有るからかな?
0372デフォルトの名無しさん2014/08/09(土) 02:14:45.82ID:4ZdYRIm8
工学系なら全てpythonでイケる。scipy周りのツール群が整ってるから。調べりゃスグ。
Web系はJavaScript一択。スマホ交えたハイブリッドアプリしか生き残らないだろうから。
0373デフォルトの名無しさん2014/08/09(土) 02:17:47.00ID:4ZdYRIm8
>>364
agda, coq, alloyでも触ってるの?Webにそんなものイラナイだろ
0374デフォルトの名無しさん2014/08/09(土) 08:09:24.68ID:TSdBD6Gl
>>372
大きな行列演算やフーリエ変換などライブラリが揃ってるような一般的な計算に帰着できず(出来たとしてもかえって非効率になり)
ゴリゴリと粒度の小さく計算量の大きい処理を書くしかない問題はいくらでもある
そういうときPythonじゃ遅すぎて話にならないよ
先に行っておくけどCythonはPythonではないしPyPyは遅いよ
0375デフォルトの名無しさん2014/08/09(土) 08:23:17.44ID:hKshZAbQ
なに言ってんだ?CythonはPythonの一部だよ
ぶっちゃけnumpy特有のスライス記法よりはPythonらしくて覚えやすいくらい
03763592014/08/09(土) 08:45:11.31ID:U25s1Oal
CythonはPythonの拡張モジュールをPythonの上位互換の記法で書けるようにしたものだからね
Python無しでは意味の無いものだし、何故Pythonのメリットから除外しようとするのか
理解できないな

デカイ行列はnumpy/scipyで、細かい計算はCythonで高速化できる
Pythonは数値計算では隙が無いよ
0377デフォルトの名無しさん2014/08/09(土) 11:24:16.17ID:+T7xdrkU
>>372 が「全て」とか書くからいちゃもんつけられてるんだろ
いちいち相手にするなよ
0378デフォルトの名無しさん2014/08/09(土) 12:01:19.59ID:ddJfTu8w
いちゃもんが間違ってたら
反論されても仕方ないでしょ
0379デフォルトの名無しさん2014/08/09(土) 12:34:57.64ID:TSdBD6Gl
>>376
Cythonは独自拡張で明示的に型付けしないと速くならないよ?
そんなのPythonに含めていいんならPyCUDAみたいなのもPythonだ
それなら確かに数値計算では隙がないといえるね
0380デフォルトの名無しさん2014/08/09(土) 13:26:15.90ID:ddJfTu8w
勝手に標準ライブラリ縛りしてたのか
アホだな
0381デフォルトの名無しさん2014/08/09(土) 13:26:24.94ID:+T7xdrkU
拡張モジュールが勝手に本体の一部になるとか、頭大丈夫?
0382デフォルトの名無しさん2014/08/09(土) 13:31:08.37ID:sfckUx3E
>>377,378
文系 Python プログラマは exists と forall を区別できないからね

たとえば、>>13 のカキコ:
  > とりあえずDropboxはクライアントも全てPythonで書かれてる
では「全て(forall)」と表明しているけど、現実に書かれているのが確実なのは
Windows と OSX(Mac) だけで Android や iOS は確認できていない(>>59)

従って正しい表明は「存在する(exists)」であって、
  > とりあえずPythonで書かれてるDropboxクライアントがある
と書くのが理系文章としては適切だった

同様に、今回の >>372 のカキコ「工学系なら全てpythonでイケる。」は間違い
正しい理系文章は「工学系の一部ならpythonでイケる。」になる
あるいは >>376 の「Pythonは数値計算では隙が無いよ」も正しい用法
0383デフォルトの名無しさん2014/08/09(土) 13:47:49.78ID:+T7xdrkU
>>382
> あるいは >>376 の「Pythonは数値計算では隙が無いよ」も正しい用法

なんで最後にこれ書いちゃうかなぁ...
0384デフォルトの名無しさん2014/08/09(土) 13:57:49.17ID:sfckUx3E
>>383
> あるいは >>376 の「Pythonは数値計算では隙が無いよ」も正しい用法

この表明が間違いであると主張したいのなら、反例を一つ以上挙げればいい
たとえば:
・Ruby の RRRRR パッケージは xxx の数値計算をサポートしているけど、
 Python ではサポートしていない
・JavaScript の JJJJJ パッケージは xxx の数値計算をサポートしているけど、
 Python ではサポートしていない
みたいな感じで

でも自分は数値計算の知識が足りなかったので、反例を一つも挙げられなかった
だから、この表明は正しいと(個人的に)認める
0385デフォルトの名無しさん2014/08/09(土) 14:12:02.68ID:+T7xdrkU
>>384
間違いと言う気はないけど、なんでわざわざ悪魔の証明になるようなことを書くのかが不思議でならない
そもそも知識が足りないと言いつつ正しいと言い切るとか、足りないのは知識じゃなくて知能じゃね?
0386デフォルトの名無しさん2014/08/09(土) 14:17:08.13ID:BP+0hBNw
>>382
本当の理系からすると「工学系という用語が未定義であること」が最初に気になるんだけどね
お前のように一階述語論理の観点で語るのはその後だよ
0387デフォルトの名無しさん2014/08/09(土) 14:18:18.77ID:sfckUx3E
どうやら >>385 は「悪魔の証明」に関する知識が足りないか、
あるいはそもそもバトルの参加者として知性に欠けていると思われる
0388デフォルトの名無しさん2014/08/09(土) 14:21:22.12ID:TSdBD6Gl
>>386
それとPythonの定義な
別の言語をコンパイルして動かすようなものを含めるのなら、
どの言語でもシェルのコマンドを実行できさえすれば隙がないことになってしまう
0389デフォルトの名無しさん2014/08/09(土) 14:21:58.98ID:+T7xdrkU
>>387
具体的に指摘できなくて悔しいね (w
0390デフォルトの名無しさん2014/08/09(土) 15:42:03.43ID:Z1Mdwqnm
>>388
シェルのコマンド経由で任意のオブジェクトを
コスト無しでやり取り出来るのか?
出来ないならそれが隙だ
0391デフォルトの名無しさん2014/08/09(土) 16:23:57.39ID:tj206DRc
良い標準ライブラリがあるかはその言語の大きな強みになるんだから、
たとえC言語で書かれていてもいいんじゃね

悔しかったらNumRbとか作ってみなよ
0392デフォルトの名無しさん2014/08/09(土) 19:04:06.58ID:3PnNWWsV
C言語が大リーグだとするとCythonはまだ小学生だと思う
あまり期待し過ぎない方が良い
0393デフォルトの名無しさん2014/08/09(土) 19:12:11.06ID:nyLka+AS
>>392 そりゃちやうだろ。 大リーグの選手が掃除のおばさんのテクニックに勝てるか? そういう事だ。
0394デフォルトの名無しさん2014/08/09(土) 20:50:19.43ID:4ZdYRIm8
なんで小難しい論理の話なんてしてるの?ITプランニングの中の人なの?
0395デフォルトの名無しさん2014/08/10(日) 09:14:20.37ID:pLMPHMoa
>>388
お前が使ってる言語はお前みたいな馬鹿ばかりだから
Cythonみたいな開発ツールが出てこないのかもな
0396デフォルトの名無しさん2014/08/10(日) 18:04:49.09ID:5S9LxaMD
Pythonが最強すぎてバトルにならんな
0397デフォルトの名無しさん2014/08/10(日) 18:07:17.24ID:JTN9tFDt
Rubyが最強すぎてバトルにならんな
0398デフォルトの名無しさん2014/08/10(日) 18:07:58.88ID:76XVe68K
JavaScriptが最強すぎてバトルにならんな
0399デフォルトの名無しさん2014/08/10(日) 18:17:14.70ID:/shRHOr1
Perlが最強すぎてバトルにならんな
0400デフォルトの名無しさん2014/08/10(日) 18:21:58.24ID:owxd9++q
以上
0401デフォルトの名無しさん2014/08/10(日) 18:36:43.96ID:8k7NpdBx
PHP「俺が最弱すぎてバトルにならんな(自虐)」
0402デフォルトの名無しさん2014/08/10(日) 18:37:49.58ID:nn874tpK
むしろ2chのクソどもに支持されないPHPが最強
0403デフォルトの名無しさん2014/08/10(日) 20:22:04.54ID:4gg+ZZK0
2ちゃんねら以下、クソ以下が推してるのがPHPって印象がある。
普通の人は仕方なしに使ってる。
15年前に、他に何も知らなくてPerl使ってたようなもん。
0404デフォルトの名無しさん2014/08/10(日) 20:37:13.67ID:VgocPGqd
phpのライバル達は嫌でも触れるから一通り触れる事になるが
当の本人は畑が違うとまるで触れられる機会がないからなぁ
0405デフォルトの名無しさん2014/08/10(日) 20:56:50.71ID:y9erLln4
>>404 日本語と言う言語を理解する事が先決
0406デフォルトの名無しさん2014/08/10(日) 21:01:44.86ID:owxd9++q
PHPしかできないPHPerが嘲笑されてるだけで
仕様を理解したうえでPHP自体を馬鹿にしてる人って言うほど少ないと思うけどね
0407デフォルトの名無しさん2014/08/10(日) 21:08:23.85ID:JTN9tFDt
phpはphpのくせに、(本来の意味の)トレイトがあって腹立つ
0408デフォルトの名無しさん2014/08/10(日) 21:33:13.84ID:VgocPGqd
>>405
日本語不自由だったのは認めるけど
伝わるでしょ
Web屋さん以外にには触れる機会がないと。
0409デフォルトの名無しさん2014/08/10(日) 21:40:13.88ID:VgocPGqd
>以外にには
だめだこりゃ
0410デフォルトの名無しさん2014/08/10(日) 21:40:53.72ID:JTN9tFDt
>>406
PHPの仕様を批判してる人は多いぞ。
実際仕様はクソだし。例えば関数名の命名が統一されていないところとか。
まあ、PHPのクソさって、作者のラードフの発言見ると納得してしまうんだけどな…

ただし、道具としては使えるってスタンスは多いと思う。
0411デフォルトの名無しさん2014/08/10(日) 22:15:38.75ID:xgfgJG5g
なにが嫌いかよりなにを好きかで自分を語れよ
0412デフォルトの名無しさん2014/08/10(日) 23:02:58.23ID:qa2XHu48
PHP?????
中途半端に開発が終わった欠陥言語を使う事が害、
保守する人にも害、
再利用する人にも害、
新しく学ぶ人にも害、
こんなに腐った言語がありますか?

クソ言語を使う人間はクソ。
すべての面で生物として踊ってる
0413デフォルトの名無しさん2014/08/10(日) 23:05:24.87ID:8k7NpdBx
踊ってるのか…。
0414デフォルトの名無しさん2014/08/10(日) 23:08:20.99ID:TZnXcFWx
最後の一文で哲学っぽくなった
0415デフォルトの名無しさん2014/08/11(月) 00:26:17.26ID:zvXVfUml
ハイブリッドアプリが騒がれてる時代にPHPって、どうなの?
0416デフォルトの名無しさん2014/08/11(月) 09:21:09.77ID:msdQqOI/
最後好き
0417デフォルトの名無しさん2014/08/11(月) 11:45:17.20ID:2aHcydEV
お前らPHPをクソと笑うけどさ、
PHPかSmalltalkどっちか選べって言われたら
PHP選ぶよな?
0418デフォルトの名無しさん2014/08/11(月) 12:20:01.64ID:Ej0/UdBK
>>417
教養として学ぶなら迷わず Smalltalk 選ぶ
0419デフォルトの名無しさん2014/08/11(月) 12:25:54.08ID:HXiuyVVb
両方選ばずにPython
0420デフォルトの名無しさん2014/08/11(月) 12:44:59.66ID:xui8+I0a
どっちと聞いているときに別のことを言い出すやつはアホだと思う
0421デフォルトの名無しさん2014/08/11(月) 12:48:16.00ID:msdQqOI/
>>417
使用を強制されないんなら迷わずSmalltalk
PHPは仕方なく使うツールだ
0422デフォルトの名無しさん2014/08/11(月) 12:51:24.13ID:dzA6rv1F
>>417
今時smalltalkなんてどこで使う?
使わない物を学ぶ必要なし
と思う
0423デフォルトの名無しさん2014/08/11(月) 13:14:40.08ID:10IOkGIw
普段使わないからこそ、どちらかで、と言われたら是非とも
PHPは、Web屋ならわざわざ選べるときにまでやらんで良いし
逆にWeb屋じゃないならそもそも要らん
0424デフォルトの名無しさん2014/08/11(月) 13:37:18.37ID:gyTBghQr
Smalltalkは言語と云うよりもOSに近い
ただしWindowsやLinuxやMacに比肩するようなものじゃなくて、
精々BeOSレベルと思っとけば間違い無い

今更BeOSに学ぶ価値があるかというとねぇ
0425デフォルトの名無しさん2014/08/11(月) 14:20:36.34ID:LQ+7f0Dk
BeOSを今から学ぶのもアリじゃん
ENIACですら機会があるなら学んでみたい、そういうもんだろ
逆に学ぶ価値を重視するならプログラマにならんのが一番だと思うぞw
0426デフォルトの名無しさん2014/08/11(月) 15:20:06.01ID:zvXVfUml
PHPなんて仕事があるから使うだけで、選べたらSmalltalk選ぶよね
そのダブルバインドから生まれた止揚こそがRuby
0427デフォルトの名無しさん2014/08/11(月) 15:57:41.29ID:E9ECrwuQ
Ruby使うくらいならPython選ぶわ
0428デフォルトの名無しさん2014/08/11(月) 16:37:58.15ID:RZPEFxfr
PHP 5.4.4で==演算子の挙動が変わっていた
http://developers.slashdot.jp/story/14/08/11/048226/

欠陥言語PHP
これを採用している企業も虫が湧いてるし
これを受注してる下請けも虫が湧いてる。

これを使う奴も虫が湧いている。

すべての面で生物として踊ってる。
0429デフォルトの名無しさん2014/08/11(月) 16:41:17.52ID:FzLVONCc
また踊っちゃったのか。
0430デフォルトの名無しさん2014/08/11(月) 16:54:13.06ID:10IOkGIw
そう言えば日本語では区別の付かない音を使う代わりに
日本語では区別の付くタ行とダ行が区別出来ない言語もあるな

もしその言語の話者だとしても、ある程度の日本在住経験があるなら
流石に区別できないってことは無いと思うんだけど…

最近日本ニ来マシタとかなら、半年ROMる前にまず半年日本語を学んで欲しいところ
0431デフォルトの名無しさん2014/08/11(月) 17:52:46.02ID:cXbY4lHB
教養としてのSmalltalk
http://zerobase.hateblo.jp/entry/2013/02/24/015610
0432デフォルトの名無しさん2014/08/11(月) 19:42:31.45ID:2aHcydEV
全ての起源はSmalltalkにあるニダ
0433デフォルトの名無しさん2014/08/11(月) 21:22:12.82ID:2JSo4r2I
>>422
Web ServerからAndroid用Softwareの開発、
個人的な自動化Toolとか色々。
0434デフォルトの名無しさん2014/08/11(月) 21:26:19.43ID:hCftHaH2
>>432
アラン・ケイのメッセージングのオブジェクト指向、
トリグヴ・リエンスカウのオリジナル(非Web)のMVC、
アジャイルのうち特にケント・ベックの主張するXP、TDD については
実際、当初 Smalltalk で試されたものだからそういって差し支えないのでは?
0435デフォルトの名無しさん2014/08/11(月) 21:46:18.71ID:hCftHaH2
>>422
起源がらみつながりというわけでもないけれど、
たとえば PHP で 5.4 から採用された Traits は、
Smalltalk で('80年代とかではなく)2000年以降に最初に実装が試されたものだし、
http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf
いまも Smalltalk の柔軟性や拡張性を活用したりそこから学ぶことは皆無ではないよ
0436デフォルトの名無しさん2014/08/11(月) 22:36:38.82ID:QbLEC6vV
学習用じゃなく普通にSmalltalkを開発用に使えば良いのに。
他の言語じゃ回りくどい記述になる処理でも素直に書けるぞ。
0437デフォルトの名無しさん2014/08/11(月) 22:40:57.43ID:ilzU+Xrw
現実の開発なんてほとんど右から左の受け渡しとエラーチェックだから
手続き型(OO含む)で普通に作るとどの言語でも実際大して変わんないんだよね
インテリぶりたいんならメタプログラミングや宣言型の方が有効だよ
0438デフォルトの名無しさん2014/08/11(月) 22:53:00.36ID:xLVZtjTF
>>436
お題よろしく
ideoneが対応してるのでそこに貼って下さいな
0439デフォルトの名無しさん2014/08/11(月) 23:02:40.50ID:QbLEC6vV
>>437

| show |

show :=
[ :value |
 Transcript
  show: value value asString.
].

show
 value: 0 asValue;
 value: [ 'hello' ].

↑と同様な構造になる処理を
 他の言語で書いて見てくれ。
0440デフォルトの名無しさん2014/08/11(月) 23:11:03.49ID:xLVZtjTF
>>439
お題はSmalltalkが掛けない人にも通じる共通言語つまり日本語で頼む
0441デフォルトの名無しさん2014/08/11(月) 23:12:31.88ID:xLVZtjTF
せめて入出力例の出せるideoneでお願いしたいところ
0442デフォルトの名無しさん2014/08/11(月) 23:25:02.13ID:QbLEC6vV
>>441

ほいよ。
http://ideone.com/xLaymX

IDE ONEはGNU Smalltalkだったから、
asStringをprintStringに変更した。
変更はしたけど、大きな動作の違いはない。
0443デフォルトの名無しさん2014/08/11(月) 23:37:59.29ID:6X1AZZgP
これはどういったお題なの?
同じ出力が出来れば良いワケじゃ無いのは分かるけど
0444デフォルトの名無しさん2014/08/11(月) 23:38:42.60ID:xLVZtjTF
>>442
わざわざどうも。
まるで読めん。
GOLFや速度比較など話題として面白いかと思ったけど
お題が分らん。
0445デフォルトの名無しさん2014/08/11(月) 23:42:33.73ID:QbLEC6vV
>>443
数値と無名高階関数を、全く共通の関数で標準出力に出力する。
他にもできる言語は存在するだろうけど、
どれだけ簡潔に書けるかがキモだね。
0446デフォルトの名無しさん2014/08/11(月) 23:45:10.75ID:xLVZtjTF
>>443
Smalltalkが書ける人にしか分からないお題
内輪ネタのかまってちゃん
0447デフォルトの名無しさん2014/08/11(月) 23:51:21.62ID:6X1AZZgP
何処に無名高階関数が使われてたのか
分からないレベルで読めない
0448デフォルトの名無しさん2014/08/12(火) 00:09:46.82ID:9rljJzz2
Object subclass: #Example.

! Example class methodsFor: '' !
valueFor: aKeySymbol from: aIterable ifAbsent: aBlock
 aCollection do:
 [ :each |
  aKeySymbol = each key ifTrue:
  [
   ^ each value.
  ].
 ].
 ^ aBlock.
!!
| result array |
array :=
{
 #a -> 0.
 #b -> 1.
}.
result := Example
 valueFor: #a
 from: array
 ifAbsent:[ ^ Transcript show: '値がない。' ].

お題2:
値の組を格納した配列から、指定した鍵に一致する値を探す。
この時、反復文は使わず無名高階関数とCollection系の型だけ使う。
0449デフォルトの名無しさん2014/08/12(火) 00:23:36.17ID:bJ/x0GjC
今時そんなの80文字で書けない言語のほうが珍しいんじゃ…
0450デフォルトの名無しさん2014/08/12(火) 00:42:37.97ID:WTdbAkat
>>439
http://ideone.com/TbwCXt
0451デフォルトの名無しさん2014/08/12(火) 01:05:08.46ID:VU2ABUvm
>>450
Rubyならまだ読める
つまりto_v や val ってメソッドを
数値や無名関数に追加しろってお題なの?

Smalltalk版にはそれらを追加してるコードが見当たらないけど、
それはSmalltalkには最初から存在するってこと?
0452デフォルトの名無しさん2014/08/12(火) 01:19:36.27ID:QZJQGyIx
Smalltalkの人の説明は酷いよ
知らない人にはまるで通じない
prologな人が自問自答してたスレがあったけど
それはそれでprologをまったく知らなくとも参考になったぞ
0453デフォルトの名無しさん2014/08/12(火) 01:37:55.64ID:VU2ABUvm
何々だけ使用可とか、このコードと同じ事しろって感じの
制限付きのお題って下らないな
色んな言語があって、色んな解き方があるから面白いのに

大体、ご自慢の言語機能がホントに素晴らしいものなら
何も制限を加えなくても、その機能を使ったコードが
一番シンプルになるだろうに
0454デフォルトの名無しさん2014/08/12(火) 01:46:10.02ID:WTdbAkat
>>448
http://ideone.com/SUYpMB
0455デフォルトの名無しさん2014/08/12(火) 02:06:28.17ID:WTdbAkat
>>448
なぜ1行で済むコードをわざわざ回りくどく書く?
http://ideone.com/Q28Wv5

あと、こんなの別にSmalltalkじゃなくても書けるから
もっとSmalltalkならではの動的性や柔軟さを示すお題頼む。
0456デフォルトの名無しさん2014/08/12(火) 02:17:55.08ID:WTdbAkat
もっとも、かなりの数の同じお題を書かせて平均したら
SmalltalkがPythonやRubyよりはるかに簡潔に書けるというのは
実際に比較した統計があるのでたぶん事実。

[雑記] どうかく?orgから生産性を邪推する
http://s.webry.info/sp/cast-a-spell.at.webry.info/201001/article_7.html
0457デフォルトの名無しさん2014/08/12(火) 06:21:19.86ID:KW8A3HpW
>>455
継続で反復を抜ける所がミソだったからね。
あと、GNU SmalltalkはMethod内じゃなく
Behavior>>evaluate:で実行してるときも、
復帰文(^)が使えるコトを知らなかったよ。
PharoとかだとWorkspaceで復帰文使えないんだよね。
0458デフォルトの名無しさん2014/08/12(火) 06:28:33.33ID:KW8A3HpW
>>450
ほぼお題の意図通りだ。
RubyはValueHolder無いんだね。
0459デフォルトの名無しさん2014/08/12(火) 07:50:00.50ID:fLw1xr8U
>>439
Python3.4から標準に入ったsingledispatchを使ってみた
(2.6〜3.3にもバックポートされてるから、ライブラリ入れれば使用できる)


http://ideone.com/PTfPCm

たぶん意図には沿ってないけど、>>445は出来てる
0460デフォルトの名無しさん2014/08/12(火) 09:10:25.15ID:UCLW3XxN
>>457
本物の継続は抜けたり復帰したりしないよ

偽物 result := Example valueFor: #a from: array ifAbsent: []
本物 Example valueFor: #a from: array ifFound: [ :result | ] ifNotFound: []
0461デフォルトの名無しさん2014/08/12(火) 09:21:20.62ID:fLw1xr8U
>>448
内包表記を使える言語で、それを使わない合理的理由が全く思いつかないので
やる気が出ないんだけど、適当な理由付けできる?
0462デフォルトの名無しさん2014/08/12(火) 09:31:12.78ID:WTdbAkat
>>457
> PharoとかだとWorkspaceで復帰文使えない

え? Squeak/Pharo でも普通につかるでしょ。
Compiler evaluate: '| exit x | exit := [^0]. x := 0. 100 timesRepeat: [ (x := x+1) > 10 ifTrue: [exit value]]. ^1' "=> 0 "

たとえば、どんなコードが動かない?
0463デフォルトの名無しさん2014/08/12(火) 09:44:32.52ID:WTdbAkat
>>460
継続渡しはまれにループの途中から抜けるのに使われるでしょう。
たとえば #valueWithExit とか。
メソッド定義の中でもブロックを引数にとるメソッドコール時に
それ以降の処理を続けたくないときに継続渡しとは意識せずによく使うから
> 本物の継続は抜けたり復帰したりしない

というのはあたらないのでは?

あと、>>457も継続渡しスタイルを単に継続と呼ぶのはやめたほうが
0464デフォルトの名無しさん2014/08/12(火) 09:45:48.50ID:EOz2YB3J
【IT】なぜJavaの人気は衰えないのか
http://anago.2ch.net/test/read.cgi/bizplus/1407762363/
0465デフォルトの名無しさん2014/08/12(火) 10:16:01.15ID:WTdbAkat
>>461
反復処理は内包表現でもかまわないと思いますよ。
反復処理の途中から抜けるなんらかの処理オブジェクトを外部から与えて
実際反復処理を抜け出すコードを書け、という趣旨かと。
Pythonではすごく難しそうな気がするのですが、どうでしょうか。
0466デフォルトの名無しさん2014/08/12(火) 10:30:49.56ID:fLw1xr8U
>>465
こういうこと?
でもPythonじゃ凄く難しいってことは、たぶん違うんだよね

http://ideone.com/IpGKgD
0467デフォルトの名無しさん2014/08/12(火) 11:35:18.84ID:WTdbAkat
>>466
処理の大枠はよいと思います。あとはお題の趣旨を満たすための細工として、
next() のデフォルト値に文字列 'not found' を単純に与えるのではなく
- 関数などの何らかの処理オブジェクトの評価をする処理に代える(これは簡単)
- その処理オブジェクトは変数や仮引数などを介して外部から与えられるようにし(これも簡単)
- 評価後、そのコンテキストを抜けられるようにする(これがPythonでは普通は出来ないと思う)

def foo(key, arr, ifnone):
  print(next((v for k, v in arr if k == key), ifnone()))
  print('found')

xs = [('a', 0), ('b', 1)]
foo('c', xs, lambda: return print('not found'))

#出力は not found のみ

みたいな感じかと。(ラムダには式は書けないのでこれじゃダメだけど)
0468デフォルトの名無しさん2014/08/12(火) 11:38:58.62ID:WTdbAkat
>>467
スマン
×ラムダには式は書けない → ○ラムダには文は書けない
0469デフォルトの名無しさん2014/08/12(火) 13:09:20.92ID:Mkt7odSm
>>466
継続渡ってのはPythonで言えば例外機構みたいなもん。
例外と違って、継続渡の結果はBlockを生成したMethodの戻り値になる。
0470デフォルトの名無しさん2014/08/12(火) 13:21:44.78ID:Mkt7odSm
>>466 に近いことをSmalltalkで書くとこんな感じだな。

Transcript show: ( { #a->0. #b->1. } detect: [ :i | #a = i key ] ifNone: [ 'Not Found' asValue ] ) value printString.
0471デフォルトの名無しさん2014/08/12(火) 16:38:37.82ID:Q3pjJ6Tg
>>420
暗にどっちも糞だと言ってることがわからないのか...
0472デフォルトの名無しさん2014/08/12(火) 17:37:46.72ID:/pOJTdAg
>>467
StopIteration例外を捕まえる形で書くのが
簡単なんだけど、これも違う?

http://ideone.com/gXsglf
04734202014/08/12(火) 17:46:37.39ID:nlEvWu1m
>>471
どっちも糞なのはわかった上でどっちがマシかって話だろうが。
どっちも糞で終わるのは話に発展性がないからアホだと思う。
0474デフォルトの名無しさん2014/08/12(火) 18:22:10.16ID:FNwHnEm0
>>462
[^0] value.
だけで、アウトだったよ。最近は違うのかねぇ。
0475デフォルトの名無しさん2014/08/12(火) 19:02:55.57ID:QFuySfxC
>>473
> どっちも糞なのはわかった上で

そんなもん議論する価値ないだろ
バカなの?
0476デフォルトの名無しさん2014/08/12(火) 19:10:33.03ID:AWDNtOwp
>>473
くそがくそといってもくそ説得力なし
0477デフォルトの名無しさん2014/08/12(火) 21:18:11.58ID:DR2IeXaU
>>472
惜しい。例外じゃなく正常系で処理を中断しなきゃ。
因みにSmalltalkは別途例外機構を備えてる。
例外で処理を中止するなら、継続渡じゃなく例外機構に
相当する処理になるね。
0478デフォルトの名無しさん2014/08/12(火) 21:28:02.38ID:bTJ2O5l6
Smalltalkの特徴って何?
例えばLISPはS式やマクロというわかりやすい特徴を持ってるけど、そういう感じで言うとSmalltalkの特徴は何になるのか
オブジェクト指向の元祖とかメッセージングとか、「それで何が変わるのか」がマクロやS式に比べていまいちわかりにくい
0479デフォルトの名無しさん2014/08/12(火) 21:33:19.60ID:DmDQGr0h
>>478
煽りでなく割りとガチで

・気持ち悪い信者がいる
0480デフォルトの名無しさん2014/08/12(火) 21:33:53.56ID:UCLW3XxN
OOPの特徴
getterを使わない
returnを使わない
04814202014/08/12(火) 21:37:19.17ID:nlEvWu1m
>>475
ディベートってものがどういうものか知らないなら黙ってろ
0482デフォルトの名無しさん2014/08/12(火) 21:40:48.11ID:UIxJZqMs
>>478
元祖であることが多いと言うことはわかりやすい特徴では?
なぜなら、それらの機能は他言語で積極的に取り込まれている重要で実用的な機能だから。
0483デフォルトの名無しさん2014/08/12(火) 21:45:43.73ID:UIxJZqMs
例えば、最近脚光を浴びつつあるトレイトはSmalltalk(の一処理系)発だ。
トレイトは多重継承の問題だけでなく、mix-inの名前重複時の問題や、継承パスに関わる問題を解決した。

こういった実用的な機能はPHPなどの、人気のあるメジャーな言語に取り込まれて、Smalltalkから独自性を奪って行くのが悩ましい。
0484デフォルトの名無しさん2014/08/12(火) 21:54:26.50ID:QFuySfxC
>>481
にちゃんでディベートするぼくちゃんカッケー


ってか (pgr
0485デフォルトの名無しさん2014/08/12(火) 21:58:35.09ID:ACV8I0vK
>>478
もしもオブジェクト指向がこの世から無くなれば
一緒に C++/Java/C# ...etc も消え去るけど、
そんなことも分からないの?

>>483
> こういった実用的な機能はPHPなどの、人気のあるメジャーな言語に取り込まれて、
> Smalltalkから独自性を奪って行くのが悩ましい。

他の後発言語に取り込まれる(「パクられる」ともいふ)ことは、
それだけ優れているのだから喜ばしいと考えた方が前向きだと思う

他にも LISP と Prolog、最近では Haskell が同じ立場にいるね
(開発現場では普及していないが、大きな影響を与えた/与える存在として)
0486デフォルトの名無しさん2014/08/12(火) 22:04:13.64ID:UIxJZqMs
そもそもSmalltalkを一言語として評価すること自体的を得ていない気がする。
元々OSの一部みたいなもんだし、真価はOSあってこそ発揮される。

まあ、そのアイデンティティもMacやWindowsに取られて行ったそうだけど。

でも、ジョブズ件の話が本当なら、Smalltalkがなければ、MacやiPhoneは存在しない(今の形ではない)わけで、それだけでマカーの俺には神のような言語だわ。
ぶっちゃけ、詳しいことはよく知らないんだけどね。
0487デフォルトの名無しさん2014/08/12(火) 22:04:28.93ID:fYXVdlIe
>>478
Smalltalkの特徴は、処理系それ自体も含めた可塑性の追求と実践。
LISPのそれとも似ているけどもっと積極的なのと、
マクロで式の意味を増やすような方法はあえてとらず、
「メッセージング」というルールのシンプルさをキープしつつ
その範囲で動的に組み立てたり変えられることを多くしている。
http://web.archive.org/web/20041016084842/http://marimpod.homeip.net/chomswiki/24#
http://metatoys.org/oxymoron/oxymoron.html

エンドユーザーがニーズに合わせ、変貌させ拡張していける言語で
そのための機能や機構が充実していると考えるとよいかも。
0488デフォルトの名無しさん2014/08/12(火) 22:06:00.11ID:fYXVdlIe
>>479
気持ち悪いアンチがいるというのもセットで。
0489デフォルトの名無しさん2014/08/12(火) 22:09:01.42ID:zX1YfWsN
>>478
Classだろうが、Instanceだろうが名前の付くものは全部Object。
全部Objectだから、数値型だの配列型だの関数だの
区別しなくて良くなった。
全部Objectになったお陰で、人間的にObjectを区別しなくて
良くなった。だけじゃ無くMethod側も、
引数が数値だとか関数だの区別しなくなった点が
利点として大きい。

あと、Source codeとProcessっていう
従来の区別が無いのも大きな特徴。
開発環境自体が実行Processだから、Sourceをいじるんじゃなく
直接Objectをこねくり回せる。
設定だの普通外部のFileに保存している情報を、
Smalltalkだと外部に置く必要がない。
0490デフォルトの名無しさん2014/08/12(火) 22:16:33.14ID:tbFo1OkT
Smalltalk談話はもうお腹いっぱいです
0491デフォルトの名無しさん2014/08/12(火) 22:18:18.77ID:UIxJZqMs
>>490
Smalltalkを語ることは、OOPとOOPに関わるパラダイムを語ることに等しいと思うのです。
だから、盛り上がるのは仕方ないでしょう。
0492デフォルトの名無しさん2014/08/12(火) 22:26:15.05ID:bJ/x0GjC
>>448みたいなのがOOP?
どっちかというと実装技術としてOOPの概念を使ってるだけのように見えるんだけど
MVCなんか見ててもそういうところはあるように感じるし、Smalltalkってそういう言語なの?
0493デフォルトの名無しさん2014/08/12(火) 22:33:56.72ID:fLw1xr8U
後発の言語がgotoは強力すぎるから制限を加えたりしてる中、
gotoがあることを自慢してる古い言語があったら痛いだろ?
Smalltalkはまさにそれ
0494デフォルトの名無しさん2014/08/12(火) 22:38:35.19ID:oSKoCY4c
>>486
OSXのMenu barはApple Smalltalk由来だしね。

ゲイツはOSを全てObjectで構成する事を聖杯とよび、
COMやらCLI(.Net Frameworkの一部)を普及させて、
OS要素のObject化に尽力した。
この目標の指標になったのがSmalltalk環境でゲイツに対してはかなりの影響を与えていた。

結局WindowsはClassを複数の言語で共有できる様になっただけで、
複数のProcess間でObjectを共有したり(ObjectをFileに保存して共有など)、Objectをいじくり回したりってのは極めて限定的にしか
できないんだけど。
0495デフォルトの名無しさん2014/08/12(火) 22:45:41.33ID:oSKoCY4c
>>492
Alan kayの目指したOOは、極端に言えば概念の再帰。

“The basic principal of recursive
design is to make the parts have the
same power as the whole.”
「再帰設計の基本原理は、部品が全体
と同じ力を持つようにすることだ」

OOの原点が上記の言葉であることから判るように、
どんな小さい問題でも、どんな大きい問題でも、
再帰的に同じ手順で問題を解決するってのが、
OOの根幹をなしている。
0496デフォルトの名無しさん2014/08/12(火) 22:50:46.88ID:WUrGCqmI
>>492

>>439の方がOOらしさを表してると思う。
0497デフォルトの名無しさん2014/08/12(火) 22:58:25.47ID:UIxJZqMs
>>477
Rubyでいうとlambdaではなく、Procかブロック(イテレータ)使えってことかな?
0498デフォルトの名無しさん2014/08/12(火) 23:06:27.27ID:WUrGCqmI
こういう型を選ばない処理は特にOO的だと思う。

| inverse |

inverse :=
[ :target :source |
 "座標の反転式"
 source - ( target - source ).
].

Transcript
 show: ( inverse value: 2 value: 1 ) printString;
 show: ( inverse value: 2 @ 2 value: 1@1 ) printString;
 show: ( inverse value: #( 2 2 2 ) value: #( 1 1 1 ) ) printString.
 
0499デフォルトの名無しさん2014/08/12(火) 23:26:37.65ID:KuUz/q+b
>>497
そうだねRubyだとBlockだね。
RubyのBlockは制限付けたSmalltalkの
Blockみたいなもんだし。
0500デフォルトの名無しさん2014/08/12(火) 23:27:14.39ID:CjMQ24/s
>>477
指定したキーが最後まで見つからない状況を
正常系と言い切るのは無理があるでしょ
0501デフォルトの名無しさん2014/08/12(火) 23:53:32.27ID:R76YiGJz
>>500
例外処理してる事が間違ってるって話じゃなくて、
目的の値が見つかったらMethodごとList内包表記を
脱出してねって話し。
0502デフォルトの名無しさん2014/08/13(水) 00:27:55.54ID:xwn08+4R
>>499
すでに>>454が書いてるが、Hash使うとこうか
http://ideone.com/L3dt20
Hashだから、return h[k] if h.has_key?(k)したいけど...
0503デフォルトの名無しさん2014/08/13(水) 00:40:47.19ID:SnNoU8hS
>>501
そんなのが本当に必要になる処理って何?
0504デフォルトの名無しさん2014/08/13(水) 03:26:27.36ID:gUy2vYSA
Smalltalk最大の特徴は、開発環境とコードと実行環境が密な点じゃね。
それが最大の長所でもあり、最大の欠点でもあると思う。

SmalltalkというOSの上で、Smalltalkという言語を用いてシェルスクリプトを書いて実行している、という表現をどっかで見たような。
0505デフォルトの名無しさん2014/08/13(水) 03:33:48.43ID:UnJCC4oa
>>502
趣旨は「継続渡しによる処理の中断が可能か?」なので
こうだろうね。
http://ideone.com/GcDjDJ

Rubyはトップレベルでreturnできないから
メソッド定義を一段かます必要があるため
呼び出しがSmalltalkより少し不格好になるけれども
0506デフォルトの名無しさん2014/08/13(水) 03:43:40.77ID:UnJCC4oa
>>504
>>487の一つ目のリンクの文書に
どうしてSmalltalkがOSの機能の一部を代替する必要があったか
理由が書いてあるね。
0507デフォルトの名無しさん2014/08/13(水) 07:50:20.20ID:vowM3sUt
>>505
趣旨は合ってんだけど、課題の箇所が違うね。

aKeySymbol = each key ifTrue:
[
 ^ each value.
].

課題になるのは上記のBlock。
上記のBlockは#do:に渡したBlockごとMethodを抜けてる
んだけど、
そこを抑えてほしいな。

#do:のBlock
 #ifTrueのBlock ←ここから一気にMethodを抜ける。

因みにの新しい検索Logicを実装したり、
構文解析する時の基本Patternだよ。
0508デフォルトの名無しさん2014/08/13(水) 08:28:43.35ID:2+UwraKO
>>507
>因みにの新しい検索Logicを実装したり、
>構文解析する時の基本Patternだよ。

時代遅れすぎる
今時そんなコードの書き方しねーよ
0509デフォルトの名無しさん2014/08/13(水) 09:05:40.33ID:HbTLLkjT
>>505
その趣旨とやらに従わない方が
お題を簡単に解けるわけじゃん

趣旨に全く価値が無いんじゃない?

価値があるって証明できるようなお題は出せないわけ?
0510デフォルトの名無しさん2014/08/13(水) 17:47:52.35ID:M/yU7i7Q
>>494
それって、カトラーに反対されたんだろ
0511デフォルトの名無しさん2014/08/13(水) 18:47:16.01ID:VFKOuvkt
>>494
MenuはSmalltalk由来かもしれんが"bar"はApple Lisaオリジナル
0512デフォルトの名無しさん2014/08/13(水) 19:32:09.25ID:Bq2i/l+P
正直Smalltalk知らないからなにやってるのかよくわからんが
>>502 でいいのじゃないのか
メソッドごと抜けたいならブロック内でbreakすればいい
def find_val(h, k)
h.each { |_k,v| return v if _k == k }
yield
puts "ここを実行されたくなければ ブロック内でbreak"
end

p find_val({ a: 0, b: 1 }, :a) {break "not found" } #=>0
p find_val({ a: 0, b: 1 }, :c) {break "not found" } #=>"not found"

ちなみに breakの引数が呼び出しもとのメソッドの返り値になる
出自がイテレーターなのでキーワードがbreakなんだけど、やってることはreturn

そもそも、Rubyのブロックつきメソッドは高階関数ひとつを特別扱いするメソッドで制御構造を抽象化するものなので
高階関数(Rubyではブロック)内から一気にメソッドを抜けられないと困る
0513デフォルトの名無しさん2014/08/13(水) 19:35:56.02ID:wesBl/H+
これか。

WinFSの技術の源流は、90年代中頃に
WindowsNT 4 として企画されたCairoプロ
ジェクトにさかのぼる。Cairoプロジェクト
は、コンピュータの OS そのものをオブジェ
クト化し、全てのデータを オブジェクト指
向 で扱う事の出来るOSを完成させるとい
う、非常に野心的な計画であったが、あま
りにも壮大な構想であったため頓挫。以
後、ファイル情報をオブジェクト指向技術
で取り扱おうとするプロジェクトは、マイ
クロソフト社内で何度か進行するが、その
たび中止中断を余儀なくされている。 ビ
ル・ゲイツ は同技術を「情報技術の聖杯」
と呼び、長年にわたる最終目標としてきた
が、未だに実現はなされていない。WinFS
の開発にあたって、ついに同技術の実用化
が実現されることが期待されたが、2006年
6月23日に開発の中止が決定された。
0514デフォルトの名無しさん2014/08/13(水) 20:04:02.40ID:wesBl/H+
>>508
最先端の書き方とやらを教えとくれ。
0515デフォルトの名無しさん2014/08/13(水) 20:05:27.98ID:Word07jU
>>508
今時の書き方とやらを教えとくれ。
0516514=5152014/08/13(水) 20:07:02.76ID:Word07jU
書き込み失敗したかと思ってもう一度書き込んだら、
自演みたいになってもうた。
0517デフォルトの名無しさん2014/08/13(水) 20:39:12.87ID:Word07jU
>>509
無名高階関数を多様する言語特有の例だけどこんなの。

! Contour methodsFor: 'test' !
isOrverlapped: aContour

 "凸閉鎖領域同士の交差判定"
 self segments do:
 [ :segment1 |
  aContour segments do:
  [ :segment2 |
   "辺を構成する線分同士が交差していれば衝突と判定する"
   ( segment1 isInterselected: segument2 ) ifTrue:
   [
    ^ true.
   ].
  ].
 ].
 ^ false.
!!
for eachを言語機能のとして持ってる言語なら、
大きな利点は無いが、Smalltalkでは
言語機能としてfor eachが要らないという利点がある。
それは後発言語の言語機能をLibraryでだけで幾らでも再現できるという事でもある。
0518デフォルトの名無しさん2014/08/13(水) 20:46:32.33ID:Word07jU
| segmentsOfContour |

segmentsOfContour := aContour segments.
^ self segments detect: [ :segment1 | segmentsOfContour detect:[ :segment2 | segment1 isInterselected: segment2 ] ].

こっちでも良かったな。
0519デフォルトの名無しさん2014/08/13(水) 20:48:41.71ID:MCkfVLQX
>>517
一方がもう一方に内包されているケースが考慮されてないし、
それを無視するなら別に凸領域に限る必要ないよね
O(N^2)なのもちょっとね
やりなおし
0520デフォルトの名無しさん2014/08/13(水) 20:56:37.29ID:Word07jU
>>518はよくよく考えたらダメだったわ

>>519
本格的にやるなら、台形積分による回転方向の判定やら、
isInterselectedの前ににcontains:の追加やら増えるが、
本質じゃねえからどうでもいいじゃん。
例なんだからそんな雑音増やしてどうする。
0521デフォルトの名無しさん2014/08/13(水) 20:59:07.71ID:MCkfVLQX
>>520
実際の開発はその雑音が成果物のほとんどを占めるんだから
ミニマムな例ばかり挙げて言語の良し悪しを語るのはナンセンスだということだよ
0522デフォルトの名無しさん2014/08/13(水) 21:11:12.90ID:HbTLLkjT
>>517
Smalltalkは分からないんだけど、Pythonで書くと
こんな感じのことをやってる?

any(segment1.is_interselected(segment2)
    for segment1 in segments
    for segment2 in segments)
0523デフォルトの名無しさん2014/08/13(水) 21:19:15.41ID:Word07jU
>>522
大体そんな感じ。Smalltalkの方が計算量すくないけど。
0524デフォルトの名無しさん2014/08/13(水) 21:20:22.70ID:HbTLLkjT
>>523
計算量の説明頼む
0525デフォルトの名無しさん2014/08/13(水) 21:22:28.94ID:HbTLLkjT
一応捕捉しておくと、Pythonのanyはジェネレータ式を順番に評価していって
最初にTrueが見つかったら計算止まるから、その話では無いんだよね>計算量
0526デフォルトの名無しさん2014/08/13(水) 21:34:31.99ID:Word07jU
>>524
Smalltalkの例は2重の反復を使った線形探索だから、
最短は1回。最大はN x Mになる。

Pythonの例は最短N x M x 1で
最大N x M x 2でしょ。
0527デフォルトの名無しさん2014/08/13(水) 21:37:14.45ID:xwn08+4R
>>518
どうでもいいけど、IDがword07だな
word07jpなら完璧なのに
0528デフォルトの名無しさん2014/08/13(水) 21:38:46.04ID:MCkfVLQX
>>526
ジェネレータだから実際に要素を取得するまで要素の値は評価されないんだよ
評価はSmalltalkの例と同じで最短1回、最大N×M回だ
古い言語に固執するのもいいが、ストリームくらい今の言語じゃ常識だからちょっとは視野を広げたほうがいいぞ
0529デフォルトの名無しさん2014/08/13(水) 21:43:39.02ID:Word07jU
>>528
a := 1 to: 5.
ってのと同じわけね。ナルホド。
0530デフォルトの名無しさん2014/08/13(水) 21:54:41.94ID:2+UwraKO
今時の書き方を教えてもらって良かったねw
0531デフォルトの名無しさん2014/08/13(水) 22:02:02.27ID:Jg7TjT55
ジェネレータは実質的に軽量スレッドと同じ
今では軽量スレッドがない言語はlambdaがない言語と同じ位恥ずかしい
0532デフォルトの名無しさん2014/08/13(水) 22:02:20.84ID:Word07jU
今時というか昔からGeneratorってのが存在してるから今更感が。
0533デフォルトの名無しさん2014/08/13(水) 22:12:31.25ID:MCkfVLQX
どうやってループを書くかなんてどうでもよくて、
今はループを抽象化して宣言的に記述するのがトレンドというか常識なんだよ
やっぱりSmalltalkerはズレてるわ
0534デフォルトの名無しさん2014/08/13(水) 22:15:20.92ID:Word07jU
>>522と>>517を似せて並べるとこんな感じか。

segments1 do: [ :segment1 | segments2 do: [ :segment2 | ( segment1 isInterselected: segument2 ) ifTrue: [^ true.].].]. ^ false.


any( segment1.is_interselected( segment2 ) for segment1 in segments for segment2 in segments )
0535デフォルトの名無しさん2014/08/13(水) 22:29:40.27ID:xwn08+4R
>>533
宣言的に記述「する」のが常識ってのは言い過ぎ
宣言的に記述「できる」のはまあプログラムオタなら常識だよねって段階
0536デフォルトの名無しさん2014/08/13(水) 22:40:38.49ID:Jg7TjT55
pythonのlambdaの中に式しか書けないのは多分その宣言的トレンドのせいだ
0537デフォルトの名無しさん2014/08/13(水) 23:01:57.83ID:Word07jU
>>534をもっと短くしてみた。

segments1 contains: [ :segment1 | segments2 contains: [ :segment2 | segment1 isInterselected: segument2 ].


any( segment1.is_interselected( segment2 ) for segment1 in segments for segment2 in segments )
0538デフォルトの名無しさん2014/08/13(水) 23:03:50.86ID:Word07jU
処理は単純になったのに帰って長くなったな
0539デフォルトの名無しさん2014/08/13(水) 23:10:25.32ID:MCkfVLQX
segments1.SelectMany( _
 Function(segment1) segment2, _
 Function(segment1, segment2) New With { segment1, segment2 }) _
.Where( _
 Function(pair) pair.segment1.Intersect(pair.segment2)) _
.Any()
VBに負けないようにこれと同じ構造をSmalltalkで表現してくれ
もちろんこれPythonの例と同じで遅延評価だ
0540デフォルトの名無しさん2014/08/13(水) 23:19:57.99ID:MCkfVLQX
>>539
補足
条件は、
・ループのネスト構造を見かけ上排除すること
・遅延評価であること
0541デフォルトの名無しさん2014/08/13(水) 23:48:54.24ID:KN2EsXN5
segments1 contains: [ :segment1 | segments2 contains: [ :segment2 | segment1 isInterselected: segument2 ].

any( segments1.is_interselected( segment2 ) for segment1 in segments for segment2 in segments )



segment1.product(segments2).lazy.select { |(segments1, segments2) segments1.interselected? segments2 }.any?

Ruby だとこんな感じかなぁ....
他よりやや長いコードになるけど、
・カッコが入れ子にならない「メソッドチェーン」
・左から右へとデータの流れに沿った「流れるようなコード」
という可読性が Ruby コードの特徴だね
0542デフォルトの名無しさん2014/08/13(水) 23:52:42.71ID:KN2EsXN5
>>541 の細かいミスを訂正

segments1.product(segments2).lazy.select { |(segments1, segments2)| segments1.interselected? segments2 }.any?
0543デフォルトの名無しさん2014/08/13(水) 23:52:45.06ID:MCkfVLQX
>>541
productが遅延評価じゃないからアウト
0544デフォルトの名無しさん2014/08/13(水) 23:58:59.15ID:QyjDEwJb
>>539
C#に直すとこんな感じか。VB読み辛れー。
それとsegment2はどこから来たんだ?
segments1.SelectMany
(
 ( segment1 ) => segment2,
 ( segment1, segment2 ) => new{ segment1, segment2 }
)
.Where
(
 ( pair ) => pair.segment1.Intersect( pair.segment2 )
)
.Any();
0545デフォルトの名無しさん2014/08/14(木) 00:00:30.53ID:Tb3ur59k
>>544
すまん( segment1 ) => segment2,のところのsegment2はsegments2の間違いだ
0546デフォルトの名無しさん2014/08/14(木) 00:04:20.83ID:KN2EsXN5
>>543
残念でしたw
・ブロックを伴わない product は(Array ではなく) Enumerator オブジェクトを返す
・lazy によって以降の評価は遅延されるから、(全要素を select してから any? で
 判定するのではなく)select の途中で1度でも真になれば、即座に結果を返すことができる
0547デフォルトの名無しさん2014/08/14(木) 00:24:28.40ID:Tb3ur59k
>>546
その自信は一体どこから来たんだ
x=[1,2,3]
y=[4,5]
x.product(y).lazy.each { |z| p z; x[2]=9 }
→ [1, 4] [1, 5] [2, 4] [2, 5] [3, 4] [3, 5]
0548デフォルトの名無しさん2014/08/14(木) 00:42:37.72ID:sq+uQd00
>>547
each は「全要素を強制的(force)に列挙する」メソッドだ
Ruby は >>547 の書いたコードに従って動いているだけ

それに対して、>>541,542 の any? は「列挙した要素が真になるまで列挙する」から、
もしも要素の先頭で select の条件が真になれば、そこで列挙を止めてしまう
もちろん1つも真の要素が無ければ全要素を列挙することになるけど、
これは他の言語も同じ

もし偉そうな態度を取りたいなら、もう少し遅延評価の概念を勉強したほうがいいと思うな
0549デフォルトの名無しさん2014/08/14(木) 01:04:32.13ID:sq+uQd00
>>547
>>547 の any? 版の実行例を以下に示す

$ irb
irb(main):001:0> x=[1,2,3]
=> [1, 2, 3]
irb(main):002:0> y=[4,5]
=> [4, 5]
irb(main):003:0> x.product(y).lazy.select { |pair| p pair; pair[0] == 1 }.any?
[1, 4]
=> true
irb(main):004:0> x.product(y).lazy.select { |pair| p pair; pair[0] == 2 }.any?
[1, 4]
[1, 5]
[2, 4]
=> true
irb(main):005:0> x.product(y).lazy.select { |pair| p pair; pair[0] == 0 }.any?
[1, 4]
[1, 5]
[2, 4]
[2, 5]
[3, 4]
[3, 5]
=> false

この魔法が遅延評価だよ
0550デフォルトの名無しさん2014/08/14(木) 01:08:16.46ID:Tb3ur59k
>>548-549
select以降が遅延評価なのはわかってるよ
productが全要素即時評価されてるって言ってるの
ソースコード見ればわかるけど、productは普通にその場で全要素求めて配列作って返してるよ
ドキュメントにもそう書いてあるし
0551デフォルトの名無しさん2014/08/14(木) 01:09:34.83ID:sq+uQd00
>>541 では Ruby コードを評して「左から右へとデータの流れに沿った」と
書いたけど、適切な改行とインデントを施すと、
今度は「上から下へとデータの流れに沿った」流れるようなコードになる

segments1.product(
  segments2
).lazy.select { |(segments1, segments2)|
  segments1.interselected? segments2
}.any?
0552デフォルトの名無しさん2014/08/14(木) 01:14:01.56ID:Bx+g5Wlq
Smalltalkの遅延評価その1

result := ( Generator on: [ :g | segments1 do: [ :segment1 | segments2 do: [ :segment2 | g yield: segment1 = segment2 ] ] ] ) contains: true.
0553デフォルトの名無しさん2014/08/14(木) 01:14:26.17ID:sq+uQd00
>>550
>productが全要素即時評価されてるって言ってるの

ああそういうことか、わかった
0554デフォルトの名無しさん2014/08/14(木) 01:55:29.92ID:sq+uQd00
>>550
では、Array#product 遅延評価版である Array#lazy_product を書いてみた

class Array
  def lazy_product(ys)
    Enumerator.new do |yielder|
      self.each do |x|
        ys.each do |y|
          p PRODUCT: [x, y] if $DEBUG

          yielder << [x,y]
        end
      end
    end
  end
end


$ irb -I. -rlazy-product.rb
irb(main):001:0> x=[1,2,3]
=> [1, 2, 3]
irb(main):002:0> y=[4,5]
=> [4, 5]
irb(main):003:0> $DEBUG=true
=> true
irb(main):004:0> x.lazy_product(y).lazy.select { |pair| p pair; pair[0] == 1 }.any?
{:PRODUCT=>[1, 4]}
[1, 4]
=> true
(以下略)
0555デフォルトの名無しさん2014/08/14(木) 03:41:36.05ID:GA9ob7vd
かくも深いインデントの不格好なlazy_productを書くしかない
rubyの特徴が「流れるようなコード」だと自慢げに言い切る
ruby使いの分裂症っぽさがここんとこの笑いどころ?
0556デフォルトの名無しさん2014/08/14(木) 07:18:12.07ID:XQFcvtlU
Pythonのproductはジェネレータを返す

any(segment1.is_interselected(segment2)
    for segment1, segment2
    in product(segments1, segments2))


もし自前でproductを定義するなら、こんな感じになるかな

def product(*args):
    if len(args) == 0:
        yield tuple()
    else:
        yield from ((x,) + xs for x in args[0] for xs in product(*args[1:]))
0557デフォルトの名無しさん2014/08/14(木) 07:58:17.60ID:MNSDSqVI
Python並みに短いGeneratorを作ってみた。
http://ideone.com/uDIAG4

コレを使って衝突判定のGeneratorを書くと大体Pythonと同じ位。
{ segments1. segments2 } inquire:[ :segment1 :segment2 | segment1 isInterselected: segment2 ]
segment1.is_interselected( segment2 ) for segment1 in segments1 for segment2 in segments2

省ける空白を省くとPythonより短くなる。
{segments1. segments2}inquire:[:segment1:segment2|segment1 isInterselected:segment2]
segment1.is_interselected(segment2)for segment1 in segments1 for segment2 in segments2
0558デフォルトの名無しさん2014/08/14(木) 08:15:28.68ID:AAbOZc9T
共同体を拡張すれはPythonと同じ長さになるね。
segments1->segments2 inquire:[ :segment1 :segment2 | segment1 isInterselected: segment2 ]
segment1.is_interselected( segment2 ) for segment1 in segments1 for segment2 in segments2
0559デフォルトの名無しさん2014/08/14(木) 08:57:22.80ID:HZICApg1
>>554
class Array
def lazy_product(ys)
enum_for(:product,ys)
end
end
でいいよ
直接書いてもいいくらい

a=[*1..100000]
a.enum_for(:product, a).first #最初のひとつだけを得る
a.product(a) #素のproductだと生成しようとする配列が大きすぎるとエラーになる

enum_forメソッドはジェネレーター(RubyではEnumerator)が出来たときから
内部イテレーターをジェネレーターに変換するために存在しているよ
0560デフォルトの名無しさん2014/08/14(木) 08:59:27.19ID:HZICApg1
Array#productはジェネレーターが出来る前からArrayを返してるメソッドだからね
内部イテレーターとして使うなら普通に途中でぬけりゃいんだけど
def orverlap? segments1, segments2
segments1.product(segments2) do |(segment1, segment2)|
return true if segment1.interselected? segment2
end
false
end

で
>>541 はlazyいらない
segments1.enum_for(:product, segments2).any?{|(segment1,segment2)| segment1.interselected? segment2}
でいい
0561デフォルトの名無しさん2014/08/14(木) 10:22:00.46ID:gDq8F6/x
これまでのやり取りでわかったことは、PythonかRubyがあれば
わざわざ古臭くユーザも碌にいない仕事も無い
Smalltalkを勉強する必要など無いってことかな
0562デフォルトの名無しさん2014/08/14(木) 10:42:13.75ID:GA9ob7vd
これまでのやり取りでわかったことは、Smalltalkの気持ち悪いアンチは
Smalltalkを学ぶ余裕すらないばかりか、自分の好きな言語の機能も
ろくすぽ理解できていないからコードもまともに書いて出せないってことかな
0563デフォルトの名無しさん2014/08/14(木) 10:59:07.53ID:hrjPLdIO
わかったことは、Smalltalkが奮闘している時はなぜかJavaScriptが出てこないこと
0564デフォルトの名無しさん2014/08/14(木) 11:38:55.37ID:gDq8F6/x
>>562
Smalltalkが古臭いのもユーザが碌にいないのも事実じゃん
だったらせめて他言語に無い卓越した点でも見せて欲しいのに、いままでのやり取りでは皆無と言う他無い

っていうか、Smalltalkerが自分に有利(と思い込んだ)お題を出して
その度に返り討ちにあってるんだけどね
0565デフォルトの名無しさん2014/08/14(木) 12:54:30.62ID:oKWze5l1
ユーザー数やシェアはその言語に学ぶべき事があるか否かとは関係ない。
そういった主張をする場合、学習能力や機会がなかったことを正当化していることが多い。

「いまどき」の動的型言語にない機能は必要ないからと信じて疑わない信者が
「他言語に無い卓越した点でも見せて欲しい」とか片腹痛い。挙げてもらったところで
「そんな機能は必要ない。理由はオレの大好きなホゲ言語にはないから。」と
なるのがオチだし、実際そういう主張が繰り返されている。
0566デフォルトの名無しさん2014/08/14(木) 13:01:24.78ID:Bx+g5Wlq
>>564
Pythonの遅延評価はSmalltalkで同等のものが出来て、
継続渡はPythonで出来なかった。
そんでRubyに関しては論外。何を勝ち誇ってんの?
0567デフォルトの名無しさん2014/08/14(木) 13:09:42.35ID:gDq8F6/x
>>566
継続渡があった方が良い例として
自信満々に出したお題(>>517)が
継続渡を使わずにあっさり解かれちゃってるんですけど

いつまで待てば継続渡が必要なお題が出てくるの?本当に必要なの?
0568デフォルトの名無しさん2014/08/14(木) 13:15:08.62ID:EVB5pTuw
学ぶ価値がない方向に必死に誘導したいのに
スルーされて、むしろそれをきっかけに
かえって Smalltalk の話題が出たりして
なんだか「返り討ち」にあっているのって
孤軍奮闘の気持ち悪いアンチくんのほうな気が
0569デフォルトの名無しさん2014/08/14(木) 13:15:42.36ID:gDq8F6/x
大体、Pythonはいろいろな書き方が出来るのを好まない言語じゃん
そんな言語相手に、いろいろな書き方出来ますって胸張ってどうすんだっつの
0570デフォルトの名無しさん2014/08/14(木) 13:18:01.29ID:avgy6H10
継続渡の1番の利点はBlockと組み合わせて言語が小さくなる事。
コレが一番だね。Generatorや
For Each如きに専用構文用意しなくていい。
将来必要になれば使用者がいつでも用意できる。
0571デフォルトの名無しさん2014/08/14(木) 13:18:29.38ID:gDq8F6/x
それにRubyとの差も、たまたま標準でメソッド持ってるかどうかの差でしか無かっただろ
0572デフォルトの名無しさん2014/08/14(木) 13:54:08.40ID:EVB5pTuw
たとえば、Ruby(過去のRubiniusを除く)やPythonにない機能としては
実行中のコンテキストに実行中に容易にアクセスできる機能があるけれど
やっぱり今どきの動的型言語にはない機能だから、
最初から必要ないって話になりそう…
(ちなみにこの機能はSmalltalkの強力と言われるデバッガに活用されています)

すでにアラン・ケイらの主張として出ているとおり、
Smalltalkの特徴(やそれを学ぶ価値)は
言語機能として用意されていない、
本来なら言語の根幹に手を入れないと実現不可能な機能も
比較的容易に実現可能なメタ機能がそろっているところだから、
あるがままでそれがすべての今どきの動的型言語を
満足して使っているファンとは話はたぶん合わないと思うよ。
0573デフォルトの名無しさん2014/08/14(木) 14:17:40.99ID:hrjPLdIO
AltJSのせいで、言語の根幹に手を入れ専用構文を作るのは簡単にできると判明している
0574デフォルトの名無しさん2014/08/14(木) 14:19:52.72ID:gDq8F6/x
あれ、もうお題を出すのは諦めちゃった感じ?
長々と語り始めちゃったけど
0575デフォルトの名無しさん2014/08/14(木) 15:42:00.17ID:EVB5pTuw
読解力不足(というかいわゆるコミュ障か)も、ここまでくると悲惨だな
0576デフォルトの名無しさん2014/08/14(木) 16:24:54.78ID:qppS6X9h
Pythonもルビーも文法が気に入らない、わかりにくいが。
Pythonの方がマシだな。
とりあえず、関数などの単位はカッコ{}にしてくれないとわかりにくい。
0577デフォルトの名無しさん2014/08/14(木) 17:04:26.25ID:3kJ9eJuT
>>576
お前の頭が古くて欠陥品なだけだろ。
アップデートしろカスが
0578デフォルトの名無しさん2014/08/14(木) 17:28:20.96ID:qppS6X9h
>>577
カッコ{}のほうが後発で、それを使わない奴は古典。ALGOLは1950年代中ごろ、C言語のもとのBCPLは1966年の誕生。



ALGOL - Wikipedia
ALGOL(アルゴル)は、命令型プログラミング言語ファミリの1つ。
名前「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する。
1950年代中ごろに開発され、多くの言語に影響を及ぼし、ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われた。
ALGOLはコードブロックを導入し、begin と end でそれを囲むことで、構文スコープのネスティングを可能にした最初の言語となった。
また言語の形式的定義を真剣に検討した最初のプログラミング言語でもあり、"Algol 60 Report"で言語設計の主要な記法となったバッカス・ナウア記法を導入している。




BCPL - Wikipedia
BCPL (Basic Combined Programming Language、Basic-CPL)は1966年にケンブリッジ大学のマーティン・リチャーズが設計したプログラミング言語である。
BCPLはB言語の基礎となっており、B言語から派生したC言語は文法的にBCPLの亜種であるといえるため、その影響は現在にも色濃く残されている。
BCPLは世界初の弓カッコ『{}』を文法規則に利用した言語である。
弓カッコは度重なる文法の変化を生き残り、プログラミング言語の構成要素として一般的になった。
C言語では採用されなかったBCPLの//による単一行のコメントはC++や後のC99で再び採用された。
BCPLは1960年代初頭に開発された複雑なCPLを簡単にしたものである。
リチャーズは「コンパイルを難しくする特徴を仕様から削る」ことによりBCPLを開発した。
BCPLはクリーンでパワフルで移植性が高かった。そのため小さくて単純なコンパイラを記述することが可能であった。
コンパイラが16KBのメモリで動作すると言われた。
しかもリチャーズのコンパイラはそれ自身がBCPLで記述されており、非常に移植性が高かった。
そのためBCPLは処理系のブート用として人気のある選択肢だった。
0579デフォルトの名無しさん2014/08/14(木) 17:31:10.88ID:8pzBRI+b
好みの問題と自覚しているなら問題ない
押し付けてくる奴は害悪
0580デフォルトの名無しさん2014/08/14(木) 17:32:20.17ID:UKa3zRV/
>>576
> 関数などの単位はカッコ{}にしてくれないとわかりにくい。

悪いなあ、他を当たってくれよ
0581デフォルトの名無しさん2014/08/14(木) 17:37:39.01ID:T6HYng3R
まあ、Rubyなんかはワンライナーで書く時見にくいとは感じる。

def aaa; ... ;end
def aaa{ ... }

Pythonはそもそもこういった書き方を許さないし。

ま、色々な考えがあっていいんじゃね
0582デフォルトの名無しさん2014/08/14(木) 17:59:01.87ID:7RDwpu6J
文法の流行りと起源は関係無いだろうが
文末のセミコロンもイラネ
0583デフォルトの名無しさん2014/08/14(木) 18:44:30.16ID:3kJ9eJuT
もじって左から右に読むだろ?
まぁ、極たまに縦読み左から右(日本)や
左上から読む(イスラムとかユダヤとか)があるけどそれは文化として残るのなら全然構わないが、
機械に指示すること、それを第三者が見やすくして、再利用しやすくすること
が今のプログラミング言語に求められてるわけだろ?それが本質だろ?

そこにいろんな書き方があっていいはずだーって主張する奴ら鏡見ろよ。
それを押し付けるな。

読み方書き方が統一されてて、機械も第三者も見やすく読みやすく、書き直しやすくされてるプログラム及びプログラミング言語が善。

いいんだよ、いろんな書き方があっても。
けどね、それはお家で1人でオナニーする時に使ってくれないかな。
自分が書いたプログラムが他人にも読んでもらえず賞賛されず、はたまたプログラミング言語も理解してくれず(Rubyの互換性のないアップデート)、一生懸命自分の時間を捧げてきたものがそうなった時の虚しさたるやさぞ苦しいだろうに。
0584デフォルトの名無しさん2014/08/14(木) 19:13:26.05ID:EcJA/eZW
>>576
LISP系「俺らは括弧で囲むから大丈夫だな!」
0585デフォルトの名無しさん2014/08/14(木) 19:22:37.60ID:7OYR5/1K
>>583
長い3行
0586デフォルトの名無しさん2014/08/14(木) 19:24:44.61ID:Wg1tI0aE
個人的な意見を述べれば
pythonはモジュール群の数や質(保守)の点でいいと思うけど
構文は糞だなと思う
読みやすいだけで書きづらくメンテしづらい
インデント構文なんてバグの温床だよ
0587デフォルトの名無しさん2014/08/14(木) 19:32:41.57ID:8pzBRI+b
>>586
例えばどんなケースでPythonの構文がバグにつながるの?
0588デフォルトの名無しさん2014/08/14(木) 19:33:24.81ID:sq+uQd00
>>583
>> そこにいろんな書き方があっていいはずだーって主張する奴ら鏡見ろよ。
>> それを押し付けるな。

まったくもって日本語にとっては、
右から左へとコードを書くことを押し付けられるのは嫌ですね
そんな言語を善と押し付ける奴は、鏡で自分の顔を見てもらいたいものですねな


>> 読み方書き方が統一されてて、機械も第三者も見やすく読みやすく、
>> 書き直しやすくされてるプログラム及びプログラミング言語が善。

ああ COBOL のことですね、たいへんよくわかります


>> Rubyの互換性のないアップデート

過去に大きな問題が発生したという記憶はないけど、何の話をしてるの?
ああそういえば、2008年にリリースが開始されたのに、
未だに GAE からサポートを見捨てられている言語なんてのもありましたね
0589デフォルトの名無しさん2014/08/14(木) 19:34:03.65ID:3kJ9eJuT
>>586
読みやすいだけ。
これ超重要。

人間の脳をどう動かしても読みやすさとか、理解しやすさとかまでは変えられないよね?読む人達全ての学校教育の頃から面倒見ないといけない。それは事実上無理なんだから、
今文字読める人達の読みやすさにプログラミング言語が合わせるべき、
その際でインデントで発生するバグなんて
ソフトウェア側に頑張らせてバグを無くせばいい。
アホにはできんと思うが。


モジュールの数とか利用者の数、アップルや米軍にも使われていて、言語の開発者自体もDropboxで働いていてバリバリ新しいもの作り出してる。

要約するとPythonすげぇ
0590デフォルトの名無しさん2014/08/14(木) 19:57:04.57ID:1YD1Mn32
>>589
公開前にフォーマッタを通すだけ
自宅のオナニーの作法まで求めるなと
0591デフォルトの名無しさん2014/08/14(木) 20:40:10.42ID:zFilogMs
糖衣構文、黒魔術満載な言語って一見楽そうで一人前になるには学習コスト高くつくからなぁ
スクリプト言語ってあくまでサブとして片手間で使うもんだからコストはあんまかけたくないね個人的に
面倒くさいのはC++だけで十分だ
0592デフォルトの名無しさん2014/08/14(木) 21:57:00.30ID:hrjPLdIO
デザインパターンが株などの投資だとすると黒魔術は現金
覚える手間はかかるが嘘を覚えさせられるリスクが低い
0593デフォルトの名無しさん2014/08/14(木) 21:58:29.83ID:1YD1Mn32
>>591
多様性を否定したら進化がない
ローカルでは好き勝手にやらせてりゃいいじゃん
こーでぃんぐるーるが気になるなら
必要に応じてフォーマッタを通すよう義務付ければでいい話でしょ?
ゴリゴリの保守ならいいけどバージョンアップで互換性を捨てたよね
0594デフォルトの名無しさん2014/08/14(木) 22:09:40.53ID:XQFcvtlU
長期的にサポートされていて、また今後もサポートされ続けるPython2.7系列
ひとりのリリースマネージャが力尽きたら速攻でサポートが終わったRuby1.8.7

バージョンが上がって互換性が無くなるとしても、安心感が全然違うんだよ
0595デフォルトの名無しさん2014/08/14(木) 22:26:23.52ID:qCy55Ttw
そしてライブラリは両方に対応する力が尽きて片方しか対応しなくなる、と
0596デフォルトの名無しさん2014/08/14(木) 22:27:20.15ID:GRmjrAED
いつまでもサポートしてるからなかなか移行が進まないね(笑)
0597デフォルトの名無しさん2014/08/14(木) 22:45:42.08ID:t3e+SowD
CやJavaやFortranなんかを使ってた身からすると、そんな数年で移行できる方に驚く
0598デフォルトの名無しさん2014/08/14(木) 23:57:19.87ID:6Teu7b8a
Rubyにしても、もう新規で採用するケースは減ってると思う
NodeとかGolangとかもっと設計が新しい言語が出てきてる
0599デフォルトの名無しさん2014/08/15(金) 00:00:23.87ID:IEcKMmnc
Node.jsはプログラミング言語じゃねーよぼけ
0600デフォルトの名無しさん2014/08/15(金) 00:03:19.22ID:zsZ4HpGd
定期的にNodeやGolangを推すやつが出てくるけど、
本当に使った事があるのか疑問

特にGolangなんてスクリプト言語を置き換えるポジションの
言語じゃないと思うんだが
0601デフォルトの名無しさん2014/08/15(金) 00:14:05.85ID:+WhkypvH
GoはGo自体をGoのScriptとして使うための関数があったと思う。
GoにScript組み込むなら、やっぱGoだな。
PythonのScriptingHostとか積みにくい。
0602デフォルトの名無しさん2014/08/15(金) 00:24:48.86ID:zsZ4HpGd
丁度良い感じにスレにお題も出てる事だし、
Golangの回答例でも書いていくと良いんじゃないかな
Nodeでも良いよ
0603デフォルトの名無しさん2014/08/15(金) 00:49:46.29ID:G+/LDaHH
ゴルーチン、多値、豪華な標準ライブラリ、可読性に優れたシンプルなデザイン、第一級関数
他の言語のいいとこどりって感じでなかなかに触り心地はいい
ただスクリプトと置き換えるっていうとWEBでパフォーマンスを要求されるとこぐらいな気がしないでもない
0604デフォルトの名無しさん2014/08/15(金) 01:03:38.43ID:bXsRO7AF
>>574
じゃあお題。
利用者が画面操作だけで自由に部品を
配置可能なGUIまたはWebを作れ。
(申請画面等)
SmalltalkならMorphic、UIPainter、
SeasideでCodeを書くことなく
実際に出来る。
0605デフォルトの名無しさん2014/08/15(金) 01:35:10.15ID:bXsRO7AF
>>574
もう一個お題。
GUIの構築中、あるUI部品の操作結果がうまく
反映されない事が解った。
効率の良く原因を特定する方法を示せ。
問題のあるGUI部品は、1Objectに分だけで、同じClassに
属する他のObjectで作ったGUI部品には問題が無いものとする。

Smalltalkの場合。

方法1
問題のGUI部品をinspectorで開き、GUIに関連しているObjectを
調べる。

方法2
問題のGUI部品をInspectorで開き、直接Messageを送って、
GUI部品の振る舞いを確認する。

方法3
GUIに関するObjectに届いたMessageの履歴を調べる。
0606デフォルトの名無しさん2014/08/15(金) 01:40:27.18ID:cLr8J/Qn
>>605
落とせよw
0607デフォルトの名無しさん2014/08/15(金) 01:45:58.31ID:G+/LDaHH
こいつほんとめんどくせぇ…
0608デフォルトの名無しさん2014/08/15(金) 05:36:27.88ID:19rSkqot
面倒だからEmacsで喩えてくれ。
0609デフォルトの名無しさん2014/08/15(金) 06:09:20.76ID:BLfVNv/y
スクリプト言語っていうのが、高機能なsedやawkって意味ならGolangは代わりにならないだろうけど
新しい言語は言語仕様もそうだし、環境設定とかライブラリ、ドキュメントも古い言語みたいにノイズまみれ、バッドノウハウだらけになってないのがいい
0610デフォルトの名無しさん2014/08/15(金) 07:16:46.64ID:KiQWZqQV
>>606
説明抜けてたけど>>605と>>604の状況は別ね。
>>605は開発者がGUIを作る時の話し。
0611デフォルトの名無しさん2014/08/15(金) 08:40:53.39ID:AVnS+NU+
smalltalkNGにしとくわ
0612デフォルトの名無しさん2014/08/15(金) 08:47:07.05ID:VuGbSeoA
>>609
ノイズの定義は?
0613デフォルトの名無しさん2014/08/15(金) 09:45:18.94ID:fhr+Nllp
>>609
> スクリプト言語っていうのが、高機能なsedやawkって意味なら
> Golangは代わりにならないだろうけど

「Golangは代わりにならない」からスレ違いだな
Golang の話題だけを語りたいのなら、専用スレで熱い議論を交わせばいい
あるいは Goloang が置き換えを狙っている C++/Java/C# や
ライバルの D/Rust/Swift の専用スレ/バトルスレでもいいんじゃないのかね
0614デフォルトの名無しさん2014/08/15(金) 10:53:53.27ID:hTVsVIgh
速度が必要なところだけC/C++で書いて、
スクリプト言語を糊として使う用法に対して
Goがどの程度の優位性を示せるか、じゃないかな
0615デフォルトの名無しさん2014/08/15(金) 11:04:49.90ID:fhr+Nllp
>>614
その優位性とは比較対象が C/C++ だから、
スクリプト言語とは直接的な関連は無いな
0616デフォルトの名無しさん2014/08/15(金) 11:42:18.47ID:VuGbSeoA
外部DSLに対する内部DSLの優位性のようなものを示したい?
それ排外主義や
0617デフォルトの名無しさん2014/08/15(金) 11:59:44.23ID:zsZ4HpGd
Golangはシステムプログラミングのバトルスレが、
ポトペタが自慢のSmalltalkはVBスレで
議論すれば良いんじゃないかな
0618デフォルトの名無しさん2014/08/15(金) 12:07:30.37ID:KFo3Vgld
>>617
でおまえはどんな言語でバトル・議論がしたいんだ?
自分がよく知らない言語をいちいち排除してたらきりがないぞ。
0619デフォルトの名無しさん2014/08/15(金) 12:52:30.42ID:Aqg845W8
http://www.buzzword.jp/img/face10.png
0620デフォルトの名無しさん2014/08/15(金) 13:08:58.12ID:fZJRPTiq
>>615
Go言語はGo言語をScriptとして使えるぜ。
0621デフォルトの名無しさん2014/08/15(金) 13:10:58.93ID:fZJRPTiq
>>617
あれれ〜苦手分野になったら逃げるの?
0622デフォルトの名無しさん2014/08/15(金) 13:15:44.10ID:fZJRPTiq
得意な課題じゃPythonつえー
苦手な課題じゃ他所でやれ

そりゃPython最強だわ
0623デフォルトの名無しさん2014/08/15(金) 13:34:49.08ID:hX9N7g9W
まあGUIも面白いかもしれないね
最近はスクリプト言語でも書けるようになってきてるし


というわけで、Windows、Linux、Mac OS、iOS、AndroidでクロスプラットフォームなGUIアプリを開発できるスクリプト言語ってある?
0624デフォルトの名無しさん2014/08/15(金) 13:43:50.07ID:IEcKMmnc
>>623
ぱっと思いつくのはJS
0625デフォルトの名無しさん2014/08/15(金) 14:09:13.86ID:zsZ4HpGd
>>623
ぱっと思いつくのはPython
0626デフォルトの名無しさん2014/08/15(金) 14:50:19.59ID:hTVsVIgh
後は、Go言語といえば並列性になるのかな

あるディレクトリの下にある全てのファイルからgoで始まる単語の個数を数える
ただし個々のファイルは並列に処理する

という御題はどうだろうか
0627デフォルトの名無しさん2014/08/15(金) 15:13:55.16ID:lLqTBTtV
>>626
俺なら普通に単発のスクリプトを書いてMakefile使って実行する
スクリプト側でそういうジョブ制御的な処理はさせない
0628デフォルトの名無しさん2014/08/15(金) 15:33:43.14ID:/FTO7zqv
>>627
各ファイルで数えた単語数を
全ファイルで数えた単語数にまとめるスクリプトが別途必要になるけどね
0629デフォルトの名無しさん2014/08/15(金) 15:42:08.97ID:IEcKMmnc
>>626
Java8のFiles#walkならできるんじゃね?と思ってみたけど、ファイル操作は直列ストリームだったようだ
Rubyはそういうのからきしだし(まあ、JSもしかり、Script言語は高度が並列プログラム求められていなかったからね)
Goからどう書くの?(goroutine使うの?)
0630デフォルトの名無しさん2014/08/15(金) 15:48:14.82ID:lLqTBTtV
制御がある程度複雑になるようならPerl使うかな
あくまでJCLとして使う分にはPerlのForkManagerは優れてる
簡単な集計くらいならPerlで書いちゃってもいいし
0631デフォルトの名無しさん2014/08/15(金) 16:02:56.32ID:fhr+Nllp
>>626
>後は、Go言語といえば並列性になるのかな

まずは並列性(parallelism)なのか並行性(concurrency)なのかを
明確にしたほうが、議論が混乱する可能性は減ると思われ....
0632デフォルトの名無しさん2014/08/15(金) 16:17:39.00ID:fhr+Nllp
あと移植性(portablity)は考慮するのかという視点もある
POISX API(fork や exec)を使えば並列処理は書けるけど、
実行プラットフォームは(UNIX や Cygwin 等に)限定される

まあ動いて最短なコードが最強!!みたいな素人談義を
希望しているなら、それはそれでかわまんと思うがね
0633デフォルトの名無しさん2014/08/15(金) 16:58:55.43ID:BLfVNv/y
日本でPerlやってた人たちって、今みんなGoやってるよね
みんなっていうか、Perlモジュールのコントリビュータみたいな人たち
Goはテキストエディタでちゃちゃっと書けるし、そういう選択になるだろうなと思う
0634デフォルトの名無しさん2014/08/15(金) 16:59:44.35ID:VuGbSeoA
>>622
それはC++の「ゼロオーバーヘッドの原則」に似ている
得意分野では恩恵を受ける
苦手分野ではゼロオーバーヘッド
0635デフォルトの名無しさん2014/08/15(金) 19:22:27.72ID:zsZ4HpGd
>>626

from glob import glob
from collections import Counter
from multiprocessing import Pool

def count(file):
    return Counter(word for line in open(file, 'r')
                   for word in line.split()
                   if word.startswith('go'))

counter = sum(Pool().map(count, glob('somedir/*')), Counter())
print(counter)
0636デフォルトの名無しさん2014/08/15(金) 19:57:13.82ID:GvqDUviU
>>626
色んな言語でできるけど、高々2文字の検索じゃ並列化してもおせーよ。
HDDのSeekで並列しない処理より速度がガタ落ちする。
0637デフォルトの名無しさん2014/08/15(金) 20:00:22.44ID:GvqDUviU
>>627
MakeはScriptだが
0638デフォルトの名無しさん2014/08/15(金) 20:08:01.74ID:zsZ4HpGd
>>626
Hadoopが使える場合


from mrjob.job import MRJob

class GoCount(MRJob):
    def mapper(self, _, line):
        for word in line.split():
            if word.startswith('go'):
                yield word, 1

    def reducer(self, word, ns):
        yield word, sum(ns)

GoCount.run()
0639デフォルトの名無しさん2014/08/15(金) 20:21:44.28ID:wA/pyBJf
>>636
そこは本質じゃないでしょ
それにSSDなら速くなる
0640デフォルトの名無しさん2014/08/15(金) 21:17:50.51ID:GvqDUviU
>>639
BashのShell script

find "$1" -type f -exec $(< "{}")\; | grep -c "go"
0641デフォルトの名無しさん2014/08/15(金) 21:26:27.62ID:wA/pyBJf
>>640
そのコードで何が言いたいの?
0642デフォルトの名無しさん2014/08/15(金) 22:00:16.05ID:GvqDUviU
>>641
Bashなら課題の並列処理が一行でかける。
まさかどこで並列化されてるか解らない訳じゃないだろうな。
0643デフォルトの名無しさん2014/08/15(金) 22:10:42.05ID:wA/pyBJf
>>642
肝心の grep -c ”go” が並列化されてないよね
0644デフォルトの名無しさん2014/08/15(金) 22:17:19.76ID:zsZ4HpGd
>>640
"go" と "golang" と "goroutine" みたいに
goで始まる単語を別々にカウントしたい場合はどうする?
ていうか、そういうお題なのかと思ってたけど
0645デフォルトの名無しさん2014/08/15(金) 22:20:11.95ID:GvqDUviU
>>643
肝心もクソも元のお題にどこを並列化しろなんて書いてないだろ。
0646デフォルトの名無しさん2014/08/15(金) 22:25:28.94ID:GvqDUviU
>>644
個別になんて一言も書いてないだろ
0647デフォルトの名無しさん2014/08/15(金) 22:26:27.57ID:GvqDUviU
>>644
個別に個数を出すなんて一言も書いてないだろ
0648デフォルトの名無しさん2014/08/15(金) 22:29:05.37ID:wA/pyBJf
>>645
へー、お前自身が>>636で

>色んな言語でできるけど、高々2文字の検索じゃ並列化してもおせーよ。

って書いてるから、”go”を検索するところを並列化すると
お前も解釈してると思ったよ
0649デフォルトの名無しさん2014/08/15(金) 22:32:14.43ID:zsZ4HpGd
>>647
いやどうするのかなって質問してるだけだよ

それとも改めてお題として書いた方が良いか?
0650デフォルトの名無しさん2014/08/15(金) 22:37:04.61ID:WUgX6twt
| sort | uniq -c でいいんじゃね?
0651デフォルトの名無しさん2014/08/15(金) 22:41:06.51ID:zsZ4HpGd
ていうか、並列化のやり易さが趣旨であって
文字のカウントはどうでも良いと思うんだがなぁ

シェルスクリプトやmakeで並列化も
それで問題を解決できるなら悪く無いと思うよ
0652デフォルトの名無しさん2014/08/15(金) 22:44:22.12ID:zsZ4HpGd
>>650
それを分散でやってるのがHadoopだからね
0653デフォルトの名無しさん2014/08/15(金) 22:45:31.95ID:IEcKMmnc
もうcodeiqとかでやれよ。2chでやってもケンカになるだけだ
0654デフォルトの名無しさん2014/08/15(金) 22:53:02.27ID:GvqDUviU
>>649
めんどくせえなぁほらよ

find "$1" -type f -exec $(< "{}")\; | tee >(echo -n $( grep -c "golang")) | grep -c "gorouting"
0655デフォルトの名無しさん2014/08/15(金) 22:56:10.61ID:zsZ4HpGd
>>654
全ファイルに含まれるgoで始まる単語を全部そうやってカウントするのか?
ていうか、どうやってgoで始まる単語をリストアップするんだ?
もう無理しなくていいよ
0656デフォルトの名無しさん2014/08/15(金) 23:00:08.03ID:GvqDUviU
>>648
遅いのは読み込み。grep部分を並列化しようがしまいが関係ない。
grep側を並列化しなくても$(< {} )待状態だ。
0657デフォルトの名無しさん2014/08/15(金) 23:17:50.46ID:GvqDUviU
>>655
事あるごとに条件後出しすんなボケ。
最初に条件を出し切れや。

find "$1" -type t -exec $(< "{}") \; | sed 's/\s/\n/g'| grep 'go.*' | sort | uniq -c
0658デフォルトの名無しさん2014/08/15(金) 23:20:38.26ID:zsZ4HpGd
>>657
>>644に最初から「goで始まる単語を別々にカウント」って書いてあるだろ
それとも「みたいに」が例を意味する日本語であることも分からなかったのかよ
日本語不自由すぎるだろ
0659デフォルトの名無しさん2014/08/15(金) 23:23:48.03ID:cLr8J/Qn
grep -cは単一行で複数マッチしてもまとめちゃうから
grepでやるならgrep -Po "\bgo.*?\b"じゃないかな
で|sort|uniq -c
0660デフォルトの名無しさん2014/08/15(金) 23:31:18.04ID:59hzn3rj
普通にsortしてuniqする話の流れになってるけど
集計に本質的には要らないはずのsortを実行してるのが気になる
0661デフォルトの名無しさん2014/08/15(金) 23:37:30.43ID:cLr8J/Qn
uniqコマンドがソート済みである必要があるからね
0662デフォルトの名無しさん2014/08/15(金) 23:41:29.36ID:zsZ4HpGd
| sort | uniq -c のかわりに
| awk '{c[$0]++;}END{for(w in c){print w, c[w]}}'
を使うとか
0663デフォルトの名無しさん2014/08/15(金) 23:42:10.02ID:GvqDUviU
>>659
大丈夫。その為にsedで空白を改行に変えちゃってるから。

>>658
有限個の単語上げといて、ファイル中に存在する単語全部パターンに飛躍するヤツなんてお前位だよ。
大体"みたい"になんてお題に書く方がおかしいだろうが。
他人を責める前に誤解を招く書き方を改めろや。
0664デフォルトの名無しさん2014/08/15(金) 23:51:27.02ID:cLr8J/Qn
>>663
sedのところ見落としてた
そーりー
0665デフォルトの名無しさん2014/08/15(金) 23:51:58.69ID:zsZ4HpGd
>>663
まずお題じゃなくて只の質問だったわけだが、
仮にお題だったとしても、それに例が書いてある事も
例が有限個であることも全く普通だよ

でも、日本語が不自由というよりアスペっぽいので、そこは謝る。治らないもんな。ごめんな
0666デフォルトの名無しさん2014/08/16(土) 00:36:07.21ID:yF2fwj9g
汎用言語じゃなくScriptなんだから、
条件値が片手で数える程なら、
ベタ書きすんのは普通だよ。
設定値や条件値を外出にしたり、
広範囲の条件にも対応できる汎用的な
処理を使いたいならScriptじゃなく汎用言語を使えば良い。
0667デフォルトの名無しさん2014/08/16(土) 06:18:43.73ID:nf6pthQb
普通にPythonの並列処理すげーと思ってる自分がいる。
Go言語はもっと凄いの?
0668デフォルトの名無しさん2014/08/16(土) 07:48:12.79ID:q245zxlf
並列mapがあればPythonじゃなくても635と同じコードは書けるよ
0669デフォルトの名無しさん2014/08/16(土) 07:51:53.92ID:Ra/Da5CE
Go の並列処理は優先順位を与えられるんだっけ? 仕様には見当たらないみたいだけど
0670デフォルトの名無しさん2014/08/16(土) 09:10:28.92ID:5flrnqyZ
GoもPythonもユーザーが並列処理用コードに書きこまないと出来ないだろう。GoもPythonも50ポ100ポのようだ。
シングルもパラレルも同一コードであって自動並列化するのが楽。


http://game.watch.impress.co.jp/docs/20080911/epic.htm

現状でさえマルチスレッドプログラミングは開発の困難さが指摘されている分野である。
同時並列的に動作するプログラムがモデルデータやゲーム内状態などの共有情報にアクセスしようとするとき、そこには必ずデータ競合によるバグの発生や、デッドロックによるプログラムの停止というリスクがつきものである。

Sweeney氏は、これは現在主流の開発言語であるC++の手続き型言語としての特性に由来すると指摘する。
マルチスレッドにおける問題を避けるためのテクニックは各種あるが、Sweeney氏に言わせるとそれは「シングルスレッドのプログラムをアセンブラで書くようなもの」であり、生産性が悪いのである。

Sweeney氏は、この問題を解決するためには、ゲーム開発言語として純粋関数型の言語が必要になるだろうと言う。
この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。
その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。
しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。

Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。

もし、Sweeney氏のいう純粋関数型言語によるゲーム開発が実現したとして、それを基準とするならば、C++によるプログラム開発コストは、
マルチスレッド版で2倍、プレイステーション 3版において5倍、シェーダー言語で記述するGPGPU版において10倍かそれ以上にもなるという。
従って、6コア、8コアどころでは済まないメニーコア世代のプラットフォームに備えて、ゲーム会社は開発基盤を備える必要がある。
0671デフォルトの名無しさん2014/08/16(土) 10:06:19.21ID:RW41zctc
関数型は遅延評価をやりたいのか並列処理をやりたいのか分からん
遅延評価と並列処理の違いを明確にするべき
0672デフォルトの名無しさん2014/08/16(土) 10:43:20.24ID:5flrnqyZ
プログラミング・テクニックとしての遅延評価は別にして。
関数型の特徴は、手続き型でないこと(=上から下、左から右に計算するといった順序がない)で
遅延評価を取り入れるのが真っ当なだけでは。そうでないと手続き型になってしまう。
参照透過性と計算順序がない事はやや別概念だけど。コード全体で参照透過性あって、計算順序がなかったときは
理屈上、コンパイラや実行環境が自動並列処理化可能だろう。



参照透過性 - Wikipedia
参照透過性は、計算機言語の概念の一種で、文脈によらず式の値はその構成要素(例えば変数や関数)によってのみ定まるということを言う。
参照透過性が成り立つ言語は式の値がプログラムのテキストから定まるという特徴から宣言型言語と呼ばれたり、関数の数学的性質が保たれるという特徴から純粋関数型言語と呼ばれたりする。
一方、参照透過的でない言語を手続き型言語と呼ぶ。
0673デフォルトの名無しさん2014/08/16(土) 10:49:44.07ID:5flrnqyZ
命令型プログラミング - Wikipedia

命令型プログラミングとは、計算をプログラム状態を変化させる文の列で記述するプログラミングパラダイムの一種。
命令型プログラムはコンピュータが実行すべき命令列で構成される。
命令型プログラミングに従ったプログラミング言語を命令型(プログラミング)言語と呼ぶ。
一般に命令型プログラミングは、手続き型プログラミングと同義として扱われる。

命令型プログラミングは、宣言型プログラミング(関数型や論理型言語など)と対照的である。
Haskellなどの関数型プログラミング言語では、プログラムは文の並びではないし、命令型言語が持つような広域状態を持たない。
Prologのような論理プログラミング言語では、命令型言語のように計算の「方法」をプログラムとして記述するのではなく、計算すべき「事物」を定義する。

ほとんど全てのコンピュータのハードウェア実装は命令型である。
ほぼ全てのコンピュータハードウェアは機械語を実行するよう設計されており、機械語は命令から構成される。
高級な命令型言語は変数や他の複雑な構文を使用可能となっているが、基本的に同じパラダイムである。
命令型プログラミングの基本的考え方はハードウェアの実装に近く、概念的にもなじみ深いため、多くのコンピュータ言語が命令型のスタイルである。
0674デフォルトの名無しさん2014/08/16(土) 11:32:40.13ID:RW41zctc
手続き型「並列化は難しい」
関数型A「並列化は難しいが遅延評価はできる」
関数型B「自動並列化可能」

関数型は一枚岩ではないよ
現に遅延評価はするが並列化はしない関数型言語が存在する
0675デフォルトの名無しさん2014/08/16(土) 12:46:40.40ID:JNLIV0Ed
並列化は苦手とするスクリプト言語が多く、
使い手のコンプレックスを刺激してしまって
議論が荒れるから良く無い
別の話題にしよう
0676デフォルトの名無しさん2014/08/16(土) 13:27:39.72ID:pCqm9jUF
>>670,674
「(Haskell に代表される遅延評価を基本とした)純粋関数型言語では
 プログラムの自動並列化が容易/可能」
という主張には、大きな盲点(あるいは詐欺)がある
それは >>673 の最終段にある
「ほとんど全てのコンピュータのハードウェア実装は命令型である。」
という純然たる現実を(意図的に?)無視している点だ

>>672 が言うように、関数型言語の計算モデルであるラムダ計算には
もともと計算順序という概念が存在しないから、原理的には自動並列化は可能である
しかしそのプログラムを実行するのは命令型CPUだから、(逐次処理にせよ並列処理にせよ)
先行評価または遅延評価(あるいは他の評価戦略)といった計算順序を持ち込まなければ、
プログラムを命令型CPUコードへ翻訳(コンパイル)できない
このプログラムとヘードウェアとの間に立ちはだかる技術的に大きな壁は
「意味論的な隔たり(セマンティック・ギャップ)」と呼ばれ、長年の研究テーマになっていた
結果として、意味論的に命令型CPUに近い先行評価を採用した最初の関数型言語である
LISP は1960年代には実用的な処理系が存在していたにもかかわらず、遅延評価を採用した
関数型言語の実用化には、それから20年を経た Miranda の登場を待たねばならなかった

だから冒頭の間違った主張を正しく書き直すと以下のようになる
「関数型専用CPU上での実行を前提条件とすれば、
 純粋関数型言語ではプログラムの自動並列化が容易/可能」
現実には Intel 系に代表される命令型CPUが主流だから、この主張は幻想と言わざるをえない
0677デフォルトの名無しさん2014/08/16(土) 13:34:35.98ID:XlNU51V9
>>676
そのギャップを埋めるのがHaskell等のコンパイラなんじゃね?
Haskellのプログラムを書く開発者からすれば、コンパイラがよろしくやってくれるから楽に並列化できる!ってことじゃ無いの?
0678デフォルトの名無しさん2014/08/16(土) 13:54:39.69ID:7E4BWnpk
Haskellでの並列・並行プログラミングの今: Parallel and Concurrent Programming in Haskell
http://maoe.hatenadiary.jp/entry/2013/07/27/024257

> 純粋関数型であっても並列化は簡単ではなく、
> 評価戦略の正しい理解と地道なプロファイリングが必要である
0679デフォルトの名無しさん2014/08/16(土) 13:59:21.32ID:pCqm9jUF
>>677
そのとおりだよ
でも、言葉で「ギャップを埋める」と言うのは簡単だけど、
Haskellコンパイラの中の人達はロックやセマフォといった
泥臭い並列化プリミティブと格闘しなければならない

実際にこのギャップに挑戦しているのが
たとえば Parallel Haskell というプロジェクトだけど、
今のところ実験的な実装に留まっている
もしも:
・GHCの公式リリース版にこのプロジェクトの成果が反映され、
・デフォルトで並列化が有効とされ、
・適切な並列化アルゴリズムで書かれたプログラムであれば
 アムダールの法則を打破できる、すなわちコア/プロセッサ数に
 正比例して計算速度が向上できる
ようになれば、Haskell における並列化は実用化されたとみなせる

現状は最初の一歩を踏み出したレベルだから、(その将来性は否定しないけど)
現時点での「Haskell なら楽に並列化できる」という断定は、
あまりに性急すぎると考える
0680デフォルトの名無しさん2014/08/16(土) 14:16:29.70ID:5flrnqyZ
Haskellコンパイラが不十分なだけだろ。
理屈上、純粋関数型なら、ソースコードに並列処理を明示しなくていいはずだがHaskellはそうでない。
シングルもパラレルも同一コードで、コンパイラオプションだけか、VMなど実行環境の設定だけで、並列化可能なはずだ。
0681デフォルトの名無しさん2014/08/16(土) 14:35:34.09ID:5flrnqyZ
自動並列化は、学習型・適応型でやるといいだろう。片っ端に出来るところをやると逆に遅くなる。


実行時コンパイラ - Wikipedia
適応的コンパイル
JITコンパイラの短所を補うためのJITコンパイルの一方式として適応的コンパイルという方式がある。

これは、起動当初はインタプリタとして実行し、よく呼び出されるメソッドや繰り返し実行されるコードの検出(プロファイリング)を行い、そのようなコードのみをコンパイルする、というものである。

実行時間の大半が費やされるようなボトルネックとなるコードのみをコンパイルすることで、起動時のオーバーヘッドや利用メモリ増大を抑えたうえで、効率よく実行速度を向上することができる。

この適応的コンパイルによる適応的最適化は、静的コンパイルでは得られない情報を元に最適化が行えるため、静的コンパイルより、むしろパフォーマンスが上がる場合もある。

JITコンパイル方式の利点
JITコンパイル方式と事前コンパイルの生成コードの質を比べると、前述のようにコンパイル時間に対する制約のためJIT方式の方が不利であるが、有利な点もある。
それは、実行環境を知った上でそれに応じた生成コードの選択や最適化を行うことができるということである。

JIT方式では、CPUがMMXをサポートしているならMMX命令を使ったコードを生成し、そうでなければ多少効率の悪いPentiumの命令の範囲内での実行を行う、ということができる。

また、実行環境におけるキャッシュやメモリのサイズ、速度特性なども実行時にならないと最終的にはわからない。
JITコンパイル方式では実際に走行しているCPUやメモリの情報を知ることができるため、それに応じたコードを生成することができ、事前コンパイルよりも優れたコードを生成できる可能性がある。

JavaScriptのJITコンパイラ
近年の主要なウェブブラウザはJavaScriptのエンジンにJITコンパイラを搭載し、高速に処理できるようになっている。
実行時の変数に代入された値の統計データから、変数に型を割り振ることにより、JITコンパイラが実現し、高速にJavaScriptを処理できるようになった。
0682デフォルトの名無しさん2014/08/16(土) 15:13:35.50ID:RW41zctc
自動化で人間に楽をさせるという理想と、今ここで人間相手に檄を飛ばしている現実の
ギャップが面白い
0683デフォルトの名無しさん2014/08/16(土) 19:08:57.81ID:CbKvsBmn
>>626
Squeak Smalltalk で。

| queue total dir |
queue := SharedQueue2 new.
total := Bag new.
dir := FileDirectory on: '/path/to/files'.
dir entries do: [:entry |
 [ | file bag |
  file := entry readStream.
  bag := (file contents substrings select: [:word | word beginsWith: 'go']) asBag.
  queue nextPut: bag
 ] fork
].
dir entries size timesRepeat: [total addAll: queue next].
^total sortedCounts
0684デフォルトの名無しさん2014/08/16(土) 21:32:57.09ID:OHYqpc05
Smalltalkが凄いのは分かるんだけど、コードの見た目の奇妙さと
ヘンテコなIDEっぽいものの使用を強制されるのが受け付けなくて
使い始めるに至らない
06856832014/08/16(土) 22:30:03.73ID:7E4BWnpk
それはもったいない。
Smalltalkはここでさんざんけなされているとおり
そんなにすごいことはやっていませんよ。
今どきの動的型言語にくらべれば仕様として覚えることはごくわずかで
意味までかえてしまうマクロのような機能もないので
考えようによってはLISPよりシンプルなくらいです。
使い慣れた環境からちょっと離れた異世界探検気分で気楽に
むしろヘンテコなところを積極的に楽しんでみてください。
0686デフォルトの名無しさん2014/08/16(土) 22:46:02.73ID:ptJ9/pSk
ぼく仕事が楽になる言語がいい
0687デフォルトの名無しさん2014/08/17(日) 01:37:01.40ID:h+4ah3vy
>>686
そんなアナタになでしこ(適当)
0688デフォルトの名無しさん2014/08/17(日) 09:34:18.51ID:VWdQlfS3
>>685
コードゴリゴリ書くタイプのチュートリアルが楽に手に入るSmalltalk環境無い?
前にSqueak使ったんだが、GUIのチュートリアルがメインでなかなかコード書く話にならなくて辞めちゃったよ
06896832014/08/17(日) 10:47:13.47ID:KEkqINZ5
>>688
普段使っていらっしゃるOSはなんですか?
Windows限定ですが、たとえば動画でこんなチュートリアルがあります。

Dolphin Smalltalk Lights Out Game (Part 2)
https://www.youtube.com/watch?v=8pkyOm1Mxug

この程度でも「なかなかコードを書く話にならない」という印象を持たれる感じでしょうか?
06906832014/08/17(日) 11:14:16.55ID:KEkqINZ5
>>688
個人的に気に入っているチュートリアルとしては
すでに試されてダメだったSqueakで恐縮ですがこんなのがあります。

Laser Game - A Development Example for Squeak 3.9
http://squeak.preeminent.org/tut2007/html/index.html

Squeak 3.9 は ftp.squeak.org から入手できます。
ftp://ftp.squeak.org/3.9/
(老婆心ながら、Smalltalkのチュートリアルは対象処理系であることはもちろん、
 入手・手元で動かせる範囲でできるだけ同じバージョンを使うほうがよいです)

上から目線の独特の語り口をスルーできる人ならば、青木淳さんが書いていた
チュートリアル群が比較的コードごりごりタイプだったと思います。
これらは VisualWorks を対象にしていますが、多くは古いバージョンを対象としているため
対象バージョンをもう入手できず、さらに、同氏が中心になって作られたライブラリが前提であったり
前述の独特の鼻につく語り口と併せておすすめしかねています。

Smalltalk Textbook (in Japanese)
http://web.archive.org/web/19990203212407/http://www.sra.co.jp/people/aoki/SmalltalkTextbookJ/index.html

なお、VisualWorks については本家に比較的最近のバージョン向けのチュートリアルもあります。
http://smalltalk.cincom.jp/tutorials/vw7.7/tutorial1/weblogstats4.ssp
0691デフォルトの名無しさん2014/08/17(日) 15:29:35.58ID:LzSVzOzn
ありがと
今度ためしてみるわー
0692デフォルトの名無しさん2014/08/19(火) 07:40:53.80ID:VacuSofY
>>685
>今どきの動的型言語にくらべれば仕様として覚えることはごくわずかで

この件は「Perlよりマシ」と唱えるだけでPerl以外みんな平等になってしまうから
過剰に努力してもコスパが悪くなるだけなんだよな
06936832014/08/19(火) 09:43:28.32ID:YM7ubglb
>>692
> 「Perlよりマシ」と唱えるだけでPerl以外みんな平等になってしまう

そうですね。言い過ぎました。

「見た目の珍妙さから受ける印象ほどには文法は複雑ではない」という程度に
とらえていただければさいわいです。

たとえば、複数の引数をとるメッセージ式

obj key1: arg1 key2: arg2

は、よくある言語でのメソッド呼び出しの式に書き換えると

obj.key1:key2:(arg1, arg2)

とでき、比較的容易に読み替えられる、といったふうな感じです。

なお、Smalltalkではコロンもメソッド名に含まれるため
(たとえば foo と foo: は別のメソッド)そのままにしていますが、
コロンを含むことを許さない言語を想定して読み替える場合は
適宜アンダーバーなどに脳内置換してみてください。あしからず。

あと、もちろん LISP や Io にはかないませんが、
通常の言語の予約語に相当する擬変数が
nil ture false self super thisContext の6つだけというのも
特徴かと思います。
0694デフォルトの名無しさん2014/08/19(火) 13:44:16.77ID:aN7BQ+Qx
小飼弾が流行るって言うと流行らなさそうに思えてくる不思議
0695デフォルトの名無しさん2014/08/19(火) 13:53:58.42ID:c6AsXCDx
「これは間違いなく普及する」小飼弾、Swift愛を語る
http://news.livedoor.com/article/detail/9157615/
0696デフォルトの名無しさん2014/08/19(火) 14:46:43.07ID:VacuSofY
Smalltalkを語ればObjective-Cが流行るのだからSwiftを語ればC++が流行ると思う
0697デフォルトの名無しさん2014/08/19(火) 19:56:06.18ID:hR+ltkQy
>>693
見た目の奇妙さ、独特の開発環境、豊富とは言えないドキュメント

どれも慣れれば克服できる程度のものだけど、
一度に全部まとめてクリアするのはキツイわ
0698デフォルトの名無しさん2014/08/19(火) 20:25:57.53ID:OHKZi51F
>>697
Smalltalkは英語なら色んな資料あんだけどね。
0699デフォルトの名無しさん2014/08/19(火) 20:30:01.25ID:hR+ltkQy
>>698
英語でいいので、Pharoの>>688的な資料ない?
0700デフォルトの名無しさん2014/08/19(火) 21:08:08.68ID:KCwbYaCv
>>699
http://pharo.org/documentation

この辺のやつじゃあかんの?
0701デフォルトの名無しさん2014/08/19(火) 21:21:14.00ID:FY7ClORu
>>700
一応そのページは既にチェックしてたけどね…
とりあえずサンクス
0702デフォルトの名無しさん2014/08/19(火) 23:38:18.70ID:UyKyjv+0
>>683
GNU Smalltalk。
Promiseがあるとだいぶ楽になるね。

| threads count |

threads := '.' asFile files collect:
[ :file |
 Promise for:
 [
  file withReadStreamDo:
  [ :stream |
   ( ' ' , stream contents )
    occurrencesOfRegex: '\bgo*\w'.
  ].
 ].
].

count := threads
 inject: 0
 into:
[ :value :each |
 value + each value.
].

Transcript show: count printString.
0703デフォルトの名無しさん2014/08/19(火) 23:44:41.90ID:IwC8qEf9
>>695
20年のobjective-cの経験ある海外のプログラマがswiftなんて使えないって記事かいてたよ
0704デフォルトの名無しさん2014/08/19(火) 23:45:46.39ID:IwC8qEf9
もっとこう、肩こりがとれたとか、彼女が出来たとか、センセーショナルなこと書けばいいのにね
0705デフォルトの名無しさん2014/08/19(火) 23:55:22.02ID:RLzZhY/k
>>703
まさに小並感
0706デフォルトの名無しさん2014/08/20(水) 01:01:37.20ID:+uPYMsWL
>>703 その天の邪鬼の記事を見たい
0707デフォルトの名無しさん2014/08/20(水) 06:37:22.78ID:aMOBI2ge
>>702はcontentsで読み込むならstreamが不要だったな。

| threads count |

threads := '.' asFile files collect:
[ :file |
 Promise for:
 [
  ( ' ' , file contents ) occurrencesOfRegex: '\bgo*\w'.
 ].
].

count := threads
 inject: 0
 into:
[ :value :each |
 value + each value.
].

Transcript show: count printString.
0708デフォルトの名無しさん2014/08/20(水) 06:53:57.08ID:aMOBI2ge
気持ち短くしてみた。

Transcript show:
 (
  (
   '.' asFile files collect: [ :file | Promise for: [ ( ' ' , file contents ) occurrencesOfRegex: '\bgo*\w'. ]. ]
  )
   inject: 0 into: [ :value :each | value + each value. ]
 ) printString.
0709デフォルトの名無しさん2014/08/20(水) 07:31:36.43ID:aMOBI2ge
printStringよりはprintOn:の方がSmalltalkらしいか。

| threads count |

threads := '.' asFile files collect:
[ :file |
 Promise for:
 [
  ( ' ' , file contents ) occurrencesOfRegex: '\bgo*\w'.
 ].
].

count := threads
 inject: 0
 into:
[ :value :each |
 value + each value.
].

count printOn: Transcript.
07106832014/08/20(水) 10:03:02.79ID:wWhJKRGX
>>702
VisualWorks や GNU Smalltalk には Promise というのがあるんですね。

https://umejava.wordpress.com/2011/05/20/smalltalk-sleep-sort%E3%81%AEpromise%E7%89%88/
0711デフォルトの名無しさん2014/08/20(水) 13:31:18.19ID:V8FY803w
altJSいいな
もうこれあれば他要らなくね?
0712デフォルトの名無しさん2014/08/20(水) 18:26:18.88ID:hwSpijZu
>>710
因みにGNU SmalltalkとVisualWorksって名前空間があったりするんだよ。
Squeak系はOOを駆使したLibrary設計は素晴しいけど、
並列処理やら言語機能の面はちょっと古いね。
0713デフォルトの名無しさん2014/08/20(水) 18:30:29.20ID:BahuvxDu
altJSはそういう言語じゃなくて代替言語のことだろ?
TypeScriptとかCoffeeScriptとかDartとか氾濫してるんだが…
0714デフォルトの名無しさん2014/08/20(水) 19:06:19.72ID:hwSpijZu
<script language="text/smalltalk"></script>

Smalltalkが使えるBrowserもっと増えねぇかなぁ。
0715デフォルトの名無しさん2014/08/20(水) 20:29:12.15ID:rf7dSeiR
JSが今の位置にあるのは言語機能が評価されたわけじゃなくて、巨大企業の駆け引きの結果
0716デフォルトの名無しさん2014/08/20(水) 20:34:08.90ID:SisX+CQQ
言語機能が評価される世界であったとしても、
Smalltalkが評価されることは無い
0717デフォルトの名無しさん2014/08/21(木) 17:14:11.52ID:npCrOf/M
実装の手軽さと柔軟さは評価されたんじゃね
0718デフォルトの名無しさん2014/08/21(木) 18:07:25.57ID:avoK5umn
http://www.bignerdranch.com/blog/ios-developers-need-to-know-objective-c/
0719デフォルトの名無しさん2014/08/21(木) 18:09:37.89ID:avoK5umn
MEAN stackのハイプばかり見掛けるんだけど、apacheって死んだの?
0720デフォルトの名無しさん2014/08/21(木) 20:48:02.27ID:c5Umhtvx
nginxにだいぶ食われたな
0721デフォルトの名無しさん2014/08/21(木) 20:54:03.41ID:Z5aIfFS+
apache2.4なんて触ったこと無いからなぁ
0722デフォルトの名無しさん2014/08/21(木) 20:59:12.99ID:gFcZOxfX
rubyという最強言語を使わないというマゾゲーやりたいならそれでいいと思う
俺はささっとコード書いて目的達成したら、別の事に時間使うだけだから
幅広い知識を身に着け、そうしていつしか埋めようの無い差が開いていく( ´,_ゝ`)ップww
0723デフォルトの名無しさん2014/08/21(木) 21:36:01.34ID:7zFpfveR
(・∀・)ニヤニヤ
0724デフォルトの名無しさん2014/08/21(木) 22:10:21.53ID:c5Umhtvx
rubyはどの辺が最強なの?
0725デフォルトの名無しさん2014/08/21(木) 22:24:34.12ID:U37bR+oO
お題
スリープソートを実装して、ランダムに並べた1から1000までの整数をソートする。
違う入力で10回繰り返し、その都度結果がソートされていることも確かめること。
その際、ソート1回あたりににかかった平均時間も提示してください。
0726デフォルトの名無しさん2014/08/21(木) 22:41:26.11ID:s//ch5e2
お題
1銘柄の株価を0.5秒刻みで折れ線Chartとして表示して下さい。
株価情報の取得元は問いません。
銘柄は任意で変えられる様にして下さい。
0727デフォルトの名無しさん2014/08/21(木) 23:15:59.53ID:vyUchqHu
宿題スレじゃねえって
0728デフォルトの名無しさん2014/08/21(木) 23:34:38.96ID:avoK5umn
cやschemeでソートや再帰を書くのがプログラミングだ。
そう考えている時期が僕にもありました。
0729デフォルトの名無しさん2014/08/21(木) 23:37:32.36ID:avoK5umn
>>724
信仰心。世界中のgeekたちが手を取り合えば、
世界はもっとよくなるという精神性おいて他言語には追随を許さない。
0730デフォルトの名無しさん2014/08/22(金) 01:15:11.81ID:CUb+O1mD
スリープソートの平均時間で何が解るんだよw
0731デフォルトの名無しさん2014/08/22(金) 10:42:28.08ID:J035ZJLX
>>725 馬鹿だね スリープソートなのに時間測定に何の意味が有るんだよ まるで意味なし
0732デフォルトの名無しさん2014/08/22(金) 11:55:36.77ID:c+MP2XXJ
誤りの確率を一定以下に抑えつつ、
分解能やスケジューリング特性から導かれる理論値にどれだけ近い結果を出せるかを競う高度なテストだろ
0733デフォルトの名無しさん2014/08/22(金) 12:08:13.29ID:mQARv77v
>>725
Squeak Smalltalk で 150秒 。
これより大きく縮めようとするとソートを失敗しだしたのでたぶんここらへんが限界。

| sleepSort time miss |

sleepSort := [:arr |
 | queue |
 queue := SharedQueue2 new.
 arr do: [:each | [(each * 0.15) seconds asDelay wait. queue nextPut: each] fork].
 (queue next: arr size) asArray
].

time := OrderedCollection new.
miss := 0.
10 timesRepeat: [
 | arr res |
 arr := (1 to: 1000) asArray shuffled.
 time add: [res := sleepSort value: arr] timeToRun.
 res isSorted ifFalse: [miss := miss + 1]
].

^time average asFloat -> miss "=> 150028.8 -> 0 "
0734デフォルトの名無しさん2014/08/22(金) 12:26:13.23ID:J035ZJLX
>>732 何にもならないよ。単にリアルタイムOSの性能の差だけの話 言語の話でも何でもない
しかし、100msとか150msの分解能だなんて大昔のコンピュータを見るようだ。
07357332014/08/22(金) 18:34:45.04ID:mQARv77v
>>734
私の使っているマシンがポンコツだというご指摘はさておき、
http://hideaki-t.blogspot.jp/2011/05/sleep-sortpython-32.html を参考に Python で
https://github.com/valvallow/sort/blob/master/sleep.scm を参考に Scheme(Gauche) で
それぞれ同条件になるように書き直して試してみましたが、
Python は 300秒、Gauche でも 200秒を大きく切るのは難しそうだったので、
言語処理系による差もそれなりに出るみたいですよ。
0736デフォルトの名無しさん2014/08/22(金) 20:50:37.68ID:jEn+1Fi0
>>725
Pythonで15秒


import time
import random
from gevent import sleep
from gevent.pool import Pool


def sleepsort(xs):
    def f(n):
        sleep(0.015 * n)
        return n
    return list(Pool(len(xs)).imap_unordered(f, xs))


xs = random.sample(range(1, 1001), 1000)
intervals = []
for _ in range(10):
    start_time = time.time()
    xs = sleepsort(xs)
    intervals.append(time.time() - start_time)
    if not all(m < n for m, n in zip(xs, xs[1:])):
        raise Exception()
print(sum(intervals) / len(intervals))
0737デフォルトの名無しさん2014/08/22(金) 20:54:47.86ID:6di2gOhY
まーた鳥取のニップが暴れてるのか
0738デフォルトの名無しさん2014/08/22(金) 21:03:22.49ID:D4ujry1v
なんの役にも立たんクソソートのお題は良いから、
多少は役に立つ株価のお題を答えろよ。
ゴミばっか生産してんじゃねえ。
0739デフォルトの名無しさん2014/08/22(金) 21:10:44.33ID:BKUgHNQ2
スルーされたからって僻むなよ
0740デフォルトの名無しさん2014/08/22(金) 21:36:03.22ID:J035ZJLX
言語なんかよりOSとPCの性能の方が影響度は大きいんだけどそれを伏せて比較しても何もならない
0741デフォルトの名無しさん2014/08/22(金) 21:54:21.77ID:BKUgHNQ2
ネイティブスレッドと軽量スレッドのどっちを使うかで、余裕で数十倍は違う
次にPC、OSの性能で、下手すると数倍違う
0742デフォルトの名無しさん2014/08/22(金) 22:11:14.50ID:BZ0WRlm3
グー言語とチョキ言語とパー言語があったら全部使うのが正解だろ
なんでも定量化すればいいと思うのは間違い
07437332014/08/22(金) 22:17:23.80ID:I9M5v1q5
>>736
ご提示のコードだと gevent がインポートできないのですが、
これはどこから入手すればよいのですか?
ともあれ、なかなか優秀なライブラリーっぽいですね。
0744デフォルトの名無しさん2014/08/22(金) 22:27:25.69ID:x+gT+YRB
>>741
Fiberを軽量Threadって言うなよ。
Kernelが使うLite weight threadと紛らわしいだろうが。
07457332014/08/22(金) 22:28:13.47ID:I9M5v1q5
>>740
お薦めの言語のコードを出していただければ、
同じ PC、OS な条件でも手元で比較することができますので、
そうおっしゃらずに、ぜひ。
0746デフォルトの名無しさん2014/08/22(金) 22:31:10.83ID:jEn+1Fi0
>>743
Python3で使う場合は、githubから最新のコードを取ってこないと
importするときにシンタックスエラーで落ちると思う

pip install git+https://github.com/surfly/gevent
0747デフォルトの名無しさん2014/08/22(金) 22:32:57.71ID:a+5OSmIx
やってはないが。不毛な議論だろ。
sleepの精度が第一で、もの凄い短い精度でsleepできれば、言語自体の処理速度も関与するだろうが。
0748デフォルトの名無しさん2014/08/22(金) 22:36:06.39ID:a+5OSmIx
言語の処理速度を計るなら、sleepはゼロ時間でリターンされるとして計測するのが正確だろう。
計算結果は正しくならないが、速度測定は正しく出来る。
07497332014/08/22(金) 22:42:05.24ID:I9M5v1q5
>>746
情報、ありがとうございます。
まさにそこでドツボっていました。
風呂から出たらさっそく試してみます。
自分の環境でどのくらい精度がでるか楽しみです。
07507332014/08/22(金) 22:45:21.64ID:I9M5v1q5
>>748
これは1000程度と、比較的多めのスレッドを使用した場合の
コンテキストスイッチの重さの違いを見るお題だと思ったのですが
違いますかね。
0751デフォルトの名無しさん2014/08/22(金) 22:47:49.83ID:jEn+1Fi0
>>749
>>736を試すなら、random.sampleを誤ってループの外に出してたので
start_time = ... の上の行に移動してね
ズルになってしまう
0752デフォルトの名無しさん2014/08/22(金) 23:03:41.57ID:a+5OSmIx
そうかもしれない。よく考えていなかった。
まとめて例えば10個送信して、ソートして順に出力して行ったらいいかもしれない。
0753デフォルトの名無しさん2014/08/22(金) 23:15:34.47ID:DESqwkkp
LinuxとMacは大体似た感じになるだろうと予想できるが
Windowsは全く分からないな
07547332014/08/22(金) 23:45:36.16ID:I9M5v1q5
>>751
文法エラーのところだけ直したら動くみたいなのでとりあえずそれで試してみたら
残念ながらウチのポンコツPCでは、random.sampleをループ内に入れて
毎回違う並びにすると、x 0.15 のままでは10回のうち何個かは失敗するらしく
例外が上がります。x 0.04 くらいでなんとかオールOKという感じ。
ともあれ、それでも平均40秒ですからすばらしいと思います。ありがとうございました。
0755デフォルトの名無しさん2014/08/22(金) 23:56:14.51ID:wB2SrjRz
nodejs, html5の普及した今日日、pythonにどんな魅力があるの?
0756デフォルトの名無しさん2014/08/22(金) 23:58:47.83ID:wB2SrjRz
動的言語と静的言語の優劣への審判は、
javascriptとhtml5が普及しきった後でのdartのシェアに掛かっている
0757デフォルトの名無しさん2014/08/23(土) 00:02:56.49ID:tn55FLZ4
html5は全然普及してないだろう
モバイルデバイスはネイティブアプリがあるから今後もhtml5の普及は見込めない
html5ってどこに需要があるのか分からない
0758デフォルトの名無しさん2014/08/23(土) 00:04:56.37ID:kbJCwVtw
ネイティブクライアントとの連携問題があるからな
0759デフォルトの名無しさん2014/08/23(土) 00:11:38.74ID:rS5gMmQG
>>758
kwsk
0760デフォルトの名無しさん2014/08/23(土) 01:34:26.34ID:4nIWaa2a
>>757 Flash 無しVideo
EPUB3
0761デフォルトの名無しさん2014/08/23(土) 01:47:46.75ID:TT0GQXTF
>>757
業務系で、しょぼいUI/UXしか必要とされてなくて、納期が短いケースで需要がある
0762デフォルトの名無しさん2014/08/23(土) 02:56:58.23ID:W6jsUyZF
HTML5ってついに簡単な条件分岐もできるようになってたよな
構文スペックではHTMLのほうが優秀だしjsはHTMLに駆逐されるんじゃね?
0763デフォルトの名無しさん2014/08/23(土) 03:16:16.88ID:WQrXNI9l
jsもHTMLも亀のような進歩しかしてないよ
どちらも過去の遺産だけで食ってるだけだよ
0764デフォルトの名無しさん2014/08/23(土) 03:27:07.74ID:chzfUNX/
>>757
普及以前に規格が出来てないしな。
0765デフォルトの名無しさん2014/08/23(土) 07:16:41.04ID:4nIWaa2a
>>762 何言ってるんだ、2014年の正式勧告ではJavaScriptはHTML5の中に定義される
0766デフォルトの名無しさん2014/08/23(土) 07:42:11.88ID:W6jsUyZF
すでに終わってたのか
そりゃ誰もあれを、使い続けたくはないわな
普通にHTMLでやれる範囲増やしてHTMLでかける部分はHTML推奨
jsはゴミ
0767デフォルトの名無しさん2014/08/23(土) 07:53:31.98ID:4nIWaa2a
HTML5は、大進化を遂げてるよ
既に殆どのブラウザはHTML5を実装済み

W3CのHTML5仕様が勧告候補から最終草案へ戻り、秋には再び勧告候補へ
2014年6月23日
http://www.publickey1.jp/blog/14/w3chtml5_1.html

Wikipedia
http://ja.m.wikipedia.org/wiki/HTML5

HTML5で大きな点はローカルストレージ が使えるようになったことだろうな
SQLiteの採用が見送られたことは残念だがIndexedDBが使える

HTML5 の IndexedDB API を使用する
ローカル・データ永続化が Web アプリのアクセス性とモバイル・アプリの応答性を向上させます
http://www.ibm.com/developerworks/jp/web/library/wa-indexeddb/

そう言えばHTML5では縦書きもできれば、同期音声も出来る
0768デフォルトの名無しさん2014/08/23(土) 08:31:14.03ID:rRuNrHr1
au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり塩肉マンつばめの巣担々麺野菜炒めラーメン

au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン

au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン

ニンニクヤーフォー低額土地NHK名古屋遅延電池切れ福岡損保新規駐車近代ゲームフジワイプ転職提案ラーメン
abk公式漏洩安保険王なにあげてんだよ?「わー!ふーう?」↓↓★★↓↓宿題通調印鑑カウントダウン息子議員国会大学生
0769デフォルトの名無しさん2014/08/23(土) 09:44:11.97ID:tn55FLZ4
動画はDRMの問題が解決しない限り、PCでもFlashが残るかな
HTML5が使われるとしたらGmailみたいな複雑なUIのウェブサイトぐらいだろうけど、そんな高機能なサイト沢山は要らないし、HTML5のAPIも必要なのは一部だけ
0770デフォルトの名無しさん2014/08/23(土) 09:46:22.28ID:sLXAwLj/
ここはスクリプトスレなんだからもう完全に動画プレイヤーに成り下がったFlashは
無くなったのと同じだろ
0771デフォルトの名無しさん2014/08/23(土) 10:25:14.89ID:TT0GQXTF
Javascriptを生成することの出来るスクリプト言語が
最強のスクリプト言語
0772デフォルトの名無しさん2014/08/23(土) 10:42:53.99ID:PEb8yNX4
いま最強の座を争う頂上決戦を
SmalltalkとPythonでやってるとこ
07737332014/08/23(土) 10:53:59.90ID:/ISHex6N
>>751
すみません。もうひとつ教えてください。
gevent を使わない版としてこんな改変をしてみたのですが
これでは動作しないものなのでしょうか?

http://ideone.com/IKi7gs
07747332014/08/23(土) 10:59:47.51ID:/ISHex6N
頂上決戦かどうかはさておき^^;
ほんの十数行、書いても十分もかからないようなコードなのに
最強をうたう Ruby や JS のコードがいっさい出てこないは寂しいですね。
あと、スレッドのコンテキストスイッチの軽さを見るお題なので、
Erlang や Go、Io の実力も見てみたいところです。
0775デフォルトの名無しさん2014/08/23(土) 11:17:53.77ID:zhiGIFIr
js最強は、色々使われてるとかって意味の最強であって、
性能最強とほざいているjs使いは流石にいないんじゃね?
0776デフォルトの名無しさん2014/08/23(土) 11:33:57.33ID:B4vddcJ5
>>775
言語の性能なんて処理系で決まるんだから言語は関係ねーだろ
0777デフォルトの名無しさん2014/08/23(土) 12:00:32.61ID:4nIWaa2a
JSは単にHTMLご用達と言うだけの話だよ 客観的に見て現在スクリプト系ではPythonが頭一つ抜き出てるだろ
0778デフォルトの名無しさん2014/08/23(土) 12:00:54.87ID:XxQ8QUyR
>>774
平均的JSerの生産性は平均的Smalltalkerの1/100なので、
書くのに1000分かかる
0779デフォルトの名無しさん2014/08/23(土) 12:20:29.20ID:ERV3YG/5
>>769
Flashのが高機能じゃね…?
0780デフォルトの名無しさん2014/08/23(土) 12:39:04.52ID:cWaKBK7i
>>767
もう今世紀中には成立しないんじゃねえか?
0781デフォルトの名無しさん2014/08/23(土) 13:20:02.01ID:QxSN9cCP
>>777
Smalltalkは?
0782デフォルトの名無しさん2014/08/23(土) 13:24:51.99ID:cWaKBK7i
GNU Smalltalkを使って、JavaVMまたはDalvikVMの利用可能な
最新Version情報をVMから直接取り出して表示するProgram。
http://ideone.com/g3zWWc

Android上で動作確認済み。
ideoneではGNU Smalltalkが古いせいか、
制限掛けてるせいか実行出来ない。

これと同じ、VMからVersion情報を取り出して表示する処理を
他の言語でも書いてくれ。
0783デフォルトの名無しさん2014/08/23(土) 13:27:27.77ID:CbOxF1jD
「利用可能な最新Version情報」ってのが何を指すのかがわからんからやる気が起きない
0784デフォルトの名無しさん2014/08/23(土) 13:28:47.98ID:cWaKBK7i
>>783
利用可能なVMの最新Versionね。
言葉足らずでめんごめんご。
0785デフォルトの名無しさん2014/08/23(土) 13:33:52.83ID:CbOxF1jD
システムにインストール済みのVMの一覧の中から最新バージョン情報をVM自体から取得しろってこと?
0786デフォルトの名無しさん2014/08/23(土) 13:35:49.77ID:QxSN9cCP
java -version
0787デフォルトの名無しさん2014/08/23(土) 13:39:22.48ID:cWaKBK7i
>>785
そうだよ。それにもう一つ条件JavaVMから
直接Versionを調べること。

ちなみに目的はVMのVersionを調べる事じゃなく、
自在にVMを制御出来るかどうか。
Object生成とかまで書いてると処理が長くなるんで、
そこまでは求めない。
0788デフォルトの名無しさん2014/08/23(土) 13:41:58.55ID:ONwlfWFe
ダイナミックリンクライブラリを扱えるかどうかだけの話になると思うんだけど違う?
0789デフォルトの名無しさん2014/08/23(土) 13:43:06.87ID:QxSN9cCP
手元にPC無いからコードは書けないけど、
Pythonはjpype使えば自在にJavaを呼び出せるよ

http://hustleplay.wordpress.com/2010/02/18/jpype-tutorial/
0790デフォルトの名無しさん2014/08/23(土) 13:53:12.79ID:cWaKBK7i
>>788
実用上は関数のPointerやら構造体の入れ子を
自在に制御出来る必要が有るから、
DLLを使えることだけをお題にしても価値がない。

>>789
つまんないからAndroid上で実行って条件も追加で。
0791デフォルトの名無しさん2014/08/23(土) 14:10:45.10ID:cWaKBK7i
http://www.info.ucl.ac.be/~jbrichau/javaconnect.html

Bridge使うってだけならJavaとSmalltalkにも
Bridgeは存在するんだよね。

zipfile := JavaWorld.java.util.zip.ZipFile new_String:'foo.zip'.
entries := zipfile entries.
[
 entries hasMoreElements
]
 whileTrue:
 [
 Transcript show: entries nextElement
 ].

こんな感じで使うらしい。
微妙だ。
0792デフォルトの名無しさん2014/08/23(土) 14:17:52.01ID:WCrTbd1X
jpypeよりこっちの方が出来が良いかも
Androidでも動くし

http://txzone.net/2012/08/pyjnius-accessing-java-classes-from-python/
0793デフォルトの名無しさん2014/08/23(土) 14:20:57.07ID:cWaKBK7i
SmalltalkとPython以外の例は無いの?
0794デフォルトの名無しさん2014/08/23(土) 14:28:57.73ID:cWaKBK7i
http://jniport.wikispaces.com/
SmalltalkのJVM制御はこっちの方が移植性ありそうだ。
0795デフォルトの名無しさん2014/08/23(土) 14:46:07.37ID:WCrTbd1X
>>793
Groovy、Scala、Clojure、JRuby、Jythonは不戦勝だよね?
0796デフォルトの名無しさん2014/08/23(土) 14:56:26.08ID:cWaKBK7i
>>795
Smalltalk/JVMと同格だね。
んじゃ、Android上でJVMを使わず、
OpenGLでOffscreen描画する課題に変えるか。
0797デフォルトの名無しさん2014/08/23(土) 14:59:46.55ID:WCrTbd1X
http://kivy.org
0798デフォルトの名無しさん2014/08/23(土) 15:01:28.04ID:cWaKBK7i
あと動的言語らしくClassをGLSLに変換できたらなお好印象だね。
0799デフォルトの名無しさん2014/08/23(土) 15:05:58.52ID:3qnNklS6
言語じゃなくて処理系が対応してるかどうかじゃん
ここ処理系を比較するスレなの?
0800デフォルトの名無しさん2014/08/23(土) 15:08:48.95ID:1z1AuVul
>>795
参加すらできてない
0801デフォルトの名無しさん2014/08/23(土) 15:17:21.71ID:3qnNklS6
言語と処理系を区別しない議論には違和感あるなぁ
CとJavaを比較すると言ってgccの拡張機能を持ち出すような違和感がある
0802デフォルトの名無しさん2014/08/23(土) 15:19:06.57ID:cWaKBK7i
>>799
「処理系が現実に存在する」
は言語の重要な評価基準でしょ。
0803デフォルトの名無しさん2014/08/23(土) 15:20:55.46ID:K+6ohIGP
なんでSmalltalkerがAndroidネタで処理系自慢を始めたのか分からないけど、
>>797に匹敵するレベルじゃないと恥ずかしいだけだよ
0804デフォルトの名無しさん2014/08/23(土) 15:28:57.32ID:cWaKBK7i
>>803
んなもんLibraryの出来の問題じゃん。
その水準ならAndroid版SqueakやPharoでも良い訳でしょ。
0805デフォルトの名無しさん2014/08/23(土) 15:39:51.55ID:K+6ohIGP
処理系自慢もライブラリ自慢も
たいして変わらんわ
0806デフォルトの名無しさん2014/08/23(土) 15:48:47.86ID:T11vzkL/
jsはperlが目指した姿、js,html5はSmalltalkが目指してた姿
最強過ぎて、他言語、処理系が惨めに見えてくる
「Will Code Java for food」これが未来
0807デフォルトの名無しさん2014/08/23(土) 15:50:46.15ID:cWaKBK7i
>>805
誰もLibrary自慢すんなとは言ってないだろ。
処理系もLibraryも存在するならどんどん自慢すりゃいいさ。
0808デフォルトの名無しさん2014/08/23(土) 15:54:46.13ID:cWaKBK7i
>>806
http://amber-lang.net/
なんつうか他の高水準言語を動かすための低水準言語化してる様に思える。
いっそJavascriptをLLVMに置き換えてしまえばいいのに。
0809デフォルトの名無しさん2014/08/23(土) 16:04:43.24ID:aRrEsiH9
まるで仁義無き戦いだな
0810デフォルトの名無しさん2014/08/23(土) 16:23:01.11ID:XxQ8QUyR
ウンコなシンタックスと出来損ないのOSモドキに
我慢してまで使うメリットが
Smalltalkに無いことは分かった
0811デフォルトの名無しさん2014/08/23(土) 16:45:28.57ID:cWaKBK7i
>>810
OSがGUIのコト差してんなら、別にあのGUI無くてもSmalltalkは書けるし動かせるよ。
どの処理系もHead less modeってのが有る。
0812デフォルトの名無しさん2014/08/23(土) 17:57:35.31ID:1VsxcGzq
とりあえずPythonがSmalltalkより全ての面で上だったな
0813デフォルトの名無しさん2014/08/23(土) 20:14:16.32ID:67RgqQJA
12年目を迎えたLLイベント - Lightweight Language Diver開催
http://www.oreilly.co.jp/sales/2014/08/ann-ll-diver.html

これ行った奴いる?
レポよろ
0814デフォルトの名無しさん2014/08/23(土) 20:30:37.32ID:MKapSFj3
http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&;lang=vw&lang2=python3&data=u64
Cの関数が効果的な処理以外はPythonより
Smalltalkの方が速かったりする。
あとDebug効率や開発資源の管理効率も
Smalltalkの方が良いな。
特に管理効率はSource fileやProject設定を
考えなくて良い所が良い。
WebやGUIだとその差がかなりデカイ。
0815デフォルトの名無しさん2014/08/23(土) 20:34:08.01ID:MKapSFj3
あとLibraryの綺麗さ。VisualWorksとGNU Smalltalkは正直微妙だけど、
他の処理系はかなり綺麗。
0816デフォルトの名無しさん2014/08/23(土) 20:57:53.50ID:WEEbj9R+
SmalltalkだとWebもGUIと同じ感覚で作れるけど、
Pythonも同じ様に開発出来たらええな。
http://www.ogis-ri.co.jp/otc/hiroba/technical/seaside/seaside1/
0817デフォルトの名無しさん2014/08/23(土) 21:36:27.73ID:C3BW1AXi
信者の必死さは圧倒的にSmalltalkが上だな
在りし日のRubyに匹敵するレベル
0818デフォルトの名無しさん2014/08/23(土) 21:44:15.52ID:TT0GQXTF
>>814
他はどうでも良いけど、管理効率が良いってgitより上ってこと?
マイナー言語のガラパゴスVCSを覚えろって?冗談でしょ?
0819デフォルトの名無しさん2014/08/23(土) 21:45:57.46ID:YdsQyUD6
批判的に否定できないのに完全勝利宣言する
誰かさんたち程じゃないけどね
0820デフォルトの名無しさん2014/08/23(土) 21:52:20.38ID:TT0GQXTF
馬鹿みたいなお題の結果だけ見ればPythonのがマシ

お題に関係なく議論するならJavascriptに
ユーザ数もライブラリ数も実績も足下にも及ばないっていうか
土俵にも上がれないレベル
08217332014/08/23(土) 22:10:25.61ID:s9XgqdMx
>>820
ちょっと見ないうちに、殺伐とした雰囲気に…^^;

とまれ、世に「論よりコード」とも申します。
まあ馬鹿っぽくても、せっかくお題があるので、
もっとコードを出し合ってお気に入りの言語を戦わせませんか?

あるいは言語の差が出る、もっと馬鹿みたいでないお題をコード例付きでぜひ是非。
0822デフォルトの名無しさん2014/08/23(土) 22:45:47.41ID:1KHlh7WH
>>818
Webを作る場合
・Server設定が不要
・画像や動画を除いてFileを使わないので
 Permission設定やFile管理が不要
・Web siteの構成毎に細かい設定が不要
 頁が増える毎にFile用意したり
 必ずClassを作る必要が無い。
・Fileを使わないので、File分割して
 関数などの変更履歴が途切れたりしない。
 (関数の名前が変わってても大丈夫。)
・ClassやMethodは、Class名やSelectorから
 独立しているので、それらの名前を
 変えても変更履歴が続く。
・ClassやMethodの変更履歴は、ある時点から
ある時点までの断続的な記録の他に
 編集結果を保存した時点でも記録してくれる。
・Fileが無いので設定値はObjectやClassとして保存する。
 IDEの検索機能でどこに何があるか一瞬で判るので、
 どこにどの設定がを置いたか迷うことがない。
・Fileが無いのでFileの置き場所を 間違えた事による問題が起きない。
・Fileが無いので、File更新がWeb Serverに上手く
 反映出来ていないというような問題が起きない。
・Fileが無いので、外部Packageを追加するとき
 Package BrowserのClick操作だけで、Packageを追加できる。
 PackageのDirectoryを間違えるような問題が起きない。
・Fileが無いので、File関係でCrackされない。
・全てImage fileに入っているので環境移行が簡単。
0823デフォルトの名無しさん2014/08/23(土) 22:58:55.37ID:1KHlh7WH
>>818
・ClassやMethodのCommentは、Classや
 Methodと分離して管理される
 (表示的にも別のTextBoxに表示される)。
 このため、JavaDocみたいなものが要らない。
・処理系によっては太字を入れたり部分的に色を
 変えたりしてCommentを装飾出来る。
・Commentを元に関連するClassや
 Methodに飛ぶのも簡単。
0824デフォルトの名無しさん2014/08/23(土) 23:12:29.41ID:1KHlh7WH
>>818
・環境によるがDBの接続設定やTable管理、Server設定は
 GUIだけでできる。設定は直接Objectとして保存される。
0825デフォルトの名無しさん2014/08/23(土) 23:17:53.51ID:C3BW1AXi
適切に階層付けられたディレクトリとファイルで構成されたファイル群は
管理も理解もしやすいよ
所詮、名前空間すらないSqueakやPharo使って疑問にも思わない連中には理解出来ないだろうけど
作ってるものの規模が小さ過ぎるんだろうな
0826デフォルトの名無しさん2014/08/23(土) 23:27:17.50ID:sLXAwLj/
結局IDEかよ
愛する言語について語れる場所をみつけて嬉しいのは分かるが、
IDEの話はその辺にしとかないとSmalltalkはスレ違いになっちゃうぞ
0827デフォルトの名無しさん2014/08/23(土) 23:27:28.44ID:1KHlh7WH
>>818
・HTMLを書かなくて良い。

>>825
GNU SmalltalkやVisualWorksには名前空間が有るよ。
そうでなくとも、Classを纏められるCategoryやClass階層がある。

その辺を無視してもFileが無いのは、段違いに管理しやすい。
論理的に区分けされてるのはともかく物理的に
区分けされてるのは非常に不便だ。
規模がでかくなればなるほどFileが無いことの有り難みが判るよ。
0828デフォルトの名無しさん2014/08/23(土) 23:29:00.79ID:4nIWaa2a
そんなに良いものがどうして普及しないのか考えたこと有るかな?
実用的じゃ無いからだろ?
0829デフォルトの名無しさん2014/08/23(土) 23:32:54.65ID:1KHlh7WH
>>826
言語がIDE前提に前提に作られてるから仕方ない。
それからSmalltalk言語はSmalltalk IDEのScriptでも有るから、
寧ろScriptらしい話でしょ。
0830デフォルトの名無しさん2014/08/23(土) 23:34:13.75ID:sLXAwLj/
>>829
それVSとC#/VBにも当てはまるよね
0831デフォルトの名無しさん2014/08/23(土) 23:36:11.07ID:1KHlh7WH
>>828
単純にC系じゃないからでしょ。
VBやDelphi、lispの衰退と同じ。
今はC系一強の時代になった。
0832デフォルトの名無しさん2014/08/23(土) 23:38:07.73ID:1KHlh7WH
>>830
VBやC#はIDEを制御しない(Scriptじゃない)でしょ。
0833デフォルトの名無しさん2014/08/23(土) 23:44:04.69ID:1KHlh7WH
>>830
それとIDEはVBやC#のDebug実行はするけど、
VBやC#のObjectを永続的に操作しないでしょ。

"Smalltalkだと下記の式をIDEが直接実行する。"
Example compile:
'
hello
 Transcript show: ''Hello''.
'.
0834デフォルトの名無しさん2014/08/23(土) 23:47:41.94ID:tn55FLZ4
smalltalkのソースコード管理は知らなかったけど、聞いてる感じ確かに良さそうだな
0835デフォルトの名無しさん2014/08/23(土) 23:54:13.86ID:1KHlh7WH
SmalltalkはApplication(Smalltalk環境)を操作Scriptだから、
Smalltalk環境のObjectに対する変更は、Processを
終了するまでの一時的なものではなく永続的に
維持される。Source codeじゃなくSmalltalkの
Objectとして処理を保持してるってのも珍しくない。
そういう点から、開発中と実行Processが別って言語とは
温度差が有るね。

Shell scriptやBlenderにScriptとして組み込んだ
Pythonとかなら温度差は少ないんだろうけど。
0836デフォルトの名無しさん2014/08/23(土) 23:56:52.46ID:1KHlh7WH
>>828
IDEの使い方理解できなくて利用者に逃げられてるってのも追加で。
0837デフォルトの名無しさん2014/08/24(日) 00:01:11.36ID:QLy+hn3V
>>835
で、いつからその性質がScriptであることの条件になったの?
まずはスレタイと矛盾しないようにScriptを定義してよ
大層なIDEを必要としないってのはスクリプト言語の特徴として割と一般的な認識だと思うけど
0838デフォルトの名無しさん2014/08/24(日) 00:07:40.65ID:mc0xcEhs
それはSmalltalkをIDEと定義するか、専用仮想OSを操作する言語と定義するか
…によるのかもな
0839デフォルトの名無しさん2014/08/24(日) 00:11:20.64ID:BBHHxdw6
>>837
IDEの有無がScriptの条件だとは初耳だねぇ。

Scriptの意味は拡張されてるけど、Host Applicationを
制御する言語をScriptと呼ぶのは昔からだよ。

Shell Script → Shellの制御言語
Perl → 昔はScriptとしてShellを補助する程度の言語だった。
Java Script → Browserの制御言語
VB Script → VBのBrowser制御言語仕様
Post Script → 印刷機の制御言語
0840デフォルトの名無しさん2014/08/24(日) 00:17:54.01ID:BBHHxdw6
>>838
OSって表現も微妙だよScripting Hostあるいは
Host Applicationって方が近いと思う。

PythonからみたBlender
Shell ScriptからみたShell
JavaScriptからみたWebBrowser
ActionScriptからみたFlush
PostScriptからみた印刷機
AppleScriptからみたOSAX

と同じ感覚。
0841デフォルトの名無しさん2014/08/24(日) 00:22:12.76ID:QLy+hn3V
それはごもっともだけど、Smalltalk君が出てくる以前のこのスレでスクリプトっていうと
ほとんどの場合当然のようにホスト言語として使うことが想定されてたよね
JVMからみたJavaとでもCLRからみたC#とでも何とでも言えるわけだけど、
そんな分け方に何の意味があるの?
ここ言語スレだよ?
0842デフォルトの名無しさん2014/08/24(日) 00:27:52.74ID:BBHHxdw6
VimScriptなんてのもあったね

VimScript → Vim
08437332014/08/24(日) 00:32:22.62ID:1ar9zXjo
Smalltalkの面白みは、生きたオブジェクトをストアできる
データベースのようなものの中に処理系が構築されている
ところだと思います。クラスやインスタンスはもちろん
メソッドもプロセスも実行コンテキストも、コンパイラも
IDEもいっさいがっさいぜんぶDB内のデータとして
収められていて、どれも同じくアクセスしたり改変できるのが
心地いいです。

たとえばメソッドのソースコードは メソッドの属性として
扱われていたり、ユーザー操作もシステムの改変を伴うものは
全部データとして履歴が残るので、ファイルベースでは困難な
メソッド単位のバージョン管理もあっけないほど単純な仕組みで
実現されているのが覗いていて楽しいです。
0844デフォルトの名無しさん2014/08/24(日) 00:37:43.01ID:BBHHxdw6
>>841
・JavaはJVMで実行されるだけで、JVMを制御するための言語じゃない。
・C#はCLIに準拠してるだけでCLIを制御するための言語じゃない。
・SmalltalkはSmalltalk環境を制御するための言語でVMを制御するための言語じゃない。

わりと境界はハッキリしてるよ。
0845デフォルトの名無しさん2014/08/24(日) 01:01:36.92ID:mc0xcEhs
>>841
ホスト言語なんて想定してたかな、例えばJSなんてnodeとかよりブラウザ上の話のがメインになってた印象あったけど

そうだ、Luaの話をしようよ誰か
0846デフォルトの名無しさん2014/08/24(日) 01:08:08.58ID:QLy+hn3V
Luaは
・LuaはXXXで実行されるだけでXXXを制御するための言語じゃない。
に常に当てはまるからダメだよ
JSは元々ブラウザの制御のために作られた言語だからOKだけどね
0847デフォルトの名無しさん2014/08/24(日) 02:37:23.71ID:QnsE/ExW
luaと聞いて
0848デフォルトの名無しさん2014/08/24(日) 03:01:44.14ID:mc0xcEhs
>>846
組み込まれたアプリケーションを制御する以外に何に使うんだよって言語でもあるんだけどな…
0849デフォルトの名無しさん2014/08/24(日) 04:07:17.14ID:4M/o+ZzK
Chrome OS, Firefox OS
これがSmalltalkの目指してた姿。.netの目指してた姿。

>>845
http://zedshaw.com/
http://tir.mongrel2.org/
0850デフォルトの名無しさん2014/08/24(日) 08:14:48.97ID:XvjAGSEn
luaってゲーム業界だと有名らしいね
C++ばかりだと思ってたけど
0851デフォルトの名無しさん2014/08/24(日) 08:44:44.39ID:QnsE/ExW
つAngelscript
0852デフォルトの名無しさん2014/08/24(日) 09:09:19.81ID:PkG6bn0Z
システム全体をLuaで組んでると勘違いしてるにおいが
0853デフォルトの名無しさん2014/08/24(日) 09:24:05.51ID:goHZLKCs
>>843
オブジェクトの状態ご保存していて、
どうやってマージするの?
同じソースコードで実行してても、オブジェクトの状態が違う場合はあるけど
オブジェクトの状態が違ったらマージでコンフリクトするの?
0854デフォルトの名無しさん2014/08/24(日) 09:26:12.45ID:goHZLKCs
>>843
あと、ファイル単位のバージョン管理って何?
パッチ単位の間違いですか?
0855デフォルトの名無しさん2014/08/24(日) 09:45:33.01ID:S4wP8ply
Luaは電池が入ってないPython
GNOMEが入ってないX Windowと同じ
このままPythonやGNOMEを流行らせた方が平和になる
08567332014/08/24(日) 09:58:50.10ID:1ar9zXjo
>>853
「オブジェクトストアの中に処理系ごと入ってい」という感覚は
通常の、とくにファイルベースのOS上でのコンピューティングになれていると
ちょっと想像しにくいかもしれませんが、なんとか説明を試みてみます。

Smalltalkではオブジェクトストア(処理系を構成するオブジェクトも含む)は
仮想イメージと呼び、たしかにデータベースのようではあるのですが、これを
個々にマージするような作業はめったにしません。ユーザーごとにコピー(フォーク)して
使われる秘伝のタレみたいなものですね。

Smalltalkのコンパイルはメソッド定義時に行なわれます。
コードを書いたり、既存のコードを編集したときに保存するような操作をすると
そのタイミングでメソッド(やはりオブジェクト)は新しいソースコードを元にした
新しいバイトコード列に置き換わります。ソースはメソッドの属性なので
メソッドにたとえば getSource というメッセージを送ること得られます。

メソッドの定義や編集などのシステム改変を伴う操作はすべてChangeRecordというクラスに
属するオブジェクトとしてストアの中に蓄積されますので、あるメソッドの変更履歴がほしければ、
ChangeRecordのインスタンス群から注目するメソッドの改変に関わるインスタンスだけを抽出して
時系列で並べることで履歴が得られます。リバートは ChangeRecord にひも付けされた
古いソースでそのメソッドを再コンパイルして生成し既存のものと置き換えることで完了します。

古典的には ChangeRecord を集めた ChangeSet というオブジェクトをストア間でやりとり
することで、マージなども可能となっていました。
0857デフォルトの名無しさん2014/08/24(日) 10:03:23.75ID:iz1nwNoW
>>856
バグ修正で複数のメソッドを同時に修正してコミットした後、
デグレが判明してリバートすることになったとするじゃん?
メソッド単位で管理してたらリバートできなくね?
08587332014/08/24(日) 10:15:57.05ID:1ar9zXjo
>>857
メソッドごとにバージョンが管理されているというだけで、
コミットはチェンジセット(最新のメソッド変更のセット、組み合わせ)という単位で
されるので問題はないです。
0859デフォルトの名無しさん2014/08/24(日) 10:19:30.94ID:iz1nwNoW
あ、そうなん?
編集してコンパイルされる毎に保存されるって訊いてたから
どうやって複数のメソッドにまたがる一連の修正を
ひとつのコミットだと判定するのかなって思ったんだけど
保存とコミットは別々に行うのね
08607332014/08/24(日) 10:32:08.48ID:1ar9zXjo
>>859
「保存」とか「データベース」というのが既存の使い方と紛らわしかったですね。すみません。
オブジェクトストア(仮想イメージ)は、通常のデータベースのように複数のユーザーで
同時に共有することはしないので[*]、「保存」のような操作というのはあくまで
ファイルベースでいえば、編集したソースのファイルへ保存する程度の意味で使いました。
Smalltalk ではこのタイミングでメソッドがコンパイルされ、新しいバージョンに置き換わります。
複数ユーザーで開発する場合は、コミットは原則チェンジセット単位ですね。
[* GemStone/Sのように、オブジェクトストアを本格的OODBにしてしまった処理系もあります。]

書いていて思ったのですが、Smalltalk がメソッドレベルのバージョン管理など
便利な機能を容易に実現できているのは、オブジェクトストア(仮想イメージ)ベース
ということももちろんあるのですが、オブジェクトによる言語要素の単純さと遅延結合を
徹底したことによって実現された、メソッド単位のインクリメンタルなコンパイルが可能であった
ことのほうが大きいかもしれませんね。
0861デフォルトの名無しさん2014/08/24(日) 10:38:14.31ID:iz1nwNoW
それと、自分の普段の作業だと一日に何回もマージ作業が発生するんだけど、
マージするたびに仮想イメージは破棄して作り直すの?
破棄せず使い続けるのも問題ある気がするんだけど

いろいろ訊いてスマンね
0862デフォルトの名無しさん2014/08/24(日) 10:50:21.66ID:4PYQ/Qzg
>>861
作り直さないよ。Marge後のImageを複製してみんなで使うか、
Marge後のChangeSetを皆が使えばいい。
0863デフォルトの名無しさん2014/08/24(日) 10:54:15.67ID:xQR2v9XY
メソッドレベルのバージョン管理が便利な機能というのが
議論もされずに前提とされてるけど、どこが便利なの?

A氏とB氏が同時に同じメソッドを修正したら
それがマージ出来るものでも、必ずコンフリクトが発生するという
デメリットしか無いよね
0864デフォルトの名無しさん2014/08/24(日) 10:57:41.06ID:4PYQ/Qzg
>>863
衝突検知されない方が困るだろ
0865デフォルトの名無しさん2014/08/24(日) 11:01:12.89ID:iz1nwNoW
>>862
現在実行中のイメージと、マージ後のソースコードが
矛盾する状態になってることはないの?
0866デフォルトの名無しさん2014/08/24(日) 11:03:24.28ID:xQR2v9XY
>>864
何言ってんだ?
マージできるかどうかは人間にしか判断出来ないに決まってる
バージョン管理システムが仕様まで把握してるわけじゃ無いんだから
0867デフォルトの名無しさん2014/08/24(日) 11:06:40.74ID:iz1nwNoW
>>863
こういうこと?


# 元のコード
def foo(xs, ys):
    def f(x, y):
        return x + y
    return [f(x, y) for x, y in zip(xs, ys)]


# Aさんの修正(fを引数で渡せるように修正)
def foo(xs, ys, f=lambda x, y: x + y):
    return [f(x, y) for x, y in zip(xs, ys)]


# Bさんの修正(パフォーマンス改善のために返り値をジェネレータに変更)
def foo(xs, ys):
    def f(x, y):
        return x + y
    return (f(x, y) for x, y in zip(xs, ys))


# AとBのマージ
def foo(xs, ys, f=lambda x, y: x + y):
    return (f(x, y) for x, y in zip(xs, ys))
0868デフォルトの名無しさん2014/08/24(日) 11:18:37.97ID:4PYQ/Qzg
>>865
実行中のImageとMarge後のSourceが食い違うことは無いよ。
DBのStored Procedureを想像すれば分かりやすいかも。
DBの中でStored ProcedureをMargeしてしまう感じ。
0869デフォルトの名無しさん2014/08/24(日) 11:27:49.96ID:4PYQ/Qzg
>>866
完全な方法なんて無いだろうね。
でも、Marge後に構文が破綻するようなら、
Marge時に検知できるし検知できれば実際楽だ。
それから、仕様の面は単体Testで殆ど検知できる。
完全は無理でも9割以上自動化できれば、
何もしないより作業は9割分楽になる。
0870デフォルトの名無しさん2014/08/24(日) 11:29:36.85ID:iz1nwNoW
>>868
ソースコードへの編集履歴だけがイメージに保存される?
たとえば、ユーザの入力とか、読み込んだファイルとかの
ソースコードに存在しないデータをオブジェクトが持ってるとき、
それはイメージに保存されない?
0871デフォルトの名無しさん2014/08/24(日) 11:31:31.99ID:8kMqtahu
>>868
はたから見てるだけだけど、無理して英語で書かずにカタカナ語で書いた方がいいと思うよ
0872デフォルトの名無しさん2014/08/24(日) 11:35:49.37ID:iz1nwNoW
>>869
メソッドで管理するメリットって、マージで構文エラーを見つけられることなのか?
でも、単体テストを実行した瞬間に構文エラーは100%見つかるから、
メリットになってなく無いか?
08737332014/08/24(日) 11:41:09.58ID:1ar9zXjo
>>870
Smalltlak では do it 、print it といったユーザーによる式の評価は
既存クラスへのメソッドの定義とみなされるので、履歴に残ります。
(かつては本当にその文脈での self の属するクラスのメソッドとして
いったん定義され実行後、削除するといった実装になっていました)

履歴に残るか否かとは別に、オブジェクトストア内に生じたオブジェクトは
GC されない範囲ですべて仮想イメージに保存されます。
0874デフォルトの名無しさん2014/08/24(日) 11:48:55.67ID:iz1nwNoW
>>873
だいぶ分かって来た。ありがとう

マージ後のソースコードからはオブジェクトAを生成するコードは削除されているんだけど、
イメージ上はGCされずに残ってるから、オブジェクトAを参照する(バグってる)コードが
バグに気付かず動き続けるってことは無い?
0875デフォルトの名無しさん2014/08/24(日) 11:53:42.25ID:4PYQ/Qzg
>>870
DBとStored Procedureの様に考えればいいよ。
Image中にはあらゆる状態が保存されるけど、
Image中に保存されてる物がどう管理されてるかは別。

>>872
File単位だと入れ子が壊れてたり、
構文の区切りがなかったら
単体Test全部出来ないけど、Method単位なら他のMethodは単体Test出来るよ。
それに構文の間違いが影響する範囲はMethod内に限定されるから、
構文修正の範囲特定も楽。
0876デフォルトの名無しさん2014/08/24(日) 11:58:42.01ID:tZVXfngk
>>867
流石にそこまで短いコードだとgitでもコンフリクトするみたい
でも、もうちょっと実際的な長さのコードではマージの成功率はいいよ
0877デフォルトの名無しさん2014/08/24(日) 11:59:27.03ID:mc0xcEhs
>>866
それ、>>864 と何ら矛盾しないんだが…
0878デフォルトの名無しさん2014/08/24(日) 12:02:15.74ID:mc0xcEhs
>>855
Luaはライブラリが無いんじゃなくて、ベースシステム側が決められてないんだよ
強いて喩えるならブラウザの無いJavaScript…辺りかね
0879デフォルトの名無しさん2014/08/24(日) 12:03:03.95ID:tZVXfngk
>>875
パッチ単位でアクセプト/リジェクトを判断するんだから
構文エラーは文句なしでリジェクト
単体テストに進むまでも無い

あと、流石に構文エラーが発生した場所くらいは分かるわい
もうちょっとSmalltalk以外も知った方が良いぞ
0880デフォルトの名無しさん2014/08/24(日) 12:06:35.77ID:EYMdVqe7
西アフリカで、アウトブレイクした潜伏期間延長型エボラの死者・罹患者の数を散布図にし近似曲線を出してみたら
片対数グラフで直線だから既に指数関数的増加だった

2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱

2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生

2015年大晦日で1000万人。

ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している

エボラ出血熱は蚊やアブに刺されただけで感染する。

:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では

や る 気 は 皆 無
0881デフォルトの名無しさん2014/08/24(日) 12:08:38.36ID:4PYQ/Qzg
>>878
Luaも制御言語だからScriptの範疇だろうね。
制御を目的としてる事はScriptとして重要だけど
制御対象がどのApplicationかは重要じゃ無いでしょ。
JavaScriptやVBScriptなんかはWebBrowser以外に
Scripting Hostの制御もできるし。
0882デフォルトの名無しさん2014/08/24(日) 12:11:02.47ID:4PYQ/Qzg
>>879
ゴタゴタ言う前に一度SmalltalkでマトモなToolの一つでも作ってみたら?
結局触ったこと無いから感情的で批判的に
話ができないんでしょ。
0883デフォルトの名無しさん2014/08/24(日) 12:15:50.94ID:PkG6bn0Z
>>880
ハマダラカは血を吸ってお腹いっぱいの状態でも
他の人間に新鮮な血をおすそ分けしに来るのか
知らなかった
0884デフォルトの名無しさん2014/08/24(日) 12:16:34.49ID:tZVXfngk
>>882
反論出来なくなったらそれ?
実際の開発プロセスと照らし合わせてみて
批判されてるだけでしょ
0885デフォルトの名無しさん2014/08/24(日) 12:24:04.16ID:8otXsR9s
Smalltalkのバージョン管理は
CVSで扱う単位がファイルからメソッドになっただけの
時代遅れの代物ってことでFA
0886デフォルトの名無しさん2014/08/24(日) 12:27:27.07ID:4PYQ/Qzg
>>884
批判になって無い。
書き込み読んだだけじゃ、Smalltalkの併合機能は大したことが無いように見えるかもしれないが、
PythonとgitやらRubyとgitなんかの組み合わせじゃ、
Smalltalk環境なら5分で終わる手間が、
30分掛かるような事も現実に良くある。

事実を突き合わせて(批)判断する(判)と書いて批判と書くが、
2chの書き込みだけ見て感情的に非難するより、
実際にVisualWorksとか落としてみて批判した方がいい。
0887デフォルトの名無しさん2014/08/24(日) 12:29:46.85ID:4PYQ/Qzg
>>885
じゃSmalltalkのVersion管理より他のVersion管理Toolの優れてる点を上げてくれ。
0888デフォルトの名無しさん2014/08/24(日) 12:31:45.50ID:8otXsR9s
>>886
>PythonとgitやらRubyとgitなんかの組み合わせじゃ、
>Smalltalk環境なら5分で終わる手間が、
>30分掛かるような事も現実に良くある。

根拠も述べずにこういうこと書くなよ
感情的になりすぎ
0889デフォルトの名無しさん2014/08/24(日) 12:34:42.10ID:4PYQ/Qzg
gitとSmalltalkを比較した時のgitの良かったとこは、

・Smalltalk以外の言語が使える。
・githubが使える。

これ位だったよ。
0890デフォルトの名無しさん2014/08/24(日) 12:35:19.59ID:8otXsR9s
>>887
gitあたりを使って見れば分かるよ
あ、これは君の言い方の真似だからね
0891デフォルトの名無しさん2014/08/24(日) 12:38:30.65ID:8otXsR9s
煽り抜きで言うなら、同時に複数人が(ファイル単位とかメソッド単位などの制約無しに)編集できること

もっと真面目に言えば、git rebase -i できること
0892デフォルトの名無しさん2014/08/24(日) 12:38:37.64ID:4PYQ/Qzg
>>888
・時間が短くなった
・時間が短くなったったのは、
 Smalltalkの併合で構文検査や
 衝突検査があったから。

これ以上の根拠が必要なの?
実験が必要か?
0893デフォルトの名無しさん2014/08/24(日) 12:40:18.65ID:8otXsR9s
衝突検知の無いgitは使ったこと無いです
どこの世界線のヒトですか?
0894デフォルトの名無しさん2014/08/24(日) 12:42:24.77ID:O3P3S/Bj
Smalltalkがなんかここで流行ってるけど。
これを使ってるのは高齢者では?
世界初のオブジェクト指向型で、後継がオブジェクトCだろ。
0895デフォルトの名無しさん2014/08/24(日) 12:44:15.45ID:8otXsR9s
>>892
よく見たら>>879で論破されてた
0896デフォルトの名無しさん2014/08/24(日) 12:44:52.04ID:4PYQ/Qzg
>>891
その辺はSmalltalkで環境でも同じだね。

>>893
世界線とはなんですか?
gitはMethod単位の衝突検知はしないんですけど。
0897デフォルトの名無しさん2014/08/24(日) 12:48:30.29ID:8otXsR9s
>>896
メソッドより細かい単位で検知するじゃん
批判されてるのは、メソッドという大きな単位でしか判定できないことなんだけど、分かってる?
0898デフォルトの名無しさん2014/08/24(日) 12:49:35.13ID:DiebFCoU
git儲は自分の理解できないことは存在認めることすらできないキチガイがほとんどだからな
0899デフォルトの名無しさん2014/08/24(日) 12:52:27.34ID:FzUYznKa
Smalltalkで rebase -i できるのか
いや、出来ない理由は無いけどさ

具体的にはどうやってやってる?やり易い?
0900デフォルトの名無しさん2014/08/24(日) 12:52:47.55ID:4PYQ/Qzg
>>895
Patch単位でRejectの意味が分からなかったから放置してたけど、
多分Patchって併合結果の事だよね。
それならSmalltalkなら>>879の様な手順を
完全に踏まなくて良いってのも
利点だね。
併合結果(Patch)には間違った構文は残ってないし、
単体Testは並行してできる。
0901デフォルトの名無しさん2014/08/24(日) 12:54:59.76ID:4PYQ/Qzg
>>897
細かい単位でも出来るよ。
衝突したMethodに色が付いて、衝突個所に更に色がつく。
0902デフォルトの名無しさん2014/08/24(日) 13:00:25.38ID:4PYQ/Qzg
>>897
あれだMethod単位で検知って書いたのが悪かったんだね。
Method単位で衝突して無ければ自動で併合、
Method内で衝突していれば、そのMethodの併合は保留にしてくれる。
んで、当然Method内の何処が衝突してるかも教えてくれる。
0903デフォルトの名無しさん2014/08/24(日) 13:22:53.62ID:FzUYznKa
>>900
併合結果(Patch)ってなんぞw
なんで造語作ろうと思った

ていうか、git使ったことあるって嘘かよ
0904デフォルトの名無しさん2014/08/24(日) 13:31:19.19ID:4PYQ/Qzg
>>903
git diffで生成できるpatchの事いってたんじゃないのかよ

あとMethod単位で衝突を保留に出来る利点だけど、
衝突したMethodと関係ないMethodは衝突した
Methodを修正するより先に単体Testと修正が出来る。
0905デフォルトの名無しさん2014/08/24(日) 13:40:21.67ID:A6XyaTbK
スタート地点でGitはCを想定してるからな
0906デフォルトの名無しさん2014/08/24(日) 13:43:36.91ID:FzUYznKa
>>904
patchに見たことない造語を当ててて
面白かっただけだから、そうカリカリするな
怒ったなら謝るから

それとgitを使ったことあればpatchで絶対ピンとくるぞ
お前最初意味分からなかったんだっけ?面白い奴だな
0907デフォルトの名無しさん2014/08/24(日) 13:48:09.75ID:4PYQ/Qzg
>>906
>>879がgitのpatch(併合結果)指してんのか他のpatch指てんのか自信が無かったからね。
0908デフォルトの名無しさん2014/08/24(日) 14:06:36.66ID:iz1nwNoW
>>900
併合結果はマージ後の状態を指すでOK?
0909デフォルトの名無しさん2014/08/24(日) 14:20:08.51ID:4PYQ/Qzg
>>908
そうだね。だからpatchは併合結果の差分と言ったほうが正しいね。
つかgitのdiffのpatchは色々有るから、
patch=併合結果の差分とは限らないけど、
>>879の"パッチ"は併合結果の差分だと思って書いてる。
0910デフォルトの名無しさん2014/08/24(日) 14:24:48.99ID:iz1nwNoW
パッチのフォーマットは色々あるけど、
gitのパッチに修正の差分以外にバリエーションあったのか
知らなかった
09117332014/08/24(日) 14:26:20.34ID:1ar9zXjo
>>874
遅レスすみません。(ちょっと出かけて帰ってみたらまた殺伐として…^^;)

> バグに気付かず動き続けるってことは無い?

バグってる状況がどういうものかにもよりますね。

たとえば、オブジェクトAにインスタンス変数を追加するような変更(厳密には
オブジェクトAの属するクラスに対してインスタンス変数追加を指示)をした場合、
初期化のメソッドを追加しても、当然すでに存在するオブジェクトAには適用されませんから
追加したインスタンス変数を何かするメソッドは当然バグります。

ただこの手のトラブルはパターンとしてよく出くわすため、
動的にインスタンス変数を追加するような開発スタイルをとる場合は、
インスタンス変数へのアクセスは間接的(メソッドを介する)ようにして、
遅延初期化を行なうよう習慣づけられてもいます。

この手のはケント・ベックが「Smalltalkベストプラクティス・パターン」www.amazon.co.jp/dp/4894717549
にまとめているので興味があれば参考にしてみてください。
英語で大丈夫なら、ドラフト版がこちらなどから入手できます。
https://github.com/anapata/reading/blob/master/chapter14/Draft-Smalltalk%20Best%20Practice%20Patterns%20Kent%20Beck.pdf
0912デフォルトの名無しさん2014/08/24(日) 14:27:40.01ID:4PYQ/Qzg
>>910
WorkTreeとCommitとの差分や
Commit同士の差分やら目的や用途が違う
Patchが色々ある。
0913デフォルトの名無しさん2014/08/24(日) 14:40:59.54ID:DiebFCoU
修正の差分だとは限らないからな
機能追加とかバグ追加とかいろいろいろいろだ
0914デフォルトの名無しさん2014/08/24(日) 14:41:13.17ID:iz1nwNoW
>>911
そこが不思議だったんだけど、疑問は解消されました
運用で回避できるから問題無いのは、その通りだと思う


>>912
なるほど
でもworktreeとcommitで差分は取れるけど、
それでpatchを作っても使い道が無いっていうかユースケースが分からない
素直にbranch切ってcommitしてしまった方が良いような
0915デフォルトの名無しさん2014/08/24(日) 14:50:20.71ID:FzUYznKa
gitがセーブしたりpushしたりpullしたりできる、
つまりgitがバージョン管理する対象としてのパッチに
色々あると言ってる?
0916デフォルトの名無しさん2014/08/24(日) 23:52:47.98ID:BATf5Ith
>>915
git diffで得られるpatchに色んな物があると言ってますが。
0917デフォルトの名無しさん2014/08/25(月) 02:16:41.48ID:pUq5Hgzi
>>855
GNOMEでのアプリケーション開発の第一級言語はJavaScript
GnomeShellがそれ。nodejsの流行るまえからJavaScriptが採用されてた
0918デフォルトの名無しさん2014/08/25(月) 04:07:24.69ID:Cb7T7q6g
http://jobinjapan.jp/job-listing/keyword-php-pg.html
PHPマンセー!!
0919デフォルトの名無しさん2014/08/25(月) 07:50:38.92ID:HqZ1njSp
>>916
そのコマンドは差分を表示して確認するためのもので
patchとしては使わないよ
0920デフォルトの名無しさん2014/08/25(月) 07:57:18.99ID:HqZ1njSp
もしかしてgitのmergeは
git diffで作ったpatchをpatchコマンドで
適用することだと思ってるのかな?
0921デフォルトの名無しさん2014/08/25(月) 09:14:15.27ID:kPT0LcQ7
git diffでpatchは作らない(作れない、じゃないよ)けど
git format-patchは使う
0922デフォルトの名無しさん2014/08/25(月) 16:32:55.59ID:pUq5Hgzi
>>918
Node.jsに、順調に、その領域を侵食されてるNE☆
0923デフォルトの名無しさん2014/08/25(月) 20:06:31.94ID:JkJXREGt
>>919
patchで使えないpatchって何だよ。
0924デフォルトの名無しさん2014/08/25(月) 20:22:49.14ID:1k2cVze6
>>920
誰がmargeにpatch使うって書いてんの?
0925デフォルトの名無しさん2014/08/25(月) 20:32:13.18ID:gLwPLUfr
>>924
普通にマージの話してたじゃん
見苦しいぞ

で、何にパッチ使ってるの?
0926デフォルトの名無しさん2014/08/25(月) 20:35:46.86ID:1k2cVze6
>>925
>>879
0927デフォルトの名無しさん2014/08/25(月) 20:40:41.36ID:uDmHN95M
924がいつマージの話したというのか
0928デフォルトの名無しさん2014/08/25(月) 20:41:16.21ID:gLwPLUfr
>>926
pull→単体テストでエラー→reset
という話にしか見えないけど?
0929デフォルトの名無しさん2014/08/25(月) 20:45:32.91ID:gLwPLUfr
あれ?単体テストじゃないのか
まあでもエラーでマージを取り消す話だろ879は
0930デフォルトの名無しさん2014/08/25(月) 20:46:53.43ID:1k2cVze6
>>928
パッチって書いてあるからパッチなんだろ知らんがな
0931デフォルトの名無しさん2014/08/25(月) 20:51:03.42ID:gLwPLUfr
>>930
知らないもの引用してどうすんだよ
それじゃ925の質問に答えられてないだろ
0932デフォルトの名無しさん2014/08/25(月) 21:03:40.92ID:1k2cVze6
マージとパッチが絡む話は>>879しか無いんだから
パッチをどう使うかと聞かれたら>>879としか言いようが無いだろう
なんで>>879を避けるの?

あっ…(察し
0933デフォルトの名無しさん2014/08/25(月) 21:10:21.02ID:1k2cVze6
git パッチでググったらgit diffの話しか出てこないのに、
>>879を見て>>928だと判るのは
まぁご本人様ぐらいだよな。
0934デフォルトの名無しさん2014/08/25(月) 21:11:14.97ID:gLwPLUfr
意味が本気で分からない
879を避けるとは何?

で、パッチの使い道に答えられない理由は?
0935デフォルトの名無しさん2014/08/25(月) 21:16:51.81ID:gLwPLUfr
>>933
順番にリンクを遡っただけなんだけど
具体的には>>879>>875>>872>>869

いや、これマージの話だろ?
0936デフォルトの名無しさん2014/08/25(月) 21:18:37.69ID:1k2cVze6
>>934
またまた〜
ご自分がよくご存知のくせに〜
お前以外知ら訳ねぇよw
0937デフォルトの名無しさん2014/08/25(月) 21:24:13.88ID:1k2cVze6
>>935
ふらりと来てそんなにレス追うやつなんて居ないよね〜♪
しかもそんなかでパッチなんて言ってる奴は>>879しか居ないっていう。
自演お疲れ様でした♪
0938デフォルトの名無しさん2014/08/25(月) 21:29:14.55ID:gLwPLUfr
専ブラ使ってればリンク辿るの簡単なんだけど
0939デフォルトの名無しさん2014/08/25(月) 21:31:22.16ID:gLwPLUfr
とりあえずパッチの使い道を質問されると
都合が悪そうってのは分かったよ
理由までは分からんが
0940デフォルトの名無しさん2014/08/25(月) 21:34:42.79ID:1k2cVze6
>>939
パッチ単位で排除(リジェクト)と受領(アクセプト)を判断するって自分で書いてんじゃんかよ〜
読んでないの?
0941デフォルトの名無しさん2014/08/25(月) 21:39:48.89ID:rQXb++0P
>>939
ねえねえ>>879以外のどのレスにマージとパッチを紐付けるレスがあったの?
0942デフォルトの名無しさん2014/08/25(月) 21:48:36.49ID:gLwPLUfr
>>941
マージ以外のパッチの用途を答えられたら教えてあげる

だって、他に用途が無かったら紐付けるまでもないだろ?
0943デフォルトの名無しさん2014/08/25(月) 21:56:08.54ID:rQXb++0P
>>942
パッチをマージに使う事がまず無くね。
マージ前とマージ結果の差分としてパッチを作って管理者に送りつける使い方が普通でしょ。

Git にパッ チを送って 取り込
ま れた話
http://tech.nitoyon.com/ja/blog/2013/07/23/git-patch/
0944デフォルトの名無しさん2014/08/25(月) 22:09:15.16ID:v4AsQ7GP
>>921を書き込んだ俺大勝利
0945デフォルトの名無しさん2014/08/26(火) 01:01:56.24ID:/vAe4msZ
とりあえず「パッチ単位でアクセプト/リジェクト」は「コミット単位でアクセプト/リジェクト」ってのと同じ意味だろ、Gitでは
0946デフォルトの名無しさん2014/08/26(火) 07:03:18.15ID:AppgNI2W
>>945
まだ居たのかよ、しつこ。
gitの公式でさえgit format-patchで作ったpatchをpatchって言ってんだから、
んなこと思う奴はお前だけだよ。
0947デフォルトの名無しさん2014/08/26(火) 07:37:40.71ID:KiLq5bZF
まあgitのマニュアルだけ斜め読みして
実際に使った事無いと分からんわな
0948デフォルトの名無しさん2014/08/26(火) 07:51:47.26ID:KiLq5bZF
とりあえずgitが管理してるのはpatchの時系列で、
commitはpatchをブランチに保存する行為だってことは
gitを使ってれば分かる

それは公式マニュアルにも書いてある
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html#using-git-rebase
0949デフォルトの名無しさん2014/08/26(火) 09:12:54.34ID:EMU6M4mf
Smalltalkerが空気読めないのはスクリプトスレに粘着してることから明らかだけど
ここまで酷いとは

時代遅れのゴミ言語に粘着し続けてるだけはあるな
0950デフォルトの名無しさん2014/08/26(火) 12:01:29.82ID:/vAe4msZ
>>946
このスレには初めて書き込んだ別人なんだが…
最近書かれたドキュメントだと確かにコミットって言葉を使ってるほうが多いけど、パッチって言葉を使ってるページもたくさんあるよ。
0951デフォルトの名無しさん2014/08/26(火) 13:01:58.93ID:WAEsI18t
>>947
深読みしないと分からないことが一般的な表現なの?
斜め読みでもはっきり書いてる話が一般的でしょ。
そんなもん最初に気づいて当たり前とか言われてもなぁ。
0952デフォルトの名無しさん2014/08/26(火) 13:21:51.51ID:pPhOHn8w
>>886で盛大に法螺吹いちゃったから
gitに無知だと指摘されると発狂しちゃうんだね
0953デフォルトの名無しさん2014/08/26(火) 13:43:08.35ID:WAEsI18t
>>948
その意味合いでパッチをリジェクトするとはどういう事?

ちなみにそのマニュアルにはプロジェクトに投稿するためのパッチの作り方が書いてあるけど。
しかも最終的なパッチの作り方が
git format-patch

パッチファイルを受け取って却下するなら普通の運用なんだけどねぇ。
0954デフォルトの名無しさん2014/08/26(火) 14:28:24.32ID:/vAe4msZ
>>951
最初に気づいても当たり前ってんじゃなくて、Gitを批判するなら使ってからにしましょうってことでしょ、使ってないのに知ったかぶりで批判するから叩かれるわけで
>>953
メール形式のパッチでも別ブランチからのマージ(fast-forward含む)でもいいけど、
他人が別ブランチ、またはフォークした別リポジトリで作ったコミットを自分の作業コピー(とか中央リポジトリ)に含めてテストしたら問題が発生したとする。
そしたらそのコミットはダメなコミットなので作業コピー(とか中央リポジトリ)を他人の作ったコミットの含まれていない一つ前の状態に戻すことだと思うけど。
それが>>928で言うpull→テスト→resetだよね。
てか、Gitはマニュアル読んだ程度の知識しかないならその前提で喋ってくれ
0955デフォルトの名無しさん2014/08/26(火) 15:28:14.40ID:ETIF9fIi
(粘着Git厨とか気持ち悪いアンチの方がよっぽど空気読めてないと思うんだが…)
0956デフォルトの名無しさん2014/08/26(火) 17:17:36.91ID:NSwC5k+Z
あれはgit教の儲だからな
0957デフォルトの名無しさん2014/08/26(火) 18:33:19.24ID:SmpAsqGp
ツッコミどころが満載すぎるのが悪い
0958デフォルトの名無しさん2014/08/26(火) 19:34:46.10ID:/MMS26Q+
事実を突き合わせて(批)判断する(判)と書いて批判と書くが、
2chの書き込みだけ見て感情的に非難するより、
実際にGitとか落としてみて批判した方がいい。
0959デフォルトの名無しさん2014/08/26(火) 19:50:52.86ID:T/aMI0rI
>>948
邦訳があるんだから素直に邦訳貼ればいいのに

http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html
0960デフォルトの名無しさん2014/08/26(火) 19:58:08.67ID:CD7704Rh
>>954
非難じゃないんだから批判ぐらい良いだろうにって
ツッコミは置いといてどこでGitが非難されてんの?非難されてんのは、gitでググったりマニュアルよんだら真っ先に
git diffやgit format-patchが出てくるのにパッチと言ったらcommitだなんて言う
>>945みたいな輩だよ。gitのせいにすんなよ。
0961デフォルトの名無しさん2014/08/26(火) 20:03:26.84ID:/MMS26Q+
おいおい、gitでググったりマニュアル眺めた程度で
批判してたって認めちゃうのかよ
凄い開き直りだな
0962デフォルトの名無しさん2014/08/26(火) 20:10:18.28ID:CD7704Rh
>>954
てかマニュアルの用語とも違う用語を赤の他人が理解できて当たり前なの?
知ってる?そう言うのはオレオレ用語って言うんだよ。
コミュ障の人がよく使うヤツ。
0963デフォルトの名無しさん2014/08/26(火) 20:16:40.27ID:/MMS26Q+
マニュアルにも、rebaseの説明でちゃんとpatchって出てきてるんだよなぁ…

gitを使ったことが無いと、どのコマンドが重要か分からないから
目に留まらなかったんだろうけど
rebaseは超重要だから
0964デフォルトの名無しさん2014/08/26(火) 20:23:23.58ID:CD7704Rh
>>963
無理せず日本語のマニュアル読んだら?
0965デフォルトの名無しさん2014/08/26(火) 20:39:24.77ID:C3/NF/wt
> メール形式のパッチでも別ブランチからのマージ(fast-forward含む)でもいいけど、
他人が別ブランチ、またはフォークした別リポジトリで作ったコミットを自分の作業コピー(とか中央リポジトリ)に含めてテストしたら問題が発生したとする。
そしたらそのコミットはダメなコミットなので作業コピー(とか中央リポジトリ)を他人の作ったコミットの含まれていない一つ前の状態に戻すことだと思うけど。

ありえねー。統合テスト前にコミットとか非常識だわ。
普通はコミッター複数いるがこんな運用したら無茶苦茶になるわ。
0966デフォルトの名無しさん2014/08/26(火) 20:50:29.67ID:C3/NF/wt
>>954

・自分の作業コピーに含めてテスト
→ 結合テスト用に用意した作業コピーに他人のソースを上書きするまでは解るが
 ワザワザコミットする意味がない。

・中央リポジトリーに含めてテスト
→ 論外。テストしてない物を中央に直接入れるな。
 中央リポジトリーを使う他のメンバーに迷惑。
0967デフォルトの名無しさん2014/08/26(火) 20:58:52.68ID:KiLq5bZF
まず第一にmergeしたとは書いてあるけどcommitしたとは書いてないんだよね
だから、mergeとcommitが別操作ってことも分かってないんだろうね
こりゃ議論するの大変だ

それに、中央レポジトリであってもmasterとは限らないのに、なぜかmasterと決め付けてるっぽい
ていうか、リポジトリとブランチの違いも分かってないのか
こりゃ重症だ
0968デフォルトの名無しさん2014/08/26(火) 21:27:22.96ID:Kd+VnqDu
お前ら、そんなことよりgit未使用のSmalltalkerが書いた>>886ですよ
これは釈明無しでスルーしちゃダメなやつですよ
0969デフォルトの名無しさん2014/08/26(火) 21:27:24.31ID:C3/NF/wt
>>967
マージだろうが、コミットだろうがテストしてなきゃマズイのは同じだろうが。
マージでも論外。

それから、なんでテストより先にマージやコミットするか
その意義を教えてくれ。
0970デフォルトの名無しさん2014/08/26(火) 21:29:46.06ID:NSwC5k+Z
儲か否かでコミットの意味が実質的に違うから
0971デフォルトの名無しさん2014/08/26(火) 21:30:55.49ID:NSwC5k+Z
ID:C3/NF/wt はマージの意味も違うようだな
0972デフォルトの名無しさん2014/08/26(火) 21:42:24.65ID:C3/NF/wt
>>971
ごめんごめん。マージ後にテストすんのは普通だよな。
>>969のマージってのはブランチを統合するgit mergeの事。
当然マージ後もテストするだろうが、
未テストのブランチをgit mergeするなんてあり得ない。
マージで>>954の事態に陥るとしたら未テストの
ブランチをgit mergeしたぐらいしか考えられないだろ。
0973デフォルトの名無しさん2014/08/26(火) 21:47:05.86ID:C3/NF/wt
>>972
?マージで>>954の事態に陥るとしたら
○でも、マージで>>954の事態に陥るとしたら

でも が抜けてた。訂正。
0974デフォルトの名無しさん2014/08/26(火) 21:56:13.23ID:Kd+VnqDu
自分の環境でテストをパスしたら
他人の環境でエラーが出ることはあり得ない
と言いたいんだよね
0975デフォルトの名無しさん2014/08/26(火) 22:32:29.86ID:C3/NF/wt
>>974
他人の環境ではエラーが起きなかったブランチを
自分のブランチにマージしたらエラーが起きたって話か。

git mergeする場合は、ブランチ同士をgit pullとか使って、
ローカルでマージして動作確認が取れた上でgit mergeする。
0976デフォルトの名無しさん2014/08/26(火) 22:33:43.94ID:/vAe4msZ
なんか沢山アンカついてた。
頼む、Gitについてなにか意見を言うなら、ID:C3/NF/wt は http://git-scm.com/book/ja/ の2,3,5,6章くらいは読んでからにしてくれ。
>>966でおかしいと指摘していることはGitでは一般的には当たり前に行われていることだし、それによる害もないような運用をみんなしてるから。
もちろん運用がまずかったらトラブルは起こるだろうけど、運用に関してもGit Bookには結構述べられているので皆守っている。
テストしてなきゃダメというのは正しいけど、>>974が指摘しているように、どんな環境でも100%実行を保障してからじゃなきゃコミットできないなんてスタイルは普通取らないでしょ。
トピックブランチを切ってそこに自分の環境ではうまく動くコードをコミットして、皆でテストして、問題があれば修正して、最終的にmasterなりなんなりにマージするわけだから。
>>975
git pullって、git fetchとgit mergeを組み合わせたコマンドだよ。pullしてる時点でマージしてる。git mergeの動作わかってる?
0977デフォルトの名無しさん2014/08/26(火) 22:56:58.40ID:C3/NF/wt
>>976
業務上じゃ、マージする環境で一旦動作確認するのが当たり前。
大体それでマトモに運用できるなら、
gitの連中もパッチで要求したりしねーよ。

それとgit pullはgit fetchの間違い。スマンな。
0978デフォルトの名無しさん2014/08/26(火) 23:15:13.54ID:C3/NF/wt
そういや深く考えず>>966でレスしたが>>954の中央リポジトリーって何だ?
gitは中央リポジトリーが要らないシステムでリポジトリーの共有は
非推奨だろ。
基本的は人の変更を個々人が取り込み、
個々人はリポジトリーを公開する(あるいはGitHub)だけで、
他人のリポジトリーは変更しない。

gitの連中がパッチでしかバグフィックスを受け取らないのもそれが理由だろ。
0979デフォルトの名無しさん2014/08/26(火) 23:16:50.76ID:/vAe4msZ
うん、ID:C3/NF/wtがGitを適当に使い方だけ見て批判してるのはよくわかった。
0980デフォルトの名無しさん2014/08/26(火) 23:30:27.60ID:NSwC5k+Z
ID:C3/NF/wt君は首突っ込む前に少しは分散型について学習してきな
0981デフォルトの名無しさん2014/08/26(火) 23:30:31.62ID:C3/NF/wt
>>979
ねえねえ中央リポジトリーって何?
masterじゃ無いんだよね。何を指してるの?
0982デフォルトの名無しさん2014/08/26(火) 23:39:37.61ID:/vAe4msZ
>>981
それが分からないってことはGitの実践については全く理解してませんっていうことを認めてね

端的に言うと>>978は間違い
多くのケースでは,GitHubなりなんなりの誰かのリポジトリを中央リポジトリとして、そこと自分のローカルリポジトリを同期しながら作業する
masterっていうのはリポジトリじゃなくてブランチの話だからまた別
このへんの話はGit bookに書いてあるんで知りたかったら読んで欲しい。よくまとまってるので。

それとも炎上学習法したいだけなの?
0983デフォルトの名無しさん2014/08/27(水) 00:00:28.30ID:K9igsSCk
>>982
その通りだと公開してるリポジトリー(中央リポジトリー)に直接テストしてないコードぶち込むんでしょ。
余計に>>954がマヌケな発言になるね。
0984デフォルトの名無しさん2014/08/27(水) 00:06:41.15ID:tAYeXjtD
ちゃんとトピックブランチ切って皆でテストして云々って説明してるのに
全く伝わってなくて>>976が可哀想すぎるw
0985デフォルトの名無しさん2014/08/27(水) 00:07:04.46ID:Gkyyi0oW
>>983
中央リポジトリだったとしても、開発用のブランチを切るし、一応ローカルで出来るひと通りのテストはしてからcommit/pushするんだよ、いきなりmasterに突っ込むわけではない

つまり、こういうパッチ作ってみたから皆試してくれよってのをパッチファイルベースじゃなくてgitのブランチを使ってやっているだけのこと

マヌケな発言だと思うのはあんたがマヌケでgitのワークフローをなんにも理解してないからだ
0986デフォルトの名無しさん2014/08/27(水) 00:07:55.34ID:PsKPXBAp
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
トットリニーップwwwwwww トットリニーップwwwwwww
ホーシンツクツクwwwwwwwwwww ホーシンツクツクwwwwwwwwwww
ホーシンツクツクwwwwwwwwwww
似にニィィィィィィィィィィィィィィィィィィィィィップwwwwwwwwwwwwwwwwwwwww
0987デフォルトの名無しさん2014/08/27(水) 00:18:52.09ID:2yseGAwQ
次スレ
http://peace.2ch.net/test/read.cgi/tech/1409066255/
0988デフォルトの名無しさん2014/08/27(水) 00:20:12.18ID:K9igsSCk
>>985
何を馬鹿にされてるか解ってる?
中央リポジトリーでやる必要無んだよそれ。

http://git-scm.com/book/ja/Git-%E3%81%A7%E3%81%AE%E5%88%86%E6%95%A3%E4%BD%9C%E6%A5%AD-%E5%88%86%E6%95%A3%E4%BD%9C%E6%A5%AD%E3%81%AE%E6%B5%81%E3%82%8C

管理者が居るなら、管理者がローカルで確認すりゃいい。
個々人でリポジトリー公開してんなら、
個々人のローカルリポジトリーで確認すりゃいい話。
0989デフォルトの名無しさん2014/08/27(水) 00:21:37.84ID:K9igsSCk
おっとURLこっちだった。
http://git-scm.com/figures/18333fig0502-tn.png
0990デフォルトの名無しさん2014/08/27(水) 00:26:44.92ID:2yseGAwQ
それで話が>>974に戻る、と
0991デフォルトの名無しさん2014/08/27(水) 00:33:26.24ID:Gkyyi0oW
>>988-989
それはプロジェクトの形態によるのよ。
全然知らない人との開発だったらその図のとおり、Githubとかだったらforkしてcommitしたらpull request送るけど、
意思疎通がよく出来ている小規模な開発チームだったらわざわざ公開リポジトリを沢山作ったりしないで中央リポジトリ1本でやるのが多いと思うよ。
中央リポジトリにブランチを切れば済む話だからね。
開発用のブランチが追加されるということをその中央リポジトリを使っている人みんながわかっていれば何の問題にもならないし、わざわざforkする必要がない。
「中央リポジトリでやる必要がない」のもケースによっては事実だし、「中央リポジトリ以外の公開リポジトリを作ってやる必要がない」のもケースによっては事実。
てかあんたの貼ったURLにも小規模な場合は中央リポジトリでもいけるって書いてあるじゃん。決して非推奨とかそういう話ではないよ。

ていうかさ、「馬鹿にしている」つもりらしいけど、あんたGitでのチーム開発経験はないみたいなのに随分と上から目線なんだなあ…
引っ込みつかなくなっちゃったんだろうね。本気で自分の方がGitをわかってると思うなら病気だと思うがw
0992デフォルトの名無しさん2014/08/27(水) 00:46:34.73ID:K9igsSCk
>>990
完璧では無かろうが複数人に公開前に最低限テストすんのは当たり前。
環境が原因のバグは仕方ないにしてもどんな環境でも
起こりうるバグは可能な限り取り去るべきだ。
0993デフォルトの名無しさん2014/08/27(水) 00:56:29.05ID:K9igsSCk
>>991
中央集権型だろうが分散型だろうがテストなしでpushできるのは道楽だけだよ。
3人の小規模チームですらマージには神経尖らしてんのに、
仕事や
何か運営してる様な人は、まずテスト抜きで公開用にマージなんざ出来んよ。
0994デフォルトの名無しさん2014/08/27(水) 01:08:29.82ID:2yseGAwQ
> 中央リポジトリだったとしても、開発用のブランチを切るし、一応ローカルで出来るひと通りのテストはしてからcommit/pushするんだよ、いきなりmasterに突っ込むわけではない

という文章も、既知外が読むとテストせずにpushするという解釈になるらしい
0995デフォルトの名無しさん2014/08/27(水) 01:10:07.03ID:Gkyyi0oW
>>993
あのさ、mergeとpushは独立した概念なんだけどそこは理解してる?
0996デフォルトの名無しさん2014/08/27(水) 01:23:01.39ID:K9igsSCk
>>994
そのやり方は中央リポジトリーとは言ってるけど作業コピー使った話で、
中央リポジトリー版の説明になって無い。

>>995
中央集権型ならmergeしようが無いからpushするしか無いだろ。
中央集権型の意味わかってんの?
0997デフォルトの名無しさん2014/08/27(水) 01:27:32.30ID:Gkyyi0oW
>>996
Gitで言うところの中央集権型の意味わかってんの?w
0998デフォルトの名無しさん2014/08/27(水) 01:28:22.28ID:K9igsSCk
>>985
コレが中央リポジトリー版なら作業コピー版はどうなんの?
0999デフォルトの名無しさん2014/08/27(水) 01:29:28.17ID:K9igsSCk
>>997
http://git-scm.com/figures/18333fig0501-tn.png
1000デフォルトの名無しさん2014/08/27(水) 01:31:11.39ID:2yseGAwQ
中央リポジトリから各々がローカルにgit cloneして作業してることも分からないのか
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。