編程課為什麼一般不講在實際項目中的應用?
一個項目往往有多個文件夾和文件,每個文件夾代表不同的含義,而一般的編程課從不講這些項目怎麼組織,每個文件夾什麼含義,項目如何配置如何運行…… 然而實際工作中就是要用到這些。編程課講的一般都是怎麼寫代碼的問題,而很少提及實際應用
你對實際應用的理解是錯誤的。工作中開發工作基本上可以分成兩塊。
第一是應用場景是什麼
第二是如何解決這個場景下的具體技術和編程問題
應用場景,我們可以用粗略一點的例子來說明下
「用戶需要在網頁上登錄之後,才能知乎網頁版上回答問題,提交問題可以修改刪除。知乎網頁版本同時在線用戶大約是xxxx萬,大約有1%的用戶在同時回答問題「
上面一句話,就是一個簡單的應用場景。說明瞭知乎用戶在網頁版本知乎上的一項操作要求。前面部分是講的是操作需求,最後一部分是整體情況的描述。
如果單獨是前面部分的需求,就是簡單的增刪改查的代碼,可能大部分學過編程的同學都能完成。但是附加了後面兩個條件之後,就會出現巨大的變化。
所以開發過程中,我們需要明白我們要在什麼背景下解決什麼技術問題。不同的背景之下,解決方案並不相同。
理解了背景之後,纔是出技術,寫編碼,針對具體問題具體解決,技術層面上的工作就來了。
但至於文件夾如何用,項目如何配置,如何運行。文件夾部分這個沒有一定的定數,如何配置,如何運行完全是和項目的整體架構有關。
編程課上很難模擬超過一定規模的項目,也很難模擬什麼應用場景。所以這部分知識自然也就被忽略了。重點就會成了怎麼做單機版軟體了。
另外這位兄弟,既然你意識到了缺乏,那麼你可以自己學起來,補上!
這樣更好!
在實際項目中,要考慮很多其它課程的內容,除了要學編程語言外,還有數據結構、演算法、面向對象技術和設計模式、程序設計原理、操作系統、資料庫、模擬電路、數字電路、計算機組成原理、微機原理、計算機體系結構、計算機網路、計算機安全、軟體工程等等課程,這些都只是基礎課。
學好編程語言是基礎課中最基本的要求,是一年級的課程。
只有到高年級,學好了以上課程,但還不夠,還要培養出自學能力,訓練出分析複雜問題的能力,才能真正理解和做項目。
有限的課時(4年的課壓縮到3年完成),老師只能講課程相關的內容,能講全和講好就很不錯了。
只有到高年級後,老師才指導以小虛擬項目為主的課程設計,沒有團隊。
第四年畢業設計中,老師才指導每人以實際項目的子項目,一人一個子項目,不能重樣,沒有團隊。
研究生過程中,基本都是實際項目,指導多人以團隊開發同一個項目。因是非公司運作方式,學生還是抱著按部就班學習的思想,項目進度不快,也不規範。
只有到了公司,經過多年的訓練,真正接觸實際需求,按需求做項目,按規範做項目,按項目要求快速學習,才能真正做好項目。
一口吃不出一個胖子,如果喫出了,也是虛胖。
如果是大學裡面的話,有兩個原因:
一、老師太水,ta都不知道,怎麼可能告訴你?
二、學生太水,連代碼都不會敲,理解那些東西有什麼用?
很多高校的老師都是研究生畢業之後直接去應聘的,很多實際應用上的東西沒法說,可能ta自己都沒接觸過。
很多普通高校的學生都是混日子的,所以大部分學生可能都接收不了那麼多的東西,所以老師怎麼可能還去跟ta們說那麼多?
比如你跟他說一堆實際應用要用到的東西,可能他會反問你一堆基礎的代碼問題。
有些高校是升本的,升本前招的是什麼水平的老師?可能是野雞大學的本科生,你信嗎?你讓這些老師怎麼跟你說實際應用?
如果你關注到了代碼以外的東西,說明你代碼過得去了,這個時候你比ta們要先一步,你應該主動問老師,而不是等老師講。
很多實際應用的東西即使老師說了,過後你可能就忘了,因為有些東西不常用。
比如java開發環境搭建,這個夠實際了吧?但是有多少人是真正意識到的?老師不說嗎?當然不是,而是這種東西你配置一次之後可能一兩年都不會再碰,以至於你都沒意識到它的重要性。
當時我學的時候,老師強調了好幾次,也教了幾次,但是有什麼用?等到自己換電腦,真正工作的時候才發現,自己連開發環境都不會搭。
各個語言(社區)都有自己一套完整開發~構建~打包~發布的工具鏈和對應的俗成的項目組織結構
現實生產中整個流程都是可自動化的而且也應該是自動化的
所以實際項目也都是遵循了這套社區約定而已
真想學就去看手頭語言對應的主流工具相關說明就是了,網路搜一下也就是半天的時間
有一種課程叫實戰課,專門教你寫項目
至於項目如何組織,以我相對熟悉一些的 Flask 框架為例,事實上你根本找不到一個大家普遍接受的項目結構(指代碼文件及文件夾的組織形式)
可以看一下這個帖子:
https://www.v2ex.com/t/617056#reply47?www.v2ex.com你會發現,大家的代碼文件組織形式更多的是依靠經驗和習慣,可以推而廣之,其他的很多編程語言和框架也是如此。
大學講理論的多,實操靠自己
遇到不好的學校,連理論都自學
大學=大不了自學,大不了廣博地學習
第一,實際應用,例如商業項目,是很複雜的,可能應用了很多技術甚至新技術,許多框架等,不是短時間內講得清楚的。
第二,商業項目或者說成熟的項目都有保密性質,也不可能會作為教學素材。
第三,教學的目的是入門,如果開門見山就講項目,那這就不是教學而是勸退,當然天才除外(存在一些天才變態,身邊就有)。
課程會講某個知識的實際應用的,這也要看講課的老師,有經驗的老師基本都會涉及一些小案例,但不會帶你做大項目
推薦閱讀: