其他賬號登錄: 注冊 登錄
柏慕聯(lián)創(chuàng)BIM技術(shù)服務

點亮建筑新夢想

LIGHT BUILDING NEW DREAM

企業(yè)BIM定制培訓服務經(jīng)典案例
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(一)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(二)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(三)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(四)
柏慕聯(lián)創(chuàng)為中國電建集團成都勘測設計研究院有限公司提供全國BIM技能等級考試考前專場培訓(五)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(一)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(二)
柏慕聯(lián)創(chuàng)為成都建工一建提供第四期BIM項目深入實踐應用培訓班(三)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(一)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(二)
柏慕聯(lián)創(chuàng)為中冶建工集團提供基于Dynamo的市政路橋隧解決方案專項定制培訓(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(一)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(二)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(三)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(四)
柏慕聯(lián)創(chuàng)為海南生態(tài)軟件園集團有限公司提供企業(yè)BIM基礎定制培訓(五)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(一)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(二)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(三)
柏慕聯(lián)創(chuàng)為中南建筑設計院股份有限公司提供2021年新員工入職BIM定制培訓(線上/線下)(四)

BIMBOX | Python VS C#,哪個更適合建筑業(yè)的人?

 二維碼
作者:BIMBOX來源:BIMBOX網(wǎng)址:https://bimbox.top/5734.html

你好,這里是BIMBOX,這次的文章源自于老孫和老朋友@VCTCN93的一次交談。

前些天他幫我們把Dynamo入門課程免費更新了,還組建了一個Dynamo課程學習交流群。群里經(jīng)常有人希望VCTCN93出一個適合建筑業(yè)的編程課程,擔心外面9塊9學Python的課學不到東西。我們就和他商量,有沒有打算做這件事?
VCTCN93說,現(xiàn)在網(wǎng)上那么多課,宣傳也是天花亂墜,但學習最大的成本不是買課的那點錢,而是后邊要砸進去的時間,尤其是編程這種東西,一旦走錯路要繞很多的彎子。甚至很多人連該學什么語言都沒想清楚,就一猛子扎進去了。

所以他的建議是,學習不著急,得先讓大家根據(jù)自己的定位,想清楚該學什么,這才要緊。

后來我們聊了很多關(guān)于編程語言的問題,老孫建議VCTCN93把這些想法和思路寫成一篇正式的文章分享給大家,他就熬了四個晚上,把東西寫出來了。

我們認為無論你是想學習二次開發(fā),還是想給自己充充電,都應該先把他的建議給看完。

不同編程語言的優(yōu)劣,在各種場合都是掀桌斷交的爭議話題,這次的內(nèi)容盡量不引戰(zhàn),我們討論的重點不是某一門語言好或者不好,而是特別針對建筑行業(yè)的從業(yè)者,在你投入金錢和大把時間入坑之前先磨好刀。

以下是VCTCN93寫下的東西。

1

愈漸興盛的 Coding
在你翻看朋友圈,刷新微博,在知乎吹牛的時候,你總能看到許多培訓機構(gòu)打出的編程廣告:
似乎報了這些班,你就能掌握 Python、JAVA、C# 、JavaScript 等編程語言中的一個,然后憑借著新技能,編出一個自動工作的流水線,從此從加班中解脫,升職加薪,當上總經(jīng)理,出任 CEO,迎娶白富美,走上人生巔峰。
看到這些文案,你燃起了報名的沖動。
可是等一下:你干的是建筑行業(yè)??!
你的日常工作場景和廣告中描述的完全不一樣,就連工作性質(zhì)也和他們有天差地別。
于是,你不禁在腦海里泛起一個問號:建筑從業(yè)者需要學編程嗎?
關(guān)于這個問題,我認為是一定需要的,我甚至在兩年前已經(jīng)發(fā)表相關(guān)的文章,洋洋灑灑近千字,原文在這里,感興趣你可以看看:
https://zhuanlan.zhihu.com/p/60243408

整篇文章的心是兩句話:

? 得益于計算機技術(shù)的爆炸式發(fā)展,傳統(tǒng)手工作坊式的工作方式已經(jīng)完全不能滿足時代的要求,使用計算機技術(shù)提高建筑行業(yè)的效率,是全社會和產(chǎn)業(yè)鏈對建筑行業(yè)的新要求。
? 如今的計算機編程技術(shù),就像二十年前的電腦操作技術(shù),在未來將會是人人必備的生存技能之一,能不能良好地使用計算機編程技術(shù),將再度劃開截然不同的兩代人。

在這樣的時代背景下,越來越多的建筑從業(yè)者躊躇滿志步入了編程的世界,當然,幾年之前的我也是其中之一。

2

截然不同的 Python 與 C#
Python 與 C#,是建筑從業(yè)者在日常工作中出鏡率最高兩門語言了,很多人都會從中選擇一門進入代碼世界。
它們倆也常常被人拿來比較,以便選出最具性價比的答案。
的確,就語言特性而言,這兩門語言從一開始就截然不同:一個動態(tài)類型,一個強類型;一個講究自由,一個講究嚴謹;一個無限開放,一個相對完善。
但這些比較,往往是沒什么意義的,這世上沒有更好的工具,只有適合自己的工具。
所以,在選擇語言的時候,你應該從需求出發(fā),看看究竟是誰更能提高你的工作效率。
針對我們的建筑業(yè)從業(yè)者,依據(jù)代碼水平的由低到高,我把一般人的代碼力需求劃分為三個境界:腳本境界、二次開發(fā)、九重天外。

第1層

腳本境界

在這一境界的最大特征,就是你可以使用 Dynamo 和 Grasshopper 等可視化編程軟件中的相關(guān)語言電池,寫出語法和邏輯的基本正確的簡單腳本,實現(xiàn)定制與自動化部分內(nèi)容,從而提升自己的效率。
在這一境界,我會更推薦大家學習 Python。
首先,Python 的學習門檻比 C# 要低得多,即使是一個小學生,都可以憑借一本教材,在一個星期之內(nèi)寫出能跑的腳本。當 C# 初學者往往還在為語言的各種特性而頭疼不已,學 Python 的你已經(jīng)可以上場寫腳本了。
其次,Python 是一門高級語言(High Level Language,也翻譯為上層語言),它在編程世界的定位,就是居高臨下,安排調(diào)動,指點江山的總裁式角色。你只需要在乎結(jié)果,不需要搞清楚其每一個細節(jié)是怎樣實現(xiàn)的,非常適合快速上手。
最后,Python 的代碼邏輯極為清晰,可讀性極強,簡單的 Python 代碼交給你的同事,他也能快速明白你干了什么。
它能輕松跨平臺,即寫即跑,一次學習,多地使用,比如你在 Dynamo 設計好邏輯,組織好電池 API 之后,稍作修改,就可以移植到 Grasshopper 上去跑。
Python 的學習成本低,上手速度快,平臺支持廣,如果你的目標只是腳本境界,那么 Python 一定是你的不二之選。

第2層

二次開發(fā)境界

當你想真正的寫出一個比腳本境界更為深入的功能,寫一個能嵌入到 Revit 工具欄的插件,那么你需要步入二次開發(fā)的境界。
在這一境界,類似 Dynamo 和 Grasshopper 中經(jīng)過包裝的電池 API,已經(jīng)無法滿足你的需求,你需要去使用官方的 SDKSoftware Development Kit,軟件開發(fā)工具包),查閱大量的官方開發(fā)者文檔,理解一個功能背后的邏輯,并對整個軟件有一個比較完整的認知。
此時簡單的代碼已無法滿足你的需要,Python 入門簡單和上手迅速的弊端也會凸顯出來:
首先就是因為它太過簡單,會讓很多人在沒有形成完整編程世界觀的情況下,就能開始寫腳本。又因為Python 的智能,他們可以在完全不理解面向?qū)ο?,不懂測試、不注意異常捕捉、不關(guān)心代碼規(guī)范和架構(gòu)設計的情況下,開展他們的工作,這將直接導致他們的代碼質(zhì)量非常低下。
這一切都會導致新手在二次開發(fā)這一境界舉步維艱。
在 Python 世界,不同人之間的代碼水平會有天壤之別。大神的代碼往往精簡且高效,非常的 Pythonic,優(yōu)雅得和詩句一般,令人沉醉;新人則往往整出一大堆又臭又長的東西,效率低下,讓人看不下去。
反觀 C#,不同人寫出的代碼差距反而不會那么大,新人在邁過了痛苦的學習門檻之后,也能夠?qū)懗隼鲜忠话銟藴识墒斓拇a。
所以在這一境界,學習成本略高的 C# 將會是最好的選擇。
另外,因為 Revit、Rhino、Unity 等圖形軟件,都是基于一個叫 .NET 的框架運行的,它們自身就使用了大量 .NET 框架的 API,所以你會看到,類似 Revit 的官方推薦語言,都是 C#、VB、Visual C++ 等 基于 .NET 平臺的語言。
當然也會有人說,Python 雖然不是官方推薦的語言,但由于基于 .NET 實現(xiàn)的 IronPython 的存在,讓你也可以使用 Python 來開發(fā) Revit 和 Rhino 等 .NET 平臺下的產(chǎn)品。
可 IronPython 畢竟是個嫁接產(chǎn)物,一個綜合了 .NET 和 Python 雙方短板的「雜交品種」,你一旦接受了這種設定,你就不能再使用原生 Python(又稱 CPython)的庫了,廣受贊譽的 Numpy、Pandas、Scipy、Matplotlib 以及很多高大上的 AI 庫,都會徹底和你絕緣。
關(guān)于 IronPython 的問題,我也寫在了《硬核分享:一套云操作,讓Dynamo成為變形金剛》這篇文章里,鏈接放到文末,感興趣你也可以去看看。
總之,失去了第三方庫武裝的 IronPython,永遠只能算個半成品,完全失去了它存在的意義。
反觀 C#,作為 .NET 平臺的親兒子,能獲得 .NET 平臺最完美的支持,甚至 Revit 等軟件其本身就是用 C# 寫就的。它在 .NET 的能力上限和開發(fā)體驗,都遠超其他語言。
此外,由于解釋型語言(Interpreted Language)和編譯型語言(Compiled Language)在原理上的區(qū)別,Python 本身的速度,就要比 C# 慢得多。
在同時原廠支持 IronPython、C# 與 VB 電池的 Grasshopper 中進行性能測試,你能看到非常明顯的速度差異:

