色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員思維是什么

工程師人生 ? 來源:工程師吳畏 ? 2018-12-14 14:05 ? 次閱讀

一個原因是逸惋惜崢嶸歲月歲月稠,當初讀大學的時候,學習計算機技術的課程,我過多的走向了兩種極端的狀況。一種情況,我愿意把他歸結于本末倒置,例如我學習《C++面向對象程序設計》的時候,更多的是研究C++的語法,卻忽略了面向對象的思想,到頭來,C++語法學會了,但是最重要的面向對象卻沒有理解,也不知道他能夠真正的做些什么。另一個情況,我把它理解為目標很宏大,理解很困難,例如,我學習軟件過程的時候,開始,課程上就劈頭蓋腦的來一堆概念,然而,很難理解,最后也失去了學習該 課程的興趣,后來,隨著自己閱歷增長,經驗的增加, 發現這些知識是非常重要的,只是但是由于知識的限制,沒有融會貫通罷了。

另外一個原因,我們和他人討論寫的代碼時候,總是會從某某的口中聽到,你這源代碼寫的——耦合性太大了,可是,這總是一種不歡而散爭論,你憑什么我的耦合性太大,是啊,憑什么說我的耦合性,更多是種感覺,到底怎么樣才能判斷高內聚低耦合,怎么樣寫出來高內聚低耦合代碼了。

還有一 個原因。和上面的原因有點類似,在編程中接觸到的很多同事。或者同樣是編程的人。我發現他們的能力參差不齊。但是,你會有這樣的感受,有些人寫了兩三年的代碼會比一個寫十幾年代碼,更加的簡潔,更加的優雅。

總結一下上面的原因就是,在我們的編程實踐中,我們需要找到一種思維框架來幫助我們設計和解釋我們的程序。這個東西就是要討論的程序員思維。

我們下面篇幅就解決這三個問題。

程序員思維是什么?

程序員思維從哪里來?

程序員思維到哪里去?

好吧,這是三個終極的問題。沒有標準答案,也沒有什么不標準的答案。我只是試圖給出自己的一個思考的總結。

再解釋程序員思維是什么問題這個問題是什么時候,我們先用類比法看一下什么是程序員思維。

類比法,是個好方法啊,就像字典中的同義詞解析一樣。我們就類比生活中的一些例子罷了,來解釋什么是程序員思維。有些人,說編程就像解題,一個題干出出來了,我們需要利用所掌握的知識,一步步,井井有條的解決出來。而編程了,則是根據客戶的一個需求,利用自己技能把其變成計算機軟件,來幫助解決現實生活中的問題。有些人,說編程就像操作機器,你像一個司機,你操作方向盤讓車向左走,他不會向右左。我們編程也是同樣的道理,你輸入一條加法指令,計算機也不會幫你做減法。有些人,說編程就像作家,作家,是將冰冷冷文字賦予了生命,來賣錢。程序員,是將毫無生氣的一些指令,變成那好玩游戲,哪方便的app。這些,都是很形象的類比。我們這里套用馬克思*韋伯在《新教理論與資本主義》中首次提出了一個概念能夠很好的解釋上面列舉的事情的共性——工具理性。所謂“工具理性”,就是通過實踐的途徑確認工具(手段)的有用性,從而追求事物的最大功效,為人的某種功利的實現服務。工具理性是通過精確計算功利的方法最有效達至目的的理性,是一種以工具崇拜和技術主義為生存目標的價值觀,所以“工具理性”又叫“功效理性”或者說“效率理性”的定義。可以將程序員思維,定義為是在理性思維的框架下,利用相應工具,來解決相應實際的問題。

再回答程序員思維從哪里來,這個問題時候,我們回顧了計算機語言歷史:

1940之前

