導航:首頁 > 程序命令 > 美國程序員是怎麼學的

美國程序員是怎麼學的

發布時間:2022-06-10 18:42:17

1. NASA 頂級程序員是如何編程

你好:美國國家航空航天局(NASA)開發人員的工作是編程界最具挑戰性的工作之一。 他們編寫代碼並開發關鍵任務應用程序,安全是他們主要關注的重點。
在這種情況下,制定嚴謹的編碼准則並遵循,對於他們來說十分重要。這些規則涵蓋了軟體開發的各個方面,如應該如何編寫軟體,應該使用哪些語言特性等等。
盡管很難就一個編碼標准達成共識,NASA 的 JPL 首席科學家 Gerard J. Holzmann 還是制定了一套名為「發展安全關鍵代碼的十大規則」的代碼准則,由所有工作人員共同遵循。
由於 JPL 的工作內容與 C 語言相關,因此本指南主要關注用 C 編程語言編寫的代碼。但也可以靈活運用到其他語言上。
NASA 的十大編碼准則如下:
1、簡化控制流程:使用盡可能精簡的控制流程構造編寫程序 – 不要使用 setjmp 或 longjmp 構造、goto 語句,以及直接或間接的遞歸調用。
2、為循環使用固定次數上限:所有的循環必須有一個固定的上限。 必須可以被某個檢測工具靜態證實,該循環不能達到預置的迭代上限值。如果該上限值不能被靜態證實,那麼可以認為違背該原則。
3、不要在初始化完成後進行動態內存分配。
4、不使用冗長的函數:如果標准格式為一個語句一行、一個聲明一行,那麼函數的長度應在一張紙的范圍內,即每個函數的代碼行不能超過 60。
5、低斷言密度:代碼中斷言的密度平均低至每個函數 2 個斷言。斷言被用於檢測在實際執行中的異常情況。斷言必須沒有副作用,並應該定義為布爾測試。當一個斷言失敗時,應該執行一個明確的恢復操作,例如,把錯誤情況返回給執行該斷言失敗的函數調用者。對於靜態工具來說,任何能被靜態工具證實其永遠不會失敗或永遠不能觸發的斷言違反了該規則(例如,通過增加無用的 assert(true) 語句是不可能滿足這個規則的)。
6、以最小范圍級別聲明數據對象:該原則同時也是數據隱蔽(Data hiding)的基本原則。所有數據對象均必須以盡可能最小的范圍級別進行聲明。
7、檢查參數和返回值:應在每次調用函數後檢查非空函數的返回值,並在每個函數內部檢查參數的有效性。
8、限制預處理程序的使用:預處理器的使用僅受包含頭文件和簡單的宏定義的限制。符號拼接、可變參數列表(省略號)和遞歸宏調用不被允許。所有的宏必須擴展為完整的語法單元。通常不建議使用條件編譯指令,但也不總是能夠避免每次在代碼中這樣做的時候必須有基於工具的檢查器進行標記,並有充足的理由。
9、限制指針的使用:具體來說,不允許有超過一級的解除指針引用。解除指針引用操作不可隱藏在宏定義或類型聲明中。不允許使用函數指針。
10、編譯所有代碼:從開發工作第一天開始時,在編譯器開啟最高級別警告選項的條件下對代碼進行編譯。在此設置之下,代碼必須零警告編譯通過。代碼必須通過源代碼靜態分析工具,每天檢查一次以上,且零警告通過。
請參考!

2. 程序員需要學些什麼

程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。

程序員需要學習:

1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;

2、理解計算機的組成以及各主要部件的性能指標;

3、掌握操作系統、程序設計語言的基礎知識;

4、熟練掌握計算機常用辦公軟體的基本操作方法;

5、熟練掌握基本數據結構和常用演算法

6、熟練掌握C程序設計語言,以及C++、java、Visual Basic中的一種程序設計語言;

7、熟悉資料庫、網路和多媒體的基礎知識;

8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;

9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;

10、了解信息化、計算機應用的基礎知識;

11、正確閱讀和理解計算機領域的簡單英文資料。

程序員必備技能:

1、熟練開發工具

做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。

而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。

其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。

另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。

2、熟知資料庫

作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。

雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。

3、了解操作系統

當前主流的操作系統是Windows,linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。

要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。

Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。

在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。

從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。

至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。

4、明白DCOM/CORBA/XML/WEBServices存在的意義

隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。

XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。

5、不要將軟體工程與CMM分開

大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,一個編程高手並不一定是一個優秀的程序員。

一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。

如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。

6、需求理解能力

程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。

要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。

7、模塊化思維能力

作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。

這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。

就業方向:

1、網路開發

現在網路已經成為世界通訊的一座橋梁,好像Javascript、php、Ruby這幾類開發語言大部分是用作網路開發方面。

2、企業軟體開發

