看板 Soft_Job 關於我們 聯絡資訊
身為一位 Python/Django programmer[1], 以下純就語言與框架特性說明 ※ 引述《rosemary0401 (rosemary)》之銘言: : 以前在寫windows desktop application時,大多跟著MS的腳步在走, : 一開始用C\C++ 和 MFC framework, : MS推.NET之後,就改用C# 和 WPF framework。 : 這時會用的語言很少,不過就C\C++\C# (有OO的觀念,C#不難學) : 後來換工作改做Web application,要學的語言突然暴增, : HTML、CSS、JavaScript、PHP、ASP.NET、C\C++、C#、SQL... : 開始思考為什麼會要用這麼多語言, 因為 web app 天性如此 就算是 native application 現在也可能要用到至少三種語言 Backend logic 一種 (例如 C#), UI layout 一種 (例如微軟弄的 XAML) 然後資料庫儲存再一種 (通常就 SQL, 或者 LINQ 其實和其他的 C# 也很不一樣) 一方面就和前面有人講過的, 用到很多語言本來就是正常的 只是你之前一來被微軟 solution 保護, 一來沒用到, 所以忽略了 被微軟 solution 保護當然不是不好 不過其實這也是技術債的一種, 欠了總是要還的, 只是時候未到 像 C_Sharp 板就充斥著一堆其實不是 C# 而是 CSS 或 JavaScript 的問題 很顯然就是因為發問人不清楚自己問題本質造成的現象 對於簡單的事情, 當然你搞不清楚技術背後的本質其實也可以過去 但是當你要做更進階的事情時就要開始還債 甚至如果你遇到抽象滲漏造成的雷[2], 需要 solution 沒有涵蓋到的解法時 你前面累積的背景知識貧乏就會讓你無法前進, 幾乎等於要砍掉重練 當然不是每個人都會走到這一步 一輩子當碼農的話其實光靠 solution 通常也夠了 而且即使你用 solution 也完全可以自我充實, 避免欠下技術債 說到頭還是個人的問題, 不在於語言/框架本身 不過 (個人認為) 自由社群的解法通常會讓人容易意識到這些技術債的存在 : 以目前工作所需來說, : 後端用ASP.NET\C#\C++\SQL, : 用.NET framework來寫web application很方便, : 比較需要效能的task用C++來寫成module,給C#來呼叫, : (C++因為直接編譯成native code所以比較快) : 需要access資料庫就用SQL (寫預儲程序或直些寫在code裡) : 但我一直不太懂的是,聽說有些人後端是有用python在寫的, : 不懂用python寫的好處在哪? 雖然你這篇的標題是為何用 Python 不過內文事實上比較像是「為什麼要用 (效能較差的) 直譯式語言」 但是這邊的論點事實上就完全自我解釋了為什麼很多人愛用 Python (或 Ruby 等) 事實上 Python 也完全支援用 C 撰寫 modules, 也有第三方套件支援 C++ binding Ruby 我不熟, 不過比較低階的 Python 套件很多其實都是 C-based 最著名的例子就是 PIL (Python Imaging Library) 與 lxml (第三方 XML 處理器) 既有的 C library 也可以藉由 wrapper 很輕易地與 native Python 結合 例如 MySQL for Python 就是 wrapper (_mysql) 與 adapter (MySQLdb) 組成 而且 Python C API 本身也受益於 Python 的語言特性 這使得 Python modules 非常容易撰寫 這點我相信其他陣營的狀況也差不多 所以 Python 有 PIP, Ruby 有 Gems, Perl 有 CPAN .NET 嘛...我實在沒有很了解, 不過 NuGet 的套件庫規模感覺就是弱一截 或許是要付錢才能有別人做好的工具能用吧 : C#和python比起來沒有比較難學,python寫出來的效能又比不上C++。 : 如果後端不是用MS的ASP.NET,而是用PHP的話, : PHP + Python真的有比PHP + C\C++還要好用嗎? 沒有人 PHP + Python 的 (好吧可能有, 不過那應該是因為有很特殊的原因) PHP 陣營會用 PHP framework, Python 會用 Python framework, Ruby 會用 (以下略) 重點是你這比較根本就不合邏輯 如果你用 C# 然後有人要你用 Python 寫 lib 串起來用 那通常也是對方腦包亂搞, 因為這樣的好處實在很小 如果你要在 web backend 用 Python (或 PHP 或 Ruby) 基本上要取代的會是 C#, 不是 C/C++ : 不知道有人評估過,用python寫後端的好處在哪裡? 別人也會問你用 C# 寫後端的好處在哪裡 它們其實是在同一個天平上的, 而 C/C++ 不是 : 值得一提的是,之前有人說寫testing需要會script language比較好,所以可以學 : python, : 但是script language那麼多,為啥要挑python?理由是甚麼呢? 因為會的人比較多 真的啊, Python 牌子老信用好 如果沒有其他因素, 應該不會有人覺得初學者應該學 Perl 而非 Python 至於 Ruby 終究還是比較新, 當然是值得學的好語言, 不過 Python 牌子老也是事實 這兩個之間的選擇真的就是意識形態的問題了, 不討論 (不然要戰了XD) : 之前聽說有某軟體公司的windows desktop application的UI是用python寫,原因不明 : 幾年前都不太聽過python,現在寫python的人好像有變多的趨勢,為什麼呢? 我覺得有兩個因素 一方面以前 Python 社群真的比較低調 其實使用者一直都有, 只是近年辦了 PyCON TW 之後對其他人的知名度才打開 至於是不是因為 Ruby 與 Rails 崛起而感受到危機意識這我就不知道了XD 另一方面是微軟對台灣的統治在近年有逐漸消退的趨勢 以前講 GUI programming 就是 Win32, MFC 到後期 .NET 不解釋 Web application 就是 ASP 然後 ASP.NET 最多用 JSP 就是很潮了 一直到近年微軟一天到晚自爆其他平台才開始就趁虛而入的空間 不然其實自由社群的解決方案在歐美一直都很蓬勃發展, 只是你不知道而已 [1] 我會其他的語言, 現在正職主要也不是用 Python 雖然不寫 ASP.NET 不過 C# 也略懂 但是就 web application 而言我是 Python programmer [2] http://en.wikipedia.org/wiki/Leaky_abstraction -- "問おう、貴方が私のマスターか?" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.94.57 ※ 編輯: uranusjr 來自: 140.112.94.57 (09/30 11:53)
CRPKT:leaky abstraction 引得好, 但恐怕任何 framework 都如此啊 09/30 12:23
ck574b027:總算有人點出原文只是想來戰語言而已XD 09/30 12:26
qrtt1:我倒覺得最初的提問者只是沒有深思,隨口問問的感覺。 09/30 13:05
qrtt1:不過以這工作的經驗來說,俺無法否認多數的情況下直譯式 09/30 13:08
qrtt1:跑得不如事先編譯好的。但現在各 scripting language 已有 09/30 13:08
qrtt1:vm 的機制,它是有機會跑得比編譯式快的。 09/30 13:09
qrtt1:遺憾的是上述的差異不是最終效能影響的因素,而是人們怎麼 09/30 13:09
qrtt1:生產出程式或軟體。中間有多少抄捷徑亂寫的技術債? 09/30 13:10
qrtt1:這些債務才是拖跨最終效能的因素。 09/30 13:10
MacPerson:請教..請問VM的機制 指的是? 09/30 14:12
legnaleurc:是指 VM 上的 JIT 吧 09/30 14:24
bobju:推! 09/30 17:27
hSATAC:用 Go 啦! 09/30 22:52
lTERRAl:樓上害我想到ruby china 也一堆人在戰要不要學 Go 10/01 03:38
bobju:學不學見仁見智 學生時代能學盡量學 一般有工作以後 時間就 10/01 14:30
bobju:綁在工作上了 要學新語言就會有時間報酬的考量 接受度就沒那 10/01 14:32
bobju:麼高 10/01 14:32
gozule:純python需要效能可以用pypy來執行,很有感覺 10/03 02:00
mepowerlmay:http://pytools.codeplex.com/ 10/04 21:15
pesrty:我的經歷也差不多 WIN32->MFC->BCB->WPF .... 10/23 17:04
pesrty:講白了就是哪個語言用的人多 , 就往哪跑, 因為...... 10/23 17:05
pesrty:要找資源也比較快, 摳來摳去 10/23 17:08
pesrty:老闆觀念就是寫軟體啥都會, 但是人哪來那麼多時間全都會 10/23 17:10
pesrty:只有看有沒有現成的來摳 10/23 17:11