第一個編程語言比現代的計算機還早誕生。首先,這種語言是種編碼(en:code)。 于1801年發明的提花織布機(或稱甲卡提花織布機,英文:en:Jacquard loom),運用打孔卡上的坑洞來代表縫紉織布機的手臂動作,以便自動化產生裝飾的圖案。 Ada Lovelace在1842年至1843年間花費了九個月,將意大利數學家Luigi Menabrea關于查爾斯·巴貝奇新發表機器分析機的回憶錄翻譯完成。她于那篇文章后面附加了一個用分析機計算伯努利數方法的細節,被部分歷史學家認為是世界上第一個電腦程序。這個故事我們上面也說過。 Herman Hollerith在觀察列車長對乘客票根在特定位置打洞的方式后,意識到他可以把資訊編碼記載到打孔卡上,隨后根據這項發現使用打孔卡來編碼并紀錄1890年的人口統計資料。 第一個嚴格意義上的計算機程式碼是針對他們的應用面設計的。在20世紀的前十年主要是用十進制來算數,后來人們發現不只是用文字,也可以用數字來表現邏輯。舉例來說,阿隆佐·邱奇曾以公式化(formulaic)的方式表達λ演算。圖靈機是一種紙帶標記(tape-marking)機器(就像電話公司用的那種)操作方法抽象化后的集合。圖靈機這種透過有限數字(finite number)呈現機器的方式,奠定了程式如同馮·諾伊曼結構計算機中的資料一樣地儲存的基礎。但不同于λ演算,圖靈機的程式碼并沒有辦法成為高階編程語言的基石,這是是因為它主要的用途是分析算法的復雜度。 就像許多歷史上的”第一次”一樣,第一個現代編程語言也很難界定。最一開始是因為硬件限制而限定了語言,打孔卡允許80行(column)的長度,但某幾行必須用來記錄卡片的順序。FORTRAN則納入了一些與英文字詞相同的關鍵字,像是”IF”、”GOTO”(原字詞為go to),以及”CONTINUE”。之后采用磁鼓(magnetic drum)作為內存使用,也代表計算機程式也必須插入(interleave)到磁鼓的轉動(rotation)中。和現今比較起來,這也讓編程語言必須更加依賴硬件(hardware-dependent)。 對部分的人認為必須在”編程語言”的狀態確立之前,根據能力(power)以及可讀性(human-readability)的程度來決定歷史上第一個編程語言是什么語言。提花織布機和查爾斯·巴貝奇所制作的差分機(en:Difference Engine)都具備在大量限制下,簡單描述機器應執行行為的語言。也有種并非設計給人類運用的受限特定領域語言(en:domain-specific language),是將打孔卡運用到自動演奏鋼琴(en:player piano)上。

1940年代

最早被確認的現代化、電力啟動(electrically powered)的計算機約在1940年代被創造出來。程式設計師在有限的速度及內存容量限制之下,撰寫人工調整(hand tuned)過的組合語言程式。而且很快就發現到使用組合語言的這種撰寫方式需要花費大量的腦力(intellectual effort)而且很容易出錯(error-prone)。 Konrad Zuse于1948年發表了他所設計的Plankalkül編程語言的論文[1]。但是在他有生之年卻未能將該語言實作,而他原本的貢獻也被其他的發展所孤立。 在這段期間被開發出來的重要語言包括有:

1943 – Plankalkül (Konrad Zuse)

1943 – ENIAC coding system

1949 – C-10

1950與1960年代

有三個現代編程語言于1950年代被設計出來,這三者所衍生的語言直到今日仍舊廣泛地被采用:

Fortran (1955),名稱取自”FORmula TRANslator”(公式翻譯器),由約翰·巴科斯等人所發明;

LISP,名稱取自”LISt Processor”(列舉處理器),由約翰·麥卡錫等人所發明;

COBOL,名稱取自”COmmon Business Oriented Language”(通用商業導向語言),由被葛麗絲·霍普深刻影響的Short Range Committee所發明。

另一個1950年代晚期的里程碑是由美國與歐洲計算機學者針對”算法的新語言”所組成的委員會出版的ALGOL 60報告(名稱取自”ALGOrithmic Language”(算法語言))。這份報告強化了當時許多關于計算的想法,并提出了兩個語言上的創新功能:

巢狀區塊結構:可以將有意義的程式碼片段群組成一個區塊(block),而非轉成分散且特定命名的程序。也就是我們所熟悉的模塊化設計。

詞匯范圍(lexical scoping):區塊可以有區塊外部無法透過名稱存取,屬于區塊本身的變量、程序以及函式。就是我們所熟悉的作用域。

另一個創新則是關于語言的描述方式:一種名為巴科斯-諾爾范式 (BNF)的數學化精確符號被用于描述語言的語法。之后的編程語言幾乎全部都采用類似BNF的方式來描述程式語法中上下文無關的部份。BNF主要使用在了Algol 60的設計上面。而Algol 60對之后語言的設計上帶來了特殊的影響,在其他部分的語言設計中這種設計思想很快的就被廣泛采用。并且后續為了開發Algol的擴充子集合,設計了一個名為Burroughs(en:Burroughs large systems)的大型系統。而延續Algol的關鍵構想所產生的成果就是ALGOL 68:

語法跟語意變的更加正交(orthogonal)

采用匿名的歷程(routines)

采用高階(higher-order)功能的遞回式輸入(typing)系統等等。

