大學如何學習編程

 

軟件行業的簡單介紹

計算機語言

主流計算機語言: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無關。

數據訪問層:讀寫數據相關的代碼。

層次的作用:

方向性:只能從前層調用後層的功能。

隔離性:不能調用不相鄰層次的功能。

  • 代碼閱讀能力

能夠快速地從代碼閱讀中,明白代碼的用意。

  • 業務理解能力

能夠很好理解業務,並且能夠構想出業務在項目中是如何實現的。

到這兒,就差不多可以算是入門了。

 

什麼是高手

願意寫詳細準確的註釋

願意花時間給變量、方法命名

願意花時間提高代碼的可讀性

學習代碼規範\優化代碼風格

注重代碼的性能

注重安全性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章