導航:首頁 > 程序命令 > 程序員知識結構

程序員知識結構

發布時間:2022-04-03 19:26:23

程序員初學者需要掌握哪些知識

如果做一個專業的程序員: 1.基礎語言知識 :從底層的ASM 到結構化的C,到面向對象的C++ java,如果不能都精通,但是要了解,至少要精通一門 2.基礎數學知識: 高等數學(數學分析) 線性代數 離散數學,概率.數理統計等等 3.基礎計算機原理:操作系統原理,...

⑵ 一個標準的程序員需要學習哪些知識

我覺得作為一個標準的程序員,首先他要學習很多編程的工作以及技能,同時也要對一些操作系統的結構比較了解。這樣她才能夠在編程的時候,有條不紊地編出一個比較好的程序,同時他也應該有比較好的數學基礎,因為程序設計其實也是一種數學問題

⑶ JAVA程序員需要掌握什麼知識

給你個參考吧。
作為一個合格的Java軟體工程師必須具備的條件?

這個問題是我一直想知道的。但是它又分為很多個方面...
比如,是掌握具體的技術,
還是,擁有很強的自學能力?

現在的軟體方面跟新和升級特別快,
無論是什麼知識,當你真正掌握它的時候,也許就已經被淘汰了。
所以這就要求我們不停的去學習...
所以自學能力很重要.
但是我覺得自控能力更重要...(悲哀...今天看了一天動畫...)
我自認為是沒有什麼自控能力的人...

好了,再來說說技術方面。
到底現在該掌握些什麼具體的知識呢?
這里,我真羨慕.net程序員...
從頭到尾就一個.net framework(.net框架),
這樣就可以很集中精力去深入學習它,而且不用擔心會被淘汰...
而Java這邊,洽洽相反框架滿天飛,而且各有所長...
這就難免讓人需要經歷選擇性的痛苦...(雖然原理都差不多)
而且還要根據公司的不同而使用不同的組合...
這就產生了n種集成方案...(崩潰啊...)
所以要全部學會幾乎不可能啊...
雖然是這樣,但是有點挑戰性才有意思嘛...呵呵...

那麼一個合格的java軟體工程師究竟需要掌握哪些具體的知識呢?
下面就我個人的角度來總結一下,如有不足,也請高手指出。
(ps:本人只列出普遍常用的知識)

首先當然是Java語言本身了。Java語言的創始人曾說過"Java=C++--"。
什麼意思?就是Java語言是在C++的基礎上減去一些不必要的東西,使其更為實用,更具有生產力。
Java語言的語法很簡單並不像C++那樣復雜.(本人曾經接觸過C++...傷心的經歷...)
很多較為復雜的數據結構Java都能簡單實現,而C++較為麻煩。
其中很大的原因是因為Java是單根結構.
而且Java的垃圾回收機制也有很大的功勞.(.net的垃圾回收機制也是Java的靈感)
但是如果想深入底層了解Java還是需要費很大的功夫的...
比如,你要學會javap命令去反編譯java文件然後再去看懂那些反編譯後的結果...
這樣你才能了解Java語言的原理。
很多情況下不同的代碼,但是最後產生的位元組碼是相同的。
也有些情況,雖然代碼只相差一點但是效率是天壤之別。
(例如JDK5新添加的StringBuilder和StringBuffer的區別)
這些在都可以反映在位元組碼里。
關於Java語言的問題不是本文的重點,我就不多說了。
總之學好Java這門語言是基礎中的基礎。

其次,說到Java語言就不能不說面向對象(OO)。
Java語言的產生也有很大的一部分是為了生成一個具有生產力的OO語言。
為什麼這樣說?
在早些年代OO的思想雖然被提出,但是那些純粹的OO語言卻沒有絲毫的生產力。
(如出名的:smalltalk它是100%的OO)
而Java在保持高度的OO的前提下更注重生產力。
(ps:Java是98%的OO,其中8種基本數據類型,static關鍵字,運算符等,這些都不OO)
所以隨著軟體工程的龐大OO的思想很重要。

