【Perl,PHP】LLバトルロワイヤル19【Ruby,Python】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
最強のLL=軽量プログラム言語は、どれよ?

エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・
さあ、死ぬまで語りやがれ!!!

■LLとは?
軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、
コードの作成や修正が容易と見なされるプログラミング言語のことを指す。

ここでいう「軽さ」はプログラマの負担の軽重を指し、
実行速度に優れているという意味ではない。

現在の水準では
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがLLと呼ばれることが多い。(Wikipediaより)

前スレ
【Perl,PHP】LLバトルロワイヤル18【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1310082014/
2デフォルトの名無しさん:2011/11/04(金) 20:39:37.79
2get
3デフォルトの名無しさん:2011/11/04(金) 22:43:59.10
>>1
>エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・

Tclも仲間に入れてやってください。
機能が少ないと思っている人が多いようですが、
汎用言語として満たすべき機能は一通りそろってます。
高階関数や無名関数だって使えます。
残念ながら、クロージャーは素のTclにはありませんが、
Jimという処理系にはちゃんとあります。
覚えることも少ないので学習コストも低く、生産性も高いです。
ある問題を解決しようとして、それがPerlやJavaやCで可能な場合、
そのほとんどはTclでも可能だと考えていただいて差し支えありません。
クセが強くてなじみにくいという評価をされることが多いTclですが、
本当は結構イケてる言語です。

といいつつ最近はPythonに夢中ですけどね。
4デフォルトの名無しさん:2011/11/05(土) 03:28:53.22
haskellはLLに入りますか?
5デフォルトの名無しさん:2011/11/05(土) 14:39:32.51
LLとか間違った用語使ってるのは日本のうんこプログラマーだけな
6デフォルトの名無しさん:2011/11/05(土) 15:13:14.01
LLという呼び方にも賛否はあると思うけど、
みんなが自分の好きな言語について語ればいいと思うよ。

でも、LLVMはここで言うLLとは違うからな。
7デフォルトの名無しさん:2011/11/05(土) 16:10:49.53
アメリカは日本以上にLLが多い
8デフォルトの名無しさん:2011/11/05(土) 16:30:22.45
アメリカのMは日本ではM
いわゆるアメリカンサイズ
9デフォルトの名無しさん:2011/11/05(土) 17:05:22.76
世界ではLLは動作やリソースの使用が軽量な言語という意味な

一部のバカがスクリプトのことを手軽・簡単の意味でLLとか勝手に間違ってるだけ
ほんと恥ずかしいわ
10デフォルトの名無しさん:2011/11/05(土) 17:49:24.50
一部のバカの名前あげてみろよ
11デフォルトの名無しさん:2011/11/05(土) 18:05:45.91
5周ぐらいしてるな。
12デフォルトの名無しさん:2011/11/05(土) 18:16:37.89
京都大学霊長類研究所では、未知の感染症が蔓延し、
感染した研究員はどのスレッドにも同じコピペを
繰り返すといった症状が報告されています。

研究員によると思われる書き込みがあっても
近づかないようにしてください。

                  京都大学
13デフォルトの名無しさん:2011/11/05(土) 18:18:36.32
動作やリソースの使用が軽量ならC言語もLL?
14デフォルトの名無しさん:2011/11/05(土) 18:24:16.71
>>13
むしろ、海外だとC言語みたいなもののことだと思われるらしいな
15デフォルトの名無しさん:2011/11/06(日) 10:00:19.13
>>6
亀だけど、ありがとう
じゃあhaskellも参入と言う事で逝きます
16デフォルトの名無しさん:2011/11/06(日) 13:30:30.35
>>14
そうなんだむしろ逆なのかよw
もう言わないようにしとくわ
17デフォルトの名無しさん:2011/11/06(日) 13:48:47.56
scripting languageと言っとけばOK
日本でも通じる
18デフォルトの名無しさん:2011/11/06(日) 13:56:16.95
スクリプトでいいだろ、バカじゃねw
19デフォルトの名無しさん:2011/11/06(日) 14:01:10.97
日本語でいいならLLでいい
和製英語なんだから

英語圏の人間とやりとりもしないのに
海外で……とか言ってるほうが滑稽だわ
20デフォルトの名無しさん:2011/11/06(日) 15:34:42.55
和製英語・・英語圏・・ww
21デフォルトの名無しさん:2011/11/06(日) 15:45:34.91
I can't make sense of why you hate to call
scripting languages as "LL" in Japan.
We use words in order to communicate,
but you never communicate with an English speaker, I guess.
22デフォルトの名無しさん:2011/11/06(日) 17:16:56.92
次のスレタイは「お手軽スクリプトでエンジョイプログラミング」だな
23デフォルトの名無しさん:2011/11/06(日) 17:30:30.59
「お手軽スクリプトでエンジョイバトルロワイヤル」が良いな
24デフォルトの名無しさん:2011/11/06(日) 17:55:43.45
スクリプトって言うと恥ずかしいんじゃない?

スクリプトキディって言葉とかぶるから

バカかよ

見下されるのがいやなんだろ C使いとかに スクリプト(笑)

みたいに


だからLLとか造語つくってんだろうな かっこいい風に
25デフォルトの名無しさん:2011/11/06(日) 18:18:39.29
そもそもLLって単語を考え出したのって誰だろ
26デフォルトの名無しさん:2011/11/06(日) 21:58:28.89
スクリプトとインタープリタを混同しているやつも多いだろう。
前者は言語の特性、後者は処理系の特性。
だからどうしたっていう話だけど。

でも、記述が容易な言語がどうして軽量言語になってしまうのかは意味が分からないよね。
スクリプトでいいじゃん。
27デフォルトの名無しさん:2011/11/06(日) 22:16:56.95
LLなんて言葉使うな
安易言語でいいじゃん
28デフォルトの名無しさん:2011/11/07(月) 11:43:42.83
いや意味わかるだろバカかよ

記述が容易=書くのが少ない

だろ

だから軽量だろ

あほかよ

風変わりに物事を捉えてかっこつけてるジャップ乙
29デフォルトの名無しさん:2011/11/07(月) 11:52:55.32
>>28
低脳乙w
30デフォルトの名無しさん:2011/11/08(火) 03:48:24.21
perlは重量級
31デフォルトの名無しさん:2011/11/11(金) 20:18:20.14
いまだにPHPを使い続けている人いるんだろうか?
32デフォルトの名無しさん:2011/11/11(金) 20:55:27.14
>>31 は何使ってんの?
33デフォルトの名無しさん:2011/11/11(金) 21:24:26.97
そりゃあWordpressではお世話になってます
34デフォルトの名無しさん:2011/11/11(金) 23:30:44.49
>>32
Googleも認めた本物のスクリプト言語、Pythonがあるにもかかわらず
その他の情弱言語を使ってる奴らって、ほんとにプログラマなのかな
プログラマ気取りの素人が、冷やかしでム板に書きこんでるだけなのだろうか
35デフォルトの名無しさん:2011/11/11(金) 23:49:37.12
あれ?GoogleはJavaも認めてるんだけど?w
36デフォルトの名無しさん:2011/11/12(土) 01:02:48.03
JavaはLLじゃないだろアホ
37デフォルトの名無しさん:2011/11/12(土) 07:35:17.87
>>34
ひとつの言語しか使えない奴って、ほんとにプログラマなのかな
38デフォルトの名無しさん:2011/11/12(土) 18:36:13.67
Javascript ってスレタイに入ってないけど LL ?
39デフォルトの名無しさん:2011/11/12(土) 20:41:26.73
含めちゃってもいいように思う
IO関係の標準が無さ過ぎだけど、基本的な要件は揃ってるし
40デフォルトの名無しさん:2011/11/12(土) 22:43:34.79
[言語別]人の印象
C・・・キレたらうるさそうな親父ばかり。
Java・・・体育会系でもないのに体育会系のオーラを出している。わからないが、何か自信がありそう。
PHP・・・気の弱そうな奴が多い。何にも自信がなさそう。
Ruby・・・頭ハゲ散らかしてたり、顔が日焼けでボロボロの障害者が多い傾向。
Python・・・使ってる奴しらねぇ。
41デフォルトの名無しさん:2011/11/12(土) 23:41:45.65
いまどきPerl使い続けてるやつは情弱
42デフォルトの名無しさん:2011/11/12(土) 23:53:51.20
pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ
端末からのテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに
PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?
けどまぁ、情弱な文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか
43デフォルトの名無しさん:2011/11/13(日) 00:04:23.30
PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ
Pythonに関しては、ZopeさえコケていなければWebサーバ用LLとして大成功していたはずなのに、
Railsなんかが登場したおかげで、すっかり影が薄くなってしまいますた....
44デフォルトの名無しさん:2011/11/13(日) 00:49:55.28
zopeってコケてたんだ
ってか、railsにインスパイアされたフレームワークって今じゃ幾らでもあるよね
djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、
pythonやPHPの方がユーザー数は圧倒的に多いと思うんだけど
本家のrailsって、他を遥かに越えるほど良いものなんだっけ?
45デフォルトの名無しさん:2011/11/13(日) 01:41:24.25
>>42
数値計算や端末からのテキスト処理なんてWeb系じゃ大して使わないからなあ…
46デフォルトの名無しさん:2011/11/13(日) 04:28:59.82
馬鹿が何使おうと知ったこっちゃない
そいつらの面倒一生見る訳じゃないし
47デフォルトの名無しさん:2011/11/13(日) 08:23:29.61
PHPってクッキーやセッション処理等のWEB機能が言語に組み込まれていて、何も考えずに使えるからとか?
PHP使ったことないから想像だけど。
48デフォルトの名無しさん:2011/11/13(日) 08:30:25.68
>>44
Zopeが登場した当時、「RDB+PHPはもう古い、これからはOODB+ZopeがWebの中軸になる!」と
さかんに宣伝され、雑誌でもZope特集が組まれていた
少なくとも自分はZopeからPythonという言語を知ったし、その時点でRubyは知らなかった
そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう
今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

djangoとCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう
しかしRailsはRailsでコミュニティの活動が活発だし、その進化は異常に早い
Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoやCakePHPから
何かのイノベーションが提示されでもされない限り、後発のdjangoやCakePHPがRailsに追いつくのは無理
Railsは決して技術的に完璧なWebフレームワークではないんだけどね....(たとえばSeaSideのような.... )

だからこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている
49デフォルトの名無しさん:2011/11/13(日) 10:23:57.19
実際のところ、当時は低価格のレン鯖で動く言語っていったらPerlのCGIかPHPくらいしかサポートされてなかったからな。
そこで、本来のPHPの役割を超えて大規模なシステムを組もうとするやつが現れて、
低品質なPHPフレームワークが乱立することになる。

でも今はどうだろう?
VPSのように自分でいじれるサーバーを簡単に調達できるようになったし、
HerokuのようなPaaSもたくさん出てきている。
しかも今までのCGIとは違って動作も早いんだよ。
もはや言語仕様が糞なPHPを好き好んで使う理由なんて全くなくなったんだよ。
元々仕方なくPHPを使ってた人も多いだろうけど。
50デフォルトの名無しさん:2011/11/13(日) 10:48:07.96
低価格なVPSは普及してきているけど、レン鯖と比べると運用スキルが要求されるんだよね
自分はプログラミングはできても、鯖運用には自信が無いや....
国内にHeirokuみたいなサービスってあるのかな?
51デフォルトの名無しさん:2011/11/13(日) 12:55:40.83
CakePHPはうんこ
遅い、設計が古い、動作がおかしいの3重苦
日本では流行ってないけど海外だとYiiが流行ってきてる
52デフォルトの名無しさん:2011/11/13(日) 13:23:09.27
>>51
なんかまた馬鹿が喧嘩ふっかけにきたな。
にやにやして次の発言を待つかw
53デフォルトの名無しさん:2011/11/13(日) 14:44:48.55
求人がPHPばかりだから、PHPやるしかないだろ。
ここの奴がPythoPythonいうから、Pythonやろうと思う。
LinuxにはPython2がデフォルトで入ってるみたいだが、
3を入れたほうがいいよな?
あとmod_wsgiってのを入れるのか。
54デフォルトの名無しさん:2011/11/13(日) 15:16:30.04
レン鯖で運営するって、簡単な静的ページだけのサイトだけじゃないの?
昔から専鯖でもPHP使ってる所が多いと思うが。
55デフォルトの名無しさん:2011/11/13(日) 17:31:12.14
>>52
CakePHP使ってんの?
可哀そうにw
56デフォルトの名無しさん:2011/11/13(日) 18:13:55.60
VPSもレン鯖だけど
とりあえずVPSとの対比としてのレン鯖があるとして
レン鯖で済むようなwebサイトならPHPで充分かなと思う
57デフォルトの名無しさん:2011/11/13(日) 19:34:04.95
でもやっぱりいつもの使い慣れたLL(Python/Ruby)で
Webサービスを書きたいってのがある

ただ、まあ重いフレームワークを使わずに、
直にDBI+SQLで操作するCGIでも
何とかなってしまう(何とかしてしまう)という話もある
58デフォルトの名無しさん:2011/11/13(日) 20:06:24.30
PHP で GUI 書いてる阿呆もいるしね
59デフォルトの名無しさん:2011/11/13(日) 20:12:30.74
>>58
阿呆ってこれのこと
http://hirata-create.lar.jp/
60デフォルトの名無しさん:2011/11/13(日) 21:09:23.06
>>59
オオッ、スゲーヨ、コレ... 正直驚いた、ここまでするかw
61デフォルトの名無しさん:2011/11/13(日) 22:32:14.07
gtkのことかと思ってた
日本にも物好きがいるんだな。それもFLOSSとは関係なさそうなのが
62デフォルトの名無しさん:2011/11/13(日) 22:33:52.90
ってか、HPよく見りゃwinbinderで作られてるって書いてんじゃんw
63デフォルトの名無しさん:2011/11/13(日) 23:33:02.40
どうしてもPHPでしか書けないカタワも居るんだな
64デフォルトの名無しさん:2011/11/14(月) 00:31:37.41
PHPって、javaやc#ほど面倒くないし、c++と違ってガベコレも付いてるし、
ウェブ系から入ってネイティブアプリ作りたい人には割と良い言語じゃないか?
65デフォルトの名無しさん:2011/11/14(月) 01:46:34.52
奇形のPHPよりC#のが100倍マシ
つかネイティブアプリの意味分かって言ってるのか?
66デフォルトの名無しさん:2011/11/14(月) 05:20:04.59
ウェブ系から入ってネイティブアプリ作りたい人にはPythonを薦める
67デフォルトの名無しさん:2011/11/14(月) 07:23:18.81
ネイティヴアプリは.exeとかの実行ファイル形式のアプリ
そう言うのは、デスクトップアプリと呼べ
68デフォルトの名無しさん:2011/11/14(月) 10:59:18.30
たいていのスクリプト言語は〜.exeにパックして
直接実行できたりするするので
実行ファイル形式のアプリがネイティブとは限らない

1.純粋なマシンコード
2.C#(Javaも?)みたいなJITコンパイル型VMのバイトコード +α
3.スクリプト言語をパックした系の、インタプリタ+スクリプト(orバイトコード)

プログラミングしない人には区別つかんと思う
69デフォルトの名無しさん:2011/11/14(月) 11:20:21.35
windowsだと*.vbsとかもネイティブ扱い?
70デフォルトの名無しさん:2011/11/14(月) 12:00:51.90
ネイティブコードではないけど、Windowsならダブルクリックで起動できればネイティブアプリケーションと呼んでいいような
71デフォルトの名無しさん:2011/11/14(月) 13:22:20.48
>>69
javaのjarファイルも、もっと言えばスクリプトの.rbや.pyも、処理系に紐付けされてればダブルクリックで起動出来るから、ネイティヴアプリと分けてデスクトップアプリと呼ぶんだろ
72デフォルトの名無しさん:2011/11/14(月) 13:27:07.25
馬鹿には区別つかんと思う
73デフォルトの名無しさん:2011/11/15(火) 17:32:46.07
アメリカの言語ユーザー数は
Python>>>>>>>>Ruby

求人数は
Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=
どういうことなの?
74デフォルトの名無しさん:2011/11/15(火) 17:48:15.59
RubyはRails以外に使い道がないから
75デフォルトの名無しさん:2011/11/15(火) 17:54:35.50
海外ではRubyは昨今のRailsバブルのお陰で
もはやWeb系スタートアップの共通語になってるらしいからね
求人数が多いのはそのためだと思うよ
76デフォルトの名無しさん:2011/11/15(火) 18:03:23.05
なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・
Pythonのほうが使いやすいと思うのだがフレームワークはRailsが優位なんだろうか
77デフォルトの名無しさん:2011/11/15(火) 18:23:14.33
Djangoは周辺ライブラリが微妙だし本体も鈍くさい感じがする。
でも、FlaskはSinatraより好きだから、Pythonが嫌いってわけではない。むしろ好き。
ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。
78デフォルトの名無しさん:2011/11/15(火) 18:38:46.28
>>77
同感だ
同じように思っている人が他にもいて安心した
79デフォルトの名無しさん:2011/11/15(火) 18:54:37.13
PHPやJava、Scalaには
Railsみたいなフレームワークあるのに
Pythonにはいいのないんだよな
80デフォルトの名無しさん:2011/11/15(火) 21:19:09.89
PHPはフレームワークが乱立しすぎているから、RailsをPHPで実装してみようというやつが出てきた。
Scalaも注目されだしたのはつい最近のことだしな。
それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、
いつの間にかフェードアウト。

ただ、どうやってもRailsもどきがRailsを超えることはできないのは間違いない。
81デフォルトの名無しさん:2011/11/15(火) 21:21:09.05
> RailsもどきがRailsを超えることはできないのは間違いない。
それはありえないな。根拠が無いだろ?
82デフォルトの名無しさん:2011/11/15(火) 21:23:12.91
単にRubyとRailsが一括りにされてるから。
実際に利用されてる数は、ウェブではPHPに遥かに劣るし、システムツールならPerlPythonに遥かに劣る。
83デフォルトの名無しさん:2011/11/15(火) 21:25:38.55
パクリはオリジナルを超えられない(キリッ って定型句だけど、
これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから。
84デフォルトの名無しさん:2011/11/15(火) 21:30:04.39
D言語って超えたって?
85デフォルトの名無しさん:2011/11/15(火) 21:31:12.00
B言語って超えたって?
86デフォルトの名無しさん:2011/11/15(火) 21:53:33.76
でもRailsはRubyの黒魔術を使いまくりだからな
PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない
87デフォルトの名無しさん:2011/11/15(火) 22:04:48.99
Railsにはもううんざりだって
Scalaに移った人が言ってた
88デフォルトの名無しさん:2011/11/15(火) 22:31:53.56
expressって、まだまだバギー?ヒャッハーな感じ?
ここ最近って、M$もgoogleもjavascript押してねぇ?
89デフォルトの名無しさん:2011/11/15(火) 22:47:25.77
>>87
RailsにはうんざりだからZope/Djangoに移ったというのなら分かるけど、
そこでScalaに移ったと言うのだと、このスレでは説得力が皆無だな
ただ単にdisりたいだけちゃうんかと
90デフォルトの名無しさん:2011/11/15(火) 22:50:07.81
>>73
精神的なものじゃね?スタートアップなんて根無し草の集まりにとって、
googleが囲った言語にcoolさを見出せないんだろ
91デフォルトの名無しさん:2011/11/15(火) 22:52:42.98
そういう理由じゃなくてRailsのほうが単純に情報もプラグインも多いからでしょ
92デフォルトの名無しさん:2011/11/15(火) 22:58:37.21
>>89
David Pollakでしょ
93デフォルトの名無しさん:2011/11/15(火) 23:07:07.67
その情報とプラグインって、ほとんど全部を37signalsが書いてるわけ?
どういった理由で、djangoの情報とプラグインが増えないのよ?
linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
わざわざ不合理で不完全な言語を使うなんて
社会からハミ出た奴らの精神的な作用によるものじゃないの?
94デフォルトの名無しさん:2011/11/15(火) 23:15:11.93
>>83
未来について語る事は子供にでもできるからね

というか、世界中のPythonプログラマが Remeber Zope!! を合い言葉に
打倒RailsたるWebフレームワークを開発しているはずだけど、
いまだにRailsを超えるプロダクトが登場しないのはナゼ?
Railsも登場してから、かなりの年月が経過しているんだけどなぁ....
その間にもRailsはRails 3が登場して、REST/AJAXの強化等の進化が継続しているよ

>>91
それが先発品の優位さ、という事なんじゃないかと思う
95デフォルトの名無しさん:2011/11/15(火) 23:20:20.21
>>93
djangoの情報とプラグインが増えないという、
現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも
>linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
が真実であるのなら、今頃はdjangoの情報とプラグインが溢れかえっているはず
9689:2011/11/15(火) 23:41:17.10
>>92
それは知っているよ。自分も関数型言語を触るから。
ただし、いくら有名人の言葉とはいえ、
LLバトルスレでScalaを引き合いに出しても「説得力が皆無」ということ。
97デフォルトの名無しさん:2011/11/16(水) 00:02:02.86
Railsのどの部分がPHPでは簡潔にできないん?
98デフォルトの名無しさん:2011/11/16(水) 00:14:50.54
>>97
ちょっと違う。

RailsではなくRubyという言語の機能でメソッドのフックができる。
これはPHPでは実装できない。だからPHPではフレームワーク側で
メソッドのフックに近いことが出来るような仕組みを用意している。

RailsはRubyが持っている機能を使ってフレームワークが比較的シンプルになっている。
そのおかげでRailsの開発もスムーズに行った。
PHPのフレームワークはその部分が少し複雑になっている。

が、できないことはない。フレームワークと言語の仕事の範囲が代わるだけで
RailsとPHPフレームワークを比べれば、大きな差はない。
99デフォルトの名無しさん:2011/11/16(水) 00:17:06.66
>>89
サイトを立ち上げてから修正を繰り返していくところまではRailsのほうが簡単だけど、
RubyではScalaのようなJVM環境には実効速度の面で太刀打ち出来ないから、
システムが本格的に固まってきたら、RubyからScalaに移るんだろ。
Twitterなんかがまさにそうじゃないか。

>>97
まず文法が簡潔じゃない
100デフォルトの名無しさん:2011/11/16(水) 00:19:09.67
> Twitterなんかがまさにそうじゃないか

そんな話、Twitterぐらいしか聞かないじゃないかw
101デフォルトの名無しさん:2011/11/16(水) 00:21:45.93
>>95
yumもgdbの拡張も、gnome周りの拡張もpythonがデフォだ
4、5年ぐらい前はpythonはプリインストールされてんのに、
rubyはソースコードから入れないとダメな状況だったぞ
ウェブ開発だけrubyが優遇されてる意味が分からん(htmlに埋め込み辛いからか?)
セキュリティ周りのツールやルータはluaで書かなければならんし…。
ここいらでjsに妥協して統一されてしまわんかなと思う奴は少なくないはず
102デフォルトの名無しさん:2011/11/16(水) 00:28:06.10
>>99
文法のどの部分が簡潔じゃないん?
10389:2011/11/16(水) 00:46:36.39
>>99
だからそんな話は分かっているって。
でもその話は「Rubyから関数型言語(Scala)へ移行した理由」だろ?
同じ事を三度目の繰り返しになるけど、
その理由を「LLバトルスレ」で語っても「説得力が皆無」と言っているんだが....

RubyがXXXだからPython(あるいはPerl)へ移行しました、という話なら議論の価値はあるよ
104デフォルトの名無しさん:2011/11/16(水) 01:20:49.05
>>95
Python信者乙。
yumや、gdbとgnomeの拡張がpythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。
ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。
105デフォルトの名無しさん:2011/11/16(水) 05:42:06.00
>>79
今作ってる
気が向いたら公開するつもり
106デフォルトの名無しさん:2011/11/17(木) 09:28:13.01
TPP反対派とかわけわからん。
Tokuhirom Perl Player!! Go Go!
107デフォルトの名無しさん:2011/11/17(木) 10:28:14.50
>>106
いや、perlは滅んだ方がいい
108デフォルトの名無しさん:2011/11/17(木) 14:18:45.22
PowerShellみたいなのが出てこないかぎり、Perlの代替はないから困るよ。
無理やりアプリを書かないようにすればいいだけ。
109名無し:2011/11/17(木) 19:00:37.64
どれも洗脳言語だからまとまるはずない
110デフォルトの名無しさん:2011/11/17(木) 22:55:06.04
>>104
まぁ、Cで拡張する必要がない人にはgdbはいらないけどね
おまえみたいなのASPでも弄ってろ
111デフォルトの名無しさん:2011/11/17(木) 23:46:44.50
112デフォルトの名無しさん:2011/11/19(土) 07:20:45.44
>>109
なんでハッカー()ってツールを祭り上げたがるんだろうな
113デフォルトの名無しさん:2011/11/19(土) 10:32:47.08
http://scan.netsecurity.ne.jp/article/img/2011/11/13/27625/93.html
tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけど有名らしいね
動画ありませんか?
114デフォルトの名無しさん:2011/11/19(土) 10:53:09.78
>>113
宣伝乙
115デフォルトの名無しさん:2011/11/19(土) 15:19:12.06
e?
116デフォルトの名無しさん:2011/11/20(日) 00:21:31.81
とりあえず、javascriptでOSを書くような奴以外はgeekですらないと思うことにするよ
117デフォルトの名無しさん:2011/11/20(日) 09:32:34.44
情弱はjavascript(プログラミング)・・・
118デフォルトの名無しさん:2011/11/20(日) 09:54:54.50
githubに登録されているプロジェクトの2割がjsで、
これはruby,pythonを越えて一番に多いんだぞ
119デフォルトの名無しさん:2011/11/20(日) 11:15:19.68
ウイルス作ってたほうが楽しいだろ?情弱諸君
120デフォルトの名無しさん:2011/11/20(日) 11:18:54.56
君がウイルスを作っていたほうが楽しいと思っている人だってのはよく分かった。


そして他の人が同じだと思わないほうがいい。
121デフォルトの名無しさん:2011/11/20(日) 11:22:25.47
真面目ぶんなって低脳
122デフォルトの名無しさん:2011/11/20(日) 11:28:20.45
普通だと思いますが、あなたには真面目に見えたのですか?
真面目に見えるのなら、本当に真面目なのかもしれませんね。
自分ではよくわかりませねん。
123デフォルトの名無しさん:2011/11/20(日) 11:32:16.79
まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ

”人に喜ばれる” ”技術を追う楽しみ” ”大規模なシステムを組みたい” とかわめいてるバカは情弱かよ

脆弱性報告してんじゃねえよ 情弱かよ 報告することが美徳かよ 正義ぶってんじゃねえぞ

悪用しろよ 悪いはかっこいい  お前らはバカ
悪用できる勇気がないのか?低レベルだから 逮捕されそうだな君たちは
124デフォルトの名無しさん:2011/11/20(日) 11:33:40.47
つまり、逆に言えば、くだらなくないWEBサービス作ってるなら問題ないってことですね?
125デフォルトの名無しさん:2011/11/20(日) 16:04:07.39
>>118
http://alistersjp.files.wordpress.com/2011/04/image1.png

githubはRubyが最多
なぜかgithubはruby信者が多い
126デフォルトの名無しさん:2011/11/20(日) 16:05:50.16
>>125
なんかそれ「もうちょっとOtherをkwsk」と言いたくなるグラフだなw
127デフォルトの名無しさん:2011/11/20(日) 16:27:43.59
githubはrubyのgem扱えるから当然
128デフォルトの名無しさん:2011/11/20(日) 16:40:12.67
よくわからんのだが、サーバーサイドのjavascriptが無茶苦茶性能良いらしい
ScalaとかJavaよりいいのか?
129デフォルトの名無しさん:2011/11/20(日) 17:41:03.01
何が性能良いと言いたいの?C10k問題との相性?

アメーバピグライフが確かnode.jsで出来ていて
20万同時接続とかをAppサーバ20台、DBサーバ(mongodb)を108台で捌くらしいけど
ttp://www.slideshare.net/snamura/nodejs-9956558
130デフォルトの名無しさん:2011/11/20(日) 18:22:12.20
akiyan 秋田真宏 akiyan.comの秋田真宏 ペニー・オークションを絶賛で有名なあのakiyanこと秋田真宏
アルファブロガー兼詐欺師のakiyanこと秋田真宏 株)ロケットスタートの秋田真宏ことakiyan
広告主からも掲載者からも見放されて風前の灯KauliのCTO 最近は2ちゃんでの度重なる失策でナーヴァス・ブレイクダウンでakiyan.comも更新途絶
ことakiyanがご降臨と聞いて鳩ろだからすっとんできますたが、
それほどでもないカキコなので帰ります。
131デフォルトの名無しさん:2011/11/20(日) 18:37:17.72
>>129
ピーク時20万でAppサーバー20台って
1台あたり1万じゃん?

C10K問題(Client 10000問題)到達してないじゃん?w
132デフォルトの名無しさん:2011/11/20(日) 19:52:37.91
>>131
何を言いたいのかさっぱりわからん
133デフォルトの名無しさん:2011/11/20(日) 20:41:30.31
134デフォルトの名無しさん:2011/11/21(月) 15:29:01.88
私はssig33といういい教師がいる
いい教師である
いい教師
135デフォルトの名無しさん:2011/11/21(月) 15:29:27.53
反面教師の間違いだろ
136デフォルトの名無しさん:2011/11/21(月) 23:08:14.42
node.jsもてはやされてるけど、プロセス使わないって設計方針に沿わせれば、
ほかの言語でも同じことできるんじゃないのか?
137デフォルトの名無しさん:2011/11/21(月) 23:34:58.43
>>136
できなくはないけど、他の言語で同じ事をやると、
それその言語を使っている意味あるの?ってなってしまう。

node.jsはスレッド(プロセス)を使わないだけじゃなくて
ブロックするI/Oを使わないという特徴がある。
ファイル読み書きやデータベースアクセスなど一定時間処理かかってしまうものをnode.jsは非同期で行うようにした。
もし同期的なものを使うと、スレッドは一つしか無いためすべての処理が止まってしまう。


所でJavaScript標準でファイル読み書きやデータベースアクセスなどをする関数は何でしょう?

答えは、無い。この無いっていうのがnode.jsにぴったりな言語だった。
他の言語ではファイル読み書きなどの命令が標準で存在するがそれらはいずれも同期的なもの。
node.jsの用途では使えないから、別に作ってそれを使わないといけない。
node.js用のライブラリばかり使うのでその言語でやる必要性がない。
他の言語はその言語の資産、ブロックするI/Oが含まれているライブラリが、仇となってるんだよ。

ちなみにブラウザに搭載されたJavaScriptはスレッドがないから、既存のJavaScriptライブラリは自然とブロックしないものになってる。
だからnode.jsで既存のJavaScriptライブラリを資産として使うには問題ない。

ブロックしない命令だけによるライブラリを構築するには、ブロックするI/Oによって
作られた世界が存在しないJavaScriptが一番最適だったとそう俺は考えてる。
138デフォルトの名無しさん:2011/11/22(火) 00:11:09.78
詳しい解説トンクス。
node.jsが普及したら、非同期でノンブロッキングI/Oなpythonやrubyの実装が出たりするかな
139デフォルトの名無しさん:2011/11/22(火) 00:48:56.41
node.jsの作者がそんな感じの事言ってたな
ttp://www.nicovideo.jp/watch/1320669612
この動画の14分頃からと質問でなぜnodeを作る言語にJSを選んだか
について話してたと思う
140デフォルトの名無しさん:2011/11/22(火) 00:50:16.92
node.jsってまだ流行ってるの?
141デフォルトの名無しさん:2011/11/22(火) 00:56:46.17
まだというかこれからだろw
企業による運用実績とか出始めてきてるし
142デフォルトの名無しさん:2011/11/22(火) 01:10:08.29
物珍しさで一時期流行るけど
そのうち話題にならなくなるでしょ
143デフォルトの名無しさん:2011/11/22(火) 01:20:27.79
物珍しさのはやりだけで企業がサービス提供したり
大規模開発したりはせんだろw
144デフォルトの名無しさん:2011/11/22(火) 01:21:36.50
物珍しさのはやりだけで