Python: 6776.7ms   VB: 26.5ms   C#: 26.9ms
到 C# 的速度大致與 VB 持平,而 Python 比它們慢了 250 多倍,就好比 10 ms 的游戲延遲卡頓到 1秒 開外,在講究性能優(yōu)先的軟件開發(fā)領域,這是不可以容忍的。
.NET 框架的無縫支持,相較 Python 更為杰出的效率,都讓 C# 在二次開發(fā)領域成為當之無愧的王者。

第3層

九重天外

掌握了編程技能的你,如果對時代前沿的大數(shù)據(jù)、人工智能、神經(jīng)網(wǎng)絡等熱門名詞產(chǎn)生了興趣,那么作為編程界「養(yǎng)老工作」的二次開發(fā)將難以進入你的法眼。
到這一層次,你需要學習大量的算法、程序架構(gòu)、底層和上層原理,擁有很多大型程序開發(fā)的經(jīng)驗,你的編程實力不能比一般的程序員遜色,你最好還要具備一門踏實的跨學科知識,從而讓你擁有常人不具備的眼光和視角。
說實話,一般的一線程序員,都不一定擁有這樣的水平。目前,建筑業(yè)內(nèi)處在這一層級的人才,鳳毛麟角、萬中無一,主要有以下幾個原因:
? 建筑行業(yè)其本身就是一個需要大量投入大量精力的學科,工作強度大,專業(yè)程度高,足夠你鉆研幾十年,很少有建筑從業(yè)者能夠在如此巨大的工作量之下,還能夠保有足夠的精力,去鉆研前面所提到的內(nèi)容。
? 與建筑行業(yè)一樣,編程也是一門需要積累大量實踐經(jīng)驗的學科,一般的建筑從業(yè)者根本無法接觸到那樣大量的實際項目,經(jīng)驗難以積累,水平難以進步。
? 如果一個人真的歷經(jīng)艱辛與磨難,并做完了幾個開發(fā)項目,以至于擁有了我前面說到的水平,那么他90%是會決定轉(zhuǎn)行,從此與建筑行業(yè)絕緣。