好了,到這里如果以上你有所了解,並掌握的一般。那麼就可以繼續往下學習:
如果你想掌握Java語言中更精髓的東西,那麼我建議你可以做一些小的桌面應用程序。
其中,你會學習到另一些知識:
並發,IO,GUI,AWT,Event,Listener,Socket,Reflect等java更深層的東西。
(當然,有些只需了解,因為有些東西將來在做B/S結構的系統上是用不到的...
如果將來你想從事嵌入式開發,這些你就要多一點了解了。
很可惜,我還沒有想過去做那個...
還記得當我第一次了解AWT里的Event和Listener的實現方式後,
我覺得JDK的設計人員真是厲害,設計的是那麼的巧妙,第一次感覺代碼是那麼優美,
裡面用到了各種設計模式,真是讓人驚訝。
遭了,又在自我陶醉了...)

回到正題,關於Java語言的基礎,我就先講到這。
當我們掌握了Java之後呢?
真正的Java開發現在才是開始:
這時我們必須要接觸另外一樣東西,
沒錯,那就是資料庫!
資料庫的重要性就不用我在這里強調了吧?
無論你學習什麼技術,資料庫都是必備品。
作為Java程序員,我們不是DBA,我們沒有必要掌握太多的資料庫的管理知識。
我們只要知道如何連接資料庫進行訪問和CRUD操作,並對一些地方提高效率就可以了。
如創建索引和適當的使用存儲過程即可。

首先,學習什麼樣的資料庫呢?
沒辦法,多了解一點吧...畢竟每個公司用的都不一樣...
目前的4大主流資料庫是必須要學習的:
DB2(IBM號稱世界上用的最廣泛的資料庫,不過近些年已被MySQL慢慢侵蝕掉了.但是很多的大公司在用,畢竟是IBM啊。)
SQLServer(當年憑借SQLServer2000獲得很大成功,由於和Microsoft的產品兼容很好,所以很受歡迎。)
MySQL(真正的輕量級啊...而且是低端的主流開源資料庫,使用量已經超越DB2。)
Oracle("甲骨文","神諭","聖賢","哲人"...光是對Oracle這個單詞的翻譯就可以看出它多麼擁有實力。不過大的有點誇張...)

好了,如果你已經會簡單的使用上面的資料庫了,那麼就繼續往下吧:
既然要訪問資料庫,那就離不開JDBC!
JDBC相信大家都知道,它只是一組介面,然後由不同的資料庫廠家去實現,
這樣用JDBC訪問資料庫的時候方法其實都是一樣的,這里我就不多說了。
另外JDBC是將來ORM的底層實現,學習好了它,對ORM框架的實現就更為清楚原理。
下面重點要說說SQL語句。
SQL有2套標准(82和99),我不太確定...記得不太清楚了...
現在的資料庫基本這2種都支持。
但是問題來了,不同的資料庫,又對其改變了一點...
這是最令人頭痛的...
也就是說,4種資料庫,你就要記住4種SQL的區別是什麼,雖然大體差不多,但是還是要區分開來的。
而且不同的資料庫,對SQL語句又有不同的優化。
也就是同樣的SQL語句在不同的資料庫上執行的效率不同。
所以SQL語句也是一門必修之路啊...
而且不要看似簡單,其實要想寫出一條高效率的SQL語句很難啊...
尤其是在復雜的多表聯合查詢中,這種效率問題一定要考慮。
另外,最煩人的莫過於資料庫程序設計。
每種資料庫有自己的語法。如SQLServer里的T-SQL,Oracle里的PLSQL等...
使用這些語言編寫觸發器,存儲過程等...自我感覺是最頭疼的...而且用的不多...
了解一下就好...

好了,當學習完資料庫.我們就可學習web開發了.
所謂的web開發,就是基於瀏覽器/伺服器(B/S)的開發。
那麼既然是在瀏覽器上跑的程序那麼就離不開HTML、CSS、JavaScript、DOM等網頁技術。
所以下一步就是學習HTML,HTML應該是最簡單的標記語言.很容易就能學會。
根據web2.0的標准,XHTML將是規范。
所謂的XHTML其實和HTML4.0的規范差不多,就是標簽的要求更加嚴厲了。
學習HTML的同時還要一起學習CSS,這個東西說簡單,也簡單,說難也難。就看你個人了。
但是畢竟我們不是美工,只要了解就好了。(有時我就在界面上消耗了很多時間...郁悶...)
JavaScript我個人建議還是要稍微花點功夫研究一下的...
畢竟後面涉及到Ajax和用戶體驗等方面需要用到它...
它是一門客戶端腳本語言,即:瀏覽器解釋執行。
是一種弱類型語言,但是研究起來還是很深奧的...
至於DOM本人還沒有花時間研究過,不敢輕易下結論.

