軟件行業的簡單介紹
計算機語言
主流計算機語言:C\C++, Java, JavaScript\HTML\CSS, Python。
注:我把.NET的技術去掉了,主要原因是Java技術應用範圍比.NET廣的多。
應用範圍
- 應用軟件
計算機上的大部分軟件都是應用軟件,可以分爲命令行/桌面軟件/網站應用。
- 大數據
大數據技術,顧名思義是處理大量數據的問題。大型網站的服務器上一般都會使用相應的技術。
- 人工智能
人工智能技術涉及的面比較廣。現在不建議大家學習。
- 手機軟件
- 單片機
- 運維
- 測試
- 安全
學習的步驟
- 利其器
* 學習使用github
github不僅僅可以託管你的代碼,也可以管理你的軟件項目。
建立一個github賬號。
建立一個項目(公開的,因爲免費)
* 學習使用vs code
vs code是一個輕量級的代碼編輯器,帶有各種各樣的擴展,可以支持不同的編程語言。
下載vs code,創建一個目錄,和github的project關聯。
學習如何submit/push你的代碼。
* 建立自己的博客
可以用github pages功能建立博客。
或者去博客圈建立一個賬戶: 博客園 - 開發者的網上家園
博客園的好處是,博客園是一個開發者的社區,多多少少可以瞭解一些開發的消息。
* 學習markdown
markdown是一個文本內容編輯語法。可以用來寫博客。
許多網站和工具都支持。
- 學習的一個關鍵問題
任何系統的學習一定要有輸出。筆記+代碼。
如果你看了一本C語言的書,不寫筆記,不寫程序,那你只是浪費時間。
這就是爲什麼需要建博客的原因 - 放你的學習筆記。
爲什麼要使用github - 放你的代碼。
- 如何學習計算機語言
寫一個總結:語法\語言特性和示例
下載和閱讀語言對應的代碼規範。
學習語言要了解一個叫做"framework"的概念,每種語言在設計的時候都有特定的目的,也可以理解爲語言的需求。
語言的需求是幫助開發者實現某個方面的功能。
爲了這個需求,每種計算機語言會提供一套API。
開發者對語言的使用,更主要的是對語言提供的API的使用。
所以,學習語言 = 語法 + framework。
關於framework,學習的時候,不用太詳細,先總結一個分類就可以了。
還有一個概念是:生態環境。
可以理解爲:許多第三方的開發者,爲這個語言提供了更多的API。
這個也很重要,在你的開發中,多多使用高質量的第三方包,既方便,而且質量也高。
這些東西,和別人多交流,網上多看看,慢慢就瞭解了。
- 必備知識
* 如何學習數據結構
寫一個總結:
數據結構的類型,每個類型的元素和特點,每個類型對應的算法有哪些,算法的作用是什麼。
使用Java實現一些數據結構和算法。
這時候,可以同時學習Java。
* 如何學習數據庫原理
可以裝一個MySQL和對應的開發平臺。
學會以下內容就可以了:
如何創建表(數據類型至少含有varchar2, int, double, datetime),有外鍵的表,和一個Tree表。
如何刪除表
學習如何寫SQL:
Select/Update/Insert/Delete
Count/Max/Min/Avg/Group By
Join/Left Join/Right Join/Outer Join
Where/Union/Order By
學習編程的幾個發展方向
- 算法方向
主要是學習數據結構、算法和C\C++,刷ACM競賽試題。
好處:技術上比較專注,適合學生。
如果你沒有極大的興趣,也可以放棄。
實際上大多數開發根本用不上這些東西。
- 小軟件導向
通過寫一些小而有趣的程序,慢慢鍛鍊自己。
有人問,如果,不知道如何寫怎麼辦?
方法:確定技術\分解問題\網上搜索
拿魔方遊戲舉個例子,(我也沒有做過。)
首先我會在網上搜索Web的3D技術有哪些?
其結果可能是選擇一個js 3d的類庫。
然後,這個類庫肯定有官方文檔。
現在是分解問題的時候了。
首先學習怎麼畫一個正方形。
然後是怎麼畫出一個立方體。
然後是如何讓它旋轉,等等等等。
還有一個暴力方法:直接搜索別人寫成的源代碼,拿過來研究。
舉一些例子:
* 寫一個2048遊戲
使用Html\CSS\Java Script寫一個2048遊戲。
* 寫一個爬蟲
使用python爬一個網站,找到擁有某些關健字的文章。
可以學習用sqlite,保存一些信息,比如,文章的URL和內容等等。
用Java再實現一遍。
* 寫一個魔方遊戲
學習如何解魔方
使用Html\CSS\Java Script完成一個3D魔方遊戲。
- 網站方向和大數據方向
這兩個方向和現在軟件行業的就業比較match。
但是,需要人指導,所以,現在不講。
什麼是編程
編程是一個分解和組裝的過程。
分解:就是把需求分解成小功能的能力,我們稱之爲設計。
組裝:把代碼合理的拼湊起來,我們稱之爲框架(architecture)。
如果大家對C/C++感興趣的話,可以加一下我們的學習交流Q羣:637 935 295,免費領取一套學習資料和視頻課程喲~
基本編程能力的進階
編程是使用編程語言實現一個業務問題的解決方案。
- Level 1:學會使用賦值語句/分支語句/循環語句完成一個小功能。
- Level 2:分拆代碼的能力,使用多個子方法來解決問題。
麪條式代碼(Spaghetti code):就是將一大堆代碼寫在一個方法裏。這是需要避免的。
可以理解爲寫作文中的分段一樣,將不同功能的代碼封裝到不同的子方法中。
- Level 3: 結構化編程
認識到在一個功能中的數據有哪些,學習合理的封裝數據,形成一個或者多個數據結構。
可以理解爲數據抽象。
- Level 4: 功能封裝。
這個術語上稱爲“內聚性”。
比如,把操作字符串的方法,寫到一個StringHelper的類中。
把操作文件的方法,寫到一個FileHelper的文件中。
- Level 5: 面向對象編程
面向對象編程 = 數據抽象 + 功能聚合。
面向對象的封裝性,繼承性需要以後慢慢理解。
- 層次框架能力
層次是框架的一種簡單形式,是對框架的初步理解。
將代碼形成多個層次,比如:常見爲3層,表示層/業務層/數據訪問層
表示層: 把和用戶交互相關的代碼。
業務層: 業務邏輯代碼,和UI無關。
數據訪問層:讀寫數據相關的代碼。
層次的作用:
方向性:只能從前層調用後層的功能。
隔離性:不能調用不相鄰層次的功能。
- 代碼閱讀能力
能夠快速地從代碼閱讀中,明白代碼的用意。
- 業務理解能力
能夠很好理解業務,並且能夠構想出業務在項目中是如何實現的。
到這兒,就差不多可以算是入門了。
什麼是高手
願意寫詳細準確的註釋
願意花時間給變量、方法命名
願意花時間提高代碼的可讀性
學習代碼規範\優化代碼風格
注重代碼的性能
注重安全性