物珍しさや、流行りだけで
145デフォルトの名無しさん:2011/11/22(火) 11:53:26.34
Node.jsみたいな考え方に則った新しい言語でNode.hogeをやって欲しいお
146デフォルトの名無しさん:2011/11/22(火) 22:05:54.07
じゃあ、Death Node
147デフォルトの名無しさん:2011/11/23(水) 01:13:49.05
文字って、Dart Node
148デフォルトの名無しさん:2011/11/23(水) 12:50:14.34
ちょっといい?
Pythonの例外処理って例外クラスのクラスオブジェクトを投げるよね
他の言語だと例外クラスのインスタンス投げると思うんだけど、あれは何故?
149デフォルトの名無しさん:2011/11/23(水) 14:54:40.08
またまた〜
150デフォルトの名無しさん:2011/11/23(水) 18:45:12.49
Perlなんかそもそもいまさら使いたいやつなんていないだろうし、
Python なんてブロックの終了を省略出来るくらいしか認知されていない言語をそうそう使おうなんて思わないし、
PHPも新規で使いたいなんてそうそう思わないだろうし、
消去法でRubyしか残らないだろ。
と思ったが、いま自鯖で Redmine 入れようとしてかなり苦戦しているw
151デフォルトの名無しさん:2011/11/23(水) 18:52:56.13
Rubyは情報が日本に偏っているって時点でダメだろう。
152デフォルトの名無しさん:2011/11/23(水) 19:17:14.00
>>151
アナタハニホンゴノフジユウナハントウシュッシンシャデスカ?
153デフォルトの名無しさん:2011/11/23(水) 19:31:54.00
>>152
いいえ、誰でも
154デフォルトの名無しさん:2011/11/23(水) 19:36:53.24
OC
155デフォルトの名無しさん:2011/11/23(水) 20:06:47.19
セイコーで必要十分だろw
156デフォルトの名無しさん:2011/11/23(水) 20:07:30.91
ごばくしたw
157デフォルトの名無しさん:2011/11/23(水) 21:03:08.23
Closureってどうです?
Scalaよりすごいらしいですけど
158デフォルトの名無しさん:2011/11/23(水) 21:05:05.71
☓ Closure
○ Clojure
159デフォルトの名無しさん:2011/11/24(木) 12:45:07.81
>>151
求人とかみると
結構アメリカでも使われているっぽいけどな
160デフォルトの名無しさん:2011/11/24(木) 13:24:42.16
なくはないけど、主要LLの中じゃ一番少ない。
WORD PRESSとかのCMSカスタマイズみたいなの入れると更に割合下がるし。
161デフォルトの名無しさん:2011/11/24(木) 15:51:19.17
Luaが簡単で使いやすくて最強すぎる。
もっと早く有名になればRubyやらPythonがいろんなソフトのスクリプトに使われまくることもなかったのに。
本当にRubyとかPythonとかスクリプトに使われてるプログラムとか困るわ。
スクリプトのくせに言語自体がでかすぎて覚えるのが面倒くさくてしょうがない。
Lua最強、組み込み最強、これからはLLじゃなくて組み込みが流行ってほしいわぁ。
162デフォルトの名無しさん:2011/11/24(木) 17:36:28.97
Luaとか
実行速度以外にメリットないから
163デフォルトの名無しさん:2011/11/24(木) 17:46:59.08
>>161
拡張/埋め込み型言語が汎用スクリプト言語と見なされるようになった例としてはTcl/Tkがある。
Tcl/Tkは初期のバージョンこそ低機能でストールマンにも酷評されたほどだが、
現在はかつてより機能も増え、Tkの利便性もあって、
かつてほど流行らないとはいえ一定の地位を確立している。

Luaも同様に単独で用いても十分な汎用スクリプト言語と見なされるようになる可能性はある。
Tclより文法の癖がないので、もう少し機能を増やし、IUPあたりを標準GUIライブラリーとすれば
ありえない話ではない。
164デフォルトの名無しさん:2011/11/24(木) 19:15:34.82
Luaの重要な要素はDouble、連想配列、文字列、クロージャだけ、
これだけでオブジェクト指向もばっちりできるんだぜ。
(メタテーブルは使うと馬鹿を見るからおいといて、)
文法も分かりやすい、処理速度もスクリプト系最高、全てが良いこと尽くめじゃん。

Rubyのくっちゃくちゃな制御構文を必死に覚えて、
Pythonの意味不明なデータ構造を解読してたのが馬鹿みたいだわ。
所詮、超高級言語とか言われてるスクリプト言語の行きつく先は
C++やらJavaやらの機能をまねることだから
これからも見栄張って複雑化、巨大化してだんだんスクリプトとして使いにくくなるわな。

その逆で簡素にすることを目的とする組み込み系は
やっぱり本来のスクリプト言語のあり方で、分かりやすく使いやすい言語に進化するんだと思う。
Lua最強!組み込み系最高!
165デフォルトの名無しさん:2011/11/24(木) 19:23:20.44
こうしてまた一つ、信者のキモい言語が生まれた
166デフォルトの名無しさん:2011/11/24(木) 20:32:24.37
>>163
tcl/tkはtkが優秀すぎた
tcl自体はダメ言語だよな
あれなら素直にlisp使う方がいい
167デフォルトの名無しさん:2011/11/24(木) 20:38:04.82
>>166
しかし、ストールマンの思惑どおりにはSchemeがTclの代替になるほどには普及しなかったけどな。
いくら「Tcl使うな。Scheme使え」と言っても普通のプログラマが急にLisp系の言語に馴染むのは無理だし。
何だかんだ言われても、シェルスクリプト感覚のコマンド言語であそこまで使えれば上出来だよ。
168デフォルトの名無しさん:2011/11/24(木) 21:15:20.36
lispのひとも死んだんだっけ
169デフォルトの名無しさん:2011/11/24(木) 21:25:57.58
老害は淘汰される。
170デフォルトの名無しさん:2011/11/25(金) 15:13:15.99
>>167
昔から言われてるが
tclは外のカッコ抜いた劣化lispだよ
tkとの馴染みはいいけど

lispはシンプルで永遠のマイナー言語だから
今後も細く長く生きるだろな
171デフォルトの名無しさん:2011/11/25(金) 17:58:03.94
>>170
tclはなまじlispに似てるからそういう批判ってよく耳にするけど、
だからってlispなんて使いたくないけどねぇ。
lispはシンプルだっていうけど、マスターしやすさ比べればTclのほうが簡単だし。
lispの書籍に乗ってるような非実用的なサンプルで遊んでる暇があったら、
手っ取り早く業務アプリの一つでも作りたいのが普通の人なわけで。
たかがちょっとしたツール作るのにlispを学習するのはコストに見合わない。
だからこそいつまでもマイナーなのであって、孤高ぶっても意味は無い。

tclになじめないならpythonでもrubyでも好みに合う言語を使えばいい。
何が悲しゅうて万年マイナーで挫折者続出で、
簡単じゃないのに簡単だと宣伝されるlispなんぞ使わなきゃならんの?
172デフォルトの名無しさん:2011/11/25(金) 18:01:21.18
S式の単純さは読み下す時のヒントが少ないことを意味する。すべてがS式なので、ここはデータ、ここはロジックという情報もプログラムの字面からは得られない。ヒントが多ければ良いというものでもないが、あまりに少ないのはつらい。

また、生産性の向上に寄与したマクロは、任意に定義されたユーザ言語を定義することと等しいので、このプログラムが利用しているマクロについての十分な知識がなければ、コードの構造も理解できないことになる。
173172:2011/11/25(金) 18:02:16.96
途中で書き込んじゃったよ。
>>172
http://www.rubyist.net/~matz/20030910.html
からの引用ね。
174デフォルトの名無しさん:2011/11/25(金) 18:10:32.83
akiyan VS ssig33

大戦争勃発しました
誰も止められない戦い
175デフォルトの名無しさん:2011/11/25(金) 18:21:50.76
普通のプログラマが言語を選ぶ基準って、やりたいことに手が届くかどうかなんだよね
その「手が届くかどうか」という基準の前には美しさだの簡潔さだのなんて二の次、三の次になる
まぁ、「プログラミングやりてぇぇーーー」って人にとってlispは神言語なんだろうね
でも、多少冗長でも理解しやすい言語を使って、とりあえず色々作りたい普通の人にとって、
lispの素晴らしさを熱く語り、「どうしてみんな使わないんだろう」くらいのことを吐く人は気持ち悪いだけ
176デフォルトの名無しさん:2011/11/25(金) 18:40:38.31
>>171
Tcl、マスターし易いか?俺は未だに[ ] と { }のどっちを使うべきなのかが判らなくなることが多い
177デフォルトの名無しさん:2011/11/25(金) 19:07:47.48
>>176
そんなことで迷う人がいるんだね
lispが驚くほど簡単で便利なら、どうして全てのプログラマが使うようにならないのか、
それを考えたことがあるのか?
178デフォルトの名無しさん:2011/11/25(金) 19:29:14.65
みんな自分が一番って思ってるかぎり結論は出ないわ
179デフォルトの名無しさん:2011/11/25(金) 19:34:17.67
ガベコレを使わない言語の中ではTclが最良。
Cで書きたいところはCで書けるので。
180デフォルトの名無しさん:2011/11/25(金) 20:01:14.79
tclはぱっと見普通に見えて実はやらしい
同じことするならlispのがいいな
まあ両方使わずに別な言語使うがw
でもlispは実験的なことしやすいから
マイナーとして残るだろ
181デフォルトの名無しさん:2011/11/25(金) 20:09:10.18
Lispを当たり前に使える人には理解できないようだが、世間の大多数はLispなんて使えない。
そもそもLispを必要だと感じず、別の言語で大過なく仕事をこなしている。
S式だcarだcdrだconsだ再帰だマクロだと言っても、普通の人にとってはだから何としか思わない。
やりたいことを手続きとして順に書くほうが直感的に楽だし、それで不便を感じない。
182デフォルトの名無しさん:2011/11/25(金) 20:55:33.64
Lispの初心者向け書籍やサイトは難しいのが多い。
というか、ナンセンスな難しさで満ちている。
たとえばここのwc。
ttp://www.shido.info/lisp/scheme_sym.html

たまたまtclが話題になってるのでtclで書くとこうなる。
if {$argc == 0} {
puts "ファイルが指定されていません"; exit
}
if [catch {open [lindex $argv 0] r} fd] {
puts "ファイルがオープンできません"; exit
}
puts [regexp -all {[^ ]+} [regsub -all {[[:space:]]$} [regsub -all {[[:space:]]+} [read -nonewline $fd] { }] {}]]
close $fd

あくまで上で話題になってるからtclで無理に書いただけで、
得意でないので変なところもあるかもしれんが笑って許してもらいたい。
lisp派から見れば、「正規表現使ってるんだから短く書けて当然。アンフェアだ」と思われるだろう。
でも、実用的なプログラミングを教えるなら最初からこういう書き方を教えるのが普通だ。
lispに馴染めず嫌いになる人が多い理由は、ただプログラミングがやりたいだけなのに
「Lisp流派」の「プログラミング道」の修業をさせられるから。
手続型言語ならば、極端に言えば適当に書けばなんとなく動くわけで、
らくだが針の穴をくぐるような困難さはない。
183デフォルトの名無しさん:2011/11/25(金) 21:03:07.16
>>182
wcといっても、それやってることが全然違うべ
lisp入門に難しいのが多すぎるってのは同意だけど
184デフォルトの名無しさん:2011/11/25(金) 21:48:29.47
Lisp使うくらいならProlog使うよ。
185デフォルトの名無しさん:2011/11/25(金) 21:58:15.85
kamomeの次はhibariの番か?
186デフォルトの名無しさん:2011/11/25(金) 22:03:33.11
なんでスクリプト言語がLLなんだよ。
Utiltyクラスもそうだけど、日本人の自称エリートは
海外の用語を音だけ借りて自分の逃げ道にするの好きだよなァ・・・。
187デフォルトの名無しさん:2011/11/25(金) 22:18:44.77
全然違うだろw
ネタは各単語の頻度じゃねえかw
まあperlあたりで書くと数行かな?

ていうか、言語なんて適材適所だし
普通いくつか使えるだろ
tclは今更感が強いがね
188デフォルトの名無しさん:2011/11/25(金) 22:20:00.24
>>186
ここ、日本なんで、
日本語でお願いしますね。
189デフォルトの名無しさん:2011/11/25(金) 22:21:52.50
どうでもいい
190デフォルトの名無しさん:2011/11/25(金) 22:22:31.28
Perlが最強
191デフォルトの名無しさん:2011/11/25(金) 22:57:12.57
>>187
tcl愛用してる俺は今更な人間なんだね
悪いねぇ

俺の言語の利用頻度
bashスクリプト>awk>tcl>python>c>basic

職業はプログラマじゃないんで、動きゃいいって発想
プロって大変だね
素人だったら極力古いBASIC並に覚えることが少ない言語で済ませるところを
難しくしなくちゃいけないんだから
192デフォルトの名無しさん:2011/11/25(金) 23:06:29.96
『とある非情報系企業の実話』

現場の人「仕事の能率上げたいからこういうの作って」
社内SE「デキネ」
現場の人「仕方ない自分で作るか」

数日後・・・

現場の人「なんだ、簡単に作れるじゃん。あんたやる気あんの?」
社内SE「普通にやったら難しいんです」
現場の人「普通にやらずに簡単にやればいいだろ」
社内SE「・・・」
193デフォルトの名無しさん:2011/11/25(金) 23:25:53.14
簡単に作れるなら最初から自分で作ればいいじゃん、と思うのは自分だけ?
(ことわっておくが、自分は現場側の人だよん)
194デフォルトの名無しさん:2011/11/25(金) 23:41:04.52
>>193
一応相手はプロフェッショナルだからねぇ
プロが真面目に作ろうと思ってもできないのに、
アホな言語、劣った言語で素人が作ったらプロの面子丸つぶれだろ
それと、作るのは簡単でも社内で業務に用いるものだから
一応伺いをたてないとマズいってのもある
195デフォルトの名無しさん:2011/11/26(土) 00:06:14.03
どこでも通用する汎用言語を使うのが普通と思われているんだよな。
特定のジャンルで強いがそこでしか使わないローカル言語が過小評価されている。
196デフォルトの名無しさん:2011/11/26(土) 00:12:05.47
んなことしてたら仕事にならんだろ
奴隷は言われたことを言われたとおりにやってりゃいいんだよ
197デフォルトの名無しさん:2011/11/26(土) 00:43:58.85
文法や環境が変わると非効率だよね。jsかpyに固定した方が効率いいのに
198デフォルトの名無しさん:2011/11/26(土) 00:58:02.75
>>194
社内SEがプログラム出来るとは限らないだろ。
Excelとパワポしか使えないのにSE名乗っているのなんてそこら辺にいるし。
199デフォルトの名無しさん:2011/11/26(土) 01:23:22.27
まず作成のための承認とって
仕様書とか管理文書とか工数見積り作って
レビューと承認とって
バカでも使えるようにエラー処理も万全に
さあ、もうやる気でねえだろ
200デフォルトの名無しさん:2011/11/26(土) 02:47:47.92
>>194
プロの面子丸つぶれとか、くだらない話
社内SEは面子のために仕事をしているわけじゃない
彼らは彼らなりの責務がある
社内SEはご用聞きや雑用係でもなければ、お母さんでもない
現場で課題が見つかったのなら、まずは現場で解決を図るのが当たり前
その上で解決の困難な課題があれば社内SEへ相談する

社内の情報システム部門の人達に対して
技術力への向上心を強く期待する考えは自分にもあるが、それとこれとは別の話
最初から相手を見下した態度をとる>>192や、くだらぬ面子にこだわる>>194の姿勢は
とても理性のある大人の行為であるとは思えない

後半の伺いを立てるという部分については理解する
201デフォルトの名無しさん:2011/11/26(土) 04:00:44.32
tcl嫌いでtkだけ使いたいひとにはpythonオヌヌメ
202176:2011/11/26(土) 09:17:40.24
>>177
いや俺はLISPがマスターし易いとも思わんさ
括弧アレルギーはすぐ克服出来るけど、マクロ絡みは慣れが要るしな

ただTclもそれと対比するほど簡単じゃなくね?ってツッコミたかった
そのひとつとして出したのが括弧の選択ね
>>182 を見ても if の引数が [ ] だったり { } だったりする
ループなら { } 一択とかはまだ判りやすいんだが…
それぞれの意味は解ってても、パッとどちらが最適かは出てこないし
他人のコードでなぜこちらを使ったのか、本当にこちらで正しいのかは
しっかり読み込まないと見えてこないよ
これなら無茶なコマンド形式よりも
分岐やループとかは専用構文のほうが簡単だったよ…
203デフォルトの名無しさん:2011/11/26(土) 10:03:10.46
リストっていろんな言語に実装されてるけど、
carだのcdrだのconsだのドット対だの言ってるのはlispだけだよな
他の言語だとデータが長い入れ物に順番に入ってるっていう認識で使いこなせるのに

>>202
tclで[]を使うのってlispで言う所のcarのコマンドを解釈させるってだけじゃないの?
単なる慣れの問題としか思えないんだけど
204デフォルトの名無しさん:2011/11/26(土) 10:32:49.62
俺もTclは昔ちょっとかじっただけだけど
Tclはシェルを知ってるならシェルだと思うのが一番わかりやすい
シェルを知らない・かつ本当に初心者なら、とっつきにくい言語だとは思う

Tclではすべてがコマンド関数であり、データはすべて文字列である
(Lispで言うスペシャルフォームすら存在しない)
Tclは基本的にeagerに評価するが、Tclの評価とはシェルで言う文字列展開である
関数の評価っぽいことをしたい場合には[]を使う(シェルのコマンド展開と同じ)
ifのthen節else節のように、eagerに評価されては困る場合は{}で遅延させる
変数のlvalueにアクセスする場合には$をつけない、rvalueにアクセスする場合には
つける(シェルと同じ)