JAVA、C#、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。

3、系統軟體

C語言、C++、Object-C這些軟體更多是用在系統軟體開發,嵌入式開發的方面。

當然,這分類不是絕對,像JAVA、C#、VB很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。

但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。


(2)美國程序員是怎麼學的擴展閱讀:

會編程、會計算機語言就能加入互聯網發展大潮中,享受數字經濟發展的紅利,一時間社會上的程序員培訓機構都變得格外火爆。

但是現在,專家的數據分析結果告訴你:若想跟上數字經濟發展的步伐,光會編程可不行,這個行業現在緊缺高端的、綜合型人才。

11月22日下午,清華大學經管學院互聯網發展與治理研究中心與領英聯合發布《中國經濟的數字化轉型:人才與就業》,揭示我國數字人才現狀與趨勢。

報告顯示我國數字經濟發展面臨人才短缺的挑戰,但這種短缺主要體現在擁有中高級專業技能數字人才的比例不高,擁有人工智慧、智能製造等前沿技術的人才更是少之又少。

與美國、英國、加拿大等國家相比,中國的數字人才儲備尚有很大差距。

此外,報告根據對人才需求的數據分析,結果顯示我國數字人才的技能需求不再強調單一編程技能,更加看重技術、管理和領導力等綜合技能。

2015年,我國從事信息傳輸、軟體和信息技術服務相關工作的人數約350萬,但其中中高端人才,特別是前沿技術的數字人才並不多。根據領英中國智庫的研究,在人工智慧領域,美國的從業者數量在85萬人以上,印度15萬,英國14萬,中國只有5萬多人。

報告負責人、清華大學經濟管理學院副院長陳煜波教授表示,我國目前在大數據與人工智慧領域人才缺口明顯。

他解釋說,目前中國85%以上的數字人才分布在產品研發類,而深度分析、先進製造、數字營銷等職能的人才加起來只有不到5%,存在較大缺口,新興技術人才和創新型人才培養方面存在滯後和不足。

這份研究報告的基礎數據來自領英在中國的3600萬個人用戶,這些用戶畢業於1.5萬多所國內外院校,分布在36.4萬家企業,擁有超過2.3萬項技能。

陳煜波研究團隊從中篩選了72萬數字人才,多維度提取用戶畫像並跟蹤其職業軌跡,以此預測不同地區的人才流向、僱傭率、受僱主歡迎的技能等人才趨勢層面的信息。

陳煜波說,根據數據分析結果,整體來看,雖然編程技能和數據分析技能需求占據主導,然而隨著數字產業走向成熟,企業除了強調編程技能,也逐步更加看重人才的技術、管理和領導力等綜合技能。

近年間,項目管理、產品運營等「技術+管理」類技能的需求呈現出明顯的上升趨勢,懂技術、懂管理的人才被認為是「一將難求」。

領英中國代理總裁曾志恆也提醒,如果你有興趣向數字職能轉型,不能僅僅專注於自己的技術能力,溝通和領導力等軟性技能將成為你脫穎而出的關鍵。

陳煜波希望這些研究結果能為教育行業和政府部門提供借鑒。他說,教育行業可根據職位的供需趨勢更好地規劃人才培養的方向,政府也可更好地了解人才流動方向、技術缺口等,以此制定有針對性的引才策略。

程序員崗位職責:

1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。

2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。

3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。

4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。

5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。

6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。

7、負責相關技術文檔的擬訂。

8、負責對業務領域內的技術發展動態進行分析研究。

相關書籍:

很多程序員響應,他們在推薦時也寫下自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。

其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。

下面就按照各本書的推薦數排列。

1、《代碼大全》 史蒂夫·邁克康奈爾

2、《程序員修煉之道》

3、《計算機程序的構造和解釋》

4、《演算法導論》

5、《重構:改善既有代碼的設計》

6、《設計模式》

7、《人月神話》

8、《計算機程序設計藝術》

9、《編譯原理》(龍書)

10、《活著》

3. 程序員可以自學嗎

程序員一般有初中學歷就可以自學。書籍可以購買C語言等等的教程,比較適合新手。程序有javascrip、C++、python程序員、ABAP、android、iOS等等,種類豐富。天賦和知識這些都是次要的,首先需要有熱愛的心,但是程序員的確對數學和英語有一定要求。

程序員考試上:凡遵守中華人民共和國憲法和各項法律,恪守職業道德,具有一定計算機技術應用能力的人員,均可根據本人情況報名參加相應專業類別、級別的考試。無其他特別要求,只要有這個能力就可以報名。

(3)美國程序員是怎麼學的擴展閱讀

崗位分類

世界上第一位程序員是英國著名詩人喬治·戈登·拜倫的女兒AdaLovelace,曾設計了巴貝奇分析機上解伯努利方程的一個程序。她甚至還建立了循環和子程序的概念。由於其在程序設計上的開創性工作,AdaLovelace被稱為世界上第一位程序員。美國國防部開發的ADA語言就是為紀念這位世界上的第一位程序員而命名的。

