㈠ 如何系統的學習JAVA
玩Java多年的老司機帶你上車全面系統學習Java,並且還能教你如何學習才能在今年拿到一份不錯的offer。
說到系統全面,就是以目前絕大部分公司招聘要求的知識內容為基準,畢竟我們學習Java都是為了高薪工作,《史記》中說」天下熙熙皆為利來,天下攘攘皆為利往「,為了高薪工作而學習Java技術,這都是人之常情,也是大部分人奮斗的目標。
我們先看看市場上招聘Java程序員都需要哪些技術:

二、資料庫篇
資料庫是學習Java語言必學的一項內容,常見的資料庫就是MySQL和Oracle這兩種,作為初學者一般都是學習MySQL為主,一般情況下中小型企業都會選擇MySQL資料庫,比較大型的互聯網公司會選擇用Oracle,而學習Oracle相對於MySQL也要復雜一些,建議是主要學習MySQL資料庫,Oracle作為了解即可。學習資料庫較為簡單,基本的操作就是增刪改查。
三、Web開發
Web前端內容:HTML/CSS/JavaScript/(前端頁面)
注意:Java後端開發可以不用過多關注HTML頁面及CSS的處理,但是最起碼要會用簡單的HTML,JavaScript是必須要會的,因為Javaweb後端程序員畢竟要接觸使用AJAX方式處理數據及顯示。當然如果只關注伺服器端實現而不考慮任何用戶界面,則HTML、CSS、JavaScript都不用關注,但是完全脫離前端的開發現在雖然也不少,但是絕對不關心前端是不可能,尤其是JavaScript,但是前端卻可以完全不關心伺服器後台的任何實現。
推薦學習書籍:《JavaScriptDOM編程藝術》(第二版)
這本書作為被大家推薦的最多的前端入門書籍是有道理的。他能真正讓大家了解dom腳本編程,或是說前端編程技術背後的思路和原則。對於初學者來說,這本書沒有任何門檻,按部就班跟著書籍實例編寫代碼即可。我們會知曉如何對瀏覽器元素操作和掌控,會學會如何實現簡單的頁面效果。這種簡單易得的成就感是一個編程語言入門時最難能可貴的體驗。
JavaEE內容:Servlet/JSP
雖然現在網上在傳JSP很少用了,可能是被一些模板或JSAJAX方式代替了一些,但是我認為還是應該接觸一下,萬一要用到不會怎麼辦,而且它是JavaEE的動態網頁實現標准組件。學習JSP過程也能更好的幫助我們理解web會話的過程,掌握web會話都有哪些我們必需知道的。如果學習Javaweb、JSP都不接觸那就相當於學習使用Springboot而一點不接觸SpringFramework一樣,豈不是稀里糊塗。包括開發Javaweb我們必需知道的概念諸如Web應用上下文,請求對象,響應對象,HttpSession,Cookie等都是在接觸學習JSP和Servelt中體現的,還有一些比較少見的EJBJSFJMS以及JavaFelix等。
一些初學者不清楚這些難免會有誤區,尤其是有些較成熟的工程師也這么說,我只能說他們很無知,只是代碼機器而已,其實對於應用開發設計也就稀里糊塗,人雲亦雲罷了。
永遠沒有被淘汰的技術也沒有永遠流行萬能的技術,要看在什麼環境和場合應用,符合我需求的技術和工具就是好的,就是對的。
四、高級框架
1、Springframework核心IOC容器
2、Springboot在Spring基礎上的更全面提升效率的Spring工具
3、ORM框架當今流行使用較多的是Mybatis和MP(Mybatis插件),Hibernate是可選性學習的
4、模板技術,比較成熟的Freemarker
5、SpringCloud微服務框架,SpringCloud提供的全套的分布式系統解決方案。
五、工具
maven是構建管理項目的工具,svn和git是團隊協作開發的項目源代碼及相關文檔資料管理工具,需要學習者初步掌握其應用。
像Tomcat,jetty,resin,JBoss,GlassFish等都是部署運行Javaweb應用的伺服器。
以上就是初學者大概學習的內容,我是盡量站在初學者的角度來說的,沒有寫得特別復雜,怕初學者看不懂,沒有實質性的幫助。所以我盡量用白話把話說的簡單一些,給大家羅列出主要學習的Java知識點。
知道了Java要學習的大概內容,下面就是怎麼才能用最好的方式把Java學好,從而達到就業的水平,首選我們應該了解一下目前想要達到找到工作的水平,應該是怎樣的。如果大家對於學習Java有任何的問題,關於如何提升學習Java以及學習方法、學習技巧、快速達到就業的技術水平,都可以隨時來問我,這是我建立了5年的Java學習交流裙,前面三個是494,中間三個是801,後面三個是931。 有不懂的問題可以隨時在裡面問,需要Java各個階段的學習資料也可以在裡面進行下載。
Java學到什麼程度才能達到就業的水平:對於大多數初學Java的同學而言,最關心的莫過於我學要學習哪些和學到什麼程度才能找到相關的Java研發工作崗位。
不同的軟體公司對研發人員的水平要求存在一定的差異,如果從大多數中小型企業來看能接受一個入職到本企業的IT技術人員通常需要具備以下能力。
1理解掌握Java核心面向對象的設計思想和代碼構建,能以面向對象方式設計編寫業務功能;
2熟練掌握至少兩種資料庫的開發,如Oracle,mySql,能熟練編寫基本常用及高級的SQL語句;
3必需掌握並熟練應用SpringframeworkIOC容器,深入了解IOC及AOP概念並應用,使用MVC實現對web請求做出處理;
4熟練掌握Java處理資料庫的ORM框架myBatis,JDBCTemplate,對Hibernate也應有所了解;
5熟練應用Spring增強工具集合Springboot;
6至少熟練使用Eclipse及IDEA集成開發工具構建應用程序;
7能夠基本掌握MVNGITMaven在項目中的使用;
8前端開發必需掌握JavaScript和常用的JS框架
以上這些都是中小型軟體企業的入職基本要求,如果你能夠達到這個水平,找到一份Java工作應該是不難的。
推薦的學習方式:系統視頻教程+書籍輔助+有人指導
視頻教程:對於Java初學者來說,看視頻學習也是最普通的方式,視頻教程會把工作中常用的知識進行講解,而且視頻一般都是分章分節,每一個小節都只講一個知識點,學習起來較為明確。但是視頻教程盡量要完整,最好是一整套視頻學習。
書籍輔助:書籍便於對理論知識的補充,以便更容易理解Java面向對象核心設計理念和代碼實踐功能。
PS:但是大部分人都沒有耐心看不下去書,所以大部分人都是只看視頻教程學習。如果自己能看的下去就看,看不下去就不看。
有人指導:大部分人都不可能全靠自己的能力把Java學的特別好,因為你不了解這個行業,也不知道怎麼學,完全零基礎自學Java想要找到工作,概率極低。所以建議如果真的想要做這行,盡量找人去帶帶你,有不懂的問題可以直接請教,少走彎路,提高效率。學習的質量決定以後工作的薪資以及起點,所以還是應該重視起來。
項目的重要性
很多Java初學者看完一些視頻,學過一段時間就說自己「會了」。這里我需要給大家糾正一個問題,希望每個學習Java的知友都能明確學習編程的中心是什麼。其實在我看來,學習編程從來都不存在會不會這樣的說法。學習編程不同於初中學的數學、物理、化學,記住一些公式,做同樣一種類型的習題,就證明類似的題型你會做了。編程只講技術能力是什麼水平、什麼級別的,最能證明技術水平處在什麼階段的,就是在做項目的過程中,研發好的互聯網產品,寫代碼的質量怎麼樣,排錯能力怎麼樣,找BUG的能力怎麼樣,構思功能模塊整體布局的能力怎麼樣等等。做作為初學者想要達到入門的水平,就是自己具備了一些簡單項目的編碼能力,初學者最重要的一點就是培養自己的編程思維,每一個程序都是不一樣的,你不可能都背下來,學編程也不是靠死記硬背的,你只有能去獨立編碼寫一些東西的時候,才有就業的機會。
所以做項目的能力才能去衡量一個學習的水平處在什麼階段,而往往那些嘴上說「會了」的人,往往沒寫過多少代碼,也一個項目做不了出來,這就是紙上談兵,完全曲解了學習編程到底在學什麼,也不知道應該往哪裡去。
所以一個Java初學者在學習的整體過程中,必須要有兩個能拿得出手,能寫在簡歷上的項目作為找工作的資本,並且要對於這兩個項目的前前後後相當了解,才可能最後面試成功,一個初學者在學習完Java所有內容後,如若還達不到可以做簡單項目的水平,那麼他整個學習過程還是白費,沒有達到最終的學習目的,就是學習質量不過關。所以項目的重要性希望大家都明確,因為有太多Java初學者不知道最後學習的目的是什麼,最後白白的浪費時間。
學習心態:
學習編程一定不是一個簡單的事情,換句話說它還是挺困難的,畢竟能出去找到工作,就是少則五六千,多則上萬的工種。這些知識都不是隨隨便便就是任何一個人都能學會的。關於這個學習心態,希望提示大家要把重心放到「學習」這件事上,因為我發現有很多Java初學者都是像「完成任務」一樣去學習,所謂完成任務就是「我把這些視頻看完就能找到工作嗎」「我把這些都學完就能找到工作嗎」學完並不等於「學會」,這是兩種不同的概念。
你到底理沒理解?
你到底能不能應用起來?
你到底用沒用心?
你自己應該是最清楚的,我發現那些把學習當做完成任務一樣去對待的,這樣的人沒有一個是有耐心的,自己在心裡欺騙自己「把這些視頻看完我就能找到工作」,到了最後自己就逐漸明白,完全是自欺欺人,最後放棄說自己不適合學這個。其實揭開這些人的面具真相就一個:他們沒有耐心學習,也不喜歡學習,這是以前經歷造成的,是多年的習慣導致的。
所以正確的學習心態一定是把關注點放到學習這件事本身,你要學會這些知識,這些內容,這些技術,這是需要一天一天逐漸積累起來的,並不是短時間就可以達到什麼結果。
PS:如果你對於學習沒什麼耐心,沒什麼興趣,我勸你不要來學習編程,學習編程絕對是一個耐心的活,也是需要不斷學習和充電的行業。或者說已經到了信息時代,不愛學習的人,很難有耐心去學習知識的人,在信息時代是混不下去的,任何行業都是如此,不學習不進步不緊貼時代的人就一定會被淘汰。
最終自學Java能就業的人基本具備以下幾點:
1、有超強的學習耐心及進取心
2、手不懶,代碼寫的足夠多,熟能生巧
3、有一定的學習能力,善於自學善於自己解決問題
4、可以獨立寫一些簡單的項目
以上內容均由本人手寫而成,完全站在Java初學者的角度來說,就是希望能用通俗易懂的語言讓大家清晰的明白學習Java全面系統的學習內容,以及應該達到什麼程度才能拿到一份Java工作的offer,希望可以給大家帶來幫助。
㈡ 徹底明白什麼才是真正的少兒編程
編程與少兒編程定義區分編程:編程是編寫程序的中文簡稱,就是讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,是計算體系按照該計算方式運行,並最終得到相應結果的過程。為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。少兒編程:少兒編程教育並非高等教育那樣學習如何寫代碼、編制應用程序,而是通過編程游戲啟蒙、可視化圖形編程等課程,培養學生的計算思維和創新解難能力。例如學生在製作一個小動畫的過程中,自己拆分任務、拖拽模塊、控制進度,從而理解「並行」、「事件處理」、「目標實現」的概念。現在重點說一下少兒編程概念少兒編程教育是區別於成人編程教育,針對3到18歲的青少兒通過寓教於樂的方式來學習編程語言,基於可視化圖形編程工具和基礎編程語言構建在線編程學習平台和開源硬體平台,讓孩子通過可視化圖形編程、代碼編程和機器人編程培養動手能力,邏輯思維能力,計算能力等,學習編程來串聯各個學科。其屬於素質教育的一個分支,也是國家在基礎教育階段針對AI教育領域下的提前布局,最終達到讓孩子成為全科型人才。少兒編程教育是STEAM教育下的一個新賽道,被稱作K12賽道最後的金礦。通過STEAM教育的學習,建立理論知識框架,最終通過結合創客教育的理念進行理論知識輸出,提高實踐能力。作為教育領域下的黑馬賽道,編程教育也因其能夠通過融合各個學科,培養孩子科學素養和實踐能力而受到家長的重視。編程教育不只是讓孩子擁有編程的能力,而是通過編程的學習提升數字素養,培養信息意識,形成學科融合的能力;編程化計算思維的建立,為解決實際問題提供更富邏輯化的思路,最終能夠實現技術創新,並且能夠體驗技術實踐。編程課的學習,使孩子的邏輯思維、數學理解、英語興趣、嚴謹理念、解決問題能力、動手能力和創造力都會有不同程度的提高,以期提升個人未來競爭力。