とりあえずこんぐらい知っとけばなんとなくわかるんじゃね
205デフォルトの名無しさん:2011/11/26(土) 10:40:51.80
Lispでは(list 'hoge)と'(hoge)の違いを理解するためにポインタを理解する必要がある
Tclにはポインタがない
昔のPerlもポインタがなかったようだが今のPerlにはポインタがある
206デフォルトの名無しさん:2011/11/26(土) 10:50:53.94
Tclは「空白を含む文字列」と「文字列のリスト」の区別が
時々ごっちゃになって混乱する
207デフォルトの名無しさん:2011/11/26(土) 10:54:56.32
要するに Perl の劣化版か
208デフォルトの名無しさん:2011/11/26(土) 11:38:43.33
オブジェクト指向か関数型の信者にならないと、Perlの劣化版と言われるよね
この状況が続く限り信者は無限に増え続ける
209デフォルトの名無しさん:2011/11/26(土) 12:46:08.51
俺はPythonとTclは同じくらい好きだ
CLIだったらPython、GUIだったらTclを選ぶことが多い

以下、"http://www.nslabs.jp/monkey-python-02.rhtml"より抜粋
# -*- coding:utf-8 -*-
import Tkinter
class Scribble:
   def on_pressed(self, event):
      self.sx = event.x
      self.sy = event.y
      self.canvas.create_oval(self.sx, self.sy, event.x, event.y, outline = "red", width = 5)
   def on_dragged(self, event):
      self.canvas.create_line(self.sx, self.sy, event.x, event.y, fill = "red", width = 5)
      self.sx = event.x
      self.sy = event.y
   def __init__(self):
      window = Tkinter.Tk()
      self.canvas = Tkinter.Canvas(window, bg = "white", width = 300, height = 300)
      self.canvas.pack()
      quit_button = Tkinter.Button(window, text = "終了", command = window.quit)
      quit_button.pack(side = Tkinter.RIGHT)
      self.canvas.bind("<ButtonPress-1>", self.on_pressed)
      self.canvas.bind("<B1-Motion>", self.on_dragged)
      window.mainloop()
Scribble()
210209:2011/11/26(土) 12:46:51.93
Tcl/Tkならこうなる

proc mousePress {w x y} {
    global mousePressed startX startY
    set mousePressed 1
    set startX $x
    set startY $y
    .c create oval $startX $startY $x $y -outline red -width 5
}
proc mouseDrag {w x y} {
    global mousePressed startX startY
    .c create line $startX $startY $x $y -fill red -width 5
    set startX $x
    set startY $y
}
pack [canvas .c -bg white] -expand 1 -fill both
pack [button .b -text 終了 -command exit]
bind .c <ButtonPress-1> {mousePress .c %x %y}
bind .c <B1-Motion> {mouseDrag .c %x %y}
211209:2011/11/26(土) 12:48:29.93
失礼
変数mousePressedは不要です
212デフォルトの名無しさん:2011/11/26(土) 19:38:20.40
>>207
いやlispの劣化版
perlはある意味割り切ってる
213デフォルトの名無しさん:2011/11/26(土) 21:18:33.83
lispでRPG作ってください
お願いします
214デフォルトの名無しさん:2011/11/26(土) 21:19:37.42
RPGとはロリペドガールの略です。
215デフォルトの名無しさん:2011/11/26(土) 21:24:34.99
>>212
そもそもlispと同じである必要なんてあるの?
暗記量が少なくて済むお手軽言語なんだから、それでいいのでは?
216デフォルトの名無しさん:2011/11/26(土) 21:26:04.85
>>213
めんどくせえよハゲ
217デフォルトの名無しさん:2011/11/26(土) 21:29:01.48
http://cpptk.sourceforge.net/

Tk版
button ".b" -text "Say Hello" -command hello
pack ".b" -padx 20 -pady 6

C++版
button(".b") -text("Say Hello") -command(hello);
pack(".b") -padx(20) -pady(6);

きめぇwwwいくらC++だからと言って - 演算子オーバーロードかよ
こういうC++界隈に多い「やれるからやってみますた」みたいなノリって何なんだろうな
218デフォルトの名無しさん:2011/11/26(土) 21:39:11.27
>>216
『RPGサンプル仕様』
ウインドウを表示する
ウインドウはリサイズ不可
マップの大きさは16x16マス
マップチップ1個の大きさは32x32ピクセル
マップは平地と木で構成し、平地には石を置ける
木と石は障害物なので、そこへは移動できない
障害物とキャラの重なりがある場合、前後関係を意識して表示する
マップ上の特定の位置でごく簡単なイベント発生
キャラ移動の方向は東西南北の四方向
キャラは常にウインドウの中央に表示し、
キャラ移動の画像は東西南北の各方向につき3枚(直立、右手が前、左手が前)
キャラのステータス情報を表示したり消したりできる

ここまでおおざっぱに作って、tcl/tkではシェバング行等、
動作に必須でない行も含めて148行でした
wcすると、
 $ wc rpg.tcl
  148 1020 4657 rpg.tcl
という結果でした
結構無駄があるのでもう少しスリムにする余地もありそうです
劣化してないLispならほんの数行でできるのではありませんか?
219デフォルトの名無しさん:2011/11/26(土) 21:41:01.77
>>210
Ruby/Tkにしてみた Ruby 1.9以上で
小さいスクリプトしか書いたことないので
Pythonみたいにclassを作ったほうがいいのか
トップレベルにべた書きしほうがいいのかよくわからない

#coding:cp932
require 'tk'
sx,sy = 0,0
Tk::Canvas.new bg:'white' do
 bind 'ButtonPress-1' do |event|
  sx,sy = event.x, event.y
  TkcOval.new(self,sx,sy,sx,sy, outline:'red', width:5)
 end
 bind 'B1-Motion' do |event|
  TkcLine.new(self,sx,sy,event.x,event.y, fill:'red', width:5)
  sx,sy = event.x, event.y
 end
 pack expand:1, fill:'both'
end
Tk::Button.new text:'終了' do
 command {exit}
 pack
end
Tk.mainloop
220218:2011/11/26(土) 21:46:16.39
尻切れになってましたね
>キャラは常にウインドウの中央に表示し、
これは、正しくは
キャラは常にウインドウの中央に表示し、背景を動かすことでキャラの動きを表現する
でした。

あと、もう一つ条件があるのを忘れてました
「ウインドウに任意のタイトルをつける」
221218:2011/11/26(土) 21:57:49.49
またまた忘れてました
>マップは平地と木で構成し、平地には石を置ける

砂地も使ってましたので、正しくは次のとおり
「マップは平地と木と砂地で構成し、平地には石を置ける」

>>216
別に冷やかしでRPG作ってくださいってお願いしてるわけじゃないんですよ
Lispでどれくらいのことがどの程度の手間でできるのか知りたいんです
私はスクリプト言語をいくつか齧った程度なので視野が狭く、
Python、Tcl、PHPなどがすごく手軽で便利に見えてしまってます
世の中にはもっと便利な言語もたくさんあるのだということを知りたいんです
222デフォルトの名無しさん:2011/11/26(土) 22:44:09.81
>>217
Ruby/Tkもわりと変なことしてます
一番ベタな書き方で省略なしだと
b = Tk::Button.new(Tk.root,{'text' => 'Say Hello', 'command' => proc{hello}})
b.pack({'padx' => 20, 'pady' => 6})

オプション名をシンボルにして、親ウィンドウ指定&メソッド呼び出し括弧&ハッシュ引数の括弧を省略して
b = Tk::Button.new :text => 'Say Hello', :command => proc{hello}
b.pack :padx => 20, :pady => 6

Ruby1.9のハッシュ記法で
b = Tk::Button.new text:'Say Hello', command:proc{hello}
b.pack padx:20, pady:6

ウィジットのインスタンスメソッドで
b = Tk::Button.new
b.text 'Say Hello' #セッターメソッドでも可 b.text='Say Hello'
b.command{hello} #セッターメソッドだと b.command=proc{hello}
b.pack padx:20, pady:6

オプションをブロック内に記述
ブロック内ではselfがウィジットのインスタンスにすりかえられてます
(Rubyで内部DSLを作るときの常套手段)
b = Tk::Button.new do
text 'Say Hello'
command{hello}
pack padx:20, pady:6
end

ウィジットの引数つきのインスタンスメソッドはselfを返すのでメソッドチェーンでつなげてみたり
b = Tk::Button.new.text('Say Hello').command{hello}.pack(padx:20,pady:6)
223デフォルトの名無しさん:2011/11/27(日) 01:59:21.34
てか最古参の言語のひとつであるLISPに何を求めてるのだろう
得意分野であるリスト処理は最近のスクリプト言語にかなり輸入されてる
それこそ挙げられたPythonでそのリスト処理の手軽さをしっかり享受してると思うぞ
224デフォルトの名無しさん:2011/11/27(日) 03:19:04.77
(in-package :cl-user)

(asdf:oos 'asdf:load-op :ltk)

(in-package :ltk-user)

(with-ltk ()
 (let ((c (make-instance 'canvas
             :background "white"))
    (b (make-instance 'button
             :text "終了"
             :command #'(lambda ()
                    (setf *exit-mainloop* t))))
    sx sy)
  (defun press (evt)
   (setf sx (event-x evt)
      sy (event-y evt))
   (create-oval c sx sy sx sy))
  (defun drag (evt)
   (create-line* c sx sy (event-x evt) (event-y evt))
   (setf sx (event-x evt)
      sy (event-y evt)))
  (pack c :expand 1 :fill :both)
  (pack b)
  (bind c "<ButtonPress-1>" #'press)
  (bind c "<B1-Motion>" #'drag)))
225デフォルトの名無しさん:2011/11/27(日) 14:16:15.96
ゲームは創作物の中でハードル高い CGだけでも奥深いのに
音楽やプログラムも必要だしそれらを束ね合わせるセンスもいるし
更に全てハイレベルで無いとしょぼくなる

お前らLLジャップじゃ相当太刀打ちできない
>>213みたいなゴミカスは本当にカスだと思う
何がRPGだよ何がLISPでRPGだよ
不向きな言語で物を作ろうとする美徳 気持ち悪いねジャップは

カスLLじゃゲーム作りは向いてないよ
全てにおいて中途半端

WEBサイトなんて中途半端
グラもゲーム並みに緻密でかっこいいものもいらない 平坦な素材とかだけ
音楽すら使わない ただのクリック音 ファミコンぐらいの音
プログラミングもゴミ ただのレベルの低いLL すべてにおいてカス
LLはゴミ
226デフォルトの名無しさん:2011/11/27(日) 14:21:16.61
お前ら情弱は大人しく
低レベルのスマートフォンアプリかゲーム作るか
不向きな言語でゲーム作って "LISPでゲーム作ってみた" "COBOLでゲーム作ってみた"
"Haskellでシューティングゲーム作ってみた"とか
くだらない車輪の再発明してればいいんだよ

真の欧米のインテリゲンチャはもっとレベルの高いオンラインゲームだよ
レベルの差だねジャップは
ゲームに不向きなLL

馬鹿WEBのにわかがゲーム(笑) 笑わせんなってw
David M. Bourg+Glenn Seemannの靴でも舐めとけばいいよジャップはw
227デフォルトの名無しさん:2011/11/27(日) 14:53:11.43
インテリ原チャって何?
228デフォルトの名無しさん:2011/11/27(日) 15:01:12.32
ゲームの外の世界にはレベルなんてないんだぜ。
だからゲームを作ってゲームの中に篭ってレベルを競うのだ。
229デフォルトの名無しさん:2011/11/27(日) 15:01:51.19
>>227
読んだのかよ
230デフォルトの名無しさん:2011/11/27(日) 15:03:40.79
>>228
> ゲームの外の世界にはレベルなんてないんだぜ。

あるぞ。

将棋二段とか
231デフォルトの名無しさん:2011/11/27(日) 21:54:10.31
ここまで頭の悪そうな文章を書ける人は逆に尊敬してしまう。
232デフォルトの名無しさん:2011/11/27(日) 22:26:04.19
225の言ってることは事実だけどね

>>ゲームは創作物の中でハードル高い CGだけでも奥深いのに
音楽やプログラムも必要だしそれらを束ね合わせるセンスもいるし
更に全てハイレベルで無いとしょぼくなる
233デフォルトの名無しさん:2011/11/27(日) 23:25:00.76
>ハイレベルで無い

漢字の使い方くらい勉強しようぜ
それとも小学生なのか
234デフォルトの名無しさん:2011/11/27(日) 23:48:29.00
ハイレベルなんだから仕方ない
235デフォルトの名無しさん:2011/11/27(日) 23:56:09.42
JavaScriptでWebGL使った3Dとかも作れるのに
情報が古いと言うかなんというか
236デフォルトの名無しさん:2011/11/27(日) 23:58:28.33
WebGLなんて速攻でOFFにするだろ
237デフォルトの名無しさん:2011/11/28(月) 00:01:57.56
On/Off関係無いだろ
それならゲーム等の3D映像だって必要無い奴は買わないわけだし
必要であればOnにするだろ?
238デフォルトの名無しさん:2011/11/28(月) 00:08:58.93
ジャップって何でクズなの?

ニコニコ動画のデブチンもすげークソだし
なにが凄腕プログラマだよ 日本の2chのその下らへんで有名だけ

ねえ?!??!
ニコニコ動画はウンコじゃん

Youtubeはログインしないで見れる
ニコニコ動画はログインしないと見れない くだらない ニコニコビュアー使えば見れる(失笑)
Yotubeは誰でもコメントできれば最高
ニコニコ動画はウンコ

お前らクズ
ゲームでもゴミ
欧米がやったあとやるだけ
いつも欧米のあとゲームはな??? 消えろよいい加減

ゲームの緻密さで勝てないと UIとかくだらねえ発想(体感ゲーム、トイレでゲーム)
とかくだらねえので勝とうと必死 くだらねえんだけど
239デフォルトの名無しさん:2011/11/28(月) 00:17:14.77
どうでもいいけど、アーマードコア5楽しみだな。
240デフォルトの名無しさん:2011/11/28(月) 00:21:54.82
ジャップってガンダムとかロボット好きだよね
本当にそう思う

機体の力に頼るジャップ
アーマードコアもロボット

エヴァとかも

ジャップが好きになるものはわかる
241デフォルトの名無しさん:2011/11/28(月) 00:25:41.16
そういや、PS VITAってC#なんだよな。
242デフォルトの名無しさん:2011/11/28(月) 00:30:43.74
PlayStation Suite SDKだけじゃなくて?
243デフォルトの名無しさん:2011/11/28(月) 00:33:33.24
な ん で P C で プ ロ グ ラ ミ ン グ し て る の に

P C ゲ ー ム の 話 題 に ふ れ な い の か ? ? ?

な ん で 家 庭 用 ゲ ー ム 機 ?
244デフォルトの名無しさん:2011/11/28(月) 00:35:35.32
怒 

せ 
な 
い 
で 
く 
245デフォルトの名無しさん:2011/11/28(月) 11:10:45.32
よくわからんけど、スレタイ嫁。
246デフォルトの名無しさん:2011/11/30(水) 01:53:09.56
scipy弄りだして、octaveもRも触りたく無くなったわ
言語に対する情熱なんて持たずに、ただ単に使い勝手の良い糊として
使いたいだけの人にはpythonが唯一の選択肢。
ウェブ系?何それオイシイの?てか、ちょっと前の関数型ブームって何だったんだろう
node.jsもhaskellみたいに、ちょっと騒がれて消えるような運命を辿るのかな
247デフォルトの名無しさん:2011/11/30(水) 03:14:37.77
Pythonはブロックがインデントじゃなけりゃなー
非常に惜しい言語
248デフォルトの名無しさん:2011/11/30(水) 06:22:33.21
>>247 は食わず嫌い
249デフォルトの名無しさん:2011/11/30(水) 11:31:02.48
インデントでのブロックは割と慣れだ
どちらかと言えば問題は self.__ が長過ぎることかと
一行にフィールドがいくつも現れる場合に、書きにくいのは当然ながら、読みにくい…
250デフォルトの名無しさん:2011/11/30(水) 13:15:06.69
with(self) とかあったら便利なのにな
251デフォルトの名無しさん:2011/11/30(水) 14:05:34.94
>>250
いや、素直にprivateフィールドをサポートすればいいと思うよ…
self自体は名前変えられるけど、アンダーバー2つがウザいからな
252デフォルトの名無しさん:2011/11/30(水) 14:10:17.40
名前を被らないようにしようとしてること自体、なんかとってもカッコ悪い
あんまり使わないからいいか、と思ったのかもしれないが、残念ながら巷では多用されまくってるな
253デフォルトの名無しさん:2011/11/30(水) 14:24:53.67
Rubyの悪口はそこまでだ
254デフォルトの名無しさん:2011/11/30(水) 19:55:06.62
sl4aでは、Beanshell/Lua/Perl/PHP/Rhino/JRuby/Shell/Pythonが選べますが、
情報量で選ぶとpythonになりますかねえ
255デフォルトの名無しさん:2011/11/30(水) 20:44:07.12
PHPって解説書読んだくらいしか知らんけどなんか変数とか宣言もなくいきなり出てこない?あとなんか連想配列の=>がなんじゃこりゃって感じた。使ってない言語見たらどれもそんな感想なのかね。
256デフォルトの名無しさん:2011/11/30(水) 20:55:42.07
クイズ 私は誰でしょう?のコーナーです。

今日の問題は、>>255がなに言語プログラマか?です。
その理由も一緒にお応え下さい。
257デフォルトの名無しさん:2011/11/30(水) 21:02:06.64
PHP->JavaScript->Java->C#->C->JavaScript->PHP
って感じで触ってきたけどJavaScriptにどっぷりだったせいもあって
PHPめんどくさい事多すぎ
Javaとかもっとめんどくさいけどw
258デフォルトの名無しさん:2011/11/30(水) 21:09:02.41
大して使っていない学生か趣味でやってるひとだな。
Java、C#、Cのほうが遙かに面倒だろ。
259デフォルトの名無しさん:2011/11/30(水) 21:15:16.84
>>256
何言語プログラマーもなにも俺初心者だしなぁ。覚えた言語はマークアップ言語以外ではまだ一つだけだ。
260デフォルトの名無しさん:2011/11/30(水) 21:49:18.00
>>258
確かに面倒だけどまだJavaとかC#とかの方が書きやすいよ
Cに関してはただただ面倒くさい言語
PHPは書くには楽な部類だけど微妙だわ
261デフォルトの名無しさん:2011/12/01(木) 01:21:24.56
組込みやら下回りには神言語だけどなC
262デフォルトの名無しさん:2011/12/01(木) 01:29:59.81
もう組み込みはC++に移行している
263デフォルトの名無しさん:2011/12/01(木) 03:03:53.85
マヂで組み込みでc++つかうの?
かえってバグ作り込みそうだしメリット不明で、にわかには信じ難いんだけれども
264デフォルトの名無しさん:2011/12/01(木) 03:12:46.69
楽な方で作ってみて問題出たらC言語やアセンブラに手を出せば良い。
昔のファミコンはアセンブラしかなくて不便だった。
265デフォルトの名無しさん:2011/12/01(木) 06:53:45.91
>>264
それはC++に移行したとはいえないし
部分的に移行したともいえない
なぜなら移行する範囲について何も言っていないから
266デフォルトの名無しさん:2011/12/01(木) 06:56:13.94
俺の周りはCが多いな
組み込みでもアプリ寄りなのは
C++使ってるとこもあるみたいだが
267デフォルトの名無しさん:2011/12/01(木) 07:15:57.70
STLなどブラックボックスに近いライブラリを組み込まず、C++基本文法を使っている限りではC言語と性能差は出てこないだろ。
クラスなどは開発効率を上げるという点で使える。
268デフォルトの名無しさん:2011/12/01(木) 07:24:46.14
面倒かそうでないかって、開発環境の影響が大きいだろ。
Javaなんて、開発環境側で、例外処理の自動生成(空の)が出来るし、
変数名やクラス名が気に入らなければ、リファクタ>名前の変更で、
プロジェクト内のすべての出現箇所を変更してくれる。

この変数・メソッドはどこで使われいるのだろうかと、調べたくなったら、
呼び出し階層を開くで、プロジェクト内のすべての使用箇所を表示してくれる。
269デフォルトの名無しさん:2011/12/01(木) 08:06:51.87
ループよりコールバックが良いという奴が関数名をリファクタリング
関数ポインタよりtypedefが良いという奴が型名をリファクタリング
lambdaよりclassが
hashよりclassが
このパターンに付き合わされるのが面倒
270デフォルトの名無しさん:2011/12/01(木) 10:35:18.07
組み込みだとC++というより、betterCなんじゃね?
STLゴリゴリ使うワケにもいかんだろうし、かと言って今更純Cには戻れんという感じの
271デフォルトの名無しさん:2011/12/01(木) 11:17:01.86
>>267
new / delete は基本文法な訳だが?
272デフォルトの名無しさん:2011/12/01(木) 17:23:25.75
new / deleteは不味いのか?
環境によったら動的確保がやばいのかもしれないが。
273デフォルトの名無しさん:2011/12/01(木) 18:38:32.89
つ placement new
274デフォルトの名無しさん:2011/12/01(木) 19:52:27.87
newやdeleteが演算子である利点って何か、知ってる人がいたら教えて下さい。
たんにメソッドでいいと思うんだけど。
275デフォルトの名無しさん:2011/12/01(木) 23:22:44.01
newがメソッドだとして
1.そのメソッドはなにを返すのか?
2.コンストラクタ名は何になるのか?
3.コンストラクタではなにを返すのか?

276デフォルトの名無しさん:2011/12/01(木) 23:36:13.66
>>270
C++がbetterとも言えないからCが多い
new/deleteとかvirtualとか要らね
mallocなんて必要ねえ
起動したプログラムは二度と止まらないとか普通だし
277デフォルトの名無しさん:2011/12/02(金) 09:56:08.42
コーラ缶グラスがもらえると聞いて
278デフォルトの名無しさん:2011/12/03(土) 21:42:26.23
>>245
それぞれの言語で書いたバトルアルゴリズムを闘わせろって意味ですね
279デフォルトの名無しさん:2011/12/03(土) 21:51:12.97
>バトルアルゴリズムを闘わせろ
やってみたいけど言語関係なくアルゴリズム勝負のような気が
280デフォルトの名無しさん:2011/12/03(土) 22:16:48.00
デュエル!

まずは俺のターン、ドロー!
eaxレジスタにゼロをセットし、リターン!
281デフォルトの名無しさん:2011/12/04(日) 01:01:53.64
馬鹿には無理
282デフォルトの名無しさん:2011/12/04(日) 01:14:12.02
昔は相手プログラムの領域を破壊しあう対戦ゲーム(?)があったとか
聞いたことがあるような
283デフォルトの名無しさん:2011/12/04(日) 03:08:06.56
話がちょっとそれるけれど、
doom のクローンで敵を倒すと対応するプロセスが kill されるのがあったはず。
284デフォルトの名無しさん:2011/12/04(日) 13:18:07.44
core warsだな
アセンブラで書いて壊し合いする奴は
285デフォルトの名無しさん:2011/12/04(日) 20:01:02.18
これだな
ttp://vyznev.net/corewar/guide.html
ttp://corewar.co.uk/wendell/
corewarsのスレでも建てるかい?w
286デフォルトの名無しさん:2011/12/05(月) 00:50:53.44
>>275
>newがメソッドだとして
>1.そのメソッドはなにを返すのか?
レシーバであるクラスのインスタンスオブジェクト

>2.コンストラクタ名は何になるのか?
initializeでも__init__でもお好きなように

>3.コンストラクタではなにを返すのか?
何も返さなくてOK

で、newやdeleteが演算子である利点って何?
287デフォルトの名無しさん:2011/12/05(月) 00:58:17.72
たんに建前で組み込み関数ないからだろ
288デフォルトの名無しさん:2011/12/05(月) 01:26:36.04
>>286
たぶん流れ的には C++ の話だと思うんだけど…

オブジェクトの生成をメソッドでやる言語って、だいたいクラスそのものを基本的にオブジェクトとして扱う言語だと思う。
だからこそ、クラスに対してメソッド呼び出しをする、って形が自然になる。

でも C++ とかって、クラスは「型」であってオブジェクトではないという考え方じゃないか?
オブジェクトではないものに、メソッド呼び出しはヘンだということじゃないかなあと思う。

まあ、JavaScript みたくオブジェクトであるハズのものに new 演算子を付ける言語とか
Delphi みたく、型なのにメソッド呼び出しみたいな書式でインスタンス生成する言語もあるにはあるけどさ。
289デフォルトの名無しさん:2011/12/05(月) 19:33:37.23
>>288
なるほど。でもC++にもクラスメソッドってあるんじゃないの?
290デフォルトの名無しさん:2011/12/05(月) 19:44:47.16
あー…そこは、C++にゃ基底クラスがないから、ぐらいでいいのかな
でもそうすると、Javaはどうなんだよって話に…確かにわかんないやw
291デフォルトの名無しさん:2011/12/05(月) 19:46:57.99
基底クラスじゃないマチガエタ
すべてのルートとなるクラスね
親クラスないのに、作ってもいないクラスメソッドがあるのはなんでだよって話になるってことね

でも結局Javaの説明がつかないので投げた
292デフォルトの名無しさん:2011/12/05(月) 22:28:54.10
もしJavaのObjectクラスにnewメソッドがあったら
引数と戻り値の型が書けないから、Dartみたいに笑いものにされて終わっていた
293デフォルトの名無しさん:2011/12/05(月) 22:43:40.27
>>286
クラスにnewメソッドがあるがこのメソッドは
特殊なメソッドで通常のメソッドとは全く違う。

っていうのなら、メソッドにしないほうがいいと思うんだが。
そのほうが綺麗でしょ。

Perlのnewは通常のメソッドと全く同じだよ。
そのせいでblessで値を返すみたいな面倒なコードを
量産しなければならなくなったけど。
294デフォルトの名無しさん:2011/12/06(火) 01:18:16.36
JSのnewは不要だったよな。混乱の元じゃん。
295デフォルトの名無しさん:2011/12/06(火) 23:21:44.51
それはJavaScriptの文法に限って言えばnewが不必要ってだけだな。
296デフォルトの名無しさん:2011/12/07(水) 02:59:14.61
JavaScriptそこそこ覚えた後にPHP勉強中なんだが新たにrubyに興味湧いたんだ。んで聞きたいんだが
もしruby覚えたらPHP使う機会なくなるかな?適材適所って感じで使い分けられるならrubyもやりて〜んだが。
297デフォルトの名無しさん:2011/12/07(水) 13:06:09.45
>>293
>クラスにnewメソッドがあるがこのメソッドは
>特殊なメソッドで通常のメソッドとは全く違う。
どう違うの?

>っていうのなら、メソッドにしないほうがいいと思うんだが。
>そのほうが綺麗でしょ。
ぜんぜん。なんできれいだと思うの?

>Perlのnewは通常のメソッドと全く同じだよ。
>そのせいでblessで値を返すみたいな面倒なコードを
>量産しなければならなくなったけど。
それはPerlの設計がクソなだけ。話がそれてる。Pythonを見ればいい。
298デフォルトの名無しさん:2011/12/07(水) 14:14:37.12
なんでみんなケンカするの?
一つのLLしか使わないの?
みんな色々使って仲良くしようよ。
299デフォルトの名無しさん:2011/12/07(水) 15:08:25.46
喧嘩するのがこのスレの趣旨です
300デフォルトの名無しさん:2011/12/07(水) 15:36:57.37
>>298
スレタイ100回嫁
301デフォルトの名無しさん:2011/12/07(水) 20:02:26.93
>>296
出力がHTMLならPHP、プレーンテキストならRuby
利用者が使うのがブラウザならPHP、コマンドラインならRuby
302デフォルトの名無しさん:2011/12/07(水) 20:46:48.01
出力がHTMLならnodejsでJavaScript、プレーンテキストならnodejsでJavaScript
利用者が使うのがブラウザならnodejsでJavaScript、コマンドラインならnodejsでJavaScript

JavaScriptだけでいいな
303デフォルトの名無しさん:2011/12/07(水) 21:00:19.40
>>296
PHPだけでも、これぐらいのことは出来るらしいから
PHPだけでもいいんじゃね?
http://hirata-create.lar.jp/
304デフォルトの名無しさん:2011/12/07(水) 21:33:26.42
296です。聞いておいて遅くなってごめん。

>>301
ブレーンテキストが初耳なぐらい素人なんで難しいんですがphpも使い分けで選択する余地有りってことですよね。
>>302
JavaScriptを勉強するのが結構楽しいのでサーバーサイドも気になるのですがレンタルサーバーで使えるとこ少なくないですか?
>>303
PHPを使うフリーソフト?というのがよくわからないのですがエディタでPHPを書くだけでは出来ないような機能を拡張したようなフリーソフトということでしょうか?
305デフォルトの名無しさん:2011/12/07(水) 21:35:27.35
ブレーンじゃなくてプレーンか。
306デフォルトの名無しさん:2011/12/07(水) 21:36:20.08
PHPでwindowsとかで動くexeが作れるよって事でしょ。
まぁ昔からそれ系のライブラリはあったが。

nodejsとかは無料で使えるサーバもある。
307デフォルトの名無しさん:2011/12/07(水) 22:11:58.00
>>306
PHP勉強しつつもPHPでそうゆうことが出来るとは思ってなかったです。
node.js無料サーバーで使えるとか俄然興味でてきたなぁ。

308デフォルトの名無しさん:2011/12/07(水) 22:21:03.81
>>296
Web系はJavaがいいなー
PHPは触りたくない。
そういう意味ではRubyがおすすめ。
309デフォルトの名無しさん:2011/12/07(水) 22:21:10.08
ま、実際世の中 C/C++ , JAVA , PHP , JavaScript , HTML で回ってるから。
310デフォルトの名無しさん:2011/12/07(水) 22:31:39.24
漏れもPHPにはかかわりたくないな
っていうかexe作るんだったらPHPじゃなくても出来るのに
わざわざPHP使いたいっていうのが笑える
webやるならpython快適だよ
311デフォルトの名無しさん:2011/12/07(水) 22:33:19.33
>>308
Javaって企業で使うイメージなんだけど趣味で使うにも覚える価値ありかな?Androidアプリも完全にJavaというわけでもないとか聞いたんだが。
でもLLしか学んでない俺には難しそうだ。
高校時代に授業で学んだはずのC言語は1%も覚えてないし。
312デフォルトの名無しさん:2011/12/07(水) 22:43:33.93
iphone、androidアプリもJavaScriptで出来るしJavaScript最強でよくないか
313デフォルトの名無しさん:2011/12/07(水) 23:16:16.39
全部覚えりゃいんじゃね
言語なんて10位使えるのは普通だが
314デフォルトの名無しさん:2011/12/08(木) 04:55:01.77
>>286
> >>275
> >newがメソッドだとして
> >1.そのメソッドはなにを返すのか?
> レシーバであるクラスのインスタンスオブジェクト
>
> >2.コンストラクタ名は何になるのか?
> initializeでも__init__でもお好きなように
>
> >3.コンストラクタではなにを返すのか?
> 何も返さなくてOK
>
> で、newやdeleteが演算子である利点って何?
>

newが演算子である利点って別にないよね。
PerlやJSの場合、任意のメソッドでハッシュリファレンス返したり、オブジェクトリテラル返したりしてインスタンス作るわけだけど、それで不便があるかって言ったら別にない。
315デフォルトの名無しさん:2011/12/08(木) 14:06:48.63
バトルネタ投下

YammerがScalaからJavaへ移行中
ttp://www.infoq.com/jp/news/2011/12/yammer-scala
> Yammerは複雑さや性能面を鑑みて、基盤のインフラをScalaからJavaへ戻すそうだ。
...
> Javaの代わりにScalaを使うことで生まれる軋轢や複雑さは、 Scalaの生産性や運用負荷の削減によっては埋め合わせできません。

その反応
ttp://togetter.com/li/223895
Scala信者の必死ぶりが笑える
316デフォルトの名無しさん:2011/12/08(木) 20:52:34.75
>>315
newメソッドが通常のメソッドと性質が違う
特殊メソッドという扱いにすればそうかもね。

でも特殊メソッドという例外的な仕様を作るのなら
new演算子のほうがいいでしょ。
317デフォルトの名無しさん:2011/12/08(木) 21:17:33.59
「Perlで有名な小飼弾に暴言を吐いたキチガイw OSSコミュニティから物凄いパッシングw」
http://blog.livedoor.jp/dankogai/archives/51733482.html

北畠徹也氏が代表の「テラ・インターナショナル」がPerlを勝手に商標登録

>>この北畠って人は、ツイッターとかでも自殺するって言って話題になったり
よく分からないNPOか何かに募金をしてくれってメールを数万人規模のMLに流したり
それらは実はチョットした技術的ミスだって釈明してたりする人らしいね

Tetsuya_K 北畠徹也
@dankogai の家に電話したら、「小飼弾は死にました」らしい。ざまみろ。ざまみろ。というか、死んだ方が社会にとって幸せ。以上。# どうでもいいが、jcode.plなんて簡単につくれるじゃろ。あんなので調子に乗るアホもどうかしてるぜ。
Tetsuya_K 北畠徹也
I compared my @klout with @dankogai, how does your @klout compare? klout.com/user/dankogai/… @Tetsuya_K に比べたら全く大したことねーな。大口叩く愚か者が。

コメントの一覧

「みんなおもしろいおもしろいいってるけど北畠さん完全にかわいそうな精神病の患者ですよね」
「コメント欄が病的で怖い。人格が分裂してる?」
「本当に何がしたかったんだろう・・・」
「無事取り消されたそうで。本当によかった。」
318デフォルトの名無しさん:2011/12/08(木) 21:38:58.75
> @dankogai の家に電話したら、「小飼弾は死にました」らしい。

ワロタw

おもいっきりセールス断るときの常套句じゃないかw
http://www.google.co.jp/search?q=セールス+死にました
約 6,420,000 件 (0.12 秒)

馬鹿にされてることを自分で公開して恥ずかしく無いのかな?
319デフォルトの名無しさん:2011/12/08(木) 22:29:29.13
>>316
だからどう違うのかを聞いているのに、まともに答えてないじゃん。
「newは特殊」という馬鹿りで、どう特殊なのかまるで説明されてない。
Rubyだけでも勉強したら?
320デフォルトの名無しさん:2011/12/08(木) 22:52:33.23
まだこのキチガイ生きてたのか
apacheコミュでも散々暴れてたのに
321デフォルトの名無しさん:2011/12/08(木) 23:11:18.07
>>319
どうちがうのかって実際い書いてみれば分かるでしょ?

newはインスタンスを返すメソッドだよね?

擬似言語で書くけど、
function new() {
  return ○ ← これはどうやって生成するのか? new Class()とでもするかい?
}
322デフォルトの名無しさん:2011/12/08(木) 23:23:17.21
うわ、すげえアホ
323デフォルトの名無しさん:2011/12/08(木) 23:28:39.86
反論しなよw
324デフォルトの名無しさん:2011/12/08(木) 23:31:21.76
うわ、(こんな簡単なこと気が付かなかった俺)すげえアホ
325デフォルトの名無しさん:2011/12/08(木) 23:51:18.57
new OrenoClass() より、OrenoClass.new() のほうが、
開発環境の入力補完機能で、
n を打った時点で補完してくれそうな気がする。
326デフォルトの名無しさん:2011/12/08(木) 23:55:36.52
3文字くらい書こうよ
327デフォルトの名無しさん:2011/12/08(木) 23:57:12.96
別にnewじゃなくてもできるんだけど
blessすれば

アホかよ

予約語じゃないしnewは
328デフォルトの名無しさん:2011/12/09(金) 00:22:33.36
ほらな。newをメソッドにするとblessなんてものが出来る。
こんなの他の言語にはないよ。特殊な仕様だ。

大体newの実装をいちいち書かないといけないのがめんどくさい。

それを省くためのモジュールもあるけど、
それを使うとnewは特別扱いされることになる。

newをメソッドにしたために
別の複雑なルールができあがっていく。
しかもそのルールを破ることも可能。
違うルールのものを混ぜるのが難しくなっていく。

このように特殊なメソッドになっていくわけさ。
329デフォルトの名無しさん:2011/12/09(金) 00:26:34.10
アホやなあ
330デフォルトの名無しさん:2011/12/09(金) 00:35:01.48
>>328
他の言語に無いとか特殊とか言われても
SmalltalkとかEiffelとかSatherとかPerlとかRubyとかPythonとかは
インスタンス生成にnew演算子とか使わないのだが……
つうかC++の系統のOOPLしか知らない?

> 大体newの実装をいちいち書かないといけない
んなこたあない
これ以上面白おかしいことを言う前に、ひとつメタクラスのことでも
勉強したらどうだろう
331デフォルトの名無しさん:2011/12/09(金) 00:37:22.65
それで?
ちゃんと説明したら?
332デフォルトの名無しさん:2011/12/09(金) 00:40:19.77
new演算子の実装見てから来い
333デフォルトの名無しさん:2011/12/09(金) 00:40:32.12
>>328
バカもいいかげんにしろ。
blessが必要なのはPerlというクソ言語だけ。RubyもPythonも、blessを必要としない。
newがメソッドにできない理由なんてない。できないとしたら328のような無知が原因。
334デフォルトの名無しさん:2011/12/09(金) 00:43:48.09
誰もnewをメソッドにできないとは言ってないよ。

ただし他のメソッドと違う特性を持った
特殊なメソッドになる。

違うものは違う書き方にしたほうがわかりやすい。
そういう話。
335デフォルトの名無しさん:2011/12/09(金) 00:44:32.11
オブジェクトはインスタンス生成するまでは作られていないのだから
当然だがインスタンス生成はオブジェクトではなくクラスへのメッセージになる
(クラスベースのOOPの場合は)

よってそれはインスタンスメソッドではなくクラスメソッドであるか
メタクラスのインスタンスメソッドであるということになる
Smalltalk系ではnewメッセージはメタクラスが実装しているはず
Pythonも似たようなもんで、関数コールと同じインタフェースになるが
typeというメタクラスがinstantiationを行う

こういう共通なものはいちいちユーザが記述する必要がない
実際に必要なのはクラス毎の初期化処理なので、普通は「コンストラクタ」に記述する
メタクラスがインスタンスをこしらえたあとで、そいつを呼んでくれるわけだ

というような話は誰かさん以外は分かってるような話だから
いちいち誰も説明したがらないんだろ
336デフォルトの名無しさん:2011/12/09(金) 00:46:01.30
なおメタクラスとはクラスのクラスだ
誰かさん以外には言うまでもないことだと思うが
337デフォルトの名無しさん:2011/12/09(金) 01:12:27.91
>>334
だからどう特殊なのかを聞いてるんでしょ。日本語わかってる?
blessはPerl固有の事情なんで、それをもって特殊とかいうのはおかしい。
RubyもPythonも、コンストラクタは特殊でもなんでもない、ただのメソッド。
で、なにがどう特殊なの?
338デフォルトの名無しさん:2011/12/09(金) 01:28:48.89
端的に言えばmallocして初期化呼ぶだけだからな
特殊でもなんでもない
339デフォルトの名無しさん:2011/12/09(金) 01:37:10.03
>>337
Rubyで言えば、fooを呼び出したら、、
クラスに定義したfooが呼び出される。
そしてfooでreturnしたのがfooの戻り値だ。

fooじゃなくて○○○というメソッドという形に一般化しよう。
○○○を呼び出したら、クラスに定義した○○○が呼び出される。
これがメソッドだ。

しかしnewはクラスに定義したnewが呼び出されるわけじゃない。
そしてreturnを書いてないのに、newから戻り値が返ってきている。

このようにnewは特殊なものだ
340デフォルトの名無しさん:2011/12/09(金) 01:43:43.20
>>339
ここまで理解力がないのもいっそ素晴らしいな……

クラスFooのインスタンスfooがあるときに
foo.bar()と書くとfooのクラスであるFooに定義されてあるbar()というメソッドが
呼ばれるという話だろ

Rubyのようにメタクラスという概念がある言語では、
クラスもまたインスタンスであって、クラスのクラスはメタクラスとよばれ、
FooはメタクラスClassのインスタンスだ

Foo.new()と書くと、FooのクラスであるClassに定義されてあるnew()という
メソッドが呼ばれるわけだ
ルールはfoo.bar()の場合となにも変わらないことがわかるだろう
ちっとも特殊ではない
341デフォルトの名無しさん:2011/12/09(金) 01:59:57.55
普通なんの脈絡もなく突然blessを使うだろ?
#!/usr/local/bin/perl
my $x = bless {}; # ブレス!
ref $x; # メインが〜 メインが〜
342デフォルトの名無しさん:2011/12/09(金) 02:56:50.83
newが演算子だろうがメソッドだろうがどちらでもいいな
面倒じゃない記述で明示的にインスタンス生成できるのならば、些末な文法の違いなんてどうでもいい
343デフォルトの名無しさん:2011/12/09(金) 05:04:42.83
ドカタにはメタクラスが理解出来ないってことが分かった
344デフォルトの名無しさん:2011/12/09(金) 08:42:38.22
>>340
つまり、メタクラスという特殊なものと。
345デフォルトの名無しさん:2011/12/09(金) 09:25:51.95
いや全然
役割の名前がないと他人に説明するときにえらい不便なのでメタクラスと呼ぶ人がいるというだけ
Rubyに至ってはClassクラスのインスタンスをクラス名と同じ名前の定数に代入して「クラスのように見える」ようにしてるだけに過ぎない

String = Class.new
class String
def sub; ... end
...
end

実際には速度の関係で定義をCで書いているが
346デフォルトの名無しさん:2011/12/09(金) 09:52:28.12
「全てがオブジェクト」なら「クラスもオブジェクト」なのは必然
オブジェクトなんだから、クラスというオブジェクトにもクラスがあるというだけの話
何も特殊な話ではない
Smalltalkほど純粋なOOPLではないJavaにだってClassというクラスがあって
ClassにはnewInstance()というメソッドがあるだろ
普通はnew演算子を使うが
347デフォルトの名無しさん:2011/12/09(金) 10:16:35.22
Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):
.....

map(mapper, ary)

と書き換える必要があります。
348デフォルトの名無しさん:2011/12/09(金) 10:24:20.94
Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから、
andやorを使った不自然な記述をしなくても
f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}

または
f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}
と書けます。lambda内でreturnが使えますから、書きたければ
f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}
でもOKです。
349デフォルトの名無しさん:2011/12/09(金) 11:11:09.42
いまどきのPythonのlambdaを用いた階乗計算

f = lambda x: f(x-1)*x if x else 1

なわけですが
350デフォルトの名無しさん:2011/12/09(金) 11:12:13.28
要素に対する関数の適用と、抽出を組み合わせる場合
Python
print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]
暗号のように見える。

Ruby
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}
思考の流れと、コードの流れが一致しているので書きやすい。
351デフォルトの名無しさん:2011/12/09(金) 11:22:55.04
だれだPythonなら書き方はひとつとか言ってるのは
map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))
352デフォルトの名無しさん:2011/12/09(金) 11:59:04.29
>>348
>lambda内でreturnが使えますから、書きたければ
>f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}
>でもOKです。

Rubyの場合、(Pythonと違って <== ココ重要!!) if/caseといった条件分岐は
(文ではなく)式だから、return文は無くてもいいし、その方が簡潔になると思う

 f = lambda { |x| if x == 0 then 1 else x * f.call(x - 1) end }
353デフォルトの名無しさん:2011/12/09(金) 12:10:08.46
>>350
>puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

とても理解しやすい比較例だね

Rubyの場合には、左から右へと無名関数がデータフローあるいは
パイプラインのように並ぶから、コードが読みやすい

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコードが自然に書ける
プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

それと比較すると、Pythonのコードは、関数型プログラミングというものが
いかに高度で難解なものであるかという事をもったいぶってプログラマに押し付ける
もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう
354デフォルトの名無しさん:2011/12/09(金) 12:22:07.37
pythonて可読性が高いのをうたってる割にはそこいまいちだよね
355デフォルトの名無しさん:2011/12/09(金) 12:38:51.31
>>353
map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。
それに、イテレータを難解だと思わせていたのは関数型だけではなくて、
イテレータやコールバックをパラダイムを覆す概念として印象付けたのはむしろOOPだ。
356デフォルトの名無しさん:2011/12/09(金) 12:53:45.66
>>348
>RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから、

これも関数型プログラミングを実践する上で、Pythonには無くてRubyにはある重要なポイントだね
階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|
  x = foo(elem.x)  # ここが局所宣言を書く部分
  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる
}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから、
x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける
このポイントは、実用的なプログラムを関数型風で書こうとした時に、威力を発揮する
357デフォルトの名無しさん:2011/12/09(金) 12:59:21.07
余計分かりづらくなった
358デフォルトの名無しさん:2011/12/09(金) 13:17:26.54
リスト内包表記が暗号みたいと言ってる奴は
高卒ドカタなんだろうなぁと可哀想になる

大学で数学に触れる機会があれば
集合の表記に似せてることが分かるから
359デフォルトの名無しさん:2011/12/09(金) 13:46:31.97
>>355
>map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね
でも残念ながら >>353 で指摘したのは、これから関数型プログラミングを学ぼうとする初心者、
あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ

たとえば「あるリストからある条件で抽出してそれを変換する」処理は、絵で書くと以下のようになる

 [ 入力リスト ] ---> ( 抽出処理: select ) ---> ( 変換処理: map ) ---> [ 出力リスト]

これをRubyで書いたのが、(>>350から引用)

 puts [1, 2, 3, 4, 5].select { |i| i > 2 and i < 5 }.map { |i| i * 2 + 100 }

であり、同じ処理をPythonで書くと、なぜか

 print [x * 2 + 100 for x in [1, 2, 3, 4, 5] if x > 2 and x < 5]

になってしまう
どちらが「初心者にとって」理解が容易なコードであるかは、客観的に見て一目瞭然じゃないのかな?

