導航:首頁 > 程序命令 > 程序員小白第一天

程序員小白第一天

發布時間:2023-03-08 13:42:03

程序員入門應該怎麼學

如果是想通過自學的方式、而不是上外面的各種培訓班的方式來學習編寫程序的話(在這里以 C 語言為例),那麼最、最簡單易行的方法就是:在自己的 WINDOWS XP 系統下面,安裝一個 Microsoft Visual Studio C++ V6.0 編程環境。然後再購買一本難度適合自己的 C 語言教材,按照教材上面的每一章例題、以及每一章後面的練習題,親自把書上的每一個源程序輸入到電腦中,親自上機編譯、體會、調試通過、並運行每一個源程序。只有這樣,你的編程水平才能夠在一個較短的時間內,有一個較大的提高。

但是在這里有一個問題必須要注意的就是:任何一種高級語言(C、C++、pythonjava等)都只不過是一種編程工具而已,如果將來希望能夠勝任大型軟體開發工作,那麼還必須要學習計算機軟體專業的相關課程,例如:計算機操作系統、數據結構(各種排序演算法、以及查找演算法)、計算機演算法及其復雜性分析、各種數學知識(主要用於在大型的軟體項目中進行數學建模)等。否則的話,即使掌握了高級語言的編程,那也只能夠編寫一些小程序,絕對無法勝任大型軟體的開發工作。

㈡ 小白如何成為程序員

學唄。想成為程序員,無非就是學習計算機編程語言,學習編程唄,現在互聯網上的編程教程一搜一大把,編程應該如何學、怎麼學和資料都不是什麼秘密,任何人只要想學的都可以馬上開始了。
如果心裡沒譜,可以參照我寫的Java學到什麼程度可以找工作。

㈢ IT培訓分享剛入行的程序員小白如何才能快速成長

每個大牛都是從小白成長過來的,對於剛剛步入職場的程序員來講,面對身份的轉變和還未熟悉的工作,都難免會有不適應,對自己未來的成長也會比較迷茫。

No.1

大部分的程序員從小白到大牛都是要經歷一個循序漸進的過程,沒有一蹴而就的成功,程序員的成長也是分階段的,而每個階段的側重點又都不一樣。

很多人總想一口吃成胖子,可往往就是這種急躁的心理,反而使得自己更難靜下心來夯實基本功,適得其反。

要知道,成長從來就不是一件簡單的事情。那麼對於IT小白來說,IT培訓http://www.kmbdqn.com/介紹怎樣才能在更短的時間內成長為一名優秀的程序員呢?


No.2

首先,要制定詳細而明確的階段性目標。工作時如果有一個目標,會幫助你找到努力的方向,對自己的事業發展也很有幫助。而越詳細、越明確的目標,其可實施性就越高,這也能使你找到短期奮斗的動力。

其次,要利用空閑時間多學習。技術實力始終是一個程序員能否往前走的關鍵,沒事的時候多看代碼,保持對代碼的敏感度。只有看的多了,琢磨的多了,才能培養出好的代碼審美感。

除了要保持對代碼的敏感度以外,還要讓這種敏感度成為你寫代碼中的利器。因此,你需要勤寫代碼,多做總結,不斷優化自己寫的代碼。

最重要的是,要注重在項目中去鍛煉自己。項目開發是幫助程序員快速成長的一個有效途徑。實踐出真知,只有多實踐,才能發現自己在實際的項目開發中存在的缺點和不足,找出來並及時改正,將為自己積累下十分寶貴的經驗。

No.3

不知道大家有沒有聽說過「空杯心態」?

「空杯心態」簡單來說就是:如果你的杯子是空的,新東西就比較容易進去;反之,如果你的杯子已經滿了,新東西就進不去。

舉例來說,可能會有一小部分自以為是的同學,他們在剛從學校出來時思維較為固化,自己的東西太多,頑固又不肯放棄,新東西自然難以學進去,成長自然就慢。而具有空杯心態的同學,他們會適時清空自己,甚至有意識清除腦中頑固區域,虛心主動學習,渴望更多知識,學到的自然就會多。

