【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に新規フレームワークも必要ないでしょう
今後は衰退するだけ
それでもまだLLではダントツ1位で使われてるけど
rubyはphp使ってるとバカにされるから使っている層もいるので技術者のレベルが極端に離れすぎてる
ちょいと初心者すぎるruby使いが増えてやしませんか
0003デフォルトの名無しさん
2014/07/21(月) 02:12:34.21ID:bGaWqmfanodejsをリアルタイムwebが目的な層ばっかりだと思う
websocketはpythonでもgoでもできるしnodejsだけの強みではなくなってきている
0004デフォルトの名無しさん
2014/07/21(月) 09:38:25.14ID:GL7TaMAB0005デフォルトの名無しさん
2014/07/21(月) 10:57:07.69ID:wTJnMD0CPHPって息してるの?
0006デフォルトの名無しさん
2014/07/21(月) 10:59:12.51ID:wTJnMD0C0007デフォルトの名無しさん
2014/07/21(月) 12:38:20.11ID:wTJnMD0Cpythonじゃデザインは出来ないよね?
0008デフォルトの名無しさん
2014/07/21(月) 12:48:05.97ID:N6YKvtVQ0009デフォルトの名無しさん
2014/07/21(月) 14:15:44.59ID:VU7LZ8It0010デフォルトの名無しさん
2014/07/21(月) 14:27:45.13ID:ClN5gZ6P日本語でいうデザインは、グラフィカルデザイン、UI/UXデザインのことでしょ。
0011デフォルトの名無しさん
2014/07/21(月) 14:50:41.15ID:qfklhAEG0012デフォルトの名無しさん
2014/07/21(月) 15:12:20.78ID:wTJnMD0C0013デフォルトの名無しさん
2014/07/21(月) 15:13:19.09ID:+TobWlU/0014デフォルトの名無しさん
2014/07/21(月) 15:45:48.68ID:By4oX8850015デフォルトの名無しさん
2014/07/21(月) 16:21:25.64ID:wTJnMD0Cpythonがnode.jsに取って代わられて何が不思議なのさ
0016デフォルトの名無しさん
2014/07/21(月) 16:29:50.00ID:w7niC8il0017デフォルトの名無しさん
2014/07/21(月) 16:30:42.61ID:VU7LZ8Itぃぬx界隈じゃ全然消えてすらないしな
0018デフォルトの名無しさん
2014/07/21(月) 16:41:50.26ID:b/wvyxgTメモリリークになりました
0019デフォルトの名無しさん
2014/07/21(月) 16:49:47.97ID:HJsm+jda全てとあるけど、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:wTJnMD0C0021デフォルトの名無しさん
2014/07/21(月) 17:03:43.95ID:HJsm+jdaあるけど、決定的な返答が無いみたい
・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外部から分からないよね
ウチもPythonJSを使ってるけど、
端から見たらJavascriptと区別付かないはず
0023デフォルトの名無しさん
2014/07/21(月) 19:02:16.98ID:GL7TaMAB0024デフォルトの名無しさん
2014/07/21(月) 23:16:06.77ID:wTJnMD0C「ウチ」って自宅のこと?
0025デフォルトの名無しさん
2014/07/22(火) 00:03:40.80ID:OPIBUn21底辺プログラマの受け皿なんだ
JSっていう言語の酷さが、まともなプログラマを遠ざける
参入障壁になって雑魚プログラマを守ってるのに、
そんな参入障壁を破壊するAltJSは
底辺の生活を脅かす敵だよ
0026デフォルトの名無しさん
2014/07/22(火) 00:19:07.23ID:RYGlxIg7(何言ってんだこいつ)
0027デフォルトの名無しさん
2014/07/22(火) 01:00:57.33ID:K5R4WKSfAltJSを使うと底辺派遣共をニートに追いやる手助けが出来るのか
そりゃすげぇ。絶対使うわ
0028デフォルトの名無しさん
2014/07/22(火) 11:55:45.08ID:mFr1Tp1wそもそもこんなに人数いらなくなってるだけ
一気に大勢失業させると不味いから段階を通じて徐々に失速させていくのが国の仕事
これも一種のバブルだって言ってんのに理解してないなんちゃって技術者が多い
0029デフォルトの名無しさん
2014/07/22(火) 12:14:43.61ID:iu3Ufd630030デフォルトの名無しさん
2014/07/22(火) 12:32:30.37ID:OLIbXREN0031デフォルトの名無しさん
2014/07/22(火) 13:18:52.79ID:9g25Oa3V底辺と管理しかできない奴を別にすると
人はかなり不足してるけどな
0032デフォルトの名無しさん
2014/07/22(火) 13:36:00.23ID:brrWCVo/これじゃ優秀な人間は集まらないよ。 せめて数倍の差は付けないと。
0033デフォルトの名無しさん
2014/07/22(火) 14:15:27.03ID:zJWBojIk0034デフォルトの名無しさん
2014/07/22(火) 14:46:39.84ID:brrWCVo/0035デフォルトの名無しさん
2014/07/22(火) 15:20:57.60ID:OLIbXRENWeb技術者って、計算機に対して高卒みたいな白痴でもできるじゃん
安くて当然だよ
0036デフォルトの名無しさん
2014/07/22(火) 15:24:00.36ID:OLIbXREN英検っていうけど、英語圏に居るホームレスを捕まえてきた方がはやい
0037デフォルトの名無しさん
2014/07/22(火) 15:30:06.31ID:9g25Oa3Vそういうのしか周りにいないんですね
0038デフォルトの名無しさん
2014/07/22(火) 15:47:58.34ID:cFa+HftPWeb系の殆どはそのレベルの仕事でしか無い。
コピペで成り立つ。 またそうしないと競争に勝てない。
0039デフォルトの名無しさん
2014/07/22(火) 15:50:47.56ID:cFa+HftPホームレスにプログラムしろと言うのに等しい。
0040デフォルトの名無しさん
2014/07/22(火) 16:29:59.63ID:OLIbXREN0041デフォルトの名無しさん
2014/07/22(火) 17:18:46.12ID:qC8GKtmW> Web技術者って、
そっちじゃなくて、優秀な技術者の給料がそいつらとたいして変わらないのが問題なんだろ
底辺はプログラム以前に日本語理解力から足りてないんだよな (w
0042デフォルトの名無しさん
2014/07/22(火) 17:24:44.73ID:cFa+HftP学歴で物事を考えるお前もかなりいかれてる。
0043デフォルトの名無しさん
2014/07/22(火) 18:52:35.67ID:OLIbXRENてか、優秀な人って、皆、R&Dに行くだろ
プログラマなんて、ただの労働者だよ
0044デフォルトの名無しさん
2014/07/22(火) 18:54:01.49ID:OLIbXREN原子核物理や宇宙工学を専攻にしたWebプログラマなんて無能扱いするだろ?
プログラマなんて最底辺の労働者だよ
0045デフォルトの名無しさん
2014/07/22(火) 19:03:16.73ID:cFa+HftP価値が解らない馬鹿ばかりだから。
アメリカだと医師免許を取った後IT業界に入る人もそれなりにいるぞ。
ま、言われたままプログラムをコーティングすると言う作業自体は労働集約型の土方仕事では有るが。
0046デフォルトの名無しさん
2014/07/22(火) 19:08:04.90ID:OLIbXRENそいつら、真面目に医者になる勉強したの?
0047デフォルトの名無しさん
2014/07/22(火) 19:13:39.79ID:OLIbXRENそれか、医療関係のソフトウェアの設計を行うSEみたいなポスト
計算機科学の知識なんて、少しもないよね?どのみち、最底辺の土方仕事
0048デフォルトの名無しさん
2014/07/22(火) 19:13:43.72ID:cFa+HftPだからIT業界で金に成らなくても食いっぱぐれは無い。
0049デフォルトの名無しさん
2014/07/22(火) 19:18:46.90ID:cFa+HftP上層部の設計はいくらでも知識集約型の仕事が有るんだよ。
医師であれば最も近いのが医療系。
設計して作り上げ、テストするには医師免許がある人間にしか出来ない。
ME業界がどれだけ医者に金をつぎ込んでるか知ってるか? プログラムなんかなにもしないけど。
0050デフォルトの名無しさん
2014/07/22(火) 19:35:19.62ID:cFa+HftPそれなりに経験が有るプログラマーならわかると思うが、やってれば嫌がおうにも専門知識を知らなければろくなプログラムは出来ない。
だからだんだん特化して行くことが自分の価値を上げることになる。
0051デフォルトの名無しさん
2014/07/22(火) 20:13:41.89ID:qC8GKtmW世の中、とんでもなく頭のいいやつがいるんだよ
お前や俺らがそれなりに勉強して習得している技術を、そいつらはちょっと見ただけで易々と理解することができる
プログラマーと医療ならまだしも、野球選手(アメリカなので当然メジャーリーグ)として活躍しながら、30代でスパッと医者に転身した奴すらいるんだよ
しかも、そいつは野球選手から医者になることまでちゃんと計画していたと言うから驚きだよ
なので、自分に当てはめてどうのこうの言うのは全然的外れだよ
0052デフォルトの名無しさん
2014/07/22(火) 20:31:24.50ID:ASPChdfI0053デフォルトの名無しさん
2014/07/22(火) 21:23:14.47ID:OLIbXRENえ?医師免許だけ取ってできる仕事ってあるの?名義貸し?
0054デフォルトの名無しさん
2014/07/22(火) 21:26:27.66ID:OLIbXRENそもそも、野球選手って基本的に体動かすだけで、素振りやキャッチボール、
移動中なんて、何か他の物事を考えるだけの頭が空いてるじゃん
0055デフォルトの名無しさん
2014/07/22(火) 21:36:14.57ID:OLIbXREN上流の知識集約でいう知識って、計算機科学的な意味会いでの知識じゃないでしょ?
ペトリネットなんて、その辺の四流国立でも簡単にやるよ。コーディングの方が難しいよね
0056デフォルトの名無しさん
2014/07/22(火) 21:37:04.42ID:qC8GKtmW普通にやってたら、勉強する気力なんて維持できない
0057デフォルトの名無しさん
2014/07/22(火) 21:38:48.08ID:OLIbXREN0058デフォルトの名無しさん
2014/07/22(火) 21:54:57.99ID:OLIbXRENろくなコーディング経験もないヤツらがやったお絵かきを元にするぐらいなら、
情報産業なんて見限って、クラウドの方へ行くよね?当然だよね。
0059デフォルトの名無しさん
2014/07/22(火) 22:24:57.55ID:vNYu1ctvDropbox の 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今もうgnuplotにhtml5のインタフェースが出来る時代だよ?まだ使ってたの?
0061デフォルトの名無しさん
2014/07/23(水) 00:28:21.31ID:gKvkFWy80062デフォルトの名無しさん
2014/07/23(水) 00:39:55.11ID:xa9IqUVv0063デフォルトの名無しさん
2014/07/23(水) 00:44:35.03ID:gU9I4UPnアメリカのプログラマの平均年収は850万な。
まあ、社会保障とか考えたら、アメリカで働こうとは思わんが。
0064デフォルトの名無しさん
2014/07/23(水) 00:53:59.14ID:xa9IqUVvObjective-C 105 高い。
平均的技術者給与 2013年 85.6
0065デフォルトの名無しさん
2014/07/23(水) 00:58:59.12ID:xa9IqUVv倍の差が有るな。
日本のSE 538万円
0066デフォルトの名無しさん
2014/07/23(水) 00:59:39.38ID:gU9I4UPnObj-C高いな。Ovj-C得意だし、これ見ると転職したくなるは..
スクリプト系はPythonが求人数が多くて、給与も多かった記憶がある。
0067デフォルトの名無しさん
2014/07/23(水) 01:02:50.54ID:6bOgx7OS0068デフォルトの名無しさん
2014/07/23(水) 01:04:24.84ID:mkGkREWO大体、向こうの平均的なプログラマと日本の平均的なプログラマのレベルって違うよね?
Objective-Cなんて、流行りってだけで殆んどの開発者たちは触りたくない言語の1つ。
高級なのは供給がおっつかないだけ。
計算機科学者たちは、haskellやcommon lispかSmalltalkぐらいしか使わないし、
真の漢たちは今でもperlを書いている
0069デフォルトの名無しさん
2014/07/23(水) 01:06:16.75ID:gU9I4UPnおっさん乙
0070デフォルトの名無しさん
2014/07/23(水) 01:15:28.69ID:6bOgx7OSOS 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$119K
$250Kのプログラマーもいる。
Facebookもほぼ同じ。
Adobe 93.7K
0072デフォルトの名無しさん
2014/07/23(水) 01:30:08.46ID:mkGkREWOよくほら、ガンダムとかで、最強すぎる機体でニュータイプにしか使いこなせないってあるよね
Objective-Cですら扱うのが難しいのにさ。大事なことです。残念だけど
0073デフォルトの名無しさん
2014/07/23(水) 01:51:23.92ID:x9ETGmWK0074デフォルトの名無しさん
2014/07/23(水) 02:06:57.72ID:xa9IqUVvC系のプログラマーなら直ぐに使えるだろう。
尤も、CとObjective-Cのライブラリの知識が必要にはなるが。
Objective-Cは参入障壁として働いてたが、Swiftでは障壁らしき物は無いから尻ごみしてたプログラマーがどっと参入し始めるだろう。
結果的にはObjective-Cも有る程度覚えることになるから、数年間は貴重な人材としてニーズは高いだろう。
0075デフォルトの名無しさん
2014/07/23(水) 02:29:08.86ID:mkGkREWO冗談でしょ?あんなの、300〜400万円ぐらいが妥当だって
0076デフォルトの名無しさん
2014/07/23(水) 06:01:43.64ID:gWqCo8Ll1人当たりの売上が大きいから、給料も高い
例えば、日本の大手商社の年収は1,500万円だが、
中小商社は500万円
これも1人当たりの売上が3倍違うから
つまり、少ない人数で、大きい売上をねらえ(合理化)
0077デフォルトの名無しさん
2014/07/23(水) 06:43:52.00ID:37asru4I言うだけなら、簡単だわな (w
0078デフォルトの名無しさん
2014/07/23(水) 08:36:05.14ID:x9ETGmWKこの手のポジションにはヘッドハンティングされる事でしか就けないけどね
0079デフォルトの名無しさん
2014/07/23(水) 08:44:53.12ID:UT9I22cv下請け(大数)をこき使って、元請け(少数)が搾取する、の間違いだろ。
まあ米も似たようなもんだが、こと一部のプログラマが不当な評価を受けているのは看過できん。
0080デフォルトの名無しさん
2014/07/23(水) 13:23:38.12ID:mkGkREWOなん…だと…
0081デフォルトの名無しさん
2014/07/23(水) 13:27:32.22ID:xa9IqUVv0082デフォルトの名無しさん
2014/07/23(水) 14:49:50.03ID:gKvkFWy80083デフォルトの名無しさん
2014/07/23(水) 15:12:34.27ID:F2A3Bmpn経験者ならMax1500万まで有る。
DeNAも同じ。 隣の芝は青い。
0084デフォルトの名無しさん
2014/07/23(水) 15:45:12.63ID:mkGkREWO0085デフォルトの名無しさん
2014/07/23(水) 16:03:07.73ID:F2A3Bmpn能力無いのはどの世界に行こうがそれなりの給与は当然。
0086デフォルトの名無しさん
2014/07/23(水) 16:07:10.34ID:mkGkREWO周りに1000万以上稼いでる40〜60歳の人間いないの?
0087デフォルトの名無しさん
2014/07/23(水) 19:48:32.11ID:xa9IqUVv0088デフォルトの名無しさん
2014/07/23(水) 20:35:28.78ID:ct/sHGozSmalltalkと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能力って?世の中にあるのは、肩書という名の身分保証か専門職だけだよ?
0090デフォルトの名無しさん
2014/07/23(水) 21:36:47.41ID:uT44zPRmどっちもキモいけど、特に上の方のコードのキモさはヤバイな
0091デフォルトの名無しさん
2014/07/23(水) 22:24:15.39ID:JxJ7YhrpMessageをそのまま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おそらく >>90 は、>>88 の冒頭にある感嘆符("!")で囲まれた部分が
コメントであり、しかもそれがブラウザがテキスト保存時に
自動挿入したものだという事を知らないんだと思う
知らなきゃ、キモいという感想も自然ではないかと....
0094デフォルトの名無しさん
2014/07/23(水) 23:52:59.97ID:VCqAK7ht正確には感嘆符は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:dyntnBYy0096デフォルトの名無しさん
2014/07/24(木) 08:10:51.67ID:JP3xDxVcせやで
0097デフォルトの名無しさん
2014/07/24(木) 08:27:55.92ID:jOl7q6Ci0098デフォルトの名無しさん
2014/07/24(木) 13:07:57.22ID:qN7cZzHR@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それが理解出来なければ世捨て人にでもなった方が良い。
0103デフォルトの名無しさん
2014/07/25(金) 20:53:32.57ID:T3w4l3wJ能力があれば、年収の高い企業に入るかどうかを自分で選べるよ
低脳には選択肢なんて無いけど
0104デフォルトの名無しさん
2014/07/25(金) 22:19:58.80ID:JNKb9OcCn次請けとか以前に、SIer自体がウンコなんだよなぁ...
0105デフォルトの名無しさん
2014/07/26(土) 11:31:22.72ID:aO8EXKyJ他のスクリプト言語は公式モジュールが少ないか無い。
拡張モジュールは公式配布にどんどん取り込むのが優れてると思う。
バージョン違いで動作しないとか、インストールが不便とかは良くない。
多くの言語はテキストのスクリプトで拡張を配布してたりする。
0106デフォルトの名無しさん
2014/07/26(土) 12:38:50.17ID:0b/aanrH0107デフォルトの名無しさん
2014/07/26(土) 18:51:47.63ID:y8Gk3QAa0108デフォルトの名無しさん
2014/07/26(土) 19:12:18.04ID:x2MBFUHbこれGoでいいじゃんと
0109デフォルトの名無しさん
2014/07/26(土) 19:14:39.09ID:70DG+pa0Go いら無いじゃん。
0110デフォルトの名無しさん
2014/07/26(土) 19:35:34.30ID:SMow+4nR流石にnode.jsよりはGoの方がマトモだよ
0111デフォルトの名無しさん
2014/07/26(土) 20:06:24.90ID:Rn5qtPnOnode.jsをディスり始めた。
0112デフォルトの名無しさん
2014/07/26(土) 20:07:19.43ID:x2MBFUHb・yieldでごまかそうともコールバックは書いててやっぱ苦痛
・パフォーマンス
ありきたりだけどこの辺かなぁ
もうちょっと遊んでみるか
0113デフォルトの名無しさん
2014/07/26(土) 20:43:31.86ID:Rn5qtPnOASP.NETが数年後TypeScriptが主言語になる。
Win9のUIもTypeScriptで開発することになるでしょ。
0114デフォルトの名無しさん
2014/07/26(土) 21:33:05.87ID:y8Gk3QAa0115デフォルトの名無しさん
2014/07/26(土) 23:52:17.95ID:7tW4RhS5ブラウザ言語が特定のベンダー言語に固定されることはない。
0116デフォルトの名無しさん
2014/07/26(土) 23:54:10.33ID:3rBT0efMgoも良いが型安全を気にしない規模ならSmalltalkbフ方が手っ取り荘≠「な。
0117デャtォルトの名無bオさん
2014/07/27(日) 00:57:43.91ID:XvMAOXoxお前のライバルはTclだから
0118デフォルトの名無しさん
2014/07/27(日) 02:14:38.41ID:DcRvt70C既にjavascriptが居たせいで普及できなかった
この世界で重要なのは既得権利を如何に守るかってことだけ
0119デフォルトの名無しさん
2014/07/27(日) 14:03:35.08ID:Cs+keeN7AndroidじゃSmalltalkが動く。
iOSに関しては、技術上動くが、AppStoreに入れようとすると
Appleに蹴られる。
因みにAppleのFellowであるAlan kayが
Smalltalkの派生であるScratchをiOSに載せようとしたら
ハゲが蹴ったらしい。
端末の使用者がSourceを書いて
自由に使える端末は
意地でも作っちゃいけないんだと。
0120デフォルトの名無しさん
2014/07/28(月) 11:24:20.26ID:UuHztnC80121デフォルトの名無しさん
2014/07/28(月) 11:35:31.17ID:zl94e36f0122デフォルトの名無しさん
2014/07/29(火) 00:03:48.75ID:uBwVbvbs0123デフォルトの名無しさん
2014/07/29(火) 00:30:44.81ID:amKy8C2I0124デフォルトの名無しさん
2014/07/29(火) 01:45:03.00ID:Qxf0Td3Rジョブズは市場を守った僕らの味方だよ
0125デフォルトの名無しさん
2014/07/29(火) 01:49:06.13ID:Qxf0Td3Rマトモな大人たちは、C, Java, .net framework, COBOL
0126デフォルトの名無しさん
2014/07/29(火) 01:59:20.66ID:yYRcHyEO0127デフォルトの名無しさん
2014/07/29(火) 06:35:37.89ID:tfmMHDWA残りの半分は、野蛮な言語にclassと型安全を与えて近代化してやろうって話だろ
こんな古臭い話を続けてなんで飽きないんだろうな
0128デフォルトの名無しさん
2014/07/29(火) 07:23:35.79ID:0DNkJGU20129デフォルトの名無しさん
2014/07/29(火) 13:55:27.10ID:Qxf0Td3R今でも銀行での給与の計算はCOBOLで行われてるはずだけど?
Webやスマホから入ったヤツらって白痴だよね。本当に。
0130デフォルトの名無しさん
2014/07/29(火) 13:57:22.91ID:M1sSUXRJ0131デフォルトの名無しさん
2014/07/29(火) 18:32:28.99ID:Qxf0Td3R0132デフォルトの名無しさん
2014/07/29(火) 18:50:59.44ID:rBtE9P3L0133デフォルトの名無しさん
2014/07/29(火) 18:52:08.57ID:s2SUzqQF0134デフォルトの名無しさん
2014/07/29(火) 20:06:24.83ID:DxcW8iFR・【翻訳】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求人票をよく見ると、薄給で、マターリしたものはある
景気が良い今がチャンス
0136デフォルトの名無しさん
2014/07/29(火) 21:33:09.18ID:YLnrDWwp0137デフォルトの名無しさん
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/50140デフォルトの名無しさん
2014/07/30(水) 04:36:16.90ID:aL4vSCTj0141デフォルトの名無しさん
2014/07/30(水) 08:36:57.73ID:fBx3PM3hファイルのエンコードを宣言しないと日本語が文字化け
文字列には通常の文字列とユニコード文字列がある
割り算の結果がfloat型にならない
新スタイルクラスと旧スタイルクラスがある
__new__と__init__という、どちらともコンストラクタなんじゃないの?と見える関数が2つある
メソッドのオーバーロードができない
for文にindexがない
http://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
0142デフォルトの名無しさん
2014/07/30(水) 09:16:13.25ID:TeLih1jk0143デフォルトの名無しさん
2014/07/30(水) 11:30:17.18ID:OuXlkILC0144デフォルトの名無しさん
2014/07/30(水) 11:53:42.22ID:rjbKabKz0145デフォルトの名無しさん
2014/07/30(水) 12:28:58.18ID:RAFoABj30146デフォルトの名無しさん
2014/07/30(水) 12:43:55.12ID:OuXlkILC0147デフォルトの名無しさん
2014/07/30(水) 12:49:59.75ID:eXMcua250148デフォルトの名無しさん
2014/07/30(水) 14:49:34.77ID:+YSZmqYfAPIがバラバラだから互換性は基本的に無い
0149デフォルトの名無しさん
2014/07/30(水) 16:51:46.05ID:mLoOPXGz6がぼちぼち実装され始めて来てる。
7も話題に上がってる。
0150デフォルトの名無しさん
2014/07/30(水) 20:40:58.42ID:JOmnGzMaアセンブラレベルで最適化されたコードを呼び出すnumpy/scipyに比べたら問題外に遅くて笑ったわ
所詮Webドカタ用のオモチャだな
0151デフォルトの名無しさん
2014/07/30(水) 21:00:33.88ID:cG7xMHTs0152デフォルトの名無しさん
2014/07/30(水) 21:06:01.53ID:JOmnGzMaもちろん>>143-144に向かって言ってるんだよね?
0153デフォルトの名無しさん
2014/07/31(木) 20:04:39.73ID:I1pqUuFI2.0までファイルのエンコードを宣言しないと日本語が文字化け
文字列には通常の文字列とシンボルがある
割り算の結果がfloat型にならない
クラスとモジュールがある
lambdaと->とProcという、どれもラムダなんじゃないの?と見えるシンタックスが3つある
メソッドのオーバーロードができない
for文にindexがない
0154デフォルトの名無しさん
2014/07/31(木) 21:53:07.65ID:I9wcB7pD>文字列には通常の文字列とシンボルがある
そもそもシンボルは文字列ではない
試験的に継承関係にあったこともあるが
やはり別物だから、問題が大きかった
>for文にindexがない
times
each_with_index
範囲式
お好きなものをどうぞ
0155デフォルトの名無しさん
2014/07/31(木) 23:33:19.10ID:I1pqUuFI他のプログラム言語なら文字列を使うような場面でも、Rubyの場合は、画面に文言として表示する場合を除いて、
基本的にシンボルが使われる傾向にあるな
Rubyの良いところのひとつでもあるのだが、その代償でto_symをいちいち使ったりHashWithIndifferentAccessみたいなものを生み出す理由にもなる
ある意味JavaScriptのような言語にあるべきだった機能だ
0156デフォルトの名無しさん
2014/07/31(木) 23:47:27.69ID:qtlw7XO1メソッドオーバーロードはメソッド定義時に引数の型が決まっていない動的型付け言語では使いにくい。
Rubyだけの問題ではない。
てか、153は批判する気があるのだろうか?釣られている気がしてならない
0157デフォルトの名無しさん
2014/08/01(金) 00:01:17.19ID:CG17PR/g0158デフォルトの名無しさん
2014/08/01(金) 00:10:57.11ID:eMSkGEwWなんか俺はすべてお見通しだよーって上から目線だけど、そんなこと言う暇あったら、反証したら?
口だけの人は要りませーん
0159デフォルトの名無しさん
2014/08/01(金) 00:15:58.59ID:3wJnlar9つまり >>141 の Python 批判に対して反証が一つもなかったってことは、
>>141 の指摘が適切すぎてグゥの音(ね)も出なかったってことなんですね
たいへん、よくわかりました
0160デフォルトの名無しさん
2014/08/01(金) 00:17:14.47ID:7+EywXB60161デフォルトの名無しさん
2014/08/01(金) 00:18:29.05ID:eMSkGEwWすまんそのレスは見てなかった
Pythonは使っていないから知らないし、どうでもいい
0162デフォルトの名無しさん
2014/08/01(金) 01:11:34.34ID:VllCqMBdto_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傍から見たらどっちもそんな変わらんよ
0164デフォルトの名無しさん
2014/08/01(金) 06:31:16.22ID:vlQGaZzWRubyのシンボルでなくてRailsのシンボルの話ならそう
確かにRailsはシンボルを文字列とごっちゃにしてる、でもそれはRailsに限った話
本来Rubyのシンボルはシンボルであって文字列ではないよ
頻繁にto_symってのは、要するに即値として扱えないってことだろ
eval乱用に限りなく近い行為だと思う
0165デフォルトの名無しさん
2014/08/01(金) 08:08:33.24ID:7+EywXB60166デフォルトの名無しさん
2014/08/01(金) 08:13:17.91ID:J39fVXGBこの書き方がダメなら前のこれも直しときたいな…がとても多い
0167デフォルトの名無しさん
2014/08/01(金) 20:37:40.44ID:TiTL2nuahttp://www.infoq.com/jp/news/2013/04/Language-Expressiveness
0168デフォルトの名無しさん
2014/08/01(金) 23:39:36.14ID:1EdcRTNA使ったことないから使いやすいかはわからないけど
0169デフォルトの名無しさん
2014/08/02(土) 00:29:18.44ID:/wwVen7zCoffeeScriptやBackboneは開発者のオナニー
0170デフォルトの名無しさん
2014/08/02(土) 00:44:56.20ID:wGpqnjMjへー、なんでデバッグするのにreturn nullが必要なん?
0171デフォルトの名無しさん
2014/08/02(土) 07:23:51.81ID:kHizudTX0172デフォルトの名無しさん
2014/08/02(土) 07:30:52.90ID:fNoV+ZBu0173デフォルトの名無しさん
2014/08/02(土) 13:14:24.52ID:/wwVen7z関数がreturnされるとその関数のブレイクポイントで止まらないから
その下に明示的にreturn nullと書く必要がある
0174デフォルトの名無しさん
2014/08/02(土) 13:30:30.76ID:wGpqnjMj良く分からんが、それは言語じゃなくて特定のデバッガ固有の問題じゃないの?
C#におけるVSみたいな定番の開発環境があって、そのデバッガでの話?
0175デフォルトの名無しさん
2014/08/02(土) 13:36:43.49ID:mNHtzbrpTclとTkは疎結合っぽくて良いな
統合環境を作りたがる言語とは違う
0176デフォルトの名無しさん
2014/08/02(土) 13:42:54.64ID:UBZX0AEK自分もよく知らないから推測になるけど、CoffeeScript のコードを
標準的な JavaScript デバッガを使ってデバッグしている話だと思う
JavaScript は関数リターンにreturn文が必須だから
JavaScript デバッガではreturn文にブレークポイントを設定できるけど、
CoffeeScript ではreturn文を省略できるから同じ事は無理だ、って話
CoffeeScript 向けに専用設計されたデバッガを使うしかない(あるのかな?)
0177デフォルトの名無しさん
2014/08/02(土) 16:10:14.35ID:HM7CQAr9レイヤーが増える毎に異物が混入されて、その被害は大きなものとなるんだ
0178デフォルトの名無しさん
2014/08/02(土) 16:15:06.21ID:FIwNTFpfブラウザでスクリプト動かしてる時点で
多重のレイヤーが入ってるのに今更すぎるだろ
レイヤーが嫌なら16進数で機械語書いてろよ
0179デフォルトの名無しさん
2014/08/02(土) 16:34:23.72ID:HM7CQAr9だから、なるべく早い段階で緑色になった鶏肉を発見できる
0180デフォルトの名無しさん
2014/08/02(土) 17:23:39.29ID:HM7CQAr9僕らはRubyとPythonが切り開いた未来を忘れちゃダメなんだ
0181デフォルトの名無しさん
2014/08/02(土) 21:12:40.01ID:WcIVQvIheat food for food in foods when food isnt 'chocolate'
他人が淹れたコーヒーは飲めそうにないや
0182デフォルトの名無しさん
2014/08/03(日) 01:03:18.92ID:WfLo4fauあとJavaScriptはGoogleのv8のお陰で地位を確立したんだろ?node.jsもそうなら
Coffeeなんとかなんて言わずにgoogleのDartの方が良さそうだけど。
Coffeeスクリプトとかコーヒー豆を紡ぐ黒人たち、安月給で働く奴隷たちをこの言語でコーディングしてるIT土方とを重ね合わせてるのか?
すんごい皮肉だ思う。
そもそも、コーヒーにあまり良いイメージがないのよね。
0183デフォルトの名無しさん
2014/08/03(日) 01:16:11.21ID:Kg8uVIVR釣り?
Java→コーヒー→CoffeeScript
JSはNetscapeで作られ、IEに搭載されブラウザ言語の地位確立
0184デフォルトの名無しさん
2014/08/03(日) 01:26:53.84ID:HYKt9i+3JavaScriptの普及はGoogleによるAjaxアプリと、Rails以降の一連の奇跡によるものだよ
皮肉なことに、Perl,Python,Rubyの闘いで漁夫の利を獲たカタチ
もう、javascriptで良いじゃんね。これが人類の獲た悟りだよ
0185デフォルトの名無しさん
2014/08/03(日) 01:34:14.92ID:Kg8uVIVRv8関係ねえじゃねえか
あと好き嫌い!=普及だから。NS、IEの頃からJSは普及してたっつーの
0186デフォルトの名無しさん
2014/08/03(日) 01:36:12.98ID:HYKt9i+3普及してません。JavaScript切れって言われて時代だし
0187デフォルトの名無しさん
2014/08/03(日) 01:38:50.65ID:HYKt9i+3実際に普及したのはv8を搭載したnode.jsがはじめて
パフォーマンスがRubyやPythonと比べて、特別に良いものでもなかったけど、
v8になってから、それらの比でなくなった印象
0188デフォルトの名無しさん
2014/08/03(日) 01:42:07.18ID:Kg8uVIVRてめえの周りだけだろそりゃ。
そもそも実質どのブラウザ上で動くプログラミング言語として唯一の存在だから、ブラウザの普及=JSの普及なんだよ。
0189デフォルトの名無しさん
2014/08/03(日) 01:43:11.18ID:Kg8uVIVRSSJSなんて今でも対して普及してねえよ。
0190デフォルトの名無しさん
2014/08/03(日) 01:44:45.29ID:HYKt9i+3違うよ。取り敢えずブラウザに仕方なく載ってただけで、蛇足みたいな状態。
そして、M$の方は、VBSを動かしたかったんじゃない
0191デフォルトの名無しさん
2014/08/03(日) 01:45:22.47ID:HYKt9i+3そう思うなら、そうなんだろ。お前の中では
0192デフォルトの名無しさん
2014/08/03(日) 01:56:59.94ID:5GB5sDOvめんどくせえなお前。これ嫁
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/WXUa0194デフォルトの名無しさん
2014/08/03(日) 02:02:48.60ID:5GB5sDOv違うよ。そもそもnode.jsはイベントドリブンで、用途は限られる。node.js以外はそもそも名前もまともに知られていないのでは?
また、ブラウザ上の言語と異なり、サーバーサイドは多種多様な言語(環境)が存在する。
Java,PHP,Perl,Ruby,Python,C#...etc
JavaScript(SS)なんて求人みたことあるかあ?
0195デフォルトの名無しさん
2014/08/03(日) 02:05:27.45ID:5GB5sDOvJavaAPIのJavaDocに記載されているくらいには信用されているよ。
そもそも、ソースだけでなく自分でも説明したわけだが?
君はソースも出さないの?
0196デフォルトの名無しさん
2014/08/03(日) 02:24:45.62ID:HYKt9i+3普通の人はCommonJSの実装ぐらい一通り調べるから
0197デフォルトの名無しさん
2014/08/03(日) 02:26:25.52ID:HYKt9i+3求人が重要なら、C#かJavaでいいでしょ
職場環境で考えたらnode.js一択
0198デフォルトの名無しさん
2014/08/03(日) 02:41:22.76ID:Kg8uVIVRお前バカだろ。
なんでCommonJSの話になるんだよ。(普通云々もどうしてそうなるんだ)
普及の話で、求人のこと話したら、職場環境とか言い出すし。
0199デフォルトの名無しさん
2014/08/03(日) 02:55:39.90ID:c2e7+B8NFxってまだXML_HTTP_REQUESTできなかったよな
0200デフォルトの名無しさん
2014/08/03(日) 03:07:21.08ID:Kg8uVIVRあったみたいよ。一番最後ら変に書いてある
https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest
0201デフォルトの名無しさん
2014/08/03(日) 03:41:50.46ID:g3w/WXUa0202デフォルトの名無しさん
2014/08/03(日) 04:56:30.13ID:fTzQNpqj癖になるよ
0203デフォルトの名無しさん
2014/08/03(日) 11:38:10.32ID:gUp0rt3Yその使い道においてはErlangに遠く及ばない
0204デフォルトの名無しさん
2014/08/03(日) 11:40:27.84ID:XJy/K5fZ0205デフォルトの名無しさん
2014/08/03(日) 11:41:33.53ID:gUp0rt3YJSしか使えない低能でもワンチャンあるってメリットがあった
0206デフォルトの名無しさん
2014/08/03(日) 21:12:21.83ID:WfLo4fauバカなんだなほんとうに。
そんなの誰でも知ってるわ。
ウィキペディアに書いてることをドヤ顔でいうやつ恥ずかしい。
んじゃなくて、
おれが言いたかったのはJSはかつて人気がなくパフォーマンスも悪く、早くブラウザから切り離せだったのが
Googleのv8で流れが変わったんよ。
Javaのロゴがコーヒーなあたりでその辺も推測できてたけど。
JavaなりJavascriptなり、CoffeeScript なりコーヒー豆を連想させる辺りが
豆を収穫する人達、底辺が使う言語って雰囲気がある。
格調がないんだよな、拡張はあったとしても。
0207デフォルトの名無しさん
2014/08/03(日) 21:19:52.07ID:Kg8uVIVRあーもういいよそれで。
差別したり、寒いダジャレ言うやつと話しても何の意味もないし。
0208デフォルトの名無しさん
2014/08/04(月) 04:17:51.68ID:fabHp71f>JavaなりJavascriptなり、CoffeeScript なりコーヒー豆を連想させる辺りが
>豆を収穫する人達、底辺が使う言語って雰囲気がある。
軽い精神疾患だろこの人
0209デフォルトの名無しさん
2014/08/04(月) 14:06:08.34ID:OwSuwvA70210デフォルトの名無しさん
2014/08/04(月) 18:34:19.21ID:IrSTfOQCRubyとは比較にならないほど、アプリケーションが作られてるよ
WebサイトでもWebアプリでもない、「デスクトップアプリ」だよ
0211デフォルトの名無しさん
2014/08/04(月) 18:45:28.93ID:IrSTfOQC普通の人はnode.jsを検討するために、別のCommonJSの実装について調べるから。
何となく流行ってるって理由で飛びつくヤツはタダのミーハー。
何でって、node.jsを使わない企業は、Javaやc#で開発するから。
こうした会社はOSSの開発ツールの使用を様々な理由で制限する。
だから、node.jsを使う企業の方が開発者にとって快適なの。
0212デフォルトの名無しさん
2014/08/04(月) 21:05:27.60ID:hMTJU4GJメジャーなデスクトップアプリを可能な限り挙げてみてよ
0213デフォルトの名無しさん
2014/08/04(月) 22:09:00.70ID:IrSTfOQC0214デフォルトの名無しさん
2014/08/04(月) 22:16:54.77ID:e+dZtPD6マジでアホなの?
0215デフォルトの名無しさん
2014/08/04(月) 22:27:19.18ID:IrSTfOQCというか、Ruby製のデスクトップアプリって何かあるの?
それと、bracketsってadobe製だし、atomよりメジャーだよ
0216デフォルトの名無しさん
2014/08/04(月) 22:47:49.90ID:u+J9LOc+なぜRubyを引き合いに出すのか分からんが、Rubyはデスクトップアプリの実績はあまりないな。
だが、Rubyのライバル?のPythonは結構多いぞ
http://ja.m.wikipedia.org/wiki/Pythonを使っている製品あるいはソフトウェアの一覧
まあ、今後はWebベースの技術が脚光を浴びているし、逆転するかもな。
0217デフォルトの名無しさん
2014/08/04(月) 22:56:08.57ID:gDpcXLgO0218デフォルトの名無しさん
2014/08/04(月) 22:59:05.98ID:IrSTfOQCgolang, node.jsに挟まれて、どちらから見てもメリットがない
0219デフォルトの名無しさん
2014/08/04(月) 23:01:25.92ID:u+J9LOc+まあ今回は裏とってないけど、そこに書いてることで間違いある?
0220デフォルトの名無しさん
2014/08/04(月) 23:01:52.46ID:IrSTfOQCpy-qtの開発が、まだ続いてると思う?本当に一瞬の出来事だったよ
0221デフォルトの名無しさん
2014/08/04(月) 23:07:00.97ID:IrSTfOQC今後だっておwwwwww
2004年からずっとWebベースで、もう下火wwwwww
0222デフォルトの名無しさん
2014/08/04(月) 23:24:11.33ID:u+J9LOc+node.jsのデスクトップアプリ多いと言ってたから、Pythonも結構あると返したら、
やれ落ち目だ、やれソースがWikipediaだと関係ないことで煽ってくるし。基本的に自分が好きな環境以外認められないんだろうな
夏休みだなあ
0223デフォルトの名無しさん
2014/08/04(月) 23:28:56.07ID:JQ2Q6fypJSで開発していると、地味にfunctionという単語が長いのが気になる
Rubyのinitializeもそうだけど、動的言語に長すぎる予約語いれんなよ
0224デフォルトの名無しさん
2014/08/04(月) 23:35:19.69ID:LuHqaGTIそこで省略と言えばPerlですよ。
もしくはLispのマクロですよ(適当)
0225デフォルトの名無しさん
2014/08/04(月) 23:37:32.36ID:LuHqaGTIgnome自体、3になってから、結構迷走してるんだけどね…。
いや3になる前から、その予兆はあったな。
0226デフォルトの名無しさん
2014/08/04(月) 23:38:12.26ID:u+J9LOc+フロントサイドエンジニアorデザイナーが本格的にプログラミングするにあたって、JSが都合がいいのだと思う。
俺もフロント寄り人間で、JSはシンプルで柔軟で好きだし、ほかの箇所もJSで書けたらいいと思う。
functionは長くて面倒なのは同意。またそれ以上に、return句と中括弧が必須なのもめんどい。
が、そこはECMAScript6でラムダ式っぽい表記(a->a+1)が導入されれば解決するぜ。
0227デフォルトの名無しさん
2014/08/04(月) 23:40:53.26ID:IrSTfOQCRubyやPythonって、もう、これ以上は発展しないから
browser, スマホに標準搭載できない時点で決着が付いていた
>>223
開発者にとっての負担が軽減されるから。JSのボイラープレートだけで済む
Javaやc++のポリモーフィズムなんてコードが追いにくいだけ
0228デフォルトの名無しさん
2014/08/04(月) 23:41:56.90ID:AfY9nOzohttps://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別に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ちょっと業務アプリ作ってくれって言われたときに、AndroidとiOSの技術者揃えるの?バカじゃね?
0232デフォルトの名無しさん
2014/08/04(月) 23:50:01.89ID:e+dZtPD6そういう底辺のドカタ仕事が世界の全てだと思ってるから
お前はいつまでたっても底辺のままなんだよ
0233デフォルトの名無しさん
2014/08/04(月) 23:51:11.23ID:IrSTfOQC高い所から落ちたプログラマを見たことないの?本当に、すごい最期だったよ
0234デフォルトの名無しさん
2014/08/05(火) 00:45:52.08ID:52ECpDfa出世に毛根を犠牲にwww
0235デフォルトの名無しさん
2014/08/05(火) 00:53:58.45ID:52ECpDfaIT業界というのも、もっとカーストの高い奴らが支配している区域であって
そいつらにとっては力を付けすぎないように適度にアメとムチで働かせておけば良く
革命されちゃ困るんだよ
0236デフォルトの名無しさん
2014/08/05(火) 01:17:15.41ID:qBtzteocサーバーサイドのウェブアプリをNodejsのexpressとかで作るのが有利ってケースはかなり限られると思う
余程並列処理を使いたい場合を除いて、現状のJSは言語機能が貧弱だし、ライブラリも全く揃ってない
ES6が当たり前になるのを待つ必要がある
0237デフォルトの名無しさん
2014/08/05(火) 02:57:24.63ID:S6pEVZdOJavaScriptとはそもそもの出自が違う
jsもpyも好きだからこそ言うが、争うような話じゃない
住む世界が違うんだからお互いの言語の得意な分野でやってれば良いだけ
わざわざ競合する理由が何もないべ
0238デフォルトの名無しさん
2014/08/05(火) 06:33:28.61ID:RpUyK0xo所詮PythonやRubyみたいな汎用言語じゃなくてScriptだから仕方無い。
0239デフォルトの名無しさん
2014/08/05(火) 07:07:29.79ID:SvQByvNV0240デフォルトの名無しさん
2014/08/05(火) 07:08:38.20ID:SvQByvNVApacheが有利なケースって?
0241デフォルトの名無しさん
2014/08/05(火) 07:31:25.72ID:mzZC8VYeライブラリが増えないんだよな
0242デフォルトの名無しさん
2014/08/05(火) 10:43:00.73ID:mXVVWrCz元々ブラウザのDSLみたいなものだしね。
Perlも元々はUnixのテキスト処理のDSL(といっても、awkよりは遥かに汎用的だが)だし、
PHPもウェブのDSL(といってもウェブは範囲が凄く広いが)みたいなものだから、
これらが、汎用って意味では、何となく不器用だったりするのは、仕方無いね。
0243デフォルトの名無しさん
2014/08/05(火) 10:59:47.49ID:mXVVWrCzPython→休日に暇だから作った
Ruby→ぼく(まつもとゆきひろさん)のかんがえたさいきょうげんご
で、必要に迫られて作ったわけじゃないんで、
いくらでも汎用的になれたのかと。
Perl→ラリーがテキスト処理が面倒でカッとなって作った。
Javascript→ネスケに乗せるために作った。javaに似せろと無茶振りされたり(似てないけど)、ご存知ブラウザ戦争でカオスな仕様になる
PHP→CGIをPerlよりも楽に使うためのものから、色々追加してプログラミング言語にしていってカオス化
下の3つは元々の用途にツギハギで足したって印象。
0244デフォルトの名無しさん
2014/08/05(火) 11:44:03.96ID:b98OQbVv結局Javaに似たのは表面上の構文だけだし、他の2つとは格段に違うと思うけど?
0245デフォルトの名無しさん
2014/08/05(火) 11:57:35.02ID:z7YQkDVj0246デフォルトの名無しさん
2014/08/05(火) 12:09:14.35ID:VDc80Yjjそうじゃない部分に文句言ってる奴は大抵仕様を理解してないだけ
ライブラリが貧相なのは認めるけどね
0247デフォルトの名無しさん
2014/08/05(火) 12:11:10.86ID:VDc80Yjj好きだけど
0248デフォルトの名無しさん
2014/08/05(火) 16:58:09.36ID:AhK4dQyZ0249デフォルトの名無しさん
2014/08/05(火) 17:38:44.48ID:mzZC8VYeまさか学習コストがこわくて言語を一つしか選べない反知性企業はいないよな
0250デフォルトの名無しさん
2014/08/05(火) 17:52:30.92ID:DgDBu3xR若ければ言語なんて知らなくても良い。 自分を売り込め。
0251デフォルトの名無しさん
2014/08/05(火) 20:13:02.20ID:qBtzteoc0252デフォルトの名無しさん
2014/08/05(火) 20:35:59.68ID:nTlGGMns↓
PHP(1995)
JavaScript(1995)
0253デフォルトの名無しさん
2014/08/05(火) 21:50:39.45ID:mXVVWrCz>>251の言ってることは、代替、後継者を狙ってる言語の話だろ。
C++→Java→C#とかな。
え?、CよりもC++は酷いって?
聞こえんなぁ。
0254デフォルトの名無しさん
2014/08/05(火) 23:11:14.87ID:weyAPcVyソースは俺
0255デフォルトの名無しさん
2014/08/06(水) 02:25:00.39ID:GjkGAAQy地方の中小企業、零細企業なんてjava,c#しか使われないよ
だから、javascriptが一番に無難な選択肢なんだ
0256デフォルトの名無しさん
2014/08/06(水) 02:27:04.99ID:GjkGAAQy言語なんてcだけで良いよ。OSSの長いコードを読めないならプログラマなんて諦めた方が良い
0257デフォルトの名無しさん
2014/08/06(水) 02:30:25.82ID:GjkGAAQycだって、システム開発なのか、組み込み開発なのか、画像処理なのか分からないのにさ
その点、PHPとJavaScript、Objective-Cは素敵だよね。言語を聞いただけで何するかまで分かる
0258デフォルトの名無しさん
2014/08/06(水) 02:36:41.58ID:GjkGAAQyJavaScriptは、もともとschemeを載せる予定で反対されたんだよ
もとより、JavaScriptはschemeの構文棟みたいな言語
0259デフォルトの名無しさん
2014/08/06(水) 06:31:11.87ID:BndgycZH0260デフォルトの名無しさん
2014/08/06(水) 09:36:05.48ID:y9XkRQnX互換性も何もかもが崩壊しているルビーに未来はないよ。
0261デフォルトの名無しさん
2014/08/06(水) 15:39:40.91ID:GjkGAAQyttp://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ちがう。自分で販売する目的で開発して販売しても助成金が取れる可能性はある。
> 成果物の著作権とライセンス
> 採択された応募者が成果物のすべての権利を保持します。
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:nIXS5zhn0266デフォルトの名無しさん
2014/08/06(水) 18:24:08.31ID:GvRv1e44関係ねーよ。動的型付けなら、実行時にエラーになるだけだ。
0267デフォルトの名無しさん
2014/08/06(水) 18:35:38.72ID:nIXS5zhn動的構文検査がかなりメンドイ。
変数を宣言しなくても動作勝手に作るもんだから、
ただ綴りを間違えただけで難解なBugを発生させる。
0268デフォルトの名無しさん
2014/08/06(水) 18:38:01.39ID:4CuD/Gni0269デフォルトの名無しさん
2014/08/06(水) 18:46:06.89ID:4QcRPw91C言語で、typedefによって単なる識別子が型名になったりするようなのと同程度。
0270デフォルトの名無しさん
2014/08/06(水) 18:52:54.08ID:nIXS5zhn0271デフォルトの名無しさん
2014/08/06(水) 18:54:58.55ID:R6wm14O9Smalltalk見たいに静的構文検査してくれる動的型付け言語なんて、
Objective-C位じゃね?
0272デフォルトの名無しさん
2014/08/06(水) 18:57:14.13ID:GvRv1e44Dartもだ。マイナー言語なら他にもあると思うぞ
0273デフォルトの名無しさん
2014/08/06(水) 19:00:53.15ID:GvRv1e440274デフォルトの名無しさん
2014/08/06(水) 19:12:56.38ID:l3mkDmMtSmalltalkはどんな素晴らしい静的構文解析してくれるの?
Smalltalk使いって知識の幅が狭い奴が多いから(前スレでもgitの事全く知らなかったし)、
大抵の動的型言語で出来ることなのにSmalltalk特有だと思ってそうなんだけど。
0275デフォルトの名無しさん
2014/08/06(水) 19:13:59.40ID:ScOG6r0I例えば?
0276デフォルトの名無しさん
2014/08/06(水) 19:27:43.17ID:l3mkDmMt動的構文言語じゃないから
0277デフォルトの名無しさん
2014/08/06(水) 19:35:36.46ID:GvRv1e44ソースコードには型指定をするが、コンパイル時に型情報を消去して実行する。
Objective-Cで例えると
MyClass obj = [MyClass new];
と宣言した場合、コンパイラにはobjがMyClass型だと分かるが、コンパイル後は以下のように解釈される。
id obj = [MyClass new];
*idは何でも入る。Cの世界だとvoid*
0278デフォルトの名無しさん
2014/08/06(水) 19:47:59.61ID:CtAgobucん?Smalltalkには「大抵の動的型言語で出来」ないことはいっぱいあるぞ?
0279デフォルトの名無しさん
2014/08/06(水) 20:13:06.29ID:cehpYGSrコミュニティに注視する勢力向けのPR効果が一番のメリットか
0280デフォルトの名無しさん
2014/08/06(水) 20:25:59.30ID:Vw96MtUKタイポもリアルタイムで教えてくれるので凄く快適なんだけど、
Smalltalkを試しに使ってみたら全然しょぼくてマジウンコだった
あれどうなってんの?
0281デフォルトの名無しさん
2014/08/06(水) 20:48:47.50ID:tkF9KocB>>263-264の「型の概念」の話がなんで急に「動的型付け」の話にすり替わったのかまるで理解できないんだが
誰かわかる人いる?
0282デフォルトの名無しさん
2014/08/06(水) 21:02:33.39ID:YPP4gG0l>>263は「型の概念があってコンパイル時にチェックされる言語」と書いてるから、
最初から静的型付け/動的型付けの話だったんじゃない?
0283デフォルトの名無しさん
2014/08/06(水) 21:05:16.48ID:RE8PFak2template<typename T> void f(T obj) {
obj.なぜか補完できない
}
0284デフォルトの名無しさん
2014/08/06(水) 21:12:38.06ID:tkF9KocBその場合は「型の概念」ってどういう意味だと解釈すればいいの?
0285デフォルトの名無しさん
2014/08/06(水) 21:35:08.97ID:x+dPwZMsLazy Kみたいな型が無い言語もあるから、そういう言語と区別してるんじゃ無いの?
0286デフォルトの名無しさん
2014/08/06(水) 21:47:16.74ID:RE8PFak2事前の設計でbyteだった所をcharに変えたくなったとすると
静的型付けならば修正しなければエラーになるが
動的型付けならどこがエラーになる?どこを修正する?
0287デフォルトの名無しさん
2014/08/06(水) 22:34:51.86ID:GjkGAAQyリファクタリングって、型よりテストの方が重要だろ
カバレッジ率ガー、な現場なら、型なんて、尚更、不要だよね
0288デフォルトの名無しさん
2014/08/06(水) 22:39:57.02ID:m3/gfdXx静的型付けだろうが、動的型付けだろうがテストは必要。
だが、静的型付けなら、型に関するテストケースを省ける。
また、型情報を利用したIDEなどの強力なリファクタリング機能を利用できる(クラス名、メソッド名の変更など)
不要と言うことはない
0289デフォルトの名無しさん
2014/08/06(水) 23:24:18.63ID:m3/gfdXx「エラーになるだけ」ってのは言葉足らずでした。
>動的型付けならどこがエラーになる?どこを修正する?
これがわかりにくいからこそ問題。
エラーになればまだよくて、最悪結果はおかしくなるのに、原因箇所がわからなくなる可能性がある。
まあ、キチンとモジュール化して、スコープを縮めておけばそれほど重大な問題にはなんないけど。
0290デフォルトの名無しさん
2014/08/06(水) 23:46:53.31ID:sZEMoSUhJavaのGenericsなら、Objectのメソッドくらいは補完できそうだが
templateだと、プリミティブ型来た時点でアウトだもんなあ
0291デフォルトの名無しさん
2014/08/06(水) 23:48:34.18ID:RE8PFak2>エラーになればまだよくて、最悪結果はおかしくなるのに、原因箇所がわからなくなる可能性がある。
原因がわからないなら動的型付けが原因だという証拠もないだろ
0292デフォルトの名無しさん
2014/08/06(水) 23:54:53.21ID:m3/gfdXx型に関する問題について話してるんだけど?
0293デフォルトの名無しさん
2014/08/07(木) 00:01:04.27ID:m3/gfdXx0294デフォルトの名無しさん
2014/08/07(木) 00:12:16.10ID:ZscN+XoP翻訳時に検出してくれる。
Example compile:
'
something
| a |
a := 0.
b := 1.
'.
実行結果→変数bは宣言されていません。
0295デフォルトの名無しさん
2014/08/07(木) 00:12:16.47ID:FLoDAFid> だが、静的型付けなら、型に関するテストケースを省ける。
型に関するテストケースなんて書いてるの?
どういう場合に必要になるの?
0296デフォルトの名無しさん
2014/08/07(木) 00:17:32.56ID:ZscN+XoPPharoやVisualWorksならSelectorの補完とか、
構文訂正とかしてくれる。
Squeakみたいな化石しか使ったこと無いだろ。
0297デフォルトの名無しさん
2014/08/07(木) 00:25:39.18ID:FLoDAFidそのSmalltalkの補完は、ちゃんと型に関係ある候補だけ出てくる?
0298デフォルトの名無しさん
2014/08/07(木) 00:34:26.27ID:7g/ek2KLよくあるのは関数の戻り値をコレクションに変更するとかかな。
静的型付けなら、関数の戻り値の型を変えた時点で、その関数を使っている箇所がコンパイルエラーになるから、エラーになっている箇所をしらみつぶしに直して行けばいい。
動的型付けもgrepを駆使したりで大体の箇所は直せるが、漏れがないか確認するには実行するしかない。
その際にテストするわけ。ただ、ケースは型に関してピンポイントで用意するわけではなく、ロジックの正常パターン1ケースあれば問題ない。
0299デフォルトの名無しさん
2014/08/07(木) 00:38:14.77ID:ZscN+XoPんにゃ。ただ、既存のMessageから絞り込んでくれたりする。
something: aString
aString asFile. "aを入力するとaから始まるSelectorを列挙する"
aString size. "asFileを持つclassのSelectorだけを列挙する。"
0300デフォルトの名無しさん
2014/08/07(木) 00:52:26.76ID:ZscN+XoPtemplate<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俺がその状況になったら、1行を付箋1枚に書いて
ルーズリーフに貼り付けるだろうから、付箋紙の消費のほうがヤバそうだ
0303デフォルトの名無しさん
2014/08/07(木) 07:43:25.83ID:s8xdzsjqなにそれ
クソしょぼいじゃん期待して損した
> 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いっぱいあって挙げきれないだろうけど、思い付く範囲で。
0306デフォルトの名無しさん
2014/08/07(木) 13:36:31.33ID:EqoC26iFSmalltalk触ったことも触ることも多分無いけどPythonなら使うから
0307デフォルトの名無しさん
2014/08/07(木) 14:55:13.66ID:vxThxfhX普段intellij ideaしか使わないから他のIDEは知らん
0308デフォルトの名無しさん
2014/08/07(木) 15:02:26.09ID:sMmW86Oeある程度プログラムが複雑になれば静的型付けの方が有利なのは明らかだもの
0309デフォルトの名無しさん
2014/08/07(木) 15:28:36.09ID:EqoC26iFというか、そのPerlは
「テキスト処理スクリプトとしてUnix界で使われてたから」
って理由でCGIに引っ張り出されただけだから、始めから見えてた結果だよ
むしろ、書き捨て上等言語が未だに完全引退できないのが異常なんだよ…
0310デフォルトの名無しさん
2014/08/07(木) 15:30:15.55ID:0DSTgDSP0311デフォルトの名無しさん
2014/08/07(木) 16:48:23.22ID:PyzgeFxZオライリーの有名なPerl本のリャマ本やアルカパ本にも、
CGIのCの字も無いからね。
というか、今時、CGI/Perlなんて使っている所あるの?
さすがにPHPやその他によって、もう駆逐されてると思ってた。
0312デフォルトの名無しさん
2014/08/07(木) 18:01:55.03ID:EqoC26iFされてないんだよなあ…微妙に残っちゃってる
Perl/CGIそのものが残っちゃってることはともかく
PerlをPerl/CGIの(しかも、質の悪いコードが蔓延してた時代の)イメージで語る人間が
残っちゃってることも気になるな
Perl/CGI自体古いとは言え、あの頃のコードはそれにしても酷かったんだし
そもそもそういう言語じゃねーからこれ
0313デフォルトの名無しさん
2014/08/07(木) 18:46:36.18ID:rRqe4gq0コンパイル時間が掛かるし、Webってデスクトップアプリケーションほど複雑なもの作らないでしょ
0314デフォルトの名無しさん
2014/08/07(木) 18:51:46.36ID:j7LnXvCBWebってのはクライアントサイドのことだよな?サーバーサイドも含めてならお笑いもん。
まあ、CSにしても、GoogleAppsとか見て、同じこと言えんの?って話だが
0315デフォルトの名無しさん
2014/08/07(木) 18:52:15.90ID:rRqe4gq0JavaScriptに落ちつくのは自然な流れ
5年ほど前に、Flashがあるからhtml5は普及しないってブログ書いてた人居たよね。
node.jsが流行らないって人もね!
だから、phpもpythonも、node.jsに駆逐されるよ。
0316デフォルトの名無しさん
2014/08/07(木) 18:54:44.34ID:rRqe4gq0それって、システムよりのWebアプリじゃなくて、デスクトップアプリケーション寄りのものでしょ
0317デフォルトの名無しさん
2014/08/07(木) 18:54:48.29ID:j7LnXvCB日本語でおk
0318デフォルトの名無しさん
2014/08/07(木) 18:56:45.45ID:aiDD+/bc頼むから、もう少し論理的な考え方をできるようになってから書き込んでくれ
0319デフォルトの名無しさん
2014/08/07(木) 19:09:44.82ID:rRqe4gq0そういう理由で、wordpressみたいなものを作る人たちが、
JavaScriptとFooの2つの言語に習熟しながら、それらをメンテするかって話。
皆、1つの言語で作りたがるし、おなじ動的言語なら、尚更、1つの言語を使うのは、当然だよね
0320デフォルトの名無しさん
2014/08/07(木) 19:53:19.50ID:in3oiMEKだからAltJSが流行ってるんだね
JavaやpythonをJSにコンパイルできるもんね
そりゃJavaやpythonで書けるならそっちで書くよね
0321デフォルトの名無しさん
2014/08/07(木) 19:58:29.62ID:zBiJiHdD具体的に教えてくれ
0322デフォルトの名無しさん
2014/08/07(木) 20:46:34.08ID:rRqe4gq0AltJSなんて流行ってないよ。何処かで緑色の鶏肉が混ざるだけだから
使われるとすれば、関数型ぐらい。python, rubyとかバカじゃねーの
0323デフォルトの名無しさん
2014/08/07(木) 21:06:57.74ID:rRqe4gq0お前らが浮気してる間に、emacsにもpackage-installとflymake, js2-modeがデフォルトで入ったよ
0324デフォルトの名無しさん
2014/08/07(木) 21:07:30.80ID:in3oiMEK例え話で反論してくるのって
典型的なコード書けないゴミSEだよね
0325デフォルトの名無しさん
2014/08/07(木) 21:11:34.73ID:rRqe4gq0Googleですら、殆んどのプロジェクトをClosure toolで作ってるよね
0326デフォルトの名無しさん
2014/08/07(木) 21:18:26.04ID:FLoDAFid>>307にあるじゃん
あとはemacsかvimにプラグインでjediとpyflakesを組み込むのでも可
0327デフォルトの名無しさん
2014/08/07(木) 21:36:01.58ID:7g/ek2KL俺はWebStorm,PHPStorm,RubyMine使ってるが。
ただ、Javaベースなのが問題なのか、結構重い。がっつりプログラム書くときはいいけど、さくっと書きたいときは起動が面倒。
あと、文脈的に補完が出ないときもあるので、そこは静的型付けとの差を感じることもあるな。
0328デフォルトの名無しさん
2014/08/07(木) 22:10:28.90ID:rRqe4gq0sublimeよりはAtomが勝つよ。coffee script使ってるあたりは不安
0329デフォルトの名無しさん
2014/08/07(木) 22:24:08.95ID:PyzgeFxZありえそうだな。
PerlはCGIのほかにも、Perl4以前のコードも酷かったから、
そのイメージのせいで、印象悪いとかも、聞いたことある。
てか、Perlって、ウェブやブラウザができる前から存在してるから、
CGIのイメージ持ってる人は、古いというよりは、微妙に古いだなw
0330デフォルトの名無しさん
2014/08/07(木) 23:00:47.99ID:9UDZRMrG0331デフォルトの名無しさん
2014/08/07(木) 23:14:44.41ID:2soaImT50332デフォルトの名無しさん
2014/08/07(木) 23:23:48.57ID:9UDZRMrGDeNAは何使ってんだよ
0333デフォルトの名無しさん
2014/08/07(木) 23:26:00.33ID:rRqe4gq00334デフォルトの名無しさん
2014/08/07(木) 23:27:13.01ID:rRqe4gq00335デフォルトの名無しさん
2014/08/07(木) 23:29:33.08ID:EqoC26iF未だにわざわざ「Perlはオワコン」みたいなことPerlスレに書く人って
10年以上もレガシーさを認められない人なのかな、と思う
0336デフォルトの名無しさん
2014/08/07(木) 23:30:43.38ID:yuOaZbMpvimをjedi風にするプラグインがあるのかと思ってググったらぜんぜん違ったw
0337デフォルトの名無しさん
2014/08/07(木) 23:39:16.35ID:aAiPLxpv0338デフォルトの名無しさん
2014/08/07(木) 23:42:48.38ID:PyzgeFxZscalaは、RubyやPythonと、JavaやC#のいいとこどりをしてるとか、
書いてあったが、
実際どうなんだよ。
0339デフォルトの名無しさん
2014/08/08(金) 00:12:16.00ID:4mDRKIt31.scalaの使い方を、新しいメンバーに教えることができない
2.ツールが発展してない
0340デフォルトの名無しさん
2014/08/08(金) 00:13:42.91ID:4mDRKIt30341デフォルトの名無しさん
2014/08/08(金) 00:28:46.28ID:skLLYrwDnode.jsのインストールなんてrubyのインストールと難易度変わらないから無意味だよ
0342デフォルトの名無しさん
2014/08/08(金) 00:56:17.34ID:v77fcTJu雑誌読んだ後、
そんな凄いなら思って、
アマゾンでscalaで検索したら、
2010年や2011年の本が多くて、
最近のが少なくて、やっぱ変だなとか思ったら、
そういうことな。
雑誌のくせに、情報が古すぎるw
0343デフォルトの名無しさん
2014/08/08(金) 02:25:22.92ID:cGhNUCZtこの2つの言語をやってるのは完全な土方でそもそもプログラミングが好きなんじゃないから、良い書き方を摸索することはない
学習コストを嫌い自らの狭い経験と見識でコピペクソコードを連発するJava使いがわざわざ機能の広いScalaなんかやらんだろ。
0344デフォルトの名無しさん
2014/08/08(金) 03:33:19.88ID:tmzEBGe10345デフォルトの名無しさん
2014/08/08(金) 07:12:25.32ID:o/iL8S5kやっぱ宣言してない変数の参照とか検知すんのは無理なわけね。
0346デフォルトの名無しさん
2014/08/08(金) 07:54:15.24ID:KEAxF1W6なにがやっぱりなのか分からないけど
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:5zbZawy40350デフォルトの名無しさん
2014/08/08(金) 10:59:07.44ID:skLLYrwD静的型を最優先に考えるやつらにとって補完の優先順位は低い
補完とかいう理想を追求するのは自由だが、静的型の名を騙るべきではない
0351デフォルトの名無しさん
2014/08/08(金) 14:20:17.40ID:dvb9zQBx必死すぎワロタ
ボロクソに貶されたSmalltalk使いかな?
0352デフォルトの名無しさん
2014/08/08(金) 15:04:53.16ID:1LDmGQ0bキャストすれば補完の恩恵得られるよ
編集終えたら置換で戻せばいいだけという初歩的なテクだよ
0353デフォルトの名無しさん
2014/08/08(金) 16:20:34.79ID:Cs8LPiXTresharperはもっとすごい
動的型付け言語の限界が分かる
0354デフォルトの名無しさん
2014/08/08(金) 16:21:02.94ID:skLLYrwDキャストするためにわざわざ前方宣言するのか
というか前方宣言ではメンバーにはアクセスできないからincludeしないと駄目か
0355デフォルトの名無しさん
2014/08/08(金) 16:54:15.87ID:tmzEBGe1それって、単に開発ツールの問題だろ
JavaScriptにリソースが集まるから、嫌でもJavaScriptの開発ツールが発展するよ
0356デフォルトの名無しさん
2014/08/08(金) 16:55:02.65ID:tmzEBGe10357デフォルトの名無しさん
2014/08/08(金) 17:44:24.75ID:1LDmGQ0bそりゃまぁそうだよ。
auto f() { return randomClass(); }
こんなものがあったとして
決め打ちキャストぐらいしか出来ないだろ。
0358デフォルトの名無しさん
2014/08/08(金) 18:21:00.25ID:VVmHMN7Qできなかったよ。局所変数の初期化を忘れると、
何も言わず大域変数を読みに行きやがる。
0359デフォルトの名無しさん
2014/08/08(金) 19:14:24.50ID:jyX/hVbP同名の大域変数が見つからなければエラーになるよ
y = 10
def foo():
pass
def bar():
print(x) # undefined name 'x'
print(y) # エラーにならない
foo() # yをエラーにすると、こっちもエラーになるのでナンセンス
0360359
2014/08/08(金) 19:18:07.78ID:jyX/hVbPy = 10
def foo():
pass
def bar():
print(x) # undefined name 'x'
print(y) # エラーにならない
foo() # yをエラーにすると、こっちもエラーになるのでナンセンス
0361デフォルトの名無しさん
2014/08/08(金) 20:28:25.94ID:KEAxF1W6残念ながら、ドカタばっかり数だけ集まっても
優れた開発ツールは生まれません
0362デフォルトの名無しさん
2014/08/08(金) 21:28:02.25ID:tmzEBGe1シリコンバレーのハッカーばかり集まってるよ
0363デフォルトの名無しさん
2014/08/08(金) 21:51:08.78ID:mK2YK1vlブラウザの互換性、DOMみたいなECMAScriptとは関係ない部分が嫌なだけなんじゃないの
0364デフォルトの名無しさん
2014/08/08(金) 22:19:37.93ID:skLLYrwD実装に責任転嫁するだけで仕様が反証不可能になるのが駄目だね
典型的なニセ科学なのになぜ気付かないのか
0365デフォルトの名無しさん
2014/08/08(金) 22:27:05.21ID:mK2YK1vlただ気になっただけなんだけど
0366デフォルトの名無しさん
2014/08/08(金) 23:29:08.24ID:OVQ4aJPRリアルタイムに補完・修正しつつ
こんな感じに軽快にコーディングしている
Getting started with Pharo 3.0: http://youtu.be/n3gtVjGYRLI
Pythonかなにかのいまどきの動的型言語の
コーディングの様子がわかる動画があったら教えてください。
0367デフォルトの名無しさん
2014/08/08(金) 23:41:10.84ID:olHthDax補完は便利っちゃ便利だけどSmalltalkの場合、
正確な型情報に基づいた補完までは要らないなぁ。
型が有ってMessage送信があるというより、
Message送信が有って、Messageを受け取る型が
できる。みたいな感じだからねぇ。
0368デフォルトの名無しさん
2014/08/09(土) 00:28:46.83ID:hKshZAbQたまたま上手く動けばOK、ダメならシカトしとけーって
行き当たりばったり&ヤケクソ感満載なプログラミングが
信条だからね
まともなシステムを組むには向いてないけど、バグってても何となく
動くものを作るには向いてるよ
0369デフォルトの名無しさん
2014/08/09(土) 01:11:30.12ID:V2c7lTj7ダメな場合、通常は例外投げるから解るよ。
最もその例外も#doesNotUnderstand:
から投げられてるわけで、
#doesNotUnderstand:を何もしないよう
上書きしてしまえば、例外も発生しなくなるけど。
それからSmalltalkが大規模に向かないってのは間違いだな。
そもそもSmalltalk環境自体が大規模だ。
それとSmalltalk環境の殆どはObjectの参照箇所や生成元を
特定出来る機能が有るから、
他の言語より、原因の特定が
圧倒的に簡単だ。
0370デフォルトの名無しさん
2014/08/09(土) 01:16:14.81ID:tyb5Av5Mこれで満足かな坊や達。
0371デフォルトの名無しさん
2014/08/09(土) 01:55:42.81ID:nyLka+AS0372デフォルトの名無しさん
2014/08/09(土) 02:14:45.82ID:4ZdYRIm8Web系はJavaScript一択。スマホ交えたハイブリッドアプリしか生き残らないだろうから。
0373デフォルトの名無しさん
2014/08/09(土) 02:17:47.00ID:4ZdYRIm8agda, coq, alloyでも触ってるの?Webにそんなものイラナイだろ
0374デフォルトの名無しさん
2014/08/09(土) 08:09:24.68ID:TSdBD6Gl大きな行列演算やフーリエ変換などライブラリが揃ってるような一般的な計算に帰着できず(出来たとしてもかえって非効率になり)
ゴリゴリと粒度の小さく計算量の大きい処理を書くしかない問題はいくらでもある
そういうときPythonじゃ遅すぎて話にならないよ
先に行っておくけどCythonはPythonではないしPyPyは遅いよ
0375デフォルトの名無しさん
2014/08/09(土) 08:23:17.44ID:hKshZAbQぶっちゃけnumpy特有のスライス記法よりはPythonらしくて覚えやすいくらい
0376359
2014/08/09(土) 08:45:11.31ID:U25s1OalPython無しでは意味の無いものだし、何故Pythonのメリットから除外しようとするのか
理解できないな
デカイ行列はnumpy/scipyで、細かい計算はCythonで高速化できる
Pythonは数値計算では隙が無いよ
0377デフォルトの名無しさん
2014/08/09(土) 11:24:16.17ID:+T7xdrkUいちいち相手にするなよ
0378デフォルトの名無しさん
2014/08/09(土) 12:01:19.59ID:ddJfTu8w反論されても仕方ないでしょ
0379デフォルトの名無しさん
2014/08/09(土) 12:34:57.64ID:TSdBD6GlCythonは独自拡張で明示的に型付けしないと速くならないよ?
そんなのPythonに含めていいんならPyCUDAみたいなのもPythonだ
それなら確かに数値計算では隙がないといえるね
0380デフォルトの名無しさん
2014/08/09(土) 13:26:15.90ID:ddJfTu8wアホだな
0381デフォルトの名無しさん
2014/08/09(土) 13:26:24.94ID:+T7xdrkU0382デフォルトの名無しさん
2014/08/09(土) 13:31:08.37ID:sfckUx3E文系 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> あるいは >>376 の「Pythonは数値計算では隙が無いよ」も正しい用法
なんで最後にこれ書いちゃうかなぁ...
0384デフォルトの名無しさん
2014/08/09(土) 13:57:49.17ID:sfckUx3E> あるいは >>376 の「Pythonは数値計算では隙が無いよ」も正しい用法
この表明が間違いであると主張したいのなら、反例を一つ以上挙げればいい
たとえば:
・Ruby の RRRRR パッケージは xxx の数値計算をサポートしているけど、
Python ではサポートしていない
・JavaScript の JJJJJ パッケージは xxx の数値計算をサポートしているけど、
Python ではサポートしていない
みたいな感じで
でも自分は数値計算の知識が足りなかったので、反例を一つも挙げられなかった
だから、この表明は正しいと(個人的に)認める
0385デフォルトの名無しさん
2014/08/09(土) 14:12:02.68ID:+T7xdrkU間違いと言う気はないけど、なんでわざわざ悪魔の証明になるようなことを書くのかが不思議でならない
そもそも知識が足りないと言いつつ正しいと言い切るとか、足りないのは知識じゃなくて知能じゃね?
0386デフォルトの名無しさん
2014/08/09(土) 14:17:08.13ID:BP+0hBNw本当の理系からすると「工学系という用語が未定義であること」が最初に気になるんだけどね
お前のように一階述語論理の観点で語るのはその後だよ
0387デフォルトの名無しさん
2014/08/09(土) 14:18:18.77ID:sfckUx3Eあるいはそもそもバトルの参加者として知性に欠けていると思われる
0388デフォルトの名無しさん
2014/08/09(土) 14:21:22.12ID:TSdBD6GlそれとPythonの定義な
別の言語をコンパイルして動かすようなものを含めるのなら、
どの言語でもシェルのコマンドを実行できさえすれば隙がないことになってしまう
0389デフォルトの名無しさん
2014/08/09(土) 14:21:58.98ID:+T7xdrkU具体的に指摘できなくて悔しいね (w
0390デフォルトの名無しさん
2014/08/09(土) 15:42:03.43ID:Z1Mdwqnmシェルのコマンド経由で任意のオブジェクトを
コスト無しでやり取り出来るのか?
出来ないならそれが隙だ
0391デフォルトの名無しさん
2014/08/09(土) 16:23:57.39ID:tj206DRcたとえC言語で書かれていてもいいんじゃね
悔しかったらNumRbとか作ってみなよ
0392デフォルトの名無しさん
2014/08/09(土) 19:04:06.58ID:3PnNWWsVあまり期待し過ぎない方が良い
0393デフォルトの名無しさん
2014/08/09(土) 19:12:11.06ID:nyLka+AS0394デフォルトの名無しさん
2014/08/09(土) 20:50:19.43ID:4ZdYRIm80395デフォルトの名無しさん
2014/08/10(日) 09:14:20.37ID:pLMPHMoaお前が使ってる言語はお前みたいな馬鹿ばかりだから
Cythonみたいな開発ツールが出てこないのかもな
0396デフォルトの名無しさん
2014/08/10(日) 18:04:49.09ID:5S9LxaMD0397デフォルトの名無しさん
2014/08/10(日) 18:07:17.24ID:JTN9tFDt0398デフォルトの名無しさん
2014/08/10(日) 18:07:58.88ID:76XVe68K0399デフォルトの名無しさん
2014/08/10(日) 18:17:14.70ID:/shRHOr10400デフォルトの名無しさん
2014/08/10(日) 18:21:58.24ID:owxd9++q0401デフォルトの名無しさん
2014/08/10(日) 18:36:43.96ID:8k7NpdBx0402デフォルトの名無しさん
2014/08/10(日) 18:37:49.58ID:nn874tpK0403デフォルトの名無しさん
2014/08/10(日) 20:22:04.54ID:4gg+ZZK0普通の人は仕方なしに使ってる。
15年前に、他に何も知らなくてPerl使ってたようなもん。
0404デフォルトの名無しさん
2014/08/10(日) 20:37:13.67ID:VgocPGqd当の本人は畑が違うとまるで触れられる機会がないからなぁ
0405デフォルトの名無しさん
2014/08/10(日) 20:56:50.71ID:y9erLln40406デフォルトの名無しさん
2014/08/10(日) 21:01:44.86ID:owxd9++q仕様を理解したうえでPHP自体を馬鹿にしてる人って言うほど少ないと思うけどね
0407デフォルトの名無しさん
2014/08/10(日) 21:08:23.85ID:JTN9tFDt0408デフォルトの名無しさん
2014/08/10(日) 21:33:13.84ID:VgocPGqd日本語不自由だったのは認めるけど
伝わるでしょ
Web屋さん以外にには触れる機会がないと。
0409デフォルトの名無しさん
2014/08/10(日) 21:40:13.88ID:VgocPGqdだめだこりゃ
0410デフォルトの名無しさん
2014/08/10(日) 21:40:53.72ID:JTN9tFDtPHPの仕様を批判してる人は多いぞ。
実際仕様はクソだし。例えば関数名の命名が統一されていないところとか。
まあ、PHPのクソさって、作者のラードフの発言見ると納得してしまうんだけどな…
ただし、道具としては使えるってスタンスは多いと思う。
0411デフォルトの名無しさん
2014/08/10(日) 22:15:38.75ID:xgfgJG5g0412デフォルトの名無しさん
2014/08/10(日) 23:02:58.23ID:qa2XHu48中途半端に開発が終わった欠陥言語を使う事が害、
保守する人にも害、
再利用する人にも害、
新しく学ぶ人にも害、
こんなに腐った言語がありますか?
クソ言語を使う人間はクソ。
すべての面で生物として踊ってる
0413デフォルトの名無しさん
2014/08/10(日) 23:05:24.87ID:8k7NpdBx0414デフォルトの名無しさん
2014/08/10(日) 23:08:20.99ID:TZnXcFWx0415デフォルトの名無しさん
2014/08/11(月) 00:26:17.26ID:zvXVfUml0416デフォルトの名無しさん
2014/08/11(月) 09:21:09.77ID:msdQqOI/0417デフォルトの名無しさん
2014/08/11(月) 11:45:17.20ID:2aHcydEVPHPかSmalltalkどっちか選べって言われたら
PHP選ぶよな?
0418デフォルトの名無しさん
2014/08/11(月) 12:20:01.64ID:Ej0/UdBK教養として学ぶなら迷わず Smalltalk 選ぶ
0419デフォルトの名無しさん
2014/08/11(月) 12:25:54.08ID:HXiuyVVb0420デフォルトの名無しさん
2014/08/11(月) 12:44:59.66ID:xui8+I0a0421デフォルトの名無しさん
2014/08/11(月) 12:48:16.00ID:msdQqOI/使用を強制されないんなら迷わずSmalltalk
PHPは仕方なく使うツールだ
0422デフォルトの名無しさん
2014/08/11(月) 12:51:24.13ID:dzA6rv1F今時smalltalkなんてどこで使う?
使わない物を学ぶ必要なし
と思う
0423デフォルトの名無しさん
2014/08/11(月) 13:14:40.08ID:10IOkGIwPHPは、Web屋ならわざわざ選べるときにまでやらんで良いし
逆にWeb屋じゃないならそもそも要らん
0424デフォルトの名無しさん
2014/08/11(月) 13:37:18.37ID:gyTBghQrただしWindowsやLinuxやMacに比肩するようなものじゃなくて、
精々BeOSレベルと思っとけば間違い無い
今更BeOSに学ぶ価値があるかというとねぇ
0425デフォルトの名無しさん
2014/08/11(月) 14:20:36.34ID:LQ+7f0DkENIACですら機会があるなら学んでみたい、そういうもんだろ
逆に学ぶ価値を重視するならプログラマにならんのが一番だと思うぞw
0426デフォルトの名無しさん
2014/08/11(月) 15:20:06.01ID:zvXVfUmlそのダブルバインドから生まれた止揚こそがRuby
0427デフォルトの名無しさん
2014/08/11(月) 15:57:41.29ID:E9ECrwuQ0428デフォルトの名無しさん
2014/08/11(月) 16:37:58.15ID:RZPEFxfrhttp://developers.slashdot.jp/story/14/08/11/048226/
欠陥言語PHP
これを採用している企業も虫が湧いてるし
これを受注してる下請けも虫が湧いてる。
これを使う奴も虫が湧いている。
すべての面で生物として踊ってる。
0429デフォルトの名無しさん
2014/08/11(月) 16:41:17.52ID:FzLVONCc0430デフォルトの名無しさん
2014/08/11(月) 16:54:13.06ID:10IOkGIw日本語では区別の付くタ行とダ行が区別出来ない言語もあるな
もしその言語の話者だとしても、ある程度の日本在住経験があるなら
流石に区別できないってことは無いと思うんだけど…
最近日本ニ来マシタとかなら、半年ROMる前にまず半年日本語を学んで欲しいところ
0431デフォルトの名無しさん
2014/08/11(月) 17:52:46.02ID:cXbY4lHBhttp://zerobase.hateblo.jp/entry/2013/02/24/015610
0432デフォルトの名無しさん
2014/08/11(月) 19:42:31.45ID:2aHcydEV0433デフォルトの名無しさん
2014/08/11(月) 21:22:12.82ID:2JSo4r2IWeb ServerからAndroid用Softwareの開発、
個人的な自動化Toolとか色々。
0434デフォルトの名無しさん
2014/08/11(月) 21:26:19.43ID:hCftHaH2アラン・ケイのメッセージングのオブジェクト指向、
トリグヴ・リエンスカウのオリジナル(非Web)のMVC、
アジャイルのうち特にケント・ベックの主張するXP、TDD については
実際、当初 Smalltalk で試されたものだからそういって差し支えないのでは?
0435デフォルトの名無しさん
2014/08/11(月) 21:46:18.71ID:hCftHaH2起源がらみつながりというわけでもないけれど、
たとえば 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他の言語じゃ回りくどい記述になる処理でも素直に書けるぞ。
0437デフォルトの名無しさん
2014/08/11(月) 22:40:57.43ID:ilzU+Xrw手続き型(OO含む)で普通に作るとどの言語でも実際大して変わんないんだよね
インテリぶりたいんならメタプログラミングや宣言型の方が有効だよ
0438デフォルトの名無しさん
2014/08/11(月) 22:53:00.36ID:xLVZtjTFお題よろしく
ideoneが対応してるのでそこに貼って下さいな
0439デフォルトの名無しさん
2014/08/11(月) 23:02:40.50ID:QbLEC6vV| show |
show :=
[ :value |
Transcript
show: value value asString.
].
show
value: 0 asValue;
value: [ 'hello' ].
↑と同様な構造になる処理を
他の言語で書いて見てくれ。
0440デフォルトの名無しさん
2014/08/11(月) 23:11:03.49ID:xLVZtjTFお題はSmalltalkが掛けない人にも通じる共通言語つまり日本語で頼む
0441デフォルトの名無しさん
2014/08/11(月) 23:12:31.88ID:xLVZtjTF0442デフォルトの名無しさん
2014/08/11(月) 23:25:02.13ID:QbLEC6vVほいよ。
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わざわざどうも。
まるで読めん。
GOLFや速度比較など話題として面白いかと思ったけど
お題が分らん。
0445デフォルトの名無しさん
2014/08/11(月) 23:42:33.73ID:QbLEC6vV数値と無名高階関数を、全く共通の関数で標準出力に出力する。
他にもできる言語は存在するだろうけど、
どれだけ簡潔に書けるかがキモだね。
0446デフォルトの名無しさん
2014/08/11(月) 23:45:10.75ID:xLVZtjTFSmalltalkが書ける人にしか分からないお題
内輪ネタのかまってちゃん
0447デフォルトの名無しさん
2014/08/11(月) 23:51:21.62ID:6X1AZZgP分からないレベルで読めない
0448デフォルトの名無しさん
2014/08/12(火) 00:09:46.82ID:9rljJzz2! 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/x0GjC0450デフォルトの名無しさん
2014/08/12(火) 00:42:37.97ID:WTdbAkathttp://ideone.com/TbwCXt
0451デフォルトの名無しさん
2014/08/12(火) 01:05:08.46ID:VU2ABUvmRubyならまだ読める
つまりto_v や val ってメソッドを
数値や無名関数に追加しろってお題なの?
Smalltalk版にはそれらを追加してるコードが見当たらないけど、
それはSmalltalkには最初から存在するってこと?
0452デフォルトの名無しさん
2014/08/12(火) 01:19:36.27ID:QZJQGyIx知らない人にはまるで通じない
prologな人が自問自答してたスレがあったけど
それはそれでprologをまったく知らなくとも参考になったぞ
0453デフォルトの名無しさん
2014/08/12(火) 01:37:55.64ID:VU2ABUvm制限付きのお題って下らないな
色んな言語があって、色んな解き方があるから面白いのに
大体、ご自慢の言語機能がホントに素晴らしいものなら
何も制限を加えなくても、その機能を使ったコードが
一番シンプルになるだろうに
0454デフォルトの名無しさん
2014/08/12(火) 01:46:10.02ID:WTdbAkathttp://ideone.com/SUYpMB
0455デフォルトの名無しさん
2014/08/12(火) 02:06:28.17ID:WTdbAkatなぜ1行で済むコードをわざわざ回りくどく書く?
http://ideone.com/Q28Wv5
あと、こんなの別にSmalltalkじゃなくても書けるから
もっとSmalltalkならではの動的性や柔軟さを示すお題頼む。
0456デフォルトの名無しさん
2014/08/12(火) 02:17:55.08ID:WTdbAkatSmalltalkが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継続で反復を抜ける所がミソだったからね。
あと、GNU SmalltalkはMethod内じゃなく
Behavior>>evaluate:で実行してるときも、
復帰文(^)が使えるコトを知らなかったよ。
PharoとかだとWorkspaceで復帰文使えないんだよね。
0458デフォルトの名無しさん
2014/08/12(火) 06:28:33.33ID:KW8A3HpWほぼお題の意図通りだ。
RubyはValueHolder無いんだね。
0459デフォルトの名無しさん
2014/08/12(火) 07:50:00.50ID:fLw1xr8UPython3.4から標準に入ったsingledispatchを使ってみた
(2.6〜3.3にもバックポートされてるから、ライブラリ入れれば使用できる)
http://ideone.com/PTfPCm
たぶん意図には沿ってないけど、>>445は出来てる
0460デフォルトの名無しさん
2014/08/12(火) 09:10:25.15ID:UCLW3XxN本物の継続は抜けたり復帰したりしないよ
偽物 result := Example valueFor: #a from: array ifAbsent: []
本物 Example valueFor: #a from: array ifFound: [ :result | ] ifNotFound: []
0461デフォルトの名無しさん
2014/08/12(火) 09:21:20.62ID:fLw1xr8U内包表記を使える言語で、それを使わない合理的理由が全く思いつかないので
やる気が出ないんだけど、適当な理由付けできる?
0462デフォルトの名無しさん
2014/08/12(火) 09:31:12.78ID:WTdbAkat> 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継続渡しはまれにループの途中から抜けるのに使われるでしょう。
たとえば #valueWithExit とか。
メソッド定義の中でもブロックを引数にとるメソッドコール時に
それ以降の処理を続けたくないときに継続渡しとは意識せずによく使うから
> 本物の継続は抜けたり復帰したりしない
というのはあたらないのでは?
あと、>>457も継続渡しスタイルを単に継続と呼ぶのはやめたほうが
0464デフォルトの名無しさん
2014/08/12(火) 09:45:48.50ID:EOz2YB3Jhttp://anago.2ch.net/test/read.cgi/bizplus/1407762363/
0465デフォルトの名無しさん
2014/08/12(火) 10:16:01.15ID:WTdbAkat反復処理は内包表現でもかまわないと思いますよ。
反復処理の途中から抜けるなんらかの処理オブジェクトを外部から与えて
実際反復処理を抜け出すコードを書け、という趣旨かと。
Pythonではすごく難しそうな気がするのですが、どうでしょうか。
0466デフォルトの名無しさん
2014/08/12(火) 10:30:49.56ID:fLw1xr8Uこういうこと?
でもPythonじゃ凄く難しいってことは、たぶん違うんだよね
http://ideone.com/IpGKgD
0467デフォルトの名無しさん
2014/08/12(火) 11:35:18.84ID:WTdbAkat処理の大枠はよいと思います。あとはお題の趣旨を満たすための細工として、
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スマン
×ラムダには式は書けない → ○ラムダには文は書けない
0469デフォルトの名無しさん
2014/08/12(火) 13:09:20.92ID:Mkt7odSm継続渡ってのはPythonで言えば例外機構みたいなもん。
例外と違って、継続渡の結果はBlockを生成したMethodの戻り値になる。
0470デフォルトの名無しさん
2014/08/12(火) 13:21:44.78ID:Mkt7odSmTranscript 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暗にどっちも糞だと言ってることがわからないのか...
0472デフォルトの名無しさん
2014/08/12(火) 17:37:46.72ID:/pOJTdAgStopIteration例外を捕まえる形で書くのが
簡単なんだけど、これも違う?
http://ideone.com/gXsglf
0473420
2014/08/12(火) 17:46:37.39ID:nlEvWu1mどっちも糞なのはわかった上でどっちがマシかって話だろうが。
どっちも糞で終わるのは話に発展性がないからアホだと思う。
0474デフォルトの名無しさん
2014/08/12(火) 18:22:10.16ID:FNwHnEm0[^0] value.
だけで、アウトだったよ。最近は違うのかねぇ。
0475デフォルトの名無しさん
2014/08/12(火) 19:02:55.57ID:QFuySfxC> どっちも糞なのはわかった上で
そんなもん議論する価値ないだろ
バカなの?
0476デフォルトの名無しさん
2014/08/12(火) 19:10:33.03ID:AWDNtOwpくそがくそといってもくそ説得力なし
0477デフォルトの名無しさん
2014/08/12(火) 21:18:11.58ID:DR2IeXaU惜しい。例外じゃなく正常系で処理を中断しなきゃ。
因みにSmalltalkは別途例外機構を備えてる。
例外で処理を中止するなら、継続渡じゃなく例外機構に
相当する処理になるね。
0478デフォルトの名無しさん
2014/08/12(火) 21:28:02.38ID:bTJ2O5l6例えばLISPはS式やマクロというわかりやすい特徴を持ってるけど、そういう感じで言うとSmalltalkの特徴は何になるのか
オブジェクト指向の元祖とかメッセージングとか、「それで何が変わるのか」がマクロやS式に比べていまいちわかりにくい
0479デフォルトの名無しさん
2014/08/12(火) 21:33:19.60ID:DmDQGr0h煽りでなく割りとガチで
・気持ち悪い信者がいる
0480デフォルトの名無しさん
2014/08/12(火) 21:33:53.56ID:UCLW3XxNgetterを使わない
returnを使わない
0482デフォルトの名無しさん
2014/08/12(火) 21:40:48.11ID:UIxJZqMs元祖であることが多いと言うことはわかりやすい特徴では?
なぜなら、それらの機能は他言語で積極的に取り込まれている重要で実用的な機能だから。
0483デフォルトの名無しさん
2014/08/12(火) 21:45:43.73ID:UIxJZqMsトレイトは多重継承の問題だけでなく、mix-inの名前重複時の問題や、継承パスに関わる問題を解決した。
こういった実用的な機能はPHPなどの、人気のあるメジャーな言語に取り込まれて、Smalltalkから独自性を奪って行くのが悩ましい。
0484デフォルトの名無しさん
2014/08/12(火) 21:54:26.50ID:QFuySfxCにちゃんでディベートするぼくちゃんカッケー
ってか (pgr
0485デフォルトの名無しさん
2014/08/12(火) 21:58:35.09ID:ACV8I0vKもしもオブジェクト指向がこの世から無くなれば
一緒に C++/Java/C# ...etc も消え去るけど、
そんなことも分からないの?
>>483
> こういった実用的な機能はPHPなどの、人気のあるメジャーな言語に取り込まれて、
> Smalltalkから独自性を奪って行くのが悩ましい。
他の後発言語に取り込まれる(「パクられる」ともいふ)ことは、
それだけ優れているのだから喜ばしいと考えた方が前向きだと思う
他にも LISP と Prolog、最近では Haskell が同じ立場にいるね
(開発現場では普及していないが、大きな影響を与えた/与える存在として)
0486デフォルトの名無しさん
2014/08/12(火) 22:04:13.64ID:UIxJZqMs元々OSの一部みたいなもんだし、真価はOSあってこそ発揮される。
まあ、そのアイデンティティもMacやWindowsに取られて行ったそうだけど。
でも、ジョブズ件の話が本当なら、Smalltalkがなければ、MacやiPhoneは存在しない(今の形ではない)わけで、それだけでマカーの俺には神のような言語だわ。
ぶっちゃけ、詳しいことはよく知らないんだけどね。
0487デフォルトの名無しさん
2014/08/12(火) 22:04:28.93ID:fYXVdlIeSmalltalkの特徴は、処理系それ自体も含めた可塑性の追求と実践。
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気持ち悪いアンチがいるというのもセットで。
0489デフォルトの名無しさん
2014/08/12(火) 22:09:01.42ID:zX1YfWsNClassだろうが、Instanceだろうが名前の付くものは全部Object。
全部Objectだから、数値型だの配列型だの関数だの
区別しなくて良くなった。
全部Objectになったお陰で、人間的にObjectを区別しなくて
良くなった。だけじゃ無くMethod側も、
引数が数値だとか関数だの区別しなくなった点が
利点として大きい。
あと、Source codeとProcessっていう
従来の区別が無いのも大きな特徴。
開発環境自体が実行Processだから、Sourceをいじるんじゃなく
直接Objectをこねくり回せる。
設定だの普通外部のFileに保存している情報を、
Smalltalkだと外部に置く必要がない。
0490デフォルトの名無しさん
2014/08/12(火) 22:16:33.14ID:tbFo1OkT0491デフォルトの名無しさん
2014/08/12(火) 22:18:18.77ID:UIxJZqMsSmalltalkを語ることは、OOPとOOPに関わるパラダイムを語ることに等しいと思うのです。
だから、盛り上がるのは仕方ないでしょう。
0492デフォルトの名無しさん
2014/08/12(火) 22:26:15.05ID:bJ/x0GjCどっちかというと実装技術としてOOPの概念を使ってるだけのように見えるんだけど
MVCなんか見ててもそういうところはあるように感じるし、Smalltalkってそういう言語なの?
0493デフォルトの名無しさん
2014/08/12(火) 22:33:56.72ID:fLw1xr8Ugotoがあることを自慢してる古い言語があったら痛いだろ?
Smalltalkはまさにそれ
0494デフォルトの名無しさん
2014/08/12(火) 22:38:35.19ID:oSKoCY4cOSXの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:oSKoCY4cAlan 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>>439の方がOOらしさを表してると思う。
0497デフォルトの名無しさん
2014/08/12(火) 22:58:25.47ID:UIxJZqMsRubyでいうとlambdaではなく、Procかブロック(イテレータ)使えってことかな?
0498デフォルトの名無しさん
2014/08/12(火) 23:06:27.27ID:WUrGCqmI| 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そうだねRubyだとBlockだね。
RubyのBlockは制限付けたSmalltalkの
Blockみたいなもんだし。
0500デフォルトの名無しさん
2014/08/12(火) 23:27:14.39ID:CjMQ24/s指定したキーが最後まで見つからない状況を
正常系と言い切るのは無理があるでしょ
0501デフォルトの名無しさん
2014/08/12(火) 23:53:32.27ID:R76YiGJz例外処理してる事が間違ってるって話じゃなくて、
目的の値が見つかったらMethodごとList内包表記を
脱出してねって話し。
0502デフォルトの名無しさん
2014/08/13(水) 00:27:55.54ID:xwn08+4Rすでに>>454が書いてるが、Hash使うとこうか
http://ideone.com/L3dt20
Hashだから、return h[k] if h.has_key?(k)したいけど...
0503デフォルトの名無しさん
2014/08/13(水) 00:40:47.19ID:SnNoU8hSそんなのが本当に必要になる処理って何?
0504デフォルトの名無しさん
2014/08/13(水) 03:26:27.36ID:gUy2vYSAそれが最大の長所でもあり、最大の欠点でもあると思う。
SmalltalkというOSの上で、Smalltalkという言語を用いてシェルスクリプトを書いて実行している、という表現をどっかで見たような。
0505デフォルトの名無しさん
2014/08/13(水) 03:33:48.43ID:UnJCC4oa趣旨は「継続渡しによる処理の中断が可能か?」なので
こうだろうね。
http://ideone.com/GcDjDJ
Rubyはトップレベルでreturnできないから
メソッド定義を一段かます必要があるため
呼び出しがSmalltalkより少し不格好になるけれども
0506デフォルトの名無しさん
2014/08/13(水) 03:43:40.77ID:UnJCC4oa>>487の一つ目のリンクの文書に
どうしてSmalltalkがOSの機能の一部を代替する必要があったか
理由が書いてあるね。
0507デフォルトの名無しさん
2014/08/13(水) 07:50:20.20ID:vowM3sUt趣旨は合ってんだけど、課題の箇所が違うね。
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>因みにの新しい検索Logicを実装したり、
>構文解析する時の基本Patternだよ。
時代遅れすぎる
今時そんなコードの書き方しねーよ
0509デフォルトの名無しさん
2014/08/13(水) 09:05:40.33ID:HbTLLkjTその趣旨とやらに従わない方が
お題を簡単に解けるわけじゃん
趣旨に全く価値が無いんじゃない?
価値があるって証明できるようなお題は出せないわけ?
0510デフォルトの名無しさん
2014/08/13(水) 17:47:52.35ID:M/yU7i7Qそれって、カトラーに反対されたんだろ
0511デフォルトの名無しさん
2014/08/13(水) 18:47:16.01ID:VFKOuvktMenuはSmalltalk由来かもしれんが"bar"はApple Lisaオリジナル
0512デフォルトの名無しさん
2014/08/13(水) 19:32:09.25ID:Bq2i/l+P>>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+最先端の書き方とやらを教えとくれ。
0515デフォルトの名無しさん
2014/08/13(水) 20:05:27.98ID:Word07jU今時の書き方とやらを教えとくれ。
0516514=515
2014/08/13(水) 20:07:02.76ID:Word07jU自演みたいになってもうた。
0517デフォルトの名無しさん
2014/08/13(水) 20:39:12.87ID:Word07jU無名高階関数を多様する言語特有の例だけどこんなの。
! 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:Word07jUsegmentsOfContour := aContour segments.
^ self segments detect: [ :segment1 | segmentsOfContour detect:[ :segment2 | segment1 isInterselected: segment2 ] ].
こっちでも良かったな。
0519デフォルトの名無しさん
2014/08/13(水) 20:48:41.71ID:MCkfVLQX一方がもう一方に内包されているケースが考慮されてないし、
それを無視するなら別に凸領域に限る必要ないよね
O(N^2)なのもちょっとね
やりなおし
0520デフォルトの名無しさん
2014/08/13(水) 20:56:37.29ID:Word07jU>>519
本格的にやるなら、台形積分による回転方向の判定やら、
isInterselectedの前ににcontains:の追加やら増えるが、
本質じゃねえからどうでもいいじゃん。
例なんだからそんな雑音増やしてどうする。
0521デフォルトの名無しさん
2014/08/13(水) 20:59:07.71ID:MCkfVLQX実際の開発はその雑音が成果物のほとんどを占めるんだから
ミニマムな例ばかり挙げて言語の良し悪しを語るのはナンセンスだということだよ
0522デフォルトの名無しさん
2014/08/13(水) 21:11:12.90ID:HbTLLkjTSmalltalkは分からないんだけど、Pythonで書くと
こんな感じのことをやってる?
any(segment1.is_interselected(segment2)
for segment1 in segments
for segment2 in segments)
0523デフォルトの名無しさん
2014/08/13(水) 21:19:15.41ID:Word07jU大体そんな感じ。Smalltalkの方が計算量すくないけど。
0524デフォルトの名無しさん
2014/08/13(水) 21:20:22.70ID:HbTLLkjT計算量の説明頼む
0525デフォルトの名無しさん
2014/08/13(水) 21:22:28.94ID:HbTLLkjT最初にTrueが見つかったら計算止まるから、その話では無いんだよね>計算量
0526デフォルトの名無しさん
2014/08/13(水) 21:34:31.99ID:Word07jUSmalltalkの例は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どうでもいいけど、IDがword07だな
word07jpなら完璧なのに
0528デフォルトの名無しさん
2014/08/13(水) 21:38:46.04ID:MCkfVLQXジェネレータだから実際に要素を取得するまで要素の値は評価されないんだよ
評価はSmalltalkの例と同じで最短1回、最大N×M回だ
古い言語に固執するのもいいが、ストリームくらい今の言語じゃ常識だからちょっとは視野を広げたほうがいいぞ
0529デフォルトの名無しさん
2014/08/13(水) 21:43:39.02ID:Word07jUa := 1 to: 5.
ってのと同じわけね。ナルホド。
0530デフォルトの名無しさん
2014/08/13(水) 21:54:41.94ID:2+UwraKO0531デフォルトの名無しさん
2014/08/13(水) 22:02:02.27ID:Jg7TjT55今では軽量スレッドがない言語はlambdaがない言語と同じ位恥ずかしい
0532デフォルトの名無しさん
2014/08/13(水) 22:02:20.84ID:Word07jU0533デフォルトの名無しさん
2014/08/13(水) 22:12:31.25ID:MCkfVLQX今はループを抽象化して宣言的に記述するのがトレンドというか常識なんだよ
やっぱりSmalltalkerはズレてるわ
0534デフォルトの名無しさん
2014/08/13(水) 22:15:20.92ID:Word07jUsegments1 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宣言的に記述「する」のが常識ってのは言い過ぎ
宣言的に記述「できる」のはまあプログラムオタなら常識だよねって段階
0536デフォルトの名無しさん
2014/08/13(水) 22:40:38.49ID:Jg7TjT550537デフォルトの名無しさん
2014/08/13(水) 23:01:57.83ID:Word07jUsegments1 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:Word07jU0539デフォルトの名無しさん
2014/08/13(水) 23:10:25.32ID:MCkfVLQXFunction(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補足
条件は、
・ループのネスト構造を見かけ上排除すること
・遅延評価であること
0541デフォルトの名無しさん
2014/08/13(水) 23:48:54.24ID:KN2EsXN5any( 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:KN2EsXN5segments1.product(segments2).lazy.select { |(segments1, segments2)| segments1.interselected? segments2 }.any?
0543デフォルトの名無しさん
2014/08/13(水) 23:52:45.06ID:MCkfVLQXproductが遅延評価じゃないからアウト
0544デフォルトの名無しさん
2014/08/13(水) 23:58:59.15ID:QyjDEwJbC#に直すとこんな感じか。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すまん( segment1 ) => segment2,のところのsegment2はsegments2の間違いだ
0546デフォルトの名無しさん
2014/08/14(木) 00:04:20.83ID:KN2EsXN5残念でしたw
・ブロックを伴わない product は(Array ではなく) Enumerator オブジェクトを返す
・lazy によって以降の評価は遅延されるから、(全要素を select してから any? で
判定するのではなく)select の途中で1度でも真になれば、即座に結果を返すことができる
0547デフォルトの名無しさん
2014/08/14(木) 00:24:28.40ID:Tb3ur59kその自信は一体どこから来たんだ
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+uQd00each は「全要素を強制的(force)に列挙する」メソッドだ
Ruby は >>547 の書いたコードに従って動いているだけ
それに対して、>>541,542 の any? は「列挙した要素が真になるまで列挙する」から、
もしも要素の先頭で select の条件が真になれば、そこで列挙を止めてしまう
もちろん1つも真の要素が無ければ全要素を列挙することになるけど、
これは他の言語も同じ
もし偉そうな態度を取りたいなら、もう少し遅延評価の概念を勉強したほうがいいと思うな
0549デフォルトの名無しさん
2014/08/14(木) 01:04:32.13ID:sq+uQd00>>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:Tb3ur59kselect以降が遅延評価なのはわかってるよ
productが全要素即時評価されてるって言ってるの
ソースコード見ればわかるけど、productは普通にその場で全要素求めて配列作って返してるよ
ドキュメントにもそう書いてあるし
0551デフォルトの名無しさん
2014/08/14(木) 01:09:34.83ID:sq+uQd00書いたけど、適切な改行とインデントを施すと、
今度は「上から下へとデータの流れに沿った」流れるようなコードになる
segments1.product(
segments2
).lazy.select { |(segments1, segments2)|
segments1.interselected? segments2
}.any?
0552デフォルトの名無しさん
2014/08/14(木) 01:14:01.56ID:Bx+g5Wlqresult := ( 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>productが全要素即時評価されてるって言ってるの
ああそういうことか、わかった
0554デフォルトの名無しさん
2014/08/14(木) 01:55:29.92ID:sq+uQd00では、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:GA9ob7vdrubyの特徴が「流れるようなコード」だと自慢げに言い切る
ruby使いの分裂症っぽさがここんとこの笑いどころ?
0556デフォルトの名無しさん
2014/08/14(木) 07:18:12.07ID:XQFcvtlUany(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:MNSDSqVIhttp://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:AAbOZc9Tsegments1->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:HZICApg1class 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内部イテレーターとして使うなら普通に途中でぬけりゃいんだけど
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わざわざ古臭くユーザも碌にいない仕事も無い
Smalltalkを勉強する必要など無いってことかな
0562デフォルトの名無しさん
2014/08/14(木) 10:42:13.75ID:GA9ob7vdSmalltalkを学ぶ余裕すらないばかりか、自分の好きな言語の機能も
ろくすぽ理解できていないからコードもまともに書いて出せないってことかな
0563デフォルトの名無しさん
2014/08/14(木) 10:59:07.53ID:hrjPLdIO0564デフォルトの名無しさん
2014/08/14(木) 11:38:55.37ID:gDq8F6/xSmalltalkが古臭いのもユーザが碌にいないのも事実じゃん
だったらせめて他言語に無い卓越した点でも見せて欲しいのに、いままでのやり取りでは皆無と言う他無い
っていうか、Smalltalkerが自分に有利(と思い込んだ)お題を出して
その度に返り討ちにあってるんだけどね
0565デフォルトの名無しさん
2014/08/14(木) 12:54:30.62ID:oKWze5l1そういった主張をする場合、学習能力や機会がなかったことを正当化していることが多い。
「いまどき」の動的型言語にない機能は必要ないからと信じて疑わない信者が
「他言語に無い卓越した点でも見せて欲しい」とか片腹痛い。挙げてもらったところで
「そんな機能は必要ない。理由はオレの大好きなホゲ言語にはないから。」と
なるのがオチだし、実際そういう主張が繰り返されている。
0566デフォルトの名無しさん
2014/08/14(木) 13:01:24.78ID:Bx+g5WlqPythonの遅延評価はSmalltalkで同等のものが出来て、
継続渡はPythonで出来なかった。
そんでRubyに関しては論外。何を勝ち誇ってんの?
0567デフォルトの名無しさん
2014/08/14(木) 13:09:42.35ID:gDq8F6/x継続渡があった方が良い例として
自信満々に出したお題(>>517)が
継続渡を使わずにあっさり解かれちゃってるんですけど
いつまで待てば継続渡が必要なお題が出てくるの?本当に必要なの?
0568デフォルトの名無しさん
2014/08/14(木) 13:15:08.62ID:EVB5pTuwスルーされて、むしろそれをきっかけに
かえって Smalltalk の話題が出たりして
なんだか「返り討ち」にあっているのって
孤軍奮闘の気持ち悪いアンチくんのほうな気が
0569デフォルトの名無しさん
2014/08/14(木) 13:15:42.36ID:gDq8F6/xそんな言語相手に、いろいろな書き方出来ますって胸張ってどうすんだっつの
0570デフォルトの名無しさん
2014/08/14(木) 13:18:01.29ID:avgy6H10コレが一番だね。Generatorや
For Each如きに専用構文用意しなくていい。
将来必要になれば使用者がいつでも用意できる。
0571デフォルトの名無しさん
2014/08/14(木) 13:18:29.38ID:gDq8F6/x0572デフォルトの名無しさん
2014/08/14(木) 13:54:08.40ID:EVB5pTuw実行中のコンテキストに実行中に容易にアクセスできる機能があるけれど
やっぱり今どきの動的型言語にはない機能だから、
最初から必要ないって話になりそう…
(ちなみにこの機能はSmalltalkの強力と言われるデバッガに活用されています)
すでにアラン・ケイらの主張として出ているとおり、
Smalltalkの特徴(やそれを学ぶ価値)は
言語機能として用意されていない、
本来なら言語の根幹に手を入れないと実現不可能な機能も
比較的容易に実現可能なメタ機能がそろっているところだから、
あるがままでそれがすべての今どきの動的型言語を
満足して使っているファンとは話はたぶん合わないと思うよ。
0573デフォルトの名無しさん
2014/08/14(木) 14:17:40.99ID:hrjPLdIO0574デフォルトの名無しさん
2014/08/14(木) 14:19:52.72ID:gDq8F6/x長々と語り始めちゃったけど
0575デフォルトの名無しさん
2014/08/14(木) 15:42:00.17ID:EVB5pTuw0576デフォルトの名無しさん
2014/08/14(木) 16:24:54.78ID:qppS6X9hPythonの方がマシだな。
とりあえず、関数などの単位はカッコ{}にしてくれないとわかりにくい。
0577デフォルトの名無しさん
2014/08/14(木) 17:04:26.25ID:3kJ9eJuTお前の頭が古くて欠陥品なだけだろ。
アップデートしろカスが
0578デフォルトの名無しさん
2014/08/14(木) 17:28:20.96ID:qppS6X9hカッコ{}のほうが後発で、それを使わない奴は古典。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/> 関数などの単位はカッコ{}にしてくれないとわかりにくい。
悪いなあ、他を当たってくれよ
0581デフォルトの名無しさん
2014/08/14(木) 17:37:39.01ID:T6HYng3Rdef 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/eZWLISP系「俺らは括弧で囲むから大丈夫だな!」
0585デフォルトの名無しさん
2014/08/14(木) 19:22:37.60ID:7OYR5/1K長い3行
0586デフォルトの名無しさん
2014/08/14(木) 19:24:44.61ID:Wg1tI0aEpythonはモジュール群の数や質(保守)の点でいいと思うけど
構文は糞だなと思う
読みやすいだけで書きづらくメンテしづらい
インデント構文なんてバグの温床だよ
0587デフォルトの名無しさん
2014/08/14(木) 19:32:41.57ID:8pzBRI+b例えばどんなケースでPythonの構文がバグにつながるの?
0588デフォルトの名無しさん
2014/08/14(木) 19:33:24.81ID:sq+uQd00>> そこにいろんな書き方があっていいはずだーって主張する奴ら鏡見ろよ。
>> それを押し付けるな。
まったくもって日本語にとっては、
右から左へとコードを書くことを押し付けられるのは嫌ですね
そんな言語を善と押し付ける奴は、鏡で自分の顔を見てもらいたいものですねな
>> 読み方書き方が統一されてて、機械も第三者も見やすく読みやすく、
>> 書き直しやすくされてるプログラム及びプログラミング言語が善。
ああ COBOL のことですね、たいへんよくわかります
>> Rubyの互換性のないアップデート
過去に大きな問題が発生したという記憶はないけど、何の話をしてるの?
ああそういえば、2008年にリリースが開始されたのに、
未だに GAE からサポートを見捨てられている言語なんてのもありましたね
0589デフォルトの名無しさん
2014/08/14(木) 19:34:03.65ID:3kJ9eJuT読みやすいだけ。
これ超重要。
人間の脳をどう動かしても読みやすさとか、理解しやすさとかまでは変えられないよね?読む人達全ての学校教育の頃から面倒見ないといけない。それは事実上無理なんだから、
今文字読める人達の読みやすさにプログラミング言語が合わせるべき、
その際でインデントで発生するバグなんて
ソフトウェア側に頑張らせてバグを無くせばいい。
アホにはできんと思うが。
モジュールの数とか利用者の数、アップルや米軍にも使われていて、言語の開発者自体もDropboxで働いていてバリバリ新しいもの作り出してる。
要約するとPythonすげぇ
0590デフォルトの名無しさん
2014/08/14(木) 19:57:04.57ID:1YD1Mn32公開前にフォーマッタを通すだけ
自宅のオナニーの作法まで求めるなと
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多様性を否定したら進化がない
ローカルでは好き勝手にやらせてりゃいいじゃん
こーでぃんぐるーるが気になるなら
必要に応じてフォーマッタを通すよう義務付ければでいい話でしょ?
ゴリゴリの保守ならいいけどバージョンアップで互換性を捨てたよね
0594デフォルトの名無しさん
2014/08/14(木) 22:09:40.53ID:XQFcvtlUひとりのリリースマネージャが力尽きたら速攻でサポートが終わったRuby1.8.7
バージョンが上がって互換性が無くなるとしても、安心感が全然違うんだよ
0595デフォルトの名無しさん
2014/08/14(木) 22:26:23.52ID:qCy55Ttw0596デフォルトの名無しさん
2014/08/14(木) 22:27:20.15ID:GRmjrAED0597デフォルトの名無しさん
2014/08/14(木) 22:45:42.08ID:t3e+SowD0598デフォルトの名無しさん
2014/08/14(木) 23:57:19.87ID:6Teu7b8aNodeとかGolangとかもっと設計が新しい言語が出てきてる
0599デフォルトの名無しさん
2014/08/15(金) 00:00:23.87ID:IEcKMmnc0600デフォルトの名無しさん
2014/08/15(金) 00:03:19.22ID:zsZ4HpGd本当に使った事があるのか疑問
特にGolangなんてスクリプト言語を置き換えるポジションの
言語じゃないと思うんだが
0601デフォルトの名無しさん
2014/08/15(金) 00:14:05.85ID:+WhkypvHGoにScript組み込むなら、やっぱGoだな。
PythonのScriptingHostとか積みにくい。
0602デフォルトの名無しさん
2014/08/15(金) 00:24:48.86ID:zsZ4HpGdGolangの回答例でも書いていくと良いんじゃないかな
Nodeでも良いよ
0603デフォルトの名無しさん
2014/08/15(金) 00:49:46.29ID:G+/LDaHH他の言語のいいとこどりって感じでなかなかに触り心地はいい
ただスクリプトと置き換えるっていうとWEBでパフォーマンスを要求されるとこぐらいな気がしないでもない
0604デフォルトの名無しさん
2014/08/15(金) 01:03:38.43ID:bXsRO7AFじゃあお題。
利用者が画面操作だけで自由に部品を
配置可能なGUIまたはWebを作れ。
(申請画面等)
SmalltalkならMorphic、UIPainter、
SeasideでCodeを書くことなく
実際に出来る。
0605デフォルトの名無しさん
2014/08/15(金) 01:35:10.15ID:bXsRO7AFもう一個お題。
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落とせよw
0607デフォルトの名無しさん
2014/08/15(金) 01:45:58.31ID:G+/LDaHH0608デフォルトの名無しさん
2014/08/15(金) 05:36:27.88ID:19rSkqot0609デフォルトの名無しさん
2014/08/15(金) 06:09:20.76ID:BLfVNv/y新しい言語は言語仕様もそうだし、環境設定とかライブラリ、ドキュメントも古い言語みたいにノイズまみれ、バッドノウハウだらけになってないのがいい
0610デフォルトの名無しさん
2014/08/15(金) 07:16:46.64ID:KiQWZqQV説明抜けてたけど>>605と>>604の状況は別ね。
>>605は開発者がGUIを作る時の話し。
0611デフォルトの名無しさん
2014/08/15(金) 08:40:53.39ID:AVnS+NU+0612デフォルトの名無しさん
2014/08/15(金) 08:47:07.05ID:VuGbSeoAノイズの定義は?
0613デフォルトの名無しさん
2014/08/15(金) 09:45:18.94ID:fhr+Nllp> スクリプト言語っていうのが、高機能なsedやawkって意味なら
> Golangは代わりにならないだろうけど
「Golangは代わりにならない」からスレ違いだな
Golang の話題だけを語りたいのなら、専用スレで熱い議論を交わせばいい
あるいは Goloang が置き換えを狙っている C++/Java/C# や
ライバルの D/Rust/Swift の専用スレ/バトルスレでもいいんじゃないのかね
0614デフォルトの名無しさん
2014/08/15(金) 10:53:53.27ID:hTVsVIghスクリプト言語を糊として使う用法に対して
Goがどの程度の優位性を示せるか、じゃないかな
0615デフォルトの名無しさん
2014/08/15(金) 11:04:49.90ID:fhr+Nllpその優位性とは比較対象が C/C++ だから、
スクリプト言語とは直接的な関連は無いな
0616デフォルトの名無しさん
2014/08/15(金) 11:42:18.47ID:VuGbSeoAそれ排外主義や
0617デフォルトの名無しさん
2014/08/15(金) 11:59:44.23ID:zsZ4HpGdポトペタが自慢のSmalltalkはVBスレで
議論すれば良いんじゃないかな
0618デフォルトの名無しさん
2014/08/15(金) 12:07:30.37ID:KFo3Vgldでおまえはどんな言語でバトル・議論がしたいんだ?
自分がよく知らない言語をいちいち排除してたらきりがないぞ。
0619デフォルトの名無しさん
2014/08/15(金) 12:52:30.42ID:Aqg845W80620デフォルトの名無しさん
2014/08/15(金) 13:08:58.12ID:fZJRPTiqGo言語はGo言語をScriptとして使えるぜ。
0621デフォルトの名無しさん
2014/08/15(金) 13:10:58.93ID:fZJRPTiqあれれ〜苦手分野になったら逃げるの?
0622デフォルトの名無しさん
2014/08/15(金) 13:15:44.10ID:fZJRPTiq苦手な課題じゃ他所でやれ
そりゃPython最強だわ
0623デフォルトの名無しさん
2014/08/15(金) 13:34:49.08ID:hX9N7g9W最近はスクリプト言語でも書けるようになってきてるし
というわけで、Windows、Linux、Mac OS、iOS、AndroidでクロスプラットフォームなGUIアプリを開発できるスクリプト言語ってある?
0624デフォルトの名無しさん
2014/08/15(金) 13:43:50.07ID:IEcKMmncぱっと思いつくのはJS
0625デフォルトの名無しさん
2014/08/15(金) 14:09:13.86ID:zsZ4HpGdぱっと思いつくのはPython
0626デフォルトの名無しさん
2014/08/15(金) 14:50:19.59ID:hTVsVIghあるディレクトリの下にある全てのファイルからgoで始まる単語の個数を数える
ただし個々のファイルは並列に処理する
という御題はどうだろうか
0627デフォルトの名無しさん
2014/08/15(金) 15:13:55.16ID:lLqTBTtV俺なら普通に単発のスクリプトを書いてMakefile使って実行する
スクリプト側でそういうジョブ制御的な処理はさせない
0628デフォルトの名無しさん
2014/08/15(金) 15:33:43.14ID:/FTO7zqv各ファイルで数えた単語数を
全ファイルで数えた単語数にまとめるスクリプトが別途必要になるけどね
0629デフォルトの名無しさん
2014/08/15(金) 15:42:08.97ID:IEcKMmncJava8のFiles#walkならできるんじゃね?と思ってみたけど、ファイル操作は直列ストリームだったようだ
Rubyはそういうのからきしだし(まあ、JSもしかり、Script言語は高度が並列プログラム求められていなかったからね)
Goからどう書くの?(goroutine使うの?)
0630デフォルトの名無しさん
2014/08/15(金) 15:48:14.82ID:lLqTBTtVあくまでJCLとして使う分にはPerlのForkManagerは優れてる
簡単な集計くらいならPerlで書いちゃってもいいし
0631デフォルトの名無しさん
2014/08/15(金) 16:02:56.32ID:fhr+Nllp>後は、Go言語といえば並列性になるのかな
まずは並列性(parallelism)なのか並行性(concurrency)なのかを
明確にしたほうが、議論が混乱する可能性は減ると思われ....
0632デフォルトの名無しさん
2014/08/15(金) 16:17:39.00ID:fhr+NllpPOISX API(fork や exec)を使えば並列処理は書けるけど、
実行プラットフォームは(UNIX や Cygwin 等に)限定される
まあ動いて最短なコードが最強!!みたいな素人談義を
希望しているなら、それはそれでかわまんと思うがね
0633デフォルトの名無しさん
2014/08/15(金) 16:58:55.43ID:BLfVNv/yみんなっていうか、Perlモジュールのコントリビュータみたいな人たち
Goはテキストエディタでちゃちゃっと書けるし、そういう選択になるだろうなと思う
0634デフォルトの名無しさん
2014/08/15(金) 16:59:44.35ID:VuGbSeoAそれはC++の「ゼロオーバーヘッドの原則」に似ている
得意分野では恩恵を受ける
苦手分野ではゼロオーバーヘッド
0635デフォルトの名無しさん
2014/08/15(金) 19:22:27.72ID:zsZ4HpGdfrom 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色んな言語でできるけど、高々2文字の検索じゃ並列化してもおせーよ。
HDDのSeekで並列しない処理より速度がガタ落ちする。
0637デフォルトの名無しさん
2014/08/15(金) 20:00:22.44ID:GvqDUviUMakeはScriptだが
0638デフォルトの名無しさん
2014/08/15(金) 20:08:01.74ID:zsZ4HpGdHadoopが使える場合
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そこは本質じゃないでしょ
それにSSDなら速くなる
0640デフォルトの名無しさん
2014/08/15(金) 21:17:50.51ID:GvqDUviUBashのShell script
find "$1" -type f -exec $(< "{}")\; | grep -c "go"
0641デフォルトの名無しさん
2014/08/15(金) 21:26:27.62ID:wA/pyBJfそのコードで何が言いたいの?
0642デフォルトの名無しさん
2014/08/15(金) 22:00:16.05ID:GvqDUviUBashなら課題の並列処理が一行でかける。
まさかどこで並列化されてるか解らない訳じゃないだろうな。
0643デフォルトの名無しさん
2014/08/15(金) 22:10:42.05ID:wA/pyBJf肝心の grep -c ”go” が並列化されてないよね
0644デフォルトの名無しさん
2014/08/15(金) 22:17:19.76ID:zsZ4HpGd"go" と "golang" と "goroutine" みたいに
goで始まる単語を別々にカウントしたい場合はどうする?
ていうか、そういうお題なのかと思ってたけど
0645デフォルトの名無しさん
2014/08/15(金) 22:20:11.95ID:GvqDUviU肝心もクソも元のお題にどこを並列化しろなんて書いてないだろ。
0646デフォルトの名無しさん
2014/08/15(金) 22:25:28.94ID:GvqDUviU個別になんて一言も書いてないだろ
0647デフォルトの名無しさん
2014/08/15(金) 22:26:27.57ID:GvqDUviU個別に個数を出すなんて一言も書いてないだろ
0648デフォルトの名無しさん
2014/08/15(金) 22:29:05.37ID:wA/pyBJfへー、お前自身が>>636で
>色んな言語でできるけど、高々2文字の検索じゃ並列化してもおせーよ。
って書いてるから、”go”を検索するところを並列化すると
お前も解釈してると思ったよ
0649デフォルトの名無しさん
2014/08/15(金) 22:32:14.43ID:zsZ4HpGdいやどうするのかなって質問してるだけだよ
それとも改めてお題として書いた方が良いか?
0650デフォルトの名無しさん
2014/08/15(金) 22:37:04.61ID:WUgX6twt0651デフォルトの名無しさん
2014/08/15(金) 22:41:06.51ID:zsZ4HpGd文字のカウントはどうでも良いと思うんだがなぁ
シェルスクリプトやmakeで並列化も
それで問題を解決できるなら悪く無いと思うよ
0652デフォルトの名無しさん
2014/08/15(金) 22:44:22.12ID:zsZ4HpGdそれを分散でやってるのがHadoopだからね
0653デフォルトの名無しさん
2014/08/15(金) 22:45:31.95ID:IEcKMmnc0654デフォルトの名無しさん
2014/08/15(金) 22:53:02.27ID:GvqDUviUめんどくせえなぁほらよ
find "$1" -type f -exec $(< "{}")\; | tee >(echo -n $( grep -c "golang")) | grep -c "gorouting"
0655デフォルトの名無しさん
2014/08/15(金) 22:56:10.61ID:zsZ4HpGd全ファイルに含まれるgoで始まる単語を全部そうやってカウントするのか?
ていうか、どうやってgoで始まる単語をリストアップするんだ?
もう無理しなくていいよ
0656デフォルトの名無しさん
2014/08/15(金) 23:00:08.03ID:GvqDUviU遅いのは読み込み。grep部分を並列化しようがしまいが関係ない。
grep側を並列化しなくても$(< {} )待状態だ。
0657デフォルトの名無しさん
2014/08/15(金) 23:17:50.46ID:GvqDUviU事あるごとに条件後出しすんなボケ。
最初に条件を出し切れや。
find "$1" -type t -exec $(< "{}") \; | sed 's/\s/\n/g'| grep 'go.*' | sort | uniq -c
0658デフォルトの名無しさん
2014/08/15(金) 23:20:38.26ID:zsZ4HpGd>>644に最初から「goで始まる単語を別々にカウント」って書いてあるだろ
それとも「みたいに」が例を意味する日本語であることも分からなかったのかよ
日本語不自由すぎるだろ
0659デフォルトの名無しさん
2014/08/15(金) 23:23:48.03ID:cLr8J/Qngrepでやるならgrep -Po "\bgo.*?\b"じゃないかな
で|sort|uniq -c
0660デフォルトの名無しさん
2014/08/15(金) 23:31:18.04ID:59hzn3rj集計に本質的には要らないはずのsortを実行してるのが気になる
0661デフォルトの名無しさん
2014/08/15(金) 23:37:30.43ID:cLr8J/Qn0662デフォルトの名無しさん
2014/08/15(金) 23:41:29.36ID:zsZ4HpGd| awk '{c[$0]++;}END{for(w in c){print w, c[w]}}'
を使うとか
0663デフォルトの名無しさん
2014/08/15(金) 23:42:10.02ID:GvqDUviU大丈夫。その為にsedで空白を改行に変えちゃってるから。
>>658
有限個の単語上げといて、ファイル中に存在する単語全部パターンに飛躍するヤツなんてお前位だよ。
大体"みたい"になんてお題に書く方がおかしいだろうが。
他人を責める前に誤解を招く書き方を改めろや。
0664デフォルトの名無しさん
2014/08/15(金) 23:51:27.02ID:cLr8J/Qnsedのところ見落としてた
そーりー
0665デフォルトの名無しさん
2014/08/15(金) 23:51:58.69ID:zsZ4HpGdまずお題じゃなくて只の質問だったわけだが、
仮にお題だったとしても、それに例が書いてある事も
例が有限個であることも全く普通だよ
でも、日本語が不自由というよりアスペっぽいので、そこは謝る。治らないもんな。ごめんな
0666デフォルトの名無しさん
2014/08/16(土) 00:36:07.21ID:yF2fwj9g条件値が片手で数える程なら、
ベタ書きすんのは普通だよ。
設定値や条件値を外出にしたり、
広範囲の条件にも対応できる汎用的な
処理を使いたいならScriptじゃなく汎用言語を使えば良い。
0667デフォルトの名無しさん
2014/08/16(土) 06:18:43.73ID:nf6pthQbGo言語はもっと凄いの?
0668デフォルトの名無しさん
2014/08/16(土) 07:48:12.79ID:q245zxlf0669デフォルトの名無しさん
2014/08/16(土) 07:51:53.92ID:Ra/Da5CE0670デフォルトの名無しさん
2014/08/16(土) 09:10:28.92ID:5flrnqyZシングルもパラレルも同一コードであって自動並列化するのが楽。
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命令型プログラミングとは、計算をプログラム状態を変化させる文の列で記述するプログラミングパラダイムの一種。
命令型プログラムはコンピュータが実行すべき命令列で構成される。
命令型プログラミングに従ったプログラミング言語を命令型(プログラミング)言語と呼ぶ。
一般に命令型プログラミングは、手続き型プログラミングと同義として扱われる。
命令型プログラミングは、宣言型プログラミング(関数型や論理型言語など)と対照的である。
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「(Haskell に代表される遅延評価を基本とした)純粋関数型言語では
プログラムの自動並列化が容易/可能」
という主張には、大きな盲点(あるいは詐欺)がある
それは >>673 の最終段にある
「ほとんど全てのコンピュータのハードウェア実装は命令型である。」
という純然たる現実を(意図的に?)無視している点だ
>>672 が言うように、関数型言語の計算モデルであるラムダ計算には
もともと計算順序という概念が存在しないから、原理的には自動並列化は可能である
しかしそのプログラムを実行するのは命令型CPUだから、(逐次処理にせよ並列処理にせよ)
先行評価または遅延評価(あるいは他の評価戦略)といった計算順序を持ち込まなければ、
プログラムを命令型CPUコードへ翻訳(コンパイル)できない
このプログラムとヘードウェアとの間に立ちはだかる技術的に大きな壁は
「意味論的な隔たり(セマンティック・ギャップ)」と呼ばれ、長年の研究テーマになっていた
結果として、意味論的に命令型CPUに近い先行評価を採用した最初の関数型言語である
LISP は1960年代には実用的な処理系が存在していたにもかかわらず、遅延評価を採用した
関数型言語の実用化には、それから20年を経た Miranda の登場を待たねばならなかった
だから冒頭の間違った主張を正しく書き直すと以下のようになる
「関数型専用CPU上での実行を前提条件とすれば、
純粋関数型言語ではプログラムの自動並列化が容易/可能」
現実には Intel 系に代表される命令型CPUが主流だから、この主張は幻想と言わざるをえない
0677デフォルトの名無しさん
2014/08/16(土) 13:34:35.98ID:XlNU51V9そのギャップを埋めるのがHaskell等のコンパイラなんじゃね?
Haskellのプログラムを書く開発者からすれば、コンパイラがよろしくやってくれるから楽に並列化できる!ってことじゃ無いの?
0678デフォルトの名無しさん
2014/08/16(土) 13:54:39.69ID:7E4BWnpkhttp://maoe.hatenadiary.jp/entry/2013/07/27/024257
> 純粋関数型であっても並列化は簡単ではなく、
> 評価戦略の正しい理解と地道なプロファイリングが必要である
0679デフォルトの名無しさん
2014/08/16(土) 13:59:21.32ID:pCqm9jUFそのとおりだよ
でも、言葉で「ギャップを埋める」と言うのは簡単だけど、
Haskellコンパイラの中の人達はロックやセマフォといった
泥臭い並列化プリミティブと格闘しなければならない
実際にこのギャップに挑戦しているのが
たとえば Parallel Haskell というプロジェクトだけど、
今のところ実験的な実装に留まっている
もしも:
・GHCの公式リリース版にこのプロジェクトの成果が反映され、
・デフォルトで並列化が有効とされ、
・適切な並列化アルゴリズムで書かれたプログラムであれば
アムダールの法則を打破できる、すなわちコア/プロセッサ数に
正比例して計算速度が向上できる
ようになれば、Haskell における並列化は実用化されたとみなせる
現状は最初の一歩を踏み出したレベルだから、(その将来性は否定しないけど)
現時点での「Haskell なら楽に並列化できる」という断定は、
あまりに性急すぎると考える
0680デフォルトの名無しさん
2014/08/16(土) 14:16:29.70ID:5flrnqyZ理屈上、純粋関数型なら、ソースコードに並列処理を明示しなくていいはずだが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:CbKvsBmnSqueak 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ヘンテコなIDEっぽいものの使用を強制されるのが受け付けなくて
使い始めるに至らない
0685683
2014/08/16(土) 22:30:03.73ID:7E4BWnpkSmalltalkはここでさんざんけなされているとおり
そんなにすごいことはやっていませんよ。
今どきの動的型言語にくらべれば仕様として覚えることはごくわずかで
意味までかえてしまうマクロのような機能もないので
考えようによってはLISPよりシンプルなくらいです。
使い慣れた環境からちょっと離れた異世界探検気分で気楽に
むしろヘンテコなところを積極的に楽しんでみてください。
0686デフォルトの名無しさん
2014/08/16(土) 22:46:02.73ID:ptJ9/pSk0687デフォルトの名無しさん
2014/08/17(日) 01:37:01.40ID:h+4ah3vyそんなアナタになでしこ(適当)
0688デフォルトの名無しさん
2014/08/17(日) 09:34:18.51ID:VWdQlfS3コードゴリゴリ書くタイプのチュートリアルが楽に手に入るSmalltalk環境無い?
前にSqueak使ったんだが、GUIのチュートリアルがメインでなかなかコード書く話にならなくて辞めちゃったよ
0689683
2014/08/17(日) 10:47:13.47ID:KEkqINZ5普段使っていらっしゃるOSはなんですか?
Windows限定ですが、たとえば動画でこんなチュートリアルがあります。
Dolphin Smalltalk Lights Out Game (Part 2)
https://www.youtube.com/watch?v=8pkyOm1Mxug
この程度でも「なかなかコードを書く話にならない」という印象を持たれる感じでしょうか?
0690683
2014/08/17(日) 11:14:16.55ID:KEkqINZ5個人的に気に入っているチュートリアルとしては
すでに試されてダメだった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>今どきの動的型言語にくらべれば仕様として覚えることはごくわずかで
この件は「Perlよりマシ」と唱えるだけでPerl以外みんな平等になってしまうから
過剰に努力してもコスパが悪くなるだけなんだよな
0693683
2014/08/19(火) 09:43:28.32ID:YM7ubglb> 「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+Qx0695デフォルトの名無しさん
2014/08/19(火) 13:53:58.42ID:c6AsXCDxhttp://news.livedoor.com/article/detail/9157615/
0696デフォルトの名無しさん
2014/08/19(火) 14:46:43.07ID:VacuSofY0697デフォルトの名無しさん
2014/08/19(火) 19:56:06.18ID:hR+ltkQy見た目の奇妙さ、独特の開発環境、豊富とは言えないドキュメント
どれも慣れれば克服できる程度のものだけど、
一度に全部まとめてクリアするのはキツイわ
0698デフォルトの名無しさん
2014/08/19(火) 20:25:57.53ID:OHKZi51FSmalltalkは英語なら色んな資料あんだけどね。
0699デフォルトの名無しさん
2014/08/19(火) 20:30:01.25ID:hR+ltkQy英語でいいので、Pharoの>>688的な資料ない?
0700デフォルトの名無しさん
2014/08/19(火) 21:08:08.68ID:KCwbYaCvhttp://pharo.org/documentation
この辺のやつじゃあかんの?
0701デフォルトの名無しさん
2014/08/19(火) 21:21:14.00ID:FY7ClORu一応そのページは既にチェックしてたけどね…
とりあえずサンクス
0702デフォルトの名無しさん
2014/08/19(火) 23:38:18.70ID:UyKyjv+0GNU 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:IwC8qEf920年のobjective-cの経験ある海外のプログラマがswiftなんて使えないって記事かいてたよ
0704デフォルトの名無しさん
2014/08/19(火) 23:45:46.39ID:IwC8qEf90705デフォルトの名無しさん
2014/08/19(火) 23:55:22.02ID:RLzZhY/kまさに小並感
0706デフォルトの名無しさん
2014/08/20(水) 01:01:37.20ID:+uPYMsWL0707デフォルトの名無しさん
2014/08/20(水) 06:37:22.78ID:aMOBI2ge| 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:aMOBI2geTranscript 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| 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.
0710683
2014/08/20(水) 10:03:02.79ID:wWhJKRGXVisualWorks や 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もうこれあれば他要らなくね?
0712デフォルトの名無しさん
2014/08/20(水) 18:26:18.88ID:hwSpijZu因みにGNU SmalltalkとVisualWorksって名前空間があったりするんだよ。
Squeak系はOOを駆使したLibrary設計は素晴しいけど、
並列処理やら言語機能の面はちょっと古いね。
0713デフォルトの名無しさん
2014/08/20(水) 18:30:29.20ID:BahuvxDuTypeScriptとかCoffeeScriptとかDartとか氾濫してるんだが…
0714デフォルトの名無しさん
2014/08/20(水) 19:06:19.72ID:hwSpijZuSmalltalkが使えるBrowserもっと増えねぇかなぁ。
0715デフォルトの名無しさん
2014/08/20(水) 20:29:12.15ID:rf7dSeiR0716デフォルトの名無しさん
2014/08/20(水) 20:34:08.90ID:SisX+CQQSmalltalkが評価されることは無い
0717デフォルトの名無しさん
2014/08/21(木) 17:14:11.52ID:npCrOf/M0718デフォルトの名無しさん
2014/08/21(木) 18:07:25.57ID:avoK5umn0719デフォルトの名無しさん
2014/08/21(木) 18:09:37.89ID:avoK5umn0720デフォルトの名無しさん
2014/08/21(木) 20:48:02.27ID:c5Umhtvx0721デフォルトの名無しさん
2014/08/21(木) 20:54:03.41ID:Z5aIfFS+0722デフォルトの名無しさん
2014/08/21(木) 20:59:12.99ID:gFcZOxfX俺はささっとコード書いて目的達成したら、別の事に時間使うだけだから
幅広い知識を身に着け、そうしていつしか埋めようの無い差が開いていく( ´,_ゝ`)ップww
0723デフォルトの名無しさん
2014/08/21(木) 21:36:01.34ID:7zFpfveR0724デフォルトの名無しさん
2014/08/21(木) 22:10:21.53ID:c5Umhtvx0725デフォルトの名無しさん
2014/08/21(木) 22:24:34.12ID:U37bR+oOスリープソートを実装して、ランダムに並べた1から1000までの整数をソートする。
違う入力で10回繰り返し、その都度結果がソートされていることも確かめること。
その際、ソート1回あたりににかかった平均時間も提示してください。
0726デフォルトの名無しさん
2014/08/21(木) 22:41:26.11ID:s//ch5e21銘柄の株価を0.5秒刻みで折れ線Chartとして表示して下さい。
株価情報の取得元は問いません。
銘柄は任意で変えられる様にして下さい。
0727デフォルトの名無しさん
2014/08/21(木) 23:15:59.53ID:vyUchqHu0728デフォルトの名無しさん
2014/08/21(木) 23:34:38.96ID:avoK5umnそう考えている時期が僕にもありました。
0729デフォルトの名無しさん
2014/08/21(木) 23:37:32.36ID:avoK5umn信仰心。世界中のgeekたちが手を取り合えば、
世界はもっとよくなるという精神性おいて他言語には追随を許さない。
0730デフォルトの名無しさん
2014/08/22(金) 01:15:11.81ID:CUb+O1mD0731デフォルトの名無しさん
2014/08/22(金) 10:42:28.08ID:J035ZJLX0732デフォルトの名無しさん
2014/08/22(金) 11:55:36.77ID:c+MP2XXJ分解能やスケジューリング特性から導かれる理論値にどれだけ近い結果を出せるかを競う高度なテストだろ
0733デフォルトの名無しさん
2014/08/22(金) 12:08:13.29ID:mQARv77vSqueak 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しかし、100msとか150msの分解能だなんて大昔のコンピュータを見るようだ。
0735733
2014/08/22(金) 18:34:45.04ID:mQARv77v私の使っているマシンがポンコツだというご指摘はさておき、
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+1Fi0Pythonで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:6di2gOhY0738デフォルトの名無しさん
2014/08/22(金) 21:03:22.49ID:D4ujry1v多少は役に立つ株価のお題を答えろよ。
ゴミばっか生産してんじゃねえ。
0739デフォルトの名無しさん
2014/08/22(金) 21:10:44.33ID:BKUgHNQ20740デフォルトの名無しさん
2014/08/22(金) 21:36:03.22ID:J035ZJLX0741デフォルトの名無しさん
2014/08/22(金) 21:54:21.77ID:BKUgHNQ2次にPC、OSの性能で、下手すると数倍違う
0742デフォルトの名無しさん
2014/08/22(金) 22:11:14.50ID:BZ0WRlm3なんでも定量化すればいいと思うのは間違い
0743733
2014/08/22(金) 22:17:23.80ID:I9M5v1q5ご提示のコードだと gevent がインポートできないのですが、
これはどこから入手すればよいのですか?
ともあれ、なかなか優秀なライブラリーっぽいですね。
0744デフォルトの名無しさん
2014/08/22(金) 22:27:25.69ID:x+gT+YRBFiberを軽量Threadって言うなよ。
Kernelが使うLite weight threadと紛らわしいだろうが。
0745733
2014/08/22(金) 22:28:13.47ID:I9M5v1q5お薦めの言語のコードを出していただければ、
同じ PC、OS な条件でも手元で比較することができますので、
そうおっしゃらずに、ぜひ。
0746デフォルトの名無しさん
2014/08/22(金) 22:31:10.83ID:jEn+1Fi0Python3で使う場合は、githubから最新のコードを取ってこないと
importするときにシンタックスエラーで落ちると思う
pip install git+https://github.com/surfly/gevent
0747デフォルトの名無しさん
2014/08/22(金) 22:32:57.71ID:a+5OSmIxsleepの精度が第一で、もの凄い短い精度でsleepできれば、言語自体の処理速度も関与するだろうが。
0748デフォルトの名無しさん
2014/08/22(金) 22:36:06.39ID:a+5OSmIx計算結果は正しくならないが、速度測定は正しく出来る。
0749733
2014/08/22(金) 22:42:05.24ID:I9M5v1q5情報、ありがとうございます。
まさにそこでドツボっていました。
風呂から出たらさっそく試してみます。
自分の環境でどのくらい精度がでるか楽しみです。
0750733
2014/08/22(金) 22:45:21.64ID:I9M5v1q5これは1000程度と、比較的多めのスレッドを使用した場合の
コンテキストスイッチの重さの違いを見るお題だと思ったのですが
違いますかね。
0751デフォルトの名無しさん
2014/08/22(金) 22:47:49.83ID:jEn+1Fi0>>736を試すなら、random.sampleを誤ってループの外に出してたので
start_time = ... の上の行に移動してね
ズルになってしまう
0752デフォルトの名無しさん
2014/08/22(金) 23:03:41.57ID:a+5OSmIxまとめて例えば10個送信して、ソートして順に出力して行ったらいいかもしれない。
0753デフォルトの名無しさん
2014/08/22(金) 23:15:34.47ID:DESqwkkpWindowsは全く分からないな
0754733
2014/08/22(金) 23:45:36.16ID:I9M5v1q5文法エラーのところだけ直したら動くみたいなのでとりあえずそれで試してみたら
残念ながらウチのポンコツPCでは、random.sampleをループ内に入れて
毎回違う並びにすると、x 0.15 のままでは10回のうち何個かは失敗するらしく
例外が上がります。x 0.04 くらいでなんとかオールOKという感じ。
ともあれ、それでも平均40秒ですからすばらしいと思います。ありがとうございました。
0755デフォルトの名無しさん
2014/08/22(金) 23:56:14.51ID:wB2SrjRz0756デフォルトの名無しさん
2014/08/22(金) 23:58:47.83ID:wB2SrjRzjavascriptとhtml5が普及しきった後でのdartのシェアに掛かっている
0757デフォルトの名無しさん
2014/08/23(土) 00:02:56.49ID:tn55FLZ4モバイルデバイスはネイティブアプリがあるから今後もhtml5の普及は見込めない
html5ってどこに需要があるのか分からない
0758デフォルトの名無しさん
2014/08/23(土) 00:04:56.37ID:kbJCwVtw0759デフォルトの名無しさん
2014/08/23(土) 00:11:38.74ID:rS5gMmQGkwsk
0760デフォルトの名無しさん
2014/08/23(土) 01:34:26.34ID:4nIWaa2aEPUB3
0761デフォルトの名無しさん
2014/08/23(土) 01:47:46.75ID:TT0GQXTF業務系で、しょぼいUI/UXしか必要とされてなくて、納期が短いケースで需要がある
0762デフォルトの名無しさん
2014/08/23(土) 02:56:58.23ID:W6jsUyZF構文スペックではHTMLのほうが優秀だしjsはHTMLに駆逐されるんじゃね?
0763デフォルトの名無しさん
2014/08/23(土) 03:16:16.88ID:WQrXNI9lどちらも過去の遺産だけで食ってるだけだよ
0764デフォルトの名無しさん
2014/08/23(土) 03:27:07.74ID:chzfUNX/普及以前に規格が出来てないしな。
0765デフォルトの名無しさん
2014/08/23(土) 07:16:41.04ID:4nIWaa2a0766デフォルトの名無しさん
2014/08/23(土) 07:42:11.88ID:W6jsUyZFそりゃ誰もあれを、使い続けたくはないわな
普通にHTMLでやれる範囲増やしてHTMLでかける部分はHTML推奨
jsはゴミ
0767デフォルトの名無しさん
2014/08/23(土) 07:53:31.98ID:4nIWaa2a既に殆どのブラウザは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:rRuNrHr1au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン
au氷水ディレクター戦争指名タイステーキ万国ニューヨークブカ牛肉直輸出制限業者議論病院雇用市議しょうゆダシマクッロスさむらい山雪光金ガンダム風ミックドラ社員あかうんとパズ豚骨のり肉マンつばめの巣塩担々麺野菜炒めラーメン
ニンニクヤーフォー低額土地NHK名古屋遅延電池切れ福岡損保新規駐車近代ゲームフジワイプ転職提案ラーメン
abk公式漏洩安保険王なにあげてんだよ?「わー!ふーう?」↓↓★★↓↓宿題通調印鑑カウントダウン息子議員国会大学生
0769デフォルトの名無しさん
2014/08/23(土) 09:44:11.97ID:tn55FLZ4HTML5が使われるとしたらGmailみたいな複雑なUIのウェブサイトぐらいだろうけど、そんな高機能なサイト沢山は要らないし、HTML5のAPIも必要なのは一部だけ
0770デフォルトの名無しさん
2014/08/23(土) 09:46:22.28ID:sLXAwLj/無くなったのと同じだろ
0771デフォルトの名無しさん
2014/08/23(土) 10:25:14.89ID:TT0GQXTF最強のスクリプト言語
0772デフォルトの名無しさん
2014/08/23(土) 10:42:53.99ID:PEb8yNX4SmalltalkとPythonでやってるとこ
0773733
2014/08/23(土) 10:53:59.90ID:/ISHex6Nすみません。もうひとつ教えてください。
gevent を使わない版としてこんな改変をしてみたのですが
これでは動作しないものなのでしょうか?
http://ideone.com/IKi7gs
0774733
2014/08/23(土) 10:59:47.51ID:/ISHex6Nほんの十数行、書いても十分もかからないようなコードなのに
最強をうたう Ruby や JS のコードがいっさい出てこないは寂しいですね。
あと、スレッドのコンテキストスイッチの軽さを見るお題なので、
Erlang や Go、Io の実力も見てみたいところです。
0775デフォルトの名無しさん
2014/08/23(土) 11:17:53.77ID:zhiGIFIr性能最強とほざいているjs使いは流石にいないんじゃね?
0776デフォルトの名無しさん
2014/08/23(土) 11:33:57.33ID:B4vddcJ5言語の性能なんて処理系で決まるんだから言語は関係ねーだろ
0777デフォルトの名無しさん
2014/08/23(土) 12:00:32.61ID:4nIWaa2a0778デフォルトの名無しさん
2014/08/23(土) 12:00:54.87ID:XxQ8QUyR平均的JSerの生産性は平均的Smalltalkerの1/100なので、
書くのに1000分かかる
0779デフォルトの名無しさん
2014/08/23(土) 12:20:29.20ID:ERV3YG/5Flashのが高機能じゃね…?
0780デフォルトの名無しさん
2014/08/23(土) 12:39:04.52ID:cWaKBK7iもう今世紀中には成立しないんじゃねえか?
0781デフォルトの名無しさん
2014/08/23(土) 13:20:02.01ID:QxSN9cCPSmalltalkは?
0782デフォルトの名無しさん
2014/08/23(土) 13:24:51.99ID:cWaKBK7i最新Version情報をVMから直接取り出して表示するProgram。
http://ideone.com/g3zWWc
Android上で動作確認済み。
ideoneではGNU Smalltalkが古いせいか、
制限掛けてるせいか実行出来ない。
これと同じ、VMからVersion情報を取り出して表示する処理を
他の言語でも書いてくれ。
0783デフォルトの名無しさん
2014/08/23(土) 13:27:27.77ID:CbOxF1jD0784デフォルトの名無しさん
2014/08/23(土) 13:28:47.98ID:cWaKBK7i利用可能なVMの最新Versionね。
言葉足らずでめんごめんご。
0785デフォルトの名無しさん
2014/08/23(土) 13:33:52.83ID:CbOxF1jD0786デフォルトの名無しさん
2014/08/23(土) 13:35:49.77ID:QxSN9cCP0787デフォルトの名無しさん
2014/08/23(土) 13:39:22.48ID:cWaKBK7iそうだよ。それにもう一つ条件JavaVMから
直接Versionを調べること。
ちなみに目的はVMのVersionを調べる事じゃなく、
自在にVMを制御出来るかどうか。
Object生成とかまで書いてると処理が長くなるんで、
そこまでは求めない。
0788デフォルトの名無しさん
2014/08/23(土) 13:41:58.55ID:ONwlfWFe0789デフォルトの名無しさん
2014/08/23(土) 13:43:06.87ID:QxSN9cCPPythonはjpype使えば自在にJavaを呼び出せるよ
http://hustleplay.wordpress.com/2010/02/18/jpype-tutorial/
0790デフォルトの名無しさん
2014/08/23(土) 13:53:12.79ID:cWaKBK7i実用上は関数のPointerやら構造体の入れ子を
自在に制御出来る必要が有るから、
DLLを使えることだけをお題にしても価値がない。
>>789
つまんないからAndroid上で実行って条件も追加で。
0791デフォルトの名無しさん
2014/08/23(土) 14:10:45.10ID:cWaKBK7iBridge使うってだけなら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:WCrTbd1XAndroidでも動くし
http://txzone.net/2012/08/pyjnius-accessing-java-classes-from-python/
0793デフォルトの名無しさん
2014/08/23(土) 14:20:57.07ID:cWaKBK7i0794デフォルトの名無しさん
2014/08/23(土) 14:28:57.73ID:cWaKBK7iSmalltalkのJVM制御はこっちの方が移植性ありそうだ。
0795デフォルトの名無しさん
2014/08/23(土) 14:46:07.37ID:WCrTbd1XGroovy、Scala、Clojure、JRuby、Jythonは不戦勝だよね?
0796デフォルトの名無しさん
2014/08/23(土) 14:56:26.08ID:cWaKBK7iSmalltalk/JVMと同格だね。
んじゃ、Android上でJVMを使わず、
OpenGLでOffscreen描画する課題に変えるか。
0797デフォルトの名無しさん
2014/08/23(土) 14:59:46.55ID:WCrTbd1X0798デフォルトの名無しさん
2014/08/23(土) 15:01:28.04ID:cWaKBK7i0799デフォルトの名無しさん
2014/08/23(土) 15:05:58.52ID:3qnNklS6ここ処理系を比較するスレなの?
0800デフォルトの名無しさん
2014/08/23(土) 15:08:48.95ID:1z1AuVul参加すらできてない
0801デフォルトの名無しさん
2014/08/23(土) 15:17:21.71ID:3qnNklS6CとJavaを比較すると言ってgccの拡張機能を持ち出すような違和感がある
0802デフォルトの名無しさん
2014/08/23(土) 15:19:06.57ID:cWaKBK7i「処理系が現実に存在する」
は言語の重要な評価基準でしょ。
0803デフォルトの名無しさん
2014/08/23(土) 15:20:55.46ID:K+6ohIGP>>797に匹敵するレベルじゃないと恥ずかしいだけだよ
0804デフォルトの名無しさん
2014/08/23(土) 15:28:57.32ID:cWaKBK7iんなもんLibraryの出来の問題じゃん。
その水準ならAndroid版SqueakやPharoでも良い訳でしょ。
0805デフォルトの名無しさん
2014/08/23(土) 15:39:51.55ID:K+6ohIGPたいして変わらんわ
0806デフォルトの名無しさん
2014/08/23(土) 15:48:47.86ID:T11vzkL/最強過ぎて、他言語、処理系が惨めに見えてくる
「Will Code Java for food」これが未来
0807デフォルトの名無しさん
2014/08/23(土) 15:50:46.15ID:cWaKBK7i誰もLibrary自慢すんなとは言ってないだろ。
処理系もLibraryも存在するならどんどん自慢すりゃいいさ。
0808デフォルトの名無しさん
2014/08/23(土) 15:54:46.13ID:cWaKBK7ihttp://amber-lang.net/
なんつうか他の高水準言語を動かすための低水準言語化してる様に思える。
いっそJavascriptをLLVMに置き換えてしまえばいいのに。
0809デフォルトの名無しさん
2014/08/23(土) 16:04:43.24ID:aRrEsiH90810デフォルトの名無しさん
2014/08/23(土) 16:23:01.11ID:XxQ8QUyR我慢してまで使うメリットが
Smalltalkに無いことは分かった
0811デフォルトの名無しさん
2014/08/23(土) 16:45:28.57ID:cWaKBK7iOSがGUIのコト差してんなら、別にあのGUI無くてもSmalltalkは書けるし動かせるよ。
どの処理系もHead less modeってのが有る。
0812デフォルトの名無しさん
2014/08/23(土) 17:57:35.31ID:1VsxcGzq0813デフォルトの名無しさん
2014/08/23(土) 20:14:16.32ID:67RgqQJAhttp://www.oreilly.co.jp/sales/2014/08/ann-ll-diver.html
これ行った奴いる?
レポよろ
0814デフォルトの名無しさん
2014/08/23(土) 20:30:37.32ID:MKapSFj3Cの関数が効果的な処理以外はPythonより
Smalltalkの方が速かったりする。
あとDebug効率や開発資源の管理効率も
Smalltalkの方が良いな。
特に管理効率はSource fileやProject設定を
考えなくて良い所が良い。
WebやGUIだとその差がかなりデカイ。
0815デフォルトの名無しさん
2014/08/23(土) 20:34:08.01ID:MKapSFj3他の処理系はかなり綺麗。
0816デフォルトの名無しさん
2014/08/23(土) 20:57:53.50ID:WEEbj9R+Pythonも同じ様に開発出来たらええな。
http://www.ogis-ri.co.jp/otc/hiroba/technical/seaside/seaside1/
0817デフォルトの名無しさん
2014/08/23(土) 21:36:27.73ID:C3BW1AXi在りし日のRubyに匹敵するレベル
0818デフォルトの名無しさん
2014/08/23(土) 21:44:15.52ID:TT0GQXTF他はどうでも良いけど、管理効率が良いってgitより上ってこと?
マイナー言語のガラパゴスVCSを覚えろって?冗談でしょ?
0819デフォルトの名無しさん
2014/08/23(土) 21:45:57.46ID:YdsQyUD6誰かさんたち程じゃないけどね
0820デフォルトの名無しさん
2014/08/23(土) 21:52:20.38ID:TT0GQXTFお題に関係なく議論するならJavascriptに
ユーザ数もライブラリ数も実績も足下にも及ばないっていうか
土俵にも上がれないレベル
0821733
2014/08/23(土) 22:10:25.61ID:s9XgqdMxちょっと見ないうちに、殺伐とした雰囲気に…^^;
とまれ、世に「論よりコード」とも申します。
まあ馬鹿っぽくても、せっかくお題があるので、
もっとコードを出し合ってお気に入りの言語を戦わせませんか?
あるいは言語の差が出る、もっと馬鹿みたいでないお題をコード例付きでぜひ是非。
0822デフォルトの名無しさん
2014/08/23(土) 22:45:47.41ID:1KHlh7WHWebを作る場合
・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・ClassやMethodのCommentは、Classや
Methodと分離して管理される
(表示的にも別のTextBoxに表示される)。
このため、JavaDocみたいなものが要らない。
・処理系によっては太字を入れたり部分的に色を
変えたりしてCommentを装飾出来る。
・Commentを元に関連するClassや
Methodに飛ぶのも簡単。
0824デフォルトの名無しさん
2014/08/23(土) 23:12:29.41ID:1KHlh7WH・環境によるが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の話はその辺にしとかないとSmalltalkはスレ違いになっちゃうぞ
0827デフォルトの名無しさん
2014/08/23(土) 23:27:28.44ID:1KHlh7WH・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言語がIDE前提に前提に作られてるから仕方ない。
それからSmalltalk言語はSmalltalk IDEのScriptでも有るから、
寧ろScriptらしい話でしょ。
0830デフォルトの名無しさん
2014/08/23(土) 23:34:13.75ID:sLXAwLj/それVSとC#/VBにも当てはまるよね
0831デフォルトの名無しさん
2014/08/23(土) 23:36:11.07ID:1KHlh7WH単純にC系じゃないからでしょ。
VBやDelphi、lispの衰退と同じ。
今はC系一強の時代になった。
0832デフォルトの名無しさん
2014/08/23(土) 23:38:07.73ID:1KHlh7WHVBやC#はIDEを制御しない(Scriptじゃない)でしょ。
0833デフォルトの名無しさん
2014/08/23(土) 23:44:04.69ID:1KHlh7WHそれとIDEはVBやC#のDebug実行はするけど、
VBやC#のObjectを永続的に操作しないでしょ。
"Smalltalkだと下記の式をIDEが直接実行する。"
Example compile:
'
hello
Transcript show: ''Hello''.
'.
0834デフォルトの名無しさん
2014/08/23(土) 23:47:41.94ID:tn55FLZ40835デフォルトの名無しさん
2014/08/23(土) 23:54:13.86ID:1KHlh7WHSmalltalk環境のObjectに対する変更は、Processを
終了するまでの一時的なものではなく永続的に
維持される。Source codeじゃなくSmalltalkの
Objectとして処理を保持してるってのも珍しくない。
そういう点から、開発中と実行Processが別って言語とは
温度差が有るね。
Shell scriptやBlenderにScriptとして組み込んだ
Pythonとかなら温度差は少ないんだろうけど。
0836デフォルトの名無しさん
2014/08/23(土) 23:56:52.46ID:1KHlh7WHIDEの使い方理解できなくて利用者に逃げられてるってのも追加で。
0837デフォルトの名無しさん
2014/08/24(日) 00:01:11.36ID:QLy+hn3Vで、いつからその性質がScriptであることの条件になったの?
まずはスレタイと矛盾しないようにScriptを定義してよ
大層なIDEを必要としないってのはスクリプト言語の特徴として割と一般的な認識だと思うけど
0838デフォルトの名無しさん
2014/08/24(日) 00:07:40.65ID:mc0xcEhs…によるのかもな
0839デフォルトの名無しさん
2014/08/24(日) 00:11:20.64ID:BBHHxdw6IDEの有無が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:BBHHxdw6OSって表現も微妙だよ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ほとんどの場合当然のようにホスト言語として使うことが想定されてたよね
JVMからみたJavaとでもCLRからみたC#とでも何とでも言えるわけだけど、
そんな分け方に何の意味があるの?
ここ言語スレだよ?
0842デフォルトの名無しさん
2014/08/24(日) 00:27:52.74ID:BBHHxdw6VimScript → Vim
0843733
2014/08/24(日) 00:32:22.62ID:1ar9zXjoデータベースのようなものの中に処理系が構築されている
ところだと思います。クラスやインスタンスはもちろん
メソッドもプロセスも実行コンテキストも、コンパイラも
IDEもいっさいがっさいぜんぶDB内のデータとして
収められていて、どれも同じくアクセスしたり改変できるのが
心地いいです。
たとえばメソッドのソースコードは メソッドの属性として
扱われていたり、ユーザー操作もシステムの改変を伴うものは
全部データとして履歴が残るので、ファイルベースでは困難な
メソッド単位のバージョン管理もあっけないほど単純な仕組みで
実現されているのが覗いていて楽しいです。
0844デフォルトの名無しさん
2014/08/24(日) 00:37:43.01ID:BBHHxdw6・JavaはJVMで実行されるだけで、JVMを制御するための言語じゃない。
・C#はCLIに準拠してるだけでCLIを制御するための言語じゃない。
・SmalltalkはSmalltalk環境を制御するための言語でVMを制御するための言語じゃない。
わりと境界はハッキリしてるよ。
0845デフォルトの名無しさん
2014/08/24(日) 01:01:36.92ID:mc0xcEhsホスト言語なんて想定してたかな、例えばJSなんてnodeとかよりブラウザ上の話のがメインになってた印象あったけど
そうだ、Luaの話をしようよ誰か
0846デフォルトの名無しさん
2014/08/24(日) 01:08:08.58ID:QLy+hn3V・LuaはXXXで実行されるだけでXXXを制御するための言語じゃない。
に常に当てはまるからダメだよ
JSは元々ブラウザの制御のために作られた言語だからOKだけどね
0847デフォルトの名無しさん
2014/08/24(日) 02:37:23.71ID:QnsE/ExW0848デフォルトの名無しさん
2014/08/24(日) 03:01:44.14ID:mc0xcEhs組み込まれたアプリケーションを制御する以外に何に使うんだよって言語でもあるんだけどな…
0849デフォルトの名無しさん
2014/08/24(日) 04:07:17.14ID:4M/o+ZzKこれがSmalltalkの目指してた姿。.netの目指してた姿。
>>845
http://zedshaw.com/
http://tir.mongrel2.org/
0850デフォルトの名無しさん
2014/08/24(日) 08:14:48.97ID:XvjAGSEnC++ばかりだと思ってたけど
0851デフォルトの名無しさん
2014/08/24(日) 08:44:44.39ID:QnsE/ExW0852デフォルトの名無しさん
2014/08/24(日) 09:09:19.81ID:PkG6bn0Z0853デフォルトの名無しさん
2014/08/24(日) 09:24:05.51ID:goHZLKCsオブジェクトの状態ご保存していて、
どうやってマージするの?
同じソースコードで実行してても、オブジェクトの状態が違う場合はあるけど
オブジェクトの状態が違ったらマージでコンフリクトするの?
0854デフォルトの名無しさん
2014/08/24(日) 09:26:12.45ID:goHZLKCsあと、ファイル単位のバージョン管理って何?
パッチ単位の間違いですか?
0855デフォルトの名無しさん
2014/08/24(日) 09:45:33.01ID:S4wP8plyGNOMEが入ってないX Windowと同じ
このままPythonやGNOMEを流行らせた方が平和になる
0856733
2014/08/24(日) 09:58:50.10ID:1ar9zXjo「オブジェクトストアの中に処理系ごと入ってい」という感覚は
通常の、とくにファイルベースのOS上でのコンピューティングになれていると
ちょっと想像しにくいかもしれませんが、なんとか説明を試みてみます。
Smalltalkではオブジェクトストア(処理系を構成するオブジェクトも含む)は
仮想イメージと呼び、たしかにデータベースのようではあるのですが、これを
個々にマージするような作業はめったにしません。ユーザーごとにコピー(フォーク)して
使われる秘伝のタレみたいなものですね。
Smalltalkのコンパイルはメソッド定義時に行なわれます。
コードを書いたり、既存のコードを編集したときに保存するような操作をすると
そのタイミングでメソッド(やはりオブジェクト)は新しいソースコードを元にした
新しいバイトコード列に置き換わります。ソースはメソッドの属性なので
メソッドにたとえば getSource というメッセージを送ること得られます。
メソッドの定義や編集などのシステム改変を伴う操作はすべてChangeRecordというクラスに
属するオブジェクトとしてストアの中に蓄積されますので、あるメソッドの変更履歴がほしければ、
ChangeRecordのインスタンス群から注目するメソッドの改変に関わるインスタンスだけを抽出して
時系列で並べることで履歴が得られます。リバートは ChangeRecord にひも付けされた
古いソースでそのメソッドを再コンパイルして生成し既存のものと置き換えることで完了します。
古典的には ChangeRecord を集めた ChangeSet というオブジェクトをストア間でやりとり
することで、マージなども可能となっていました。
0857デフォルトの名無しさん
2014/08/24(日) 10:03:23.75ID:iz1nwNoWバグ修正で複数のメソッドを同時に修正してコミットした後、
デグレが判明してリバートすることになったとするじゃん?
メソッド単位で管理してたらリバートできなくね?
0858733
2014/08/24(日) 10:15:57.05ID:1ar9zXjoメソッドごとにバージョンが管理されているというだけで、
コミットはチェンジセット(最新のメソッド変更のセット、組み合わせ)という単位で
されるので問題はないです。
0859デフォルトの名無しさん
2014/08/24(日) 10:19:30.94ID:iz1nwNoW編集してコンパイルされる毎に保存されるって訊いてたから
どうやって複数のメソッドにまたがる一連の修正を
ひとつのコミットだと判定するのかなって思ったんだけど
保存とコミットは別々に行うのね
0860733
2014/08/24(日) 10:32:08.48ID:1ar9zXjo「保存」とか「データベース」というのが既存の使い方と紛らわしかったですね。すみません。
オブジェクトストア(仮想イメージ)は、通常のデータベースのように複数のユーザーで
同時に共有することはしないので[*]、「保存」のような操作というのはあくまで
ファイルベースでいえば、編集したソースのファイルへ保存する程度の意味で使いました。
Smalltalk ではこのタイミングでメソッドがコンパイルされ、新しいバージョンに置き換わります。
複数ユーザーで開発する場合は、コミットは原則チェンジセット単位ですね。
[* GemStone/Sのように、オブジェクトストアを本格的OODBにしてしまった処理系もあります。]
書いていて思ったのですが、Smalltalk がメソッドレベルのバージョン管理など
便利な機能を容易に実現できているのは、オブジェクトストア(仮想イメージ)ベース
ということももちろんあるのですが、オブジェクトによる言語要素の単純さと遅延結合を
徹底したことによって実現された、メソッド単位のインクリメンタルなコンパイルが可能であった
ことのほうが大きいかもしれませんね。
0861デフォルトの名無しさん
2014/08/24(日) 10:38:14.31ID:iz1nwNoWマージするたびに仮想イメージは破棄して作り直すの?
破棄せず使い続けるのも問題ある気がするんだけど
いろいろ訊いてスマンね
0862デフォルトの名無しさん
2014/08/24(日) 10:50:21.66ID:4PYQ/Qzg作り直さないよ。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衝突検知されない方が困るだろ
0865デフォルトの名無しさん
2014/08/24(日) 11:01:12.89ID:iz1nwNoW現在実行中のイメージと、マージ後のソースコードが
矛盾する状態になってることはないの?
0866デフォルトの名無しさん
2014/08/24(日) 11:03:24.28ID:xQR2v9XY何言ってんだ?
マージできるかどうかは人間にしか判断出来ないに決まってる
バージョン管理システムが仕様まで把握してるわけじゃ無いんだから
0867デフォルトの名無しさん
2014/08/24(日) 11:06:40.74ID:iz1nwNoWこういうこと?
# 元のコード
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実行中のImageとMarge後のSourceが食い違うことは無いよ。
DBのStored Procedureを想像すれば分かりやすいかも。
DBの中でStored ProcedureをMargeしてしまう感じ。
0869デフォルトの名無しさん
2014/08/24(日) 11:27:49.96ID:4PYQ/Qzg完全な方法なんて無いだろうね。
でも、Marge後に構文が破綻するようなら、
Marge時に検知できるし検知できれば実際楽だ。
それから、仕様の面は単体Testで殆ど検知できる。
完全は無理でも9割以上自動化できれば、
何もしないより作業は9割分楽になる。
0870デフォルトの名無しさん
2014/08/24(日) 11:29:36.85ID:iz1nwNoWソースコードへの編集履歴だけがイメージに保存される?
たとえば、ユーザの入力とか、読み込んだファイルとかの
ソースコードに存在しないデータをオブジェクトが持ってるとき、
それはイメージに保存されない?
0871デフォルトの名無しさん
2014/08/24(日) 11:31:31.99ID:8kMqtahuはたから見てるだけだけど、無理して英語で書かずにカタカナ語で書いた方がいいと思うよ
0872デフォルトの名無しさん
2014/08/24(日) 11:35:49.37ID:iz1nwNoWメソッドで管理するメリットって、マージで構文エラーを見つけられることなのか?
でも、単体テストを実行した瞬間に構文エラーは100%見つかるから、
メリットになってなく無いか?
0873733
2014/08/24(日) 11:41:09.58ID:1ar9zXjoSmalltlak では do it 、print it といったユーザーによる式の評価は
既存クラスへのメソッドの定義とみなされるので、履歴に残ります。
(かつては本当にその文脈での self の属するクラスのメソッドとして
いったん定義され実行後、削除するといった実装になっていました)
履歴に残るか否かとは別に、オブジェクトストア内に生じたオブジェクトは
GC されない範囲ですべて仮想イメージに保存されます。
0874デフォルトの名無しさん
2014/08/24(日) 11:48:55.67ID:iz1nwNoWだいぶ分かって来た。ありがとう
マージ後のソースコードからはオブジェクトAを生成するコードは削除されているんだけど、
イメージ上はGCされずに残ってるから、オブジェクトAを参照する(バグってる)コードが
バグに気付かず動き続けるってことは無い?
0875デフォルトの名無しさん
2014/08/24(日) 11:53:42.25ID:4PYQ/QzgDBとStored Procedureの様に考えればいいよ。
Image中にはあらゆる状態が保存されるけど、
Image中に保存されてる物がどう管理されてるかは別。
>>872
File単位だと入れ子が壊れてたり、
構文の区切りがなかったら
単体Test全部出来ないけど、Method単位なら他のMethodは単体Test出来るよ。
それに構文の間違いが影響する範囲はMethod内に限定されるから、
構文修正の範囲特定も楽。
0876デフォルトの名無しさん
2014/08/24(日) 11:58:42.01ID:tZVXfngk流石にそこまで短いコードだとgitでもコンフリクトするみたい
でも、もうちょっと実際的な長さのコードではマージの成功率はいいよ
0877デフォルトの名無しさん
2014/08/24(日) 11:59:27.03ID:mc0xcEhsそれ、>>864 と何ら矛盾しないんだが…
0878デフォルトの名無しさん
2014/08/24(日) 12:02:15.74ID:mc0xcEhsLuaはライブラリが無いんじゃなくて、ベースシステム側が決められてないんだよ
強いて喩えるならブラウザの無いJavaScript…辺りかね
0879デフォルトの名無しさん
2014/08/24(日) 12:03:03.95ID:tZVXfngkパッチ単位でアクセプト/リジェクトを判断するんだから
構文エラーは文句なしでリジェクト
単体テストに進むまでも無い
あと、流石に構文エラーが発生した場所くらいは分かるわい
もうちょっと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/QzgLuaも制御言語だからScriptの範疇だろうね。
制御を目的としてる事はScriptとして重要だけど
制御対象がどのApplicationかは重要じゃ無いでしょ。
JavaScriptやVBScriptなんかはWebBrowser以外に
Scripting Hostの制御もできるし。
0882デフォルトの名無しさん
2014/08/24(日) 12:11:02.47ID:4PYQ/Qzgゴタゴタ言う前に一度SmalltalkでマトモなToolの一つでも作ってみたら?
結局触ったこと無いから感情的で批判的に
話ができないんでしょ。
0883デフォルトの名無しさん
2014/08/24(日) 12:15:50.94ID:PkG6bn0Zハマダラカは血を吸ってお腹いっぱいの状態でも
他の人間に新鮮な血をおすそ分けしに来るのか
知らなかった
0884デフォルトの名無しさん
2014/08/24(日) 12:16:34.49ID:tZVXfngk反論出来なくなったらそれ?
実際の開発プロセスと照らし合わせてみて
批判されてるだけでしょ
0885デフォルトの名無しさん
2014/08/24(日) 12:24:04.16ID:8otXsR9sCVSで扱う単位がファイルからメソッドになっただけの
時代遅れの代物ってことでFA
0886デフォルトの名無しさん
2014/08/24(日) 12:27:27.07ID:4PYQ/Qzg批判になって無い。
書き込み読んだだけじゃ、Smalltalkの併合機能は大したことが無いように見えるかもしれないが、
PythonとgitやらRubyとgitなんかの組み合わせじゃ、
Smalltalk環境なら5分で終わる手間が、
30分掛かるような事も現実に良くある。
事実を突き合わせて(批)判断する(判)と書いて批判と書くが、
2chの書き込みだけ見て感情的に非難するより、
実際にVisualWorksとか落としてみて批判した方がいい。
0887デフォルトの名無しさん
2014/08/24(日) 12:29:46.85ID:4PYQ/QzgじゃSmalltalkのVersion管理より他のVersion管理Toolの優れてる点を上げてくれ。
0888デフォルトの名無しさん
2014/08/24(日) 12:31:45.50ID:8otXsR9s>PythonとgitやらRubyとgitなんかの組み合わせじゃ、
>Smalltalk環境なら5分で終わる手間が、
>30分掛かるような事も現実に良くある。
根拠も述べずにこういうこと書くなよ
感情的になりすぎ
0889デフォルトの名無しさん
2014/08/24(日) 12:34:42.10ID:4PYQ/Qzg・Smalltalk以外の言語が使える。
・githubが使える。
これ位だったよ。
0890デフォルトの名無しさん
2014/08/24(日) 12:35:19.59ID:8otXsR9sgitあたりを使って見れば分かるよ
あ、これは君の言い方の真似だからね
0891デフォルトの名無しさん
2014/08/24(日) 12:38:30.65ID:8otXsR9sもっと真面目に言えば、git rebase -i できること
0892デフォルトの名無しさん
2014/08/24(日) 12:38:37.64ID:4PYQ/Qzg・時間が短くなった
・時間が短くなったったのは、
Smalltalkの併合で構文検査や
衝突検査があったから。
これ以上の根拠が必要なの?
実験が必要か?
0893デフォルトの名無しさん
2014/08/24(日) 12:40:18.65ID:8otXsR9sどこの世界線のヒトですか?
0894デフォルトの名無しさん
2014/08/24(日) 12:42:24.77ID:O3P3S/Bjこれを使ってるのは高齢者では?
世界初のオブジェクト指向型で、後継がオブジェクトCだろ。
0895デフォルトの名無しさん
2014/08/24(日) 12:44:15.45ID:8otXsR9sよく見たら>>879で論破されてた
0896デフォルトの名無しさん
2014/08/24(日) 12:44:52.04ID:4PYQ/Qzgその辺はSmalltalkで環境でも同じだね。
>>893
世界線とはなんですか?
gitはMethod単位の衝突検知はしないんですけど。
0897デフォルトの名無しさん
2014/08/24(日) 12:48:30.29ID:8otXsR9sメソッドより細かい単位で検知するじゃん
批判されてるのは、メソッドという大きな単位でしか判定できないことなんだけど、分かってる?
0898デフォルトの名無しさん
2014/08/24(日) 12:49:35.13ID:DiebFCoU0899デフォルトの名無しさん
2014/08/24(日) 12:52:27.34ID:FzUYznKaいや、出来ない理由は無いけどさ
具体的にはどうやってやってる?やり易い?
0900デフォルトの名無しさん
2014/08/24(日) 12:52:47.55ID:4PYQ/QzgPatch単位でRejectの意味が分からなかったから放置してたけど、
多分Patchって併合結果の事だよね。
それならSmalltalkなら>>879の様な手順を
完全に踏まなくて良いってのも
利点だね。
併合結果(Patch)には間違った構文は残ってないし、
単体Testは並行してできる。
0901デフォルトの名無しさん
2014/08/24(日) 12:54:59.76ID:4PYQ/Qzg細かい単位でも出来るよ。
衝突したMethodに色が付いて、衝突個所に更に色がつく。
0902デフォルトの名無しさん
2014/08/24(日) 13:00:25.38ID:4PYQ/QzgあれだMethod単位で検知って書いたのが悪かったんだね。
Method単位で衝突して無ければ自動で併合、
Method内で衝突していれば、そのMethodの併合は保留にしてくれる。
んで、当然Method内の何処が衝突してるかも教えてくれる。
0903デフォルトの名無しさん
2014/08/24(日) 13:22:53.62ID:FzUYznKa併合結果(Patch)ってなんぞw
なんで造語作ろうと思った
ていうか、git使ったことあるって嘘かよ
0904デフォルトの名無しさん
2014/08/24(日) 13:31:19.19ID:4PYQ/Qzggit diffで生成できるpatchの事いってたんじゃないのかよ
あとMethod単位で衝突を保留に出来る利点だけど、
衝突したMethodと関係ないMethodは衝突した
Methodを修正するより先に単体Testと修正が出来る。
0905デフォルトの名無しさん
2014/08/24(日) 13:40:21.67ID:A6XyaTbK0906デフォルトの名無しさん
2014/08/24(日) 13:43:36.91ID:FzUYznKapatchに見たことない造語を当ててて
面白かっただけだから、そうカリカリするな
怒ったなら謝るから
それとgitを使ったことあればpatchで絶対ピンとくるぞ
お前最初意味分からなかったんだっけ?面白い奴だな
0907デフォルトの名無しさん
2014/08/24(日) 13:48:09.75ID:4PYQ/Qzg>>879がgitのpatch(併合結果)指してんのか他のpatch指てんのか自信が無かったからね。
0908デフォルトの名無しさん
2014/08/24(日) 14:06:36.66ID:iz1nwNoW併合結果はマージ後の状態を指すでOK?
0909デフォルトの名無しさん
2014/08/24(日) 14:20:08.51ID:4PYQ/Qzgそうだね。だからpatchは併合結果の差分と言ったほうが正しいね。
つかgitのdiffのpatchは色々有るから、
patch=併合結果の差分とは限らないけど、
>>879の"パッチ"は併合結果の差分だと思って書いてる。
0910デフォルトの名無しさん
2014/08/24(日) 14:24:48.99ID:iz1nwNoWgitのパッチに修正の差分以外にバリエーションあったのか
知らなかった
0911733
2014/08/24(日) 14:26:20.34ID:1ar9zXjo遅レスすみません。(ちょっと出かけて帰ってみたらまた殺伐として…^^;)
> バグに気付かず動き続けるってことは無い?
バグってる状況がどういうものかにもよりますね。
たとえば、オブジェクト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/QzgWorkTreeとCommitとの差分や
Commit同士の差分やら目的や用途が違う
Patchが色々ある。
0913デフォルトの名無しさん
2014/08/24(日) 14:40:59.54ID:DiebFCoU機能追加とかバグ追加とかいろいろいろいろだ
0914デフォルトの名無しさん
2014/08/24(日) 14:41:13.17ID:iz1nwNoWそこが不思議だったんだけど、疑問は解消されました
運用で回避できるから問題無いのは、その通りだと思う
>>912
なるほど
でもworktreeとcommitで差分は取れるけど、
それでpatchを作っても使い道が無いっていうかユースケースが分からない
素直にbranch切ってcommitしてしまった方が良いような
0915デフォルトの名無しさん
2014/08/24(日) 14:50:20.71ID:FzUYznKaつまりgitがバージョン管理する対象としてのパッチに
色々あると言ってる?
0916デフォルトの名無しさん
2014/08/24(日) 23:52:47.98ID:BATf5Ithgit diffで得られるpatchに色んな物があると言ってますが。
0917デフォルトの名無しさん
2014/08/25(月) 02:16:41.48ID:pUq5HgziGNOMEでのアプリケーション開発の第一級言語はJavaScript
GnomeShellがそれ。nodejsの流行るまえからJavaScriptが採用されてた
0918デフォルトの名無しさん
2014/08/25(月) 04:07:24.69ID:Cb7T7q6gPHPマンセー!!
0919デフォルトの名無しさん
2014/08/25(月) 07:50:38.92ID:HqZ1njSpそのコマンドは差分を表示して確認するためのもので
patchとしては使わないよ
0920デフォルトの名無しさん
2014/08/25(月) 07:57:18.99ID:HqZ1njSpgit diffで作ったpatchをpatchコマンドで
適用することだと思ってるのかな?
0921デフォルトの名無しさん
2014/08/25(月) 09:14:15.27ID:kPT0LcQ7git format-patchは使う
0922デフォルトの名無しさん
2014/08/25(月) 16:32:55.59ID:pUq5HgziNode.jsに、順調に、その領域を侵食されてるNE☆
0923デフォルトの名無しさん
2014/08/25(月) 20:06:31.94ID:JkJXREGtpatchで使えないpatchって何だよ。
0924デフォルトの名無しさん
2014/08/25(月) 20:22:49.14ID:1k2cVze6誰がmargeにpatch使うって書いてんの?
0925デフォルトの名無しさん
2014/08/25(月) 20:32:13.18ID:gLwPLUfr普通にマージの話してたじゃん
見苦しいぞ
で、何にパッチ使ってるの?
0926デフォルトの名無しさん
2014/08/25(月) 20:35:46.86ID:1k2cVze6>>879
0927デフォルトの名無しさん
2014/08/25(月) 20:40:41.36ID:uDmHN95M0928デフォルトの名無しさん
2014/08/25(月) 20:41:16.21ID:gLwPLUfrpull→単体テストでエラー→reset
という話にしか見えないけど?
0929デフォルトの名無しさん
2014/08/25(月) 20:45:32.91ID:gLwPLUfrまあでもエラーでマージを取り消す話だろ879は
0930デフォルトの名無しさん
2014/08/25(月) 20:46:53.43ID:1k2cVze6パッチって書いてあるからパッチなんだろ知らんがな
0931デフォルトの名無しさん
2014/08/25(月) 20:51:03.42ID:gLwPLUfr知らないもの引用してどうすんだよ
それじゃ925の質問に答えられてないだろ
0932デフォルトの名無しさん
2014/08/25(月) 21:03:40.92ID:1k2cVze6パッチをどう使うかと聞かれたら>>879としか言いようが無いだろう
なんで>>879を避けるの?
あっ…(察し
0933デフォルトの名無しさん
2014/08/25(月) 21:10:21.02ID:1k2cVze6>>879を見て>>928だと判るのは
まぁご本人様ぐらいだよな。
0934デフォルトの名無しさん
2014/08/25(月) 21:11:14.97ID:gLwPLUfr879を避けるとは何?
で、パッチの使い道に答えられない理由は?
0935デフォルトの名無しさん
2014/08/25(月) 21:16:51.81ID:gLwPLUfr順番にリンクを遡っただけなんだけど
具体的には>>879>>875>>872>>869
いや、これマージの話だろ?
0936デフォルトの名無しさん
2014/08/25(月) 21:18:37.69ID:1k2cVze6またまた〜
ご自分がよくご存知のくせに〜
お前以外知ら訳ねぇよw
0937デフォルトの名無しさん
2014/08/25(月) 21:24:13.88ID:1k2cVze6ふらりと来てそんなにレス追うやつなんて居ないよね〜♪
しかもそんなかでパッチなんて言ってる奴は>>879しか居ないっていう。
自演お疲れ様でした♪
0938デフォルトの名無しさん
2014/08/25(月) 21:29:14.55ID:gLwPLUfr0939デフォルトの名無しさん
2014/08/25(月) 21:31:22.16ID:gLwPLUfr都合が悪そうってのは分かったよ
理由までは分からんが
0940デフォルトの名無しさん
2014/08/25(月) 21:34:42.79ID:1k2cVze6パッチ単位で排除(リジェクト)と受領(アクセプト)を判断するって自分で書いてんじゃんかよ〜
読んでないの?
0941デフォルトの名無しさん
2014/08/25(月) 21:39:48.89ID:rQXb++0Pねえねえ>>879以外のどのレスにマージとパッチを紐付けるレスがあったの?
0942デフォルトの名無しさん
2014/08/25(月) 21:48:36.49ID:gLwPLUfrマージ以外のパッチの用途を答えられたら教えてあげる
だって、他に用途が無かったら紐付けるまでもないだろ?
0943デフォルトの名無しさん
2014/08/25(月) 21:56:08.54ID:rQXb++0Pパッチをマージに使う事がまず無くね。
マージ前とマージ結果の差分としてパッチを作って管理者に送りつける使い方が普通でしょ。
Git にパッ チを送って 取り込
ま れた話
http://tech.nitoyon.com/ja/blog/2013/07/23/git-patch/
0944デフォルトの名無しさん
2014/08/25(月) 22:09:15.16ID:v4AsQ7GP0945デフォルトの名無しさん
2014/08/26(火) 01:01:56.24ID:/vAe4msZ0946デフォルトの名無しさん
2014/08/26(火) 07:03:18.15ID:AppgNI2Wまだ居たのかよ、しつこ。
gitの公式でさえgit format-patchで作ったpatchをpatchって言ってんだから、
んなこと思う奴はお前だけだよ。
0947デフォルトの名無しさん
2014/08/26(火) 07:37:40.71ID:KiLq5bZF実際に使った事無いと分からんわな
0948デフォルトの名無しさん
2014/08/26(火) 07:51:47.26ID:KiLq5bZFcommitは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ここまで酷いとは
時代遅れのゴミ言語に粘着し続けてるだけはあるな
0950デフォルトの名無しさん
2014/08/26(火) 12:01:29.82ID:/vAe4msZこのスレには初めて書き込んだ別人なんだが…
最近書かれたドキュメントだと確かにコミットって言葉を使ってるほうが多いけど、パッチって言葉を使ってるページもたくさんあるよ。
0951デフォルトの名無しさん
2014/08/26(火) 13:01:58.93ID:WAEsI18t深読みしないと分からないことが一般的な表現なの?
斜め読みでもはっきり書いてる話が一般的でしょ。
そんなもん最初に気づいて当たり前とか言われてもなぁ。
0952デフォルトの名無しさん
2014/08/26(火) 13:21:51.51ID:pPhOHn8wgitに無知だと指摘されると発狂しちゃうんだね
0953デフォルトの名無しさん
2014/08/26(火) 13:43:08.35ID:WAEsI18tその意味合いでパッチをリジェクトするとはどういう事?
ちなみにそのマニュアルにはプロジェクトに投稿するためのパッチの作り方が書いてあるけど。
しかも最終的なパッチの作り方が
git format-patch
パッチファイルを受け取って却下するなら普通の運用なんだけどねぇ。
0954デフォルトの名無しさん
2014/08/26(火) 14:28:24.32ID:/vAe4msZ最初に気づいても当たり前ってんじゃなくて、Gitを批判するなら使ってからにしましょうってことでしょ、使ってないのに知ったかぶりで批判するから叩かれるわけで
>>953
メール形式のパッチでも別ブランチからのマージ(fast-forward含む)でもいいけど、
他人が別ブランチ、またはフォークした別リポジトリで作ったコミットを自分の作業コピー(とか中央リポジトリ)に含めてテストしたら問題が発生したとする。
そしたらそのコミットはダメなコミットなので作業コピー(とか中央リポジトリ)を他人の作ったコミットの含まれていない一つ前の状態に戻すことだと思うけど。
それが>>928で言うpull→テスト→resetだよね。
てか、Gitはマニュアル読んだ程度の知識しかないならその前提で喋ってくれ
0955デフォルトの名無しさん
2014/08/26(火) 15:28:14.40ID:ETIF9fIi0956デフォルトの名無しさん
2014/08/26(火) 17:17:36.91ID:NSwC5k+Z0957デフォルトの名無しさん
2014/08/26(火) 18:33:19.24ID:SmpAsqGp0958デフォルトの名無しさん
2014/08/26(火) 19:34:46.10ID:/MMS26Q+2chの書き込みだけ見て感情的に非難するより、
実際にGitとか落としてみて批判した方がいい。
0959デフォルトの名無しさん
2014/08/26(火) 19:50:52.86ID:T/aMI0rI邦訳があるんだから素直に邦訳貼ればいいのに
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/user-manual.html
0960デフォルトの名無しさん
2014/08/26(火) 19:58:08.67ID:CD7704Rh非難じゃないんだから批判ぐらい良いだろうにって
ツッコミは置いといてどこでGitが非難されてんの?非難されてんのは、gitでググったりマニュアルよんだら真っ先に
git diffやgit format-patchが出てくるのにパッチと言ったらcommitだなんて言う
>>945みたいな輩だよ。gitのせいにすんなよ。
0961デフォルトの名無しさん
2014/08/26(火) 20:03:26.84ID:/MMS26Q+批判してたって認めちゃうのかよ
凄い開き直りだな
0962デフォルトの名無しさん
2014/08/26(火) 20:10:18.28ID:CD7704Rhてかマニュアルの用語とも違う用語を赤の他人が理解できて当たり前なの?
知ってる?そう言うのはオレオレ用語って言うんだよ。
コミュ障の人がよく使うヤツ。
0963デフォルトの名無しさん
2014/08/26(火) 20:16:40.27ID:/MMS26Q+gitを使ったことが無いと、どのコマンドが重要か分からないから
目に留まらなかったんだろうけど
rebaseは超重要だから
0964デフォルトの名無しさん
2014/08/26(火) 20:23:23.58ID:CD7704Rh無理せず日本語のマニュアル読んだら?
0965デフォルトの名無しさん
2014/08/26(火) 20:39:24.77ID:C3/NF/wt他人が別ブランチ、またはフォークした別リポジトリで作ったコミットを自分の作業コピー(とか中央リポジトリ)に含めてテストしたら問題が発生したとする。
そしたらそのコミットはダメなコミットなので作業コピー(とか中央リポジトリ)を他人の作ったコミットの含まれていない一つ前の状態に戻すことだと思うけど。
ありえねー。統合テスト前にコミットとか非常識だわ。
普通はコミッター複数いるがこんな運用したら無茶苦茶になるわ。
0966デフォルトの名無しさん
2014/08/26(火) 20:50:29.67ID:C3/NF/wt・自分の作業コピーに含めてテスト
→ 結合テスト用に用意した作業コピーに他人のソースを上書きするまでは解るが
ワザワザコミットする意味がない。
・中央リポジトリーに含めてテスト
→ 論外。テストしてない物を中央に直接入れるな。
中央リポジトリーを使う他のメンバーに迷惑。
0967デフォルトの名無しさん
2014/08/26(火) 20:58:52.68ID:KiLq5bZFだから、mergeとcommitが別操作ってことも分かってないんだろうね
こりゃ議論するの大変だ
それに、中央レポジトリであってもmasterとは限らないのに、なぜかmasterと決め付けてるっぽい
ていうか、リポジトリとブランチの違いも分かってないのか
こりゃ重症だ
0968デフォルトの名無しさん
2014/08/26(火) 21:27:22.96ID:Kd+VnqDuこれは釈明無しでスルーしちゃダメなやつですよ
0969デフォルトの名無しさん
2014/08/26(火) 21:27:24.31ID:C3/NF/wtマージだろうが、コミットだろうがテストしてなきゃマズイのは同じだろうが。
マージでも論外。
それから、なんでテストより先にマージやコミットするか
その意義を教えてくれ。
0970デフォルトの名無しさん
2014/08/26(火) 21:29:46.06ID:NSwC5k+Z0971デフォルトの名無しさん
2014/08/26(火) 21:30:55.49ID:NSwC5k+Z0972デフォルトの名無しさん
2014/08/26(火) 21:42:24.65ID:C3/NF/wtごめんごめん。マージ後にテストすんのは普通だよな。
>>969のマージってのはブランチを統合するgit mergeの事。
当然マージ後もテストするだろうが、
未テストのブランチをgit mergeするなんてあり得ない。
マージで>>954の事態に陥るとしたら未テストの
ブランチをgit mergeしたぐらいしか考えられないだろ。
0973デフォルトの名無しさん
2014/08/26(火) 21:47:05.86ID:C3/NF/wt?マージで>>954の事態に陥るとしたら
○でも、マージで>>954の事態に陥るとしたら
でも が抜けてた。訂正。
0974デフォルトの名無しさん
2014/08/26(火) 21:56:13.23ID:Kd+VnqDu他人の環境でエラーが出ることはあり得ない
と言いたいんだよね
0975デフォルトの名無しさん
2014/08/26(火) 22:32:29.86ID:C3/NF/wt他人の環境ではエラーが起きなかったブランチを
自分のブランチにマージしたらエラーが起きたって話か。
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業務上じゃ、マージする環境で一旦動作確認するのが当たり前。
大体それでマトモに運用できるなら、
gitの連中もパッチで要求したりしねーよ。
それとgit pullはgit fetchの間違い。スマンな。
0978デフォルトの名無しさん
2014/08/26(火) 23:15:13.54ID:C3/NF/wtgitは中央リポジトリーが要らないシステムでリポジトリーの共有は
非推奨だろ。
基本的は人の変更を個々人が取り込み、
個々人はリポジトリーを公開する(あるいはGitHub)だけで、
他人のリポジトリーは変更しない。
gitの連中がパッチでしかバグフィックスを受け取らないのもそれが理由だろ。
0979デフォルトの名無しさん
2014/08/26(火) 23:16:50.76ID:/vAe4msZ0980デフォルトの名無しさん
2014/08/26(火) 23:30:27.60ID:NSwC5k+Z0981デフォルトの名無しさん
2014/08/26(火) 23:30:31.62ID:C3/NF/wtねえねえ中央リポジトリーって何?
masterじゃ無いんだよね。何を指してるの?
0982デフォルトの名無しさん
2014/08/26(火) 23:39:37.61ID:/vAe4msZそれが分からないってことはGitの実践については全く理解してませんっていうことを認めてね
端的に言うと>>978は間違い
多くのケースでは,GitHubなりなんなりの誰かのリポジトリを中央リポジトリとして、そこと自分のローカルリポジトリを同期しながら作業する
masterっていうのはリポジトリじゃなくてブランチの話だからまた別
このへんの話はGit bookに書いてあるんで知りたかったら読んで欲しい。よくまとまってるので。
それとも炎上学習法したいだけなの?
0983デフォルトの名無しさん
2014/08/27(水) 00:00:28.30ID:K9igsSCkその通りだと公開してるリポジトリー(中央リポジトリー)に直接テストしてないコードぶち込むんでしょ。
余計に>>954がマヌケな発言になるね。
0984デフォルトの名無しさん
2014/08/27(水) 00:06:41.15ID:tAYeXjtD全く伝わってなくて>>976が可哀想すぎるw
0985デフォルトの名無しさん
2014/08/27(水) 00:07:04.46ID:Gkyyi0oW中央リポジトリだったとしても、開発用のブランチを切るし、一応ローカルで出来るひと通りのテストはしてから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
ホーシンツクツクwwwwwwwwwww ホーシンツクツクwwwwwwwwwww
ホーシンツクツクwwwwwwwwwww
似にニィィィィィィィィィィィィィィィィィィィィィップwwwwwwwwwwwwwwwwwwwww
0987デフォルトの名無しさん
2014/08/27(水) 00:18:52.09ID:2yseGAwQhttp://peace.2ch.net/test/read.cgi/tech/1409066255/
0988デフォルトの名無しさん
2014/08/27(水) 00:20:12.18ID:K9igsSCk何を馬鹿にされてるか解ってる?
中央リポジトリーでやる必要無んだよそれ。
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:K9igsSCkhttp://git-scm.com/figures/18333fig0502-tn.png
0990デフォルトの名無しさん
2014/08/27(水) 00:26:44.92ID:2yseGAwQ0991デフォルトの名無しさん
2014/08/27(水) 00:33:26.24ID:Gkyyi0oWそれはプロジェクトの形態によるのよ。
全然知らない人との開発だったらその図のとおり、Githubとかだったらforkしてcommitしたらpull request送るけど、
意思疎通がよく出来ている小規模な開発チームだったらわざわざ公開リポジトリを沢山作ったりしないで中央リポジトリ1本でやるのが多いと思うよ。
中央リポジトリにブランチを切れば済む話だからね。
開発用のブランチが追加されるということをその中央リポジトリを使っている人みんながわかっていれば何の問題にもならないし、わざわざforkする必要がない。
「中央リポジトリでやる必要がない」のもケースによっては事実だし、「中央リポジトリ以外の公開リポジトリを作ってやる必要がない」のもケースによっては事実。
てかあんたの貼ったURLにも小規模な場合は中央リポジトリでもいけるって書いてあるじゃん。決して非推奨とかそういう話ではないよ。
ていうかさ、「馬鹿にしている」つもりらしいけど、あんたGitでのチーム開発経験はないみたいなのに随分と上から目線なんだなあ…
引っ込みつかなくなっちゃったんだろうね。本気で自分の方がGitをわかってると思うなら病気だと思うがw
0992デフォルトの名無しさん
2014/08/27(水) 00:46:34.73ID:K9igsSCk完璧では無かろうが複数人に公開前に最低限テストすんのは当たり前。
環境が原因のバグは仕方ないにしてもどんな環境でも
起こりうるバグは可能な限り取り去るべきだ。
0993デフォルトの名無しさん
2014/08/27(水) 00:56:29.05ID:K9igsSCk中央集権型だろうが分散型だろうがテストなしでpushできるのは道楽だけだよ。
3人の小規模チームですらマージには神経尖らしてんのに、
仕事や
何か運営してる様な人は、まずテスト抜きで公開用にマージなんざ出来んよ。
0994デフォルトの名無しさん
2014/08/27(水) 01:08:29.82ID:2yseGAwQという文章も、既知外が読むとテストせずにpushするという解釈になるらしい
0995デフォルトの名無しさん
2014/08/27(水) 01:10:07.03ID:Gkyyi0oWあのさ、mergeとpushは独立した概念なんだけどそこは理解してる?
0996デフォルトの名無しさん
2014/08/27(水) 01:23:01.39ID:K9igsSCkそのやり方は中央リポジトリーとは言ってるけど作業コピー使った話で、
中央リポジトリー版の説明になって無い。
>>995
中央集権型ならmergeしようが無いからpushするしか無いだろ。
中央集権型の意味わかってんの?
0997デフォルトの名無しさん
2014/08/27(水) 01:27:32.30ID:Gkyyi0oWGitで言うところの中央集権型の意味わかってんの?w
0998デフォルトの名無しさん
2014/08/27(水) 01:28:22.28ID:K9igsSCkコレが中央リポジトリー版なら作業コピー版はどうなんの?
0999デフォルトの名無しさん
2014/08/27(水) 01:29:28.17ID:K9igsSCkhttp://git-scm.com/figures/18333fig0501-tn.png
1000デフォルトの名無しさん
2014/08/27(水) 01:31:11.39ID:2yseGAwQ10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。