360デフォルトの名無しさん:2011/12/09(金) 13:53:28.85
Rubyだと直感的に書けるコードも
[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくいです。
'-'.join(map(str, reversed(sorted([1,4,3,2]))))
361デフォルトの名無しさん:2011/12/09(金) 14:07:17.88
>>360
Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....
362デフォルトの名無しさん:2011/12/09(金) 14:10:47.93
>>359
抽出処理・変換処理は分かりやすくないだろ。
名詞を並べているだけで、説明になっていない。
それを「絵」だといってごまかしている。
363デフォルトの名無しさん:2011/12/09(金) 14:27:15.30
Ruby
[1,2,3].product([0,1,2,3]).select {|i,j| i * j > 2 and i * j < 5}.map {|i,j| i * j}

Python
[ x * y for x in [1,2,3] for y in [0,1,2,3] if 2 < x * y < 5]
364デフォルトの名無しさん:2011/12/09(金) 14:28:55.99
カッコだらけのコードを分かりやすくする基本的な方法は静的単一代入じゃないか
Rubyのやり方は基本ではなく玄人のやり方だろ
365デフォルトの名無しさん:2011/12/09(金) 14:31:29.88
メソッドチェインでコレクションを操作できるのって次期Javaでも入るっぽいね
366デフォルトの名無しさん:2011/12/09(金) 14:35:42.51
>>353

>1に挙がってるスクリプト言語では、関数プログラミングに近い表記が出来るってだけで
参照透明性はないんじゃない。例えば、階乗計算の例に挙がってるコードの再帰のfはグローバル変数参照。


> パイプラインのように並ぶから、コードが読みやすい

別の視点も提供してみる

* リスト内包表記では、行頭だけ見れば何の型のリストか分かる。
* パイプラインのように並べて書くと、行末まで読まないと何のリストかわからない。

どちらが読みやすいかって主観的な意見は人それぞれ、
日本語と英語どちらが読みやすいかみたいに意見分かれそうだけど。
プログラムのコードを読むにあたっては、自分にとっては前者の方が都合が良いです。


後、比較の為に合わせてるのかもしれないけど、>>350
x > 2 and x < 5 は、Pythonでは 2 < x < 5 って書きます。

----
集合って高校で習ったような気がする・・・というのはさておき、
リスト内包表記は SQL をイメージすると覚えやすいよ。
367デフォルトの名無しさん:2011/12/09(金) 14:44:01.38
Rubyをやってると、普通はメソッドチェインのほうが読み書きしやすいかな
左から右に目を動かせばいいから

ただし二つ以上の要素でリストを生成するような場合は
リスト内包のほうが書きやすい気がする
つまり>>363みたいにproductを使わざるをえないようなケース
368デフォルトの名無しさん:2011/12/09(金) 14:44:44.47
>どちらが読みやすいかって主観的な意見は人それぞれ

そうかもね、なのでメソッドチェイン方式も内包表記もどっちも持ってる言語が最強だわな
369デフォルトの名無しさん:2011/12/09(金) 15:40:36.66
>>368
>メソッドチェイン方式も内包表記も

LINQ

でも、メソッドチェインなんかは構文糖衣でなんとかなりそうな範囲。

print I([1,2,3,4,5]).select(lambda x: 2<x<5).collect(lambda x: x*2+100).to_list()

http://codepad.org/fTb7LwTm
370デフォルトの名無しさん:2011/12/09(金) 16:01:01.01
>>369
これ似たようなこと誰でも思いつくみたいだなw
俺もまったく同じようなものを書いたことがあるよ……が、実際に使うかと言えば
使わない
371デフォルトの名無しさん:2011/12/09(金) 16:15:53.72
PythonとRubyのどちらを学ぼうか迷っています
それぞれの言語に愛着のある方もいるでしょうから偏った意見もあると思いますが
そういうのも含めて色々な意見を聞いてみてどちらから学ぶか決めたいと思っています
皆さんはどちらが良いと思いますか
372369:2011/12/09(金) 16:21:03.82
>>370
同じく、全く使わない。
簡単に同様の機能を実装できるので、言語でわざわざサポートするまでもない例ってことで。

それに、Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、
似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。
シーケンスプロトコルの利点が活かせない。
373デフォルトの名無しさん:2011/12/09(金) 16:34:00.08
>>367
rubyはブロック変数が右側にあるから、
メソッドチェインのみで完結するなら、確かに左から右の方が自然な流れですね。

Pythonでは、 for x in ... と変数が左側に来るのでデータの流れは右から左
変数への代入は右から左 x = arg
関数の評価順も右から左 outer(center(inter( arg )))

慣れてる言語の方が読みやすいのは当然だけど、
こういう所も、それぞれの言語においての読みやすさに影響する。


Pythonの書きにくさ、多分カーソルを戻さないといけない煩わしさだと思うけど、
対応する括弧のハイライト、括弧単位でのカーソル移動や、閉じ括弧を自動で入れてくれる機能を持つ
プログラマ向けのエディタを使おう。この点は、エディタの習熟度で印象がかわってきそう。
374デフォルトの名無しさん:2011/12/09(金) 16:43:13.16
メソッドチェイン方式だとやっぱ無名関数の書きやすさに影響されるな
キーワードが必要かとか値返すのに明示的にreturn書かなきゃダメかとか
きょうびjavascriptの配列にもmapやらfilterとかあるけどfunctionとかreturn書かなきゃいけないのめんどい罠
375デフォルトの名無しさん:2011/12/09(金) 17:20:18.92
そこで coffee script。

(x * 2 + 100 for x in [1,2,3,4,5] when 5 > x > 2)

[1,2,3,4,5].filter((x) -> 5 > x > 2 ).map((x) -> x * 2 + 100)
376デフォルトの名無しさん:2011/12/09(金) 17:22:58.94
377デフォルトの名無しさん:2011/12/09(金) 18:41:51.79
Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる
得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない
Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い
378デフォルトの名無しさん:2011/12/09(金) 18:46:31.32
>>376
それにしても、Erlangの伸びが不気味だね。来年中頃には20位以内に入って
くるのは確実。他の関数型ではF#が目立つくらいのものだが。
379デフォルトの名無しさん:2011/12/09(金) 18:48:52.27
Pythonのユーザー調教っぷりは異常
「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く
380デフォルトの名無しさん:2011/12/09(金) 18:49:44.33
>>358
高卒だけどPythonのリスト内包は解るよ(Haskellのも複雑なのでなければ解るかな)

…逆に、数学の表記にはかなり苦手意識がある(集合もしかり)
数式を見ると「関数型言語とかで書いてくれたほうが解りやすいのに…」って思うw
381デフォルトの名無しさん:2011/12/09(金) 19:13:38.59
>>378
古い記事だけど、
http://www.atmarkit.co.jp/news/200704/27/erlang.html
現実になりつつあるようだ。
382デフォルトの名無しさん:2011/12/09(金) 20:21:13.91
> >371
Pythonを学んでみて不満があったらRubyでいいと思う
383デフォルトの名無しさん:2011/12/10(土) 01:17:28.39
>>372
Rubyは大クラス主義なもんで
eachメソッドで列挙可能なクラスはmapやselectできますな

mapやselectの実装はEnumerableモジュールにあって
eachメソッドさえ持ってればEnumerableモジュールをimportするだけで使えるので
外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてますね

Rubyユーザーは列挙可能なものはmapやselectできて当然だろって思ってる気がします
384デフォルトの名無しさん:2011/12/10(土) 01:23:49.48
> outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる
日本語文に慣れているからだと思うが、
もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?
385デフォルトの名無しさん:2011/12/10(土) 01:34:57.89
なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね
F#のパイプライン演算子最高ということで
386デフォルトの名無しさん:2011/12/10(土) 01:41:34.46
数学とかで慣れてるし区切りが関数のがわかりやすい
387デフォルトの名無しさん:2011/12/10(土) 13:40:40.74
リストの内包表記はシンプルに書けるときは使うけど
基本その場でdefするのがPython風なんだと思う。
名前空間が汚れるとか、そもそも関数名そのものを考えるのがウザい
てのもわかるけど書きにくいとは感じない。
むしろ関数名がドキュメントになるし、書き方も統一されるしわかりやすい。
これって調教?
388デフォルトの名無しさん:2011/12/10(土) 13:59:10.93
名前は既に知っているものを思い出すためにある。
知らないものの意味を名前から推測できる保証はない。
389デフォルトの名無しさん:2011/12/10(土) 14:40:31.04
無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像。
390デフォルトの名無しさん:2011/12/10(土) 15:35:41.62
>>348
これはPythonをdisっているように見せかけてRubyをdisっているのか?
と一瞬思ってしまったw
だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…
そしてどっちもlambda式の中で束縛変数の名前で再帰可能、と
391デフォルトの名無しさん:2011/12/10(土) 15:44:36.04
>>350
これはPythonの内包表記が単に無駄にforループっぽくてあんまり簡潔じゃない
ということだろーな
Haskellの
[ x*2+100 | x <- [1..5], x > 2 && x < 5 ]
だったらどう?

俺はこう書けるのにfilterとmapで書くかと言ったら書かない
Haskellの内包表記は"What"をそのものズバリで書いている
filterとmapのほうがずっと"How"で手続き的だ
そのまま「思考の順序そのままで」「書きやすい」という順序に依存した発想が
手続きよりなんじゃないの
392デフォルトの名無しさん:2011/12/10(土) 15:48:19.75
>>386
数学だったら合成関数で記述するかな
outer(center(inter(x))) = (outer・center・inter)(x)
outer・center・interで考えれば引数を除去できる
つまりポイントフリー

393デフォルトの名無しさん:2011/12/10(土) 17:08:46.06
List comprehension ruby vs python

[1,2,3,4,5].select(&:even?).map(|x| x*3)

That is almost readable code even in English!
I would read it as something like this.."From the list 1,2,3,4,5 select even numbers and map it to number times 3". Really nice!

This vs the clunkier Python code ...

[x*3 for x in [1,2,3,4,5] if x%2 == 0]

I mean it both works just that it seems more elegant in ruby.
394デフォルトの名無しさん:2011/12/10(土) 17:48:26.17
>>390
>そしてどっちもlambda式の中で束縛変数の名前で再帰可能、と

pythonのそれは自由変数。rubyも同じだったはず。
395デフォルトの名無しさん:2011/12/10(土) 17:58:34.44
JSのarguments.calleeみたいに自身を呼び出す機能はないの?
396デフォルトの名無しさん:2011/12/10(土) 18:01:05.71
>>394
あーなるほど
関数スコープだから代入文の右辺の時点ですでに名前が可視になっていて
lambda式から見ると、自由変数扱いということかな?
これは見慣れないとびっくり要素かも……
397デフォルトの名無しさん:2011/12/10(土) 18:36:28.16
確認した
>>> def make():
... g = lambda x: 1 if x == 0 else x * g(x - 1)
... return g
...
>>> fact = make()
>>> fact.func_code
<code object <lambda> at 0x7ef87698, file "<stdin>", line 2>
>>> fact.func_code.co_freevars
('g',)
398デフォルトの名無しさん:2011/12/10(土) 20:24:33.28
>>395
pythonはないよ。自身を呼び出す関数は作れるけど、その関数自体が式内では自由変数になる。
ここで必要なのは callee よりも letrec


>>396
関数内だとその通り。モジュールのトップレベルだとグローバル変数参照になる。
399398:2011/12/10(土) 20:26:29.81
宛先間違えた s/396/397/ でした
400デフォルトの名無しさん:2011/12/11(日) 08:35:53.32
トップレベルでもglobal宣言をしないとグローバルにならないんじゃないのか。
それとも、まるでPerlのように古い仕様を残す方針になったのか。
401デフォルトの名無しさん:2011/12/11(日) 11:30:31.90
JavaScriptならこんなことも

var f = function fact(x) { return x ? x*fact(x-1) : 1 };
402デフォルトの名無しさん:2011/12/11(日) 11:45:42.35
>>400
>>398ではないが、その辺はPythonでは以前からなんもかわってない筈
「古い」というのがどういう意味か分からないが
Pythonの「グローバル」は実際にはモジュール名前空間の中での話なので何も困らない

>>> fact = lambda x: 1 if x == 0 else x * fact(x - 1)
>>> fact.func_code.co_freevars
()
>>> import dis
>>> dis.dis(fact)
1 0 LOAD_FAST 0 (x)
3 LOAD_CONST 0 (0)
6 COMPARE_OP 2 (==)
9 JUMP_IF_FALSE 5 (to 17)
12 POP_TOP
13 LOAD_CONST 1 (1)
16 RETURN_VALUE
17 POP_TOP
18 LOAD_FAST 0 (x)
21 LOAD_GLOBAL 0 (fact) <------ コレ
        :
        :
403デフォルトの名無しさん:2011/12/11(日) 21:00:59.70
<php?
echo done;
?>
404デフォルトの名無しさん:2011/12/11(日) 21:02:07.18
<?php
echo done;
?>
405デフォルトの名無しさん:2011/12/11(日) 21:25:43.18
スクリプト言語でブロックスコープってPerlだけだよな。
Rubyって1.9からブロックスコープになったんだっけ?
406デフォルトの名無しさん:2011/12/11(日) 22:18:13.47
ここに来ている人達は、PHP、ECMAScript 以外のLLな言語で、
仕事をしている人達ばかりなの?
407デフォルトの名無しさん:2011/12/11(日) 22:32:00.89
>>406
仕事の成果物としては使ってないなー
408デフォルトの名無しさん:2011/12/12(月) 01:04:13.20
perlやtcl/tk,ruby,pythonでのヤツは納品した
409デフォルトの名無しさん:2011/12/12(月) 01:44:36.10
俺はRubyで仕事してるよ^^
410デフォルトの名無しさん:2011/12/12(月) 01:45:42.99
問題は、Rubyでなにを作っているかということだ。
411デフォルトの名無しさん:2011/12/12(月) 07:07:37.93
おれはperlで病的折衷主義なガラクタを出力しているんだぜ
412デフォルトの名無しさん:2011/12/12(月) 07:24:31.54
よく言われるのは、Rubyスクリプトのソースを直接納品することは
シェスクリプトのソースを直接納品するのと同程度には稀だということ

Rubyスクリプトはシェルスクリプトのように普段(使い捨てで)くるくる動いてこそ意味がある
大人数でスキルも目的もバラバラな人間に年単位でプログラム作らせたいなら、そりゃJavaを使えばいいのさ
413デフォルトの名無しさん:2011/12/12(月) 08:39:03.22
大人数でスキルも目的もバラバラな人間に年単位でプログラム作る場合
Rubyでは無理ってことかね。そこが重要なんだが。
414デフォルトの名無しさん:2011/12/12(月) 08:44:34.69
むしろ、LL のなかでは、Ruby の方が向いているだろ。
Java は徹底しているからな。C# みたいに、検査例外がないなんてことはないし。
415デフォルトの名無しさん:2011/12/12(月) 08:58:27.59
他人の書いたRubyのコード読めない
416デフォルトの名無しさん:2011/12/12(月) 09:41:29.95
ぼくも
417デフォルトの名無しさん:2011/12/12(月) 10:25:43.66
>>413
そもそもRubyはコード書く人=利用者な言語だと思う基本的には
418デフォルトの名無しさん:2011/12/12(月) 10:40:11.49
というか、なんか、パッケージに入って店頭で個人向けに売られてるやつとか
制作委員会や予算がついて何人月で作るような業務用のやつとか
そういうのしかプログラムと呼ばないような人がいるような気がする

ホテルや料亭で作るのも料理だし、定食屋や弁当屋で作るのも料理だし、一般家庭で作るのも料理だぞ
419デフォルトの名無しさん:2011/12/12(月) 10:46:29.84
>>418
いるよ
会社に入って正社員としてプログラムを初めて習って業務でしかプログラミングしない人というのは一定数いる
そういう人にとってのプログラムは、会議して予算つけて社員が複数人で何ヶ月も開発してクライアントに納入するものだろう

個人が作って個人が使って個人が出力を受けて個人が利益に与るようなものはプログラムとは呼ばない
たとえそれが会社の社員個人のパソコンの中や社内サーバの中で、データが業務(の補助)に使われていてもね

そういう人は家にパソコンがないとか、家に開発環境が入ってなかったりする
ちょうど、ごつい大工道具や金属加工の旋盤なんかは仕事道具であって、そんなものが家にあるわけがないのと同じような理屈
420デフォルトの名無しさん:2011/12/12(月) 10:59:01.26
RoR が流行り出す前に、2年くらいRubyを仕事で使ってたよ。
社内業務向けのアプリだし、GUIじゃないけどね。
421デフォルトの名無しさん:2011/12/12(月) 11:34:43.75
>>418
Rubyは家庭料理やね
食うのは自分と家族(同僚)、みたいな
422デフォルトの名無しさん:2011/12/12(月) 12:04:17.36
Rubyが実際使われるって、その程度だったんですね
423デフォルトの名無しさん:2011/12/12(月) 12:26:48.97
>>422
そうだよ
クライアントがJavaを求めてるならJavaで書けばいいし、
Perlモジュールに便利なのがあるならPerlで書けばいいし、
PHPができる人しか集められなかったならPHPで書けばいいし、
Pythonしか知らない人がうるさくて仕方ないならPythonで書いて黙らせればいい

Javaを使えなかった負け組企業がRuby(正確にはRoR)になだれ込ん(でまた負けた)だだけで、
Rubyユーザーの立ち位置は昔からあんまり変わらない
424デフォルトの名無しさん:2011/12/12(月) 12:59:23.76
>Javaを使えなかった負け組企業がRuby(正確にはRoR)になだれ込ん(でまた負けた)だだけで、

あんた、いいこと言うねえ
425デフォルトの名無しさん:2011/12/12(月) 13:43:23.46
そもそも、パッケージを売れないから派遣型の企業になったのではないのか
426デフォルトの名無しさん:2011/12/12(月) 17:12:38.83
あれ、あんま事情は詳しくないが、RoRはそんなちゃちなものじゃなかっただろ?
昔ちょろっとぐぐってみたとき、IBMのSIerの記事でRoRのことが結構書いてあったような。
427デフォルトの名無しさん:2011/12/12(月) 21:14:44.67
Ruby側から見るとRoRはぶっちゃけ別物よ?
RoR側の人はRoRこそRuby的に思ってそうだが

>>422
Programmer's Best Friend が謳い文句だからな
自分が使うツールを作るための言語ってのが本来の立ち位置
428デフォルトの名無しさん:2011/12/13(火) 01:40:21.36
>>405
>1にある言語の中では、概ね yes

JavaScript 1.7 では let でブロック・スコープが使える。
が実装されてるのは一部なので、ブラウザの互換を考えるとweb用途では実質使えない。

ruby1.9の変更はブロック・スコープというか、
rubyの機能「ブロック」の引数のスコープだったと思う。
429デフォルトの名無しさん:2011/12/13(火) 02:05:36.18
>Javaを使えなかった負け組企業がRuby(正確にはRoR)になだれ込ん(でまた負けた)だだけで、

うへぇ、Java-erが傲慢でプライドが高いのは相変わらずだな。他人を見下しながら生きている。
最近はScala-erも鼻持ちならないけど。
430デフォルトの名無しさん:2011/12/13(火) 18:45:48.88
SIとWebを分けて見れない奴がいつまでも騒いでる
スクリプト言語系の話題はいつもそう
431デフォルトの名無しさん:2011/12/13(火) 19:14:26.50
一番性格がいい言語erはどれですか。
LLじゃなくてもいいです。
432デフォルトの名無しさん:2011/12/13(火) 19:17:12.86
Lisp....かな....
433デフォルトの名無しさん:2011/12/13(火) 19:37:01.14
Lisperはマジキチしかいないぞ
434デフォルトの名無しさん:2011/12/13(火) 19:39:27.71
JavaScripter
435デフォルトの名無しさん:2011/12/13(火) 20:25:24.67
>>431
Rubyが一番性格がよろしい。
436デフォルトの名無しさん:2011/12/13(火) 20:56:03.03
Rubyistは攻撃的すぎるし、
PHPerは卑屈すぎるし、
間をとってPythonistaかな。
437デフォルトの名無しさん:2011/12/13(火) 21:01:01.81
Rubyist: ネクラ、オタク、キモメン
PHPer: 土方、DQN
Pythonista: イケメン、リア充
438デフォルトの名無しさん:2011/12/13(火) 21:42:12.49
永久凍土
439デフォルトの名無しさん:2011/12/13(火) 23:09:44.31
Lisp見づらいって挫折したくちだけど、ptyhonのインデントでスコープってのに
慣れたら、けっこうLispも見れるじゃんって思うようになってきた。
440デフォルトの名無しさん:2011/12/14(水) 00:04:22.90
Lispは括弧でインデントするとかっこよく見える
441デフォルトの名無しさん:2011/12/14(水) 00:34:54.13
Rubyistってなんであんな小学校の図書室で毎日読書してそうな
いじめられっこネクラチビメガネみたいな色黒とかキモオタ
顔面オジサン、オバサンばっかなの?
442デフォルトの名無しさん:2011/12/14(水) 00:36:12.69
レッテル貼り乙
443デフォルトの名無しさん:2011/12/14(水) 00:37:26.09
Rubiyst乙
444デフォルトの名無しさん:2011/12/14(水) 00:40:20.96
顔面おじさんおばさん、吹いたわ
445デフォルトの名無しさん:2011/12/14(水) 00:47:59.11
Javaer: 傲慢でプライド高い、土方
Scalaer: 鼻持ちならない、モヒカン
Lisper: マジキチ
Rubyist: ネクラ、オタク、キモメン、いじめられっこネクラチビメガネ、色黒、キモオタ、顔面オジサン、オバサン
PHPer: 土方、DQN
Pythonista: イケメン、リア充、永久凍土
446デフォルトの名無しさん:2011/12/14(水) 00:53:15.91
Perler: マニアック 知的 人間的
447デフォルトの名無しさん:2011/12/14(水) 01:16:28.38
PHPで(ファイル名は、.phpがつく)echoでhtmlを作成するようにして、ブラウザでみれば、GUIができるよ。
コンボボックス(ドロップダウンリスト)、ボタン、テキストエリア…

コマンドプロンプトの黒い画面がいやなひとへ
448デフォルトの名無しさん:2011/12/14(水) 01:59:42.44
449デフォルトの名無しさん:2011/12/14(水) 02:03:34.74
450デフォルトの名無しさん:2011/12/14(水) 02:27:32.56
>>447
それって実質 GUI 操作をするJavaScriptのコードの方が多くなりそう

プロンプト苦手なら普通にIDE...
451デフォルトの名無しさん:2011/12/14(水) 06:41:22.98
というかPHPはサーバあってこそのもんだろ
452デフォルトの名無しさん:2011/12/14(水) 08:25:35.82
>>447はどうやって本体を実行するかまでは考えてないな
453デフォルトの名無しさん:2011/12/14(水) 09:10:56.43
グラフィカルユーザーインタフェースというか、グラフィカルアウトプットだねえ
ユーザー入力がないならこれでもなんとか、というか別にHTML書き出せば他の言語でも
454デフォルトの名無しさん:2011/12/14(水) 21:36:29.44
一般ユーザー、サンデー・プログラマ、事務職、管理者等に適した習得しやすく使いやすい言語が少なすぎる。
そういう言語は、習得が容易でうろ覚えで適当に書いてもそれなりに動く必要があるが、
そのような言語設計にすると「文法が変」、「最新のパラダイムが導入されておらず時代遅れ」等のナンセンスな指摘をされて普及しない。

こういう話が出るとPython、Ruby、Scheme等をすすめる人がいるが、
プログラミングの専門教育を受けておらず、なおかつ特別にプログラミングの適性があるわけでもない人々が
それらの言語を本当に容易に使えると思っているのだろうか?

Tclはシェル言語に近い文法であり、オブジェクト指向に過度にこだわらないため
プログラミングの専門教育を受けていない人でもアレルギーを起こさず、
覚えるべきことも少なく学習に時間がかからないので、ほぼ条件を満たしているように見える。
だが、現状ではその真価が発揮されていない。
プログラミングを専門としない人々が日常的に使える言語の普及を希求する。
455デフォルトの名無しさん:2011/12/14(水) 21:41:42.59
やったこと無いけどSmall Basicとか?
456デフォルトの名無しさん:2011/12/14(水) 21:47:30.63
つ【十進BASIC】
457デフォルトの名無しさん:2011/12/14(水) 22:01:07.13
一般ユーザ向け言語を作ることは簡単だが、普及させるのはその1万倍難しい
理由は4つ
1. プロが使おうとしないものは普及しにくい
2. かつての8bit機のBASICのように、デフォルトのスクリプト言語にならなければ
 デスクトップ・ユーザーは使おうとしない
3. かつての8bit機のBASICのように、パソコンに命令して自在に操る喜びを
 現在のデスクトップユーザーは知らないし、知ろうともしない
4. たとえごく簡単にでもプログラミングができれば便利であるが、
 デスクトップ・ユーザーはそれを知らないし、知ろうともしない
458デフォルトの名無しさん:2011/12/14(水) 22:10:28.72
>>454
おそらく期待に沿ったレスではないと思うけど、現実的な解は「プログラミングしない」こと
一般の人々にとって、コンピュータは目的を達成するための道具(手段)にすぎない
だから、そんな彼らへ無理にプログラミング言語を押し付ける必要は無い

過去を振り返るとVisiCalcに始まった表計算ソフトは、
それまでプログラミングが必須だと思われていた複雑な計算処理を、
普通の人でも対話的に組立てることが可能な環境を提供した

繰り返しになるけど、普通の人々はプログラミング言語そのものを欲しているわけではない
459デフォルトの名無しさん:2011/12/14(水) 23:13:51.01
>>454
Pythonでいいんじゃね?
460デフォルトの名無しさん:2011/12/14(水) 23:28:06.16
>>454
awk
461デフォルトの名無しさん:2011/12/15(木) 00:07:46.57
率直に言うと、Unix/Linuxの人で小規模なものしか作らないなら
シェルスクリプト(awk等を含む)とTcl/Tkだけで済んでしまう。

シェルスクリプトで日常的なことはほとんどできる。
シェルスクリプトが苦手とするGUIはTcl/Tkで補える。

速度が要求されるとか、オブジェクト指向が必要であるとか、
そういう場合は他の言語も勉強しなければならないだろうけど。
462デフォルトの名無しさん:2011/12/15(木) 00:22:23.57
>>454
今北産業
463デフォルトの名無しさん:2011/12/15(木) 00:34:34.50
>>454
TclはLispのマクロのようなこともできるので
やろうと思えばアレルギーを起こすこともできる
464デフォルトの名無しさん:2011/12/15(木) 01:07:37.53
>>454
>>458ともかぶるが、一般人は簡易な言語は求めていないと思う。むしろ簡易な操作で作業を効率化できる方がおそらく重要。

そうゆう点では、言語仕様はどうあれ、Excel VBA(マクロ記録)はうまくニーズにフィットしてると思う。
465デフォルトの名無しさん:2011/12/15(木) 07:46:22.16
Excelのマクロは、Excelをもってないとうごかないでしょ
466デフォルトの名無しさん:2011/12/15(木) 07:47:55.57
世の中には、ExcelのファイルをEメール添付でおくりつけられて迷惑するひともいる
まず、どうやってExcelをひらくか
ひらいてマクロが実行できるのか
467デフォルトの名無しさん:2011/12/15(木) 08:20:10.82
>>465
すまん、Excelのことは忘れてくれ。あーゆーマクロ記録のほうが有用では?ということが言いたかっただけだから。
468デフォルトの名無しさん:2011/12/15(木) 09:11:22.71
秀丸のKeyマクロみたいな物か?
469デフォルトの名無しさん:2011/12/15(木) 12:23:57.81
フローチャートみたいな物でいいだろ
あれでも一応brainfuckやunlambdaみたいな完全な言語が作れるぞ
470デフォルトの名無しさん:2011/12/15(木) 13:22:06.95
いわゆるビジュアルプログラミング言語は
生産性を改善するという触れ込みでありながら、事実上普及していない

何でかは知らんけど、同じ大きさのモニタに表示できる情報量で
テキストに負けちゃうからっていう説を聞いたことがあるような
471デフォルトの名無しさん:2011/12/15(木) 14:50:47.59
テキストは文字と文字の間に無駄な隙間がないな
Excelもなんか敷き詰められてるし
472デフォルトの名無しさん:2011/12/15(木) 22:24:43.60
あれはねえ、ビジュアルオブジェクトの付随テキストで説明なり値なりを書いてる時点で
「これを直接書き下したほうがわかりやすい」と気付いてしまうからだ
473デフォルトの名無しさん:2011/12/16(金) 22:06:14.45
Python厨のRubyネガキャンは異常だなwww
474デフォルトの名無しさん:2011/12/16(金) 22:09:52.80
http://java-etc.cocolog-nifty.com/blog/2009/09/post-93c8.html

Perl、PHP、Ruby、Python はどれも今後の互換性の問題が解決していない。
この中で最もまともなのは、おそらく、Pythonだろう。
言語仕様、使用実績、ドキュメント、ライブラリ、を総合的に見て、
Pythonが最も無難であると判断する。
しかし、残念ながらPythonは3.0で過去との互換性を捨ててしまった。

PHPは有望なのだが、残念ながらver5.3で大幅な仕様追加と変更が発生した。
PHPは来るべきver6に対して現在変化している最中のようである。

Rubyはver1.9で過去との互換性を捨ててしまった。
Rubyは来るべきver2.0に向けて変化の最中である。
また、Rubyは残念ながらサンプルコード、ドキュメントが充実していない。
また、ver1.9での変更によって使用できなくなったツールやフレームワークが多すぎる。
米国でもRubyの人気が落ちているようだが、それは互換性が消滅したことが影響しているだろう。

Perlは一応は安定しているが、来るべきver6.0がリリースされると過去との互換性が無くなることになる。
ただしCPANというライブラリの集合が存在する以上、それらライブラリの流通性によって、互換性維持の圧力がかかり、
結果としてPerl6.0は受け入れられないと予想される。よってPerlは比較的安全な言語である。
しかしながら、その言語仕様は非常に古く問題点が多い。

これら4つの代表的なLL言語を見ると、Pytohnの互換性問題さえ解決するのならば、
Pythonが最高なのだと思われる。
次点でPHPだろう。

しかしいづれの言語であっても、現時点でコードを大量に書いた場合、
将来においてそれらのコードの互換性が維持されている可能性は低いと思われる。
よって私はそれら4つの言語に手を出すのは止めようと思っている。
おそらく、これら4つの言語は情報も豊富でやると面白いと思う。
しかし、今現時点においては、将来的な互換性問題が解決していない。
475デフォルトの名無しさん:2011/12/16(金) 22:15:19.59
PHP6は一旦仕切りなおしになったけどな
前PHP6として作ってたのはPHP5.4になったし
476デフォルトの名無しさん:2011/12/16(金) 22:46:03.59
>>474
2009年の記事か。
python は後5,6年は2系でいけると思うんで、2系を今からでも大丈夫なような。
5,6年の根拠はないけれど。

perl は来年のクリスマスにはでるかなあ。
477デフォルトの名無しさん:2011/12/17(土) 00:19:28.80
Perl,Python,Rubyは過去の資産が多いし、
旧バージョンも当分メンテされるでしょ。

互換性を期待するのならLispが一番じゃないのか。
478デフォルトの名無しさん:2011/12/17(土) 00:40:56.37
使ってない人にはそう見える
それはたとえばアセンブラ命令のように
479デフォルトの名無しさん:2011/12/17(土) 00:50:57.38
Lispは元々複数のデファクトが乱立してて
纏めるために後から規格作ったパターンだから
今もある程度環境差が残ってるんじゃねえかな
だいたいそういうのって完全にはまとまらない
480デフォルトの名無しさん:2011/12/17(土) 01:13:09.29
> 互換性を期待するのならLispが一番じゃないのか。
そんな使われない言語を出されてもなぁ。
481デフォルトの名無しさん:2011/12/17(土) 01:23:34.39
>>478
アセンブリ言語のようにアーキテクチャによって
互換性が左右されるとは知らなかった。なるほど。
482デフォルトの名無しさん:2011/12/17(土) 01:57:24.31
おい!ちゃんとRubyistには、頭ヅルハゲチ○ポと顔面日焼けでボロボロ野郎を追加しろよな!

Rubyist: ネクラ、オタク、キモメン、いじめられっこネクラチビメガネ、色黒、キモオタ、顔面オジサン、オバサン、頭ヅルハゲチ○ポ、顔面日焼けでボロボロ野郎
483デフォルトの名無しさん:2011/12/17(土) 03:17:05.21
>>474
結局何も言ってないに等しい部ログじゃね
484デフォルトの名無しさん:2011/12/17(土) 03:22:54.24
>おそらく、プログラマがメインとして開発をすることが出来る言語は、3つが上限ではないかと思っている。
>メインとして開発をするというのは本格的なアプリケーションを作成するという意味だ。
>ちょっとかじったくらいの意味ではない。


最高に頭悪いなこいつ
485デフォルトの名無しさん:2011/12/17(土) 05:58:55.42
いや、3つ程度が限度だろう
まさか夏休みの学生のように入門書や文法書読破して「○○言語極めた!」とか言ってるわけではあるまい
その言語のトークンを勉強すればいいだけなら、今でも全員アセンブラでプログラミングをしているはずだ
486デフォルトの名無しさん:2011/12/17(土) 07:42:08.63
Javaとか.Netみたくライブラリが共通なら
言語なんていくらでも増やせるだろ
意味がないからやらないだけで
487デフォルトの名無しさん:2011/12/17(土) 11:46:08.96
メタルギアファンはここで応援してください
日本のゲーム業界を盛り上げましょう

「小島秀夫応援振興協議会」
http://toro.2ch.net/test/read.cgi/gamedev/1324089321/
488デフォルトの名無しさん:2011/12/17(土) 12:41:06.63
>>485
お前がなぜ、このスレに居るのか理解できない。
489デフォルトの名無しさん:2011/12/17(土) 16:19:32.53
スレなんて適当に巡回するもんだろ?
特に理由とかないよ。
お前は理由があって見てるの?
2ちゃんねるごときに
490デフォルトの名無しさん:2011/12/17(土) 16:45:12.04
インディーズゲーム会社は凄い
凄すぎる
何であんなに凄いんだろう
凄い
凄いよ!?!?!?!!!!!!!!!!!!!!!!!!!!!!!!!
凄い!!!!!!!!!!!!!!!!!!!!!!!!!!!!

とにかく凄い

ゲーム会社は凄い

最強

コンピュータ技術者として最強
491デフォルトの名無しさん:2011/12/17(土) 16:46:28.91
インディーズゲーム会社はぱねぇ
ぱねすぎる
何であんなにぱねぇんだろう
ぱねぇ
ぱねぇよ!?!?!?!!!!!!!!!!!!!!!!!!!!!!!!!
ぱねぇい!!!!!!!!!!!!!!!!!!!!!!!!!!!!

とにかくぱねぇ

ゲーム会社はぱねぇ

最強

コンピュータ技術者として最強
492デフォルトの名無しさん:2011/12/17(土) 16:48:56.90
ゲーム会社は凄いと思う

WEB業界と違って

WEB業界ってただユーザーから送られてくる ”数キロバイト”のデータを処理して
ブラウザに返して

「WEBサービス!! モバゲー!!」(キリッ!) とか言ってるバカだから

アホじゃん

頭おかしいって思われてる

ゲーム会社のやつは凄いと思う
あんな人間離れした

3Dグラフィック+C++プログラミング+サウンド

すべてを束ねるコンピューター技術者最強

最強だよ

そうおもわないかい?
493デフォルトの名無しさん:2011/12/17(土) 17:10:31.46
うん。ぱねぇよ。
494デフォルトの名無しさん:2011/12/17(土) 17:11:15.58
そもそも創作物のレベルが違うだろ。
495デフォルトの名無しさん:2011/12/17(土) 18:13:18.59
だってあいつらC++とかだろ?
LLの俺らが勝てっこねーわ
496デフォルトの名無しさん:2011/12/17(土) 20:56:33.08
ま、率直に言って、ゲーム系はウェブ系よりずっと高度だと思うよ。
497デフォルトの名無しさん:2011/12/17(土) 21:00:34.24
それほどでもない
498デフォルトの名無しさん:2011/12/17(土) 21:01:58.37
ウェブってテキスト整形するだけじゃん。
499デフォルトの名無しさん:2011/12/17(土) 21:13:24.24
それを言ったら、ゲームは色のついた点を打つだけ。
500デフォルトの名無しさん:2011/12/17(土) 21:34:19.32
ブラウザとサーバが共通だから簡単なんだよな
サイトごとに専用ブラウザや専用プロトコルを作ればハードルが上がる
501デフォルトの名無しさん:2011/12/17(土) 22:19:32.92
ゲーム系はやっぱり高度だよな。
WEBでゲームって言ってもソーシャルゲームとかだし。
格が違うわ。
502デフォルトの名無しさん:2011/12/17(土) 22:40:22.73
はっはっは、自分で言って楽しいか?w
503デフォルトの名無しさん:2011/12/17(土) 23:37:17.53
何がWEB系か未だに分からん。
例えばストリーミングシステムやオンライン決済システムだと
どこまでの範囲がWEB系の仕事になんの?
504デフォルトの名無しさん:2011/12/17(土) 23:37:26.60
うぇb系がドカタだとすれば
がめ系は一級建築士
505デフォルトの名無しさん:2011/12/17(土) 23:41:58.42
創作物の感動が違うな
506デフォルトの名無しさん:2011/12/17(土) 23:51:38.01
人文系って人間のことばかり話題にしてよく飽きないよな
507デフォルトの名無しさん:2011/12/17(土) 23:52:14.56
【ウェブアプリケーションという不幸 】

現在、多くのプログラマ(素人)が
ウェブアプリケーションというものが
ベストな正しい方向だと勘違いしている。

ソフトウェアの作るにおいて
そのアプリケーションに応じた
状態遷移を実装するというのは
基本中の基本である。

その点においてウエブブラウザという
ある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは
論外である。
そこまでするなら普通にアプリケーションを実装
してダウンロードして使って
もらえばいいのである。

ウェブアプリケーションとは
虚構にしか他ならない。

ウェブアプリケーションを
作ろうとしているあなた。
今すぐ普通のアプリケーション
とし設計し始めては
いかがだろう。
そうすればきっと後悔しないですむ。
508デフォルトの名無しさん:2011/12/17(土) 23:53:07.64
HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。

だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。

ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)JavaならWebClietnだ(これは、ブラウザではないが。)。