因此,要想快速成長為一名優秀的程序員,就要學會保持空杯心態。

隨著技術更迭速度的不斷加快,IT行業對程序員的學習能力要求也變得更高。只有時刻保持對學習的熱忱,保持空杯心態,才能早日成長為一名優秀的程序員。同時,要堅持自律,懂得自我約束。越是在特殊時期,保持學習的自律能力就越重要!


㈣ 零基礎小白如何成為程序員需要學習哪些內容

自學編程沒那麼難。只要是理工科學生,邏輯思維好的朋友,都可以開始編程。這里有六種方法可以和你的朋友分享自學編程。這些方法足以幫助您入門和進階:0.書籍+視頻可能是學習編程最好的方式,對於初學者來說,可以通過視頻+書籍來學習。這兩種方式形成互補關系。編程教學視頻可以幫助你快速掌握編程,但通常比較生動,簡單,不系統。書是系統的,透徹的,枯燥的,所以最好的方法就是把書和視頻結合起來。


5.反復練習。編程是一門手藝,需要反復練習。沒有書和視頻能獨立實現嗎?學習的最終狀態無非就是:我沒有他,但是我的手很熟悉。近年來,IT行業變化很快。我們可以大致感受到我們使用的手機和互聯網產品的變化。我們從原來的非智能手機遷移到iPhone和安卓手機。我們從去網吧買電腦變成了6G內存2GHz的智能手機(已經超過了2010年的電腦配置)。

我們從大型PC游戲轉到了手機游戲。我們的每部手機都有將近100個應用。我們用過很多微信官方賬號,微店,mini 程序和mini游戲。我們從5元3000萬變成了隨時隨地刷小視頻,直播。我們很少用現金,因為我們不得不拿錢包取錢,有時我們想拿出10元錢,但我們真的沒有……豐富的互聯網產品(應用程序、H5、小程序、游戲等)背後。),IT其實是由日新月異的IT技術支撐的。

所以作為程序,你必須不斷學習,學習公司需要的任何技術。工作幾年,堅持學習也不算太累。畢竟經歷了幾年,很多東西都很熟悉。零基礎如何自學編程?成為/kloc-0成員需要具備哪些技能?這些年來,我開發了各種東西,做了各種編程工作。伺服器後端程序已經開發出來,需要幾種編程語言:JAVA、php、Node.js、Python、SQL等。已經開發了PC網頁和H5,需要Javascript,CSS3,HTML5等。開發了一個App,你需要用JAVA,SQL,HTML5。

我們開發了微信small 程序,需要CSS,Javascript,HTML等等。開發過計算機軟體,需要用到C#、Javascript、C++等。為什麼要學那麼多技術?因為不同的編程語言有不同的長處。比如玩游戲,Unity很成熟很快,很多知名游戲都是用它開發的,所以開發游戲的時候幾乎很多公司都在用它,程序會員一定要學。移動APP的開發主要使用JAVA、Swift、OC等編程語言,開發App必須學習這些編程語言。零基礎如何自學編程?成為/kloc-0成員需要具備哪些技能?

沒有接觸過技術開發的人還是不知道為什麼需要這么多編程語言。這么說吧:翻譯跟英國人說話要說英語,跟西班牙人說話要說西班牙語,跟我們說話要說中文。IT技術的編程語言和我們說的語言類似,不同的領域需要不同的語言。說了這么多,大家都知道程序員工在工作中需要的技能,以及會發展什麼。

我再簡單總結一下::程序工作人員必須掌握自己崗位的編程語言。比如做安卓APP,一定要掌握JAVA。一般掌握編程語言是不夠的。為了提高開發速度,還必須了解各種框架和庫。程序員工將發展什麼?會開發APP,網站,電腦軟體,微信程序等等。不過應該說,行業是有特長的,並不是所有的程序工作人員都能開發應用、網站、小程序…有些人只能懂一門技術,但可以是專家,比如資料庫專家。而且這些年我也只是個打雜的,但是各種發展都會...更多的雜工,僅此而已。

