Eugene Yang 您好 身為一個資工博士生研究領域是Information Retrieval, Machine Learning, Text Mining的人 來回覆這篇文應該只差做CS Programming Language的人差一點 而身為一個前全端工程師後端慣用PHP的人 我想也比較不會引起你的反感 再加上我並不認識馬志瑋應該可以彰顯我的公正 1. 必須要先說對於所謂"內建(built-in)"的概念其實是模糊的 試著理解你並沒有說出來的話 應該是想要表達不會特別引用就可以使用的函數 例如PHP中的echo, Python中的print()等等 但是這樣的概念並不一體適用於每一個程式語言 如果所謂"不用引用"就不能稱為內建函數這麼狹義的解釋的話 那C/C++就不存在內建函數了 畢竟什麼東西都放在stdio或iostream裡面 1-2. 再討論下一層 你可能會說那些語言所有東西都要引用當然所謂built-in不能用需不需要引用來判斷 但是Python在安裝時就已經附上這些函數 只是在運算效能上為了兼具interactive的需求 如果什麼都在載入時準備好那initialize的時間需要很久 所以把不一定需要的功能讓他用引用的方式來使用 而為什麼他為認為sqrt這個函數並不是必要的呢 讓我把這個問題留到下一個部份討論 2. Python對我來說是一個功能性完整的語言 他在網頁開發上支援非常多的功能 因為有諸多非網頁後端開發上的套件所以可以使得他可以在後端處理更多非典型後端會處理的事情(這裡說非典型是相對於你所理解的典型,也就是約莫5年前或更早以前的後端,現在的後端算CNN也一點都不意外) 3. 討論邏輯問題我覺得這就沒什麼意思了 但是既然您堅持只好也花篇幅來回應一下了 3-1. 邏輯上確實您沒有宣稱Python不適合資料處理 您的原文是 "更有趣的是,PHP 從來沒有宣稱自己適合資料分析,卻有內建 sqrt (開根號), log, sin, cos ... 這些基本科學運算函數,而宣稱很適合科學運算的 Python 卻沒有 XD" 先就邏輯討論,我想你也沒有宣稱PHP適合,畢竟你只有說道"他沒有宣稱....卻...."沒有正面表述只有負面表述 所以嚴格說起來你也不能宣稱PHP適合 3-2. 您這篇文中釐清您的意思是"沒有內建 sqrt 函數的程式語言不大有資格宣稱適合科學運算。" 然後說這是個"P則Q"而他們說你宣稱Python比較不適合是個掉入非P則非Q的邏輯謬誤 先確定P和Q的定義:這在邊我會理解"沒有內建sqrt函數"是P 而"不大有資格宣稱適合科學運算"是Q 更精準的定義我會理解成:"內建sqrt函數"是P而"有資格宣稱適合科學運算"是Q 而您原本的命題應該是個"not(P) —> not(Q)"的敘述 那換言之就是"Q-->P"換回原本的內容就是 "宣稱適合科學運算就應該要有sqrt內建" 而您在原文說Python有宣稱(我也相信真的是)但是沒有sqrt所以我想理解成您有宣稱Python不適合科學運算是有點過頭 但是理解成您批判Python這樣的宣稱不夠格我相信是可以的 雖然我想對很多人來說這兩句話沒有什麼差別 但是對您來說可能有些微的差別 就算是這樣我覺得您這樣的命題還是個不了解程式語言結構、Operating System、Software Engineering及Computer Architecture的論述 3-3. 就算邏輯上您沒有宣稱 但是語言上給人的意思卻不是一翻兩瞪眼的 身為一位在學校教書的教授 學生聽不懂我相信不適只有學生不專心和學生笨 還有表達不夠清楚的老師 對於他人理解文字及語言的時候會有的差異 我相信沒有比為人師更清楚的 畢竟老師在處理的除了單純的授課還有解決學生對知識的誤解 對於他人理解上和您想要表達的意思有所出入 第一時間先質疑對方的公然侮辱 我想可能只是您對於個人名譽和知識傳遞在價值選擇上的先後順序 不便評價 但是至少在知識傳遞上面先行釐清我想對於個人名譽自然會有所回復 如此反應至少我理解有寫過當了 4. Python到底適不適合資料處理 如果您堅持要戰語言這個在資工界敏感的話題(敏感程度大概就在美國酒吧裡面談論運動球隊一樣敏感吧) 那我也來戰一下好了 Python跟R的距離我相信在5年前可能R真的比較有優勢 在圖表輸出上還有資料格式轉換上真的之前都比Python好很多 但是現在Python科學運算上有Numpy, Scipy媲美Matlab運算速度及精準 在資料儲存及格式上有pandas 在繪圖上有Matplotlib 在模型上Scikit-learn、SGBoost等完整實作模型 (而這些工具在期刊上也都有完整個citation大家也會直接cite這些package) 距離已經在縮小了 甚至Python可以做Computer Cluster等級的運算R在這方面我記得有但是功能不齊全 在Multiprocessing上面Python有完整的支援(雖然跟Scala比起來很難寫) 而在Neural Network上面Python更是完勝 有Tensorflow, Theano等等更還有Keras這種方便的Wrapper Google甚至為了Tensorflow開發了專用的硬體 Nvidia也有開發專門給Tensorflow運算的GPU 當然Tensorflow也登陸R了 但是在完整度上面不能跟Python比 而且資料處理在Visualization上面的要求也是近年來越來越要求 我是不清楚您是理解什麼時候的資料處理 (當然邏輯上我也沒有宣稱您不理解資料處理) 但是我想近年來資料處理串接前後端做互動式網頁、即時資料更新等等的都是Python的強項 我相信仍然會有人用PHP串接R輸出的網頁來做 但是簡便程度、Package開發完整度等等都已經不可同日而語 5. 最後我還是想要提到 跨領域討論問題本來就是這樣 我會尊重您對統計的理解所以討論貝氏模型、時間序列分析、隨機過程等等我就不敢妄下判斷 對於您的理解會尊重 從統計跨入資工也是近年來的常態 但是對於Programming Language的理解 我相信您多了解工程師的意見是好的 身為一個曾經在業界稍稍打混的工程師 基本上語言沒有好壞也沒有一定的適合 兩三個月在程式語言的領域上就可以用極大的改變 曾經被戲稱跳梁的小丑的Javascript(跟Java不一樣喔) 現在因為nodejs的關係也已經晉升後端語言 在資料處理上面我也甚至用JS實作過搜尋引擎和Text Mining相關的東西 絕對沒有誰真的比較方便 對於熟練該語言的人來說就是最好用的工具 —- 最後 只用一個函數有沒有內建就來判斷一個語言有沒有資格做什麼事情 會不會太武斷了呢 讚顯示更多心情 · 回覆 · 1 · 23分鐘