包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。
509デフォルトの名無しさん:2011/12/17(土) 23:54:13.53
ソーシャルゲームの開発してるけど技術者の心は満たされない
Flashでの淡々とした作業、こんなのでいいのか?と疑問に持つレベル
使い回しのコードをいじって、とりあえず納品
C++で書いてるゲームエンジニアはそりゃレベル高いわな
510デフォルトの名無しさん:2011/12/18(日) 00:07:05.28
ゲーム開発に夢見過ぎwww
511デフォルトの名無しさん:2011/12/18(日) 00:14:52.03
>>509
早くゲーム作れ
最強

ゲーム開発者は最強

お前らじゃ絶対に勝てない

これだけは言える

お前らじゃ

絶対に

ゲーム開発者に

勝てない
512デフォルトの名無しさん:2011/12/18(日) 01:29:26.41
まあ、ウェブ系と言っても、MySQL作ってるとか、Apache作ってるとか、それなら高度だと思う。それをウェブプログラマーと呼ぶのか知らないけど。
513デフォルトの名無しさん:2011/12/18(日) 01:38:55.80
本格的なデータベースを実装できる人を尊敬する
ちょっとだけかじったが、あのトランザクション周りの
複雑奇怪なアルゴリズムは何なんだよw
514デフォルトの名無しさん:2011/12/18(日) 02:35:27.64
>>513
超同意、あとOSの排他制御関連もすごい
515デフォルトの名無しさん:2011/12/18(日) 02:39:34.17
http://kohada.2ch.net/test/read.cgi/pcnews/1302698644/243

243 名前:名無しさん@お腹いっぱい。[] 投稿日:2011/12/16(金) 23:50:22.64 ID:HNpdB+bg
>>241
HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送る。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)



だからこっちに帰れって
516デフォルトの名無しさん:2011/12/19(月) 12:24:38.34
Web系で凄いのはインフラとか。
HTMLとかCSSでドヤ顔してるのは、ね
517デフォルトの名無しさん:2011/12/19(月) 12:44:29.30
HTMLはまぁあれとしてCSS3はなかなか面白いよ
>>516にCSS3だけでドヤ顔できそうなレベルの物を作れる奴居そう
518yuitest:2011/12/19(月) 19:49:14.71
HTML5とか誰でもできると思いますが。
CSS3なんてざらですね、ちなみに私はcjhatというWEBサービスを展開しております。
http://cjhat.net/
新潟在住です。
私の父はIT企業に勤めております。
519yuitest:2011/12/19(月) 19:50:36.99
ちなみに私のTwitterです
たいしたことやってません
http://twitter.com/yuitest
520yuitest:2011/12/19(月) 19:59:33.68
生物の進化は、何か vs 何かで、片方がすり減っていくけれど、概念の進化はそうでもないよね。両方が進化していっても、同じ名前で呼ばれる。
Perl6 はもはや全然 Perl じゃないんだけどね。
521デフォルトの名無しさん:2011/12/19(月) 20:03:15.82
変なの沸いたなNG追加
522デフォルトの名無しさん:2011/12/19(月) 20:06:55.37
ツイートみたけど軽く統合失調症入ってるだろ
523デフォルトの名無しさん:2011/12/23(金) 03:04:42.25
>>520
誰も新規がつかないところはPerlだな
524デフォルトの名無しさん:2011/12/23(金) 03:20:08.27
R6RSとかPython3とか
525デフォルトの名無しさん:2011/12/24(土) 20:41:28.69
タルルート君にじゃばじゃばおって居たよな。
526デフォルトの名無しさん:2011/12/24(土) 21:15:55.02
習得した際にできることの多さで言うと
python》ruby》PHPでおk?
527デフォルトの名無しさん:2011/12/24(土) 21:54:37.50
どの言語を使っても出来ることはほぼ一緒。
528デフォルトの名無しさん:2011/12/24(土) 23:45:58.12
PHPは明らかにライブラリが少ないと思う。ウェブ以外には向かない。Perl、Ruby、Pythonならだいたい似たようなものと思う。
529デフォルトの名無しさん:2011/12/24(土) 23:47:01.37
何のライブラリが足りない?
530デフォルトの名無しさん:2011/12/24(土) 23:48:24.69
PHPで作ったWindowsネイティブアプリ
http://winbinder.org/examples.php
531デフォルトの名無しさん:2011/12/24(土) 23:55:30.28
pearとcpanとgemsと絶望的な差がある。
532デフォルトの名無しさん:2011/12/25(日) 00:07:54.46
phpclassesつーもんがあってだな
533デフォルトの名無しさん:2011/12/25(日) 00:38:03.50
>>530
ねらーは基本ズボラだから
無駄な努力はしたくないのさ
534 忍法帖【Lv=3,xxxP】 :2011/12/25(日) 03:43:38.04
糞スレ立てれるかな?
535デフォルトの名無しさん:2011/12/25(日) 06:27:33.78
PHPはHTML出力テンプレートであって、汎用プログラミング言語ではない
だからこそ強力で手軽なわりに誰でも使えるものになっている
536デフォルトの名無しさん:2011/12/25(日) 06:33:32.01
数値シミュレーション(本当はCが推奨なんだろうけど大学のレポート程度の
サイズならpythonで間に合う)みたいな使いかしかしないから
HTMLなんてコンテンツのインデックスが並んでるやつをちょっと手打ちしたことしかないから
どんだけ便利なのか分からんなあ。みんなホームページとか作ってるの?
537デフォルトの名無しさん:2011/12/25(日) 08:34:26.49
PHPとHTMLはちょくせつはかんけいない。
ネット機能を多く盛り込んだスクリプト言語。
サーバー無くとも動作する。
538デフォルトの名無しさん:2011/12/25(日) 11:28:17.38
>>535
汎用プログラミング言語ではないという根拠は?
539デフォルトの名無しさん:2011/12/25(日) 11:49:52.43
PHPのHはHTMLのH
540デフォルトの名無しさん:2011/12/25(日) 11:51:03.97
HTML処理が得意な
汎用プログラミング言語ですよね?

それで?
541デフォルトの名無しさん:2011/12/25(日) 11:54:19.09
プレーンテキストでなく、書式付きのテキストを吐きたいなーってときに便利かも
542デフォルトの名無しさん:2011/12/25(日) 12:06:51.58
そういえば、gems, cpan, pear はわかるけど、
Pythonってなんかあるの?
543デフォルトの名無しさん:2011/12/25(日) 12:12:33.48
公式でメイン用途がserver-embbedと謳われてる珍しい言語ではある
というか、PHPがHTMLテンプレートプロセッサなのは周知のことだと思ったのだが、何が不満なのだろう
544デフォルトの名無しさん:2011/12/25(日) 12:19:37.90
>>542
PyPI
545デフォルトの名無しさん:2011/12/25(日) 12:21:30.20
>>542
何かあったはず、俺もPython詳しくないから忘れたけど…

ただPython自体の方針が「本体に大量のライブラリを添付する」なワケだから
究極的にはそれも本体に添付すればいいじゃん、みたいになるんじゃねーの
546デフォルトの名無しさん:2011/12/25(日) 12:30:05.42
PHPはPHP: Hypertext Preprocessorの略でHTML関係なし
以下公式まぬあるから引用

>PHP (PHP: Hypertext Preprocessor を再帰的に略したものです) は、
>広く使われているオープンソースの汎用スクリプト言語です。
>PHP は、特に Web 開発に適しており、HTML に埋め込むことができます。
http://www.php.net/manual/ja/intro-whatis.php
547デフォルトの名無しさん:2011/12/25(日) 12:34:44.74
そのHypertextの代表的な規格がHyperTextMarkupLanguage
つまりHTMLなんだけどな

無関係とは言えないだろう、どう考えても
548デフォルトの名無しさん:2011/12/25(日) 12:38:13.16
ruby覚えたらPython覚えるの簡単かな?
549デフォルトの名無しさん:2011/12/25(日) 12:44:32.75
そうだけど、Pythonだけやった方がいいと思う
そうすればRubyにイラつくこともないからさ
仏のような心でRubyを見守り続けることができるよ
550デフォルトの名無しさん:2011/12/25(日) 13:14:56.37
PHPがHTMLが得意ということは無いだろ。
Python、Rubyなどと同程度の装備だろ。
551デフォルトの名無しさん:2011/12/25(日) 13:20:14.39
>>548
俺がそのパターンだけど、確かに大筋は覚えるの早かったかも知れんが細かい点で躓きまくった
Pythonが目当てなら初めからPythonでいいし、Rubyが目当てなら初めからRubyでいい
552デフォルトの名無しさん:2011/12/25(日) 13:25:14.63
うん、だからといって
PHPが汎用プログラミング言語じゃないとする
理由はないよな?
553デフォルトの名無しさん:2011/12/25(日) 13:25:34.09
>>542
pypi

>>545
>Python自体の方針が「本体に大量のライブラリを添付する」なワケだから

Pythonやってるけど、この方針は知らない。PHPではなくて?

>>546
同マニュアルのFAQに”PHP と HTML は深く関係しています。”って書いてるよ。

まぁ、プログラミング言語として独立して使えない事もないって意図だろうけど。
554デフォルトの名無しさん:2011/12/25(日) 13:26:55.62
えとさ、Perlが「practical extraction and report language」の略
つまり、実用的なデータ取得レポート作成言語 って知ってる?
汎用プログラミング言語じゃないんだよw
555デフォルトの名無しさん:2011/12/25(日) 13:27:31.42
だからPHPがHTMLと深く関係しているからって、
汎用プログラミング言語というのは間違い無いだろ。
556デフォルトの名無しさん:2011/12/25(日) 13:28:47.60
PHPはHTMLを扱うのに適している
汎用プログラミング言語ということでいいじゃないか?
それじゃなんかダメな理由でもあんのか?
557デフォルトの名無しさん:2011/12/25(日) 13:30:26.12
C++言語のスクリプト化がPHPだろ。
Javascriptも似ているがどっちを選ぶかと言ったらPHPだな。
558デフォルトの名無しさん:2011/12/25(日) 13:32:15.75
そういや、C++に一番似ているのはPHPかもしれんなw
559デフォルトの名無しさん:2011/12/25(日) 13:34:37.23
JavaScriptは汎用でないよ。
これこそブラウザ内で使うのに特化している言語。
ファイルの読み書きとか標準で付いてないだろ。
560デフォルトの名無しさん:2011/12/25(日) 13:44:37.46
今時、JavaScriptをブラウザ組み込み言語って認識はないよ。
561デフォルトの名無しさん:2011/12/25(日) 13:48:18.02
>>560
バーカ。
元々の話してるんだよ。

Perlはレポート作成言語だし、
PHPはHTML組み込み言語だし
JavaScriptはブラウザ組み込み言語だ

これらは汎用プログラミング言語ではない。
562デフォルトの名無しさん:2011/12/25(日) 13:48:50.58
>>561
> これらは汎用プログラミング言語ではない。

元々はなw

今は違う。

563デフォルトの名無しさん:2011/12/25(日) 13:49:56.22
>>549
本当にPython信者ってのは、Rubyに敵愾心を持っているんだなw
これがいわゆる「Zopeのトラウマ」って奴?
564デフォルトの名無しさん:2011/12/25(日) 13:54:48.09
実態はともかく、PHPもJavaScriptもWeb開発以外で使うっていう認識もやる気もないれす
565デフォルトの名無しさん:2011/12/25(日) 13:59:49.59
PHPはかなり便利だが。
C++でできてPHPにできないのは3Dグラフィックくらいでは。
566デフォルトの名無しさん:2011/12/25(日) 14:04:06.05
変数から$なくして
型宣言付ければ
C++に似ているな
567デフォルトの名無しさん:2011/12/25(日) 14:12:51.61
>>553

>Pythonやってるけど、この方針は知らない。PHPではなくて?

電池付属哲学
568デフォルトの名無しさん:2011/12/25(日) 14:13:20.87
実際、ElementTreeとか本体に取り込まれてる
569デフォルトの名無しさん:2011/12/25(日) 14:15:20.24
phpは実行時にコンパイルされるから速い。C#やJavaが実行時に各マシーンに対応する形式を生成するのと同じ事だ。

Zend Engineの仕組み
http://thinkit.co.jp/cert/article/0705/7/1/3.htm
570デフォルトの名無しさん:2011/12/25(日) 14:24:17.64
>>569
この記事の内容では、速いというのはPHP3と較べてだし、コンパイルされるのは中間コード。
JITコンパイルには触れてない。

571デフォルトの名無しさん:2011/12/25(日) 14:26:38.79
PHPのJITコンパイラ「HipHop Virtual Machine」、Facebookがオープンソースで公開
2011年12月12日


Facebookは10日、PHPを高速に実行する仮想マシン「HipHop Virtual Machine」(hhvm)を公開しました。

The HipHop Virtual MachineHipHop Virtual Machineは、PHPを高速に実行するためにPHPのコードをC/C++に変換してg++でコンパイルし、
バイナリコードにするHiphop compiler(hphpc)と、PHPのインタプリタであるHipHop interpreter (hphpi)を組み合わせたもの。
PHPのコードをダイナミックにバイナリコードへと変換することで、高速な実行を目指しています。
コンパイラと同等以上の実行速度へ
HipHopはFacebookが開発し、オープンソースとして公開しています。今回のHipHop Virtual Machineも、これらの開発の延長線上にあるものです。
http://www.publickey1.jp/blog/11/phpjithiphop_virtual_machinefacebook.html
572デフォルトの名無しさん:2011/12/25(日) 14:47:44.34
>>565
PHPでOpenGLあったよw
http://phpopengl.sourceforge.net/
573デフォルトの名無しさん:2011/12/25(日) 14:49:49.15
PHP汎用言語なんだから
なんでもできるでしょw
574デフォルトの名無しさん:2011/12/25(日) 15:02:46.39
PHP は OpenGL の他、SDL、Truevision3D が使える。
SDL はPHPエクステンションがあるし、Truevision3D は COM で扱える。
575デフォルトの名無しさん:2011/12/25(日) 15:05:44.60
535 名前:デフォルトの名無しさん[sage] 投稿日:2011/12/25(日) 06:27:33.78
PHPはHTML出力テンプレートであって、汎用プログラミング言語ではない (キリッ)
576デフォルトの名無しさん:2011/12/25(日) 15:12:34.58
初歩的なPHPの知識を持っている人なら簡単にWindows用GUIアプリケーションを作ることができるソフトです。
ウィンドウ、ボタン、エディットボックスなどの作成・配置には
プログラムを用いることなくグラフィカルに作成することができます。
統合環境になっていて、ビジュアルの作成だけでなくプログラムの作成、テスト起動、
さらにはコンパイル・ビルドしてEXEを作成することまで可能です。

http://hirata-create.lar.jp/?page=HC-wbRadStudio
577デフォルトの名無しさん:2011/12/25(日) 15:28:45.33
>>548
Ruby 覚えてから Java 1.4 程度の言語仕様なら1日で余裕だった。
578デフォルトの名無しさん:2011/12/25(日) 15:31:30.00
どの言語でも言語仕様を知るのは大して時間かからないよ。

時間がかかるのは、その言語で一番最適な開発方法。
コードの書き方から使用するライブラリの選定と
その使い方とかな。

言語仕様ってのはマニュアル読めば済むが
開発は試行錯誤が必要。
579デフォルトの名無しさん:2011/12/25(日) 17:26:01.04
やっぱPHPは楽しいなw
エラーログを消すために原因を調べようとエラーログでググったら、
そのエラーログをページ上に出力してしまってるページだけが
腐るほど引っかかるw
580デフォルトの名無しさん:2011/12/25(日) 17:28:38.04
それがPHPとどんな関係がるのか
581デフォルトの名無しさん:2011/12/25(日) 17:32:35.01
よく使われてるってこと。
582デフォルトの名無しさん:2011/12/25(日) 17:58:04.17
メンテナンスされてないサイトが多いんだね
583デフォルトの名無しさん:2011/12/25(日) 19:01:55.71
PHPって、ウェブフレームワークは大量な種類あるけど、全部独自のフルスタックで、横断的に使えるクラスライブラリがないんだよな。
qdmailとか個人的に作ってるライブラリはあるけど各自勝手にに開発されてて、まとまった形になってない。
584デフォルトの名無しさん:2011/12/25(日) 19:03:46.94
スクリプト言語でいちばん標準装備が充実してるのがPHPだろ。
本家がもっともPHPに貢献してる。
585デフォルトの名無しさん:2011/12/25(日) 19:55:02.00
>>583
Pearとか知ってる?
586デフォルトの名無しさん:2011/12/25(日) 20:05:50.57
pearに登録されてるモジュールとcpanやgemsに登録されてるモジュールを比べて見よう。
587デフォルトの名無しさん:2011/12/25(日) 20:10:56.70
バイナリでどの環境でもほぼ動くphp_*.dllをまずは使っていくべき。
テキストのソースコードはやむを得ないとき。
588デフォルトの名無しさん:2011/12/25(日) 20:29:02.37
>>586
比べてどうすんの?
589デフォルトの名無しさん:2011/12/25(日) 20:54:26.35
どの環境でも動くようにピュアPHPのライブラリ使うんじゃん。
590デフォルトの名無しさん:2011/12/25(日) 21:15:19.18
PHPって基本煽られてるけど煽られる欠点を埋めていって
いつのまにか非がつけられないような言語になっちゃうんじゃないか
591デフォルトの名無しさん:2011/12/25(日) 21:30:29.03
埋める必要のない欠点は埋めなくていいのにな
基本何もしなければ損もしない
592デフォルトの名無しさん:2011/12/25(日) 21:32:27.73
>>551
>>549
あーごめん変なこと書いた
もうRubyで半年くらい書いてるんだ。で、Ruby以外の言語も覚えたくてCとかJavascriptとかやったけど
CはめんどくさすぎるしJavascriptはブラウザでやるかWSHしかないし。
で、Rubyの経験がいきるかな?と思ってPythonはどうかな、とおもって書いた
593デフォルトの名無しさん:2011/12/25(日) 21:41:31.25
やりたければやればいい
わざわざ他人に聞いてどうすんの
馬鹿じゃね
594デフォルトの名無しさん:2011/12/25(日) 21:48:49.04
JavascriptならLinuxのコンソールでだって動くじゃないか。
まだまだ経験が足りんな。まあRubyで半年じゃその程度か。
595デフォルトの名無しさん:2011/12/25(日) 21:54:54.44
やめといた方がいい
きっとRubyが嫌いになる
596デフォルトの名無しさん:2011/12/25(日) 22:02:16.76
>>592
まあ、別に覚えて損はないと思うよ
じゃあ、とりあえず同じようにRubyを先に、Pythonをその後に覚えた俺が躓いた部分を教えておく

Pythonでクラス自作するときには、必ず親クラスをobjectと明示しとけ。
暗黙でObjectが親だから明示する必要はないなんて考えを捨てるべし。
597デフォルトの名無しさん:2011/12/26(月) 11:23:46.31
言語構造・文法よりも使いやすさ、軽さだな。
特にサーバーで動かすのに、一気に沢山来ても裁けるやつが優れている。
598デフォルトの名無しさん:2011/12/26(月) 11:52:14.23
つまりnodeさん最高と
599デフォルトの名無しさん:2011/12/26(月) 21:12:26.64
>>596
なんかこのスレ見るまでは、
Pythonってインデントでブロックを表現する変な言語だが、
それ以外は比較的まともな言語ってイメージだったんだけど、
いろいろ問題がありそうだな。

そう思う俺は Java がメイン。
Rubyは5年くらい前に使ってたかなw
600デフォルトの名無しさん:2011/12/26(月) 23:48:25.19
>>597
Twisted on pythonだな
601デフォルトの名無しさん:2011/12/27(火) 01:19:16.27
>>599
昔との互換性で残っちゃってる仕様、ってのがあるみたい。
上に挙げたのもその一つで、objectを最終的な基底クラスとしないものは
classic classと呼ばれ、現在の通常のクラスとは様々な場面で似て非なる動作をする。
602デフォルトの名無しさん:2011/12/27(火) 01:52:48.55
>>599
そんなあなたに Python3
603デフォルトの名無しさん:2011/12/27(火) 02:09:05.41
>>602
知り合いが「なんでreduceが無くなったんだ」とか
いくつか不満を漏らしていた記憶がある
いわゆるPythonらしいアプローチってのは、手続き的でも関数的でもないのかな?
604デフォルトの名無しさん:2011/12/27(火) 08:58:10.92
Pythonらしさか…関数的な用語や表記を使うこともあるが
基本的には手続き的だと思うよ

個人的に面白いなと思ったのは
forを使ったイテレータの多用と、それがリスト内包にまで絡んでるのと
オブジェクトに対する呼び出し操作、の応用範囲が広いことかな
関数オブジェクトに対する呼び出しが関数呼び出しなのは当然だし
メソッドが、メソッドオブジェクトとバインドされたフィールドに対する呼び出しなのも
JSとかで似たような実装だから分かるが
インスタンスの作成がクラスオブジェクトに対する呼び出し操作なのは驚いた
605デフォルトの名無しさん:2011/12/27(火) 09:45:02.49
> インスタンスの作成がクラスオブジェクトに対する呼び出し操作なのは驚いた
構文的にはC++と一緒なので特に驚かなかった
もっとも中身はメタクラス経由なのでSmalltalk系統だけど

> いわゆるPythonらしいアプローチってのは、手続き的でも関数的でもないのかな?
ファーストクラスの関数はあるけど、末尾最適化がなくリストが配列なので
Pythonで関数型をそのまま真似ても上手くいかない
Pythonの方向性はSTL登場以降のC++に一番似ていると思う
つまり手続きベースのマルチパラダイムでジェネリック指向
606デフォルトの名無しさん:2011/12/27(火) 16:53:29.29
へっ?
607デフォルトの名無しさん:2011/12/27(火) 17:15:31.51
いろんなモノが文な言語よりいろんなモノが式な言語のほうがより関数型言語って感じする
608デフォルトの名無しさん:2011/12/28(水) 09:29:20.74
Rubyのブロックが便利すぎて、Pythonをやめたくなった。
いちいちtemporaryな関数を作成してから目的の関数に渡していたのがばからしくなった。
609デフォルトの名無しさん:2011/12/28(水) 09:43:17.83
リストやジェネレータ式の内包表記が便利過ぎて
PythonからRubyには移行できないな
610デフォルトの名無しさん:2011/12/28(水) 11:03:14.91
日本人が開発の中枢にいるような言語はやめとけ。
どうせ廃れる。
611デフォルトの名無しさん:2011/12/28(水) 11:58:14.38
Pythonさんは、どうしてこう排他的かなぁ
両方やっても問題ないべ
612デフォルトの名無しさん:2011/12/28(水) 12:09:06.15
似たようなの2つもやるより
他のやったほうがいいわ
613デフォルトの名無しさん:2011/12/28(水) 12:25:49.99
他のも当然やればいいじゃん
新しい言語を覚えるってのは面白い発見があって楽しいよ
614デフォルトの名無しさん:2011/12/28(水) 12:34:31.54
Rubyの用途ってワンライナーとちょっとした処理の小物アプリがメインだと思うけど、
Pythonも同じような感じですか?
615デフォルトの名無しさん:2011/12/28(水) 13:03:58.26
>>614
Pythonならそれなりの規模のプログラムも書けるよ
俺はよく5000行ぐらいのクラスを書いてるけど、可読性も高いしバグも少ない
616デフォルトの名無しさん:2011/12/28(水) 13:08:35.69
>5000行ぐらいのクラス
それは分けろよ…
617デフォルトの名無しさん:2011/12/28(水) 13:24:41.84
5000行でそれなりってどんだけ規模小さいんだ
618デフォルトの名無しさん:2011/12/28(水) 13:32:00.10
> 俺はよく5000行ぐらいのクラスを書いてるけど、可読性も高いしバグも少ない

この一文でどれくらいのプログラマか判断してやれよ
そっとしておいてやれよ
619デフォルトの名無しさん:2011/12/28(水) 13:41:11.70
>>614
出来なくはないが、ワンライナは向いてるとは言いがたいなぁ。
自分はプロトタイプ作成や、小物ユーティリティ・ツール、アプリ組み込みに使ってます。

>>617
Pythonで *クラスが* 5000行もあるのはそれなりの規模と言えるよ。複数に別けてもいいサイズ・・というか別けた方がいい。
LLでは一般的に、Java等よりも短い行数で書けるし、その中でもPythonは end とか } 要らない分、更に少ない行数で済む。
620デフォルトの名無しさん:2011/12/28(水) 13:50:47.99
よく5000行ぐらいのクラスレベルのやつが何言っても説得力無いだろ
621デフォルトの名無しさん:2011/12/28(水) 13:51:15.80
クラスを書く
622デフォルトの名無しさん:2011/12/28(水) 13:53:13.78
Python2.7.1に含まれる*.pyの総行数は約60万行だが
5000行超えてるのは Lib/decimal.py だけ
623デフォルトの名無しさん:2011/12/28(水) 14:46:08.22
>>617
ライブラリだと十分大きいと思うが。
業務アプリしか書かないお前にはわからないんだろうな。
624デフォルトの名無しさん:2011/12/28(水) 15:00:55.04
皆それぞれ クラス、ファイル、プロジェクト全体の行数で誤読してる
625デフォルトの名無しさん:2011/12/28(水) 15:07:09.97
小さくて速いのがいいのだ
626デフォルトの名無しさん:2011/12/28(水) 15:08:51.86
>>609
>リストやジェネレータ式の内包表記が便利過ぎて

おれもそう信じてたけど、Rubyの、メソッド呼び出しを続けて書けるほうが便利だわ。
まるでjQueryみたい。といってもjQueryのほうが後発だけど。

たとえば「xsから0以上のものを選んで、その二乗の和を求める」場合
sum([ x*x for x in xs if x > 0 ])
これだと、後ろから読まないといけないんだよね。でも
xs.select{|x| x > 0}.map{|x| x*x }.sum
これなら頭からひとつずつ読めばいいから、わかりやすいし、考えたとおりに書きやすい。
まさにスクリプトって感じがする。
627デフォルトの名無しさん:2011/12/28(水) 15:46:32.51
Ruby にも Python にも yield あるけど意味が全然ちがう?
628デフォルトの名無しさん:2011/12/28(水) 15:49:37.12
>>626
そんなあなたにこのサイトをお勧めします
ttp://blogs.itmedia.co.jp/magic/2011/12/6886-2d5b.html
629デフォルトの名無しさん:2011/12/28(水) 15:55:19.77
Rubyのメソッドチェーンって内包表記より弱いと思う
ネストするmapとかflattenとかわかりくいよ

Python: [[x,y] for x in xs for y in xs]
Ruby: xs.map{|x| xs.map{|y| [x,y] } }.flatten(1)
630デフォルトの名無しさん:2011/12/28(水) 16:34:10.00
http://toro.2ch.net/test/read.cgi/tech/1249737531/593
[ プログラム ] Rubyについて(アンチ専用) Part004

593 名前:デフォルトの名無しさん [sage]: 2011/12/28(水) 14:05:05.31
本書くのはいいし、寄付をお願いするのもいいんだけど、
○○さんは5万円以上寄付してくれましたって、
具体的な金額が分かるようにするのはなんなの?
寄付金額で順位付けするって失礼だぞ!
そういうの分からないか?お前は?
多くの方は千円以上って、おいおい。
最下位の人は数百円ですって言ってるじゃん。
なんて言うか、今回のは不謹慎ではないけど、非礼だよね。
寄付者を順位付けて公開するのは止めたら?

書籍の執筆料を寄付方式で集めるのはいい方法だと思うけど、
集まった寄付金額について具体的に触れるのは失礼、礼を欠く行為だぞ。
> たのしいなかまがぽぽぽ〜ん君

彼の上司はこういう人間教育をしないのかね?
それか、寄付を集めなくてもいいように給料増やしてやれよwww

寄付者を寄付金額で順位付け
って失礼な行為だと自覚できないかな、ゆとりは
631デフォルトの名無しさん:2011/12/28(水) 16:46:47.02
Pythonは sum(x*x for x in xs if x > 0) かな

自分にとっては、逆に、後ろまで読まないと何を返してるかわからないのがデメリット。

後、そのメソッド・チェインでは
ブロックが呼び出される回数や selectとmapでそれぞれ一時的に配列を作ってるのが気になる。
632デフォルトの名無しさん:2011/12/28(水) 17:25:29.75
>>629
いっぽうメソッドチェーンは
orz.sage().hage().hoge().hige() タイプの問題には向いている
つまり向いている方向がちがう
(まあHaskellなら hige . hoge . hage . sage と書くだけだというのは置いといて)

強い弱いということで言うと、問題を解くのに必要な一番能力が弱い
(限定された)道具を使うという考え方があるようだよ

ベタ再帰は強い(汎用的)、がそれゆえ読むのに注意を必要とする
foldrは再帰よりは弱いが、foldrで表現可能な問題のクラス(原始再帰)はかなり
広いので、mapやfilterで済むならもちろんそのほうが望ましい

ではこの問題は弱いmapやfilterを結合させるほうがいいかというと、
俺はlist comprehensionのほうが集合表記そのもの=whatを表現していて好きだな
Pythonのlist comprehensionのsyntaxはあまり好きではないが
それは大きな問題じゃない
633デフォルトの名無しさん:2011/12/28(水) 17:44:09.18
確かにより汎用的な方が読みづらくなるな
メソッドチェインでもflatmapなんかは強い方の機能なのでこれが出ると読みづらくなってくる
ただ弱い方のメソッドをチェインだけで済むならそっちのが俺は見やすいわ
まあC#やscalaみたいに両方持ってて処理によって使い分けられるのが1番いいわ
634デフォルトの名無しさん:2011/12/28(水) 18:31:05.58
>>629
それはコーディングスタイルで改善できる
 xs.map { |x|
   xs.map { |y| [x, y] }
 }.flatten(1)

>>626の例なら、以下のようになる
 xs.select { |x|
   x > 0
 }.map { |x|
   x * x
 }.sum

