選擇的依據很簡單。什麼容易學什麼,遺憾,貌似都不容易;那麼什麼學起來代價最小,就學什麼,那就是導師用什麼、同門用什麼的問題。是否要根據課題需要進行選擇呢,是的,但那也許是以後的事情。我們先開始用手指,起舞。
二、然後,找個示範找個前輩,幫著裝上軟體搭個環境,做個簡單又不是很簡單的例子,示範一下。這個前輩,最好是能給你講點八卦的,關於如何學習和如何克服困難的八卦。當然,網絡上、聊天群、公開課,都可以留一下,這是獲得常識的途徑。常識,往往是書上少有的。
三、把最基本的東西學一學練一練背書是沒有用的,拷貝可以有;複雜的東西不用多學,最簡單的要動手多動手再動手。什麼是簡單的,也許不到2%的量,就是:數據結構、控制流程、模塊化組織方式。具體說,有什麼數據類型,基本的和可以自定義的;條件與循環是哪幾個詞;函數與對象長得如何。這些內容,可以很玄乎,尤其是走到所謂設計模式和軟體工程那樣的一些層次後。最簡單的辦法,不求甚解,多做例子多改改多看看,體驗一下,敢於去猜去試。
四、程序設計資源一個程序設計語言強大的,往往不是上面這些基本的東西,而是它提供的資源,稱為庫、包、工具箱,之類的。比如矩陣運算、遺傳算法、機器學習,都有很成熟的庫。那麼,拿來就用吧,從拿來主義開始不失為良策。這些,遺憾,可能學不完,也不用學完。這些往往和特定專業的需求有關。那麼看看你的課題,有什麼學什麼,用什麼學什麼。
五、看書與動手需要看書嗎?讀書總是很好的習慣,但是編程序可不是看書能學會的,他只會讓你忘記和厭倦。通常自帶的幫助文件和搜尋引擎,是最重要的學習資料。所以,先看看結構,把玩把玩,碰到問題好問他。多動手是第一位的。多抄,抄過來跑一跑,看看什麼樣的代碼什麼樣的結果;然後,一定要改一改,小改,改一句,看下結果;然後,往你要做的課題上拉一拉,根據你的想法做個小小的函數之類的。
六、邏輯與計算計算是先做什麼在做什麼, what,本身是將過程通過邏輯組織起來。邏輯確定的是who, where, what, which, why。所以,如果what很簡單,那麼邏輯就不能差。一般的企業應用開發,what並不是多複雜,那麼邏輯就很重要。有點小聰明可以做程序,局部邏輯;有大聰明可以做架構師,整體邏輯。如果你是幹這個,不妨看看身邊,如果不是這樣,也許你有新的機會。那麼what就很關鍵,尤其在這個人工智慧肆虐了的荒野。把what做好並不容易,需要深入的洞察,需要根底與積澱。否則,你不過是搬來用用,套用而已,當然,這也很不錯了。再說,誰也沒有那麼多可以深入的坑。
七、用戶界面與算法UI,User Interface。相比而言,算法更顯得玄妙。程序設計語言一般使用function, procedure表示函數。算法實現為一個函數。但是,Algorithm的核心是模型,而不是邏輯,當然邏輯居其次。從理論基礎來看,UI的基礎也許更高大上和豐富,比如,心理學、社會學、美學、哲學,等等,因為這個I是人機之間的Interface。人成為系統的一部分時,糾結的複雜性就難以分解了。因此,當你遊戲時,一定要考慮這個I是否能夠成為你的朋友,friendly是UI設計的基本要求,沒有底。
八、程序設計與計算機專業程序設計<<<計算機專業。程序設計->算法設計:程序設計 ≠ 算法設計。程序設計是計算機專業知識結構的縮影。程序設計與快速聯繫特定領域知識結構的工具。程序設計逐步成為各類專業學習與研究的工具。各種專業工具都開始支持通過程序設計進行專業性的設計與研發。
九、成就感與成就寫程序這種愉快之旅,對不少人來說是欲罷不能,對更多人來說是遙不可及,一場夢魘。為什麼欲罷不能?基本的誘惑是這裡提供了一種廉價的方式,似乎能夠比較容易達成所願。算法、想法、觀點、理念,似乎可以比較容易的呈現出來,所見即所得,其中複雜的邏輯能夠躲在後面愈加讓人滿足。這種渲染到處可見,也確實如此。
十、編點程序與做點研究對於一般的研究生而言,例如對管理、以及一般的理工科學生而言,運用程序設計,通常要做的是某個層次的算法,或者說更多是對解決問題的方案的一個實現。算法本身的複雜性與優化往往不是第一位的。是可以簡單的看,簡單的去學習的。程序設計是個工具,遊刃有餘能促進對工具的操縱。沒有程序設計,數學建模難做、小論文難做、複雜點的圖表也難做,有點想法都好漂浮。
主題優化問題、模型與算法
旅行商問題(Traveling Salesman Problem)求解算法
機器學習
機器學習: 鳶尾花數據集
機器學習: Scikit-learn Getting Started
機器學習: An introduction to machine learning with scikit-learn
機器學習: 手寫數字識別
機器學習: 人臉補全
ALNS自適應大規模鄰域搜索
ALNS自適應大規模鄰域搜索: 套裁問題
ALNS自適應大規模鄰域搜索: 旅行商問題
SCIP數學規劃
SCIP數學規劃求解器: PySCIPOpt
SCIP: 奇數還是偶數
SCIP: 邏輯約束
SCIP: 四個ATSP模型
SCIP: 1D裝箱問題的算法與模型
SCIP: 多商品經濟批量訂貨模型(MEOQ)線性化
SCIP: 選址問題(k-median)
SCIP: 容量約束下多分配選址問題
SCIP: 圖著色問題(限定色數)
SCIP: 批量(lot-sizing)優化問題與割平面
SCIP: 最大穩定集問題
SCIP: permutation flow shop
SCIP: 多商品經濟批量訂貨模型(MEOQ)線性化
SCIP: 資源約束調度問題RCSP
SCIP: 魯棒生產模型(SOCP)
SCIP 05: 整數規劃例子
SCIP: 圖著色的三個模型
SCIP: Weber問題的二階錐模型
SCIP: 設施選址問題的分解模型
SCIP: 數獨(sudoku)整數規劃模型
SCIP: 割平面求解TSP的算法
Python進化計算
Python進化計算Geatpy要點
單目標單連續變量函數二進位編碼進化算法
單目標多連續變量帶約束實數編碼進化算法
帶約束的單目標旅行商問題進化算法
句子匹配單目標進化算法
混合編碼單目標進化算法
離散變量雙目標進化算法
連續變量雙目標進化算法
多目標背包進化算法
混合編碼多目標背包進化算法
Python優化
Python無約束非線性優化
Python差分進化算法
Python線性規劃
Python 數學規劃
Python數學規劃案例:單分配多樞紐站選址
Python數學規劃案例:單源設施選址
Python數學規劃案例:路徑優化CVRP
Python數學規劃案例:一維裝箱
Python數學規劃案例四:資源約束的最短路徑
Python數學規劃案例三:最短路徑
Python數學規劃案例二
Python數學規劃之Cplex之旅
Python數學規劃案例一
Python數學規劃案例一模型
Python: 數學規劃
Python數據結構
Python數據結構
Python圖
Python二叉樹
Python排序
Python查找算法
Python遞歸
Python鍊表
Python棧
Python圖(csgraph)
Python數據
Python: 資料庫之SQLite
Python: Pandas
Python資料庫
Python機器學習
Python普通最小二乘法
Python Web
幾分鐘做個Web應用
Python信息系統實驗:倉庫管理
Python基礎
Python基礎:沒有更簡單
Python利器