計算機科學發展到今天(21世紀初期),程序員從事的人群很多,分工也不相同,從大的方面可以分為以下幾類:asp程序員、web前端開發程序員、delphi程序員、php程序員、powerbuilder程序員、C程序員、linux程序員、net程序員、vb程序員、java程序員、javascript程序員、C++程序員、Python程序員、ABAP程序員、android程序員、iOS程序員。

4. 如果想成為一個程序員應該學習什麼知識

2L的說「計算機沒什麼前景」?不認同。

轉到回答:
程序員就是寫程序,寫程序就是寫計算機編程語言,讓計算機去執行。
所以成為一個程序員就要學編程語言。
學編程只是第一步。
作一個真正合格的程序員,應該具有的素質:
1:團隊精神和協作能力
2:文檔習慣
3:規范化的代碼編寫習慣
4:需求理解能力
5:模塊化思維能力
6:測試習慣
7:學習和總結的能力
作為高級程序員,乃至於設計師而言,除了應該具備上述全部素質之外,還需要具備以下素質:
1、 需求分析能力
2、 整體框架能力
3、 流程處理能力
4、 模塊分解能力
5、 整體項目評估能力
6、 團隊組織管理能力
另外:
1,激情
2,自學好學
3,聰明
4,隱性的經驗
5,技術多樣性

5. 中國程序員VS美國程序員,差距在哪裡

當然小編並不是在長他人志氣,滅本國威風,只是想小小提醒作為程序員的你,一定不要以學編程、拿高薪作為自己唯一的人生目標。就好像創業路上的你,無論在什麼時候,我們都要不斷提升自己的專業度和競爭力,永遠保持一顆熱愛自己事業的工匠之心,堅定的走下去。互聯網行業千變萬化,要不斷的學習,更新知識系統,才能永遠不被這個社會所淘汰。

6. 美國大片裡面那些程序員是怎麼煉成的

只是表象,都是電腦合成的

7. 如何學習編程

先了解一些基本知識

c語言的背景

另一種是以basic為主導的程序語言,如FoxPro、VBScript等,它也有類似的函數調用、程序語句編寫和循環控制,但不同於C語言家族。所以如果是從QBASIC開始的,在學習C語言之前最好先洗腦。不要在C語言上使用基本的學習方法和思想。

(7)美國程序員是怎麼學的擴展閱讀:

首先明確學習目標,看你要學到什麼程度,以及用來干什麼。

如果你是要學到足以找一份高薪的工作那最好就是考研。

如果是急著找份初級程序員的工作可以了解一下各種編程語言適合做啥然後根據自己的興趣報個培訓班,不過很貴而且還會被鄙視。

如果是覺得編程很好玩兒想簡單了解一下,可以買一本計算機導論的書,學一門入門語言,C語言 java python 等等都行。不想看書網上視頻教程也很多,慕課網之類的。

如果不是為了工作但是有明確的目標,比如我要學黑客,我要學做游戲,我要學做網站之類的,可以自行網路XX學習路線之類的。然後再輔以計算機專業基礎課,比如計算機原理、數據結構演算法什麼的,同樣可以自行網路,很容易找到。

8. 想當一名程序員那在大學時候究竟應該學習什麼