先の例のような直積構造はネストとして水平軸に並ぶ
後の例のような合成構造はメソッドチェーンとして垂直軸に並ぶ
635デフォルトの名無しさん:2011/12/28(水) 18:37:40.14
同じじゃん
636デフォルトの名無しさん:2011/12/28(水) 18:41:30.42
メソッドチェーンで中間オブジェクトを作らないようなコンパイル時最適化ってされる?
637デフォルトの名無しさん:2011/12/28(水) 19:28:07.77
>>634
>先の例のような直積構造はネストとして水平軸に並ぶ
>後の例のような合成構造はメソッドチェーンとして垂直軸に並ぶ

なるほど。参考になった。さんくす。

>>632
>いっぽうメソッドチェーンは
>orz.sage().hage().hoge().hige() タイプの問題には向いている
>つまり向いている方向がちがう
>(まあHaskellなら hige . hoge . hage . sage と書くだけだというのは置いといて)

同意だな。Haskellは関数を逆順に並べているのが気になる。思考の順番と一致しないから。慣れかもしれないけど。
638デフォルトの名無しさん:2011/12/28(水) 19:30:17.68
>>631
>後、そのメソッド・チェインでは
>ブロックが呼び出される回数や selectとmapでそれぞれ一時的に配列を作ってるのが気になる。

それはたしかにデメリットかもしれないけど、その程度の性能低下を気にするなら、そもそもPythonもRubyも使うべきじゃないでしょ。
なんのためにスクリプト言語を使うのか。それは考えていることをそのまま表現しやすいから。
それを実現してくれるなら、多少の性能低下はちっとも気にしない。
それよりも、少しでも頭で考えていることをそのまま表現できるかどうかを気にする。

つーかあれだな、ちょっとでもPythonを批判しようものなら、
639デフォルトの名無しさん:2011/12/28(水) 19:34:08.58
one liner だとつらいな
640デフォルトの名無しさん:2011/12/28(水) 19:56:09.23
メソッドチェーンってバグをわかりにくくするだけだと思うなあ。もちろん性能面もあるし。linqとかは良いと思うけど。
641デフォルトの名無しさん:2011/12/28(水) 20:18:14.71
内包表記もネストしたらきちんと改行インデントしないと読みづらいよ
642デフォルトの名無しさん:2011/12/28(水) 20:28:45.92
同じメソッドチェーンでも、linqなら良いけどrubyなら悪い .....
一言で言うと「俺はRubyが大嫌いなんだぁーー」ということですな

どうやらPython厨にとって、メソッドチェーンは「酸っぱい葡萄」らすい
643デフォルトの名無しさん:2011/12/28(水) 20:30:42.37
>>637
> 同意だな。Haskellは関数を逆順に並べているのが気になる。
> 思考の順番と一致しないから。慣れかもしれないけど。
.は数学の関数合成と同じなので……
パイプっぽい順序で書かせる道具としては
HaskellにはArrow, F#にはパイプライン演算子というのがある
644デフォルトの名無しさん:2011/12/28(水) 20:40:47.81
それと、F#の関数合成は>>、<<と二種類あって、見た目通りの順序の適用になる
(f >> g) x = g(f(x))
(f << g) x = f(g(x))
ということね

定義は自明で単純
let (>>) f g x = g (f x)
let (<<) f g x = f (g x)
このようなものがほしければ、もちろんF#に限らずOCamlでもHaskellでも作れる

関数合成で記述する利点は、x.f().g()はg(f(x))はxが無いとかけないけど
g . fならxを消せて、なおかつ独立した式(関数)になっているというところ
つまり後者で書いているほうが一般性が高い
(lambda (x) g(f(x)))
と書いても同じになるが、g . fに比べて冗長この上ない
645デフォルトの名無しさん:2011/12/28(水) 20:53:05.75
LINQは遅延評価されるからな。
646デフォルトの名無しさん:2011/12/28(水) 20:56:19.59
そもそも変数名自体が邪魔だと言い放ったPowerShellさんさすがです

