顯示廣告
隱藏 ✕
※ 本文為 layzer 轉寄自 ptt.cc 更新時間: 2014-04-17 07:23:43
看板 Gossiping
作者 cgi0911 (勝者的迷思)
標題 Re: [問卦] JAVA跟Python那個好
時間 Thu Apr 17 04:06:14 2014


※ 引述《herbertyang (herbert)》之銘言:
: 現在大家都說Python 很好
: 但是Java現在也很紅
: 所以到底要學那一個比較好
: 業界比較常用的是哪一種
: 問深入點好了
: 免得有人說八卦已死
: Java是物件導向式語言
: Python是直譯式語言
: 所以兩者是不同的
: 不過java也可以處理python能做的事情
: 所以單學java就可以了吧

我本身不是CS出身,所知甚淺,
不過在這裡謹對我自己認知的Python與編譯器語言做點解釋

就我自己在美國這邊看到的程式開發者職缺來講
絕大多數的時候,他們都會要求「一種直譯式語言,和一種編譯式語言」
或是換種方式說,是「一種腳本語言,和一種物件導向語言」
當然最常見的組合是Perl/Python + JAVA/C++

對我來說,Python和C++ 的關係,
有點像是Python作為後者的「膠水語言」存在。
何謂膠水語言呢?你可以想像,開發過程是個小孩子拿樂高堆城堡的過程,
程式的核心區塊,就像樂高的基本部件,用來用去就是那幾種,一開始就決定好了;
但是你會搭出個怎樣的城堡,端看你怎麼把這些東西「兜」起來用,
這卻是隨著開發需要隨時在改變的

只用靜態編譯式語言來做「搭城堡」的工作,
那開發者就會陷入編譯→需求改變→重新再編譯的無限地獄當中
當然你可以透過部份編譯的方式去縮短這個流程,
但是這個無限地獄還是令人非常地沮喪

而只用直譯腳本語言(或更華麗地說,是『高階動態語言』)來開發的話,
因為這些腳本語言本來就是為了應付一些千變萬化的需求,
例如說,必須應付資料型態隨著程式執行而改變的情形
所以在底層實作上一定得讓步,運算速度與記憶體需求肯定不如編譯式語言來得好
而且其中的落差可能不小。但如果人云亦云地說「Python就是比JAVA/C++慢」,
這顯然也不盡真實。關鍵還是在於,你的底層是用什麼東西。
例如說我常用的Numpy ,它的矩陣、陣列運算都是tune得很好的,
跑起來並不比一些成熟的工具像Matlab要來得慢。

幸者,像Python這樣的語言,它的底層是用ANSI-C實現的,
而且也有很方便可以把JAVA、C/C++ 融合進Python,
或者是編譯成Python程式庫的應用,例如Jython、Cython,或是SWIG等

所以,最如虎添翼的作法就是,你需要的底層功能用編譯式語言實作,
這樣你對運算時間與記憶體需求,會有著更緊密的掌握,

而上層的「雜事」,像一些高端的資料結構(List、Dictionary、Array、Tuple …等)
就交給Python去管理。

這裡就會有一個「二八原則」,就是你八成的開發時間,
可能是花在實作那個底層,但當你的底層定下來了以後,
上層的工作只會花掉你兩成的時間

而且開發需求改變的時候,你也可以很快地應付過來。

所以我其實不太認同Python和JAVA「二選一」的學習模式,
對我來說,這兩種東西其實互為表裡,關鍵在於怎麼相輔相成、運用自如而已。

