發布時間:2021-02-25 文章來源:鴻宇科技 瀏覽次數:1687
工業軟件和工業APP是信息技術和知識的融合,是一種賦能企業數字化轉型、賦能工業互聯網平臺的高端工具,下面看看郭朝暉老師如何看待這個話題。
工業軟件與知識融合
從專業技術看,工業軟件開發其實也不是特別難。關鍵是思維方式要融合,還要融合得天衣無縫。
我經常講一個段子:老婆讓程序員出去買五個包子;如果遇到賣西瓜的,就順便買一個過來。結果,程序員買了一個包子回家。他的理由是:看到賣西瓜的了。如果這是個段子的話,下面的故事是真實的:我的一位軟件專業碩士畢業的同學讓一位程序員在“386”上加上“111”。結果,程序員給他的數是“386111”。
程序員的思維方式與“正常”的思維確實不太一樣。正如司機選擇路線的邏輯,和步行者不一樣。前些日子,我參與一個討論:如何把大的軟件,拆成小的APP。我說:沒有必要把大的拆小,只要把其他功能封閉就可以了。在物理世界里,“拆”是更經濟的,但在軟件的世界里,“封”往往更經濟。最近大數據技術之所以稱為熱點,是因為計算機的發展,讓一些“笨辦法”變得更有效了。
我曾經要同事寫段程序。寫完后,他讓我檢查。看完后,我要求他重寫這段代碼。他問我:什么地方錯了? 我回答說:我看不出哪里錯了,但我無法證明你是對的。
這個故事則反應了工業軟件的特點:對可靠性要求特別高。這種特殊性,讓工業軟件的思維方式,與普通軟件開發又有所不同。
有位同事,寫了3000行程序。調式結束后,我讓她把三個全局變量改成兩個。這樣,整個程序都要重寫。我對她講:這樣做的目的,是讓檢查的人方便。因為做檢查的時間,比寫程序的時間要長。可謂“一天編碼、十天檢查”。所以,檢查的效率高了,整個研發的效率也就高了。有時候,工業軟件往往是“一行代碼描述功能,十行代碼防錯”。因為工業軟件往往不允許在使用過程中出現嚴重的BUG。
為了提高可靠的程度,寫軟件時要考慮到各種意外的場景與異常。正常的場景只有一個,而意外的場景可能有很多。可謂“一種正常場景,十種異常場景”。而現實中,最難防備的就是“預料之外”的問題。這就要求對工業場景特別熟悉
工業人的思維方式,與學術界差別很大:你以為某個技術可以提高產量,但現實中可能不能用:因為它可能影響質量。你以為某個改進可以提高質量,現實中可能也無法用:因為它可能影響安全、穩定。不理解這些“約束”,就寫不出合用的軟件。
要解決這些問題,本質上都是要解決知識融合的問題。對于不善于交流、不喜歡討論的中國人來說,知識融合是個很大的挑戰。有時候,與其讓別人說明白,還不如自己成為這個領域的專家。其實,我的建議是:至少你要成為半個領域專家,才能去開發工業軟件。
對工業軟件的幾點想法
工業軟件為什么被卡脖子了?
最近,工業軟件被大家關注到了。一個重要的原因就是被人“卡脖子”了。換個角度看,“被卡脖子”說明我們的工業再往高端走了、開始用到這些高大上的東西了。這就像小朋友覺得衣服小了,是因為個子長高了。反之,很多人對工業軟件的作用不明白,其實還是沒有達到這個階段。
現在工業軟件主要用于研發設計、生產制造。一般來說,研發工作多了、要求提升了,對工業軟件的需求會增加;制造的要求高了,工業軟件的需求依然會提升。過去我們很少有研發,產品質量也不高,工業軟件的價值也就不大。
為什么工業走向高端的時候,工業軟件才重要呢?
我設想一個場景:一般情況下,看看尺寸,就知道能不能把螺母撞到螺栓上。但是,如果零件精度要求特別高、兩者差別特別小的時候,就不一定了。有時候,可能要把螺栓“凍”一下才能裝上去。在什么溫度下冷凍?冷凍多少時間?要回到這些問題,才能裝好。怎么知道這些參數?可以試一下、也可以算一下。如果能算,會比反復嘗試好了。當然,如果計算比較麻煩,最好能編個程序——這就是工業軟件啊!
為了這么一點小事去編軟件,豈不是太麻煩呢?
的確,做一次很麻煩、工作上是得不償失。但是,如果用的次數多了,就劃算了。而且,用的人多了,工業軟件就可以商品化了。商人能賺到錢,就會雇傭很多牛人來搞,技術就可以不斷發展了。當然,商人賺錢的前提是市場足夠大,也就是高端企業多、企業的高級研發做得多。所以,國外工業軟件發展快,也就是必然的了:因為技術的市場大。
生產制造環節的情況也差不多。工業企業走向高端的時候,新產品多了、加工精度和效率要求高了、就需要通過軟件來加工制造。計算機有很多優點,如運算速度快、計算精度高、出錯的比例低、可以持續長時間運行、可以進行復雜問題優化。這些都能讓工業軟件的價值體現出來。
高端企業對工業軟件才有需求,就像皇帝對御廚有需求;低端企業不理解工業軟件的用途,就像叫花子對御廚有需求。
最近工業軟件快速發展,還有另外一個原因:技術條件發生了變化。這一點,可以用IPO圖這種模型來解釋。
任何軟件,都需要有三個要素:輸入(I)、處理過程(P)、輸出(O)。處理過程(P)的核心是算法或者模型。但算法或模型的執行的前提是輸入(I)要包含足夠的信息。而且,計算機的處理能力要足夠強大。這兩點,可以解釋最近工業軟件快速發展的根本原因。
過去,大型設備的3D模型占用空間很大。計算機性能低的時候,就會“放不進去”。沒有輸入(I)充分的數據,算法也就沒有用武之地。同樣,計算工作復雜時,處理過程(P)耗時可能是無法忍受的。所以,計算機存儲和運算能力增強、價格的降低,會讓工業軟件的應用迅速變得廣泛起來。
再如,互聯網和傳感器的廣泛應用,也使得計算機能夠獲得足夠的、能夠用來計算的信息。也就是說,輸入信息(I)容易變得完備。這時,算法(P)才有了用武之地。另外:機器自動化、智能化的程度高了,算法的計算結果(O)就可以直接驅動機器、管理生產進程。這樣,算法的價值才能更好地體現出來。所以,數控機床和高端自動化設備用得多了,工業軟件的重要性會提升。
在這樣的背景下,模型和算法(P)才變得重要起來。打個比方,算法就像一個廚子,輸入的數據則像食材。有了充分的食材,廚子的本事才能發揮出來。否則,就是巧婦難為無米之炊。換句話說,“算法重要”是有前提條件的。
用IPO的邏輯,可以解釋不同行業間,工業軟件發展的差異。比如,存儲能力的增加對離散制造業軟件運行效率的影響很大、甚至是關鍵性的:因為解決了輸入信息充分(I)的問題。算法(P)其實是第二位的。但在流程行業,許多問題的瓶頸不在于輸入(I)的數據量太大,而是完整、準確、及時以及建模方法上(P);有些制約條件則是設備的數字化、智能化改造(O的問題)。所以,不同行業,工業軟件的發展邏輯是不一樣的。
如何看待工業軟件的發展方向?
剛才提到,工業軟件過去主要用于研發設計和生產制造。未來會有些拓展:首先是從生產制造拓展到管控一體。這是工業互聯網發展必然帶來的,原因就是輸入(I)、輸出(O)發生了變化,讓工業軟件的價值更大、開發更容易。其次是工業軟件向采購、銷售、服務拓展。這種變化也是互聯網帶動的。當信息通信技術的基礎奠定以后,軟件和算法才會成為關鍵和人們關注的重點。這時,科學實驗工作和大數據分析工作,可以與工業軟件結合起來。
工業APP往往就是一些工業軟件。前些天和朋友聊天:工業APP是不是一定要有平臺的支持?
我認為:沒有平臺,我們也能開發工業APP這樣的軟件。但是,有了平臺以后,輸入(I)條件容易滿足;APP的輸出(O)也容易發揮作用。平臺可以支持這些東西。好的平臺還能讓算法的編寫變得容易、易于復用。所以,基于平臺,開發APP的工作量可以大大降低、用途和經濟性可以顯著提升、標準化程度提升,功能體系也容易建立起來。所以,有沒有平臺,差別還是非常大的。
所以,推進工業軟件和工業APP,需要把平臺搞好。
工業APP雜談:為什么要模型計算和軟件
在我看來,工業APP是些包含數學運算的小型工業軟件。工業中為什么需要數學計算、并且編程軟件呢?
問題看似很簡單,其實答案并不那么明顯。要認識這個問題,必須先認清一個與之相反的現實:在工業企業中,數學模型其實并不常用。
我們經常聽人說:“科學原理、數學公式非常有用”。工業生產過程往往對應大量的科學原理和數學公式。但我們反思一下:工程師是不是經常用這些數學公式進行計算?其實,現實中很少用理論公式進行計算。
既然“有用”,現實中為什么“少用”呢?
這其實很正常。我們設想一下:人們每天的生活,都要遵從牛頓定律。動物、甚至我們的祖先都不懂牛頓定律,不也都活得好好的嗎?同樣,工業人不用計算理論公式,不也照樣組織生產啊!
只有需要精確結果的時候,才需要計算。
古人什么時候需要算?買賣東西的時候需要算、不算就可能吃虧;吃飯的時候也要精打細算,否則到了春天就沒有吃的了。打仗的時候需要精打細算。《孫子兵法》說:“多算勝、少算不勝”。因為打仗都是“險中求勝”,勝負可能就差一點點。所以,《戰爭論》也是在強調“算”。
農業社會的時間不值錢、時間觀念就不強,很少算時間。現在就不一樣了。我每次坐火車、坐飛機,都要把時間算一下。因為在機場、車站多待半個小時,就覺得浪費了時間。
同樣,工業人什么時候會認真去算?
工業企業追求精益求精的時候,才會去算。不追求精益求精的企業,就很少會去算。所以,企業只有發展到一定的程度,才會認真去算。
工業中的計算也是有很多麻煩的。
為什么有麻煩呢?有些人認為,是不懂得科學原理。這個說法往往是扯淡的。中國現在每年畢業800多萬大學生,而工業中用到的很多科學原理很早就成熟了。怎么會不懂呢?真正的原因是:這些數學模型往往是需要參數的,而這些參數往往給不出來。給不出參數,也就算不準。
所以,往往是因為算不準,才不算的。
參數不準,是不是努力把參數搞準呢?聽起來有道理,但這事與具體問題有關。有些計算(如幾何尺寸)是能夠算得準的,有的則很不容易搞準。所以,數字化模型的推進其實有兩種辦法:一種叫做“知難而上”、一種叫做“知難而變”。
對于那些能夠搞準參數的對象或者過程,可以想辦法搞準。這就是“知難而上”。采用這樣的思路時,要多用“笨辦法”:把該測量的測量、不要怕麻煩;數據分析時,要努力去剔除干擾,而不是搞一些華而不實的復雜算法。
有些參數真的搞不準,就要“知難而變”了。對于這類問題,往往是把實驗數據與理論模型結合在一起。這時,理論結果往往是用來做優化的:實驗結果覺得人們怎么做、而理論模型決定如何優化。注意:這種優化往往是“小步快跑”、是PDCA,這時用的模型往往是線性的。這時,用的往往是“巧辦法”。
我一直主張,工藝和產品設計盡量用數學模型計算。這樣的好處是:知識自然地顯性化、知識便于傳承、便于優化。而在現實中,往往必須接受不太理想的模型——理想的模型找不到,往前走半步也好。這就像我常說的:不要總想著長生不老,能延年益壽就不錯了。因為工程師做事,服從現實是第一位的。
有些計算,手工計算太麻煩、太慢,還容易出錯。這時,就需要把算法放在程序或者軟件里面。而用這些程序或軟件,往往意味著企業的經營、管理、技術已經達到了相對較高的程度。否則,往往就是所謂“叫花子對御廚沒有需求”。