㈤ 小白,想入門程序員,應該從什麼開始學,順序是什麼

小白想要成為程序員,首選是選擇一門合適的語言,比如說:Python、Java、C、C++、GO語言等;其次,選擇合適的學習方式,比如培訓,周末班、脫產班還是網路班。
如果完全沒有編程基礎,建議大家學習Python,Python入門簡單、語法清晰、通俗易懂,非常適合零基礎人員。

㈥ 程序員小白如何通過Java面試

1、了解業內招聘要求:多看幾家同類崗位的技術要求,大概就知道用人單位的需求了
2、多找找面試常見技術題:不同企業的面試題各種不同,多去找找,多背背
3、簡歷設計:這個就是要注意在簡歷中體現自己的項目經驗、技術水平
4、面試現場反應:注意自己的著裝、語言表達、技術表達
以上都是在你有專業技術的前提下進行的,如果專業技術就是小白,還是先提升專業技術吧

㈦ 一個什麼都不懂的新手要當程序員該先學什麼

有很多人都喜歡問這個問題,那麼我就再你解答一次。

程序員不是想當就能當,程序員必須要有敏捷的思維能力、堅持不懈的毅力,程序員可以理解為文理科的結合(如果你不是學匯編或者C++的話),你還得要有強大的記憶力(一個程序員不只掌握一門編程語言)。
如果你想學編程,我建議你把基礎學好(包括初中英語和大學以下的所有數學)。演算法是程序的靈魂,只有學好數學,培養邏輯思維,才能寫出優質的代碼。
以下為我推薦的語言,從高到低,推薦等級依次降低:
1、python 現在這門語言的影響力越來越廣,並且他簡單易學
2、Ruby 我知道當我打出這個詞的時候會有很多人罵我,但是請理性,作為一鍾編程語言,我確信他能呆在這個位置
3、PHP 他號稱自己是最簡單的語言(JavaScript也這么說過)
4、C/C++ 是的,這個霸主理應享受這樣的地位
5、JAVA 你也許回問我為什麼把JAVA放在C後面,但我告訴你,C/C++的優良性確實比JAVA好,也許你會覺得C繁瑣,但他很高效
6、JavaScript 這門語言是門對新手非常友好的語言,你可以隨便下載一個編輯器就可以寫,無需編譯,放到瀏覽器內就可以運行
7、HTML5 原諒我把這門最簡單的語言放在最後,說他簡單是因為他只需要記憶。
好了,最後一點,語言無優越。每種語言都有它的好處,但也有他的壞處,最常見的程序就是混合式開發。希望你能抉擇好。

㈧ 程序員要學多久

問題一:自學程序員要多久 你要是一點基礎都沒有的話,你學PHP什麼的看視頻只要努力幾個月就可矗學會了,如果自學JAVA,C++的話就不用想了,我大學上課聽都聽不懂,雖然我也不想學,但有老師比沒老師至少要好多了。如果有一點基礎的話,PHP這種弱語言類型也很容易學的,大概就一兩個月就可以了。但沒有努力再想學也是白搭,而且能看懂學會也不代表會用,程序最重要是會用,這個實踐是最好的老師!

