中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

十八年開發(fā)經(jīng)驗分享

2019-04-03    來源:51CTO.com

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

作為本系列的第一篇,想談?wù)劤绦騿T的學(xué)習(xí)問題。之所以第一個要談的問題就是學(xué)習(xí),是因為我覺得這個問題最重要,也是最讓相當(dāng)一部分程序員比較犯愁發(fā)憷的問題。本文如果能給這部分程序員帶來一點幫助或者啟發(fā),那么目的就達到了。學(xué)習(xí)問題在那篇小結(jié)中寫了一小段,這次可以相對較為詳細的談?wù)勥@個問題了。

既然要談學(xué)習(xí),那么首先需要明確一個問題,我們打算學(xué)什么?這里先對這個紛繁世界中的知識做一個分類:

A.教材上的知識

這部分內(nèi)容來自計算機專業(yè)的課程教材。也有可能會涉及一部分來自其他相關(guān)專業(yè)或者相關(guān)課程的內(nèi)容。

B.編程語言

每一個程序員只有在會使用一門語言的情況下才有可能從事開發(fā)工作,所以學(xué)習(xí)并掌握一門語言是最低要求了。

C.SDK

光有一門語言是不夠的,從事任何實際的軟件開發(fā)都需要一個類庫或者開發(fā)包才可以完成。比如C語言中的庫函數(shù),C#中的.NetFramework類庫,Windows的API等等就屬于這個范疇。

D.開發(fā)工具

以如今的情況來說,沒有開發(fā)工具理論上也是可以開發(fā)軟件的,但效率就是一個問題,所以掌握并使用一個開發(fā)工具完成開發(fā)任務(wù)應(yīng)該也是一個最低要求。

E.領(lǐng)域知識

軟件總有用戶,于是開發(fā)這些用戶使用的軟件,那么程序員就需要了解用戶所在行業(yè)的知識,至少需要知道一些基本的必須的知識。還有一部分的內(nèi)容也劃分為領(lǐng)域知識,比如從事Photoshop這類軟件的開發(fā)那么圖形相關(guān)的知識就必須了解一些,從事工控軟件的開發(fā),那么對控制方面的知識也要有所了解。

以上的分類是在本文中我對知識的理解,一個程序員知道這些知識后從事一個軟件的開發(fā)應(yīng)該是沒有問題了。下面分別來討論一下這些知識的學(xué)習(xí)問題。

一.教材知識的學(xué)習(xí)

做為一個已經(jīng)從業(yè)的程序員來說,我不認為計算機專業(yè)的所有專業(yè)課程(包括專業(yè)基礎(chǔ)課,我在讀大學(xué)的時候還有這個說法)都是有用的。實際上對于大部分程序員來說,只需要很少的一部分知識就足夠了。這些知識主要由三門課程組成:數(shù)據(jù)結(jié)構(gòu),編譯原理,操作系統(tǒng)。對于大部分的程序員來說,其他課程的內(nèi)容不是沒用,而是在實際工作中用不上。

數(shù)據(jù)結(jié)構(gòu)這門課程的重要性,可以理解為是程序員的圣經(jīng),怎么如何形容其重要性都是不過過分的。這門課程中需要掌握的內(nèi)容,我個人觀點如下:

1. 掌握所有線性數(shù)據(jù)結(jié)構(gòu)的知識,比如表,棧,隊列等(廣義表可以不作要求)

2. 二叉樹的基本操作和基本使用

3. 圖中需要知道遍歷和了解最短路徑算法,以及相關(guān)的一些概念

當(dāng)然對于某些程序員來說,這是不夠的,因為從事的具體的軟件開發(fā)工作會有不同的要求。但是對于大部分從事MIS軟件開發(fā)的程序員來說,這些知識夠了。掌握這些知識可以有兩個層面的要求。第一個是完成足夠的習(xí)題,從而可以熟練的答題,第二個是能夠在實際工作中使用數(shù)據(jù)結(jié)構(gòu)描述實際的事物。做到這兩點要求應(yīng)該說不算太高,注意多加練習(xí)就可以了。目前來說這門課程的經(jīng)典教材也不少,相信只要按部就班的學(xué)習(xí)完就是合格的了。