當完基本的網頁技術後,就可以進入正題,Java在internet上的應用就從這里開始:
前面學習了網頁技術後,我們就可以做出簡單的靜態網站。(即:沒有與資料庫交互.)
靜態網站由後綴名為.html或.htm結尾。
但是靜態網站是毫無用處的,所以我們要開發動態網站。
最古老的技術就是CGI(通用網關介面).
它根據瀏覽器端的http請求激活響應進程,每一個請求對應一個進程。(注意不是線程,是進程!)
當同時有很多請求時,程序擠占系統資源,造成效率低下。
目前流行的動態網頁技術有:ASP、JSP、php、ASP.NET等...
這里我就不一一介紹他們了。關於他們的對比,網上比比皆是.
而今天的主角就是JSP!

JSP是什麼?說白了就是在HTML里嵌入伺服器端可執行的Java代碼。
這里的Java代碼和前面所說的Java代碼是一樣的。
這里要注意的是jsp最終會轉換成servlet。
所以學好Jsp就要先學習servlet。
與applet對應,servlet顧名思義就是伺服器端腳本。
這里是學習的重點。
其他的也沒什麼好講的。

這里要掌握幾個概念:servlet容器,IDE,taglib,DAO,MVC等...
servlet容器,就是解釋執行servlet代碼的地方。
IDE,前面我都沒有提過,也就是因為前面的學習都很簡單,並不需要IDE的支持。
而接下來的開發會比較復雜,文件數量的增多和管理會很麻煩,而且很多的API不可能都背下來。
所以這里就是使用IDE的時候了...至於用什麼IDE本人覺得無所謂...
(我用的是最普遍的Eclipse,當然你也可以用NetBeans6.0以上版本.我覺得也很不錯。)
taglib,這里用的比較少,以後學習框架用的比較多.
DAO,很重要。它的實現方式多種多樣,值得研究。
MVC,很重要。但是重在理解,理解為什麼要用MVC。
最後關於Http協議,Servlet容器里的線程池的實現等...
這些如果你有能力和時間就去看看...沒有什麼壞處...

學到這里,可能中間你會用到另一門技術XML!
作為java程序員來說,我覺的只要了解XML原理就可以了。
不可能還讓你去寫scherma或DTD的...
所以我們只要學習讀寫XML就可以了...(JDOM或DOM4J)

下面在來簡單的說說ajax...
當你程序要求你在不刷新頁面的情況下讀取數據並顯示,這是就是ajax的勇武之地.
如果你之前的javascript沒有學的特別的牢固,也沒什麼關系,用框架吧。
所謂的ajax框架就是一個javascript的庫。它簡化並對javascript封裝。
常見的ajax庫有很多,這可以根據情況自己選擇學習。
(dojo、prototype、jquery、dwr、ext等...)

等學習到了這里,你已經可以獨立的開發一個簡單的網站了。
但是,這里有很多的問題:
1.代碼量大
2.開發時間長
3.系統擴展性差
4.雖然用MVC分層,但是JSP+Servlet+JDBC這種開發方式難以維護。(尤其是JSP里有大量代碼,像ASP那樣)
5.理論上不OO
6.效率低
7.安全性低
等等...
短短一時間我就能想到這么多的不足,證明這離企業級開發還有很大的差距.

那麼正真的企業級應用是什麼呢?
JavaEE的本質就是為了企業級開發...
可惜,至今還未能領悟JavaEE的核心思想...
但從技術角度,JavaEE擁有哪些技術呢?
貌似太多太多...EJB是JavaEE的核心思想...感覺有點類似.Net框架...即:一個框架包含所有功能.
可惜一直沒時間學習過EJB...
所以我下面要講的是如何針對上面的不足加以改進?
1.代碼量大就造成"開發周期的延長"。而且自己寫的代碼有時會有漏洞,或效率上的問題。(如果你不是專家的話)
所以要解決這個問題就要引入"框架".
如果引入了框架,那麼有些問題就可以迎刃而解。
1.代碼量的減少。
2.開發周期的縮短。
3.效率提高一點。
4.安全性提搞了一點。
畢竟人家是頂尖的專業人士,寫出來的代碼肯定比自己寫的健壯又高效。對嗎?而且又可以減少代碼量。