整個語言及語意的部分都透過為了描述語言而特別設計的Van Wijngaarden grammar來進行正式的定義,而不僅止于上下文無關的部份。Algol 68一些較少被使用到的語言功能(如同步與并列區塊)、語法捷徑的復雜系統,以及型態自動強制轉換(coercions),使得實作者興趣缺缺,也讓Algol 68獲得了很難用(diffcult)的名聲。尼克勞斯·維爾特就干脆離開該設計委員會,另外在開發出更簡單的Pascal語言。 在這段期間被開發出來的重要語言包括有:

1951 – Regional Assembly Language

1952 – Autocode

1954 – FORTRAN

1954 – IPL (LISP的先驅)

1955 – FLOW-MATIC (COBOL的先驅)

1957 – COMTRAN (COBOL的先驅)

1958 – LISP

1958 – ALGOL 58

1959 – FACT (COBOL的先驅)

1959 – COBOL

1962 – APL

1962 – Simula

1962 – SNOBOL

1963 – CPL (C的先驅)

1964 – BASIC

1964 – PL/I

1967 – BCPL (C的先驅)

1967-1978:確立了基礎范式

1960年代晚期至1970年代晚期的期間中,編程語言的發展也有了重大的成果。大多數現在所使用的主要語言范式都是在這段期間中發明的:

Simula,于1960年代晚期由奈加特與Dahl以Algol 60超集合的方式發展,同時也是第一個設計支援面向對象進行開發的編程語言。

C,于1969至1973年間由貝爾實驗室的研究人員丹尼斯·里奇與肯·湯普遜所開發,是一種早期的系統程式設計(en:system programming)語言。

Smalltalk,于1970年代中期所開發,是一個完全從零開始(ground-up)設計的面向對象編程語言。

Prolog,于1972年由Colmerauer、Roussel,以及Kowalski所設計,是第一個邏輯程式語言。

ML,于1973年由羅賓·米爾納所發明,是一個基于Lisp所建構的多型(polymorphic)型態系統,同時也是靜態型別函數編程語言的先驅。

這些語言都各自演展出自己的家族分支,現今多數現代編程語言的祖先都可以追朔他們其中至少一個以上。 在1960年代以及1970年代中結構化程式設計的優點也帶來許多的爭議,特別是在程式開發的過程中完全不使用GOTO。這項爭議跟語言本身的設計非常有關系:某些語言并沒有包含GOTO,這也強迫程式設計師必須結構化地編寫程式。盡管這個爭議在當時吵翻了天,但幾乎所有的程式設計師都同意就算語言本身有提供GOTO的功能,在除了少數罕見的情況下去使用GOTO是種不良的程序風格。結果是之后世代的編程語言設計者發覺到結構化編程語言的爭議實在既乏味又令人眼花撩亂。 在這段期間被開發出來的重要語言包括有:

1968 – Logo

1970 – Pascal

1970 – Forth

1972 – C語言

1972 – Smalltalk

1972 – Prolog

1973 – ML

1975 – Scheme

1978 – SQL (起先只是一種查詢語言,擴充之后也具備了程式結構)

1980年代:增強、模組、效能

1980年代的編程語言與之前相較顯得更為強大。C++合并了面向對象以及系統程式設計。美國政府標準化一種名為Ada的系統編程語言并提供給國防承包商使用。日本以及其他地方運用了大量的資金對采用邏輯編程語言結構的第五代語言進行研究。函數編程語言社群則把焦點轉移到標準化ML及Lisp身上。這些活動都不是在開發新的范式,而是在將上個世代發明的構想進一步發揚光大。 然而,在語言設計上有個重大的新趨勢,就是研究運用模組或大型組織化的程式單元來進行大型系統的開發。Modula、Ada,以及ML都在1980年代發展出值得注意的模組化系統。模組化系統常拘泥于采用泛型程式設計結構:

泛型存在(generics being)

本質(essence)

參數化模組(parameterized modules)

盡管沒有出現新的主要編程語言范式,許多研究人員仍就擴充之前語言的構想并將它們運用到新的內容上。舉例來說,Argus以及Emerald系統的語言配合面向對象語言運用到分散式系統上。 1980年代的編程語言實際情況也有所進展。計算機系統結構中RISC假定硬件應當為編譯器設計,而并非為人類設計。借由中央處理器速度增快的幫助,編譯技術也越來越進展神速,RISC的進展對高階語言編譯技術發展來不小的貢獻。 在這段期間被開發出來的重要語言包括有:

1980 – Ada

1983 – C++ (就像有類別的C)

1984 – Common Lisp

1985 – Eiffel

1986 – Erlang

