【Perl,PHP】LLバトルロワイヤル17【Ruby,Python】
最強のLL=軽量プログラム言語は、どれよ?
エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・
さあ、死ぬまで語りやがれ!!!
■LLとは?
軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、
コードの作成や修正が容易と見なされるプログラミング言語のことを指す。
ここでいう「軽さ」はプログラマの負担の軽重を指し、
実行速度に優れているという意味ではない。
現在の水準では
・インタプリタ
・動的型
・正規表現
・クロージャ
などを利用できるものがLLと呼ばれることが多い。(Wikipediaより)
前スレ
【Perl,PHP】LLバトルロワイヤル16【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1302692765/
どうしてバトルロワイヤルするの?
みんな仲良く色々使おうよ(´・ω・`)
do 〜 end でも { 〜 } でも書けることの何がいいんですか
一方を気にくわない人がもう一方を使うことができます
do 〜 end が気にいらない人が do 〜 end で統一されたコードをメンテするのは苦痛ではないんですか
>>6 文法上の結合優先度(演算子の優先順位みたいなもの)が違うので使い分けます
# foobarの引数はa, bの値とブロック foobar a, b do .. end # ブロックはメソッドbの引数、aの値とbの返り値とがfoobarの引数 foobar a, b { .. }
pythonはselfが微妙
>>11 selfは食わず嫌い。しばらく使ってる時にならなくなる。
phpの==, ===, strcmp とか、しばらくその言語使っててもウゼーと
思うのが本当にダメな部分。
たとえばやってることが数値計算っぽいことだとselfとかverboseな感じでうざいかも def norm(self): return math.sqrt(self.x ** 2 + self.y ** 2) みたいな? まあこの例だけだといまいちピンとこないけど 要するに数式にいちいちselfがついてくる感じ
>>12 メソッド定義する時に第一引数に書かなきゃいけないのがちょっと…
Pythonでかくとちょっと冗長になると思う 大差ないといえばそれまでだけど class Rational { def num def denom Rational(n, d=1) { def g = gcd(n, d) num = n.intdiv(g) denom = d.intdiv(g) } static gcd(x, y) { if (x == 0) y else if (x < 0) gcd(-x, y) else if (y < 0) -gcd(x, -y) else gcd(y % x, x) } def plus(x) { new Rational(num * x.denom + x.num * denom, denom * x.denom) } def minus(x) { plus(new Rational(-x.num, x.denom)) } def multiply(x) { new Rational(num * x.num, denom * x.denom) } def div(x) { multiply(new Rational(x.denom, x.num)) } String toString() { sprintf("Rational(%d, %d)", num, denom) } }
>>12 しばらくPython使ってても
いちいちフィールド呼ぶ度にselfは正直ウザいよ。
selfは多用するから一文字記号でも良い気がする。 変数という名前に、文字の名前で修飾するのは読みづらいんだよね。
# 目の焦点をぼやかしてお読みください def __init__(_, a, b): _.name = a _.age = b これでひとつなんとかなりませんか
いちいちShiftを押すのはちょっと
引数の self ってまだ残ってたんだ・・・ OO の味噌はモデルを簡潔に表現出来る事なのに、 記述性を悪くしたのは設計ミスだよなあ
Javaとか簡潔に表現出来てるかあ?
何で Java?
pythonよりOOでしょ
Python はメソッド呼び出しと関数呼び出しに一貫性を持たせようとして、 暗黙的な self ではなく、引数で self 相当のラベルを明示的に書かせる事に したんだっけ。
最初から OO 前提で設計していたらもっと素直で簡潔になっていたんだろうな
OOってそんなに簡潔なもんじゃねーよ
は?
は?じゃねーよ
キレる 子供!!!
キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h キレる 子供=sora_hキレる 子供=sora_hキレる 子供=sora_h
>>21 this(selfに相当)に限って言うなら…
少なくとも自分のフィールドやメソッドを呼ぶのに明示的なthisは要らないでしょ
自分自身を他へ引数として渡す、という場面以外であまりthisを使うことはないかと
global って付けないと外のスコープにある変数を更新出来ない self って付けないとローカルにある名前を参照出来ない うーん、、、
ネガティブシンキングなのかネガティブキャンペーンなのかただの無能なのか分からない
えっ
>>32 正確に言おうぜ
1) Python2.Xではそもそもグローバル以外の自由変数を更新できない
2) Python3.Xでは自由変数がグローバルかどうかで、自由変数を更新する際に
globalとnonlocalを使い分けなければならない
3) Pythonはインスタンススコープを提供しない
4) Python2.Xではリスト内包内の変数のスコープがリークする。3.Xではリークしないが いずれにせよ関数スコープが基本でありブロックスコープは存在しない 5) function(){}() のようなブロックを無様な醜いハックすらPythonには無い (lambdaの中に文を記述できないから)
>function(){}() のようなブロックを無様な醜いハックすら function(){}()のようなブロックを真似る無様な醜いハックすら
Pythonおn関数スコープは地味に罠なので他言語使用者はまずハマる C++やC99のように変数宣言を関数の先頭以外でも可能にした言語では 大抵の場合、宣言以下の行がスコープになっている 勿論それらの影響を受けたJavaやC#などのメインストリームの言語はみなそうだ 宣言の右辺がスコープに入るかどうかで多少言語による差はある C++系ではスコープに入り、Perlでは入らない Lispではletのスコープはbodyとはっきりしているので、Lispに似ているのは Perlおんほう Pythonの場合、やはり中途で変数束縛を記述できるが、その上もその変数の スコープに入ってしまうので、そこは その名前によって既存の変数が隠され使用できないが、 新しい変数も未束縛なので使用はできないという区間になる
39 :
38 :2011/05/08(日) 17:28:43.64
おn おんほう なんかバグってるな 主に俺がw
pythonのさ、selfも面倒なんだけどさ、superがすごくめんどくさいんだけど、 そんなことない? class AAA(object): def f(self): print "AAA" class BBB(AAA): def f(self): super(self, BBB).f() ← クラス名を書かなきゃいけないのがすごく面倒
>>39 コードで書くとこういう事だよね
n = 10
def foo():
print n # => UnboundLocalError: local variable 'n' referenced before assignment
n = 20
print n
コンパイラがもうすこしがんばってくれれば解消出来そうな問題だと思うんだけどなぁ
withと実行フレーム操作で擬似的にスコープを実現するハックをがんばった後、
ダミーのクラスを使う方法を思いついた。
n = 10
class _: # 名前は適当
print n # これはグローバル 10
n = 20
print n # これはクラス変数 20
print n # => 10
数分後、素直に globals 使うように書き直した。
そこは解消しなくて良いって ローカルで定義したつもりがグローバル変数に上書いてたとかなるだろ エラー吐いてくれる今の方がマシ
クソなのはお前だろ
>>15 まぁ、面倒くさいっちゃ面倒くさいけど。
class Rational:
def __init__(self, n, d=1):
g = self.gcd(n, d)
self.num = n // g
self.denom = d // g
# これ、クラスメソッドにする必要あんのかなぁ?
# 俺なら、普通の関数として、クラスの外か__init__の中に書く。
@classmethod
def gcd(cls, x, y):
if x == 0: return y
elif x < 0: return self.gcd(-x, y)
elif y < 0: return -self.gcd(x, -y)
else: return self.gcd(y % x, x)
def __add__(self, x):
return Rational(self.num * x.denom + x.num * self.denom, self.denom * x.denom)
def __neg__(self):
return Rational(-self.num, self.denom)
def __mul__(self, x):
return Rational(self.num * x.num, self.denom * x.denom)
def div(self, x):
return self * Rational(x.denom, x.num)
def __repr__(self):
return "Rational(%d, %d)", (self.num, self.denom)
> # これ、クラスメソッドにする必要あんのかなぁ? 嫌がらせに決まってるじゃないかw
def gcd(cls, x, y): if x == 0: return y > elif x < 0: return self.gcd(-x, y) > elif y < 0: return -self.gcd(x, -y) > else: return self.gcd(y % x, x) このへんclsのtypo?
うげ、なぜか1行だけインデントずれた。んで、divを__div__に変えるの忘れてた。 __add__とかそのへん、returnばっか書くのがめんどくさかったら、lambdaでやっちゃってもいいかもね。 __div__ = lambda self, x: self * Rational(x.denom, x.num) みたいに。 gcdも三項演算子使えば単文でかけるのだろうけど、ややこしいわな。おすすめしない。 def gcd(x, y): return y if x else gcd(-x, y) if x < 0 else -gcd(x, -y) if y < 0 else gcd(y % x, x)
>>43 Pythonでは未定義のローカル変数の参照と解釈されるんだよね、
曖昧なシチュエーションだからエラーになることには納得してるんだけど。
宣言以前は外側の変数を参照して欲しいって用途だったと思う。
勿論、上書きは期待してない。というかその為に明示的に使えるスコープが欲しかった。
他にPythonのスコープ関連の問題に遭遇したといえば、
for の一時変数をlambdaで使った時。
xs = []
for i in range(10):
xs.append(lambda: i)
map(apply, xs) # => [9, 9, 9, ...]
del i
map(apply, xs) # => NameError: global name 'i' is not defiend
実際のコードは、event:handler の辞書をforで回して一括して登録する処理だったと思う。
ちなみに、高階関数にすると期待通りに動きます。
>>46 1ファイル1クラスの制限のためじゃないかな、
単に言語比較のため合わせるとしたら、
@staticmethod にして第一引数を省く。
__repr__は、vars使うと self. 省けます。
return "Rational(%(num)d, %(denom)d)" % vars(self)
>>42 の
>コンパイラがもうすこしがんばってくれれば解消出来そうな問題だと思うんだけどなぁ
ってのは、実行時エラーじゃなくて、コンパイル時エラーにできないかってこと?
できそうに見えるね確かに
Pythonちょっと実行時エラーが多すぎ
Perlのstrictモードあたりに比べると特にそう
お前がコンパイラ作れ
if hoge: xxx = 1 ... if foo: # これ通るときは必ずhogeを通っている print xxx みたいなケースを考えると、実行時は確実に未束縛変数の参照を検出できるが、 コンパイル時には確実に検出できるとは限らない。だから実行時に検出するという Pythonの方針は間違っていない。(俺もJavaScriptみたいに変数宣言があれば いいとは思うが、代入=宣言ならば仕方ない) n = 1 def foo(): print n # グローバル変数 n = 10 print n # ローカル変数 これを許したって、グローバル変数を書き換えられているつもりで書き換えられて いないという動作で初心者を混乱させる事になる。行儀の悪いコードを暗黙に 通すよりも、明示的にエラーにするというPythonの方針は合理的なものだ。 (重ねていうが、俺はローカル変数宣言があればもっと良いと思う。)
self反対派は、まず関数の第一引数のことを行っているのか、属性アクセスの事を言っているのか、 後者であればRubyみたいに記号を割り当てないのが嫌だと言っているのか、 それともJavaみたいに省略できないのが嫌だと言っているのかをはっきりしてくれ。 第一引数の事であれば、たった self, とスペースの5タイプだけだから気にするな。 属性アクセスの事であれば、長い式の中に何度もselfが出てくるのがウザイなら ローカル変数に代入してから使えば良い。 記号は、できるだけ記号を使った構文を増やさずにシンプルで汎用的な ルールで多くのケースをカバーするのがPython流だ。 Javaみたいな省略?名前空間が動的な言語でそれやると動作が複雑になったり 速度が犠牲になるから、それらの問題を解決する方法をぜひ実装してみてくれ。
>>57 Python に欠点があっても良いでしょ。わざわざ取り締まる必要は無いと思うけど。
引数に self を渡すのは正直馬鹿らしいし、分かり辛い仕様だと思うけど、それを
理解した上で俺は使ってるよ。
分かり辛いってなんだよ。そういうもんだと思って使えよ 馬鹿な頭で無理に分かろうとするな
レスの内容が理解出来ないなら、わざわざ返事しなくても良いんだぜ
その前に内容があるレスをしてくれよ。無いものを理解するのは流石の俺でも難しいね
>>62 つまり君は、『メソッドの第一引数に self / this を明示的に渡す事が必須である』という仕様が
OOPL に慣れ親しんだ現代人にも分かり易いと思う訳かな?
普通は『そんな事はコンパイラが解決しろ』と思うよねえ。
と思ったが違った
自分は Python がしょっぱい言語だと分かった上で使ってるけど、 奇麗な Python みたいな夢を抱いてる人ってまだ居るのかな。。。
>>56 その上のやつみたいな、実行時の条件によってunbound variable参照による
実行時エラーが出たり出なかったりするような糞コードは、
もしコンパイル時チェックをするのなら、単にコンパイル時エラーにするんだと思うよ
> 行儀の悪いコードを暗黙に通すよりも、明示的にエラーにするという
> Pythonの方針は合理的なものだ。
ちょっと主張の意味がわかんない
グローバルな名前をshadowする名前をつけることを行儀の悪いといっているのなら
Pythonはそれを禁じていないし、それゆえ
>グローバル変数を書き換えられているつもりで書き換えられて
云々の「初心者の混乱」とやらは現に今でも起きることだよね
そういう問題を本気で避けたければ、単に上位の変数をshadowする名前を
禁じればよいだけ
特に合理的だとは思えないね
でも日本だとプログラミング言語の中でもPython人気らしいね
チョットしたプログラムを書くには便利だからね ライブラリが揃っていて、インストール不要で使える環境が多い
>>68 >単に上位の変数をshadowする名前を禁じればよいだけ
普通はそういうのは文法の側で面倒見る物だと思うけど・・・
>>63 省略してもいいししなくてもいい、という仕様よりは分り易くはあるよ
必ず改行しなきゃいけない、必ずインデントしなければいけない
そういう言語でしょ。それが受け入れられてるんだと思うけど
>>72 普通の世界では引数の self なんて『全く書かなくていい』から、
そういう世界から来た人には分かり辛いし、面倒くさいでしょう。
>>70 ちょっとプログラム書くのにクラスとかたくさん作ったりする?
ライブラリとモジュールで済ませようとするでしょ
それで済まないならselfが勝手に補完されるIDEを使うか
あるいは静的なオブジェクト指向言語使ったほうが速いんじゃないか
>>71 勿論Pythonの言語仕様の話をしてるんだから、それも言語仕様の話
紛らわしくてごめん
>>74 それって不便だけど、何とかなるって話でしょ。。。
>>72 んなこと言ったって
clazz.method(obj, args)
obj.method(args)
のどっちでも書けるし
>>> class Foo(object):
... def foo(self, x):
... return x
...
>>> Foo().foo()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: foo() takes exactly 2 arguments (1 given)
このエラーは間違いなく初心者にとっては混乱の元
1 givenと言ってるが
初心者にとっては引数など与えたつもりなどない
>>77 仕様を理解してない初心者が混乱しない言語って何?
Python の場合は初心者よりも、他の言語を経験して来た人が混乱する様な仕様になっていると思う。 まあ、分かってしまえば大した事無い問題だけど。
ググっても解決しない問題を例にあげてくれよ。それは致命的な欠陥かもしれないから
>>78 Foo.fooの型は引数を取らないcallable(bound method)でしょ
ユーザはそれを呼んだ
勿論字句上でもセマンティクスにおいてもそのcallableに引数など与えていないよ
それでそんなエラーメッセージを出されてもお世辞にも親切で分かりやすいとは
言えんだろうよ
>>72 の流儀なら
いつもClazz.method(obj, arg)とでも呼ばせたほうが
一貫性があってわかりやすく受け入れられるという理屈になるのでは
82 :
81 :2011/05/09(月) 01:38:22.05
ごめん一行目 Foo().fooだった
>>81 Foo.fooを何のつもりで読んだのか分からない。Foo.fooのコードは知らないって設定?
そりゃいつもひと通りの方が一貫性があっていいんじゃない
ダメなの_
分かり難い分かり難いって、今でも本当にそう思って言ってんのか 初心者はきっと分かり難いはずだ!って想像して代弁してあげてるのか 今理解してるのなら良いじゃない。お前にも分かるんだから皆分かるよ
>>83 もしかして、実装を知らなきゃクラスを使えないのか?Pythonでは
そういうのはleak of abstractionというんだが
単純にユーザが引数など与えていないのに、引数を一個渡された、3個必要だという
エラーメッセージが混乱の元だと言ってるだけだが
(そしてもちろん素直に3個渡せばまたエラーになるわけだ)
Q. メソッドの引数に self が必要って、、、Python ってしょっぱくねぇですか? A. 残念ながら Python はしょっぱい所もあるよ! でもそれを補って余りあるから使ってるよ! で良い気がするんだけど・・・
>>85 一個渡されて3個必要なら渡すのは2個だろw
あとselfがあるってことくらい初心者でも把握しろよ。基本だろ
それにhelpでドキュメンテーション文字列が読めるからそれで引数の説明があると思うが
呼ぶ時点でどんな引数がいるかだいたい分かってるんじゃないのって話
どんな入力に対してどんな出力が帰ってくるかって分からないのに、どうやって呼ぶの
>>86 いや面倒くさいから分かり難いって話になってるからな
たぶん勢い余った言いがかりだろうけど
>>88 ・他の言語と違うから分かり辛い
・記述量が増えるから面倒くさい
コンボだよ
コンボ
両方
そりゃ分かりにくいことは分かりにくいだろ 定義ではselfを書くが、呼ぶときは書かない 書かないだけでなく、bound methodには実際self引数はない ただしエラーメッセージではselfの分が数えられる
>>90 それが分かってるのに分かりにくってどういうこと?w
>>91 複雑で奇妙なルールを「わかりにくい」と表現するのは
別におかしなことではないのでは?
仮にそれを理解していたとしても
他の言語と違うからってさあ、なまじCに似せてある言語いっぱいあるけど、ファックだよね まさに虎の威を借る狐だよ。まあそういうのって逆立ちしてもCに勝てないんだけどね
ずーーーっと Python だけ書いてるなら、そりゃ脳も最適化されるだろうけど、 他の言語に従事しつつ Python もたまに書いていたら、あ、しょっぱいな、と 思うもの
>>92 あーつまり分かりにくくはないけど分かりくいって言ってんのか、ややこしい奴だな
>>95 いや、「分からない」と「分かりにくい」は違うぞ?
日本語分かってるか?
誰も「わからない」とは言ってない
>>94 pythonよりしょっぱくない言語教えて
>>94 Pythonは素直でシンプルなようで、その辺結構壁があるのな
意外と
>>96 分かり難いものを分かる俺スゲーってことだろ。解ったよ
だがな、お前以外の皆も分かってるんだぜ。分かり難いにもかかわらずだ
分かり難いってなんだろうな
>>97 Scheme とか
あれはあれで別の所がしょっぱいけど・・・
>>99 そりゃ、他の言語ならそもそもそんなところで躓くことすら無いのだから
それに比べりゃ分かりにくい
ただの相対論だ
>>101 じゃあ絶対的には分かりにくくないってことかよw
じゃあPerlとかRubyの相対的トラップを教えてよ。で、総合的に評価してよ
今の議論は全く意味を成さないね
『Python は理解出来ないから消えてなくなれ!』と思ってる人はいないと思う。 『Python は理解し易いという割には、随所に罠があるよな』と思ってる人がいるだけ。 (多分)みんな Python を貶そうとしている訳じゃないから、安心汁。
分かりにくいとかいう言葉面に妙にこだわってるみたいだからその内容をここまで 親切に説明してきたのにこれかw そんなら最初から聞くなやアホが
>>104 お前の説明は分かり難かったわー、というか分からなかった(笑)
>>103 馬鹿の振りして分かり難い分かり難いって連呼してる奴はいるな
pythonの相対的トラップは簡単だからこのスレのど素人たちにも語れるけど rubyとかは難しすぎて多分語れる奴は出てこないだろうな
>>107 お前だろw
ワリニクイーwwwソウタイテキニーwwwwワカラナイトハーイッテナイーwwww
マジくだらん流れ
でもselfを付けるか付けないかなんて議論の価値が無いのは事実
『Python の self は全く問題無い。むしろ良い物だ。』と言い切っちゃう人がいたら、 こういう議論も参考になるんじゃないかしらん。
>>114 そういう人もいるだろ。いたらダメなのか?
こんな初心者どもの意見とか意味ないよ
>>115 ダメだけど、良いんじゃね。
リスクはあるよとだけ言っておく。
エラーの引数の数が合わないで混乱とか?w
勿論、そういう事を公の場で表明しちゃうリスクの事ね
ああ、全く分かってない馬鹿な初心者が噛み付いてくるからな。注意が必要だと思ったよ
まず
>>116 みたいな特定の考え方をダメだと言ってる奴がいることが驚異的なリスクだな
こいつの考えた理想的な言語を使ってみたい。たぶんクソ言語だろうな
俺は忠告はしたから、後はお任せするわ。。。
>>121 >>120 はPythonユーザは初心者を小馬鹿にする傲慢で鼻持ちならない連中ばかりだと
思われても特に損だとは思わないタイプの人間だろうから
忠告しても無駄だろう
pythonユーザがどう思われようが俺の知った事ではないし、 俺を見てpythonユーザはこうだと決め付ける情報リテラシの欠片もない現代人としての初心者のこととかどうでもいい
コミュニティとして一番初心者とかにも親切な雰囲気なのはPythonだよね。 Rubyはなんか性格悪いやつばっかりな気がする。
問題があったらググるかソースコードを grep するだけなのに、 コミュニティって必要かな
2chだけ見ても、ググる前に質問スレに質問してる奴って結構いるからなあ
>>124 一部のイジメをTwitterで公言する中二とかが目立っちゃってるだけで、
Rubyにも親切ないい人がいっぱい居るよ。
>>127 Pythonでは中二みたいな奴は存在しないよね
Rubyはどうだろ?
誰かも書いてたけど、npm 良さげだね 前見た時はこんなに沢山パッケージが無かった気がしたのに
130 :
57 :2011/05/09(月) 03:47:32.06
一気に加速しててワラタ。 別に第一引数のselfが素晴らしいと言っているわけじゃなくて、見た目の悪さ ほどには実用上は問題にならないから気にするなと言っただけのつもりで、 素晴らしいというつもりは全くなかった。 記号がいいかselfという名前が良いかは、俺はどっちかが良くてどっちかが悪いとは 思わない。Rubyは記号を、Pythonは名前を選んだだけだ。phpは$this->でPerlは なんだっけ? Pythonは十分使いやすくてそれなりに綺麗でそれなりの効率、という、 特筆するほどいい点はないけどバランスは良い言語だと思うよ。 他の有名なLLは、スレッドが使いにくかったり遅かったりそもそもWeb以外で あまり使われていなかったりGUIライブラリが貧弱だったりと汎用言語にするには キツイ欠点があるけど、Pythonはそういった欠点が少なくて適用範囲が広いから便利。 でも、そういった実装や周りの環境を考えないで言語だけに注目したときに、 「Pythonは他のLL全部を圧倒する素晴らしい言語だ」って言っちゃうヤツっているの?
ググればわかる質問をした場合 Python「ググるとわかりますよ」 Perl「ググればわかるけど、こういうことじゃないだろうか?」→なぜか関係ない古参の雑談のネタに Ruby「死ねよ。俺登校拒否だけど、コミッター。イジメってストレス解消だよね。」 という答えが返ってくる確率高い。
>>131 イジメってストレス解消だよね。
こんな事言った奴は許せんな。
人間としてのまともな感覚があるとは思えん。
>>77 >このエラーは間違いなく初心者にとっては混乱の元
>1 givenと言ってるが
>初心者にとっては引数など与えたつもりなどない
すごく同意。初心者にはわからないエラーメッセージだよね。
>>86 そうなんだよ。まったくそのとおりなんだけど、Pythonにしょっぱいところはないと言い張る
Python信者がいるから変なはなしになるんだよ。
>>87 みたいな。
「初心者でも把握しろよ」は流石に無いわなあ…
まぁ、最初はつまづくけど、一回つまづいたら覚えるもんじゃないの?
初心者でも一度もつまづかずにマスターできる汎用的な言語があるのなら、ぜひ知りたいものだ。
それと
>>57 の問うてる
> self反対派は、まず関数の第一引数のことを行っているのか、属性アクセスの事を言っているのか、
> 後者であればRubyみたいに記号を割り当てないのが嫌だと言っているのか、
> それともJavaみたいに省略できないのが嫌だと言っているのかをはっきりしてくれ。
は、かなりまともな問いだと思うよ。
具体的に何が不満なのか書かずに、ただself批判してるだけだと、理由もなく叩きたいだけの人にしか見えない。
これに関しては、どっちでもいいことだと思うし、他の言語と違うからとかいう叩き方はすごくダサいと思う。
>>135 >> self反対派は、まず関数の第一引数のことを行っているのか、属性アクセスの事を言っているのか、
>> 後者であればRubyみたいに記号を割り当てないのが嫌だと言っているのか、
>> それともJavaみたいに省略できないのが嫌だと言っているのかをはっきりしてくれ。
こんなことを言われてる時点で、仕様がださいことが決定的だよな。
このスレのOOP脳のアホっぷりにどん引きですよ
>>134 いや、マジでselfがあるって知らないでPythonプログラミングしてる奴がいるなら今直ぐに止めた方がいいと思うよ
なんか反論ある?初心者が把握しないでも良い正統的な理由があるの?
self批判って馬鹿しかしてないんだな
selfは初心者が把握してなくて当然ってどこのゆとりだよ Pythonすら使えないゆとりが使える言語を紹介してくれよ
pythonやるときに「selfを省略しても大丈夫」と勘違いする奴がいるとしたら そいつは改行やインデントも省略するに違いない ルールを他の言語に合わせることの合理性が欲しいならpythonをやるべきではないが Javaと似てないからしょっぱいという主張に正当性があるのかは不明
まさに、Pythonにしょっぱいところはないと言い張るPython信者そのまんまだな。
Pythonにしょっぱいところはあるにしても、self批判はねーよ お前アホすぎてそこしか理解できないだけだろ?
まあSteve Yeggeが指摘する所の、
スコープと生存期間周りのルールの問題
>Pythonの作者のGuido Van Rossumはまた、間抜けな技術的失策を初期に犯している。
>ラリーの失策ほど甚だしいものではないが、それでもいくつか本当にひどいのがある。
>たとえばPythonはもともとレキシカルスコープを持っていなかった。
>そして動的スコープも持っていない。動的スコープにも問題はあるのだが、それなりには機能する。
>Pythonはグローバルスコープとローカル(関数)スコープ以外のスコープを何も持っていない。
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
128 :デフォルトの名無しさん:2011/05/09(月) 03:20:51.24
>>127 Pythonでは中二みたいな奴は存在しないよね
Rubyはどうだろ?
お前sora_hのこといってんのか!?
キングダム オブ ルビー コミッターのsora_hに土下座しろ!!
俺もこのスレのself批判に本当にうんざりしてるよ しかもホワイトスペースには寛容らしいから、並のプログラマでもないんだろうな。訳がわからない
>>144 じゃなくて、pythonのselfがいけてないことをどうしても認めようとしないだけでしょ?
信者の鏡ですな
>>148 じゃなくて、selfってスコープを表してるだけだからなあ
他に叩くこともなくてこれを一生懸命叩いてるんだろうけどさ
今日 ラリウォールがでてくる夢見ました ハワイかどっかに旅行いって 変な教会の場所に、ラリウォールみたな人が受付をやってました 最初、なんかピンッときたんですが そのあと質問したらラリーウォールっていってました 旅行者に出されるクイズみたいなやつがでたんですが 最初は視力とかなんか意味わからない問題がでました そして中盤らへんにPerlの質問がでました 質問内容は、Perlのよさはなにか みたいで4択ででました 変数がどうたら、処理速度がどうたら 実用的とかだったきがします そして突然ラリーウォールが教われました つかみ合いになってました 僕はその敵の腹を殴ったんですが びくともしませんでした そして、なぜか教室掃除をさせられました旅行者全員 乾拭きをもって床をふいてました
selfとかまじつまらない話やめませんか?激しくどうでもいいので お前らウンチがスコープとかselfクソ!!都会っても無駄です 言語製作者に直接いうか、言語製作者がウォッチしてそうなスレでやってください こんなクソスレはパイソン製作者とかみてません わかりましたか? だったらさっさと書き込むなクズ
> じゃなくて、selfってスコープを表してるだけだからなあ kwsk
>>151 初心者はself以外の話を出来ないんですよ。許してあげましょうよ
そして10年の月日が流れた
>>44 正直それができるぐらいならselfいらないと思うんだが
そのsuper()にはself渡してないけど、どっからselfに関する情報もってきたの?
Pythonマジ意味わからん
ってかキモすぎる
>>152 フォフォフォフォフォ
selfとかマジでいってんおかね君は
Perlでいうmy $class=shift;みたいなもんすか
もうわしは50歳
なんかよくわかりませんが selfっていうのはperlでいう$self=shift;ですか?おしえてください なんかよくわかりません
C++でいうthiscallをプログラマに明示的に書かせているんですよおばあちゃん
>>138 普通、初心者だから把握してないんだろ
それを、初心者も把握していなければならないとしてしまったら
初心者は路頭に迷ってしまうぞ
Perlもボッコボコ! ゲームも弱っ弱っの忍者さんがいるスレはここですか!?
Python信者さんは
>>44 を説明してよ
マジでキモいんだけど
162 :
159 :2011/05/09(月) 10:32:28.68
逆に、
>>138 は初心者の頃から把握してたの?
それを把握できるのって初心者脱出の道の中にあると思うのだけれど
>>159 え?じゃあどうやってプログラミングするの?把握せずに、どうやってプログラミングするの?
>>162 少なくともself批判してる馬鹿みたいに大混乱することはなかったな
たぶんself批判してるレベルの理解力の奴はプログラミングとか向いてないと思うよ
self批判してる奴はPython以外の言語なら余裕で使えるのか? ポインタ分からないからC以外の言語を使うとか言う奴みたいだな
selfの件で唯一欠点と言えるのは引数の数を間違えたときのエラーが
分かりにくい件で、これがイケてないのはGuidoも認めてる。
http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay 第一引数を省略できない(追加の5タイプが必要な)デメリットは、メソッドを
インスタンス経由で参照されるまではただの関数として利用できるメリット
(クラスの外側で定義した関数をメソッドにできるとか、デコレータが使えるとか)
とのトレードオフ。
ただし、Rubyは後発で、Pythonでいう関数をモジュールのメソッドに置き換えることで
関数自体を無くしてメソッドで統一したり、mixinを使ったりして、このトレードオフを
Pythonよりもうまく扱っている。つまり、PythonがイケてないというよりRubyがエライ。
まぁRubyにはRubyで代わりにしょっぱいところは沢山あるし、RubyはPythonが昔から
持っているキーワード引数をまだ導入出来ていなかったりするから、selfの件だけで
RubyがPythonよりエライとは言わないけどね。
ああ、引数のことがどうとか言ってたのはGuidoとかいう人の受け売りだったのか
だからなんでsuper()と書けるのにいちいちselfを書かなきゃいけないのか教えてよ!
RubyはPerlから親しめなさを踏襲してるからPythonより全体的に扱いにくいよ 存在自体がしょっぱいから落ち目ってこと
>>169 ちょっと意味が分からない
def __init__(self, arg):
super().__init__(arg) // self使ってないが別に困らない
引数のselfは何の役に立ってるの?
>>155 Python3 の super() は引数が省略された場合、呼び出し元のフレームから
第一引数を取ってくる。
Python2では、super() は旧スタイルクラスが混じってると動作しないから、
あまり使われていない。
>>173 なるほど意味分かった、ありがとう
フレームの第一引数を暗黙に取るのか
そういう暗黙チックな構文糖を導入するぐらいなら
他にも色々できることあったような気がする
他では一意に決まらないから
>>175 Python3 の super() に関してはもっと暗黙な部分があって、
呼び出し元のメソッドオブジェクトからクラスを取れるようになっている。
なので、クラススコープで定義された関数とそれ以外で定義された関数は別物。
クラスの外で作られた関数では、super()の引数を省略できない。
selfはむしろ、クラス取るために呼び出し元をこれだけ弄るなら、第一引数取る
くらい追加の仕掛けなしにできるからイイじゃない、ってくらいのオマケ。
178 :
159 :2011/05/09(月) 11:01:51.27
>>163 把握せずにプログラミングしちゃうのが初心者だろ?
>>164 大混乱はしないさ、最初だけ
でもそれを批判しちゃってるのが「初心者でも把握しとけ」だろ?
把握せずにプログラミングするのが初心者なら 初心者が把握できてないselfのどこに問題があるんだ? 問題があるのは初心者だろ
>>177 詳しくありがとう
callerの実行時情報見て動きを変える関数って黒魔術めいてるけど
特殊用途の関数だからいいってことなのかな……
Pythonのほかの言語要素からすると異色の実装に見える
オーバーロードも知らんのかよ
なんでオーバーロード?
183 :
159 :2011/05/09(月) 11:08:46.76
184 :
159 :2011/05/09(月) 11:13:33.32
俺が批判してんのは、self自体は別に悪いとは言えないけど 初心者には確かに解り辛くて、それをあろうことか 初心者のせいにしちゃってるのがマズいってこと
>>181 もしかして
>>180 に対するレス?
一般にオーバーロードは呼び出し側のフレーム情報は用いないし
Pythonにはオーバーロードは存在しないと思ったけど
俺なんか勘違いしてる?
>>185 pythonにはオーバーロードは存在しないよ。初めから引数が省略されてるのがおかしいみたいな
言い方してたから。それってそんあにおかしいことかあ?
挙動を考えれば分かると思うけど、クラス外でクラス内の省略した呼び方したら普通にエラーになるんじゃねえの
>>186 いやだからなんで「オーバーロード」が出てくるのかさっぱりわからない
>>187 デフォルト値があるからオーバーロードがないんだろ
結局とる引数によって動きを変えるなんて普通
>>188 > 結局とる引数によって動きを変えるなんて普通
関数がその関数に与えられた引数によって動きを変えるのは普通というより
当たり前
super()関数は、super()の引数じゃなくて、super()を呼んだ関数への引数
によって動きを変えているから
いちいち実行時フレームを参照している
ちっとも普通じゃない
そんなことも理解しないでオーバーロードとかホザいてたの?
>>189 だからフレームが変わると引数が変わるだろ
省略したときの動作をクラスの外で呼んだときに出来るのかってだけ
レキシカルスコープしかない無い言語でフレーム情報で動的スコープを真似るのは 一種のハックだと思う
>>192 クラスの外で呼んだ時、の意味を詳しく
class Foo(Bar):
def meth(self):
super().meth()
で、foo=Foo(); foo.meth() という意味であれば、もちろんできる。
def hacked_meth(self):
super().meth()
Foo.meth = hacked_meth
という意味であれば、できない。第一引数じゃなくてクラスのほうが取れないから。
Pythonはよく分からんのだが、 もしかしてselfって環境そのもの?
176 :Perl忍者ninjahebi:2011/05/09(月) 19:09:17.11 ID:rXRDzuOR0 どうでもいいけど俺の名前使うのやめてくれない?
#ninjahebi (笑)
test
a
e
>>148 まるで@だとすごくいけてるかのような書き方だなw
凄くってほどじゃないが、冗長性は控えめだと思うなあ そもそもメソッドなら@すら要らないんだし …あー、属性への代入で self 省けないのはちょっとスマートじゃないな 仕組み上、仕方ないのは解るけどさ
ちょっと解りにくくてすまぬ、アクセサのことね
self()にすれば良かったのに…
メソッドは@いらないなら、変数もいらないようにすればいいのに。中途半端な。
バトロワスレで言っても仕方の無い事かもしれんが、 B 言語 PG :『A 言語って××がマイナスポイントだよね A 言語 PG :『B 言語だってマイナスポイントはあるだろ ってなるのは何でだろうね。 B 言語 PG :『A 言語って××がマイナスポイントだよね A 言語 PG :『そうだね。そこは不便だけど、別のプラスポイントがあるから使ってるよー で良いと思うんだが・・・
>>206 属性とインスタンス変数が区別出来なくなるじゃない
Rubyコミュニティがなんか気持ち悪いという印象がある。 Perlから移りやすい文法なので言語としてはいいんだけど。 初心者でゼロからやる人はPythonの方がいいよな。今なら間違いなく。
問題があったらググるかソースコードを grep するだけなのに、 コミュニティって必要かな
>>210 でもPythonは今日のログで排他的な印象持ったなあ
まあRuby側からの印象でしかないけどさ
>>212 このスレでコミュニティの質を判断するなww
Pythonユーザはホワイトスペースとselfの議論に 心底うんざりしているのを忘れないでくれ
このスレ見てるとむしろ大好きなんじゃないかと
スルッと受け入れれば良いだけだと思うんだけどなあ self とか global とか lambda とか GIT とか 速度とか 色々あるでしょ
上の口ではうんざりとか言ってても下の口がビクンビクンいってる感じだな
typo した... × GIT ○ GIL
Python と Ruby 1.9 って、GILがあるとはいえ php, Perl, Ruby 1.8 に比べたら 圧倒的にスレッドが使い物になる言語だから、それを欠点にあげると他のLLは 論外になってしまう。
>>215 お前がその二つしか解らない底なしのアホだからって
そんなに怒んなよ
>>220 他の LL って php, Perl, Ruby 1.8 しか挙ってないみたいですが??
どこが論外なんだろう・・・
つか、「他にも問題のある言語があるから問題無い」って理屈はおかしいだろ・・・
>>222 そういうこと言いたいなら、まずリストアップされてない
言語を自分で挙げなよ
>>223 次スレからは Erlang も Haskell も Go も JavaScript も Common Lisp も
Scheme も SML も OCaml も、マルチスレッドを扱える LL は全て入れて
おくべきだなw
Schemeありなのは嬉しいが、本当にいいのか?www
>>228 微妙な所だけど、gauche が昔からネイティブスレッド扱えるから入れておいた
>>226 スレタイにそんなに書ききれないし
>>1 には
LLの定義とともに
>エントリーは、Perl、PHP、Python、Ruby、JavaScript・・・
と書いてある(ただの例示的列挙)わけだからいちいち明示する必要はないだろう
ってマジレススマソ
>>214 ほかのみんなはPython信者の傲慢ぶりとPerl忍者のきちがいぶりに心底うんざりしていることを忘れないでくれ
>>232 傲慢なんじゃなくてアホが言い負かされてるだけ
コンパイルや実行環境を事前に立ち上げておくことなく ソースファイルを瞬時に実行できるなら このスレの対象であるところのLLに含めていいと思う
>>232 プログラマの三大美徳は不精、短気、傲慢
>>234 それが、C++インタプリタとかいう物も存在するんだよ…
>>237 cint? あれ試したこと無いけど早いのかな
使ってたら time helloworld.c とかやってくれるとうれしい
静的型でも早いなら
>>234 は引っ込める
>>234 だったらこれでも当てはまるんじゃね?
cc helloworld.c && ./a.out
いやどっちみちCでは、実装がインタプリタであっても 「プログラマの負担が軽量な言語」とは言えんと思うがw
C++はcout, cinがあるだけ大分マシじゃね。ちょっと動作確認するくらいには良いかも 少なくともJavaよりは楽かな。でもやっぱC/C++のいいところは実行速度だからな たまにPythonのコードをC/C++に書き換えるとその速さに感心する でも文字列処理とか配列処理とかいちいち作るの面倒すぎ
>>239-241 ごめんごめん。
>>234 を十分条件みたいに書いたのはバカだった
CをLLというにはたしかに無理があるw
あくまで必要条件として次がほしいなあと
* 事前の明示的なコンパイルが不要
* 実行開始するまでの時間が短い
JRuby, Scala, Clojureみたいにスクリプトっぽく実行できるけど
スタートアップに時間かかる言語/処理系があるので
そういう思いで
>>234 を書いたのでした
俺はその手はLLに入れてもいいと思うのだが>起動に時間かかる LLの第一義定義である「プログラマの負担の軽重」と何も関係ないし…… 特に、Web用途が大半である(と思われる)PHPとの比較で考えれば 起動の時間は問題にもならないだろ
ipythonの方が高機能だけどpythonインタプリタの方が起動が速いから後者を使うってことはあるな
>>243 とりあえず十分条件の意味をよく調べてみようか
このスレって落ちてる?
いきなり過疎ったな
>>247 のレスでどれだけスレが止まるか楽しんでたんだと思う
251 :
デフォルトの名無しさん :2011/05/15(日) 06:37:19.83
LispはC並に高速にできることを最近知った (Lispは知らないので真偽は定かでない)
なんだその提灯記事
充分に複雑なプログラムをきちんとした(ユーザーフレンドリーを削ぎ落した)Lisp実装できちんと作ればC並に速いよ そのかわりメモリだだ使いまくりでコンパイル遅いけど ふつうのプログラムならそりゃCで書いたほうが速いに決まってるわけで、つまりこの世の9割はLispで書くとCより遅い
Lispだとプリミティブな操作が単純で副作用も少ないから最適化しやすくて Cだと何でもできるから最適化に限界があるってかんじじゃん?
ずっと速度や省メモリを要求されてきただけあって Cの最適化はかなり進んでるぞ
Lisper は生成されるアセンブラを読んで手動での最適化もする その為、ディスアセンブルする関数が言語に組み込みだったりする
>>258 Lisp はバイトコードじゃなくてネイティブコードだっつの
Cもそこまで速くないよ
Cより速い言語ってどれ?
機械語
機械語より速い言語ってどれ?
>>262 ってさ、Cが一番速いって言ってるようなもんだよね
科学技術計算用途ならFORTRANのが速いんじゃないの Cはベクトル演算、並列演算を意識した言語仕様になっとらんし ポインタ等が最適化を邪魔してる面があって CのコードをコンパイルしてもあんまりSIMDとか使ってくれんだろう 動画処理など少しでも性能が欲しい(が単純な数値計算の多い)ソフトは Cでも遅くてASM使いまくってるみたいだな
FORTRANプログラミングは辛すぎる
>MATLABを用いると、C言語やFORTRANといった従来のプログラミング言語よりも短時間で簡単に科学技術計算を行うことができる
>>265 restrict修飾子のおかげでCでもポインタはハンデにならなくなった
早い、遅いわめいてるクセして作るアプリ・スクリプトがごみ まじすごくない 本当にすごくない だっておまえらウンコが書くスクリプトうんこなんだもん モバゲーとかグリーとかのバカチョンたちがゲームつくってるけどウンコ オンラインゲームにばりばりちょうちょうちょう!!負けちゃってるウンコゲーム 提供相手は情弱、ウンコゲームによろこぶ情弱、うんこみたいな出尽くしてる運子ゲーム あっちむいてほいとか、javascriptでテトリスとかもう失笑物だよね(笑) あの一人で作ったときはすげえって思うけど 所詮テトリスとかクソみたいなパズルゲームとかjavascriptで作ったうんこみたいなウンチゲームまじきもいんで ブログとかにのせないでもらいませんか?? javascriptでゲームとかゲームなめてんですか? 自分で満足しても僕から見たら全部ウンコですよ Dofusuくらいなら、まあがんばったね くらいですよそれ以下はゴミ 君たちjavascriptで、あっちむいてほいとかジャンケンとかテトリスとかライフゲームとか パズルとかもうまじで痛すぎますよ!!!究極!!!!!まじで!! もうやめてくださいね本当にじゃあさようなら!!!
グリーってほんとすごくないね ゲームも
激しく同意
でもそのグリはむちゃくちゃ儲けてるんだよな。
以下グリー言語スレ
情弱から如何に金を絞りとるかというスキルが重要なのであって、 プログラミングスキルは全く重要じゃない
お前らが貧乏だってことはわかった
RAM を大量に消費するとか、専用のコントローラで操作したいとか、 激しくネットワークトランザクションが発生するとか、膨大な量の ポリゴンを処理したいとか、マシンの性能を最大限まで引き出したい とかじゃなければ JavaScript でゲームを書くのも現実的な選択肢だと 思うわ。 短時間でそれなりの物を作れるのはかなり大きいメリットだと思う。 コーディングよりもロジックを考える方に時間を使えるからね。
ゲームプラットフォームとしても JavaScript は最適ダネ!
メモリを消費する、というのはわかるが、RAMを消費する、というと、 なんか高温の環境とかでチップがどんどこ壊れるとかそんなのみたいだ。
DIMM
日本の技術者は技術を捨てて、商売に走っちゃったね
金儲けを考えないと批判され 金儲けを考えると批判され
>>276 そこで述べてるのって開発側にとってのメリットだよね
ありがちなFlash+ActionScriptじゃなくてJSをゲーム開発に選んで
何が嬉しいのか、それだけだとよくわからない
ウェブブラウザさえあれば動くとか
ソーシャルゲームはいかにユーザに有料アイテムを買わせるかが最大の課題だからな。 NoSQLで負荷分散うんたらかんたらとか、そんなのどうでも良い。
>>282 iOS で動く
ベンダーフリー
ブラウザ側と連携し易い
つーか、別に Flash でも良いよ
『○○が良い』って言うと『排他的に○○が良い』と言ったと思う人多いね・・
>>285 つまりLLだけど、ease of developという意味での利点ではないのね
>>286 Flash との差分を挙げただけだけど?
何で LL としての利点を挙げないといけない事になってるんだろ・・
JSゲーってIE6とかでも動くの
わざわざ IE6 を挙げるくらいだから、答えは分かってるよな
>>287 いや、Flashゲーならありふれてるけど敢えてJS推したい強力な
理由がなんかあるのかと
つまり「無い」、ということね 敢えてJS出したのは気分の問題?
>>292 強力に押したい理由って例えばどんなの?
イチイチ突っかかってくるのは気分の問題?
Flashで作られていたら誰も驚かないだろうSVGガールが IE9 + HTML5のデモに使われているのを見て色々考えることがあった HTML5! W3C標準!とか言っても、あれがまともに見れる環境、 Flashアニメまともに見れる環境より少ないんじゃないのか
>>293 いや、
>>276 の言っている大筋の論旨は実にLL的だけど、
その論旨の中でのJavaScriptゲーという選択がありがちなFlashに比べて
微妙にマニアックでよくわからなかっただけ
普及している物が一番なら、誰も新製品は出さんわな 簡単な理屈なんだが
>>296 新技術は当然あってもいいが、それにデベロッパとしてさっさと
追従するのが妥当かどうかはまったく別だろう
HTML5のVideoにしてもお話にならん状態だし
せいぜい5年先、10年先に生きてくる話だろうと思ってる
>>295 LL 的な部分で JavaScript が Flash より優れている所を聞きたいってこと?
正直 Flash はもう興味が無いから、知りたかったら別の人に聞いて
>>297 デベロッパ全員が追従しなくていいでしょ
俺は行くけど君は残るという選択は何の問題も無いよ
きもちわりー議論だなオイw
LLは恥ずかしいから、スクリプト言語って書こう
(function (){})(); ↑なにこの意味不明な言語
どう見てもC言語をそのまま進化させただけにしか見えないが。
javascriptもactionscriptもどっちもecmascriptの実装の一種だから 言語としては別にあんま変わらないと思ってたんだが、違うのか?
>>302 もう少し見やすい方法も。。。
new function() {}
307 :
デフォルトの名無しさん :2011/05/17(火) 12:25:51.00
喫煙所についてぐだぐだ文句言うなよ 糞が
いや煙流れてくれば、服とかにおい付くし、空調的な配慮が全くないと どこが分煙だよ、って気分になるぞ。
>>306 new しただけで本体が実行されるのもちょっと……
>>302 気にするな、C++もだいたいそんな感じだ
#include <stdio.h>
int main(){[](){[](){[](){puts("|ω・`)");}();}();}();}
( ;゚Д゚)y─┛~~
>>308 ( ゚Д゚)y─┛~~
>>308 −y( ´Д`)。oO○
>>308 あ、ごめん、そっちいっちゃった?
めんごめんご
ま、煙草吸わない奴はそうかも知れないけど
喫煙所って俺らにはコミュニケーションの場なんだよね
煙草が嫌なら自宅に閉じこもって仕事してろ
仕事中にコミュニケーションと称してサボってるだけじゃん
非喫煙者とはコミュニケーションとらんのか
実際には煙も流れて来ないような掲示板で熱く嫌煙を語る奴って、どっかおかしいよな。 しかし、タバコの煙で健康を害する奴って結局、遺伝的に弱すぎなんじゃね? 実際タバコぱかぱか吸って90で元気なジジババだって一杯いるし、タバコに弱い 遺伝子は絶滅すべきなんじゃなかろうか?
スレチの話題で4行も費やす奴から滅んだらよろしい
実際に漏れてもないシステムの脆弱性問題を語るやつって、どっかおかしいよな しかし、脆弱性を実際に突かれる奴って、運が悪すぎなんじゃね? 実際脆弱性をそのままにしてるシステムだって一杯あるし、運が悪い システムは絶滅すべきなんじゃないだろうか? なんか、違うな……
立川談志とか忌野清志郎とかそう言ってて、ガンになってから禁煙したけどね。まあ、清志郎は手遅れだったけど、談志ももうダメっぽいよね。
にゃんの話だよ
金払って毒もられる気分ってどんな気持ち? 納税ご苦労様です
俺はタバコ吸わないしむしろ嫌煙だけど、建物の隅っこで喫煙してる奴は哀れだし 場違いな嫌煙主張をしてる奴はニコチン以外の何かによって脳みそがヤラれてるんだと思う
ふーん。で、半日前に終わったスレ違いの話題にレスをする奴についてはどう思うの?
お前みたいに一日中2ちゃんに張り付いている奴ばかりじゃないんだ。世の中は。
ふーん。俺も10分しないうちにレスを返せる様になりたいね。
そりゃ、今このスレ見てるからだろう。 ほんとお前jは救いがたいバカだな(笑)
ふーん。婉曲的な表現が通じない人っているよね。
327 :
デフォルトの名無しさん :2011/05/19(木) 00:22:55.19
>>327 C++と言っても0xだからな
少なくとも0xのラムダ式に対応したコンパイラじゃないとダメだ
>>328 gcc 4.5 でできました!
ラムダわけわかんないけどc++でもトレンドになるなら
LLの勉強してなれとこうかな
ラムダって装甲ロボット兵でしょ。
ラムダはLLのものじゃないし、C#にもあるし、慣れるというほど難しくもないけど、C++ではトレンドにならないと思う
qsort()みたいなC言語時代から関数を引数に取ってた関数はlambda式になってもおかしくないんじゃね?
どういうこと?
今でもC書くときはC89な俺はわりと
>>331 に同意できる
構文が醜くてもlambdaで書くほうがstructでいちいちファンクタ記述するよりは楽だが
BOOSTのlambdaなら非0xコンパイラでも利用できるし
それでなくともlambdaでなければ実現できないことがあるわけでもないので
ポータビリティを優先させるという選択は普通にありえる
記述で楽をしたいことが最重要ならC++など選んでいるはずはないのだから……
仕事でチームで開発する場合はそうだろうね でもC++を使う理由はそれだけじゃなくて、変態だからってのもあるよ マルチパラダイムの選択肢がまた増えちゃうってのは変態的にはワクワクだろう だから変態のトレンドにはなる気がする つまりネット上で盛り上がってるように見えるけど職場では禁止されるパターン
>>302 それは無名関数を普通の関数と同じ形式で呼び出せるという
JavaScript 最大の利点のひとつなんだけどな・・
Scheme でいう所の
>>304 と一緒
JavaScript の場合は、本来の関数適用という用途から外れて、
スコープを作る目的で多用されているのが問題なんだろうね
C++ってテンプレートとか絡んでくるとデバッガーとかでも追いにくいし、やっぱメンテ 面倒だ。なんだよあのむちゃくちゃに長い名前。
確かにC++はアサーションとprintfでバグを追いかけてしまう。ロガーとか使うべきなのだろうか。
>>337 今日書いたC++の涙が出てくるコード
std::binder1st<std::mem_fun1_t<uint64_t&, TrackEditor, size_t> >
ctsf = std::bind1st(std::mem_fun(&TrackEditor::CTS), this),
dtsf = std::bind1st(std::mem_fun(&TrackEditor::DTS), this);
Pythonなら単に
ctsf = self.CTS
dtsf = self.DTS
ってとこか
0xならstd::functionとかautoとか使えるんだよな確か
>>333 ソート方法なんてそんな使い回すものじゃないんだし
一時関数でいいじゃん、それってlambda式がぴったりじゃないかなと
(function (){})();は、setTimeout(arguments.callee, 〜)の場合も使うな
>>334 情報系の院で、計算量の多い数値計算プログラムを書き捨ててる際に、
特にboostのlambdaとかbindの使い方が分からん奴にとって、
今すぐにでも正規に入れて欲しい機能のひとつ
正規にってなんだよ
そんなのの使い方も分からん奴が使いこなせるのかよ。
ここではjslinuxは全然話題にならんのだな
あれは(制約が多いと思われていた)ブラウザ上であそこまでやったのが凄いんじゃないの。
perllinux phplinux rubylinux pythonlinux
糞スレ保守
Perlで覚えた知識が無駄にならない、自然な以降という意味ではPythonよりRubyの方が ずっといいよね。ゼロから覚える人はソースがきれいに書くように強制されるPythonの 方がいいと思うけど。
移行ね。 ずっと良いの意味による。 Rubyに移行した先に何が待つのか? 今後のことを考えるならPythonだろう。 Rubyはコミュニティが脳内お花畑で付き合いきれん。
Perlの多様性に嫌気が差したならPython、 ベターPerlを求めるならRuby、って感じじゃね。 まあ用途毎に言語決めたら良いんじゃないかとは思うが。 HerokeならRuby、GAEならPythonみたいに。
>>352 コミュニティに付き合う必要ってそもそもなくね?
>>354 その言語のイベントって参加したくならない?
MLでやり取りしているあの◎◎さんに会える〜
とかってなるとテンション上がるでしょ。
コミュニティにはある程度関わっておいた方が良いよ。
仕事とか技術とかで為になる話を聞ける機会も結構あるし
VSでC#書くようになって、vimでPerl書いてMooseは遅いなあとか言ってたこれまでの歴史が黒歴史になったわ。
>>355 イベントに参加とかしたくはならんなあ、MLならともかく
オフラインで会うとなれば地元でやることなんてほぼないのだから
1泊以上は前提になるワケで、参加したいとか思ったことない
田舎モノは一生そこで篭ってればいいよ
>>355 コミュニティの雰囲気は技術と全く関係無いでしょ
技術を増やしたいなら、サロン的な場で話を聞くよりも
他人のソースコードを読んだり自分でコーディングした方が早いよ
(自分で勉強する気があるならだけど)
一から学ぶならPython 他言語からの移行なら本人の趣味だろう
>>352 今後の事ってなに?
Pythonに何か良い事でも起きるの?
というよりRubyに未来がない
>>362 何で Pythonian は他言語を目の敵にしてるの?
Pythonは原理主義者が多いからな.
>>363 いや、Rubyは頑張って流行作ってみました感があるよ。
それでもそこまで浸透していないように思う。
Rubyの未来に対する考えでは
島根と島根以外では温度差があるんじゃないの?
>>365 いや、俺は Rubyist じゃないから Ruby なんてどうでも良いんだわ
何で Pythonista が他言語に攻撃的なのか知りたいだけ
インデントと改行のせい
>>366 しばらく前まで Python を擁護する発言を見るとすぐにPython信者認定するやつが
常駐してて、 Python 叩きの方が酷いように見えたけどな。
人格叩きは何れにしろ不毛だよ
>>368 つまり仕返しってこと?
叩かれたから叩くと?
仕返しってwww マイナー言語使ってると発想が攻撃的になるのかね?
マイナー言語よばわりして攻撃してるつもりかね?
全然。なぜならマイナー言語好きだから。 いいじゃんマイナーだろうが好きなら。
>>370 別に Python ユーザーが攻撃的なわけじゃなくてどの言語でも攻撃する人は
居るよと言いたかっただけなんだけど、どうしてそういう方向に考えるのかな、、、
ひょっとして小学生?
そういえば、phpだけはdisられっぱなしの総受けマゾ言語かもしれない。
>>374 それが貴方の言いたい事なら、他の言語のユーザにも攻撃的な人が居るとだけ言えばいいんだよ
文脈を無視して、唐突に他言語のユーザに話題を広げておいて、自分の発言が理解されて当然
という風に振る舞うのはどこかおかしいと、小学生を卒業してるなら分かるでしょ
これはあれだな つまらないことで言い争いはやめよう、と切り出したほうの圧勝
勝ち負けだったのか 大人だから勝ちは譲っておくわ
>>376 やっぱりマイナー言語を使ってると攻撃的になるんだねー
というかPythonちゃんは日本での知名度が低いころに インデントがインデントがっていじめられたのが未だに尾を引いてる
>>374 PHPユーザーは、需要があるとか現実的な理由でユーザーなんであって
言語仕様のダメさは重々わかってるからなw
でもダメな所が好きなんだぜ
Schemer が S 式の括弧の多さを指摘された所で、別に気にしないもんな
あれはメリットがでかすぎる 仮に指摘されてもどうってことない
C 使いが「クラスが無い」と指摘された所で、確かにそうだねと思うだけだもんな
ObjC 使いが「名前空間が無い」と指摘された所で、ほ〜良く知ってるね と思った一瞬後にはスッパリ忘れてるよな
JavaScript 使いが「ブロックスコープが無いんだって?」と指摘された所で、 その内 let が行き渡るさ、と遠くを見つめて笑うだけだもんな
だから、Python 使いも他の言語ユーザも、攻撃されたとか反撃しよう等と思わずに 好きな言語を使えばいい
スレの趣旨的にはdisりあってくれたほうがw 個人攻撃みたいなのはおもんないけど
技術的に正しい指摘だけならいいんだけどな コミュニティの質とかどうでもいいw
Pythonにくらべて、Rubyは実行環境を用意するのが大変だね なんでもお手軽なUbuntuですらソフトウェアセンターで開発→Rubyって選ぶと どわーって出てきてどれをインストールしたらいいかわからんレベル なんかソースもってきてmake installするのが当たり前みたいな感じ Pythonは最近のディストロだと設定スクリプトで採用されているので標準でそろってるんだよね 言語仕様的にはRubyの方が好きかな
自分もRubyの方が好きだな。
Rubyのdebパッケージは、いろんなニーズに対応できるようにDebian的に細分化されてる んだが、どれ入れればいいんだかよくわからんのは確かだ fullと書いてあるのを入れればいいんだけど Rubyは間違った意味でユーザー専用デスクトップ用なので、 ソースをホームディレクトリで自前ビルドしてバージョン分岐させるシステムが自前供給されてる システムにインストールされるRubyなんてどうせRails用だろ1.8.7でいいよみたいなすごい適当な
Rubyはrvmがデフォルトじゃないの?
俺はWindowsでもLinuxでも自分でRubyのビルドなんざしたことないがなあ ソース持って来るのが当たり前なんて思い込みを押し付けられても困る
Archならpacman -Syu rubyで問答無用で1.9が入るぜ らくちんだぜ
-Syuじゃなくて-Sか
>>393 デフォルトではないが、事実上の標準ではある
rvm use 1.8.7 とすると、 $HOME/中略/bin/ruby が $HOME/.rvm/中略/ruby-1.8.7-p344 を起動するシェルスクリプトに
rvm use 1.9.2 とすると、 $HOME/中略/bin/ruby が $HOME/.rvm/中略/ruby-1.9.2-p180 を起動するシェルスクリプトに
rvm rake test とすると、インストールされている全Rubyで rake test によるテストが長々と順に実行される
嫌ってる人もいるんだけど
ねえ、プログラミング言語の話題は無いの?
>>398 ここは戦場だぜ?
気を抜いていると死ぬぞ
いや、インストレーションの話してて面白いのかなと思って
401 :
デフォルトの名無しさん :2011/05/24(火) 23:00:48.15
rvmは、へたに普及してしまったおかげで問題の切り分けが面倒になったという。
ここを見ていると Scheme ってやっぱり良い言語なんだな...
それほどでもない
悪くはないけど、特別良いってわけでもない
特別良い言語なんて無いから、それほどでもない言語ってサイコー
Cとpythonは特別良い
C は良いとして、何で Python?
ここまでPythonの話題8割、Ruby1割、その他1割くらい。良くも悪くもPythonがこの先生きのこるのは間違いないな。
圧倒的じゃないか我が軍は
Rubyのパッケージって最初のころは便利でいいなあ、と思ってたけど、ちょっと使いだすと、 バージョンの微妙な違いとか依存関係でうまく動かなかったり、なんか信頼性がCPANとかに 比べるとずっと低い感じがする。 インストール時のバージョン管理とかももうちょっと賢くやってもらえないかと思ったり。 おもちゃっぽいのならいいけど、やっぱPerlとかPythonに比べると今一つ使えるものじゃない んだよね。
はいはい、ぱいそんぱいそん 何でインストールの話ばかりしてるんだろね
なんでRuby使いはそんなPythonを敵視してるん?
国産を盲信しているからだろう。
>>411 インストール無関係に実際に使っていれば気になることばかりのはずなんだが、
まさか使ってもいない言語の話しようとしてたのか?
>>412 Perl,PHPよりも見た目がすっきりした汎用LLという部分で競合してるけど、
現状Web以外の分野では圧倒的に負けてるからじゃね?
PerlをRubyで置き換えたいのに、実際のLinuxディストリではRubyじゃなくて
PythonがPerl代わりに使われてしまってる。
>PerlをRubyで置き換えたいのに そんな気概は1ミリも見えないんだが…
むしろRubyの狙いどころが分からん
RubyはPerlを置き換えるとかいう話は Rubyを使っている人 以外 からよく聞く
RubyもPythonもそこまで競合しないと思んだが
Pythonの方がオブジェクト指向風味の味付けが微妙にいいんだよね。くどくなくて。 Rubyはどっかくどいんだ。 上手く説明できないが、キリスト教ならカトリックとかプロテスタントならついていける けど、Rubyは統一教会とかモルモン教みたいなカルト的テイストって感じかな?
それは好みだと思います
どこぞのスレでもあったが、Ruby 使う人は ・ $HOME/bin は Ruby スクリプト ・ サーバサイドスクリプトは Perl ・ システム起動スクリプトは Python を使う WebサーバでRubyスクリプトを適当使用する以上に情熱燃やしたりしないし(起動時間短縮とか省メモリとかめんどくさいから)、 Linuxやデスクトップの起動スクリプトをRubyで書いたりもしない(これも起動時間やライブラリがめんどくさいから)
>>423 Perlの「小物スクリプト需要」を置き換えたとは言えるな
プロ用ウェブ記述言語としてのPerlの分野はそのまま何も変わらん
Railsの人がトチ狂って土足で踏み荒らしてるが
結局Rubyはなくてもいいってことね
Rubyは仕様がちゃんとしていて優れている
>>412 >>413 少なくともこのスレではPython側からRuby側への攻撃の方が激しい。
レッテル貼りの人格攻撃も->Rubyの方向で多いし。
大抵の基準ではPythonの方が勝ってるから、
Python側からRuby側を攻撃する理由ってあんまりない気がするけどなー。
PythonユーザーのRubyアンチが生じる理由って、なまじ国内でRubyの人気があるせいで
国内のLLユーザーがRubyに流れがちでPythonの日本語ドキュメントの充実を妨げてるとか、
そういうところにあるんだろうか。
そんなに心配してRubyのネガキャンしなくても、
Rubyが使われてるとこがPythonに置き換えられることはあれど、
今Pythonが使われてる領域でわざわざPythonからRubyに置き換わるようなことはまずないのにね。
被害妄想が激しいな
phpはdisられ耐性ついてるからな
whitespace/self批判はものすごくありふれてるよ、上で引用されてる Stive Yeggeも書いてるしな
この流れを見る限り、言語の優劣はともかくruby使いがキモいことはわかるな お前らが評判落としてると自覚しようぜ
>>432 みたいなのがPythonの評判を落とすわけだけどねw
434 :
デフォルトの名無しさん :2011/05/25(水) 14:14:37.34
単芝死ね
VIPPERは巣に帰れよ
>>437 痛すぎる初心者のRuby信者だったりして
>>433 Rubyを悪く言うのはすべてPython厨(キリッ
>>441 ということにしないと不都合があるんですか?
>>442 まあPython厨じゃないってことにしておきたければしておけばいいんじゃない?
444 :
デフォルトの名無しさん :2011/05/25(水) 14:29:23.80
432 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/25(水) 14:02:25.84
この流れを見る限り、言語の優劣はともかくruby使いがキモいことはわかるな
お前らが評判落としてると自覚しようぜ
433 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/25(水) 14:13:25.55
>>432 みたいなのがPythonの評判を落とすわけだけどねw
言語仕様で勝負できないクズふたり
446 :
デフォルトの名無しさん :2011/05/25(水) 14:36:05.17
>>434 91 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/09(月) 01:53:12.22
>>90 それが分かってるのに分かりにくってどういうこと?w
102 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/09(月) 02:03:17.20
>>101 じゃあ絶対的には分かりにくくないってことかよw
じゃあPerlとかRubyの相対的トラップを教えてよ。で、総合的に評価してよ
今の議論は全く意味を成さないね
104 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/09(月) 02:05:27.05
分かりにくいとかいう言葉面に妙にこだわってるみたいだからその内容をここまで
親切に説明してきたのにこれかw
そんなら最初から聞くなやアホが
381 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/24(火) 20:03:16.73
>>374 PHPユーザーは、需要があるとか現実的な理由でユーザーなんであって
言語仕様のダメさは重々わかってるからなw
でもダメな所が好きなんだぜ
388 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/24(火) 20:56:19.55
スレの趣旨的にはdisりあってくれたほうがw
個人攻撃みたいなのはおもんないけど
389 名前:デフォルトの名無しさん[sage] 投稿日:2011/05/24(火) 21:08:42.53
技術的に正しい指摘だけならいいんだけどな
コミュニティの質とかどうでもいいw
まーたperlの不戦勝か
まあRubyをdisるのはだいたいPython厨だし、PythonをdisるのはだいたいRuby厨 そしてPerlの勝利
perlが傍観してる間に phpは実績をつんでいく
Perl, PHP, Ruby, Python さて、仲間外れはど〜れだ?
基準によって全部仲間外れになりうるな
パッと見てひとつだけ大文字で目立ちまくりなPHPかと思ったが RubyもひとつだけRで始まるな
pythonの長さも目立つw つか用途も結構違う気が
PHP 使い手が土方寄り、全部大文字 Ruby 頭文字がこれだけR Python 主用途を決めず汎用を目指している、インデントでブロックを表す Perlは仲間外れな部分が思い付かないや
perl宝石 ruby宝石 python蛇 php
PHP=PHP
Python->銃
Pythonの元ねたはテレビ番組だと見たような気がするが
いったい何をテーマにバトルしてるのやら
メジャーバージョンアップで成功する(した)のはどれですか? Perl 6 PHP 6 Python 3 Ruby 1.9 (2.0?)
Python3は使いやすくなったけど、2との互換性はない
Ruby初心者スレで軽く話題になってたんだけど Pythonって短いスクリプトの実行だと遅いのかな 何かとRubyのほうが重いと思ってたから意外なんだけど % cat batt.rb puts File.read('/sys/class/power_supply/BAT1/energy_now').chomp % cat batt.py with open('/sys/class/power_supply/BAT1/energy_now') as f: print(f.read().strip()) # Ruby1.9.2, Python2.7.1, Python3.2 でそれぞれ実行 % {time ruby batt.rb && time python2 batt.py && time python3 batt.py} 1> /dev/null ruby batt.rb 0.02s user 0.01s system 18% cpu 0.182 total python2 batt.py 0.32s user 0.01s system 53% cpu 0.625 total python3 batt.py 0.23s user 0.02s system 81% cpu 0.303 total
>>463 そうそう
色々モジュール読んでるからかどうか知らんが、インタプリタの起動自体がPythonは遅い
-eとか-cとかで単純なワンライナー実行して比較してみるとはっきり分かる
まあ遅いとは言ってもJavaみたいに遅いわけじゃないし
Pythonの場合はモジュールをあらかじめバイトコンパイルしとくから
比較的大きなプログラムの場合は特に問題はないだろうとは思うが
>>464 たしかに問題になる場面は限られてるね
うちの場合は出力をdmenuに流すスクリプトをPythonで書いたら
dmenuが操作を受け付けるようになるまで妙に時間がかかるので
ようやく気づいたぐらい
でも小物はこれからはRubyで書くことが増えそうだ
>>463 その遅さは自分の体感と異なるな、と思って試してみたら
Pythonはそのデータより10倍くらい速かったけど、
Rubyも10倍くらい速かったわ。Rubyの起動はええ
>>412 Ruby 使いじゃないんだけど
何で Python vs Ruby という構図を作りたがるん?
>>463 遅いか速いかは別にして、ごく短いスクリプトだとシェルスクリプトやPerlやRubyで済ませてしまうなあ
Pythonでワンライナーは書きにくいし書けても見辛い感じがする
やっぱあれは縦に書いてこそ読み書きしやすい言語なんだなって思う
Pythonワンライナーって使ってる人いるのかな? 自分の場合1〜2回、こんな機能があるんだ〜って使ったっきり。 普通のコーディングはPythonにほぼ移行したけど、ワンライナーは専らPerl。 sed,awkの強力版程度で、むしろPerlにとっては原点回帰かな。 Perlは想定以上の用途に使われすぎたんだよ。 blessとかやり始めた辺りで間違いに気づいて引き返すべきだったんだ。
>>464 Python は起動時に -S オプションを指定しないと import site を実行するからな。
Ruby で言えば require gems を毎回してるようなものだ。
逆に言えば、モジュールの読み込みが他のLLに比べて高速だから、デフォルトで
こんなモジュールを読み込む設定になってしまっている。
>>469 余技でやる人はいる、ぐらいのレベルじゃない?
インデントでブロックを表現しなきゃいけないし
PerlやRubyと違いワンライナー向けの手当てがないから
以下はRubyのオプションから一部抜粋
-0[octal] specify record separator (\0, if no argument)
-a autosplit mode with -n or -p (splits $_ into $F)
-Fpattern split() pattern for autosplit (-a)
-i[extension] edit ARGV files in place (make backup if extension supplied)
-n assume 'while gets(); ... end' loop around your script
-p assume loop like -n but print line also like sed
>>470 なるほど。さっそく
>>463 を再計測してみたらぐっと速くなった
-Sなしで遅いって言うのはフェアじゃないね
% {time ruby batt.rb && time python2 -S batt.py && time python3 -S batt.py} 1> /dev/null
ruby batt.rb 0.02s user 0.01s system 57% cpu 0.058 total
python2 -S batt.py 0.05s user 0.01s system 89% cpu 0.067 total
python3 -S batt.py 0.09s user 0.02s system 61% cpu 0.184 total
% {time ruby batt.rb && time python2 batt.py && time python3 batt.py} 1> /dev/null
ruby batt.rb 0.02s user 0.01s system 36% cpu 0.092 total
python2 batt.py 0.31s user 0.02s system 63% cpu 0.523 total
python3 batt.py 0.22s user 0.03s system 62% cpu 0.405 total
-Sつけてもpython3だとそこそこ遅いのね。
>>473 Python3のopenは、バイナリモードじゃないとファイルをUnicodeにデコードしながら
読み込むからね。
open('/sys/class/power_supply/BAT1/energy_now', 'rb') にしたら、
バイト列をそのまま読み込むので同じくらいの速度になる。
ってことは、shebang行は #!/usr/bin/env python とかじゃなくて #!/usr/bin/python -S にしたほうがいいのか?
>>475 ワンライナーとか数行プログラムでいちいちそんなもの気にすんのもアレだし
ごく小規模ならPerlかRuby、ある程度規模が大きいか人と共同で開発するならPythonとかやるのが便利そう
>>476 標準ライブラリしか使わなくて、起動時間が大事ならそう書いたらいいけど、
普通のコマンドラインツールでは体感できないくらいの速度だから不要。
0.3秒もかかるようじゃCGI用途では重すぎだから-Sつけた方がよさげ。
MAMPでローカルにphpテスト環境を走らせています(現在勉強中の立場です) JSONデータの扱いについて質問があります test.jsonというファイルがあって、 たとえばJSの$.getJSON()で通信しようとするとき、拡張子が test.jsonのままだと読み込みませんが、 test.json.phpとすると通信に成功するのはなぜでしょうか? まったく同じセットでレンタルサーバーにアップしてテストしてみると今度は逆に test.json.phpだと読み込みませんが、 test.jsonとすると通信に成功します。 いたらないことばかりですがご教示いただけますでしょうか。 自分としてはどちらでも同じ拡張子でテストができるといいのですが。
>>480 ここはそういうスレじゃないよ
WebProg板の該当スレで聞くよろし
失礼しました。
PerlはUTF-8 localeな環境じゃないと、日本語扱ったとたん ちっとも楽じゃなくなるのが困るぜ ところでPython2.xだとcat -nみたいなのは下のように書くと思うけど import sys for n, s in enumerate(iter(sys.stdin.read, '')): print '%6d\t%s' % (n + 1, s) 3.xだと import sys for n, s in iter(sys.stdin.buffer.readline, b''): sys.stdout.buffer.write('%06d\t'.format(n).encode('ascii') + s) こんな風に書くの?なんかやだなあ もっとうまい書き方あんのかな
485 :
484 :2011/05/25(水) 22:44:27.06
ごめんなんか色々間違ってる…… 2.xのコードは for n, s in enumerate(iter(sys.stdin.readline, '')): print '%6d\t%s' % (n + 1, s), こうかな
subprocess.call('cat', '-n')
for n, s in enumerate(sys.stdin): print '%6d\t%s' % (n + 1, s.rstrip("\n")) とかじゃないか?
488 :
484 :2011/05/26(木) 01:20:14.59
>>487 そう書くと、sys.stdinがttyにbindされているときに具合が悪いので……
Cのstdioのようにttyかどうかでバッファリング戦略変えてくれればいいのにと
いつも思う
>>488 Python3 ではテキストIOはラインバッファリングがデフォルトだから、
その点は汚いハックが要らないんだけど、その代わりバイト列を文字列として
扱いたいときはlatin1を使うという汚いハックがいる。
import sys
fin = open(sys.stdin.fileno(), 'r', encoding='latin1')
fout = open(sys.stdout.fileno(), 'w', encoding='latin1')
for n, L in enumerate(fin):
fout.write('{0:5d}\t{1}'.format(n, L))
490 :
484 :2011/05/26(木) 02:13:34.89
>>489 3使ってないからそういうテクは知らなかった、ありがとう
それはかなりウゲーって感じだなぁ……
まあ書き捨てで多少なりとも楽したい、という目的の場合はアリか
PerlでUTF8以外使う場合は、use encoding 'euc-jp';するだけだろ。
スクリプト自体をutf8で書く場合は、use utf8して、PerlIOとかでエンコードの変換を処理するってこと。 エディタがutf8に対応してないとかcatで標準出力に流して文字化けするのが嫌だとかで、スクリプト自体をeuc-jpで書きたい場合は、use encoding 'euc-jp'する。
>>411 は、matzの宗教知った上でモルモン言うてるんか?
知らずにそういう考えに至ったのなら、それはそれですごい洞察力だと思う。
>>495 誰もレスしてくれなからってそんな自演を
敵は自演妄想か。
498 :
390 :2011/05/26(木) 20:35:15.86
>>392 >>423 納得がいった。
> ・ $HOME/bin は Ruby スクリプト
> ・ サーバサイドスクリプトは Perl
> ・ システム起動スクリプトは Python
まさに自分の使い方はこのとおりだわ。
システムで動作するRubyに標準的なものが存在してない感じなのに
仕事でRails使うときどうすんだよって思ってたんだけど
> システムにインストールされるRubyなんてどうせRails用だろ1.8.7でいいよみたいなすごい適当な
ってことは、debでは1.8のfullをいれときゃいいのか。
今のところは、チームで開発するならPerlかPythonが無難みたいね。
Perlは実績があるからというだけで 大規模開発に向いているとはいえない
大規模なのに LL を使うの? プロトタイピング?
501 :
390 :2011/05/26(木) 20:45:56.76
まあ、Perlで二人以上で作ると、みんなまったく違う書き方するんだよなぁ コーディング規約でガチガチにするような言語でもないし。 今度のプロジェクトはPythonを提案するつもり 標準的インストール環境が統一されれば、Rubyでやりたい気もするんだけど、 そのへんのところ、Rubyの開発者界隈はどう考えてるんだろう?
>>499 Perlで書かれたでかいプログラムの保守とか投げられたら死にそう
まあ2にゃんもしにそうだしな
読まれることと保守することを意識して書けばだいたいおk
海外じゃまだPerl使い多いよな レンタルサーバーもPerlかPHP
スコープが関数なPythonで大規模開発は不可能
え?Pythonってスコープが関数なの?じゃPHPと一緒じゃん。だっせー。
Python はあと10倍くらい速ければな Unladen Swallow が成功していれば良かったんだが
スコープがかなり甘いCでさえ大規模開発は可能 もちろん可能不可能で言えばってレベルの話
Pythonのグローバルはファイル単位。 その意味では翻訳単位(ファイル単位)のスコープを持つCと似てる。
う、うん……(´・ω・`)
結局Pythonはファイルで区切るし、Perlはpackageで区切るし、Rubyはmoduleで区切るから 実質的なスコープは似たようなもんだよね
う、うん……(´・ω・`)
ん、ぁん……(´=ω=`)
名前空間にあとで追加したい場合どうしたらいいん?
どの環境の話よ
Perlはスコープをブロックで区切る。おおざっぱなPythonと一緒にしないで。
ちゃんとした lambda があったら let の代用が出来たんだけどね... macro があればなお良い
lambdaやgenerator式やリスト内包表記では スコープ分かれてるよ
Python にもきちんとしたクロージャがあれば、ブロックスコープなんて瞬時に実装出来たのにね もちろん、大々的に使うにはシンタックスシュガーが必要だけど
関数自体が1画面に収まる範囲だったら関数単位のスコープで全く困ることは ないんだけど、たまにGUIアプリとかで1画面に収まらない関数がぽこぽこ 存在することがあって、スコープもそうだけどインデントブロックも追うのが 面倒だったりする。 良い方に解釈したら、言語レベルで関数分けろとプレッシャーをかけてくる。
Cみたいにファイル単位のスコープあったりするのって、なんか美しくないのは わかるけど、多人数のプロジェクトのときとかにわかりやすいんだよね。どこを直して いいのか悪いのか、みたいなのが。直感や現実的な作業におけるわかりやすさという 点でバランスがいい。 Cが生き残っているのはそういう部分もあるんじゃないかな?
美しくなくねーよ
>>522 リスト内包がスコープもつようになったのって、3.xからじゃなかったっけ?
最新版でスコープ持ってるなら良いんじゃね
言語仕様の話になると途端にスレが静まるなw
内部構造は普通ユーザが意識するものじゃないし 意識しなければいけないのなら設計がおかしい
どこに内部構造の話題があるんだ?
なんだ常にROMってる奴いるんだな
>>524 深いインデントは、視線で綱渡りをしている気持ちになるよね
エディタの設定変えなよ
それは一体どんな設定?
タブ幅を大きくするとか、インデントの可視化とか
他の言語はそんな事をする必要は無いんだけど?
他の言語でもそうしたほうが分かりやすいよ
たまに1v1のチャットと勘違いしてる人がいて怖い 他の言語とか書かれても何の他なのか知らんがな
python以外の全ての言語の中で、彼らが知ってる言語
他の言語ではインデントの可視化なんて要らないけど?
pythonでもいらんよ
>>542 いえあんまり
なんか動的言語スレにいいとこ持ってかれた感じだ
別にインデントを可視化しないと微妙に読みにくいぐらいで言語の評価に影響は無いがな。
>>545 じゃあ、何の他なのか知らなくてもどうでも良いじゃん
>>546 そう思いたいなら、それで良いんじゃないの
エディタの設定変えないで文句言ってる奴は、一度変えてみろってことだろ デフォルト設定でも当たり前にpython使ってる奴はいくらでもいる そんな低次元の不満で言語を評価してるつもりになるなよ
ネストが深くても見やすいという”他の言語”の例を上げろよ
>>552 他の言語はインデント幅を血眼で追い掛けなくていいから
血眼になる素人とかどうでもいい
>>553 ネストが深いとどの言語でも追いかけにくいぞ
ブロック構造が括弧なら1行に10個分くらいネストしてもインデントを追わなくて済むね!^^
言語仕様でもインデントの話だと食いつきが良いんだな
pythonのことなんてインデント制御ってことしか知らないから^^
>>551 エディタの設定変えてインデント見えるようにするだけでいいんじゃないの?
>>556 今どれくらいの階層のブロックにいるかいちいち括弧数えなきゃいけなくなるね。
スコープの話もこれくらい喰いつきが良ければな・・・
スコープにこだわってるキチガイなんなの?それしか言えないの?
まあインデントの話よりはスコープの方が重要だわ
インデントなんかの下らない話より重要なのは良いけど、 いつまでそれを引っ張ってるんだ?馬鹿なの?
539 :デフォルトの名無しさん:2011/05/28(土) 16:42:38.79 たまに1v1のチャットと勘違いしてる人がいて怖い 他の言語とか書かれても何の他なのか知らんがな ↑ 面白い発言だね 1v1のチャット
566 :
デフォルトの名無しさん :2011/05/28(土) 17:52:51.46
PvPなんかでversusがvと略されるの見慣れていたのでスルーしてたは。
意味不明だったけどスルーしたは
>>564 君にはスコープの話は難しくて分かんないから
その話ばかりじゃ詰まらないんだね?
低能の君に分からない話題でごめんね?
でも、君がもっと面白い話を振っても良いんだよ?
俺にしか出来ない言語仕様の難しい話( ー`дー´)キリッ
いやいや、君だけが理解できない言語仕様の話www
スコープの話もこれくらい喰いつきが良ければな・・・ ↑誰も食いつかなくて涙目なのに何いってんのこの人
スコープの話したくてたまらない奴は一人で語ってろよ スコープって言ってるだけのばかじゃないかw
話し相手が欲しいなら他のスレに行った方が良いんじゃないの
インデントよりはマシだからスコープの話するけど。 スコープが細かくなったらどんな利点があるの? 変数の寿命が短くなったらさっさとオブジェクトが破棄されてメモリ効率が上がるってのは多少あるけど、 明示的にオブジェクトを破棄できる言語では、そんなに嬉しいとも思えない。 変数名が衝突して痛い目を見るって言いたいなら、 1関数内に把握しきれないほど多数の変数があること自体が悪い。 スコープ分けたとしたら、 if foo: do_something_a() x = a else: do_something_b() x = b はどう書くのよ。 前もってxを宣言するのか、if/elseブロックの中でxが外のスコープにあることを宣言するのか知らないけど、 あんまりやりたくないな。そういうの。
ifが式になればおk
ifが式の言語だと何の問題ないし、Perlのif「文」でも my $x = do { if (foo) { do_something_a(); a; } else { do_something_b(); b; } }; でいいんじゃね JavaScriptも関数スコープ言語で素直にブロックスコープが利用できないから ブロックを真似て可視性を制御するために (function(){})() みたいな涙ぐましいことやってるわけだけど Pythonはそれすらできないからな
>>574 Rubyはifではスコープ作らんけどイテレータはブロック使うのでスコープ作るから
その前に代入文を書くことがある
だからPythonで言うところのNoneを代入するよ
ゼロだと数値計算、空文字列だと文字列処理、
空リストだとリスト処理の初期値に見えかねないのであくまでNoneね
まあPythonは関数ローカルな関数作れるんだから
スコープ欲しいなら関数内で関数分けすりゃいいと思うんだけど…
同じ関数スコープでも、まともな匿名関数の使えるJavaScriptなら var x = (function() { if (foo) { do_something_a() return a } else { do_something_b() return b } })() と書けるね
素人考えで悪いんだけど、PythonってJSのfunctionやC++0xのラムダ式みたいに、 その場で関数作って使い捨てることってできないの? lamdaは出来ること限られてるし
>>579 そのできること限られてるlambda以外に匿名関数は無いよ
(Javaで言う匿名クラスもない)
なんでそんなに匿名関数好きなの?
その場でテキトーに名前付けて関数定義すれば良いじゃん
・しばしばそのほうが簡潔だから ・名前の可視性に関して、プログラマの意図をコード上により忠実に 表現できるから JavaScript使ったことある人なら理解してると思うけど…… みっともなくとも無駄に名前空間を汚さないようにfunction使いまくり
なくて困ることあるの?
Pythonでもローカル関数名なんてかなりテキトーだよ そんな長い関数じゃないならfuncとかfとか付けちゃうこともあるし… そりゃ長い関数内のローカル関数ならある程度の意味を持たせるけどさ
すぐ必要条件で考えたがるのがPython信者の悪い癖だ
じゃあ匿名関数があるJS使ってれば良いじゃん。なんで無理してPython使って文句言ってんの?
仕様を把握していても使ってるとは限らないだろう
確かに。使ってないからなくて困るかって質問に答えられなかったのか
>>587 このスレでそれを言ったら負けって感じのレスだなw
>>586 necessary conditionじゃなくてrequirementの意味か
負けて良いからお前はJS使ってろよ
っていうPythonぐらいじゃないの、メジャーなLLでこんだけ匿名関数の 扱いが悪いのって まあPHPだと5.3以降だっけかまともに使えるようになったの
なくて困ったことが一度もないんだけどw
λ ...
他所のイデオロギーを持ち込むなよ
>>574 Python 良く知らないので、間違ってたらスマソ。
#!/usr/bin/python
list = []
def foo():
global list
x = 10
for i in range(3):
def bar():
return x + i
list.append(bar)
foo()
for i in list:
print i
print i()
↑これを実行すると↓こうなる
<function bar at 0x1004b8050>
12
<function bar at 0x1004bb320>
12
<function bar at 0x1004bb2a8>
12
みたいなのは直感的?
ちなみに JavaScript だとこう書ける var list = []; (function foo() { var x = 10; for(var i = 0; i < 3; i++) { with({i: i}) { list.push(function() { return (x + i); }); } } })(); for(var i = 0; i < list.length; i++) { console.log(list[i]); console.log((list[i])()); } ↓実行結果 function() { return (x + i); } 10 function() { return (x + i); } 11 function() { return (x + i); } 12
>>598 Python の場合、クロージャの本当の能力なんて滅多に使わないんだから、
関数を定義した時に外側の変数の値をそのままバインドしちゃえば良いのにって
思うな。
一応、そういう時によく使うイディオムでは、 def bar(x=x, i=i) ってして、
内側の関数のデフォルト引数に外側の変数自体じゃなくて変数の値をバインド
してやる。
>>597 >>597 それ、クロージャを持つ手続き型言語で破壊的ループを用いてそれと同じことをやると
大抵同じ結果になるんじゃないか(そうならないものを知らない)
変数が値ではなく箱に束縛されてるのが手続き型言語なので
Pythonの例でいうと、以下のようにすればOK
def foo():
L = []
for i in range(3):
L.append((lambda x: lambda: 10 + x)(i))
return L
closures = foo()
for c in closures:
print c
print c()
勿論以下のように書けば、関数foo()はいらない
closures = [(lambda x: lambda: 10 + x)(i) for i in range(3)]
>>599 なるほど。
with と同様、回避方法は編み出されてるのね・・・
>>600 まあそういう答えは来るかなと思った。
Python の lambda に制限があるのは既出だから・・・
>>599 確かに少なくともnonlocalの無かった2.xでは
箱でなく値のキャプチャで良かった筈だね
という事で、以上がブロックスコープが有った方が良い理由の一例。 あとは名前空間を汚さない為とか、既出の通り。
大したことないね
>>602 nonlocal も導入されたけどほとんど使われてないという。
>>597 そんな実行結果になるわけがないだろうと・・・
>>> L=[]
>>> def foo():
... x=10
... for i in range(3):
... def bar():
... return x + i
... L.append(bar)
...
>>> foo()
>>> L
[<function bar at 0x024FB0B0>, <function bar at 0x024FB270>, <function bar at 0x024FB0F0>]
>>> for f in L:
... print f,f()
...
<function bar at 0x024FB0B0> 12
<function bar at 0x024FB270> 12
<function bar at 0x024FB0F0> 12
>>>
え!?なんで12になるの!?
>>604 そう思う人が Python を使ってる
そうじゃない人は他の言語を使ってる
簡単な理屈だね
>>605 っていうか3.xがほとんど使われてないという……
すみませんすみません
>>607 確かにJSなんて全く使いたいなんて思わないね
JSっていうかPythonだけ仲間はずれなんだけどね
python使えない人たちカワイソーw
python使えない人はPHPで我慢するしかないね…
>>606 その i は一度きりじゃなく、永遠だって事
python使ってないはずなのにpythonの話題しかないw
Python はネタの宝庫なんで
Pythonが決定的にダメなのは2ちゃんに貼ってあるソースをそのままコピペしたときに 動かないことだな。 RubyやPerlならそういうことはない。やはりブレースを使う言語の勝ち。
せっかく勝ったのにユーザー減りまくり落ち目言語は辛いね
618 :
606 :2011/05/29(日) 00:12:36.69
そっか iはforから抜けるときには2になっててxは10不変なんだから常に2+10となったんだ #てっきりxが原因になってるものだと思い込んでたわ
Perlはユーザ減ってそうだがRubyも減ってるのか?
*unixを扱う際に、pythonの代用になりうるjavascriptの実装ない? rhinoとかgjs,seedなんかを使ってる人いたら使い勝手おしえて欲しいなん
>>575-576 ,578
いい解決法とは思えんな。
if foo:
do_something_a()
x = a
else:
do_something_b()
x = b
y = bb
はどうするの?
yに無駄に0でも代入しとく?
問題解決能力の低い奴はプログラミングに向いてないと思います
>>603 君の書き込みがどれかよく分からなかったんだけど、結局何がいいの?
ていうか、名前空間汚さないって言われても。
そんなこと気にしないといけないほどに関数内に名前が溢れてるって、その設計どうなの?
>>622 「向いてないと思います」で済ませる奴のことか。
>>620 Rhinoだけ試したことあるけど
あれは起動に時間がかかるからそれだけで代替にはならないと思う
>>621 Rubyのばあい
ret = if false
puts 'do_a()'
x = :a
else
puts 'do_b()'
x = :b
y = :bb
end
ああ、返り値使ってないからretいらないか
Perlで、普通はこう。 my ($x, $y); if ($foo){ do_something_a(); $x = $a; } else { do_something_b(); $x = $b; $y = $bb; }
文章長いと言われた上にsambaに引っかかる忍法帖Lv1 お勧めしない書き方はこう。 my ($x, $y) = do { if ($foo) { do_something_a(); $a } else { do_something_b(); ($b, $bb) } }; perlで$a,$bは…眠いからいいや。
>>619 どちらも一時のWeb言語の時代が終わって、本来のユーザ数に戻った感じ。
Web言語時代からすれば確かに減ってるんだけどね。
局所的に使う名前を漏らさないとか、変数の寿命を制限するとか、 普通の言語では普通の機能だわな
>>621 それってfooが真のときにyを使用したら鼻から悪魔か
ひどいコードだな
>>625 それって変数スコープはどこにあるの?
>>630 そうする利点は?
>>631 どの言語想定してる?
大抵のLLなら鼻から悪魔にはならないと思ったが。
現実的に考えれば
>>621 のyは実際には両方のケースでの初期化がいるか
fooが真のケースでしか使用しない(つまりifの後で使用できるのはただの
名前のリーク)のいずれかのはずだ
条件次第でだとunbound variableで実行時エラーになる脆弱で醜い
コードをPythonユーザは嬉々として書き、コンパイラも何の苦情も言わないわけだ
どっちみち、Pythonのように書けることは何のメリットでもない
分かってないようがな
>>632 >>> foo = 0
>>> if foo:
... y = 0
... else:
... pass
...
>>> print y
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'y' is not defined
>>633 コンパイラとインタプリタの区別くらいつけような
>>635 Pythonがソースコードをコンパイラでバイトコンパイルしてから
VMで実行する言語であることすら知らなかったのか……
>>632 Ruby の if はスコープを作らず、if ... end が最後の処理値を返す(捨てられることも多い)
条件が then なら x は :a、 y は新規定義せず、ret は最後の処理の戻り値だから :a
条件が else なら x は :a、 y は :bb、ret は最後の処理の戻り値だから :bb
Pythonでは関数内では一つの変数に一つの意味を割り当てるとか、 スコープが問題になるほど長いコードは書かないとか、 いわゆる"pythonic"なコードを書くことを推奨する文化があるから 今の仕様なんだろうけど 正直言ってPythonユーザでもブロックスコープは欲しいですよ
スコープ掘る文があれば良いんじゃね? scope: 云々 みたいな
ブロックスコープのために変な構文追加するぐらいなら、俺は要らない。
Luaってパッと見、構文がPascal系だけどJavaScriptに結構似てる感じだなー と思ってたけど、ブロックスコープなんだな do local x = 1 print(x) do local x = x + 1 print(x) end print(x) end これが期待通りに動く (LuaのlocalはPerlのlocalじゃなくてmyの意味、つまりレキシカル) 束縛を明示する→ブロックスコープ 束縛を明示しない→関数スコープ がわりとありがちなパターンとすると、JavaScriptはちょっと変り種?
>>638 >正直言ってPythonユーザでもブロックスコープは欲しいですよ
普通の Python ユーザはそうだよね。
今更ブロックスコープのメリットが分からない人なんて
いないと信じたいね。
ブロックスコープのメリットはわかってるけど、 書き方が煩雑になるなら要らないと言うだけの ことなんだが...。 トレードオフとか考えない人なのかな?
>>643 メリットが分かってるなら、何で自分に話しかけられたと思ってるの?
そんな事より
>>623 辺りにメリットを教えてあげると良いと思うわ。
いやよん
お前の説明がわけわかめだから、
>>623 にバカにされてるだけだと思うぞ。
>>646 実際、自分が理解するまでは問題なんて存在しないという姿勢の人に
噛んで含んで説明するのは骨が折れるもんだぜ
それがいかに一般的には常識と思われている事柄でもね
それは正しいが、君がバカにされてることと何の関係もないぞ。
そう思いたいなら、そう思えば良いんじゃないの
>>623 さん
>>643 Python は知らんけど、JavaScript は let を導入しただけ
トレードオフに悩むほど書き方は煩雑にはなっていないよ
>>649 自演厨か...。
> 実際、自分が理解するまでは問題なんて存在しないという姿勢の人に
> 噛んで含んで説明するのは骨が折れるもんだぜ
実感したよ。(w
本人でもないのに、バカにされたバカにされたと叫んでたのかw お疲れさん...。
>>650 >Python は知らんけど、JavaScript は let を導入しただけ
>トレードオフに悩むほど書き方は煩雑にはなっていないよ
しただけって...、まあ人によって受け止め方は違うわな。
書き方について、他にどういう受け止め方があるのかな...。
名前空間を汚さないという利点は、それで困る前に関数分けろで終了。
スコープの具体的な利点って今のところ
>>597 みたいな少しレアなケースしか無くて、
しかも今のPythonでも関数内で関数を定義することでスコープは作れる。
Pythonは構文の追加にかなり慎重だから、スコープ作るためだけの構文追加の提案は
通る気がしないな。
>>633 if foo:
y = 1
do_something()
if foo:
func(y)
って場合もあるよ
>>634 それは鼻から悪魔じゃないけど、何がいいたいの?
他の言語でどうだこうだ言うんじゃなくて、本当にPythonにスコープが必要なのに 存在してないのかを考えないと。 特に明示的なローカル変数の宣言がある言語とそうじゃない言語は大きく事情が異なる。 もしPythonが for i in range(N): ... for i in range(M): でiが複数回宣言されているという構文エラーになるなら、スコープは絶対必要だろう。
>>597 for i in range(3):
def bar():
return x + i
list.append(bar)
の次の行に
i = 2
を付け足したら、スコープ作っても結果は同じだけど、それは直感的なのか?
659 :
デフォルトの名無しさん :2011/05/29(日) 13:50:01.08
>>597 って、
>>599 で終了だろ。
JavaScript で let が欲しいケースも大抵
>>597 の用途で、値だけ欲しいのに
変数をバインドする方法しか無いから仕方なくスコープ使ってるんじゃない?
>>652 > 本人でもないのに、バカにされたバカにされたと叫んでたのかw
バカにされてるのは君なんだけど...、日本語大丈夫?
>>633 ifが文だとそういう脆弱なコードに鈍感になるのかもしれない
教育的にはよろしくなかったりするのかも
>>654 > 書き方について、他にどういう受け止め方があるのかな...。
煩雑かそうでないかの 0/1 じゃないだろ。
人によって、ちょっと煩雑・だいぶ煩雑 とかもあるんだよ。
て言うか、トレードオフってわかってる?
>>638 > Pythonでは関数内では一つの変数に一つの意味を割り当てるとか、
> スコープが問題になるほど長いコードは書かないとか、
> いわゆる"pythonic"なコードを書くことを推奨する文化があるから
> 今の仕様なんだろうけど
> 正直言ってPythonユーザでもブロックスコープは欲しいですよ
>
けど、局所化された変数というのは、「これは重要な変数ではない」「このブロックの中でだけ使う」という意味を割り当ててるわけだろ。
>>638 めちゃくちゃなコードを書きたいのにPythonを使う理由はなんだろう…
>>664 ブロックスコープ使う = めちゃくちゃなコードかよ
"pythonic"でないpythonのコード=めちゃくちゃなコード LLバトルロワイヤルって言ってるけど、結局常用に耐えるのはpythonだけで 初めから勝負になってないんだよね。その中で残った糞みたいな不満を話題にしてるだけ 根本的にpythonより優れてるLLがないから、このスレは機能してない
俺もPython信者だが、
>>666 は痛すぎる。。。
Python 信者なら pass しろよ。
まともな反論もできずに個人攻撃しか出来ないPython信者
>>666 おまいさんのようにPythonicって言葉を喧伝する人が結構いるということは
Pythonって言われてるほどTIOWTDIじゃないんじゃね?
という気がしなくもない
このスレで池沼共がPython分かり難い分かり難いと喚いてる割には 初心者に勧める言語としてLLの中で挙がるのは、Pythonが一番多く 他に可能性があるのはPHP、Javascriptが少し。PerlやRubyはまず挙がらない まあpython以外はこのスレでも話題に挙がらないから、本当に分かり難い言語なんだろうな 池沼でも不満を漏らす程度には分かる言語であるPythonのユーザビリティは圧倒的だということ
TIOWTDIなんてどこで言われてんだよ。初めて聞いたぞ
>>672 ちょっとオーバーに言っただけだよ。気にするなよ
まあぐぐって30件しか出なかったときにはこれは正直失言だったと
>>661 関数型言語を知ってる人から見ると拒絶反応出るようなコードなんだけどね
Pythonってやっぱり手続き型言語だなあと実感する
え、関数型言語知ってる人は手続き型言語に拒絶反応出るのwやべーな
>>675 というよりは
>>621 がそれぐらいどうしようもないってこと
あんな糞コードをドヤ顔でさらされてもな……
node.jsがOS標準装備になればjs使うよ
>>676 単なる例にそんなにこだわらなくていいよ。
if c:
x = Foo()
x.method()
else:
x = Bar()
でも構わない。
これは苦しい
my $x = $c ? Foo() : Bar(); $x->method() if $c; こんな感じじゃないの
>>643 煩雑ってのがmyだのvarだのletだののことを言ってるのなら
selfと何度もタイプさせられることを思えば何でもないし
初期化と代入を区別しないのは混乱と誤りの元で
xに代入するつもりでX = 1とかタイポしてもエラーにすらならんし
nonlocalやglobalダサい
>>673 まあmap()やらが3.xでも残ってる時点でone wayではないわな
内包表記でなんとかなるはずだよな?
map(None, (1,2), (3,4,5)) -> [(1, 3), (2, 4), (None, 5)] こういうのはlist comprehensionだと微妙じゃね zipだと [(1, 3), (2, 4)] になる
内包表記はリストを返す mapはgeneratorは返す 機能が違う
686 :
685 :2011/05/29(日) 20:33:25.79
mapはgeneratorを返す、だ 日本語が不自由な子みたいだ・・・
>>685 2.xのmap()が返すのはリスト
ジェネレータ式はジェネレータ返す
>>680 1回ですむ比較を2回もするのか。
もし比較条件が変数じゃなく関数の返り値だったら、二度実行するか一時変数に残しておくのか。
>>689 なんだその後だしジャンケン
条件が変数じゃないんならそう書け
イヤなら別に
my $x;
if (..) {...} else {...}
って書いてもいいんだぞ
>>685 内包表記がgenerator返せばよくね
>>693 どゆことよ
map()要らなくね、って話と繋がる?
>>671 今時Perlは挙がらないがRubyは挙がることがあるから困る。
>>694 どういうことといわれても……
>>692 の言うgeneratorを返す内包表記はすでにあって、
それがジェネレータ式だというだけの話
map()がいるいらないの話でいえば
内包表記/ジェネレータ式 ⊃ map()であればmap()はいらないと言えるだろ
通常の用途では確かにこれは成り立つし
>>685 はちょっと違うと思うね
>>696 調べて分かった、俺はジェネレータ式を単なる内包表記の亜種だと思っていたみたいだ
つまり俺の話は「ジェネレータ式と内包表記あればmap()とか要らなくね?」ってなるんだな
実際のところmap()の代用にならないことってあるのかな、これら
>>697 Pythonのmap()はLispのと同じで複数のリストを処理できる
(ベクトルの加算とかにいい)んだけど
zip()+内包表記でも同じことはできるので
zip()を前提にするならば、
>>683 みたいな微妙な仕様上の違いぐらいじゃないかな
>>698 そか、ありがとう
まあPythonとは言えど「書き方はいくつかはある」ということだな
今更!?書き方が1つしかないとか馬鹿の妄想だろ python弄りのレベルが日に日に下がってるな
そうだよ?俺は始めから
>>682 でPythonはone wayじゃないと言ってた
んでその中でmap()は要るっていう意見
>>683 >>685 みたいなのがあったから
「map()は本来なら要らないはず」を肯定するための材料を探してただけ
>>691 変数でも二度も条件分岐書くなんて悪手だろ。
最初から、そうやってif文の外にスコープ用意してりゃいいんだよ。
寺宝
そりゃ、インクリメントと条件分岐とループがあれば、mapも内包も要らなだろ。 Pythonの one way とは、すでに十分簡潔で効率的な書き方があるなら構文や組み込み 関数の追加はしない、程度の意味だ。 blist = map(int, alist)みたいにすでにある関数にmapしたいだけなのに blist = [int(x) for x in alist] は冗長だしビルトイン関数からルックアップする処理が 毎回実行されて遅い。 しかし、map+lamdaやmap+filter+lambdaよりは内包のほうが簡潔で効率的なのでどっちも必要。 だからPython 3でもmapはビルトインに残ってる。 一方、使う頻度の低いreduceはfunctoolsに左遷された。
reduceが左遷されたのは、Guidoたんが純粋関数言語嫌いだったからだと思っていた。 一部のユーザーから恨みを買い、匿名でウィザード本が送りつけられた、というウワサをどこかで聞いた。
reduce左遷するなら、mapとfilterも左遷でよかったんじゃないかと思う。
709 :
707 :2011/05/30(月) 10:40:34.68
俺のほうが意味不明なコードになっていたw 2行目は | x::xs -> foldl f (f a x) xs かな
python以外の言語のコードが挙げられる度に、なんで流行らないのかがよく分からる
なにがなんだかよく分からる
>>704 関数ひとつだけの処理をmapにかけるのって結構レアケースじゃね?
確かにmap(int,ls)やmap(str,ls)では使うが、それ以外で使ったことないし
ちょっとした追加の処理が入ること考えると始めから内包で書いちゃうよ、俺は。
>>712 内包に比べたらレアだけど、他のitertoolsの中身に比べたらよく使う。
あと、reduceがfunctoolsなので、組み込みから外されると、itertoolsだったか
functoolsだったか迷うことになるw
それはマニュアル読めば載ってるからそう困らないような… むしろreduce()は何故itertoolsにしなかったんだろ てか俺はitertoolsの中身のがmap()よりよほど使うがなあ
py2 -> py3 でbuiltinから削除された関数は、 from __legacy__ import * で復活できるようにすればいいと思ってみたり。
結城浩のPerl言語プログラミングレッスンって読んでみたけど、これ確かに評判どおりよくできている というか、初心が躓かないように細部まで気を配っている感じでいいね。密度も濃いし。 RubyやPythonも結城浩が入門書書けばいいのに。 似たような版型、値段の本は両社とも何冊がでているが、残念ならが内容が段違い。
複数の言語の入門書を 量産している作者の本は総じて完成度が低い
木木日青ヒヒ古ですか?わかります。
PythonとかRubyの入門書って、他の言語の知識が前提になってるのばっかだよな。そうじゃないと言いつつ、まったくのプログラミング未経験者向けの本はない。
PHPが一番簡単(短期間で習得)そうだし、どこでも使えるだろうという安易な考えで本一冊終えて、 いざ使おうと昔から契約しているさくらの条件(一番安いレンサバ)を見たら使えなかったw Python、Rubyは使えるのになんでww はー、どうしよ。
>>720 たのしいRubyはプログラミング未経験者向けだよ。評判もそこそこ。
>721 信号も見ずに横断歩道渡る人ですか?w
>>721 そんなあなたにステップサーバーがおすすめ。
GUIを使ったちょっとしたツールをWindowsで動かしたいのですが、そういうGUIデザインがしやすかったり、 EXE化しやすいのではどういうLLがいいんでしょうか? また最小限の修正でMacOSやLinuxに移植できるものでしょうか?
>>727 EXE
LL
移植
日本語
この 4 つを同時に達成するのはかなり厳しいよ
そもそもGUIでどれもまともな評判を見ない気がする まあどれも似たり寄ったりで、慣れの問題なのかも知れんが
その内、AndroidやiOSにも移植したくなるだろうしなあ
今こそJavaやろうずwww
>>726 SICPとは
送った奴はセンスがあるなあw
結局そういう用途だとJavaやC#がいいんじゃないかということになっちゃうよね。 インタフェース作成のツールもあるし。 LLはやはりサーバサイドやスクリプト処理用だよな。
サーバーサイドでRubyなんか低性能な言語つかうなよ 使って余分な電気消費してCO2が増加する
そう思うならおまえが機械語で最適なプログラム書けよ
おれだけ書いても意味ないだろ
節電できないなんて言っているデータセンターは甘え 今すぐ糞遅いRubyのコードをScalaやJavaで書き直せ
遅いというならJavaもアウトだろ
おれだけ書いても意味ないとか言うのは甘え 今すぐデータセンターに行ってお前が全て機械語で書き直せ
なんで俺が他人がRubyで書いた欠陥コードの面倒をみるんだよw
なんで俺が他人がとか言うのは甘え Rubyなんか低性能な言語とか今すぐ糞遅いRubyのコードをとか言うなら お前が機械語で書き直せ
Rubyが糞遅くって地球を過剰に汚すのは事実だろ
そう言って騒ぐなら世界中のあらゆるプログラムをてめえが機械語で最適に書き直せよ
カスが居直るな
カスってのはクソ遅いとか必死な奴のことだろ
「機械語で現代のPC用プログラミングなんてできるわけないだろ」という理解がないと先に進めないからな プログラミングの煩雑度はすべて等しいという前提そのものが誤りだ まあ、そういうふうになにかものを考えているかどうかは怪しいが 誰も構ってくれないからレスが欲しいというのならレス欲しいと大きく書いたほうがまだマシで、この板でないほうが適切
ここはそういう困った奴の隔離スレのはずだが、何を言ってるんだ?
>747 LL最高や!JavaやC++なんていらなかったんや! な奴の隔離スレと解釈するのはまあありかもしれない でもその解釈は無いわー
いきなり機械語とか言い出して頭大丈夫? Rubyより速い言語なんていくらだってあるだろ
>>749 べつに何か考えてのことじゃないから、そんな指摘は無意味
どっかのスレでJava土方とか呼ばれて小馬鹿にされたから このスレに来て暴れてるのさ
動的言語スレと区別がつかないと思ったらそういうわけか
>>727 最低限使い物になるのがPyQt、Python、py2exe だけど、普通はC#をおすすめする。
>>754 乙
面倒なのでGuidoのコメントしか読んでないけどw
>>755 世の中のLatin-1の60%くらいはISO-8859-1ではなくasciiかWindows-1252なので、その指摘にはあんまし意味がない
間違っているのは世間なのだが、これはもう仕方がない
あとISO-8859-1をデフォルト解釈にしたHTTPは氏ね
758 :
484 :2011/05/31(火) 11:49:19.07
>>754 ありがとう
途中まで真面目に読んだけど、最後のほうはさすがにつらくてGuidoの奴だけ読んだw
>>755 おもしろい
>>757 バイト列をunicodeの0-256にそのままマップしてパススルーする手段としては
latin-1はややdangerousなことがあるよ、という指摘だと思うので、
「意味が無い」ってことはないかと
以下はPython2のコードだけど
u'喝'.encode('cp932') -> '\x8a\x85'
u'喝'.encode('cp932').decode('latin-1') -> u'\x8a\x85'
u'喝'.encode('cp932').decode('latin-1').splitlines() -> [u'\x8a']
CP932がASCII互換かといえば微妙なんだけれども
バイト列のままでも少なくとも行の処理ぐらいは問題なく出来ると
認識されていると思う
(だからstdioが普通にCP932でも使えるわけだけれども)
行区切りぐらいでデータが壊されるのは、意図しない結果でしょう
言葉が足りなかった。言いたかったことは
>>758 であってます
以前、unicodeのみに対応しているライブラリにマルチバイトをそのまま通そうとして
latin-1に変換して食わせてみたんだけど、変なところで文字化けが発生して
調べてみたら
>>755 だったと。latin-1に変換したマルチバイト文字列を弄るときは
気をつけようねって話です
>>733 tck/tk はLLには入らんのかなぁ
あんなもん役に立たないオモチャだろ
>>763 >>727 はオモチャ程度で気軽にGUIを作りたいって言ってると思う
GUI以外の部分はtclで書く必要ないんだし
移植もらくだよね
Tkには一応少なくとも歴史的な意義があったと思うし REPLとGUIの組み合わせを考えると、wishのように、REPLで何か打ち込むたびに即座に UI要素を生成させたり変化させられる(フィードバックがえられる)ような環境は 今でも有効だと思うし、そうあるべきだと思う(ツールキットがTkである必要はない) Tclのほうは、Lispに似てる(shにも似ている)けど、Lispより非力で貧弱で 正直存在意義が分からない
>>765 >Lispに似てる
この度はたいへん斬新なご意見を賜わり…
あれは本気でshスクリプトだよね
>>766 何でもコマンド、何でも文字列、みたいな超シンプルな作りというか本質が
Lispに似てると思ったんだけど、そんなに斬新な意見かな?
まあ似てるのそこだけなんだけどな
functionalじゃないし、code as dataとかマクロとか、Lisp特有の力は
なーんも無いから
使い物にならないという点では似てる
知らなきゃ使えない
ちんちんが硬くなってきた
>>767 「なんでも文字列」に一番似てる言語って、同じ「なんでも文字列」の言語だと思うんだ
んで、それはシェルスクリプトやバッチファイル等、コマンドシェルの言語に近い性質で
「なんでもリスト」の言語はそれらに比べるとちょっと遠いと思うんだ
本質的に相当似てた記憶があるんだが Tclってどういうのだったか今となっては全然思い出せないぜ
データは何でも文字列 文字列をevalすれば実行できる 8.5からはapplyでlambdaもできる Tclってのはそんな感じ
774 :
デフォルトの名無しさん :2011/06/01(水) 08:46:35.13
「一番外側の括弧がないlisp」という表現はうにまがか何かで前世紀に見た気がする。
おっさん乙
>>774 一見文字列だがあれは括弧のないリストってことか
しかもtailのアイテム群はたんなる文字列なので
その解釈はheadのコマンドに任されてるからどう評価するのも自由
よって特殊形式ですらユーザがTclで定義できる
例えばifならcondの値のよってはthen節やelse節をまったく評価しないことも可能
やっぱりLispと似てるんじゃないか?
TclはLispの劣化再発明だからRMSにdisられているんだと思っていた 劣化してるかわりに(Algol構文慣れした)普通のプログラマにも親しみ易いとか そういう利点も特に無いしな
>>778 Wikiにわざわざそういう比較が載っているとはw
教えてくれてありがとう
Perlはバッドノウハウの薀蓄垂れるジジイ専用言語だから深入りしない方がいいよ。 あれはワンライナー専用言語。OOPもCPANも、もう不要。 404とこのオッサンの時代も終わりだよ。 献本御礼、とかいって読んでもいない糞本のベタ褒めでもしてなさいってこった。
子飼団のブログみると確かにPerlなんて滅んだ方がいいのかもと思っちゃうよな 何が勝手に添削か知らんが
Perlはワンライナーのためだけに入れただろ、って要素てんこ盛りだからなあ
どうぞって言って無責任に羅列するだけの馬鹿
2chで馬鹿って言ってる人からレスが来た
はあ、JS厨は馬鹿すぎて話にならないわー URL貼っただけで何か語ったつもりになってるしー
URL貼っただけなのに、レスを付けずにはいられなかったみたーい
貼っただけ、だから問題なんだろ
何が問題か説明出来るの?
ちゃっちゃと GUI を作りたいなら、JavaScript が最適
>>790 >>784 を見てどうすればいいわけ?つーか、これらは何?
そういう使い分けをするの?同じような用途なら、どれが優れてるか教えてくれるかな
クソツールが沢山あっても仕方ないんだよ
rubyを見ろよ。流行るか流行らないかは、どれか一つに掛かってるわけ
>>792 興味持ったなら質問スレか初心者スレで聞いてくれ
もう少し具体的に聞いてくれたらお答えするよ
JSには何一つまともなツールが無いのかよw
デスクトップやサーバサイドやウェブアプリ向けの便利なライブラリや ツールが沢山ある以外は、あんまりないかなあ デスクトップアプリ、サーバサイドスクリプティング、ウェブアプリを 作りたい人には JavaScript がお勧めだけど、それ以外の環境はどうだろね
子飼弾って、文庫本程度の本なら10分とかそこらで読める。YouTubeに動画が上がってる。めちゃ凄い。
10秒で切った
公害団ってなんかうるせーよな、ぎゃーぎゃー。
子飼弾指で文字が隠れてるよ
Guile っていうSchemeの実行環境がすごく気になるんだけど、Linux限定っぽいんだよね。 これに近い言語、実行環境ってないですか? 欲しいのは他のスクリプト言語から呼び出せてWindowsのプロシージャを構成できるスクリプト実行環境なんです。 HSPのDLL版もそういうことが出来るんだけど、呼び出し元とデータ共有する方法が分からないので、 他の言語でそういうのがあればなと。 IEに組み込まれてるVBSとJSのDLLはよく分からないし、HTAもEXEしかない。 そういえばHTABOXがだいぶ拡張されてるっぽいから見てみるかな。
802 :
デフォルトの名無しさん :2011/06/02(木) 09:08:24.94
guileならその昔SunOSで動かしたが。
>>796 >子飼弾って、文庫本程度の本なら10分とかそこらで読める。YouTubeに動画が上がってる。めちゃ凄い。
あの書評を書くため程度の理解度でいいなら、俺だって10分で読めるわww
>>803 じゃあどうしてみんなそれをやらないの?
>>804 何の話をしてるか知らないが、書評を書くほうが時間がかかるし無駄だからじゃね?
ええっと、文庫本一冊360Pぐらいだとして、 1分あたり36P、1Pあたり2秒弱ねー。 たぶん適当にキーワード拾ってるだけで読んでないと思うよ。
>>806 俺、意識の加速って技使えるからよゆーで全部の文字を読んで理解できるよ。
読み終えると同時に記憶は消えるけど。
キーワードだけ覚えておくって技を使えるならあらすじは書けるね。書評も書ける。
ちなみに俺以外で意識の加速が出来る人間を、思い出せるだけで二人知ってる。
一人はちょくちょく俺を襲撃してきて俺を破壊した。
もう一人は出版社に勤めている担当編集者だったけど、俺が意識の加速を出来ると言ったら
つぶてを飛ばしてきたり時々俺を見かけると攻撃してきたりしたので、
俺に余裕がなくなってるときに襲われたときについに殺してしまった。
手に負えない強いやつは、殺せるときに殺しておかないといけないからね。
あの人なんで俺を攻撃してきたんだろ。
俺に出会うまでは自分を神か何かだと思っていたらしいんだけど。
You must go to the hospical! Quick!!! Quick!!!
>>804 本当は10分では読めないから
「俺だってできる」はただの反発で、根拠などない
811 :
デフォルトの名無しさん :2011/06/02(木) 12:02:16.08
なんか感動できる小説を読んだとして 速読でも普通に読んだと同じように感動できるの?
こいつが10分で読めているという保証もないよね。
>>811 10分の間に突然笑ったり泣いたりする子飼弾を想像してわろた。
まあこの手の速読って基本的に「斜め読み」の類のもので、
じゃあ1,2時間かけた人と同じくらい内容を理解して覚えているかというと……。
テストしてみればはやいね!
普通の人でも何処に何が書いてあったっけ、みたいな感じで本をパラパラめくったりするでしょ。 ああいう極端な速読ってきっとそれの延長だと思うよ。誰でもやってるようなことの。 なんかすげえ技術に見せかけて、商材商法やる奴がいるだけじゃないかな? オレは蔵書を〜万冊持ってる、オレは東京新大阪間で新書をウン冊速読できる、みたいなこと 書くやつはまあいかがわしいかな、と思う。 もらった本で書評サイト作るぐらいいかがわしい。
「内容を暗記しなければならない」ような本なんて稀だよね それこそ参考書とか教科書とか、そういうのだけだろ たとえ3日かけて読んだって、たぶん、そもそも、それほど詳細に思い出せたりはしないだろう
内容を覚える必要がない本を10分で読んでなにか意味あるの? 内容覚える必要ないんだから情報としては価値がないのだろうし、 かといって10分で読み終えてしまうから時間つぶしにも娯楽にもならない。
>>804 プライドがあるからだろ。
プライド捨てりゃ、誰だってできるよ。
「□□様より献本御礼。すごい、史上最高の××本。これを読まずに××は語れない。」
とか書いときゃいいんだから。
あんなの読んでありがたがるのは、みのもんたのコメントをありがたがる情弱と同等。
書評するなら自分で買えよ(それより献本を公表するなよw)
Javascriptでモンハンみたいなゲーム作りたいんですけど つくれますか?
つくれるよ。 実際にモンハンはJavascriptでできてるってしらんの?
作れることには作れるんでないのかね。 現行のマシンでまともに動かないだけで。
僕の友達のPHPハッカーがゲーム作ってもブラウザのやつでしょぼかったです
回答ありがとうございます hello warudo からつくってみたいとおもいます
>>817 違う
どうして10分で本を読まないのかという話
>>816 覚える必要がないからさっさと読むんだろ。楽しみたければ読んだあと回想すればいいだけ。
>>823 > どうして10分で本を読まないのか
楽しめないからだろJK
>>823 >>817 じゃないけど
>あの書評を書くため程度の理解度
普通の人は時間つぶしや娯楽、あるいは情報源として本を読むから、
娯楽や時間つぶしなら10分で読む必要がないし、情報源として読むなら10分では不足。
10分で大量の本を読む理由がある人なんて書評書く人ぐらいのものだよ。
今すぐ必要で使って不要になって忘れる情報を探すために本を読むなら、
誰だって10分で拾い読みして読むこともあるでしょ。
まあ、世の中、凄い奴がいるからな。俺の知り合いにも教科書ぱっと開いて、1ページ音読して、本閉じて、暗唱出来るのがいた。
というか、実のところ、音読と黙読程度の違いでしかない可能性が高い 音読しかできない幼児に「よむのはやいね」と言われてもああそうって感じだし、 「そんなのでなにかいてあるかわかるの」と言われても、わかりますが何かって感じだ 幼児にとって黙読は超高速で効果の怪しい神業だが、我々には日常でしかない 文字を字を追うことなく面で読むことは決して不可能ではないので、おそらく速読は理屈的にも可能だ そんだけ
おまえら釣られすぎ。 彼にとっては読書=書評(という名の宣伝)に使えそうなフレーズを探し出す作業 彼にとって10分で読むと公言するのは、多読家であり、本を見る目が肥えている、という 印象を与えるための演出であり、マーケティングに決まってるだろ。 真に受ける奴は、間違いなく情弱。
>>828 可能かどうかの話してるんだろ
あなたがその人をどれだけ嫌っているかどうかには誰も興味はない
>>827 >文字を字を追うことなく面で読むことは決して不可能ではないので、おそらく速読は理屈的にも可能だ
これがほんとかどうか確かめるために内容理解度テストをすればよいわけですな
不可能に決まってんだろ
可能だよ 写真を見て一瞬で全体を把握できるだろ。 ただ、詳細に聞いてみると大抵間違ってるんだけどな。
なんで写真が突然出てくるの?莫迦なの?死ぬの?
レインマンでダスティンホフマンが一瞬で爪楊枝かマッチ棒が何十本あるか数えるシーンがあるけど、そういうのだな。
速読は見るのと理解するプロセスが独立だと分かれば簡単 例えばさ、既に熟読して内容を理解しきっている本を再度読むとき パラパラ捲っても読めるだろ?理解するプロセスをすっとばしてるからな でも、これを未読の本に適用しても「自分が既に理解してること」と パターンマッチしてるだけだから、読書しても全然賢くならないんだぜ
じゃあなんで俺は賢いの?
A: 賢人はそんなこと言わない
速読は内容を文章でなく、イメージで捉える手法。 コードを読むときに字面で追わず、内容をイメージでつかむのと同じだよ。 どうでもいい話だけど。
結局内容理解度テストすればいいだけ。
これ以上子飼団をいじめるなよ。 彼けっこう苦しいんだから。
10分ではむりだけど、30分くらいで文庫1冊読む知り合いがいる そいつにその文庫の一節を読みきかせると、ページ数を当てるし、続きを暗唱したりする 気持ち悪いくらいの能力だと思うけど、そいつは陸自で匍匐前進するのが仕事 Python最高
LL LL LL LL LLLLLL LL LL LL LL LLLLLL の話は?
pythonの大勝利ということで結論出てる
python遅いじゃん
言いたいことも言えないこんな世の中じゃ Python
JS信者の根拠なしの印象操作うぜえ
頭悪そう
おまいら楽しいなw
俺はJSもJCも好きだけど、Python大勝利じゃん
そらそうよ
JUJU宴
855 :
福盛俊明 :2011/06/03(金) 09:05:42.70
GUI スクリプティングなら JavaScript (
>>784 )
取っ付き易さなら JavaScript (
>>847 )
どんなプラットフォームでも動かしたいなら JavaScript
関数型言語とオブジェクト指向のエッセンスを同時に楽しみたいなら JavaScript
3D をグリグリ動かしたいなら JavaScript
ユーザの多さで言ったら JavaScript
開発の活発さで言ったら JavaScript
何だ、バトルするまでもないな…
>>856 俺の使ってる古い処理系だと
((1<<128)-1)&1
が0になるんだが、最新のだとこの糞仕様なおってるの?
matplotやnumpyなんかのライブラリを誰かが書き直してくれて、 Java並みの速度で動作してくれるなら、Javascriptに乗り換えるよ
実行環境がブラウザ(笑)
このJSキチガイをどうにかしてくれ
これにてバトルロワイヤル終了
で、
>>857 の仕様は直ったの?
整数もまともに扱えないとかJS糞すぎだろ
便利だよね。ActiveXだよね。
Javascriptのユーザー数ってブラウザにちょこちょこ細工してるだけの人が多いから かなり水増しされてるんじゃね
そういう裾野の広さが魅力
>>860 >ところが Windows 8 は JavaScript で書いたアプリがメインに
Windows 8自体がメインにならないかもしれないという罠があるわけだがw
その記事書いてる人、おかしいと思う。
ネイティブAPI使えないなら普通のアプリは作れない。 いまさらActiveXでもないし、Windowsフォームを使わない理由はない。 お天気情報とかその程度ならJSでもいいのでは? Vistaや7のウィジェットはJSだし。 うちのPCのデスクトップにも時計とかカレンダー置いてる。
そこら辺は意識の切り替えが必要だね ウェブアプリに於けるネイティブ API は REST とかのウェブサービス データストアはオンラインストレージ等のサービスを利用する オフラインでの作業はキャッシュマニフェストやローカルストレージで 普通のアプリが作れるかどうかはプログラマの質次第 もちろん古いデスクトップアプリが動かなくなる訳じゃない
MSのマーケティングだね。HTML5好きですってアピっとけばアーリーアダプターが喜んでくれるから。
874 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 14:31:46.71
久しぶりに登場してみたよみなさんあいかわらずですねあ、かわいそう
Perl, Python, Rubyで日本人のコミッタってそれぞれどれくらいいるの?
Perl忍者は当然Perlのコミッタなんでしょ? それともただの信者?
Perl信者って語感もなかなかだな
Perlしんじゃワロス YOU! 改名しちゃいなYO!
MSのアレは、シンクライアントもどきにするなら、ブラウザベースでいいじゃんと思ったな。
880 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 16:44:46.12
なんカストークばっかりだねここ
881 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 16:54:15.30
sora_hってオワコンらしいね みんないってるよ
うわ、また才能ある若者への嫉妬か。痛いな なんて思いながらググってみたら、twitterが出てきたわ。 ほんとに腐っててワロタ。子供にPC与えちゃダメだな
883 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 17:15:49.96
うわあ・・・
884 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 17:18:06.60
twitterもってないけど オイツあたま故障してるのかなあ???
885 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 17:18:42.50
こいつらいつまで語り合ってんだろうねマジキモキモ 早く死ね
886 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 17:19:28.38
なんかこいつらLL言語やってるやつだけが感染する強力風邪ウイルスとかに感染したら ここに来るやついなくなろだろうね
887 :
Perl忍者 ◆M5ZWRnXOj6 :2011/06/04(土) 17:23:19.78
早く消ねsora_h
Perlはオワコン
Rやoctave使えよ。色々と捗るぞ
中学生に完全敗北したPerl忍者w 小学校からやり直せよw
忍者wwwww
今時の中学生>>>>>>>>>>現代の忍者 さすがのハットリ君もこれには呆れるでござるの巻 忍者の名を名を汚した栃木の彼の君は忍者を名乗るなでござる 忍者の面汚しが!!!!!!
今後はPerl信者と名乗るように よろしいな?中学生に完全敗北した君。
これはPerl忍者たちが黙っていられないね 怒りに触れる前に消えたほうがいいよみんな
本体を消滅させないかぎりどんどん分身が暴れるから意味ないらしいね ぜんぜんわかってないね
Perl忍者=Malaらしいよ
フォローしてもらったからっていい気になるなよ
Malaってかんかくまでこだわってるらしいねカスだから M.a.l.a とか M a la
はー適当な公開範囲が無い!!!!!! 約2時間前 TweetIrcGatewayから ため息くさいからはかないでほしい
日記化うぜえ
鴨ん、おっと間違えた カモーンPerl信者
rubyにはrakeという便利ツールがあるけど、同様なのはPHPやPythonにあるかな。 PHPではphing2というのを使ってみたけど、これはPHP版Antなので、xmlで書かなきゃいけなくて めんどくさくて断念した。 つかphing使って思ったけど、antってクソだな。まるで直感的でない。
おまえがくそだ消えろかす
904 :
デフォルトの名無しさん :2011/06/04(土) 22:34:35.34
Pythonのsconsってのは結構知られているはず。
>>904 sconsみたけど、ルールとコマンドをPythonオブジェクトの構造で表現するんだよね。
そうじゃなくて、rakeのようにコマンドの羅列でいいんだけど。
そうじゃなくて、
908 :
福盛俊明 :2011/06/05(日) 00:41:46.69
味噌痔〜♪(アハアハ〜♪”
Perl信者に流されたんで再投 Python, Rubyで日本人のコミッタってそれぞれどれくらいいるの?
もう JavaScript で良いじゃん Apple : JavaScriptCore で JavaScript を強力にプッシュ Google : V8 で JavaScript を強力にプッシュ MS : IE9 に加えて Windows 8 で JavaScript を強力にプッシュ Nokia : Qt Quick で JavaScript を強力にプッシュ Mozilla : いわずもがなで JavaScript を強力にプッシュ Adobe : PDF も Illustrator も Air ももちろん JavaScript 有力なベンダーは全部 JavaScript 押し この流れに対抗出来る LL なんて無いよね
プッシュしてるのはお前だけだろ
GAEでJS使えないじゃんワロス。ブラウザ対応状況に依存ワロス
>>910 どれだけプッシュされようと、JavaScriptの言語仕様がが古くさいからな。
スコープが変だったり、引数のデフォルト値が指定できなかったり。
PHPにすら劣る点が多すぎる。
>>910 シェアが高いのは認めるけど、文法がダサいから書きたくならないんだよなー
なにあのシーゲンゴ(笑)みたいな古くさい文法ww
生のjsが廃れてCoffeeScriptが主流になればいいのに
かぶった 913しね
>>914 CoffeeScript ってそんなに良いかな?
あれなら JavaScript のままで良いじゃんと思っちゃうんだけど、
どこら辺に魅力を感じるの?
名前だけでなく使われ方もJavaに似てきたな
ECMAScript 5準拠で書いて良いなら、JSでも良いよ。 けど、それじゃ意味ないじゃん。ブラウザで動くのがJSだけだから、JS使ってるだけで。 もしRubyでもPythonでもPHPでもいいけど、そのインタプリタがブラウザにインストールされてるなら、JS選ぶ人なんていないでしょう。
そんな事無いと思うけど?
汎用言語としてはPythonの方がよっぽど使われてる事実
pythonも初心者向け言語だよね ベターなシェルスクリプトとして使うには便利
javascriptの文法のダサさは元々がschemeインタプリタを 組み込もうとした歴史的経緯にあるんじゃねーの? perlみたく、あのバギーっぽさがいいじゃん
>>909 Rubyは20人強。非日本人をもっと増やした方がいい。
継承とかMixinとか難しい。もう関数だけあれば良いです
>>912 GAE なら Mirah とかを使うと楽しそうだね
まあ確かにlambdaじゃもの足りないときってのはあるけどさ、 大抵ここを批判してくる連中はデコレータとfor, with辺りの仕様を知らない。
928 :
デフォルトの名無しさん :2011/06/05(日) 19:06:31.62
GAEならRingoJSとかいうのが使えたはず だけどPython,JRuby,Groovy,Scalaまで選択肢ある中であえてjsはなぁ
他の言語で無名関数が必要なときの9割ぐらいは、 lambda, @, for, withを使い分けることでいける。 むしろ、コードの意図が明確になるし、スコープもキモくならなくて、 デメリットよりメリットの方が大きい気もするんだけど。 複数知ってないと使えんという批判ならまあ分かるけどね。
>>925 引数が足りなかった場合やキーワード引数名をtypoしたときに自動でエラーに
してくれる分、JSのデフォルト値付きキーワード引数モドキよりPythonの方が便利だよ。
Pythonのselfがイケてないのは同意だが、JSのthisも別の意味でイケてない。
>>930 キーワード引数自体が些末な機能だからどうでも良いわ
CLの昔からある物を今更新しいとも思わんし...。
不便な点は華麗にスルー
面倒くさ
以上、文法が古くさいとかダサいとか印象論を言い出すと自分に帰って来る罠でした
>>931 大事なのは新しいかどうかじゃなくて
便利かどうか
そもそもJavaScriptってPythonとかPerlとかRubyとほとんど競合していないような……。
いまどきリストをfor使って添え字でアクセスするとか。
名前空間なくて$をみんなで奪い合いとか。なんすか、これ?
(Mozilla)JavaScriptの話なのかECMAScript5の話なのかECMAScript Harmonyの話なのかで返答が変わってくる
書き捨てで単純な値比較以外にPythonでlambdaなんか使わんけど、 標準モジュールに利用頻度の高い関数を返すlambdaもどきがあってもいいかも。 知らんだけでもうありそうだけど。。。
>>941 一応operatorモジュールとかあるけど、importなしにパっと使えるlambdaは便利。
L.sort(key=lambda x: len(x[1])) とか。
Perl ワンライナー、昔の資産のメンテ PHP お手軽なWebプログラム Ruby 趣味 Python ベターシェルスクリプト、システム設定とか Java Script ブラウザ TCL/TK 昔のGUI資産のメンテ
Rubyは環境さえ整えばメインで使いたいが システムに入ってることが期待できないしなぁ 言語の優劣というより、政治力のなさとかコミッタの少なさとかが問題なのかな
リーダーありきの言語の限界というか 仕様が明文化されてなかった時代が長いし、 いろいろ後手後手に回ってる感がね
Pythonにシェルスクリプトの仕事をやらせたことはないなあ えらく冗長になる
簡単なシェルスクリプトはbashでいいと思うけど、複雑なシェルスクリプトになると メンテが大変なのでやっぱりPythonで書きたい。
簡単な処理を短く書き捨てる って用途にはPythonは向かないよな そこはPerlの独壇場 複雑な・規模の大きな処理を使い回す って用途にこそPython 逆にこの用途にPerlは使いたくない 適材適所
俺、Python使いだけど。ワンライナーとか書き捨てとかそういうのもいいなと思って、最近awkはじめたんだ。 awkで書くのが辛い規模のを書くときは、素直にPython使えばいいかな、と思って。 テキスト処理するならawkほんといいよ。
>>948 RubyとPythonはどう使い分ければいいの?
Rubyは"より良いPerl"らしいよ。Perlに勝てないのなら存在価値ないね
>>949 俺もawk成り行きで一通り覚えたけど・・・
perl既に知ってるんだったら、awk勉強するより英語勉強したほうがいいと思う。
>>952 perlは知らない。昔ちょっとやったけど、あんま身につかなかった。
身についてたらPythonとawkに手を出そうと思わなかった気がする。
英語勉強した方がいいってのには同意だけど。プログラミング言語系のスレでそれ言っちゃうとおしまいよ。
どのプログラミング言語よりも、英語の方が使い道あって仕事も多くて応用も効くから。
$ irb irb> [1] == [1] => true irb> {} == {} => true $ python >>> [1] == [1] True >>> {} == {} True $ node > [1] == [1] false > {} == {} false
JSってバカなんじゃね?
>>954 必要なら Array の prototype に compare() メソッドを足してあげると良いんじゃないの
>>955 なんでそんなことしなきゃいけないの?
イコールぐらいまともに実装しろよな。
それか演算子オーバーライドできるようにしてくれ。
>>956 自分でしたくなけりゃ、出来合いのライブラリをロードすれば良いだけだよ
自分で実装するのも簡単だけどね
言語仕様がおかしいんだね。
未だに言語仕様とライブラリ仕様の区別が付いてない人っているよね...。
>>949 awkは単体より、シェルスクリプトの一部として使うのが良いと思う
言語単体で使うならそこはPerlでやりたい
Pythonは百行以上書くときだなあ、小物にはまず使わないや
ワンライナーとか小物スクリプトの用途ではPerlぐらいには使えるよ、Ruby Perlに比べれば読めないスクリプトにならないって利点もある とはいえ、システムに組み込まれてることは期待できないし、 Rubyを使った案件なんかもなきに等しいから、 結局趣味で手元の作業を簡略化するぐらいしか使い道がないんだよね。
Rubyってそれで十分じゃないかな、とは思う
rubyとperlなら可読性の差なんか無いだろ
RubyとPythonの言語的な性能は大差ないと思うけど、 ライブラリには大きな差があるように感じる
どんぐりのなんとやら
そういえば.net使う限り、どれでコンパイルしても同じだよな。 JScriptだってコンパイルすれば言語仕様を超えて演算子のオーバーロードが出来るようになるって書いてあったし。
工学系の人間覚えるならPythonがいいよ 数式処理とか数値解析とかのライブラリが豊富 numpyとかscipyとかsympyとか MATLABやMathematicaには多少劣るけど
>>968 俺がPythonに興味を持ったのは3Dライブラリで簡単に3Dゲームが作れるってところだったんだけど、
その数値計算?ライブラリがあるんなら現実的かもな。
ライブラリのセットアップだけでちょっとおなかいっぱいだったんだけどやってみるかな。
>>969 どっちかっつうと研究用だから、ゲーム用途に耐えうる速度かどうかは知らんぞ?
いまどき頂点演算なんて行列計算するまでもなくラッピングされてそうだし
>>968 numpy等等は個々のライブラリなので、
環境として挙げるなら EPD(Enthought Python Distribution)や sage かな。
システムに組み込まれてるかどうか、ライブラリが充実してるかどうかなんかも、 実際に言語を選ぶ際には重要なファクターだよね だからこそ、古い言語は強いんだけど
>>964 Perlはコンテキストに依存したコード書くと結構混乱するかも
>>971 あれ巨大すぎて邪魔。何が入ってるのか何が入ってないのかも把握できない
必要なものだけその都度入れたほうが良い
>>970 pythonが論文に使われたりするの?
研究というより、ちょっとした確認用のプログラム電卓みたいな用途じゃねえの
学生の宿題の答えの確認程度にはいいかもな
といっても、ライブラリの関数を覚える労力と
他のソフトの関数を覚える労力は変わらんと思うけど
工学がどうのこうの研究がどうとかハッタリは置いといて単純に汎用性を考えると
pythonは便利
python遅いじゃん
>>976 Python自体は遅いんだけど、一般的な関数はC言語で実装済みだし、自分で定義する
関数も簡単にCやFortranで書けるから、あくまでもそれらを組み合わせるための
言語としてよく使われている。
3Dの世界でも同じ理由でPythonがデファクトスタンダード言語になりつつある。
BlenderでもMayaでも単なるツール言語じゃん Script-Fuみたいなもんでしょ
スクリプト、フー!
>>975 matlab,octave,Rがありで、numpyがダメな理由がわからない
Cしかしらない老害教授が自分で即席で書いたような逆行列の関数だとかを
B4に渡したけど数値誤差多すぎて使いものにもならんってことはあったな
gmp、ublas何それ?な教授とか、工学部に居なくていいのに。
こーいう無能がリストラに合わないなんて、なんて羨ましい職業なんだろう
それは論文を書くときに、ノーベル賞学者の論文を引用するのがありで、 学部生の卒業論文を引用するのがダメな理由が分からないって言ってるようなもの
numpyは十分に枯れてるだろ pythonで直に書くわけじゃないぞ
Pythonが良いのはbattery includedって事に尽きるよな ライブラリさえ揃っていれば、正直なところ言語は何でも良い
ライブラリが充実しているのは、ライブラリ作った人が大勢いたということだから、 ライブラリの揃ってる言語ってのは、仮に糞だとしても使いようのある糞。
>>982 そのかわり、教授には他にはない経験と実績があるのさ。たぶん
gnuplotの代わりにmatplotlib使うだけでもpython覚える価値はあるぜ
ねーよ
pythonすら覚えられない低能かわいそうですw
pythonを覚える価値はあるが、gunplotの代わりがどうとかそういうこと言うのもうやめろ。見てるこっちが恥ずかしい
現実を認められないruby信者の発狂が見苦しいです
ええっとどこからRubyが出てきたのか
Rubyをdisらないと死んじゃう人の脳内から
994 :
デフォルトの名無しさん :2011/06/07(火) 12:26:05.48
Pythonで3Dで検索したらBlenderってのが出てきたけど、無料の開発環境の.netで作って シルバーライトで動かすのが手ごろかなと思う。
ときどきこのスレの住民層がまったくわからなくなる
科学技術系ではPython圧勝だなぁ。 Bio{Perl,Python,Ruby}でもPython圧勝。
ニッチな分野ではあるがなwくそ高い専用ソフトが溢れてる中にあっては貴重な存在
科学技術系ではお高いソフト圧勝に決まってんだろ
PerlもRubyもそういう用途はあまり考えられてないからねえ。 Rubyはライブラリが貧弱すぎるし、Rubyでプログラミング入っちゃった人と 趣味でやってる人とRails厨が使ってる印象。 Perlは過去の遺産で持ってる感じ。今から始める人がやる理由はあまりない。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。