問題二:作為一個程序員需要學多少技能 介紹下我的想法:
大學里學的是計算機專業,所以順道學了不少計算機系的基礎課程,總體來講學得很不好,直到大四畢業,我才勉強下定決心要以寫代碼為生(現在想想,可能是當時實在想不出其他出路)。大學4年,很遺憾的事情就是我沒有弄清楚該去真正學些什麼東西。
畢業後第一份工作,在一家小公司寫servlet/jsp,說實話,我寫的很爛,當時帶我的人對我的工作很不滿意,直到有一次,項目經理跟我談說,你的工作表現你也看到了,差點就被開掉了,不過我覺得還是要在給你機會。。。當時,我真的是自信心崩潰到極致,覺得自己這段時間其實很努力,但為什麼還不入門路。。這次經歷給了我非常大的影響,之後的不久,我終於明白了怎麼去寫那些servlet/jsp,於是我努力的寫那些代碼,不久,我就成了公司新員工裡面,做東西最快的人。當時還發了個公司的什麼最快進步獎給我。我想第一份工作給我最大的感受是,想要做為一個程序員,你得先明白,程序是個什麼東西。
一年多以後,servlet/Jsp實在不想寫了,於是換到另外一家公司,做聊天軟體的J2ME客戶端。其實我當時不懂J2ME,在剛入職的一個月里,啃完CLDC和一些會用到的JSR的英文文檔,然後每天去看項目的代碼,有任何問題就去問周邊的同事。不久,我也慢慢能寫一些J2ME的代碼了。接著,我加入了新版客戶端的項目組,開始做一些UI組建。最開始,我寫一個Text組件,就是把文字顯示到屏幕上,還要根據屏幕可顯示區域的寬度、高度對文字做調整。沒幾天,我就信心滿滿的寫完了這些代碼,原來寫客戶端代碼也不難啊。不過不久,當同事要用我的組件時,問題百出,以至於同事跟經理抱怨說,這么基礎的組件應該給有經驗的人去寫啊。。 這次,雖然我的工作做的很爛,可自信心倒沒受多少打擊,因為已經工作一年多了嘛,臉皮厚了不少。但是我心裡知道,我的工作肯定哪裡出了問題,否則我的組件應該能經受住使用者的考驗的啊。這份工作中,我學到了不少東西,首先呢,臉皮要厚一點,不會就追著去問,其次,沒有想清楚的話,寫出來的東西經不住考驗的。再次,英文資料好像更准確啊。當然還有一些具體的編程技術。
大概又過了一年多,大家都說J2ME快完蛋了,android已經開始大興其道,公司裡面也有人在做android客戶端,可我還在寫沒有前途的J2ME.恰好,qq群里有人發消息說招人,我腦子一熱,扔了份簡歷過去。於是,一個多月後,我就到了新的公司上班,這家公司是一個做手機的廠商,而我也可以參與android的開發。在這個公司的前3個月,基本啥活沒干,除了學習android之外,就是各種培訓和等待。大概待到5個月的時候,我實在坐不住了,我去跟經理說,有沒有活可以給 *** 。經理說我考慮下,不久便安排給我一個項目,讓我去把它維護好了,然後集成到產品裡面。可當我拿到代碼時,傻眼了,2w多行代碼,而且很多地方寫的很復雜,看了好幾天也沒看懂。好吧,不管了,這件事既然是我負責,那怎麼都應該挺住。在接下來的快2個月里,我每天都撲在這兩萬多行代碼里,解決裡面的bug,理解裡面的設計思路、代碼風格、編程技巧,使用公司的工具鏈,從發布、審核到持續集成等等。我了解到了很多我平時不知道的東西,我解決了發現了的所有的bug。可是最終,我並沒有把這個項目維護到可以發布的程度,最後一關的AT&T的穩定性測試宣判了我的這個項目的死刑,隨後這兩萬多行代碼慢慢的從我的提交列表裡面消失掉了。我第一次明白了,竟然還有如此嚴格的質量測試,也明白了什麼叫風險與代價,雖然這些代碼,我已經用monkey模擬跑過了5個鍾頭,但是依然被ATT測試蹂躪2個鍾頭之後掛掉。......>>

問題三:自學程序員需要多長時間 自學程序員,難不難要看你肯不肯多花時間在上面,有很多方面要涉及,對於編程語言更是需要你多實踐多上機,才能有所收獲,當然如果你很喜歡編程的話,你也會發現編寫程序也是一件很有樂趣的事情,完成了也很有成就感。當然,要考程序員,光編程還是不夠的,暢需要涉獵計算機相關方面的知識

問題四:自學成為程序員一般需要多久 程序員有很多開發語言 每個開發語言學習周期都不同 零基礎 從入門到熟悉 怎麼著也得半年 基本上要1年多 三到五年能精通

問題五:當程序員要學習多久?學完了多少錢一個月? 看你學到什麼程度!看你學多少科目。計算機語言編程 常見的大概有10種以上。
大多數大城市的普通程序員都是IT業的民工。工資談不上高,工作壓力大