1987 – Perl

1988 – Tcl

1989 – FL (Backus)

1990年代:互聯網時代

1990年代未見到有什么重大的創新,大多都是以前構想的重組或變化。這段期間主要在推動的哲學思想是提升程式設計師的生產力。許多”快速應用程式開發” (RAD) 語言也應運而生,這些語言大多都有相應的集成開發環境、垃圾回收等機制,且大多是先前語言的衍生語言。這類型的語言也大多是面向對象的編程語言,包含有Object Pascal、Visual Basic,以及C#Java則是更加保守的語言,也具備垃圾回收機制。與其他類似語言相比,也受到更多的觀注。新的腳本語言則比RAD語言更新更好。這種語言并非直接從其他語言衍生,而且新的語法更加開放地(liberal)與功能契合。雖然腳本語言比RAD語言來的更有生產力,但大多會有因為小程式較為簡單,但是大型程式則難以使用腳本語言撰寫并維護的顧慮[來源請求]。盡管如此,腳本語言還是網絡層面的應用上大放異彩。 在這段期間被開發出來的重要語言包括有:

1990 – Haskell

1991 – Python

1991 – Visual Basic

1993 – Ruby

1993 – Lua

1994 – CLOS (part of ANSI Common Lisp)

1995 – Java

1995 – Delphi (Object Pascal)

1995 – JavaScript

1995 – PHP

1997 – REBOL

1999 – D

現今的趨勢

編程語言持續在學術及企業兩個層面中發展進化,目前的一些趨勢包含有:

在語言中增加安全性與可靠性驗證機制:額外的堆棧檢查、資訊流(information flow)控制,以及靜態執行緒安全。提供模組化的替代機制:混入(en:mixin)、委派(en:delegates),以及觀點導向。元件導向(component-oriented)軟件開發元編程、反射或是存取抽象語法樹(en:Abstract syntax tree)更重視分散式及移動式的應用。

與數據庫的整合,包含XML及關聯式數據庫。支援使用Unicode編寫程式,所以源代碼不會受到ASCII字符集的限制,而可以使用像是非拉丁語系的腳本或延伸標點符號。

圖形化使用者接口所使用的XML(XUL、XAML)。在這段期間被開發出來的重要語言包括有:

2001 – C#

2001 – Visual Basic .NET

2002 – F#

2003 – Scala

2003 – Factor

2006 – Windows PowerShell

2007 – Clojure

2009 – Go

從這些編程語言簡史和人們日常需求,我們可以回答這個問題了。所有的程序員思維都是來自于需求兩個字。隨著對現實信息管理的壓力太大的,我們慢慢才有計算機發明。為了,更好的管理計算機,于是便有了編程語言,起初的語言,是面向機器的了,后來隨著世人更加理解的角度,就進一步面向過程,為了使人更加理解世界萬物,就有了面向對象的語言,綜上所述,程序員的思維,從何而來,從世間萬物的需求而來,從更好的解決問題的需求而來。

有了程序員的思維從何而來的這一個冒解決了,我們就能夠很快的回答,程序員思維你要到哪里去了?

一切程序員思維的宗旨就是,為了更好的解決問題,更好解決需求,于是在這一光輝思想的引導下了,我們就發明各種各樣設計模式,為了使其代碼高內聚低耦合,這些都是使其我們程序員花這小的代價來滿足最大需求。

以上所述,便是我對程序員思維的理解,懇請大家斧正。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 程序員
    +關注

    關注

    4

    文章

    952

    瀏覽量

    29799