所以我非常不推薦各位往這個方向努力,因為到岸的人實在太少,你極有可能耗盡心力,卻一無所獲。

如果你說:「我已經(jīng)做好了不撞南墻不回頭的準備,那么我應該選什么編程語言呢?」
到這個階段,其實已經(jīng)不受語言的限制了,你有很多語言可以選擇。給你舉幾個例子:
萬物之源 : C
上古神器,底層語言之一,運行速度極快,學習難度極高。1972 年誕生于美國貝爾實驗室,至今快 50 年過去了,依舊有一大幫程序員在進行相關(guān)開發(fā),支持顆粒級別的程序優(yōu)化,Cpython 的 C,指的就是它。
真男人必玩:C++
C 語言加強版,具有絕大多數(shù) C 的特性,能向下兼容 C 的代碼,是「效率」二字的代名詞,至今絕大多數(shù)強調(diào)性能的運算,比如計算機圖形學,都是靠它完成。它也可以和 Python 混編,代替 Python 完成需要性能的部分,是 Python 的黃金搭檔之一。
大廠之愛:JAVA
至今仍是主流中的主流,生態(tài)鏈極為完善,目前互聯(lián)網(wǎng)大廠和游戲公司的主力語言,培訓機構(gòu)的最愛,當年最火爆的時候,JavaScript 需要蹭它的熱度,C# 都在模仿它,留下了極富盛名的設計模式。

