2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2011/11/04(金) 20:22:50.23
最強の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の情報とプラグインが溢れかえっているはず

96 :89: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
文法のどの部分が簡潔じゃないん?

103 :89: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
乱立しhttp://hibari.2ch.net/tech/すぎ
死ねLL

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式なので、ここはデータ、ここはロジックという情報もプログラムの字面からは得られない。ヒントが多ければ良いというものでもないが、あまりに少ないのはつらい。

また、生産性の向上に寄与したマクロは、任意に定義されたユーザ言語を定義することと等しいので、このプログラムが利用しているマクロについての十分な知識がなければ、コードの構造も理解できないことになる。

173 :172: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オヌヌメ

202 :176: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()

210 :209: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}

211 :209: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


220 :218:2011/11/26(土) 21:46:16.39
尻切れになってましたね
>キャラは常にウインドウの中央に表示し、
これは、正しくは
キャラは常にウインドウの中央に表示し、背景を動かすことでキャラの動きを表現する
でした。

あと、もう一つ条件があるのを忘れてました
「ウインドウに任意のタイトルをつける」

221 :218: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のどちらを学ぼうか迷っています
それぞれの言語に愛着のある方もいるでしょうから偏った意見もあると思いますが
そういうのも含めて色々な意見を聞いてみてどちらから学ぶか決めたいと思っています
皆さんはどちらが良いと思いますか

372 :369: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
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
LL言語低調な一年だった。

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
関数内だとその通り。モジュールのトップレベルだとグローバル変数参照になる。


399 :398: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 が謳い文句だからな
自分が使うツールを作るための言語ってのが本来の立ち位置

115 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)