① 小白,想入門程序員,應該從什麼開始學,順序是什麼
首先,你需要選擇一門自己感興趣的編程語言。現在常見的編程語言有:
C / C++:屬於大多數情況下能接觸到的相對基礎的編程語言了,優勢是基本掌握以後面對其他語言均可以「無壓力」;壞處是學習起來非常的困難盯察,需要系統性的了解非常多知識點,且耗時一般較長。如果你有更多的時間和精力,同時希望能夠長期更好的發展成架構師,那麼這可能就是你比較合適的語言選擇了。
Java:應用廣泛,幾乎大多數開發場景都有java或者java變體的身影。學習java你可以了解到面向對象思想,了解虛擬機等的概念,面對常見的開發也能夠有應對方案。同時這個語言對比C/C++能簡單不少,在很多情況下是面向新手比較合適的選擇了。
Go:最近一段時間流行起來的語言,在面對高並發等場景下有天然的優勢。Go語言有自己獨到的特性,同時也可以支持一些C語言的能力,而且也越來越在國內的互聯網公司作為首選開發語言之一。
PHP /Python /JavaScript / .net / Swift / ...:這些語言大多有自己的特定應用場景,比如Python在大數據和人工智慧領域比較常見,JavaScript是前端開發的必備語言等。如果你希望的工作有比較強烈的語言要求,那麼選擇上面的語言准沒錯。
再次,了解計算機基礎。
常見的計算機基礎包括計算機組成原理(簡稱機組)、操仔則謹作系統、網路、編譯原理等。這里需要投入比較多的精力,如果確實時間上比較緊張,可以有側重的選擇。
比如你希望從事偏底層的開發工作,那麼更側重在機組和操作系統上;如果側重在上層開發,那麼可以側重在網路上,以此類推。當然,更好的掌握以上知識能夠在很多不經意的時間給到你幫助,如果有空,也建議多深入的理解。
最後,知道一些計算機知識的應用。
這里就比較多了,比如資料庫、一些基本的項目設計、項目實戰等等,根據你希望的工作有針對性的去了解,或許有不小的幫助。
按照上面這幾個步驟進行下去,可能確實需要投入一定的時間和精力,但是一旦你選擇希望成為一名程序員,就一定要堅持下去,才能取得更好的結果。
② 程序員需要學些什麼
程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。
程序員需要學習:
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很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。
但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。
會編程、會計算機語言就能加入互聯網發展大潮中,享受數字經濟發展的紅利,一時間社會上的程序員培訓機構都變得格外火爆。
但是現在,專家的數據分析結果告訴你:若想跟上數字經濟發展的步伐,光會編程可不行,這個行業現在緊缺高端的、綜合型人才。
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、《活著》
③ 程序員要學些什麼
程序員需要學習的專業
1、人工智慧方向所選專業:計算機科學與技術、自動化(研究生階段叫控制科學與工程)、軟體工程推薦高校:北京大學、清華大學、復旦大學、北京航空航天簡豎大學、哈爾濱工業大學、上海交通大學、華中科技大學、南京大學、東南大學等。
2、網路空間安全方向所選專業:網路空間安全專業推薦高校:北京郵電大學、四川大學、中國科學院大學、山東大學等就業前景:網路空間是與陸、海、空、天並列的第五大主權空間,網路空間安全已經成為全球性的挑戰。本專業是研究網路空間中的安全威脅和防護問題,為實施國家安全戰略,加快網路空間安全高層次人才培養設立。國家相當重視並大力扶畝豎持此專業的發展;其次,如今社會上對網路空間安全十分重視,而且和大數據、人工智慧等聯系緊密,就業面非常廣,而且人才缺口巨大。網路空間安全畢業生能夠從事網路空間安全領域的科學研究、技術開發與運維、安全管理等方面的工作。
3、雲計算方向所選專業:軟體工程專業、計算機科學與技術推薦高校:北京航空航天大學、北京大學、清華大學、國防科技大學、哈爾濱工業大學、上海交通大學、華中科技大學、電子科技大學等就業前景:雲計算,可以簡單理解為資源共享池,就是把數據、軟體、服務等,放到「特定的地方」就是雲,我們常用的網路雲盤,就是雲的一種——公有雲。雲計算產業已覆蓋政府、金融、交通、企業、教育、醫療、信息消費等各領域,並且與通信、物聯網、互聯網產業相融合。預計雲計算行業規模近兩年有望達到3834億美元,今後5年內,雲計算人才缺口將超過130萬,就業前景廣闊。就業方向:Linux運維工程師、Linux高級架構師、運維開發工程師、資料庫管理員、雲計算架構師等。
4、大數據所選專業:數據科學與大數據技術、計算機科學與技術、軟體工程、經濟學推薦高校:北京大迅咐大學、清華大學、對外經濟貿易大學、中南大學、中國人民大學、北京郵電大學、復旦大學、浙江大學、東南大學、上海交通大學等就業前景:大數據是近年來最受關注之一的技術,大部分的互聯網企業都離不開大數據相關崗位的人才。從技術上看,大數據與雲計算的關系就像一枚硬幣的正反面一樣密不可分。根據最新的大數據人才報告顯示,未來3-5年大數據人才預估缺口高達150萬,就業前景也很好。就業方向:大數據系統研發類、大數據應用開發類和大數據分析類等。相關的工作崗位:ETL研發、Hadoop開發、可視化(前端展現)工具開發、信息架構開發、數據倉庫研究、OLAP開發、數據預測(數據挖掘)分析、企業數據管理、數據安全研究、數據科學研究等。
④ 程序員是學什麼專業
程序員是學的專業如下:
1、計算機科學與技術。
計算機科學與技術是一個計算機系統與網路兼顧的計算機學科寬口徑專業,旨在培養具有良好的科學素養,具有自主埋橘胡學習意識和創新意識,科學型和工程型相結合的計算機專業高水平工程技術人才。
2,軟體工程。
軟體工程是一門研究用工程化方法構建和維護有效、實用和高質量的軟體的學科。它涉及程序設計語言、資料庫、軟體開發工具、系統平台、標准、設計模式等方面。
3,網路工程。
網路工程專業主要講授計算機科學基礎理論、計算機軟硬體系統及應用知識、網路工程的專業知識及應用知識。伍慶網路工程專業旨在培養具有創新意識,具有本專業領域分析問彎攔題和解決問題的能力,具備一定的實踐技能,並具有良好的外語應用能力的高級研究應用型專門人才。
4,信息安全(網路安全)。
信息安全,ISO(國際標准化組織)的定義為:為數據處理系統建立和採用的技術、管理上的安全保護,為的是保護計算機硬體、軟體、數據不因偶然和惡意的原因而遭到破壞、更改和泄露。
⑤ 想當程序員,大學應該學什麼專業
程序員一枚,從周圍同事的情況來看,程序員這行對專業的要求沒有想像中那麼高,但是也有跡可循。
一:軟體工程 / 計算機科學與技術
這兩個專業幾乎是為程序員量身定做的,在大學時代就能接觸到非常多如編程語言、計算機原理(計算機組成原理、操作系統、計算機網路等)、數據結構演算法等與編程密切相關的課程,而且大多為必修課。這些課程學好了以後,大多數同學都還是可以收獲一份比較滿意的程序員工作的。
總結一下,對口程序員的專業主要集中在大類「0809計算機類」與「0807電子信息類」下,可以多關注這些專業內容。當然,我的同事中也不乏英語、物理、數學等專業畢業的,其實無論在大學選擇了什麼專業,只要能夠定向的學習計算機語言,學些基礎知識,都還是有機會成為一名合格的程序員的。