--
                       ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄              
                           DEUTSCHLAND                 ★◢
                                by cgi0911                      
                         The Order of Black and White         ◢█
                           The Glory of Three Stars           ◢█
                       ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     ◢█

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 69.200.245.125
※ 文章網址: http://www.ptt.cc/bbs/Gossiping/M.1397678781.A.1FB.html
obov:恩恩   我覺得你說得很對  嗯嗯嗯  i see   i see1F 04/17 04:14
bitcch:這篇說得好2F 04/17 04:14
elido:恩登今天推文都怪怪的~都沒加油幫補3F 04/17 04:17
tonyselina:恩燈是在考秋琴齁? 死魔法師4F 04/17 04:18
cleanwind:這篇寫得好,不過最後一段我認為對於初學者仍應先專心學5F 04/17 04:23
x2006:應該要 Ruby, .Net C# ....等語言 來個大比較 XD6F 04/17 04:24
cleanwind:一種語言,之後再多方發展。7F 04/17 04:24
cgi0911:我的經驗是無論如何要有一種物件導向語言。而且其實Python8F 04/17 04:29
cgi0911:要學到「可以派上用場」的程度,其實不難,幾個月就夠。
giorno78:受教了10F 04/17 04:32
cleanwind:這也是我會先推 P 而非 J 的原因,好學好寫未必容易建立11F 04/17 04:34
cleanwind:觀念 :p
rick65134:囧 居然和matlab比速度... 張智星曾在課堂上說過matlab13F 04/17 04:54
rick65134:速度只有C\C++的10分之1到20分之1
cleanwind:看文章的意思,好像是 Numpy 比 Matlab 應該還好吧 @_@"15F 04/17 04:57
cleanwind:前者是以 Python 為底,後者是以 C/C++ 為底
tiefblau:matlab算慢 編譯式!=物件導向 不過這篇真的寫得相當好17F 04/17 07:04

--
※ 看板: layzer 文章推薦值: 1 目前人氣: 0 累積人氣: 15196 
作者 cgi0911 的最新發文:
  • +26 Re: [爆卦] 學姊黃瀞瑩 談統獨假議題 遭來賓洗臉 - Gossiping 板
    作者: 73.93.115.116 (美國) 2019-03-27 11:40:22
    原本想說有了自己的粉專以後,就要淡出批踢的。但是看到這篇帶風 向的文章,我覺得還是要出來說說話。 現在台灣有一種很奇怪的氣氛,就是覺得主權是假議題,或是主權不 比上述的社會議題重要,甚至覺得主權議題和 …
    162F 39推 13噓
  • +26 Re: [新聞] 柯P拚外交碰壁 被議長放鳥也沒見到市長 - Gossiping 板
    作者: 73.93.115.116 (美國) 2019-03-19 13:25:16
    三個出席的市議員裡面,Margaret Chin (陳倩雯)選區是曼哈頓華 埠,Peter Koo (顧雅明)選區是法拉盛,這兩位都是粵系老僑民。 Daniel Dromm選區是Elmhurst,觀念 …
    42F 26推
  • +33 Re: [新聞] 韓國瑜是「作秀狂、唬爛大王」?外國記 - Gossiping 板
    作者: 73.93.115.116 (美國) 2019-03-06 15:54:15
    不才我在這裡應該也可以忝居主力韓黑之列。大家可能會覺得說,我 在八卦板黑韓的文章常被推爆,我應該覺得心情很爽吧?其實不然, 我在這裡寫文章,純粹是心直口快,想到就寫。但是寫完以後,我其 實是有挫折感的 …
    99F 40推 7噓
  • +25 [新聞] 吳釗燮將赴美演說 - Gossiping 板
    作者: 73.93.115.116 (美國) 2019-03-06 13:47:20
    1.媒體來源: 台灣英文新聞 2.完整新聞標題: 吳釗燮將赴美演說 台灣印太地區的恆久夥伴 3.完整新聞內文: (台灣英文新聞/鄧佩儒 台北報導) 外交部長吳釗燮日前在立法院備詢時透露他將在3 月中旬 …
    36F 27推 2噓
  • +201 Re: [新聞]燈會攤販放韓國瑜圖片 引網友熱議 - Gossiping 板
    作者: 73.93.115.116 (美國) 2019-03-04 01:22:41
    這邊就來了一個問題。稍有常識的一般人會覺得說,燈會的主要目的 應該是大家去看燈,看完燈之餘才去旁邊的攤商區消費。 真的是非常自我中心的想法。    韓國瑜十二月底一上任,就粗暴地把前任在駁二的所有燈會 …
    273F 203推 2噓
點此顯示更多發文記錄
分享網址: 複製 已複製
( ̄︶ ̄)b Leon 說讚!
e)編輯 d)刪除 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