前端霸主:JavaScript

雖然名字里也有個 JAVA,但和 JAVA 基本是兩個東西。它由大神 Brendan Eich 在 10 天內(nèi)設計完成,發(fā)展至今,已經(jīng)基本壟斷前端開發(fā),決定了網(wǎng)頁的動效和 DOM 管理,是一門運行效率高、庫又多又齊全的多功能語言。JS 學習難度不大,學習價值很高,我認為 Python 做后端,JS 做前端的模式會很完美,直到我學完了 Node.js。目前和 BIM 相關(guān)的很多輕量化平臺,都是基于 Three.js 使用 JavaScript 開發(fā)的。

東瀛出品 :Ruby
目前流行語言中,唯一的非白人出品,語言長得和 Python 有點像,社區(qū)比較小眾,比較精英化,你可以用它開發(fā) Sketch Up。
小眾之選:Lisp
也是個小眾之選,你可以用它開發(fā) CAD(雖然目前 Python 也可以)。
未來的 C:Go
Google 背書,C 語言原班人馬出品,兼具開發(fā)效率和運行效率的完美存在,是計算機語言自 C 以來真正的自立門戶,另成體系,越來越熱門,而且前景無限。如果你需要為孩子選擇編程語言,可以考慮這門未來之語。
如果你希望更深了解不同語言的差異,我極力推薦大家看知乎上的這篇回答,作者非常有創(chuàng)意地表現(xiàn)了他眼中各種語言的機能:
https://www.zhihu.com/question/25038841/answer/44396770

在這個階層,如果你要從 Python 和 C# 中選擇一個,我會建議你選擇 Python。

Python 目前風靡學術(shù)界,跨平臺的資源也極為豐富,很多熱門領域都可以聽聞它的大名。C# 很明顯和前沿有一定的距離和滯后性,.NET 雖然完善,但也略顯封閉,這都是 C# 發(fā)展的瓶頸。
當你突破了一定的技術(shù)線,并保持持續(xù)學習的動力,Python 無盡且強大的第三方庫,能直接讓它從腳本小工具進化成核武器,甚至在 .NET 的生態(tài),Python 都可以通過上云和各種庫的加成,全面超越 C# 。
4

總結(jié)
VCTCN93不止一次被問起:「你什么時候推出 Python 教程???」
可是對于這個問題,他總會是會三緘其口,最主要的原因,是隨著自己不停地學習深入,他的技術(shù)觀產(chǎn)生了變化。這一期的分享,也是他作為一個同路人,給出的正面回答。
VCTCN93和我們說,隨著對不同語言使用量的增加,他越發(fā)堅定了這個觀點:Python 的確是神奇,但卻不一定是最適合建筑從業(yè)者的。簡單的入門不需要教程,深入的學習不但困難重重,還會因為學會的東西沒處用而漸漸遺忘。
建筑從業(yè)者不是程序員,建筑行業(yè)有自己特定的需求,程序員可以使用 Python 造核武器,建筑從業(yè)者絕大多數(shù)情況下不需要、也沒這個能力,程序員雖然一天到晚歧視 .NET,但它卻最能干好我們手上的開發(fā)任務。
所以,你的需求是什么?你有突破技術(shù)線的動力嗎?你愿意為編程付出多少心力?
這些,都將影響你自己的選擇。
BIMBOX和VCTCN93合作也有很長時間了,他和我們最聊得來的地方就是三觀正。生活是要過的,錢也是要賺的,但靠信息不對稱、寫幾句文案就賣錢的事,我們都寧可不做,他也是所有和BIMBOX合作的老師里,第一位愿意把整個課程全部免費更新重錄的人。
所以他給出的建議,我們愿意站出來背書。希望你在學習的路上,能少走一些彎路。如果你看了這篇文章有什么想法,歡迎留言,我們會讓他看到,本期內(nèi)容所有小伙伴的打賞也會轉(zhuǎn)交給VCTCN93。
有態(tài)度,有深度,BIMBOX,咱們下次見!
會員登錄
登錄
其他賬號登錄:
我的資料
留言
回到頂部