国产精品无码一本二本三本色,国产亲妺妺乱的性视频,丰满少妇人妻HD高清大乳在线,人妻aⅴ中文字幕

軟件的復(fù)雜性 正在拖累程序員

發(fā)布日期:2019-02-16

  現(xiàn)在有一個(gè)常見(jiàn)現(xiàn)象:企業(yè)想要更快更便宜地構(gòu)建軟件。

  這當(dāng)然是一個(gè)可以理解和值得稱(chēng)贊的目標(biāo)。且每個(gè)工程師都應(yīng)該全心全意支持這個(gè)目標(biāo)。

  然而事與愿違。雖然并非是故意的,但是隨著時(shí)間的推移,我們會(huì)因?yàn)檐浖?gòu)建中難以預(yù)料的復(fù)雜性而陷入困境,然后訓(xùn)練自己去尋找邊緣案例,分析差距,以及單點(diǎn)要求所帶來(lái)的所有隱藏的影響。

  我們深陷復(fù)雜性和優(yōu)雅的泥沼:再來(lái)個(gè)抽象層!自己動(dòng)手!分離關(guān)注點(diǎn)!組合優(yōu)于繼承!這也是可以理解的,但是在這個(gè)過(guò)程中,我們常常忽略了要解決的業(yè)務(wù)問(wèn)題,忘記了管理復(fù)雜性是軟件開(kāi)發(fā)人員的第二重要職責(zé)。



  那么我們?cè)趺磿?huì)走到這一步?

  在某些方面……軟件變得更容易了
  在過(guò)去的幾十年中,我們的行業(yè)已經(jīng)非常成功地減少了編寫(xiě)大多數(shù)軟件所需的自定義代碼量。

  這種減少大部分是通過(guò)使編程語(yǔ)言更具表現(xiàn)力來(lái)實(shí)現(xiàn)的。像Python,Ruby和JavaScript這樣的語(yǔ)言可以只用C語(yǔ)言三分之一的代碼來(lái)實(shí)現(xiàn)類(lèi)似的功能。而C語(yǔ)言在編寫(xiě)匯編程序時(shí)也提供了類(lèi)似的優(yōu)點(diǎn)。展望未來(lái),有很大的可能,語(yǔ)言設(shè)計(jì)也將提供同樣的改進(jìn)。

  但是減少構(gòu)建軟件所需的代碼量涉及許多其他不需要使語(yǔ)言更具表現(xiàn)力的途徑。迄今為止,我們?cè)谶^(guò)去二十年中取得的最大收益是開(kāi)源軟件(OSS)。如果沒(méi)有個(gè)人和企業(yè)將資金投入到他們向社區(qū)免費(fèi)提供的軟件中,那么我們今天所構(gòu)建的大部分軟件和功能在沒(méi)有龐大花費(fèi)和努力的情況下是一項(xiàng)不可能的任務(wù)。

  這些項(xiàng)目使我們能夠站在巨人的肩膀上解決問(wèn)題,工具的利用使得我們可以把更多的精力集中在解決業(yè)務(wù)問(wèn)題上,而不是花時(shí)間建設(shè)基礎(chǔ)設(shè)施。

  這就是說(shuō),業(yè)務(wù)是復(fù)雜的。這種荒謬的復(fù)雜,只會(huì)越來(lái)越多。OSS非常適合制作框架和工具,我們可以用它來(lái)構(gòu)建系統(tǒng),但是OSS在很大程度上必須解決大量人員共享的問(wèn)題才有吸引力。因此,大多數(shù)開(kāi)源項(xiàng)目必須得是相對(duì)通用的,或者處于非常受歡迎的地位。因此,雖然大部分這些工具都是構(gòu)建系統(tǒng)的絕佳平臺(tái),但是最終我們?nèi)匀恍枰谌找鎻?fù)雜和苛刻的系統(tǒng)中構(gòu)建所有的業(yè)務(wù)邏輯和接口。

  所以遺留給我們的是一個(gè)看起來(lái)像這樣的(針對(duì)web應(yīng)用程序)的堆?!?br />
  
  
  
  
  
  

  “Our Code”部分最后會(huì)變得非常復(fù)雜,因?yàn)樗从沉藰I(yè)務(wù)及其流程。如果我們有自定義的業(yè)務(wù)邏輯和自定義的流程,那么我們只需構(gòu)建構(gòu)成我們應(yīng)用程序的接口、工作流程和邏輯。當(dāng)然,我們可以嘗試找到不同的方式來(lái)記錄這個(gè)邏輯(還記得業(yè)務(wù)規(guī)則引擎么?),然而恐怕最后再?zèng)]人愿意為你的業(yè)務(wù)寫(xiě)業(yè)務(wù)邏輯。實(shí)際上似乎沒(méi)有辦法解決這個(gè)問(wèn)題……至少在機(jī)器人橫空出世來(lái)拯救我們免于做任何工作之前。

  不喜歡代碼,那么low-code呢?
  因此,如果我們必須開(kāi)發(fā)組成應(yīng)用程序的接口\工作流程和邏輯,那么看上去困難重重,對(duì)嗎?在一定程度上,是的,但我們有一些選項(xiàng)。

  對(duì)于大多數(shù)開(kāi)發(fā)者來(lái)說(shuō),軟件等于代碼,但現(xiàn)實(shí)并非如此。構(gòu)建軟件的方法有很多,其中一種方法就是使用可視化工具。在web之前,可視化開(kāi)發(fā)和RAD工具在市場(chǎng)上占有的份額大得多。PowerBuilder、Visual Foxpro、Delphi、VB和Access等工具都具有可視化設(shè)計(jì)功能,使開(kāi)發(fā)人員無(wú)需輸入任何代碼即可創(chuàng)建界面。

  這些工具涵蓋了你需要編寫(xiě)的代碼量,總的來(lái)說(shuō),你可以直觀(guān)地設(shè)計(jì)app,然后編寫(xiě)大量的代碼來(lái)實(shí)現(xiàn)app的邏輯。在許多情況下,你仍然以編程方式操作接口,因?yàn)槭褂眠@些工具構(gòu)建的接口通常會(huì)變得非常靜態(tài)。但是,對(duì)于大量的應(yīng)用程序來(lái)說(shuō),這些工具可以大大提高生產(chǎn)力,大部分以犧牲靈活性為代價(jià)。

  這些工具的普及程度可能在web接管之后就減弱了,但是企業(yè)對(duì)它們的渴望卻并沒(méi)有減弱,特別是在軟件需求的步伐依然不可阻擋之后。整個(gè)行業(yè)的最新趨勢(shì)是“l(fā)可以進(jìn)IT交流q裙哦 這里有大神 也有小白 也有剛剛跟你一樣經(jīng)歷過(guò) 現(xiàn)在已經(jīng)做上IT工作的前輩 大家相互學(xué)習(xí) 相互交流 《49 **6零三吧 649》 一定要 進(jìn)裙備注:亞索 要不管理員會(huì)不加你的。ow code”系統(tǒng)。low code開(kāi)發(fā)工具是最新一代的拖放式軟件開(kāi)發(fā)工具。這些工具和它們的同胞之間最大的區(qū)別在于,它們現(xiàn)在主要是基于web(和移動(dòng))的,并且通常托管在云的平臺(tái)上。

  許多公司前赴后繼地涌向這些平臺(tái)。像Salesforce(App Cloud),Outsystems,Mendix或Kony這樣的供應(yīng)商都希望可以創(chuàng)建比“傳統(tǒng)”應(yīng)用程序開(kāi)發(fā)快很多倍的應(yīng)用程序。雖然他們的許多說(shuō)法可能是夸張的,但可能也有一些事實(shí)。雖然依賴(lài)這些平臺(tái)缺點(diǎn)不少,但卻能使得構(gòu)建某些類(lèi)型的應(yīng)用程序比使用.NET或Java的傳統(tǒng)企業(yè)項(xiàng)目更快。

  那么,問(wèn)題是什么?
  首先是有經(jīng)驗(yàn)的開(kāi)發(fā)人員討厭這些工具。最嚴(yán)謹(jǐn)?shù)拈_(kāi)發(fā)者喜歡用Real Code編寫(xiě)Real Software。我知道這聽(tīng)起來(lái)好像是在吹毛求疵(也許是有點(diǎn)),但是如果你的核心價(jià)值是技術(shù),那么采用那些最好的開(kāi)發(fā)人員不愿使用的工具并非是一個(gè)好主意。

  其次,像我這樣的人看著這些有壁壘的平臺(tái),打從心眼里就“不愿意在那里構(gòu)建我的應(yīng)用程序”。這是一個(gè)合理的擔(dān)憂(yōu),也是最困擾我的問(wèn)題。

  如果你十年前用PHP構(gòu)建了一個(gè)應(yīng)用程序,那么這個(gè)應(yīng)用程序雖然可能會(huì)略顯滄桑,但它現(xiàn)在可能仍然可以工作良好。語(yǔ)言和生態(tài)系統(tǒng)是開(kāi)源的,還有社區(qū)的維護(hù)。你需要保持應(yīng)用程序的更新,但是你不必?fù)?dān)心供應(yīng)商決定不再花時(shí)間來(lái)支持你。

  像我這樣的人看著這些有壁壘的平臺(tái),打從心眼里就“不愿意在那里構(gòu)建我的應(yīng)用程序”。這是一個(gè)合理的擔(dān)憂(yōu),也是最困擾我的問(wèn)題。

  如果你在10年前選擇了一個(gè)鎖定平臺(tái)的供應(yīng)商,那么如果他們關(guān)閉或者大幅度改變他們的工具(還記得Parse不?),那么你可能會(huì)被迫重寫(xiě)代碼?;蛘吒愀獾氖?,你的系統(tǒng)被凍結(jié)在一個(gè)平臺(tái)上,不再滿(mǎn)足你的需求。

  對(duì)于這些類(lèi)型的平臺(tái)要警惕,但是對(duì)于許多企業(yè)來(lái)說(shuō),用較少的努力來(lái)創(chuàng)建軟件更有吸引力。軟件的復(fù)雜性還會(huì)繼續(xù),不幸的是軟件工程師在這里不能給自己任何裨益。

  需要改變什么?
  有那么多高效的平臺(tái)允許我們用Real Code構(gòu)建Real Software,但不幸的是,我們現(xiàn)在的行業(yè)太過(guò)關(guān)心跟隨科技巨頭的領(lǐng)導(dǎo),以致不能意識(shí)到有時(shí)他們的工具不會(huì)給我們的項(xiàng)目增加很大的價(jià)值。

  不知道有多少次我碰到開(kāi)發(fā)者告訴我,構(gòu)建一些如單頁(yè)面應(yīng)用程序(SPA)這樣的東西不會(huì)增加開(kāi)銷(xiāo),而只是渲染HTML。我曾聽(tīng)開(kāi)發(fā)人員說(shuō)每個(gè)應(yīng)用程序都應(yīng)該寫(xiě)在NoSQL數(shù)據(jù)存儲(chǔ)的基礎(chǔ)上,而關(guān)系數(shù)據(jù)庫(kù)已經(jīng)玩完了。我也聽(tīng)到過(guò)開(kāi)發(fā)人員質(zhì)疑為什么每個(gè)應(yīng)用程序不是使用CQRS和Event Sourcing編寫(xiě)的。

  正是這種思維過(guò)程和默認(rèn)開(kāi)銷(xiāo)導(dǎo)致企業(yè)認(rèn)為軟件開(kāi)發(fā)太昂貴了。你可能會(huì)說(shuō):“但Event Sourcing是如此優(yōu)雅!在微服務(wù)之上有SPA是如此的干凈!“當(dāng)然,可能是這樣的,但是當(dāng)你成為編寫(xiě)這10個(gè)微服務(wù)的人時(shí),情況就并非如此了。這種額外的復(fù)雜性往往是不必要的。

  作為一個(gè)行業(yè),我們需要設(shè)法簡(jiǎn)化構(gòu)建軟件的過(guò)程,而不忽視業(yè)務(wù)的合法復(fù)雜性。我們需要承認(rèn),并非所有的應(yīng)用程序都要有與Gmail相同的界面復(fù)雜度和運(yùn)營(yíng)可擴(kuò)展性。全世界的app都需要經(jīng)過(guò)周詳考慮的界面,復(fù)雜的邏輯,堅(jiān)實(shí)的架構(gòu),流暢的工作流程等等,但并不需要微服務(wù)或AI或chatbots或NoSQL或Redux或Kafka或Containers或任何錦上添花的工具。

  現(xiàn)在很多開(kāi)發(fā)者似乎對(duì)技術(shù)魔法本身太過(guò)癡迷了,因而不能清醒地問(wèn)自己是否真的需要這些。

  我們對(duì)靈活性、可組合性和智能的癡迷正在給我們帶來(lái)很大的痛苦,并迫使公司拋棄我們所喜愛(ài)的平臺(tái)和工具。我并不是說(shuō)我上面列出的那些工具不會(huì)增加價(jià)值;它們的出現(xiàn)是為了應(yīng)對(duì)真正的痛點(diǎn),盡管那些通常是大公司操作大規(guī)模系統(tǒng)時(shí)所遇到的問(wèn)題。

  我所說(shuō)的是,我們需要回到簡(jiǎn)單化的方向,開(kāi)始以一種更簡(jiǎn)單的方式創(chuàng)造事物,而不是僅僅停留在口頭上。也許我們可以依靠更多的集成技術(shù)棧來(lái)提供開(kāi)箱即用的模式和工具,以便軟件開(kāi)發(fā)人員更高效地創(chuàng)建軟件。

  …我們將把越來(lái)越多的業(yè)務(wù)推到“l(fā)ow code”平臺(tái)和其他工具的手中,這些平臺(tái)和工具承諾首先通過(guò)簡(jiǎn)化和刪除把我們帶往這些平臺(tái)和工具的部分,來(lái)降低軟件成本。

  注重簡(jiǎn)單性
  寫(xiě)到這里,我可以預(yù)見(jiàn)肯定有很多開(kāi)發(fā)人員會(huì)磨刀霍霍,但是我相信,如果我們繼續(xù)堅(jiān)持編寫(xiě)、配置、組合所有內(nèi)容,對(duì)所有規(guī)模的問(wèn)題使用相同的堆棧,那么我們將把越來(lái)越多的業(yè)務(wù)推到“l(fā)ow code”平臺(tái)和其他工具的手中,這些平臺(tái)和工具承諾首先通過(guò)簡(jiǎn)化和刪除把我們帶往這些平臺(tái)和工具的部分,來(lái)降低軟件成本。

  我們對(duì)業(yè)務(wù)越來(lái)越復(fù)雜的解決方案不能是增加開(kāi)發(fā)過(guò)程的復(fù)雜性——不管它看起來(lái)多么優(yōu)雅。

  我們必須設(shè)法通過(guò)簡(jiǎn)化開(kāi)發(fā)流程來(lái)管理復(fù)雜性。因?yàn)榧词构芾韽?fù)雜性是我們第二重要的責(zé)任,我們也必須時(shí)刻牢記軟件開(kāi)發(fā)人員最重要的責(zé)任:通過(guò)軟件的工作來(lái)實(shí)現(xiàn)價(jià)值。