我是計科6班的吳子昊,這是第一篇隨筆,我就隨便寫寫什麼,講一講本身學代碼的苦逼坎坷之路吧。python
在大一時沒怎麼打好C語言基礎(老師照本宣科上課無聊是一個緣由,但本身沒有重視也是很重要的一個部分)一直很怕寫代碼,以爲計算機出路這麼多,不要選打代碼的,可是發現真是大錯特錯,計算機不會打代碼什麼事都作不了。後來大二數據結構課開始認真學習打Anyview,勉強追了上來,能勉強打打小程序的樣子。不過Java課又讓人很是心塞==老師教得很是枯燥,真心建議這些代碼課老師能當堂在電腦上面敲,敲代碼這麼實用性的問題,感受紙上談兵是怎麼都學很差的,課後花了不少時間去補,但仍是跟不上,但願今年能好好追回來,小洞不補,大洞吃苦啊。算法
我最喜歡的科目是數字邏輯(學得好確定喜歡啊),由於感受數字邏輯真是一理通百理明,咱們的老師又教得好,書本很詳略得當地列清楚了C語言和Verilog語言的區別,我沉迷學習了一兩個晚上就徹底上手了,實驗課的代碼也很容易就敲出來。老師以後還邀請我去他工做室搞大創,老師工做室主要是弄圖像識別的,感受至關有趣,後來也由於機緣巧合有幸參加第一屆國際自主機器人大賽,小隊得到了三等獎(主要仍是另外兩個神隊友代碼大佬強啊!!!!!!!)編程
何時才能夠像他們同樣?首先仍是要克服對代碼的恐懼吧。在寫Verilog的程序時,我彷佛也感覺到了代碼隨心所動,實現本身想法和願望的那種知足感。多寫寫,應該就會好起來!小程序
在學軟件工程這門課以前真心就超想問了:微信
1. 代碼穩定性質量方面:咱們寫的這種渣代碼,scanf時隨便輸一點奇怪數據就會崩潰的那種,怎麼擔當大任?或許加一些什麼getchar函數能夠去除掉一些可有可無輸入,但用戶只要想折磨這個程序,確定總能找到你各類想都沒想到的bug。阿里騰訊那些人是怎麼弄出超級穩定的支付系統的,至今尚未人發現支付寶,微信錢包有什麼bug吧。數據結構
2. 代碼功能性方面:大四就要出來實習,可是大一到大三寫的那些小程序和真正的軟件,總以爲還差很是遠的距離,上課C語言教的都是一些語法,算法,數據結構。以Photoshop爲例,功能和界面都是C和C++語言寫出來的,這可怎麼寫出來?百度也找不到答案。框架
3. 軟件公司對人員管理方面:騰訊阿里那些大公司爲何要這麼多人,阿里靠着淘寶均可以吃很久老本了,頂多再維護維護就行了啊,作項目的話,哪來那麼多項目呢?函數
4. 大項目人員合做方面:商業軟件尤爲是那些代碼量成千萬行的項目,幾百我的是怎麼分工呢,這個負責什麼什麼接口,那個負責什麼什麼接口嗎學習
5. IDE的使用方面:在學C語言時,一直都用的VC++6.0,簡單直觀。可是用VS2017這類IDE時就讓人傻眼了,怎麼這麼多亂七八糟的功能,VS寫個helloworld都會報各類奇奇怪怪的錯,搜索才發現是各類各樣配置環境,連接庫等等之類的問題,每次把工程文件拷到機房演示又要花好久時間來配置環境。想象一下在多人合做的時候,要確保全部人的環境都不能有絲毫版本的不一樣,不然可能又會有問題,爲何要弄得這麼麻煩?設計
如今開始學軟件工程,感受真的開始從寫渣程序轉變到軟件了,上面這些問題應該在這堂課學完後均可以解決吧,不過上面都是實際編程階段的問題,沒有提到需求分析。
以前參加機器人比賽是我第一次合做完成項目,遇到了不少意想不到的艱難,學習這門課後,發現這些問題是有名有姓的,叫作「軟件危機」
簡單介紹一下機器人比賽是怎麼回事,咱們要「馴化」機器人,機器人會在一個有不少障礙的賽道上面運行,機器人經過攝像頭獲取圖像,識別出是什麼障礙,而後作出相應的動做(好比見到溝壑執行跨過去)
在作的過程當中真是屢屢碰壁,介紹一下
1. 對我的的定位不清楚:一開始分工是一我的設計機器人的動做、一我的負責圖像處理,讓機器人識別出障礙、一我的負責搭框架,讓圖像識別和執行動做能連起來。我寫代碼的能力不強,因此作圖像識別的分工,後來發現圖像處理真的是很是小頭的一項工做,opencv的接口真是太強大了,幾行代碼就能夠提取出輪廓了,致使我其實沒怎麼任務,時間都只是花在了學習opencv接口的使用上,後來調試機器人實際上是涉及不少方面問題的,設計框架的也要花費時間來看看怎麼修改動做,咱們的分工就不太明確了。
2. 沒有列清楚日程表天天該完成什麼:比賽準備到參賽其實只有一個半月,一開始以爲這個工做不太難,前兩週大部分時間都在學習python這種新語言,沒怎麼調試機器人,後來才發現工做遠比想象要艱鉅,最後來不及實現全部功能
3. 設計的框架對咱們過於複雜:一開始老師給咱們設計了一個很是健全可是又很複雜的類圖,對於咱們來講仍是太難了,機器人的計算機能也跟不上,比賽也不須要這麼複雜的類圖。致使花了不少額外的時間
總的來講,最後幾天咱們瘋狂與時間賽跑,終於追回了之前的時間債,還得到了三等獎,已經至關不容易。
軟件工程課其實我以爲真的像是一門哲學課,涉及不少人事管理,時間管理方面,真的一時半會是啃不明白的,什麼瀑布模型之類的像鬼畫符同樣,或許也真是要多作一點項目,天然就會融會貫通吧。