色另类_婷婷激情四月_亚洲精品无码不卡在线播放he_欧美第七页_精品国产综合区久久久久99_青娱乐极品盛宴在线

產品分類

當前位置: 首頁 > 工業控制產品 > 自動化控制 > DCS系統

類型分類:
科普知識
數據分類:
DCS系統

不要和一種編程語言廝守終生:為工作正確選擇

發布日期:2022-04-17 點擊率:5

  我們程序員在著手一個項目時,需要做的關鍵決定之一就是選擇一種語言,或一組語言,用于實施該系統。這一決定不僅會影響系統的實現,也會影響設計。例如,我們應該使用 面向對象的語言還是過程語言?選擇什么語言對項目以及作為項目一部分的程序的生命周期有著深遠的影響,很多次,我們基于一些非常善變的因素,沒有思考太多 就去選語言:這語言是我慣常用來實現這類系統的;這語言我了解得最透徹;這是我最喜歡的語言,我很享受于用這種語言編程;等等。

  既然這個決定會導致深刻而長遠的結果,那么我們是不是在做這個抉擇時應該更加務實?很多時候,我們會盲目地偏頗于我們選擇的語言。而且,有時候我們之所以不喜歡選擇這種語言的原因可能正是為什么我們要選擇那種語言的原因。

  如果我們能夠放開胸懷,坦誠地對待自己持有的偏見,那么我們就可以減輕一些類似在裝修時硬要將方釘釘進圓形孔的痛苦。雖然我們沒有什么秘訣來為項目選擇完美語言,但還是可以遵循一些原則,幫助我們做出一個更好,更合適的語言選擇。

  沒有完美的語言

  這一點對任何人,甚至是新手而言,都是在意料之中的,并且我們很多人都愿意承認,“當然,這種語言并不是完美的語言,”但與此同時,我們很多人還是 會說,“這語言是最好的編程語言”。說一種語言是項目的最好語言的關鍵是項目的背景,也就是說,最好的語言只存在于一定的范圍內。這就是我們的第一條原 則:

  沒有完美的語言:每一種語言都有它的優點和缺點。

  例如,許多通常使用運行時語言,如Java或Python的開發人員,聲稱C或C ++令人透不過氣來,會因為關注例如內存管理這類低層次的細節,或關心編譯時類型檢查的嚴格粒度,而扼殺分置于開發人員的職責。這是事實,只要我們正在開 發的項目不關注看似瑣碎的任務,如內存管理或發生在單一循環中的copy-assignment的數量。

  相反,如果我們工作在一個項目,或項目的一部分,那么對于代碼應該如何高效以及程序的關鍵性安全的偏見需求是自然而然的,這些看似繁瑣的細節可能正 是我們正在尋找的粒度水平。在這種新的背景下,Java或Python的運行時性質似乎過于漠不關心或過于心不在焉。相反,我們希望當內存分配和釋放的時 候,能夠嚴格控制有多少move-assignment和copy-assignment被執行,并在編譯時捕捉盡可能多的錯誤,而不是讓錯誤滲入運行時 (表現為運行時異常)。

  雖然在理論上“沒有完美的語言”這一點聽起來是顯而易見的,但是我們作為開發人員的行為通常會背離這個概念:我們說我們知道我們最喜歡的語言是不完 美的,但我們還是繼續對我們開發的項目使用這種語言,不管它是否適合。此外,當其他的開發人員質疑我們選擇的語言時,我們會堅決捍衛我們的選擇,而不愿意 從他或她的反駁中看見事實的真相。請記住:每一種語言都有它的優點和缺點。了解你掌握的語言的優點和缺點,然后根據實際情況做出選擇。

  你不喜歡一種語言的原因可能就是你應該使用它的原因

  這似乎違反直覺,但有的時候,我們之所以不喜歡一門語言可能正是使用某種語言的原因。還是上面的例子,在我作為一個C ++開發人員的經驗中,很多時候因為有那么多不同的概念要跟蹤(內存管理和對象壽命時間,C ++編程三原則等),以致于完成項目的一個簡單功能都會變得繁瑣不堪。在用C ++開發幾周之后,使用Python,Java或另一種“更高級”的語言,簡直就像上天的恩賜:但真的是這樣的嗎?

  有時候,可能我們不喜歡一門語言的原因正是我們要使用該語言的原因。如果我正在開發一個驅動程序或一些關鍵性安全,實時的系統,上面表述的繁瑣不堪 的原因可能正是這個語言的最大優勢。例如,C ++提供了一種機制用于表達當對象被復制時被執行的邏輯,這在效率和嚴謹性井然有序的時候是非常寶貴的。

  這可能看上去都很好都很棒,因此我們很難確切指出在某個背景下,某種你看不順眼的語言可能反而更有幫助。那么,我們該怎么知道哪些你不喜歡的語言是有幫助的呢?這就引出了我們的第二條原則:

  對自己要誠實:知道自己為什么不喜歡一門語言,不要教條化自己的憎惡。

  例如,在上面那個C ++的例子中,我之所以不喜歡長時間地用C ++編程,是因為這語言要求思想嚴謹,否則很容易犯錯,就像是被困于叢林中(過多地關注樹木,而不是樹林這個整體)。這種嚴謹會妨礙開發人員去質疑,如, “我要在堆棧上或堆上創建對象嗎,或者部分在堆棧上,另一部分在堆上?”或“要讓這個類可擴展,應該通過模板參數還是通過繼承?”等決定。在其他語言中, 開發人員只需分別創建一個對象以及使用面向對象的繼承就可以完成這些任務,然后進入到下一個功能,因為語言(或者,更準確地說,編譯器或解釋器)關注這些 細節。

  但是,如果我對自己誠實的話,我會承認,我之所以不喜歡C ++的這些功能,是因為它將表達這些細節的責任歸咎于我。在其他語言中,我不僅不需要負責這些細節,而且我也沒有責任表達這些細節:它們被抽象遠離開發人 員。在一個這些細節是必不可少的上下文中,我不喜歡C ++的原因正是我應該使用這種語言的原因。

下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
主站蜘蛛池模板: 亚洲在线播放视频 | 免费在线黄色片 | 国产一区二区不卡 | a级片在线免费看 | 欧美日韩第二页 | 日韩欧美一区二区不卡 | 亚洲视频在线免费看 | 成人毛片视频免费 | 波多野结衣高清在线播放 | 亚洲免费中文字幕 | 欧美激情精品久久久久 | 成年网站免费观看 | 欧美一做特黄毛片 | 亚洲在线一区二区三区 | 色婷婷导航 | 交免费观看在线 | 国产在线视频一区二区 | 色老头久久网 | 4hc44四虎www在线影院男同 | 久久久久久久久久网 | 91精品国产综合久久久动漫日韩 | 国产精品人人做人人爽 | 亚洲精品一区二区三区精华液 | 午夜色视频在线观看 | 狠狠操网站 | 亚洲 欧美 日韩中文字幕一区二区 | 2021国产在线视频 | 国产九一精品 | 色综合久久久久久久久五月性色 | 午夜在线免费视频 | 亚洲午夜精品久久久久久成年 | 国产日韩精品视频 | 国产福利视频 | 中文字幕亚洲一区 | 国产瑟瑟视频 | 欧美精品久久久久久久免费观看 | 亚洲欧美v视色一区二区 | 亚州中文字幕 | 国产美女久久 | 电影长安道无删减免费看 | 国产秋霞 |