What have you found for these years?

2009-04-25

python vs ruby...

這讓我有點意外:
godfat ~> python
Python 3.0 (r30:67503, Mar 14 2009, 22:52:13)
[GCC 4.0.1 (Apple Inc. build 5484)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = b = []
>>> a += [1]
>>> a
[1]
>>> b
[1]

再看這個:
>>> a = b = []
>>> a = a + [1]
>>> a
[1]
>>> b
[]

ruby 裡比較符合我的直覺:
godfat ~> irb1.9
irb(main):001:0> a = b = []
=> []
irb(main):002:0> a += [1]
=> [1]
irb(main):003:0> a
=> [1]
irb(main):004:0> b
=> []
irb(main):005:0> a = b = []
=> []
irb(main):006:0> a = a + [1]
=> [1]
irb(main):007:0> a
=> [1]
irb(main):008:0> b
=> []
irb(main):009:0>

老兄啊這會不會太麻煩:
t = time.time()
gt = time.gmtime(t)
hour = int(t) - int(time.strftime("%S", gt)) - int(time.strftime("%M", gt)) * 60

vs
t = Time.now
hour = t.to_i - t.sec - t.min * 60

看來我應該放棄 python?

12 retries:

老林 said...

Python 真的是比 Ruby 囉嗦一點
雖然我真的有在寫 Python 也就只有大三暑假實習那一個多月
不過 Python 的發展路線比較穩定、速度比較快、
寫法要求比較 explicit and simple 等等,這幾點也是蠻重要的。

對了,四月新番神山健治有監督一部做品叫「東之伊甸 (Eden of the East)」我覺得可以找來看看,水準一樣極高。

媺珊 said...

因在google search [context-free grammar]看到你的文章。我遇到一個問題,上網找不到相關資料,也或許有找到但我看不懂,不知是否能請教您。
Q:下面G1與G2是兩個文法,請說明:
G1:N={∑,A},T={a,b},P={∑->A,A->bAa,A->ba}
G2:N={∑,A,B},T={a,b,c},P={∑->Bbc,Ab->bA,Ac->bcc,Bb->aBbA,B->a}
(一)何者是上下文無關文法?
(二)G1與G2的文法將分別產生什麼樣的字串?

godfat 真常 said...

> 老林 提到...
簡單地說就是,寫大東西時囉嗦一點不會特別介意,
此時比較希望能有穩定的東西,ruby 這點就會讓人想翻桌......
但是寫小東西時,多囉嗦一點就覺得很煩,也不有趣 :(

*

看看哪裡可以掱掱掱... XDDDDD



> 媺珊 提到...
呃,其實這我並不是很會,為避免講錯,可以到這裡來問問看:
http://flolac.iis.sinica.edu.tw/lambdawan/
或是 ptt 的 PLT 板,相信應該會有人回答..? XD

媺珊 said...

我去plt板發問了,希望有善心人士回答,謝謝。

godfat 真常 said...

謝謝捧場 XDXD

Anonymous said...
This comment has been removed by a blog administrator.
pigfoot said...

a = b = [] 代表完全是一樣的東西, a 作了甚麼變動, b 也會跟著變, 因為 list 是 reference.

a = a + [1] 代表是把 a+[1]的結果, 給一個新的變數, 但是這個變數剛好是 a, 所以這個 a 就和之前的 b 不一樣了.

我個人是覺得 list 是 reference 常常會忘記, 但是有時還蠻好用的 :p

godfat 真常 said...

重點是 a = a + [1] 和 a += [1] 不同
前者是產生新的 instance, 但是後者變成修改原本的 instance

*

然後那個被我刪掉的,那不是重點好嗎
你覺得看不順眼可以不要來看

大鳥 said...

你好,我在我的Blog延伸這個話題做了些回應

godfat 真常 said...

c++ 也是可以定義 +=,
看了一下這邊:
http://docs.python.org/reference/datamodel.html#object.__radd__
其實意思就是不要把 x += y 想成 x = x + y 就是了 :s
而在 ruby 裡只是單純 parsing 上的差異罷了

Anonymous said...
This comment has been removed by a blog administrator.
godfat 真常 said...

根本沒看懂我在說什麼,只會無禮地口出惡言者不歡迎

All texts are licensed under CC Attribution 3.0