編譯原理這門課程主要是學(xué)習(xí)方法和思想而不是課程中的知識本身。因為畢業(yè)出來能從事編譯器開發(fā)的人實在是太少太少了。這門課程需要掌握了解的東西不多,我個人的觀點主要是以下幾個:

1. 確定有限自動機和非確定有限自動機的使用

2. 詞法分析程序的實現(xiàn)

3. 語法分析的方法

自動機在實際應(yīng)用中的體現(xiàn)就相當(dāng)于是狀態(tài)轉(zhuǎn)換圖,這個工具非常的重要,希望能夠務(wù)必掌握。我們在開發(fā)EntityModelStudio時,設(shè)計界面交互部分的內(nèi)容就是先設(shè)計出狀態(tài)轉(zhuǎn)換圖然后再寫代碼的,否則直接開發(fā)的話就會面臨開發(fā)失去控制的風(fēng)險,同時重構(gòu)和維護也會相當(dāng)麻煩。所以這個工具極其強大,非常實用。另外提一下,非確定有限自動機,這個工具的能力和確定的有限自動機是等價的。但是由于它的不確定性,更符合人的自然思維習(xí)慣,從而在某些設(shè)計場合相對會方便很多。這一點是很實用的,也是很吸引人的。

掌握詞法分析程序的實現(xiàn),可以大幅度拓展開發(fā)能力和思考能力。這部分東西理論上描述可能比較麻煩,但是實際使用時還是很容易上手的,所以非常值得學(xué)習(xí)一下。語法分析程序不需要掌握了,畢竟開發(fā)編譯器的機會是微乎其微的。但是相關(guān)的方法和思想希望能夠了解,這可以幫助程序員用電腦的思維來思考問題。

操作系統(tǒng)需要掌握的東西只有兩個:

1. 五大管理的基本方法,尤其是涉及內(nèi)存管理的策略

2. 線程或者進程的同步技術(shù)

操作系統(tǒng)是復(fù)雜的,但是教材中介紹的這些管理方法相對來說是簡單易懂很多了。這一難一簡之間體現(xiàn)了基本知識的重要性,基本知識在實際開發(fā)中的應(yīng)用的廣泛性。好好的體會,就可以明白用簡單方法解決復(fù)雜問題的技巧。線程進程的同步,這個就不用多說了,大家都知道它的作用,如果實在不想掌握的話那我也非常愿意相信你的理由一定是充分的,否則你絕對不會那么做。

最后我想強調(diào)的是,無論你如何看待這些知識:可能覺的沒用,可能覺的太難,可能是不感興趣,但是如果你想做程序員的話,那么請你務(wù)必最大可能牢固,最大可能熟練的掌握它。

二.編程語言

對于一個程序員來說,一般需要掌握2,3門語言是基本的,并且學(xué)習(xí)一門新的編程語言也是基本功級別的能力,所以這部分主要談?wù)効焖賹W(xué)習(xí)一門新的編程語言的方法。我學(xué)過的語言有這些(這里編譯器和語言的概念等同了并且不按先后次序):Foxbase,C,C++,匯編,Visual C++,Delphi,F(xiàn)oxPro,VB,C#。就我個人的體會來說,這些語言可以分為三種類別:非面向?qū)ο蟮模嫦驅(qū)ο笠约爸С挚梢暬O(shè)計的。

這三種類別的語言有一些共同的內(nèi)容,而這些內(nèi)容也是我們在學(xué)習(xí)一門新的編程語言時首先需要知道的,可以說是關(guān)鍵的知識點。這些內(nèi)容大致如下:

1.常量,變量,數(shù)組,不同的數(shù)據(jù)類型