框架分很多種,就像上面的ajax框架一樣,它也是一種框架。
下面就列出一些流行的框架:
MVC框架:Struts1.x,Struts2.x,JSF,webwork等...其中最令我期待的是struts2.
ORM框架:Hibernate3,Ibatis,jpa等...其中最令我期待的是JPA.
AOP框架:Spring2.5 貌似現在只流行這個...AspectJ都沒人提...
至於EJB里的,我不太了解...
但是至少上面的是主流.如果遇到非主流...也就算我倒霉...再學唄...
至於系統擴展性和維護性差是系統架構的設計問題.
這個問題不是我在這里一句兩句就能表達清楚的。
(前些日子搞了個泛型DAO模式,都研究了很久)
UML和design pattern是需要經驗的...

在學習這些框架的過程中會有很多意想不到的事情發生...
再深入學習就是webservice和分布式了...
感覺我還沒有觸及到那個層次...
還差的遠呢...不過慢慢來吧...

今天說了那麼多就是想知道做為一個java軟體工程師.到底需要哪些技術?
我很需要自我反思...
可能我今天說的都只是皮毛,也有很多欠考慮的地方...希望朋友指出...
也可以給我意見...
也許我看問題不全面,或是有偏見,也歡迎指出。

⑷ 程序員分哪幾種,分別要學什麼知識,工資怎麼樣

一、程序員的分類

程序員從事的人群很多,分工也不相同,從大的方面可以分為以下幾類:asp程序員、delphi程序員、php程序員、powerbuilder程序員、C程序員、linux程序員、net程序員、vb程序員、java程序員、javascript程序員、C++程序員、Python程序員、ABAP程序員、android程序員、iOS程序員。

二、所學的知識與必備技能

1、熟練開發軟體

做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發工具,C/C++以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C++編寫。而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具之一。其次,能掌握一種簡便的可視化開發工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。

2、熟悉資料庫

很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。

3、了解操作系統

要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。要懂得網路協議TCP/IP。網路技術已改變了軟體運行的模式,從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。要明白DCOM/CORBA/XML/WEBServices存在的意義。DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規范。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。

三、薪資待遇

程序員的薪資待遇分檔次,大致情況是這樣的:
初級軟體工程師(0-3年開發經驗),平均月薪(3000-8000)
中級軟體工程師(3-5年開發經驗),平均月薪(5000-12000)
高級軟體工程師(5年+開發加2+管理),平均月薪(10000-90000)
一般只有剛畢業的初級工程師說的是月薪,中高級基本是年薪。
也有剛畢業就簽的年薪的。這個是大致范圍就這樣,也有少部分低於3000或高於90000的 具體差別要看自己的,畢業院校,專業學歷,專業能力,外語能力,職稱等級,綜合能力,以及所在城市還有自己的選擇等。但最主要的是看專業能力的。

⑸ 程序員必備知識有哪些