#テキストファイルを作成日時順に並べてフルパスを列挙
dir | ? Name -match ''\.txt$" | sort CreationTime | % FullName
647デフォルトの名無しさん:2011/12/28(水) 21:08:54.18
>>645
Rubyでも、必要とあればオプションパッケージで
メソッドチェーンの遅延評価は可能だよん(ニヤニヤ

・Rubyist Magazine - enumerable_lz による遅延評価のススメ
  http://jp.rubyist.net/magazine/?0034-Enumerable_lz
648デフォルトの名無しさん:2011/12/28(水) 21:09:45.60
>>646
FPに通じるものがあるのかな?
649デフォルトの名無しさん:2011/12/28(水) 21:14:02.64
Pythonのリスト内包表記って、Haskellのリスト内包表記みたいに遅延評価されるん?
650デフォルトの名無しさん:2011/12/28(水) 21:27:07.64
リスト内包表記は遅延評価されないけど
ジェネレータ式は内包表記で書けてかつ遅延評価される
651デフォルトの名無しさん:2011/12/28(水) 21:28:11.76
組み込みのmapとかgrepが駄目って事だろ。LINQならSQLやXMLも同様に扱えるし。VSで補完も聞く。
652デフォルトの名無しさん:2011/12/28(水) 21:36:55.69
>>649
Pythonの"リスト内包表記"は遅延評価されない、リストを返す。"ジェネレータ式"が遅延評価版。
Python内では区別あるけど、こういう話の流れだと文脈によっては後者を指すこともある。

Haskellと違うところと言えば、2.x 系では一時変数のスコープの問題あり。(3.x系で改善)
653デフォルトの名無しさん:2011/12/28(水) 21:47:21.27
>>651
遅延評価が必須なのは無限を扱うケースだけど、
LLにとって一般的なプログラミングじゃほとんど使われる事は無いのだから
Rubyでオプションパッケージ扱いなのは妥当な判断じゃないかと思う
しかも map を map_lz (あるいは select を selet_lz) へと書き換えるだけという簡潔さがあるし

それに対してPythonの場合には、わざわざジェネレータ式としてロジックを再設計せにゃならんから面倒クセー

あと、そもそもLINQは汎用言語じゃないから、このスレじゃ比較の対象にはならんぜよ
654デフォルトの名無しさん:2011/12/28(水) 21:54:12.95
> それに対してPythonの場合には、わざわざジェネレータ式として
> ロジックを再設計せにゃならんから面倒クセー
これはちょっと言いたいことがよくわからない
リスト内包との違いはカッコとして[]を使うか()を使うかだけだよ

> あと、そもそもLINQは汎用言語じゃないから、このスレじゃ比較の対象にはならんぜよ
これもちょっと言いたいことがよくわからない
655デフォルトの名無しさん:2011/12/28(水) 22:09:14.56
>遅延評価が必須なのは無限を扱うケースだけど、

メモリ上に不要な中間オブジェクトを生成したくないってケースもある。

ライフスパンの短いスクリプトでは不要かもしれないけど、
サーバアプリ等では有用だよ。
656デフォルトの名無しさん:2011/12/28(水) 22:15:52.33
>>655
>サーバアプリ等では有用だよ。
具体的にどう有用なの?教えてくださーい
657デフォルトの名無しさん:2011/12/28(水) 22:16:49.11
>>655
中間オブジェクトというなら
評価が終わるまで破棄できないオブジェクトを早く破棄するために評価を終わらせるべき
だから遅延するべきではない
658デフォルトの名無しさん:2011/12/28(水) 22:27:33.10
>>657
遅延評価のようなものが意味をもつのはコレクションの要素サイズやコレクション総サイズが大きい場合だろう
遅延かけてもらったほうが総サイズ的にはマシという場合はままある
増える消費メモリったって数MBなんだからそんなとこ気遣わずにとっとと終わらせろという場合ももちろんあるはず
659デフォルトの名無しさん:2011/12/28(水) 22:34:00.24
>>654
>リスト内包との違いはカッコとして[]を使うか()を使うかだけだよ

Rubyの場合は、遅延評価の有無を「メソッド名の違い」として表現できる
だから、その気になればこんなコードも書ける(普通はこんなの書かないけど....)

 xs.send(
   if lazy then :select_lz else :select end
 ) { |x| ..... }

それに対して、Pythonは「構文の違い」として表現しなければならない

言語としての表現力/柔軟さの差異は、明白じゃないかな? -- "Simple is Power!!"
(その代わり、Rubyは処理効率を犠牲にしているけどね ....)

>> あと、そもそもLINQは汎用言語じゃないから、このスレじゃ比較の対象にはならんぜよ
>これもちょっと言いたいことがよくわからない

LINQはデータベース検索という用途(ドメイン)に特化した言語機構ではないの?
あと>>651のLINQとはPynq(LINQのPython実装)を指していると思うんだけど、
同じオプションパッケージであってもPythonのPynqは良くてRubyのenumerable_lzは悪いのかな?
660デフォルトの名無しさん:2011/12/28(水) 22:37:37.39
遅延評価がデフォな言語の立場は、常に遅延評価ならば、そもそもそういう
「場合わけ」を必要としない(この場合はサイズが小さいからどうでもいいけど
この場合はサイズがでかくなるかもしれないからストリームにしよう、とか)
→コードの汎用性・再利用性が高められてイイ!ということのはず

もちろん少なくとも慣れていない人間にとっては動きが理解しにくく
スペースリーク等の罠にはまりやすいという欠点ももちろんあるわけだけれども
(一見tail callで実装できるので効率がよさそうに見えるfoldlが
 スペースリークしまくりとか)
661デフォルトの名無しさん:2011/12/28(水) 22:40:08.65
> LINQはデータベース検索という用途(ドメイン)に特化した言語機構ではないの?
ぜんぜん違います

リストとジェネレータ式に関しては、言いたいことは分かった、なるほどね
もっともPythonもitertoolsだと同じもののgenerator版を「関数として」提供してる
わけだけどね

662デフォルトの名無しさん:2011/12/28(水) 22:40:12.63
個人的にはRubyにもリスト内包欲しいなあ
flattenだと3重ネストしたリストの最後だけ展開したくない、とかいうときに面倒いし
それ以外は右へ右へ書けて凄い楽なだけに
663デフォルトの名無しさん:2011/12/28(水) 22:45:30.53
メソッドチェインなんてライブラリの設計次第でどうにでもなる
PythonどころかJavaでもできる
内包表記は構文でサポートしないと難しい(マクロがあれば別だが)
664デフォルトの名無しさん:2011/12/28(水) 22:52:10.97
>>660
ランダムアクセスするなら配列。
しないならループか関数。
なぜサイズを考える必要があるのか分からない。
665デフォルトの名無しさん:2011/12/28(水) 22:56:14.61
>>664
上の話の流れをよんでちょうだい
selectという関数をselect_lzと使い分けるかどうかという話がでてたでしょ
全てが遅延ならそういうものは要りませんよという話
666デフォルトの名無しさん:2011/12/28(水) 22:59:22.93
>>661
>ぜんぜん違います

違うと言いたんなら、その違いを説明しておくんなさいまし

>もっともPythonもitertoolsだと同じもののgenerator版を「関数として」提供してるわけだけどね

そのとおり
Pythonでは、わざわざ「関数として」表現しなければならないからダサイけど、
Rubyではメソッド名を hoge から hoge_lz にするだけですむからスマートだよね
667デフォルトの名無しさん:2011/12/28(水) 23:00:50.44
関数がメソッドよりダサイってのはどういうセンスだ?
668デフォルトの名無しさん:2011/12/28(水) 23:02:20.51
>>666
Linq to Objectでぐぐるといいと思うけど
簡単に言うとSystem.Linqが提供するのはIEnumerableインタフェースに対して
map, filter, foldみたいなリスト処理っぽい関数群で、
それをSQLライクなプチDSLっぽい記法でも書けるようになっている
SQLに似てるけど、こっちの記法は意味的には内包表記に近い

つまり別にDBというドメインに特化された要素じゃないです
DBにも使えるけど
669デフォルトの名無しさん:2011/12/28(水) 23:07:13.23
Linqの場合はPLinqというのもあって、要はパラレルmapみたいなのを
発動させることができる
.NET5ではasync/awaitのような新たな構文で、容易に非同期処理が記述できるようにも
なった

コルーチンや継続を用いると状態遷移地獄やコールバック地獄に比べると
通常の手続き型のコード記述と同じようにかけて楽なのを知ってる人は
有難味がすぐわかると思う
670デフォルトの名無しさん:2011/12/28(水) 23:23:31.48
コルーチンは完全な手続き型だから
なんか江戸時代に戻るみたいな恐怖を感じる人には難しい
671デフォルトの名無しさん:2011/12/28(水) 23:29:40.03
.NETは手続き型だからそれでいいのよ
継続モナドとか言っても仕方がない
672デフォルトの名無しさん:2011/12/28(水) 23:36:39.67
>>668,669
LINQがListやArrayのような一般的なコレクションに対して使えるのは分かるけど、
「LINQ単体では汎用言語としては成立しない」よね?ってことを言いたいんだけど ....
もしも Pynq というPythonのオプションライブラリを指しているのなら、Pynqと書いて欲しい

あと、PynqはActiveRecordモドキだね
以下はPynqのサイトにあった例だけど、

 filtered_collection = From(some_collection).where("item.property > 10").select_many()

コード中にSQL文を文字列として埋め込むのと比較すればズッと楽チンだと思うけど、
現実としてPynqをListやArrayに使う気にはならないね
ナゼ文字列で抽出条件("item.property > 10")を書かにゃならんの?ダサイよ

もしもPynqをimportするだけで

 filtered_collection = [item for item some_collection if item.property > 10]

みたいなコードが書けたんなら、
「Pythonスゲー、しかもLINQはDBに特化していないゼ」と認めるんだけどなぁ ....
673デフォルトの名無しさん:2011/12/28(水) 23:40:55.28
>>672のtypoを訂正("in" が抜けていた)

X: filtered_collection = [item for item some_collection if item.property > 10]
O: filtered_collection = [item for item in some_collection if item.property > 10]
674デフォルトの名無しさん:2011/12/28(水) 23:46:37.01
>>672
俺はLinqに関してはPythonの話はぜんぜんしてないぞ
何を言いたいのかよくわからん
675デフォルトの名無しさん:2011/12/28(水) 23:48:40.12
ちなみにLinqの並列実装ってのはこれのことな
http://msdn.microsoft.com/ja-jp/library/dd460688.aspx
676デフォルトの名無しさん:2011/12/28(水) 23:59:47.76
>>674
Linqの話をしたいだけなら、スレ違いだろ
スレタイ嫁
677デフォルトの名無しさん:2011/12/29(木) 00:01:51.18
PLinqをPynqと空目したんじゃね?
678デフォルトの名無しさん:2011/12/29(木) 00:02:11.43
メソッドチェーンで形勢が不利なので、Python信者が必死に話題を逸らしていると思われ
679デフォルトの名無しさん:2011/12/29(木) 00:05:54.03
>>676
Linqの話を持ち出したのは俺じゃねーよwww
>>632ぐらいから徐々に話が広がってきて>>640あたりで出てきた話

> LINQはデータベース検索という用途(ドメイン)に特化した言語機構ではないの?
こういう誤解に基づいて意味不明なこと書いてるからつっこんだだけだっつーの
680デフォルトの名無しさん:2011/12/29(木) 00:07:41.77
メソッドチェーンが関数型の方法に比べて特に優れている点があるようには思えないが
パイプ順に書きたければ書けるし
681デフォルトの名無しさん:2011/12/29(木) 00:09:41.45
流れに即して言うなら、Linqはメソッドチェーン風にも内包表記風にも書けるから
あの流れで出てきたんじゃないかと想像するがなんともいえん
682デフォルトの名無しさん:2011/12/29(木) 00:30:35.72
>>680,663
Pythonには関数型として致命的な弱点があるから、メソッドチェーンでは簡潔なコードが書けない
たとえば「(1) Rubyは 条件判定が(文ではなく)式」だから以下のようなコードが書ける
 ys = xs.select { |x|
   if test
     if test_1 then test_1_1 else test_1_2 end
   else
     if test_2 then test_2_1 else test_2_2 end
   end
 }
あるいは「(2) Rubyはブロック内で局所宣言が可能」だから上のコードを以下のように書き換えてもいい
 ys = xs.select { |x|
   cond_1 = if test_1 then test_1_1 else test_1_2 end
   cond_2 = if test_2 then test_2_1 else test_2_2 end

   if test then cond_1 else cond_2 end
 }
関数型言語であれば「(1) 条件判定(if/case)が式」で「(2) 局所宣言(let .. in .. end)が可能」なの当たり前
ところが残念な事に、どちらもPythonには欠落しているから、上の例はストレートにコード化できない
だからPythonではメソッドチェーンは使われないし、「酸っぱい葡萄」に見える
683デフォルトの名無しさん:2011/12/29(木) 00:33:58.04
>>646
Forthも変数名いらないよ
684デフォルトの名無しさん:2011/12/29(木) 00:37:06.68
Rubyでもリスト内包表記が言語として組み込まれてくれると嬉しい
・リスト内包表記はトップダウン思考
・メソッドチェーンはボトムアップ思考
だと思う

頭に浮かんだロジックをすばやくコード化するのはメソッドチェーンが適しているし、
じっくり腰を据えてコード設計するならリスト内包表記のほうが美しい

自分は、たぶんこのスレもRubyコアの中の人も見ているだろうから
そのうちRubyにもリスト内包表記が実装されるんじゃないかと期待しているw
685デフォルトの名無しさん:2011/12/29(木) 00:41:32.98
matzはリスト内包表記が好きじゃなかったはず
(ほぼ全てがメソッド呼び出しで処理される均質性が損なわれる)
だから恐らく言語コアには入らない
686デフォルトの名無しさん:2011/12/29(木) 00:43:42.61
Lispのloopマクロも好き嫌いわかれるみたいだな
Paul Grahamは嫌いだそうな
687デフォルトの名無しさん:2011/12/29(木) 00:59:51.90
Python信者も大変だなw
Zopeには惨いトラウマがあるし、メソッドチェーンは酸っぱい葡萄だし
688デフォルトの名無しさん:2011/12/29(木) 01:02:55.92
C#やScalaみたいに両方持ってる言語は内包表記はメソッドチェーンのシンタックスシュガーとして実装されてるな
なのでそれに習えばRubyに入れるのもそんな難しくなさそうだがな
689デフォルトの名無しさん:2011/12/29(木) 01:14:50.49
>>656
馬鹿には無理
690デフォルトの名無しさん:2011/12/29(木) 01:19:27.00
>>664 >>666
基地外はひとりでいいよ
691デフォルトの名無しさん:2011/12/29(木) 01:58:28.95
メソッドチェーンを許すとこんなやつが出てくる

562 デフォルトの名無しさん [sage] 2011/12/29(木) 00:21:13.77 ID: Be:
>>560
(1..1000).map {|v| v * 2}.each {|v| print v} なんかも 1000回のループで済んじゃうの?

563 デフォルトの名無しさん [sage] 2011/12/29(木) 00:27:44.14 ID: Be:
>>559
100個要素があるArrayに対していくらcollectをつなげても、
処理回数もメモリの使い方も100+100+100+...
みたいな増え方しかしないだろ?

>>562
それのループ回数は2000回だろ?
692デフォルトの名無しさん:2011/12/29(木) 02:38:40.37
PHP使ってるんだけどフレームワークに興味出てきたんだ。でもcake覚えるよりこの際新たにruby覚えてrailsって流れかが良い気もするなぁ。
LLのフレームワークってどれも難易度は似たようなもんなの?
693デフォルトの名無しさん:2011/12/29(木) 02:40:06.65
webはweb板で
http://kohada.2ch.net/php/
694デフォルトの名無しさん:2011/12/29(木) 03:24:03.80
難易度って低くなかったら使う意味ないだろ。
開発を簡単にするためのもの。
LL言語で重要なことは生産性だろ。
それが悪いんだったら導入することがない。
695デフォルトの名無しさん:2011/12/29(木) 08:23:49.57
>>682
こういうこと?別に書けなくはないじゃん

ys = [ x for x in xs
        if (
            (test1_1 if test1 else test1_2) if test else 
            (test2_1 if test2 else test2_2)
            )
     ]

ys = [ x for x in xs  
        for cond1 in [test1_1 if test1 else test1_2]
        for cond2 in [test2_1 if test2 else test2_2]
        if (cond1 if test else cond2)]
696デフォルトの名無しさん:2011/12/29(木) 08:41:20.91
pythonとかrubyとか何年前の話題だよw
まだそんなの弄ってるヤツいるんだっけ?
697デフォルトの名無しさん:2011/12/29(木) 08:51:03.45
いまだにJava弄ってる底辺ドカタすら大勢いるんだから
そりゃいるだろう
698デフォルトの名無しさん:2011/12/29(木) 09:05:01.44
pythonとかrubyも頻繁に更新されてるだろ
699デフォルトの名無しさん:2011/12/29(木) 10:14:38.26
>>697
ウケルw
はやく人間になれよw
700デフォルトの名無しさん:2011/12/29(木) 10:48:07.31
>>682
>あるいは「(2) Rubyはブロック内で局所宣言が可能」だから上のコードを以下のように書き換えてもいい

結果は同じかもしれないけど、等価な書き換えじゃないので例が良くないと思う。
cond_1,cond_2 どちらか片方しか評価する必要ないよね?


>>695
下のコードは間違ってるんじゃないかな?cond_1 か cond_2 のリストになるはず。
内包表記内での手続きはあまり向いてないので。Pythonの場合、工夫して出来上がっても
そっちのアプローチは、恐らく読みにくくて効率の悪いコード。
701デフォルトの名無しさん:2011/12/29(木) 11:32:55.71
★20年前
BASIC:楽しくプログラミングしましょう
俺:BASICかわいいよかわいい
半年後
BASIC:たーのーしーくーぷーろーぐー
俺:ごめん遅いよ……

★19年前
アセンブラ:BASICちゃん遅すぎるよね
俺:アセンブラ可愛いよ可愛い
三日後
アセンブラ:ヒャッハーッ!

★14年前
C&C++:アセンブラちゃんわけわかんないよね
俺:CとC++可愛いよ可愛い
三時間後
C&C++:ヒャッハーッ!

★10年前
Perl:なんでも言ってよね
俺:Perl可愛いよ可愛い
半年後
Perl:あぁぁあああだしいぉわかってェエエエ
俺:何いってんのかわかんないよ……

★3年前〜今
Python:ちゃんとしてればなんでもしてあげる
俺:Python可愛いよ可愛い

RubyはPerlの妹っぽくて怖い
702デフォルトの名無しさん:2011/12/29(木) 11:36:48.47
お前のセンスが一番怖いわw
703デフォルトの名無しさん:2011/12/29(木) 12:09:07.51
>>700
>>682はよくあるミスだな
if cond then cond(1) else cond(2) end

res1=cond(1)
res2=cond(2)
if cond then res1 else res2 end
と同一ではない

$ cat a.rb
def cond(x); puts "cond#{x}"; return x; end
puts "=line="
puts (if true then cond(1) else cond(2) end)
puts "=var="
res1=cond(1)
res2=cond(2)
puts (if true then res1 else res2 end)
$ ruby a.rb
=line=
cond1
1
=var=
cond1
cond2
1
704デフォルトの名無しさん:2011/12/29(木) 12:56:31.67
DTが多そうなスレだな
705デフォルトの名無しさん:2011/12/29(木) 13:24:32.94
今日こういうHPを発見し、疑問が確信へと変わりました。
ttp://www.kyodonews.jp/feature/news05/2011/07/post-2744.html
ttp://www.enecho.meti.go.jp/info/tender/tenddata/1106/110624b/110624b.htm (一番下の3番・仕様書)

もうこの国に対しては不信と絶望感しか残りません。
本当に自己防衛の時代に入ってしまったんですね。。。
706デフォルトの名無しさん:2011/12/29(木) 13:35:32.53
やっぱブロックで局所化出来るって良いな。
707デフォルトの名無しさん:2011/12/29(木) 13:46:53.27
>>706
perl唯一の強みだな。
708デフォルトの名無しさん:2011/12/29(木) 13:49:19.34
>>700
> 下のコードは間違ってるんじゃないかな?cond_1 か cond_2 のリストになるはず。

なんでそうなる?Pythonのコード読めないのか?せめて実行してみたか?
まあ>>695のようなコードは普通書かないけども。
709デフォルトの名無しさん:2011/12/29(木) 14:02:40.79
pythonって未だに関数スコープなんだよなあ。
710682:2011/12/29(木) 14:21:49.56
>>700
指摘ありがと、確かにその通りだ
cond_1とcond_2は直和構造(排他)で必ずどちらか一方の評価結果が無駄になるから、例として不適切だった
では、直積構造(組合せ)を使って局所宣言の例題を書き直してみた
 ys = xs.map { |x|
   h = if x.first_page? then generate_header else nil end
   b = generate_body x
   f = if x.last_page? then generate_footer else nil end

   Document.new h, b, f
 }
711682:2011/12/29(木) 15:05:28.17
>>695のPythonコードが読みづらい原因はif演算子の構文にある
条件判定が式である言語に限定して、それらの構文を比較してみる

Ruby:
  if 条件式 then 式1 else 式2 end
Smalltalk:
  条件式 ifTrue: [ 式1 ] ifFalse: [ 式2 ]
Lisp:
  ( if 条件式 式1 式2 )
ML:
  if 条件式 then 式1 else 式2
Haskell:
  if 条件式 then 式1 else 式2

Python:
  式1 if 条件式 else 式2

普通の言語は「条件式 -> 式1 -> 式2」と左から右へ流れる(それが自然)
それに対して「Pythonだけ」は「式1 <- 条件式 -> 式2」と
左へ右へと行ったり来たりしないとコードが読めない

プログラミング言語界の中で「Pythonだけ」が異端な存在で、可読性の悪い構文が採用されている
これは明らかにPython開発陣の言語設計ミス、あるいは判断ミスだね
712デフォルトの名無しさん:2011/12/29(木) 15:06:28.81
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。
713デフォルトの名無しさん:2011/12/29(木) 15:07:12.57
>>711
馬鹿ですねわかります
714デフォルトの名無しさん:2011/12/29(木) 15:11:08.00
>>710

ys = (Document.new(h,b,f) for x in xs
        for h in [generate_header() if x.is_first_page else None]
        for b in [generate_body(x)]
        for f in [generate_footer() if x.is_last_page else None])
715デフォルトの名無しさん:2011/12/29(木) 15:14:06.33
>>711
else は知らないが、式修飾子は, Perl にも Ruby にも PHP にもあるでしょ。
まぁでも、使えるからといって、使うと見づらくなるんで、
使わないことにこしたことはないが。
716デフォルトの名無しさん:2011/12/29(木) 15:20:36.45
エロス
717デフォルトの名無しさん:2011/12/29(木) 15:21:11.83
たしかにpythonの三項演算子は他の言語から移ってきたら、ん?ってなるよね
素直にC言語風の?:使った奴は無理だったのかしら

まあif文と三項演算子に分けずに
if式1個で事足りてる言語が1番シンプルでいいと思う
718デフォルトの名無しさん:2011/12/29(木) 15:24:12.59
Pythonの:にはすでに重要すぎる役目が割り振られているからなあ
719682:2011/12/29(木) 15:25:31.53
さらにPythonの弱点を付け加えよう
>>682の条件判定は論理値による二分岐だったけど、多分岐の例を以下に示す
 ys = xs.select { |color|
   case color
   when :green
     true
   when :yellow
     true
   when :red
     false
   else
     raise RuntimeError
   end
 }
おそらくPythonでも if .. else をネストさせれば「別に書けなくはない(>>695)」かもしれないが、
おそらく「カッコだらけ」のスマートさに欠けたコードになる

ちなみに>>711に挙げた言語の中で、Ruby/Lisp/ML/Haskellには多分岐の専用構文が用意されている
(正確にはLispの多分岐は構文では無いが、自然に書けるという意味で仲間に入れてみた)
720デフォルトの名無しさん:2011/12/29(木) 15:34:27.99
Pythonは関数内関数でいいじゃんっていう文化だから
別に弱点にはならんよ
721デフォルトの名無しさん:2011/12/29(木) 15:36:38.17
そういやPerlにはswitch文がないんだっけ。
ほかのしょーもない機能はたくさんあるくせに、なんでswitch文がないんだっけ?
722デフォルトの名無しさん:2011/12/29(木) 15:36:42.29
内包表記と同じ感じだな〜
for文は左から右、上から下に読み下せばいいのに内包表記だとそれが崩れる
if文も左から右、上から下に読み下せばいいのに三項演算子だとそれが崩れる
同じキーワードを使った似たような機能なので違和感が伴う

内包表記はF#風な感じにすればよかったし三項演算子はC言語風味にすればよかった
723デフォルトの名無しさん:2011/12/29(木) 15:41:15.37
例えばみんな手作業でマグロの一本釣りしてるのに一人だけ全自動リール使って楽してたら
空気読めない奴だと思われて村八分にされるのが落ちだろ
全自動リールってすごいね俺も今度からそれ導入しよう!とは絶対にならない
日本とはそういう国だ
724デフォルトの名無しさん:2011/12/29(木) 15:43:31.83
>>721
given/whenってのがあるよ
725デフォルトの名無しさん:2011/12/29(木) 15:46:10.96
火事と葬式以外は自動
全自動とはそういう事だ
726デフォルトの名無しさん:2011/12/29(木) 15:51:48.32
>>721
確かモジュールで多分岐の実装が存在する
つか、それすらuseで何とかなっちゃうのがおかしいがw
727デフォルトの名無しさん:2011/12/29(木) 15:52:10.77
pythonの三項演算子知らない奴がコード見たら、他の言語の三項演算子知ってたとしても
「HAHAHA、こいつifの書く場所間違ってやがるぜ。」って思うだろうな
728デフォルトの名無しさん:2011/12/29(木) 15:56:15.28
>>719

ys = (x for x in xs if {'green': True, 'yellow' : True, 'red' : False }[x])
729デフォルトの名無しさん:2011/12/29(木) 16:08:44.57
RubyにもC風の三項演算子( .. ? .. : .. )はあるけど、
if .. then .. else .. end があるからほとんど使わないね
可読性が悪くなるから

三項演算子を使うのはワンライナーで書ける単純な判定や、
irbで対話的に入力する(とにかくタイピング数を減らしたい)場合だけ
730デフォルトの名無しさん:2011/12/29(木) 16:39:05.58
>>714
generate_(header|body|footer)のインデントが揃ってるから
Rubyで書かれた>>710よりも読みやすいな
731700:2011/12/29(木) 16:42:03.73
>>708
ゴメン、中途半端にrubyのコードを読み違えてた。collect/select
読めるけど、未定義の変数が多いので実行はしてない。

----
一応、主張しておくと

プログラマの負担の軽減という点からのPythonの利点は、
慣習に従って書けば、自然と読みやすく(Python処理系にとって)効率の良いコードになる事なので、
(これをやり方を矯正されると捉える人にとってはストレスになるらしいが)

工夫して書けなくもないからとバッドノウハウで応対するのは、
誤解を与えるだけだと思う。
732デフォルトの名無しさん:2011/12/29(木) 18:43:38.89
> 慣習に従って書けば、自然と読みやすく(Python処理系にとって)効率の良いコードになる事なので、

根拠はあるのか?


ぶっちゃけインデントの話しか聞いたこと無いんだが。

733デフォルトの名無しさん:2011/12/29(木) 18:47:03.79
三項演算子もメソッドチェーンも使わなくても構わないだろ。
734デフォルトの名無しさん:2011/12/29(木) 19:21:12.82
このスレみてるとたまにメソッドチェーンがどうたらこうたら、
だがPythonはうんたらかんたらって出てくるけど、
メソッドチェーンの対比として、なにがいいたいのか全然わからない。

メソッドチェーンって、インスタンスメソッドを実行したときにthisを返すだけだろ?
this.hoge().hoge().hoge().hoge();
って書かないなら、
this.hoge();
this.hoge();
this.hoge();
this.hoge();
って書くしかないと思うんだけど。
735デフォルトの名無しさん:2011/12/29(木) 19:24:44.25
>>734
thisを返すものよりも、どちらかと言えばリストとかを新規に返すもののほうがチェーンっぽい感じがする
736デフォルトの名無しさん:2011/12/29(木) 19:36:12.87
コレクションに対してmapやらfilterやらをメソッドチェーンして操作するのが割と最近の言語には入ってるんだよ
最近のjsとかにも入ってるし次のバージョンのJavaにすら入る
んでこういうスタイルをなんていうのかわかんないからとりあえずこのスレのみんなはメソッドチェーンって言ってる
ちなみにこれはthisじゃなくて新しいコレクションを作って返す
737デフォルトの名無しさん:2011/12/29(木) 19:46:19.61
メソッドチェーンは言語の話ではなくライブラリの話だろう。
thisを返すことを基本としたライブラリであれば、
どんな言語でだってメソッドチェーンはできる。

Pythonは、メソッドチェーンが出来るように
thisを返すことが義務付けられているのか?
それともthisを返すライブラリまで含めてPythonなのか?

それにメソッドチェーンであれば読みやすいという根拠もよくわからない。
俺の意見はVB6のwithはメソッドチェーンより優れた機能だ。

例 VB6のwithをC言語っぽく書いた。
with(obj) {
 .hoge();
 .hage();
 .hige();
}
738デフォルトの名無しさん:2011/12/29(木) 19:50:36.70
チェーンならSmalltalkだよな
「;」をつけるだけでいくらでもつなげられるなんて素晴らしい
具体的にどうすごいのかは他の人に任せる
739デフォルトの名無しさん:2011/12/29(木) 19:54:57.09
具体的にどうすごいのかわからない。
みんな同じ意見だろう?

デバッグがしづらくなるだけって
みんな気づいているだろう?


あれ?動かない? どこまで正しく動いているんだよって
思いながら改行入れて変数に・・・とここまで言えば
俺が何やってるかわかるだろ?w
740デフォルトの名無しさん:2011/12/29(木) 19:55:50.64
行単位でのステップ実行しかできないのが
いかんよね。
741デフォルトの名無しさん:2011/12/29(木) 20:23:15.23
>>721
5.10からある(´・ω・`)
742デフォルトの名無しさん:2011/12/29(木) 20:59:08.35
はやめにswitch入れとかないからもうperl使ってないし
743デフォルトの名無しさん:2011/12/29(木) 20:59:33.83
thisを返すメソッドでチェーンするのは流れるようなインタフェイス(fluent interface)と呼ばれているね。

>>739
RubyにはObject#tapというメソッドがあってですね。

a = (1..1000).map {|v| v * 2}.tap{|xs| p xs}.select{|i| i % 1000 == 0 }

メソッドチェーンの途中に挟んで p デバッグができる。
デバッガ使ってるなら途中までの式を実行すりゃ良い話だし、別に困らない。
744デフォルトの名無しさん:2011/12/29(木) 21:02:18.22
具体的にどうすごいのかわからない。
みんな同じ意見だろう?

デバッグがしづらくなるだけって
みんな気づいているだろう?


あれ?動かない? どこまで正しく動いているんだよって
思いながらtap・・・とここまで言えば
俺が何やってるかわかるだろ?w
745デフォルトの名無しさん:2011/12/29(木) 22:09:17.70
これからの言語としては単にメソッドチェーンでコレクションを操作じゃまだまだで
並列コレクションがあって1人前みたいになってくるのかも
746デフォルトの名無しさん:2011/12/29(木) 23:12:11.41
カメラと財布とワンセグがあって1人前みたいなのはもう飽きた
747デフォルトの名無しさん:2011/12/29(木) 23:37:30.21
やっぱLinqの方が良いね。
748デフォルトの名無しさん:2011/12/30(金) 00:12:09.95
>>732
>根拠はあるのか?
科学的根拠はないけど、Python信者は心からそう信じ込んでいるから、あまりそこをつっこまないほうがいいよ。
歴史を見ても、宗教こそがいちばんの火種だから。

あ、ここは火種を歓迎するところだっけか。ごめん。
749デフォルトの名無しさん:2011/12/30(金) 01:17:17.57
739
744
いわんでもわかる
750デフォルトの名無しさん:2011/12/30(金) 01:57:27.43
Rubyの売りは書きやすさだと思う
左から右へと書くことが多いから、カーソルの移動が比較的少ない
751デフォルトの名無しさん:2011/12/30(金) 01:58:12.30
お前は、他の言語で、右から左へカーソル移動をしながら書くのか?
752デフォルトの名無しさん:2011/12/30(金) 02:05:05.49
使い捨てで無い限り重要なのは保守・可読性の高さだな
753デフォルトの名無しさん:2011/12/30(金) 02:14:32.32
>>751
うん…かなり左を押す回数多いと思う
それか、変数大量化のどっちか
頭に浮かんだ順に書いていくとそうならない?
754デフォルトの名無しさん:2011/12/30(金) 02:17:50.52
引数は第一引数から思い浮かびますが?
755デフォルトの名無しさん:2011/12/30(金) 02:30:50.97
後置のifとか、行ったり来たりじゃん。foo = 1 if bar && baz
756デフォルトの名無しさん:2011/12/30(金) 03:33:43.28
後置if?珍しい文法ですねw
757デフォルトの名無しさん:2011/12/30(金) 04:18:49.34
Lisp は右から左に実行されるけど、まあ慣れだと思う。

ところで左から右に実行されるのが便利なら、関数も逆ポーランド方式みたいにしたほうが良くないかな。
758デフォルトの名無しさん:2011/12/30(金) 05:28:19.82
>>754
いやLLの関数って基本1〜2個でしょ
それをいくつも組み合わせるときの問題だってば
759デフォルトの名無しさん:2011/12/30(金) 05:29:24.68
- いやLLの関数って基本1〜2個でしょ
+ いやLLの関数の引数って基本1〜2個でしょ
760デフォルトの名無しさん:2011/12/30(金) 06:34:16.26
メソッドチェーンが読み書きし易いと言ってるけど
代入が右から左なので台無し
一番右を見ないと左辺に代入される値の型すら
分からないので目線の移動が大きく読み難い
761デフォルトの名無しさん:2011/12/30(金) 06:39:08.70
Python信者にとって、メソッドチェーンは酸っぱい葡萄なんですねw
たいへんわかりやすいです
762デフォルトの名無しさん:2011/12/30(金) 06:43:38.06
682が「Pythonの弱点を付け加えよう(キリッ」とか言ってたのに
全部コード付きで論破されたところまでは分かった
763デフォルトの名無しさん:2011/12/30(金) 07:12:36.91
>>760
型は問題ではなくて変数名なりを分り易くつけることが
重要なんだと思う
764デフォルトの名無しさん:2011/12/30(金) 07:32:32.13
一時変数に代入しながら書くか、代入せずに書くかの違いだけだろ > メソッドチェーン

>>682 は三項演算子を使っていないけど、確か Ruby にもあったよね?
なんでそんなに難解に書くんだ?
765デフォルトの名無しさん:2011/12/30(金) 07:57:16.68
「酸っぱい葡萄」気に入りすぎだろ
何回言ってんだ
恥ずかしくなってくるw
766デフォルトの名無しさん:2011/12/30(金) 10:04:41.40
メソッドチェーンは書き易い
内包表記は見た目が整ってて綺麗、最終的な型がわかり易い

いじょ。
767682:2011/12/30(金) 10:46:39.90
Pythonと同じ「内包表記が可能&インデントベース」な関数型言語 Haskell によるコード例

[二分岐] Python: >>695(上段), Ruby: >>682(上段)
 ys1 = [x | x <- xs1,
     if test x then
       if test_1 x then test_1_1 x else test_1_2 x
     else
       if test_2 x then test_2_1 x else test_2_2 x
   ]

[多分岐] Python: >>728, Ruby: >>719
 data Color = Green | Yellow | Red
 ys2 = [x | x <- xs2,
     case x of
       Green -> True
       Yellow -> True
       Red -> False
]

[直積] Python: >>714, Ruby: >>710
 data Option a = None | Some a
 ys3 = [fn x | x <- xs3]
   where fn x =
     let
       h = if is_first_page x then generate_header else None
       b = generate_body x
       f = if is_last_page x then generate_footer else None
     in
       (h, b, f)
768682:2011/12/30(金) 10:49:18.74
一部訂正
X: [直積] Python: >>714, Ruby: >>710
O: [局所宣言] Python: >>714, Ruby: >>710
769デフォルトの名無しさん:2011/12/30(金) 11:22:43.21
メソッドチェーンは一番右まで読まないと最後の型が云々ってのは

foobar = ho.ge().fu().ga().pi()
.yo()

って書け(れ)ばいいだけじゃね?
770デフォルトの名無しさん:2011/12/30(金) 11:28:31.92
最終的な型がわかりやすいっていっても
[[x,y] for x in xs for y in xs]
ですぐわかるのは何かの2要素のリストのリストってだけで
xの型がxsの中身の型だってわかるのはx in xsまで読まなきゃだし
yの型がysの中身の型だってわかるのはy in ysまで読まなきゃわかんないけどな
771デフォルトの名無しさん:2011/12/30(金) 11:34:26.12
ぐぐってみて、メソッドチェーンの対比としてなにを主張していたんだかやっとわかった。
リスト内包表記ってやつを主張していて、
その実態は、リストリテラルの中にループ文を書いて、
リストの値を設定出来るってことか。

例えばDBからSELETした結果を詰める場合、
コネクションオープンからコネクションクローズまで、
リストリテラル内に書くことになるんだよね?
772682:2011/12/30(金) 12:03:36.93
Rubyと同じ「内包表記が不可&フリースタイル」な関数型言語 Standard ML によるコード例
[二分岐] Python: >>695(上段), Ruby: >>682(上段)
 val ys = filter (
   fn x =>
     if test x then (
       if test_1 x then true else false
     ) else (
       if test_2 x then true else false
     )
 ) xs
[多分岐] Python: >>728, Ruby: >>719
 datatype Color = Green | Yellow | Red
 val ys = filter (
   fn x =>
     case x of
      Green => true
     | Yellow => true
     | Red => false
 ) xs
[局所宣言] Python: >>714, Ruby: >>710
 datatype 'a Option = None | Some of 'a
 val ys = map (
   fn x =>
     let
       val h = if is_first_page x then generate_header else None
       val b = generate_body x
       val f = if is_last_page x then generate_footer else None
     in
       (h, b, f)
     end
 ) xs
773682:2011/12/30(金) 12:06:46.20
一部訂正
[誤]
     if test x then (
       if test_1 x then true else false
     ) else (
       if test_2 x then true else false
     )
[正]
     if test x then (
       if test_1 x then test_1_1 else test_1_2
     ) else (
       if test_2 x then test_2_1 else test_2_2
     )
774デフォルトの名無しさん:2011/12/30(金) 13:13:28.56
VB6のwithはメソッドチェーンより優れた機能だ。

例 VB6のwithをC言語っぽく書いた。
with(obj) {
 .hoge();
 .hage();
 .hige();
}
775682:2011/12/30(金) 13:20:00.42
>>770
Pythonは動的型付け言語だから、リストの中身を開けてみるまでは
その要素のデータ型が何であるかは分からない
Pythonでの内包表記のデバッグは、初心者にとって困難を極めるだろうね

Haskellなら、処理系が型検査してもしもコードに誤りがあれば
期待するデータ型と実際のデータ型をエラーメッセージとして教えてくれるのに....

その点、Rubyのメソッドチェーンのデバッグは楽チンだ
ブロック内でデバッグ文
 p hoge if $debug
あるいは型検査
 raise TypeError fuga.is_a?(Fuga) if $debug
が自由に書けるからね
776デフォルトの名無しさん:2011/12/30(金) 13:27:01.39
いまどきの動的型付け言語でももっと型付変数が流行っていいと思うんだ
だからPerl6頑張れ、超頑張れ、使わないけど
777682:2011/12/30(金) 13:41:40.80
またまた訂正
[誤]
 raise TypeError fuga.is_a?(Fuga) if $debug

[正]
 if $debug
   raise TypeError unless fuga.is_a?(Fuga)
 end
778デフォルトの名無しさん:2011/12/30(金) 13:52:07.71
>>774
withは同じオブジェクトへのメソッド呼び出しなので、メソッドチェーンとは性質が違う。
それに、ブロックの途中にそのオブジェクトのメソッド呼び出し以外でも書けるwithよりも、流れるようなインタフェイスの方が流れが途切れなくていい。
withはオブジェクトにプロパティが沢山あり、それを設定しないと始まらない言語向きだと思う。
779デフォルトの名無しさん:2011/12/30(金) 13:52:41.88
[正]
 
 raise TypeError if $debug unless fuga.is_a?(Fuga)
780デフォルトの名無しさん:2011/12/30(金) 13:53:32.08
>>778
> 流れるようなインタフェイスの方が流れが途切れなくていい。
なんで?
781デフォルトの名無しさん:2011/12/30(金) 13:54:47.20
流れが途切れないほうが、流れるようなインタフェイスっぽくていいから
782デフォルトの名無しさん:2011/12/30(金) 13:57:16.88
>>778
メソッドチェーンって、プロパティ設定以外のことって何かすんの?
783デフォルトの名無しさん:2011/12/30(金) 14:05:24.71
プロパティ設定なんてしないよ
784デフォルトの名無しさん:2011/12/30(金) 14:08:37.33
じゃあ何すんの?
785デフォルトの名無しさん:2011/12/30(金) 14:12:37.06
object自身に破壊的操作をしてそれ自身(this)を返すタイプの処理の連鎖なら
withでも同じことだが、あらたなobjectを返すタイプの処理の連鎖は>>774では
書けないよ
メソッドチェーンはどちらのケースにも対応している

メソッドチェーンより関数合成のほうがいいと思うけどね
786デフォルトの名無しさん:2011/12/30(金) 14:18:07.16
話は戻して、流れている方が流れているからいいんだ。以外に、
流れている方がいい理由は?
787デフォルトの名無しさん:2011/12/30(金) 14:21:41.08
あ、わかった。

メソッドチェーンはできない言語ってのはまずなくて、
変数に代入せずに書き続ける書き方だ。

リファクタリングの一つ「中間変数への代入」の逆、
式のインライン化をした結果がメソッドチェーンだ。
788682:2011/12/30(金) 14:31:02.24
>>771
直感的にSQLのSELECT文をイメージしたのは良い発想だと思う
SELECT文と同じように、ループで廻してIFで分岐して...といった「手続き的」に手順を書くのではなく、
検索条件を「宣言的」に書けるのが内包表記
プログラマが宣言を書けば、後は言語処理系が自分で考えて最適な手順を実行してくれるから、
(メソッドチェーンよりも)抽象度の高い記述法だと言える

ただし、残念ながらHaskellにしてもPythonにしても、内包表記ではDBに対する検索条件を書けない
SELECT文で得た結果リストを内包表記で(メモリ上で)処理することになる
789デフォルトの名無しさん:2011/12/30(金) 14:31:56.86
> じゃあ何すんの?
a = x.foo()
b = a.bar()
c = b.baz()
っていうのを
c = x.foo().bar().baz()
って書くだけのことやがな
普通はプロパティの設定なんて出来ないよ

ライブラリの作り方とかによっては
メソッドがレシーバをそのまま返すならプロパティ設定とかも出来るけど

Ruby/Tkだとプロパティ設定みたいなのは、レシーバを返すようになってて
button = Tk::Button.new
button.text('ボタン1')
button.width(10)
button.command{exit}
button.pack()

button = Tk::Button.new.text('ボタン1').width(10).command{exit}.pack()
って書けるけど、特殊な例ですな
790デフォルトの名無しさん:2011/12/30(金) 14:36:33.46
>>787
だいたいその理解であってる……ただし、
> メソッドチェーンはできない言語ってのはまずなくて、
これはいいすぎ

あくまで今現在主流のシングルディスパッチのオブジェクト指向言語界隈の話
791デフォルトの名無しさん:2011/12/30(金) 14:38:36.27
>>790
メソッドチェーンができない言語を教えて下さい。
792デフォルトの名無しさん:2011/12/30(金) 14:40:25.67
>>791
オブジェクト指向言語以外には普通はメソッドというものが無いので
メソッドチェーンというものもないですね
793デフォルトの名無しさん:2011/12/30(金) 14:41:39.18
じゃあ、メソッドがあるものは
すべてメソッドチェーンができるってことでいいですか?
794デフォルトの名無しさん:2011/12/30(金) 14:44:30.32
記法上の問題があるので、マルチメソッドの場合は上で言ってるような
メソッドチェーンにはならないでしょう
だからシングルディスパッチということになるのですが、CLOSのような例外を
除いて今メジャーなのはシングルディスパッチなので、大体そう理解しておいても
たぶん問題はありません
795デフォルトの名無しさん:2011/12/30(金) 14:49:46.55
字面上は foo().bar().baz() ってメソッドが連続してればそれでいいんじゃない
大抵はコレクションを連鎖的に操作するようなことを指してるんだろうけど
796デフォルトの名無しさん:2011/12/30(金) 14:51:34.00
>>795
それでおk
JavaとかでStringBuilderのappend().append().append()とか気違いみたいに
連打してるコードとかもメソッドチェーン
797デフォルトの名無しさん:2011/12/30(金) 14:56:15.36
メソッドチェーンのコレクション操作は数あれどー
演算子チェーンのコレクション操作はそうはあるまいふわはははー
798デフォルトの名無しさん:2011/12/30(金) 15:00:24.06
>>797
それはゴミだからどうでもいい
799デフォルトの名無しさん:2011/12/30(金) 15:19:53.66
Rubyしか使ってないのだけど
Ruby使いはメソッドチェーンしたがる(ようなきがする)

RubyとPythonでは配列の連結が
配列のメソッドなのか文字列のメソッドなのかってのあって
それ自体は別にどっちでもいいと思うけど

Rubyだとjoinで文字化するのまで含めてメソッドチェーンで考えるので
日本語の語順のように
1から100までのRangeオブジェクトを作って、それぞれを二乗して、','で連結して文字列にする、ってのがそのまま
(1..100).map{|x| x*x}.join(',')
と書けるんだけど(こういうのを「流れるような」っていうのかな?)

Pythonだとなんか思考パターンが違うような気がする
不慣れなんであれだけどPythonだと
','.join([str(x*x) for x in xrange(1,100+1)])
って書くのかな
Python使いなら、すっと書けるんだろうけれども
800デフォルトの名無しさん:2011/12/30(金) 15:20:06.29
内包もチェーンも両方欲しい
801デフォルトの名無しさん:2011/12/30(金) 15:28:02.90
メソッドチェーンにしてもLISPにしても
一見判り易く見えるのは良いんだが
バグってるときにどこまで正常なのかが判りにくい
802デフォルトの名無しさん:2011/12/30(金) 15:35:27.30
jQueryもメソッドチェーン前提のAPIだね。
あれはやり過ぎ感があるが。
803682:2011/12/31(土) 17:38:00.10
>>801
Rubyでのデバッグ方法は、概出だよ >>743,775 (>>775は自分のカキコで>>743は別人さん)
とりわけ難しいような話じゃないと思うけど、何が足りないんだろう?

あと、>>775では(動的な)型検査を書いたけど、
最近はデバッグ時に型検査コードを追加するのではなく
「コーディング(コード設計)時に要所要所で型検査する」スタイルへと変わりつつある
どちらかといえば型検査というよりも、型表明(型アサーション)と言ったほうがいいかもしれない
ここの文脈では、この変数はこの型になっているはずだ!というのをあらかじめ明示的に書くという発想
コードは冗長になるけど、型が明示されているから後々の保守性も良くなるという利点もある

コーディングミスに起因する単純なバグの大半はこの型表明で駆除できるから、
後は本質的な上流工程(機能/構造設計)レベルのデバッグに専念できてオヌヌメ
804デフォルトの名無しさん:2011/12/31(土) 17:48:45.43
たかがprintfデバッグができれば良いなら
内包表記だって簡単にデバッグできるだろ
意味分からん
805682:2011/12/31(土) 18:19:49.37
>>804
たとえば関数型言語である Standard ML には逐次演算子 ; がある
これは式 f ; g を評価すると(f の値を捨てて) g の値だけを返すという仕様
だから f の部分にデバッグ文を「手軽に」書くことができる

Pythonにも同じような「簡便な」演算子があるのかな?
内包表記の中は式しか書けないはずだから、逐次演算子(に相当するモノ)が必要になるハズ
Pythonには詳しくないんで、教えてください
806デフォルトの名無しさん:2011/12/31(土) 18:44:54.35
>>805
式が書ければprintfデバッグには十分すぎる
from __future__ import print_function
ys = [f(x) for x in xs for _ in [debug and print(x)]]

ついでにOcaml版
let ys = [f x | x <- xs; (if debug then Std.print x; true)]
807デフォルトの名無しさん:2011/12/31(土) 18:46:08.95
デバッガ使えば?w
808682:2011/12/31(土) 19:02:27.96
(>>805の続きになる)
あと、(>>788で書いたけど)内包表記には処理を「宣言的」に書けるから
(「手続き的」に書くメソッドチェーンよりも)抽象度の高い美しいコードになるという利点がある

ただし、この宣言を書けば後は言語処理系が「自分で考えて」最適な手順を実行する方法は
コード設計は(言語処理系にオマカセだから)楽になるものの、
デバッグ時には(プログラマが言語処理系の振る舞いを予測して)適切な箇所にデバッグ文を
入れなければならない、という欠点もある
もちろん処理系の振る舞いは実装仕様として明確になっているはずだから、デバッグできないという意味ではない

こういった宣言的な記述を全面的に用いる言語には、関数型言語 Haskell や論理型言語 Prolog がある
これら言語は、どちらも実行時に(=動的に)評価順序を決定する戦略を採用しているから
コードはコンパクトで美しいけれど、デバッグは大変という特徴(利点&欠点)がある
ただし、Haskellは静的型付け言語であり型エラーを実行前に検出してくれるから、欠点の多くは補える
それに対してPrologは動的型付け言語だから、デバッグは慣れないと難しい

そしてPythonは .... (以下略)
809682:2011/12/31(土) 19:06:09.42
>>806
あっそうか、常に true を返す debug式なら and演算子で繋げばいいんだ
言われてみれば単純な話だけど、指摘されるまで気付けなかった
レスありがとう
810デフォルトの名無しさん:2011/12/31(土) 20:09:13.62
内包表記は集合の定義だから、要するに「データの定義」なんだよな
xs = [1, 2, 3, 4, 5]
こんなのは外延的な定義だけど、内包的定義にしても
「集合を定義している」という点においてまったく同じ

map filterのチェインと似たようなことができるので比較されてるけど
意味としては全然違うと思う
811デフォルトの名無しさん:2011/12/31(土) 20:12:19.82
だから高級リストリテラルとして内包表記を使うのはあるべき姿だけど
processとしてmap filterが必要な場合には、「内包表記で実現する」のではなく
map filterを使うのが自然な形だと思う
map filterはポイントフリーで書けるしね
812デフォルトの名無しさん:2011/12/31(土) 20:28:33.13
>>883
> ここの文脈では、この変数はこの型になっているはずだ!というのをあらかじめ明示的に書くという発想
> コードは冗長になるけど、型が明示されているから後々の保守性も良くなるという利点もある

それやるなら静的型付けすればいいんじゃね?

この変数はこの型かもしれないが、同じメソッドを持っていれば
別の型でも動く。それが動的型付けの醍醐味だろう。
813デフォルトの名無しさん:2011/12/31(土) 20:29:28.69
>>808
> あと、(>>788で書いたけど)内包表記には処理を「宣言的」に書けるから
> (「手続き的」に書くメソッドチェーンよりも)抽象度の高い美しいコードになるという利点がある

いんや、美しいかどうかは
好みの問題。
814デフォルトの名無しさん:2011/12/31(土) 20:41:21.02

民主党党員名簿 (党員資格/代表選選挙人名簿) ※ 党外秘
1. 青木大姫
2. 秋山慶姫
3. 新井正煕
4. 金村成勲
5. 木下勲鍋
6. 佐井明博
7. 豊田檀君
8. 本山舜臣

1. 安藤重根
2. 池田青天
3. 金子佐鎮
4. 金山淑恵
5. 木子奉昌
6. 田山明雲
7. 平山明河   流石反日朝鮮人だらけの政党なだけはあるなw野田も韓国人疑惑があるくらいだし

815682:2011/12/31(土) 20:59:27.67
>>812
まず、>>803で「コーディング(コード設計)時に要所要所で型検査する」と書いているように、
全ての箇所で型表明を入れるわけではない
ここはバグりそうだな..と感じた複雑なロジックの部分に(=要所要所に)入れる
だから、静的型付け言語の良さ(安全性)と動的型付け言語の良さ(柔軟性)をミックスさせた発想

またダックタイピング手法を使う場合は、たとえば
  raise MethodResponsibility unless foo.respond_to?(:msg)
みたいなメソッド応答責任に関する表明コードを使うことになる

>>813
確かに美しいか否かの判断は主観(好み)であって客観性は無いよね
ただ、それだとこのバトルスレの意義が問われることになって .... (以下略)
816デフォルトの名無しさん:2011/12/31(土) 21:43:18.29
>>810 >>811を書いた俺の立場としては
内包表記は高級なリストリテラルとして便利で簡潔、美しいといってもよい
が、それ以上の用法は、集合の定義としての本来の意味から外れているし
美しいとも思わない

思うに>>626あたりが提示している以下のような式の違和感も、結局その辺に
原因があるんじゃないか?
> sum([ x*x for x in xs if x > 0 ])

Linq等も絡んでSQLって比喩も出てたが、あれも要は関係代数に根差した新たな
データセットの定義だからな、だからSELECTがビューの定義に使われるわけで

Pythonはどうも内包表記に本来の意味を超えた用途を与えてしまっているように
感じるよ
817デフォルトの名無しさん:2011/12/31(土) 21:52:29.58
>>816
> 思うに>>626あたりが提示している以下のような式の違和感も、結局その辺に
> 原因があるんじゃないか?
> > sum([ x*x for x in xs if x > 0 ])

この用法のどこが内包表記の本来の意図を超えてるんだよ
普通の集合の定義だろうが

> Pythonはどうも内包表記に本来の意味を超えた用途を与えてしまっているように
> 感じるよ

お前は内包表記が使える言語を何か一つでも使った事があるのかと
818デフォルトの名無しさん:2011/12/31(土) 21:59:03.72
>>817
その式にはどこにもxsの定義が無いので、実際にはその式の意図は集合の定義ではなく
以下の計算だと俺には見えるよ

sum . map (\x -> x * x) . filter (> 0)

こっちはポイントフリーだ、xsなど存在しない
819デフォルトの名無しさん:2011/12/31(土) 22:03:45.80
>その式にはどこにもxsの定義が無い
のもそうなんだが、最終的に得たいものがただの数値である、という点からもね

「計算の便法として」内包表記を使っている、という風に見えるわけ
Haskellなら上のようにmapとfilterで書くほうが好ましいでしょ、内包表記には必ず
ポイントがあるからね
820デフォルトの名無しさん:2011/12/31(土) 22:08:30.26
そうすることで
なんかメリットあるのか?

例えばデータベースの読み書きに
応用してみてくれ。
821デフォルトの名無しさん:2011/12/31(土) 22:14:33.84
>>820
ポイントをなくすことに、かい?
ポイントフリーな式はそれ自体が関数だ
もちろんデータを適用してもいいが関数としても使える
ポイントがあればそうではないから、関数として使いたい場合はlambda抽象の中に
くるむといったことをしなきゃならない

数学的に見ればポイントとは定義域の中の特定の点だ
ポイントつきの式ではその点に限って観測しているのに対して
ポイントフリーの式では点を限定せず写像を写像として扱っている
822デフォルトの名無しさん:2011/12/31(土) 22:14:51.99
>>818
num と num list -> num を混同するなよ
お前が定義してるのは後者だからxsなんて無いに決まってる
823デフォルトの名無しさん:2011/12/31(土) 22:17:55.32
>>822
もちろん、xsを最後に適用してもいいよ、末尾にxsを書くか書かないかの
違いだけだし……
重要なのは、ポイントフリースタイルではprocessを再利用可能な写像の形で
抽出できていて、それを適用するもしないも任意だということ

内包表記のコードがそれに比べたら「書き捨て」なのがわかるだろう
824デフォルトの名無しさん:2011/12/31(土) 22:18:44.52
>>821
いや、そうではなくて
具体的な応用例を示してくれということだよ。

データベースならほとんどのアプリで使うだろう?
そのデータベースを例にして。
825デフォルトの名無しさん:2011/12/31(土) 22:20:35.08
写像として利用したいときまで内包表記を使うなんて誰も言ってないだろ
lambda xs: sum([ x*x for x in xs if x > 0])
なんて書いてるアホがこのスレに居たか?
お前ひとりが勘違いしてハッスルしてるだけだ
826デフォルトの名無しさん:2011/12/31(土) 22:26:11.97
別にハッスルなんてしてないよ
> お前は内包表記が使える言語を何か一つでも使った事があるのかと
こんな風に妙にけんか腰なあなたにもなるべく丁寧に答えてはいるが……
(何が気に障ったのか知らないけど)
827デフォルトの名無しさん:2011/12/31(土) 22:31:33.37
> lambda xs: sum([ x*x for x in xs if x > 0])
これがアホなら、Pythonではどう書くのが「ただしい」の?
828デフォルトの名無しさん:2011/12/31(土) 22:31:47.09
> lambda xs: sum([ x*x for x in xs if x > 0])
これがアホなら、Pythonではどう書くのが「ただしい」の?
[]が不要なのはわかるけど
829デフォルトの名無しさん:2011/12/31(土) 22:45:51.66
別にPythonなんてどうでもいいわい
内包表記の本来の意味とやらが意味不明なだけだ
Haskellで sum [x*x | x <- xs, x > 0] と書くと内包表記の悪用なのか?
ポイントフリー病にかかるのは勝手だが
他人にまで押し付けんなよ
830デフォルトの名無しさん:2011/12/31(土) 22:51:36.03
>>829
でも、ほしいのが手続きである場合はそうは書かないでしょ?Haskellなら
Pythonでは、そうした場合にも、>>825に似たものを書くことになると思うよ

だから↓のように書いたわけ
>Pythonはどうも内包表記に本来の意味を超えた用途を与えてしまっているように
>感じるよ

831デフォルトの名無しさん:2011/12/31(土) 22:58:24.87
ちなみにこっちの元の意図としては、>>808の内包表記が「宣言的」で
「抽象度の高い・美しい」という表現に対すて、俺なりの考えを述べただけなので
別に何か特定の「押し付ける」つもりは全く無いよ
(っていうか、そんなこと不可能だろ……)
832デフォルトの名無しさん:2011/12/31(土) 23:18:41.20
数学厨の本来の目的はIOを排除することだが、
引数=入力という観点を持つとポイントフリー病になるんだろうな。
833デフォルトの名無しさん:2011/12/31(土) 23:31:46.75
>>829
>別にPythonなんてどうでもいいわい

どうでもいくないわw
スレタイ嫁
834デフォルトの名無しさん:2011/12/31(土) 23:36:35.32
Python vs. Ruby の構図が
いつの間にか Python vs. Haskell になっている件について
835デフォルトの名無しさん:2012/01/01(日) 01:08:52.77
やっぱり内包表記にも対応した
Scalaが最高の言語なのかもしれないね。
836デフォルトの名無しさん:2012/01/01(日) 01:12:22.54
K-POPの真実
89 名前:名無しさん@12周年[sage] 投稿日:2011/12/27(火) 18:42:50.71 ID:oPBf/MSP0
12月23日、東京国際フォーラムホールAで大国男児、X−5 、C-REAL、チェ・スジョンらが出演した『K-POP LIVE for X'mas 2011』が開催された。
しかし、ふたを開けてみれば2階はすべてクローズド、1階も後列は空席だらけと、さんざんな結果に終わった。

http://news.infoseek.co.jp/article/cyzowoman_27Dec2011_17759
    ↓    ↓    ↓

395 名前:山師さん@トレード中[] 投稿日:2011/12/27(火) 15:21:13.95 ID:E5FNgBRR0
K-POP LIVE for X'mas 2011
公演日:2011年12月23日(金)
会場:東京国際フォーラムホールA(収容人数5000人)
出演:大国男児 / X−5 / C-REAL / Yoonji

開演前
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221655.jpg
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224221654.jpg

開演中
http://cdn-ak.f.st-hatena.com/images/fotolife/u/ukiukineko/20111224/20111224222054.jpg
補助金が尽きてガラガーラ テレビは捏造演出装置

837 【中吉】 :2012/01/01(日) 10:17:13.65
あけおめ〜
838デフォルトの名無しさん:2012/01/02(月) 17:47:08.17
>>825
>lambda xs: sum([ x*x for x in xs if x > 0])
>なんて書いてるアホがこのスレに居たか?

ちょっとまってくれ、こう書いたらPython的にはアホなのか?
すごく書きまくってるんだが。
839デフォルトの名無しさん:2012/01/02(月) 17:51:58.15
>>827でもつっこまれてるが、>>829
>別にPythonなんてどうでもいいわい
と逃げてるようだから、単に口が滑ったんだろう
840デフォルトの名無しさん:2012/01/02(月) 17:55:23.15
Haskellですら
\x -> sum [y * y | y <- x, y > 0]
と書く方が>>818より短い
841デフォルトの名無しさん:2012/01/02(月) 21:59:13.14
Haskell 素人なので根本から教えてもらいたいのだが
ポイントフリースタイルって一体何のメリットがあるんだ?
ただの難読化に見える
842デフォルトの名無しさん:2012/01/02(月) 22:29:20.12
>>841
今思いついたメリットは
変数がなければ∀やλも使わないので∀とλが分からない素人でも読めること
843デフォルトの名無しさん:2012/01/02(月) 22:37:51.33
メソッドチェーンで言ったら
function(x) { return x.foo().bar().bazz() }

bazz . bar . foo
と書くだけだぞ
よぶんなゴミがなくて本当に必要なことしか書いてないからずっと短い
これが難読化だというのはちょっとよくわからないな
844デフォルトの名無しさん:2012/01/02(月) 22:57:35.90
>>843
たとえば、これをポイントフリースタイルで書くとどうなるの?

function(x, a, b, c) { return x.foo(a).bar(b).bazz(c) }
845デフォルトの名無しさん:2012/01/02(月) 23:01:02.40
843の書き方を習ってメソッドチェーンで書いたけど分かりにくいかも。
関数的に書くとこうなるかな。

\x -> \a -> \b -> \c -> bazz (bar (foo x a) b) c)
846デフォルトの名無しさん:2012/01/02(月) 23:09:24.02
ああいいたいことは分かった
flipとかfstとか無理やり使ってポイントフリーにするぐらいなら
素直に書いた方がずっといいと思うよ
847デフォルトの名無しさん:2012/01/02(月) 23:14:30.22
>>846
え。flip とか fst とか要らないよ。

845 をポイントフリースタイルにすると 843 と同じ bazz . bar . foo になる。
そうやって foo, bar, bazz の型情報が消え去ったプログラムが分かり易いですか?
ということを言いたかったんだけど。
848デフォルトの名無しさん:2012/01/02(月) 23:46:30.69
>>847
え、ちょっと待って、意味が分からない……
>>845
x, a, b, cの型をそれぞれa1, a2, a3, a4とすると、
foo: a1 -> a2 -> a5
bar: a5 -> a3 -> a6
bazz: a6 -> a4 -> a7
のようになっていて、全体としては a1 -> a2 -> a3 -> a4 -> a7 か?
なんでこれが bazz . bar . foo になるんだ?
仮にfoo = (+), bar = (+), bazz = (+) とすると、型がマッチしなくて
bazz . bar . fooは型エラーになると思うが、何か俺勘違いしてる?
849デフォルトの名無しさん:2012/01/03(火) 01:22:51.92
たぶん
(((bazz.).bar).).foo
>>845と同じになるんじゃないのかな
850デフォルトの名無しさん:2012/01/03(火) 08:56:34.47
bazz (bar (foo x a) b) c = (flip bazz c . flip bar b . flip foo a) x

map flip [foo, bar, bazz] と書きたいがHaskellのリストには同じ型しか入らない。
だからLLの方が良い。
851デフォルトの名無しさん:2012/01/03(火) 12:42:39.32
マルチポストをコピペ

>プログラミングRubyのRubyベタボメっぷりにRubyを使い始めて早10数年、使えば使う程にRubyって駄目だなと痛感する
>Rubyを学習し始めた頃は誰でもRubyは素晴しいと思うのだが、数年も使えばそのどうしようもない互換性のなさにウンザリする
>しかも互換性が無くなることをマズいと思っていない集団がRubyを制作しているのでどうしようもない
>1.4時代のコードが1.6になった途端に互換性がなくなり動かなくなることはあったが、1.6→1.8ではそれが顕著になり、1.9など何のエラーも出さずに前のコードが動く方が珍しいほど
>それどころか1.9に行かずREEが海外ではデファクトになりつつある現状、そして始まるPlain RubyとREEの方言問題
>例えばPassengerもREEの方がうまく動いたり、かと思えば特定のバージョンだとPlainじゃないとまともに動かなかったりと、とても面倒臭い
>
>美しいコードを求める為の副作用、という名の互換性のなさはRuby界全体に蔓延していて
>例えばあれだけもてはやされたRailsも、Rails2とRails3の互換性のなさに誰しも苦労したのは記憶に新しいところ
>誰もが互換性のなさに辟易し、俺ライブラリを量産するため、gemで探すと似たような事をする終わったプロジェクトがわんさか引っかかる
>諸処の小さなプロジェクトだけがそんな現状ならば許せるが、dbiアダプタでさえそんな現状なので
>バージョンが変わるとデータベースにすら接続できなくなったとか、dbiのAPIバージョン変わったのにアダプタ側の更新ないな、
>とか思ってるとアダプタ作者がRubyから足洗ってたとか余裕
852デフォルトの名無しさん:2012/01/03(火) 12:43:05.47
>身内同士でRubyはコードが美しいと四六時中自画自賛しているが、実はそれこそがRubyのガン
>その美しいコードという名のオナニーの為に一体どれだけの互換性と人的リソースが失われていったことか
>Rubyのコードは美しい、Railsスゲー、ベタボメする人は沢山いたがいつも一過性の人気しか得られないのはそこにあるし
>ベタボメしていた人達もしばらくするとウンザリしてRuby界から消えてしまうのも原因は実はそこにある
>達人プログラマーはRubyをベタボメしなくなったし、Mongrel作者はRailsどころかRubyに見切りをつけちゃったしね
>ああいう熱狂的なRuby信者でもRubyから足を洗っているのを見ると、tDiaryがRubyに見切りつけてPythonで全部書き直したとか言われても驚かないだろう自分がいる
853デフォルトの名無しさん:2012/01/03(火) 13:23:16.40
そもそもRubyは書き捨てスクリプトなんだから
必要なときに書いて捨てるものだと思うぞ

互換性の意味では、メンテされなくなった1.8系がある意味狙い目かも
854デフォルトの名無しさん:2012/01/03(火) 13:35:48.38
まあそういうのが流行ってたんだってことだな
美しいとか美しくないとか「いい加減なこと」をブログに書くということがw
プログラマっておっちょこちょいが多いしな
855デフォルトの名無しさん:2012/01/03(火) 13:45:56.04
美しいものを作りたいなら美しいと宣言するのが良い事だと思ってたんだろ。
宣言的言語は今でも流行ってる。
856デフォルトの名無しさん:2012/01/03(火) 14:00:10.03
matzはイヤな感じしないんだけど
ひがとかおごとかは鳥肌が立つ
857デフォルトの名無しさん:2012/01/03(火) 16:42:58.34
>>851なんて正にこのスレ向きの話題なのに、
このスレへのカキコを避けたのは、このスレの住人だからなのかな?
ここのところ Ruby & Haskell に叩かれっぱなしだからw
Python信者ファイト!!
858デフォルトの名無しさん:2012/01/04(水) 00:54:13.33
このスレ見てると全ての言語が欠点だらけに思えてくる。
859デフォルトの名無しさん:2012/01/04(水) 04:03:26.10
似たようなターゲットの言語が乱立している辺りから
お察しください
860デフォルトの名無しさん:2012/01/04(水) 04:20:05.94
結構ターゲットは違うハズなんだけどね

・Perl
テキスト処理、高級シェルスクリプト
・Python
汎用スクリプト、簡易ツール作成、テスト/プロトタイプ
・Ruby
Perlの代替、テスト/プロトタイプ
・PHP
Web
861デフォルトの名無しさん:2012/01/04(水) 05:27:09.99
互換性のなさってLL全体に言えるよね
862デフォルトの名無しさん:2012/01/04(水) 08:03:56.35
LLじゃなかったら互換性あるのか??
863デフォルトの名無しさん:2012/01/04(水) 14:13:23.53
C、C++、Java、C#あたりはまあそうなんじゃね
864デフォルトの名無しさん:2012/01/04(水) 14:42:40.10
他言語との互換性(学習コストの低さ)でいうと、Rubyが優位だだろうな。
他言語のいいとこ取りで、驚き最小の原則で作られた言語だからな。
実際、俺もRubyを覚えてからJavaを覚えるのに大して時間は掛かっていないからな。
865デフォルトの名無しさん:2012/01/04(水) 14:55:19.93
釣り臭漂うレス
866デフォルトの名無しさん:2012/01/04(水) 15:34:45.33
バージョン間の互換性を言ってるんだと思ったが・・・
867デフォルトの名無しさん:2012/01/04(水) 16:03:26.22
> 他言語との互換性(学習コストの低さ)でいうと
868デフォルトの名無しさん:2012/01/04(水) 16:17:46.52
(初期の)C#やDartみたいにあからさまに既存の言語に似た構文を持つ
言語なら分かるが、Rubyが特別に学習コスト低い、という気はしないな
869デフォルトの名無しさん:2012/01/04(水) 17:58:50.36
問題はruby、railsの陰が薄くなりつつあることだよな
若い奴ほどnode.jsになだれ込んでる
ruby好きオジサンのちまちました小言なんて誰も聞きたくないということ
870デフォルトの名無しさん:2012/01/04(水) 19:40:20.60
ECMAScriptって無理に推し進めるほど、使い勝手がいいもんじゃないだろ。
クロージャを使ってクラスを書いたり、Ajaxなコード書いたり、普通にやってるけど、
思っていたより、出来る言語なだけであって、良い言語ではない。

Flexだと、クラスを普通にサポートしていたり、
XMLリテラルがあったりがあったりでいい部分もあったが。
謎の遅延評価でデバッグとか苦労した。
871デフォルトの名無しさん:2012/01/04(水) 19:44:24.78
>>867
いや元々の互換性云々の話のことね
872デフォルトの名無しさん:2012/01/04(水) 20:34:52.67
>>870を汎用的にテンプレ化します

○って無理に推し進めるほど、使い勝手がいいもんじゃないだろ。
○を書いたり、○なコード書いたり、普通にやってるけど、
思っていたより、出来る言語なだけであって、良い言語ではない。

○だと、○を普通にサポートしていたり、
○があったりがあったりでいい部分もあったが。
○でデバッグとか苦労した。



873デフォルトの名無しさん:2012/01/04(水) 21:20:32.61
>>869
と言うか、やっと本来の姿に近付きつつある感じ
Perl もそうだけど、本来Webは専門外なんだってば
874デフォルトの名無しさん:2012/01/04(水) 21:32:05.87
アメリカ(シリコンバレー?)だと当然のようにスタートアップはRailsって話を
どこかで見た気がするんだけど、そうでもないんかい?
GitHubとかHuluとかアメリカ産っぽいサイトもRails使ってるんでしょ?
875デフォルトの名無しさん:2012/01/04(水) 21:47:02.20
>>874
スタートアップは Rails 、ということは後で書き直すの?
全然別の人が書き直すわけでもないだろうから、新規参入がないと Rails の利用者は
どんどん減っていくのだろうか。
876デフォルトの名無しさん:2012/01/04(水) 21:49:56.32
レールに載った人生なんてまっぴらゴメンだぜ!!
877デフォルトの名無しさん:2012/01/04(水) 22:09:48.00
>>875
どうなんだろうねぇ。
捌ききれなくなって書き直したって話はtwitterしか聞いたことないから
そのレベルにならなきゃ大丈夫だと思ってるんだけど。
その前にそんなレベルのサービス作ってみたいぜ
878デフォルトの名無しさん:2012/01/04(水) 22:15:30.96
たまたまRailsが流行っていた時代に
開発を始めたに過ぎない。
879デフォルトの名無しさん:2012/01/04(水) 22:52:15.64
今のところはRailsならある種の人材の確保が楽って面があるんだろうな
置き換わっていくんだろうけどな
そもそも単純なRDBのCRUDアプリを簡単に作れますっていう
志の低いコンセプトって当時の時代背景知らない世代には意味不明だろうw
880デフォルトの名無しさん:2012/01/04(水) 23:25:02.72
志の高いコンセプトを実現したフレームワークは何?
881デフォルトの名無しさん:2012/01/05(木) 00:29:01.07
>>880
EJB
882デフォルトの名無しさん:2012/01/05(木) 00:43:00.55
Pythonはスマホアプリ作れないから時代遅れの化石言語
883デフォルトの名無しさん:2012/01/05(木) 07:07:18.62
>>881
ゴミの代表格じゃねーか
884デフォルトの名無しさん:2012/01/05(木) 07:48:48.30
これだよ
ruby大好きオジサンはいつまでたっても子供のまんま
「○○?ゴミじゃねーかワラワラワラワラ」
rails売り出し時のマーケティングをそのまま内面化してるだけw
885デフォルトの名無しさん:2012/01/05(木) 08:44:36.75
俺SJC-WCしかもってないし、EJBとかもはや仕事で使うことはないんだけど、
EJBって使ってメリットあるの?
886デフォルトの名無しさん:2012/01/05(木) 08:46:11.81
>>879
当時の時代背景とか詳しく知りたいなー
887デフォルトの名無しさん:2012/01/05(木) 08:57:38.85
現状javaのプロジェクトでEJB「3」度外視するアーキテクトって居るの?
faxで回転寿司されてるような種類の仕事はよくわからないけども
888デフォルトの名無しさん:2012/01/05(木) 10:15:27.69
>>882
Androidなら作れるよ。iPhoneはしらん。
889デフォルトの名無しさん:2012/01/05(木) 10:18:43.83
ガキじゃねぇんだから好きなもん使えばいいんだよ
890デフォルトの名無しさん:2012/01/05(木) 13:01:34.38
RoRでしょ。
891デフォルトの名無しさん:2012/01/05(木) 22:23:11.07
Springの影響を受けてEJBが
軽い設計に変化してきたからな。

もう少し時間が経てば、純正がEJBで
サードパーティ実装がSpringになるだろうね。
892デフォルトの名無しさん:2012/01/08(日) 00:26:48.42
フレームワークがどうのこうのは、言語設計とは別だから、それをもってあーだこーだ言うのはねぇ…。
秀逸なフレームワークがある=秀逸な言語
とは限らないよね。
893デフォルトの名無しさん:2012/01/08(日) 01:03:04.04
Springとかいっていらなさすぎる。
XMLにクラス書いたって型安全じゃないし、ソース追うの面倒だし、
DBコネクションの取得をカプセル化とか、ものによってはバグの温床になるし。
ORマッピングとかDAOとかもいらなさすぎ、普通にテンポラリーテーブルとか、完全外部結合とか、分析関数とか使うし。
894デフォルトの名無しさん:2012/01/08(日) 11:02:09.54
>>893
構造を担当するものと
処理を担当するものを比べてる時点で
お前何もわかってないだろとしか言えないんだがw
895デフォルトの名無しさん:2012/01/08(日) 11:04:49.53
>>892
言語設計が秀逸かどうかには興味ない。
言語は秀逸でも言語外がヘボいと開発しにくくなる。

逆に言語外が充実していれば、言語は多少不足していても
開発は楽になる。

実際の開発ではそういう総合力を見てるんだよ。
896デフォルトの名無しさん:2012/01/08(日) 11:23:15.29
総合的に見てJavaはウンコ
897デフォルトの名無しさん:2012/01/08(日) 11:43:06.56
>>896
とりあえずお前が嫉妬してるのは分かったよ
898デフォルトの名無しさん:2012/01/08(日) 12:33:44.76
Javaは言語より起動・動作の遅さで使えない。
899デフォルトの名無しさん:2012/01/08(日) 12:56:23.08
いちいち起動するように作ってるのかよ
900デフォルトの名無しさん:2012/01/08(日) 13:04:31.34
>>899のツッコミに一票
901デフォルトの名無しさん:2012/01/08(日) 14:19:47.30
メタナンチャラを駆使したフレームワークを魔術が云々言ってありがたがってる界隈もあるけど
そんなのおっかけてる時間なんてないのが実情
ライブラリ等は妙に自己主張しないで愚直に書かれてるのがいいと思う
定義元参照F3一発でライブラリのソースにアクセスできる仕組みも必要だろう
902デフォルトの名無しさん:2012/01/08(日) 14:28:27.59
家政婦はメタ
903デフォルトの名無しさん:2012/01/08(日) 16:14:18.59
おじさんたちが死んだらどうなるんだろうな
”おじさん”

昔の知恵、色々プログラミング知ってる
クラウド!WEB!iphoneアプリ!!みたいにほざいてるクソガキじゃなくて
"おじさん"たちが死んだらどうなるんだろう

なんか凄いソフトとかもでなさそう
大規模なシステムもでなさそう

”おじさん”の方が今の若者より何でも知ってる
”おじさん”が死んだらやばいね
904デフォルトの名無しさん:2012/01/08(日) 16:15:15.66
欧米がいるから平気だった
905デフォルトの名無しさん:2012/01/08(日) 16:16:33.63
>>903
おじさんが死んでも
第二第三のおじさんが現れるから
問題ない。
906デフォルトの名無しさん:2012/01/08(日) 16:17:08.94
おじさんの代わりはいくらでもいるw
907デフォルトの名無しさん:2012/01/08(日) 16:20:44.67
>>903
なにそれひょっとして自分(の世代)の事言ってんの?
そうだとしたら一体どういう神経してんだw
908デフォルトの名無しさん:2012/01/08(日) 16:21:06.90
そう?IT第一期生おじさんの方が凄い気がする

第2期とか3期とかゆとりとか昔の知恵知らなくて 段階的に学べなくてしょぼそう
アセンブラとか

ゲームもゆとりでUnity なんかそういうやつ増えそうC++とかじゃなくて
909デフォルトの名無しさん:2012/01/08(日) 16:24:10.26
>>908
あー16ビットCPUを直接みたいな・・・
ごめんwあんなの必要になったら誰でも理解できると思うw
910デフォルトの名無しさん:2012/01/08(日) 16:24:29.88
はいはい。何でも昔はすごかったw
911デフォルトの名無しさん:2012/01/08(日) 17:48:19.97
これは企業内教育が機能しなくなっていることが原因だと思うが
スキルに関しては世代内格差の広がりが危機的だ
912デフォルトの名無しさん:2012/01/08(日) 18:24:46.19
そもそもパソコンの大先生が格上なのか格下なのかという
格付けが機能しなくなっている
913デフォルトの名無しさん:2012/01/08(日) 18:58:25.82
>>908
特化してる階層が違うだけじゃね?
914デフォルトの名無しさん:2012/01/08(日) 22:03:25.06
年配の人に聞いた話だが、「昔は計算機をいじってれば良かったが、
最近の人は計算機科学に加えてソフトウェア工学の知識も求められるから大変だ」とか

昔の事はよく知らんけども、
プログラミング関係の領域自体が一世代前より
広く深くなっているのかもしれない
915デフォルトの名無しさん:2012/01/08(日) 22:07:41.93
全てを知る必要はないし知ることもできない
アリストテレスやダヴィンチが出てくるような時代じゃないてこったよな
916デフォルトの名無しさん:2012/01/08(日) 22:11:19.29
社内コーディングコンテストしてみたっていうブログ見て
そんなレベルでプロのプログラマーなのか?と驚愕した

その程度で業務アプリとか作れるのかぁ
関数型言語がどうこうとか、クロージャーがどうのこうとか
そんな知識要らなさそうだなと、思った

自分はアマチュアなので業務とかの知識や経験がさっぱり無いので
業務アプリなんて作れないわけだが

RubyやPythonでスタートアップするぜっ、とかいう企業だと
少数精鋭の凄腕プログラマーがそろってないとやばそうだけど
917デフォルトの名無しさん:2012/01/08(日) 22:26:14.50
>>915
> RubyやPythonでスタートアップするぜっ、とかいう企業だと
> 少数精鋭の凄腕プログラマーがそろってないとやばそうだけど

フレームワーク使ったら俺でも簡単にウェブアプリが作れるぜって
企業ばかりだから、少数で技術力も低いのばっかり。
そんな程度でもそこそこ作れてしまうからね。
まさにLL言語ドカタw

だいたい少数精鋭ってのは数がたくさんいて
その中から精鋭を選んで初めて作れる。
もとから少数な企業に少数精鋭なんて無理。
918デフォルトの名無しさん:2012/01/08(日) 22:33:23.32
年棒300万で少数精鋭ですとか
頭に蛆涌いてるだろ
919デフォルトの名無しさん:2012/01/08(日) 23:29:17.48
ウェブで成功するのに大事なのは企画だったり資金繰りだったりで、プログラミング技術なんて些細なこと。動けばそれで良い。
920デフォルトの名無しさん:2012/01/08(日) 23:31:14.20
>>919
それを言ったらあらゆるシステムはすべて動けばそれでいい、じゃん
921デフォルトの名無しさん:2012/01/08(日) 23:37:31.42
プログラミングなんて一切せずに、静的なHTMLだけでも成功する事が出来る。それがウェブ。
922デフォルトの名無しさん:2012/01/08(日) 23:46:02.00
性的なHTMLで性交する。それが(ry
923デフォルトの名無しさん:2012/01/09(月) 00:35:03.56
>>922
出会い系ですねわかります
924デフォルトの名無しさん:2012/01/09(月) 03:20:24.80
>>920
まあね
業務システムにしたって、動けば正義が当てはまることは多い
最近は大してスキルのない奴でも偉そうに
保守性がー可読性がーなどとのたまうのがトレンドみたいだがw
925デフォルトの名無しさん:2012/01/09(月) 09:19:22.97
いや、動けばいいじゃだめだろ。
バグが大量に残ってたり、保守性や可読性が低いのは技術的負債っていうんだよ。
926デフォルトの名無しさん:2012/01/09(月) 09:34:33.34
日本においては必ずしも「返す」必要がないんだよな
誰でも読めて保守が容易で仕様追加も簡便なつくりの場合、逆に会社が潰れかねん…
927デフォルトの名無しさん:2012/01/09(月) 09:46:48.09
>>926 の言ってることは正しいと思う。
保守運用という名の下に、隠れて負債の返済をやってるって話もあるからな。
それが健全なことだとは思わないが。
928デフォルトの名無しさん:2012/01/09(月) 10:13:02.81
>>919
そういうキミは何か成功をおさめたのかい?
動けばいい、が許されるのはプロトタイプだけ。企画や資金繰り、マネタイズばっかりだからTwitterやFacebookを超えるようなサービスが日本から産まれてこない。
自分でプロトタイプも作れないような企画屋はエンジニアより下。
929デフォルトの名無しさん:2012/01/09(月) 10:16:06.72
>>903
その『クラウド』『iPhone』『webアプリ』ってのたまってるガキが、世界を変えるかもしれないぜ。
930デフォルトの名無しさん:2012/01/09(月) 10:26:09.80
>>895
じゃ『最強のフレームワークはどれよ?』
スレ立てれば?
931デフォルトの名無しさん:2012/01/09(月) 10:29:01.81
名無しでいいよ:2011/08/15(月) 23:20:15.53 ID:2fed4jwtO
FNS歌謡祭やHEY!×3の制作会社
株式会社CELL
東京都千代田区麹町2―2―4麹町YTビル

前バリ・REN4・野田らに政治献金した後藤組のフロント企業
メディアトゥエンテイワン
東京都千代田区麹町2―2―4麹町YTビル


932デフォルトの名無しさん:2012/01/09(月) 10:29:15.02
>>924
たいした開発したことないみたいだけど…。
医療系みたいな『人の命にかかわる』システムなんかじゃ、動けばいいなんて考えは許されないよ。
933デフォルトの名無しさん:2012/01/09(月) 10:30:51.87
>>931
なにこれ?
934デフォルトの名無しさん:2012/01/09(月) 10:49:14.42
>>933
この板でこいつにレスしてるのお前くらいのもんなんだけど…
935デフォルトの名無しさん:2012/01/09(月) 10:55:17.94
>>932
>医療系みたいな『人の命にかかわる』システムなんかじゃ、動けばいいなんて考えは許されないよ。
そりゃそうだ

>たいした開発したことないみたいだけど…。
ミッションクリティカルなシステム作るのが偉いみたいな考え、一体どこから出てくるのか不思議
その手のシステムって、ただ厳格なだけで別に技術的に特別高度だというわけではないと思う。
936デフォルトの名無しさん:2012/01/09(月) 11:40:56.32
>>927
そんなやり方じゃ社員の
モチベーションはダダ下がりだろ。
先のある話には思えん。
937デフォルトの名無しさん:2012/01/09(月) 11:51:31.07
>>935
横レスだけど、『人の命にかかわる』システムの開発には、特別に高度な技術力が要求されるよ
初期リリースで24時間365日連続稼動し、なおかつバグゼロが当然の世界

Webの世界では、ある程度のバグを承知の上で稼働を始め、
それと並行してバグ対策と機能追加を効率的に進めようとする考えが普通

両者では、デベロッパに求められる品質に対する意識とスキル(技術領域)は全く異なる
どちらが「偉い/偉くない」とか「高度だ/高度じゃない」みたいな単純な二元論じゃ語れない
938デフォルトの名無しさん:2012/01/09(月) 11:59:32.95
人の命にかかわる場合、環境も特殊になるだろうね。

Webの世界で言えば、ブラウザをIEどころか
マイナーバージョンまで指定するだろう。
OSも指定して、完全に同一の状態でないと保証しない。

じゃないと、完全な動作保証は無理だと思うんだ。
そしてそんなのが許させる世界だと思うんだ。
939デフォルトの名無しさん:2012/01/09(月) 12:20:39.42
>どちらが「偉い/偉くない」とか「高度だ/高度じゃない」みたいな単純な二元論じゃ語れない

なので

>たいした開発したことないみたいだけど…。

こういう物言いはないだろうよ。ってことでは
940デフォルトの名無しさん:2012/01/09(月) 12:38:30.71
MCのエンジニアが、面白ホームページ作成業に移行しても、
まぁ、最初は能率は悪いだろうけど徐々に慣れてやっていけるだろうが、
その逆は…慣れる前に火を噴いて下手すりゃ人間ごと消えるな。
941デフォルトの名無しさん:2012/01/09(月) 13:08:28.32
>>940
その「最初」で顧客情報垂れ流して会社ごとあぼんだよ
942デフォルトの名無しさん:2012/01/09(月) 13:42:49.92
>>938
あるある。
ネスケ2.0とか指定されたことあった。
943デフォルトの名無しさん:2012/01/09(月) 13:54:13.33
例としてはわかるが、実際はWebブラウザ使用とかTCP/IP使用とかないわー
どんだけミッションクリティカルかによるんだけどさ
繋がらなかったら電話とFAXにするから安くしてくれというのもあったがそれで運用としてそれで本当に本当にいいのかそれで

>>936
そんなとこにコストかける理由がないんだよ
だからそれでも「いい」んだ
944デフォルトの名無しさん:2012/01/09(月) 13:55:16.83
金がだせるならミッションクリティカルでも何でも作れるよ。
945デフォルトの名無しさん:2012/01/09(月) 13:57:02.38
馬鹿には無理
946デフォルトの名無しさん:2012/01/09(月) 14:01:03.32
>>945
なんで作る人が1人しかいない世界を想定してるの
947デフォルトの名無しさん:2012/01/09(月) 14:03:19.54
>>945はpythonスレのキチガイ
948デフォルトの名無しさん:2012/01/09(月) 14:06:19.79
馬鹿が雁首そろえても無理なものは無理
949デフォルトの名無しさん:2012/01/09(月) 14:08:25.80
昔止められないシステムに関わってたけど、能力どうこう関係なく
単に人海戦術でやってるだけだったからなぁ。
それだけ動く金が、すごいことになってたみたいだけど。
950デフォルトの名無しさん:2012/01/09(月) 14:08:29.23
自社でサービスを運用している側からすれば、技術的負債は死活問題だが、
請負で作っている側からすると、どうでもいいんだよな。
951デフォルトの名無しさん:2012/01/09(月) 14:09:10.85
スレタイに言語名4つ入ってるのでいろんなスレから来る
各スレの傾向知らないと対処できんな
952デフォルトの名無しさん:2012/01/09(月) 14:11:17.28
>>951
…まあ、PerlとPHPとRubyとPythonのアクティブなスレに常駐してれば、このスレのレスの半分くらいはスルーできるかとは思う
953デフォルトの名無しさん:2012/01/09(月) 14:15:16.49
動けばOK、トラブったらメンテすればいい
みたいな信頼性いらない世界で使われる言語だよね。
954デフォルトの名無しさん:2012/01/09(月) 14:19:10.61
Rubyの東京ガスみたいな事例は
どの言語にもありそうなものだが
955デフォルトの名無しさん:2012/01/09(月) 14:23:45.86
Railsとか決まりに従って作れば誰でもウェブアプリが
作れますってフレームワークができてから
どんどんウェブプログラマの質が下がってるよな。
馬鹿養成フレームワークだと思うわw
956デフォルトの名無しさん:2012/01/09(月) 14:26:23.70
VB6 -> Java -> RoR
ドカタが使う言語の変遷
957デフォルトの名無しさん:2012/01/09(月) 14:30:33.47
VB6(互換性切り捨て) -> Java(互換性ばっちり) -> RoR (互換性切り捨て)
958デフォルトの名無しさん:2012/01/09(月) 14:31:29.38
Perl(互換性切り捨て予定) PHP(互換性切り捨て)  Python(互換性切り捨て)

あれ? 面白いなw
959デフォルトの名無しさん:2012/01/09(月) 15:53:15.50
Perl5はむしろ6より活発に開発が進められてね?
あれじゃ、どこも当面のあいだ移行はしないだろ
960デフォルトの名無しさん:2012/01/09(月) 16:11:34.73
Perl6はPerl5とは完全に別言語という位置づけ
961デフォルトの名無しさん:2012/01/09(月) 17:04:26.92
Twitterとかもしょっちゅう落ちてるじゃん。だからって別にみんなあんまり気にしないし。
962デフォルトの名無しさん:2012/01/09(月) 17:36:10.04
お前ら悪いこと言わんから、PHPとPythonやっとけって。
WEBで生きるならこれだけで現役の間は凌げるよ。
963デフォルトの名無しさん:2012/01/09(月) 17:54:13.59
RailsとかUnityとか馬鹿養成ツールだから
964デフォルトの名無しさん:2012/01/09(月) 17:55:08.33
結局そういうフレームワークとかミドルウェア作ってるやつは昔のやつらとかそんな感じ
ゆとりはWEB
965デフォルトの名無しさん:2012/01/09(月) 18:32:19.90
なんか非常に強い焦りを感じるな・・・
おじさん・・・危ういの?
966デフォルトの名無しさん:2012/01/09(月) 18:34:44.43
勉強が好きで新しいものを吸収し続けていかないと結局ダメです
967デフォルトの名無しさん:2012/01/09(月) 19:35:23.18
>>904が正解だろうなぁ。
残念ながら日本の土壌では芽が出るのが難しい。
それからするとRubyはよくここまで大きくなったよ。
968デフォルトの名無しさん:2012/01/09(月) 19:42:59.43
( ´_ゝ`)フーン
969デフォルトの名無しさん:2012/01/09(月) 20:44:24.38
海外でrailsに使われるまでは
マイナーなカルト系だったけどな
970デフォルトの名無しさん:2012/01/09(月) 21:06:37.15
トラブったらメンテすればいいとか、そういう考えがあり得ないよね。
瑕疵担保責任をずっと抱えるとかさ。
971デフォルトの名無しさん:2012/01/09(月) 22:14:59.04
トラブったら手動に切り替えるという考えはあり得る
自動化して手動を切り捨ててしまうのは、互換性を切り捨てるのと同じ
972デフォルトの名無しさん:2012/01/09(月) 22:47:23.13
フレームワーク使うやつがバカなんじゃなくて、
フレームワークがバカでも使えるように作られてるだけだろ。
973デフォルトの名無しさん:2012/01/09(月) 22:52:12.79
Unity使うやつがバカなんじゃなくて、
Unity使うやつがバカでも使えてバカがより目立ってるだけだろ
974デフォルトの名無しさん:2012/01/09(月) 23:04:23.87
バカでもゲーム作れるっていいことじゃんw
975デフォルトの名無しさん:2012/01/09(月) 23:06:07.44
独自フレームワーク()とかやってる方がバカだろ
976デフォルトの名無しさん:2012/01/09(月) 23:17:50.78
PerlやPHPを使う時点でバカなので問題ありません
977デフォルトの名無しさん:2012/01/09(月) 23:18:19.07
とりあえず俺以外は全員バカってことで手を打とうぜ
978デフォルトの名無しさん:2012/01/09(月) 23:28:51.30
頭がいいやつってgfxみたいなやつだろ?
979デフォルトの名無しさん:2012/01/09(月) 23:29:27.81
ゆとりがフジゴロウに勝てるわけねーじゃん
980デフォルトの名無しさん:2012/01/10(火) 00:46:28.89
インターネットを使うやつにバカはいるかもしれないが、
だからといってインターネットを使うやつがバカとは限らんがな
981デフォルトの名無しさん:2012/01/11(水) 01:00:08.33
>>957
R6RS (互換性切り捨て)
982デフォルトの名無しさん:2012/01/11(水) 22:22:50.27

800 自分:名無し募集中。。。[] 投稿日:2012/01/08(日) 22:00:50.04 0
AKBブーム捏造の裏

サウンドスキャンの売り上げでさえほとんどが業者の自社買い他社買いで
資金洗浄した金額がオリコンの枚数×CDの価格って感じかね
http://livedoor.blogimg.jp/dqnplus/imgs/f/f/fff69a26.jpg

983デフォルトの名無しさん
>>937
【社会】故障原因はメモリー不足=原発データ収集システム―JNES
http://uni.2ch.net/test/read.cgi/newsplus/1326281467/