這部分需要掌握常量,變量,數(shù)組的定義,初始化,不同數(shù)據(jù)類型的使用。數(shù)組中元素的讀寫,作為參數(shù)如何定義,作為返回值如何定義。有些語言還支持數(shù)組大小的重新定義。

2.函數(shù)(或者叫子程序)

函數(shù)如何定義(比如參數(shù)和返回值),如何調(diào)用(這里存在異步調(diào)用和同步調(diào)用的問題),全局的還是非全局的。

3.流程控制

分支結(jié)構(gòu):if語句,if else語句,switch語句;循環(huán)結(jié)構(gòu):for語句,while語句,do…while語句,有些語言可能是Loop。

4.最基本的輸入輸出和文件操作

最基本的輸入輸出語句可以幫助你在學(xué)習(xí)語言的過程中完成簡單程序的練習(xí)任務(wù),比如:輸出到控制臺,dos操作系統(tǒng)中輸出到屏幕等等。文件操作也要知道,至少以后寫個程序生成日志文件就會了。

以上內(nèi)容在學(xué)習(xí)一門新的編程語言時,希望能首先掌握,這能讓你很快的入門,并盡快使用新語言寫出代碼。另外還可以關(guān)注一下其他方面的內(nèi)容,比如:

1.了解語言的新特性

這個階段只需要了解,不需要掌握,記住有這些新特性,在需要用的時候想起它們就可以了。

2.了解一下幫助文檔中,該語言的所有關(guān)鍵字

這部分內(nèi)容有可能讓你發(fā)現(xiàn)一些很有用的東西。

好了,知道這些內(nèi)容差不多一門新的語言就算入門了。當(dāng)然還有其他很多東西,但是這些內(nèi)容可以在具體開發(fā)中遇到時再去找例子就可以了。下面談?wù)勥@些語言的差異。對于面向?qū)ο蟮恼Z言來說,需要知道面向?qū)ο笕筇卣鳎悍庋b,繼承,多態(tài)在具體的一門編程語言中是如何表達的或者等價表達的。對于支持可視化設(shè)計的語言來說,還需要知道如何設(shè)計窗體,以及常用控件的使用。按照這個方法,從一門已經(jīng)會的編程語言到學(xué)習(xí)另一門新的編程語言應(yīng)該是比較快的。對于還在大學(xué)中學(xué)習(xí)的人來說,我的建議是C++或者Pascal中的一個,VB或者C#中的一個或者其它可視化開發(fā)語言中的一個學(xué)習(xí)一下。如果可能學(xué)習(xí)一下匯編是最好的。

三.SDK

掌握一個SDK才能使程序員在掌握一門語言的基礎(chǔ)上進行實際的開發(fā),如果僅僅是一門語言那是不夠的。所謂SDK舉例子來說就是Foxbase的命令和函數(shù),C的庫函數(shù),C++的類庫(比如微軟的MFC),Windows的API,.NetFramework,這些都是我所說的SDK。程序員可以根據(jù)自己的實際開發(fā)需要,有選擇的學(xué)習(xí)相關(guān)的內(nèi)容。我的建議是,可以先google,然后查文檔,一般的問題都可以很快解決的,慢慢的也就逐步掌握了。比如說我不知道C#如何使用線程,那么我就用google查找,關(guān)鍵詞是“C# 線程”,然后從結(jié)果中找到需要的內(nèi)容。很多時候結(jié)果中的代碼是可以直接使用的。然后再去看一下MSDN的幫助文檔,了解一下相關(guān)的類和方法的說明,這樣這部分的知識就可以認為是掌握了。下次使用時就知道怎么用了。我的C#就是這么入門的,大概google問了二三十個問題左右。

另外一個建議是買一本書學(xué)習(xí)也是可以考慮的,這也是一個不錯的方法,只是買到好的書需要緣分。就我個人來說,絕大部分的情況下是看電子書,直接從網(wǎng)上下載的。

標簽: 十八年 ⒕櫸窒

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:大數(shù)據(jù)時代來臨

下一篇:25個復(fù)古風(fēng)格的徽章和標識設(shè)計