根據軟考程序員職稱的考試內容,我們可以得出,程序員需要具備以下的知識。但這些只是基礎,還要不斷擴展。
計算機硬體基礎知識。
1. 計算機科學基礎。
1.1數制及其轉換。
二進制、十進制和十六進制等常用數制及其相互轉換。
1.2數據的表示。
數的表示(原碼、反碼、補碼表示,整數和實數的機內表示方法,精度和溢出)。
校驗方法和校驗碼(奇偶校驗碼、海明校驗碼)。
1.3算術運算和邏輯運算。
計算機中二進制數的運算方法。
邏輯代數的基本運算和邏輯表達式的化簡。
1.5常用數據結構。
數組(表態數組、動態數組)、線性表、鏈表(單向鏈表、雙向鏈表、循環鏈表)、隊列、棧、樹(二叉樹、查找樹)、圖的定義、存儲和操作
1.6 常用演算法
演算法與數據結構的關系,演算法效率,演算法設計,演算法描述(流程圖、偽代碼、決策表)
2. 計算機系統基礎知識。
2.1計算機基礎知識。
2.1.1計算機系統的組成,硬體系統、軟體系統及層次結構。
2.1.3 中央處理器CPU。
運算器和控制器的組成,常用的寄存器、指令系統、定址方式、指令執行控
處理機性能。
2.1.4 主存和輔存。
存儲器系統。
存儲介質(半導體、硬碟、光碟、快閃記憶體、軟盤、磁帶等)。
主存儲器的組成、性能及基本原理。
Cache的概念、虛擬存儲的概念。
輔存設備的類型、特性、性能和容量計算。
2.1.5 I/O介面、I/O設備和通信設備。
I/O介面(匯流排、DMA、通道、SCSI、並行口、RS232C、USB、IEEE1394)。
I/O設備的類型和特性(鍵盤、滑鼠、顯示器、列印機、掃描儀、攝像頭,以及各種輔存設備)。
I/O設備控制方式(中斷控制、DMA)。
通信設備的類型和特性(Modem、集線器、交換機、中繼器、路由器、網橋、網關)及其連接方法和連接介質(串列連接、並行連接,傳輸介質的類型和特性)。
2.2 軟體基礎知識。
2.2.1 操作系統基礎知識。
操作系統的類型和功能。
操作系統的內核(中斷控制)和進程概念。
處理機管理、存儲管理、設備管理、文件管理、作業管理、漢字處理。
2.2.2 程序設計語言和語言處理程序基礎知識。
匯編、編譯、解釋系統的基礎知識。
過程(函數)調用。
2.3 網路基礎知識。
網路的功能、分類、組成和拓撲結構。
網路體系結構與協議(OSI/RM,TCP/IP)。
2.4 資料庫基礎知識。
數據模型,ER圖。
數據操作(關系運算)。
資料庫語言(SQL)。
2.5 多媒體基礎知識。
多媒體基礎概念,常用多媒體設備性能特徵,常用多媒體文件格式類型。
3.軟體開發和運行維護基礎知識。
3.2 軟體需求分析、需求定義及軟體基礎知識。
結構化分析概念(數據流圖(DFD)、實體關系圖(ER))。
面向對象設計、結構化設計基礎知識。
模擬設計、代碼設計、人機界面設計要點。
3.3 程序設計基礎知識。
結構設計程序設計,程序流程圖,NS圖,PAD圖。
程序設計風格。
面向對象設計基礎知識、可視化程序設計基礎知識。
3.4 程序測試基礎知識。
黑盒測試、白盒測試、灰盒測試基礎知識。
4. 安全性基礎知識。
安全性基本概念。
加密與解密基礎知識。
5. 標准化基礎知識
標准化基本概念
6. 信息化基本知識。
有關的法律、法規要點。
7. 計算機專業英語。
考試科目2:程序設計。
1. 內部設計
1.1 理解外部設計。
1.3 物理數據設計。
確定數據組織方式、存儲介質,設計記錄格式和處理方式。
2. 程序設計。
2.1 模擬劃分(原則、方法、標准)。
3. 程序實現。
3.1 編程。
編程方法和標准。
程序設計語言的使用。
4.程序設計語言(C語言為必選,其他語言可以任選一種)。
4.1 C程序設計語言(ANSI C標准)。
程序結構,語法,數據類型說明,可執行語句,函數調用,標准庫函數,指針。
4.2C++程序設計語言(ANSI C++標准)。
C++和面向對象程序設計,語法和程序結構,類、成員、構造函數、析構函數、模板、繼承、多態。
4.3Java程序設計(Java 2)。
語言機制(程序結構和語法,類、成員、構造函數、析構函數、繼承、介面)。
4.4Visual Basic程序設計(Visual Basic 6.0)。
用戶界面設計。

⑹ 作為一個合格的程序員需要掌握的知識