㈢ 什麼是編程,如何編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。
1、C語言
如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。
C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。
正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。
缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。
移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。
用C語言編寫的游戲:非常非常多。
資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group's C Primer Plus》。
2、C++
C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。
C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。
我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。
優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。
使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。
資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。
最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。
優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適於心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最後,在1996年,Borland發布了它的「Visual Basic殺手」— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優點:易學、平台相關的運行(Dephi)非常好。
缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。
移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual Basci 1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經過六個版本,Visual Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。
優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已准備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。
移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。
優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。
缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。
使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。
8、創作工具
上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。
「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用 3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。
多數創作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優點:快速原型 — 如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。
缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。
移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。
使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易語言
★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設計和程序流程編碼。★中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。★參數引導技術,方便程序語句參數錄入。★無定義類關鍵字。所有程序定義部分均採用表格填表方式,用戶無需記憶此類關鍵字及其使用格式。★命令格式統一。所有程序語句調用格式完全一致。★語法格式自動檢查。自動檢查並提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。滑鼠停留立即顯示相關項目提示。編程時提示語法格式,調試時提示變數當前內容,隨時按下F1鍵可得到與當前主題相關詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發環境。集界面設計、代碼編寫、調試分析、編譯打包等於一體。★學習資源豐富。詳細的幫助文件、數十兆的知識庫、數萬用戶的網上論壇、教材已出版發行……
10、結論
你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。
㈣ 怎麼去學習編程c語言,我沒有一點數學基礎 還有就是看不懂裡面的代碼 需要怎樣去學 謝謝!
一、C語言是最值得學習的語言
學習C語言,首先要明確地告訴自己:C語言是世界上最值得學習的語言。
如今決定學習任何一門其他語言之前,都要先考察這個語言有什麼成功項目嗎?唯獨C語言沒有必要問,因為世界上所有最最重要的的系統中,都必然有C語言的身影。比如操作系統內核、高級語言底層等等。
為什麼C最適合擔任系統核心?主要原因可能是C語言具有和匯編語言的對應性,一條C語言代碼,對有經驗的人來說,可以轉換為一條或多條匯編代碼,也就是說編譯結果具有可預測性。C代碼不會在被編譯時被加上奇奇怪怪的修飾,也不會在二進制兼容性方面帶來大問題。這種穩穩當當的語言,一切都在掌握之中,一切榮耀歸屬於coder,一切錯誤也歸罪於coder。
學習C語言的同時,就自然而然的理解了硬體與操作系統的淺表一層。比如int有幾個位元組的問題,已經是QQ加群驗證是否是程序員的一個標准了(笑),這從側面說明了學習C語言時確實會關心底層軟硬體的實現。C語言簡單的基於值類型的數據類型體系(引用靠指針,指針本身也是值類型),保持了和硬體底層的一致性(即內存、緩存、寄存器只能保存值),不會出現其他語言比如C#那樣既有值又有引用反而對理解底層實現製造了障礙。
從某些角度上講,C語言從設計上來說並不是為了讓我們更好的寫邏輯代碼而設計的,它真的是「只能是這樣」,沒有對錯好壞之分。因為計算機體系結構就是這樣的、匯編就是這樣的,所以C語言大致也只能是這樣的,誰也不能隨意捏造它。它足夠簡單,評論它的設計優劣意義不大。
廢了這么多口舌,是為了堅定思想,端正態度,只有抱著「最好」的態度,才能排除雜念,勇往直前。時代在進步,某些東西易逝,而另一些東西持久。很多編程大師都用親身經歷告訴你,C語言永遠值得用最純粹的態度去學習。
二、學習C語言的初步路線
我們說學習任何東西,都有先把書讀厚,再把書讀薄的過程。也就是說,先學習大量知識和細節,然後總結歸納、提綱挈領,就徹底掌握了這門知識。
而學習C語言,一開始就不那麼厚 : ) 。大道至簡,只需一本:
<img src="https://pic2.mg.com/50/v2-_hd.jpg" data-rawwidth="286" data-rawheight="337" class="content_image" width="286">
賞析一下書中前幾個問題:
第1章 正則表達式匹配器
第2章 Subversion中的增量編輯器:像本體一樣的介面
第3章 我編寫過的最漂亮代碼
第4章 查找
可能是知識結構不足,本書後面的例子我讀起來有點不清晰。對C語言學習者來說,前幾個例子非常值得一讀,可以迅速意識到自己的不足並迅速成長。本書建議先找電子版試讀。
PS:關於C語言開發環境
1、Windows平台,請使用Dev-C++。不要用Visual Studio,對C語言支持不完整。
2、安裝Linux虛擬機,桌面版本的,比如Ubuntu,現在貌似「深度Linux」挺火,沒試過。
三、關於進階
C語言的進階會遇到兩個主要問題:
1、明白基礎以後,缺少大量練習。而大量練習本身會非常費時間,因為在顧及語法的同時要顧及邏輯問題,捉襟見肘。這時候的初學者,邏輯抽象能力和語法使用都是半吊子,非常難受。
2、閱讀代碼方面,C語言的成熟工程代碼一般會比較冗長,函數中間夾雜著很多宏和指針操作,我閱讀的感覺是讀後面忘前面,非常難入手。如果不明白某個函數的功能,強行將其讀懂非常費時費力,容易放棄。
這樣一來,學完基本知識之後的進階之路真的非常陡峭。
我個人大膽給出C語言進階的一個相對緩和的路線:
1、實現鏈表、可變長數組、哈希表等基本數據結構,實現方便的string結構體。然後大膽的用在自己寫的程序中。不要怕寫的有BUG,也不要怕效率不高。現代編程中容器是非常關鍵的武器,沒有容器寸步難行。而編寫容器時會練到封裝、指針、內存分配,都是C語言進階時極其重要的方面。
2、如果工作學習中用到C語言就再好不過,比如現在很多本科、碩士畢業論文都要用C語言實現,那麼這時候抓住機會多練練,是最好的。
3、嘗試ACM競賽題,ACM競賽和OnLineJudge平台,比如
http://tyvj.cn/
類似有很多,北大、北郵這種大學都有類似的網站,上面不僅有題目,還有演算法、有答案、有提示,還能直接在網頁上做題。刷題可以獲得及時反饋,一旦你AC了3道題,那種成就感可以讓你繼續下去,哈哈。不過除非你興趣就是演算法本身,那麼刷30道題基本就可以了,畢竟這種刷題會猛烈地提高演算法能力,但是對架構能力的提升幾乎沒有任何作用,對大多數人來說不建議刷太多。
4、非常重要的私貨:如果除了做練習題以外沒有練習機會,那麼請把C語言放一下,快速學習Python(首選)、Lua(次選)、JavaScript(或TypeScript更好)等能夠立即實現功能效果的語言。學習好的動態語言有兩方面好處:
第一:表層來說,能迅速提高邏輯代碼的編寫能力。用C語言構思半天才能寫一點的功能,用動態語言會快速的多,動態語言將我們從內存分配、容器等基本問題中解脫出來,直接實現我們想要的效果。用動態語言實現之後,可以用C語言仿寫這些邏輯代碼,相當於按圖索驥,直達目的。
第二:深層來說,較高級的語言對底層的語言編寫有強烈的指導意義。我個人在工作中使用C++用了很長時間,但是總感覺遇到瓶頸無法突破。直到我學習了Python,寫了一兩個比較復雜的工具,從另一個角度突破了邏輯設計的屏障,才感覺到編程水平有了明顯提高。
第三:在掌握了Lua或Python後,再找資料一邊學習一邊看Lua和Python的C源碼,對提高C語言水平有實質性的幫助。
這里舉一個簡單的例題:一個文件中有很多對ID和欄位,這些ID和欄位對分別代表另一個文件。而另一個文件內容可能會鏈接到更深一級的文件。怎樣讀取這些文件組成一棵樹呢?
這個問題對能力達到一定水平的人是基礎問題,而對於初學者來說可能是一個門檻。這種問題我的建議是用Python或Lua的表、字典來解決,然後理清思路之後,改寫為C代碼。