收藏 人收藏

    評論

    相關推薦

    TMS320C6000程序員指南

    電子發燒友網站提供《TMS320C6000程序員指南.pdf》資料免費下載
    發表于 12-24 17:19 ?0次下載
    TMS320C6000<b class='flag-5'>程序員</b>指南

    TMS320C55x DSP CPU程序員參考補充

    電子發燒友網站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發表于 12-21 11:36 ?0次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補充

    UCD3138A64/UCD3138128程序員手冊

    電子發燒友網站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費下載
    發表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    機械革命發布CODE AI程序員

    近日,英特爾新質生產力技術生態大會在成都舉行,機械革命作為重要參展商帶來了多款明星產品引爆全場!其中更是在AI PC軟件生態產品發布分論壇上,Intel、智譜、機械革命三方聯合發布了專為程序員設計的CODE AI程序員本,成為本次大會的一大亮點。
    的頭像 發表于 11-30 10:34 ?377次閱讀

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    Linux驅動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發表于 11-08 10:17 ?162次閱讀

    第五屆長沙·中國1024程序員節開幕

    據官方媒體報道,10月24日;? 第五屆長沙·中國1024程序員節在湖南湘江新區開幕;本次中國1024程序員節以“智能應用新生態”為主題。設置有岳麓對話、技術英雄會、主題峰會及賽事、展覽等活動,一場
    的頭像 發表于 10-25 15:42 ?195次閱讀

    京東上萬程序員都AI用它!

    對大模型生成代碼進行智能修復,為程序員開啟代碼漏洞修復的“自動駕駛”模式,不但減少人工接入、提高工作效率,更為企業抵御內外部各種攻擊構建起一道堅固的安全屏障,確保業務的連續性和穩定性。 JoyCoder是京東云自主研發的一款輔助開發人員
    的頭像 發表于 07-17 16:29 ?262次閱讀
    京東上萬<b class='flag-5'>程序員</b>都AI用它!

    程序員節視頻創意大賽,用串口屏贏取千元大獎

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是一場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每一位程序員及編程愛好者,拿起你的鏡頭,記錄下那些平凡日子中的不凡瞬間,讓編程的魅力與
    的頭像 發表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節視頻創意大賽,用串口屏贏取千元大獎

    程序員節視頻創意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是一場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每一位程序員及編程愛好者,拿起你的鏡頭,記錄下那些平凡日子中的不凡瞬間,讓編程的魅力與
    的頭像 發表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節視頻創意盛宴,邀您共襄盛舉!

    適者生存,程序員最終會流向哪……

    程序員沒有永遠的護城河!!就目前的互聯網大環境來看,it行業已經是……
    的頭像 發表于 03-11 17:11 ?408次閱讀
    適者生存,<b class='flag-5'>程序員</b>最終會流向哪……

    薪資高、青春飯,是不是程序員=青樓?

    花期太短。技術迭代快,年齡大容易失業。 就這幾年的互聯網環境而言,不管是前端、Java、Android開發等等行業。已經感受到程序員不是太卷就是工作難找,薪資過低。以前高工現在拿著中低程序員薪資
    發表于 03-06 21:32

    瑞薩Flash程序員V3 發布說明

    電子發燒友網站提供《瑞薩Flash程序員V3 發布說明.pdf》資料免費下載
    發表于 02-19 09:37 ?1次下載
    瑞薩Flash<b class='flag-5'>程序員</b>V3 發布說明

    2024程序員的未來方向如何走?還看今朝

    這幾年的IT行業想必大家已經感受到了,Android、Java、前端等等程序員都經歷了大廠……
    的頭像 發表于 02-02 09:45 ?817次閱讀
    2024<b class='flag-5'>程序員</b>的未來方向如何走?還看今朝

    1月18號“純鴻蒙”千帆啟航,程序員預備!

    。 如何正確看待鴻蒙? 我作為程序員來說,首先是看鴻蒙的發展、市場開發崗位、薪資以及前景。 這幾年對鴻蒙的發展情況來分析,從2019年開始鴻蒙的出來今天,華為鴻蒙取得了很大的成就。從“不兼容
    發表于 01-16 22:13
    主站蜘蛛池模板: 波多野结衣二区| 国产亚洲va在线电影| 性派对xxxhd| 浪小辉军警服务员VIDEOS| 高清观看ZSHH96的视频素材| 亚洲中文 字幕 国产 综合| 日本中文字幕伊人成中文字幕 | 精品性影院一区二区三区内射| 变形金刚7免费观看完整| 在线播放免费人成视频| 亚洲qingse中文字幕久久| 人妻美妇疯狂迎合| 免费看国产精品麻豆| 久久91精品久久久久久水蜜桃| 国产精品第一综合首页| younv 学生国产在线视频| 中文字幕亚洲无限码| 亚洲精品在线网址| 天天摸夜添狠狠添高| 人妻无码AV中文系列| 明星三级电影| 狂野猛交xxxx吃奶| 九九国产精品成人AV麻豆| 国产午夜视频在线| 国产第一页在线视频| 俄罗斯aaaaa一级毛片| h版动漫在线播放的网站| 131美女爱做视频午夜剧场| 一道本无吗d d在线播放| 亚洲蜜桃AV永久无码精品放毛片| 午夜天堂一区人妻| 特黄特色大片免费播放器试看| 人曽交Z00Z0OA片| 日本wwwxx爽69护士| 青青视频国产色偷偷| 欧美亚洲精品一区二三区8V| 欧美v1deossexo高清| 内射一区二区精品视频在线观看| 猫咪av永久最新域名| 麻豆一二三四区乱码| 亚洲视频在线观看不卡|