1寧專勿多
我認為,在學習技術時,不應該把面鋪行太廣,不要試圖把OS,語言,資料庫,設計等都掌握了,一個人的精力是有限的,不可能也沒有必要去學習那麼多的技術.'這方面想的多了,那方面必竟就想得少了'.另外,技術在某方面是相通的,比如Java和C.所以,我認為,在學習技術時,可以根據自己的情況結合公司以及技術本身(最好選主流技術,而不要先已經過時的.比如,就是公司需要,也最好不要再學VFP)的情況,選取一種或者兩種主流技術當作自己學習的核心技術.然後深入進去,在學習的過程中,最好做一些小項目或者向一個技術高手學習.這樣是很有必要且很有效的.想必大家都深有體會.這樣,用不了三年,你就會成為一種技術領域內的專家.
2選取什麼樣的技術
技術可以分為兩種:一種是一些高深的技術,直到現在也在研究和探索中,或者存在爭議.雖然絕對華麗且時髦,卻不一定實用.比如:UML.WebService等,到底有多少公司和人能夠理解它並完全用於項目中?不得而知.到底哪一種分析設計更適合我們?RUP?我覺得這些都需要時間去驗證.而且它本身是否完善也許仍是一個問題.所以,我認為這種技術適合那些對技術有狂熱的興趣,本身又有很高的悟性,且有條件(公司需要學,或者有一些培訓機會),則可以去學習這種技術,如果掌握以後,肯定會站在技術的前沿.而個人待遇也會有很大的前進,掌握這種技術對個人能力要求比較高.所以,在選取這樣的技術時,要結合自身條件.也就是你能不能學會.
第二種是成熟的技術,大家都在應用,且能夠解決公司或者個人所面臨的一系列問題.比如:delphi,java,pb,sql server等等,這種技術發展到今天,已經非常成熟和完善,而且學習的資料全面,易於掌握.所以,如果你注重應用的話,可以選取這種技術.就像上面的文章中提到的:"單純的技術,無論如何先進,如果不能給企業帶來好處,都沒有任何意義;同樣是技術,無論多麼原始和落後,如果對企業來說足夠用,能帶來好處,就應當採用".所以.選擇這樣的技術在以後的幾年裡,仍然有很多用武之地.如果能夠精通的話,待遇方面也不會低多少.
3從技術轉入管理
現在看到很多人在談論技術人員在超過35以後能不能編程,擔心自己過了35就會失業.其實這完全是沒有必要的,據我了解,國外超過35的程序員是非常多的.而國內之所以出現程序員很少有超過35的是因為,在國內,程序員這個職業起始於上世紀90年代初,而當時做這個行業的和今天情況一樣:大多是剛畢業的學生,他們當時不過20多點,那也是國內第一代程序員,他們到今天為至,也很少有超過35的,而且很多選擇了自己做公司,不再親自寫程序.所以,現在國內的程序員很少有超過35的.說了這么多,只是為了說明程序員超過35仍可以寫程序,縱然是這樣,程序員這工作仍然是腦力勞動中工作量很大的一個職業,所以,大家可以根據情況,從技術轉入管理,這樣的話,以後的生活會輕松許多.如果選擇以後做管理的話,那麼現在學習什麼就應該重新選擇了.

⑺ 程序員需要學些什麼

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

程序員需要學習:

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很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。

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


(7)程序員知識結構擴展閱讀:

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

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

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.基礎語言知識 :從底層的ASM 到結構化的C,到面向對象的C++ JAVA,如果不能都精通,但是要了解,至少要精通一門

2.基礎數學知識: 高等數學(數學分析) 線性代數 離散數學,概率.數理統計等等

3.基礎計算機原理:操作系統原理,微機原理,編譯原理 資料庫原來等等

4.看你感興趣的學習一個方向:圖形學...windows應用程序開發...Linux程序開發,資料庫方面 網路編程,等等
----------------------------------------------------------------------
如果只是想快速編軟體:
敬告:這樣不會成為一個真正的高手!

比如windows平台的編程:<這里僅僅是比如>

學習C語言(熟悉結構化編程)->《windows程序設計》(學習windowsAPI知識) ->可以用API進行編程了。
但是現在用純API編程幾乎絕跡。不是淘汰,因為商業用要盡快成為軟體好賣,API開發會消耗程序員大量時間,但是API是基礎。

或者
學習C++語言(熟悉面向對象技術)->《MFC程序設計》(學習MFC編程)->MFC開發 -> MFC應用比較廣

.net技術我沒有接觸過。現在正流行這個,等樓下的給你介紹吧!
------------------------------------
相比較而言,用DELPHI最省事。但是你要了解Object Pascal語言,這個編程工具是以這個語言為基礎的。Delphi開發也是很不錯的。
-------------------------------------
以上只是一個建議,學習不可能簡單,而且路子不一樣,上邊提到的兩windows書,是微軟出版社,在這個方面最權威的書。

閱讀全文

與程序員知識結構相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:579
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143
新預演算法責任 瀏覽:444
伺服器如何處理5萬人同時在線 瀏覽:251
哈夫曼編碼數據壓縮 瀏覽:426
鎖定伺服器是什麼意思 瀏覽:384
場景檢測演算法 瀏覽:617
解壓手機軟體觸屏 瀏覽:350