最終我決定把想到的東西寫下來,希望能對在校的人有點幫助。首先我們得知道這問題的答案是個變數,他依賴於你的目標和天資能力,絕不唯一。當然大學的課程設置往往是唯一的,所以會有點矛盾。這里最關鍵的東西是目標,大學學習只是達成最終目標高度的一個環節,他應該為最終目標服務。當然大學生很難清楚的知道自己的目標究竟在那裡,但要總歸要大致知道自己的方向。這個之所以關鍵是因為,這直接決定你應不應該學習某個東西。我是在做了很多年軟體後,才發現軟體和軟體的差別其實比馬和牛的差別還要大。用流行的分類方法比如:前端開發、後端開發、.net開發,Java開發等會讓人迷失焦點,所以我一直覺得Barry W Boehm在《軟體成本估算:COCOMOII模型方法》里的分類方法對學習更有幫助。在這個分類方法里軟體被分了三層:最底層是基礎結構型(平台)軟體的開發;中間層次是開發工具、系統集成、中間件;最上層是終端用戶編程,也可以理解為一般應用的開發。同時作者還補充了份數據說:在2005年95%的美國程序員是在做終端用戶編程。這似乎把話題扯開了,但其實不是,關鍵要大致定位下自己的方向。因為對於目標是基礎結構的程序員和目標是一般應用的程序員,他們要學習的東西差別很大。Donald Knuth的《計算機程序設計藝術》不是沒用,但如果你花了2年把他啃了一遍回頭專門做應用開發,那它真的用處不大。至少和一個精通具體語言、框架、設計模式、面向對象、UML的人比只是鑽研了《計算機程序設計藝術》的人反倒是在劣勢,雖然可能後者更花時間。反過來講則是在演算法密集型的工作里,那優劣情形就會掉過來。無疑的什麼都精通最好,但人的時間是有限的,而軟體相關的知識是無限的,所以把學習聚焦在自己的目標上非常關鍵。而目標是什麼則要根據自己的實際情形來定。假設說你真的感覺自己的能力挺好,就想做基礎結構型的東西,去做MapRece,去做操作系統等等,那首先要認識到的是干這個的人很少,競爭很激烈。如果說在2005年美國只有5%的程序員是干這個的,那我估計今天在中國也頂多是這么個比例。個人感覺,大學的計算機課程還真都是往這個方向培養人的,一旦真的走這個方向,那麼大學的計算機課程還真用的上。需要好好學習,天天向上。當然只上課也不行,把課上學的東西實踐起來也很關鍵(比如開源項目)。這里麻煩的事情是,干這個的可能只有5%,很多人即使很努力也不一定擠的上去。那麼假設說一個人很現實,說:國內排名靠前的幾所學校湊湊也就5%了,競爭太激烈,我不選這個目標方向,我還是95%里做做吧,那這個時候我應該學什麼?我個人認為主要要學好一些比較硬的,需要大塊時間學習的東西,而不要在花里胡哨的東西上多費時間。硬的東西是指:數據結構和基本演算法。不管是不是做基礎結構性軟體,基本的數據結構和演算法知識還是要有的。很可能不太會有自己從頭寫數據結構和演算法的機會,但如果復雜度不知道怎麼算,鏈表、紅黑樹、哈希表的差別都不知道,那就怎麼都玄。精通一門編程語言具體是那個可以根據實際情形來選。但這里強調的是語言,不是IDE和框架。可以通俗理解為每個關鍵字背後的含義要整清楚。這里的陷阱是學一堆語言,但那個都不精。精讀一個有點規模的開源項目(至少要超過2萬行)要找那種規模不太大,又比較有名的項目,一定要精讀,爭取每行都懂。累積一定的代碼量不算IDE幫助生成的,爭取也在2萬行之上。面向對象和設計模式這點最好配合著下一點一起做。從頭考察一下某個框架考察某個框架的內存機制、線程機制等。整個學習過程中最常見的陷阱是學會操作一堆IDE和框架的使用,但實際上這事兒價值不大,程序員的價值符合反木桶原理,啥都知道一點的,大多時候不如某個上精通的。同時除非很特別的公司,大一點的公司並不期望畢業生過來就能幹活。

9. 程序員能自學嗎

如果有一定的基礎,對編程、代碼有很強烈的興趣,並且有較強的自學能力,這樣是可以自學的。因為這個專業的實踐性和邏輯性特別強,不付出一定的時間和精力是學不好的。如果真的很想當一名程序員,報班培訓是一個不錯的選擇。

(9)美國程序員是怎麼學的擴展閱讀:

程序員職業要求:

一般的程序員都有四年的在專業領域的學習,需要一個在程序領域的學士學位獲得者,不論是數學方面的還是工程方面的都是可以的。

大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然沒有正規的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那麼他的機會要比有學歷的應屆畢業生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業後你就會發現,多實習讓你有更多的經驗,在找工作的時候就有更多的機會。

對於職業程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業務技術,他的技術必須一直保持在一個較高的水平,並且要不斷發展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發表文章和接受職業教育,這些使程序員在自己的領域中分級或者不斷並排前進。

參考資料:

程序員-網路

閱讀全文

與美國程序員是怎麼學的相關的資料

熱點內容
全球十大加密貨幣友好國家 瀏覽:425
咸魚app什麼賣的最好 瀏覽:303
51單片機c語言proteus 瀏覽:825
電視看pdf文件 瀏覽:531
網盤文件夾能鎖嗎 瀏覽:542
雲伺服器斷開滑鼠不消失 瀏覽:547
javattl 瀏覽:403
伺服器為什麼配置價格不一樣 瀏覽:42
javareplaceall正則表達式 瀏覽:261
編譯器本身使用包 瀏覽:231
加盟什麼項目前景好app 瀏覽:305
河源數據加密電話 瀏覽:627
郵件伺服器怎麼清洗 瀏覽:861
apache22安裝php 瀏覽:833
安卓機便簽繪畫怎麼放大 瀏覽:389
對啊app電子教材怎麼下載 瀏覽:340
地下車庫加密多少合適 瀏覽:688
pythonmysql配置 瀏覽:577
雲伺服器密碼生成器 瀏覽:987
碼頭提還櫃app怎麼操作的 瀏覽:836