問題六:通過自學從小白到程序員需要多久 學習需要多久就看自己的時間分配了。自學需要的時間真的不好說,有的人一年也許能學到入門了,有的人啥也沒學到。

問題七:程序員難學么 要學多久才是中級java 你要知道一個問題,並不是你學的越久就能達到中級高級,首先你要知道中級的要掌握什麼樣的技術,比如主流框架,優化資料庫等等,還要有一定的工作經驗,解決自己或者別人工作中遇到的各種問題的能力,如果沒有,你掌握再多也只不過紙上談兵而已

問題八:自學程序員要多久,如何找工作 這個時間就說不準了,自學得看你自己的自製力和接受能力。一般在培訓學的話就4個月,自學估計得要更長時間。至於找工作,自學會有點難度,只能說碰運氣了。個人不建議自學

問題九:學習編程到成為一個能賺錢的程序員最快要多久 這個要看學習編程的天賦了。賺小錢的技能的話,一周左右就可以了

㈨ 怎麼成為一名程序員,要從哪裡開始學起,先學什麼在學什麼

答:

首先你要清楚程序員也分很多種,從語言分,有C,C++,C#,JAVA,Delphi等等,你要考慮好弄自己向哪部分發展。

  1. 一般如果沒什麼理解可以從C語言學起,因為C語言比較貼切於機器語言,大學裡面一般也都是先學C的,學好了C語言,可以觸類旁通,更容易學其他的語言。

2.Java據說是現在最熱門的(所有程序員都覺得自己用的那個語言最牛逼),IOS或者android學了可以做手機軟體哦,Delphi和C#是用控制項拖出自己想要的結果,然後在後台寫代碼的,不過有人說Delphi相對落伍了,但好些大公司還是在用Delphi來搭框架的。

3.選定好語言後,如果覺得自己理解能力動手能力超強的話,自己買本入門的書,或者網上看些教學視頻,邊看邊實踐。不過這個對於初學者來說真的挺難的,因為第一次的話,可能連環境都搭不好,用來編程的軟體對初學者來說還是蠻麻煩的一種軟體,不是這個不行,就是那個設置錯了,或者連一些基礎的窗口啊工程啊項目啊的概念都沒有,網路起來又要答案一個一個看,浪費時間。而且還要自己搭資料庫啊什麼的,真的很難。有老師教的時候,還能掛科一大片的。不過入門了,之後就簡單了,自己隨便找本書,學學代碼用法啊,照著打就可以了。

拓展資料:

程序員(英文Programmer)是從事程序開發、程序維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、中級程序員、高級程序員(現為軟體設計師)、系統分析員,系統架構師,測試工程師六大類。

崗位職責:

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

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

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

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

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

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

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

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

網路詞條 程序員

㈩ 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長

前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如Python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用Javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習PHP,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構

學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

閱讀全文

與程序員小白第一天相關的資料

熱點內容
如何開啟app步數授權 瀏覽:18
linuxmaven路徑 瀏覽:135
python爬qq說說 瀏覽:414
linuxmap文件 瀏覽:67
轉轉app如何搜索快手主播 瀏覽:776
移動硬碟文件夾成0位元組 瀏覽:683
夢幻西遊解壓視頻大全 瀏覽:252
解壓小視頻手速 瀏覽:152
我的世界伺服器卡沒血如何修改 瀏覽:161
vba入門到精通pdf 瀏覽:113
tomcat怎麼一個伺服器部署 瀏覽:797
phphttps介面 瀏覽:895
javabyte數組int 瀏覽:810
公司網路共享的文件夾 瀏覽:1000
拍臉搭配衣服是什麼app 瀏覽:916
歐珀手機怎麼更改加密密碼 瀏覽:508
程序員那麼可愛陸漓氣人語錄 瀏覽:904
python中del刪除 瀏覽:461
華為雲耀伺服器和ecs區別 瀏覽:730
ruby語法編譯語言 瀏覽:571