1. 程式人生 > >高級軟件工程作業 No. 0x01

高級軟件工程作業 No. 0x01

熬夜 當前 新特性 出身 優化 概率論 緩解 積累 發展方向

第一部分:結緣計算機

1.你為什麽選擇計算機專業?你認為你的條件如何?和這些博主比呢?(必答)

自從第一次接觸計算機,就被其神奇的功能所折服,一心想要去搞懂他。高中的時候會簡單的使用 Linux,會搭建網站,偶爾也會在學校的機房搞一些大事情,後來由於高考成績不理想,本科被無情的調劑到毫不相關的專業。年輕的時候大多會抱怨命運的不公,撒開玩了一年半載。後來也漸漸領悟到了隨遇而安,在清閑的時候自己去踏實的學習一些計算機相關知識。再次撿起的那一刻發現真的很開心!為了彌補曾經的遺憾,也為了實現當初未完的夢想,毅然決然選擇考研,而這次,我非常幸運。雖不是科班出身,但憑借著對計算機喜愛以及稍有的過人之處,自己的條件應該也能算是中規中矩的水平吧。

這些博主最明顯特點的是他們都具有渴求知識、與時俱進的學習態度,有些博主剛步入大學時盡興參與社團,有些博主並未參與科班教育,但最終都由於各種各樣的原因,意識到了學習的重要性,步入了學習知識、與時俱進的行列。例如在《我的軟件開發生涯 (10年開發經驗總結和爆棧人生)》一文中,作者從初中開始就喜歡計算機,雖然大學時沒能學到喜歡的專業,但後來也是通過學習進一步的努力學習,堅持了自己喜愛的事情。

2.計算機是你喜歡的領域嗎?是你擅長的領域嗎?

喜歡必定會去了解,了解使我更加擅長,擅長促進我更加喜歡。生活在這個時代,一切都離不開計算機。在家中,父母說電腦慢,上網慢,我會幫他們改善;在學校中,同學之間遇到難題,我會一起思考,提出合理的解決方案;在生活中,重復而簡單的工作,我會使用計算機將其自動化,需要在網絡上獲取一些數據,我也會寫個程序去抓取。

3.你熱愛這一專業嗎?你對計算機的熱愛是怎樣的?僅僅是口頭的嗎?

現在的新聞閱讀器,大多會使用機器學習方法來推薦新聞,以至於現在推薦給我的新聞,除了科技方面的,再無所有。

第二部分:在計算機系裏學習

1.你對你的大學生活有什麽想要吐槽的地方嗎?你理想的大學教育應該是什麽樣子的?跟學校給你的有什麽區別?比較你在中國大學的經歷,你的老師和學校能做到和國外那樣嗎?如果不能,請分析一下為什麽。(必答)

當前中國大學的教育,大多還是以老師講授為主,學生缺少獨立自主思考的步驟。當然,這是我國人口基數大與教育資源緊缺之間的矛盾,在很長的一段時間內難以解決。

正如《分享下在美國讀研期間的一些計算機課程作業》一文中所說,理想中的大學教育應該循序漸進,課上時間雖不多,但會有充足的課後時間讓學生進行實踐,讓學生之間獨立思考,互相幫助。這樣既能鍛煉獨立思考的能力,也能增強個人的交流能力,在未來的工作生涯中有不菲的價值,這是目前中國大學欠缺的。

如前面所說,這是我國人口基數大與教育資源緊缺之間的矛盾,想要解決非常困難,在未來的時間裏,隨著我們整體教育水平的提高,教育投入的增加,這個問題會將慢慢緩解。

2.迄今為止,你寫了多少代碼,描述你做的最復雜的軟件項目/作業。(必答)

大概10000行出頭吧。做過一個博客系統,前後端均使用 JavaScript 語言,後端運行環境是 Node.js。

設計的宗旨是盡最大可能的簡化後端,僅僅對接收到的 HTTP 請求進行響應,並返回 JSON 表示的純文本內容(文章內容使用 Markdown 語法書寫)。

因此,前端需要解決的事情就多了。當然,為了挑戰自己,並沒有使用開源庫,而是從頭開始,自己封裝一個簡易的 JavaScript 庫。從選擇器開始,到 AJAX 請求,到 CSS3 的動畫,再加之諸如 History.pushState() 等等 HTML5 新特征...

3.科班出身和北大青鳥有什麽區別?

四年的科班與不足一年的北大青鳥,差距必然是存在的。

當前的培訓機構,大多是為了就業而準備的,因此他們學到的知識編程語言本身;而再看向科班出身,從計算機運行過程中的電氣特征,到操作系統與硬件之間的配合調度,再到編程語言到機器語言的編譯過程,再到更高層次的算法設計,自下而上的學習了計算機運行過程中的方方面面。

如果軟件遇到性能問題,北大青鳥出身只能看看代碼本身,而不知其運行時的所以然,只能一味的考慮提高硬件水平來解決問題;而對於科班出身,遇到軟件性能問題,可以自上而下的思考,優化代碼邏輯算法、考慮操作系統的調度、考慮I/O設備的傳輸速度、考慮硬件的性能瓶頸,總能從某一個方面來更快的解決問題。

4.速成的培訓班和打基礎的大學教育還有mooc之間有區別嗎?

類似上一個問題的答案,而 MOOC 課堂可以說是介於二者之間的折中選擇,不過也要下功夫去制定一番學習的計劃才可達到科班的效果。

5.學線性代數和概率論的時候,你是否有過這樣的疑問“我們為什麽要學這麽多數學,這和我們的計算機有關系嗎”,你現在是否還有這樣的疑問?對這個問題,你有自己的解答了嗎?那麽其他學科呢?

當初懷疑過,而現在則是堅定不移的支持!

雖然沒有學習過計算機圖形學,但是從我的理解來看,計算機圖形學可以簡單的理解為3D空間的線性變換。建立一個3D模型,隨著鏡頭的移動,而不斷的進行基於當前鏡頭方位的線性變換,產生的平面圖形就好像是正常的 3D 效果,而線性變換正是線性代數的精髓。

對於當前火熱的機器學習領域,基於貝葉斯模型的貝葉斯分類器也是一個重要領域,最多的應用即是垃圾郵件的分類。除了此之外,概率論在計算機方面的應用還有自然語言處理、機器翻譯、拼寫糾錯等等...

第三部分:未來規劃

1.對於你未來在IT行業的發展,你有什麽樣的夢想或者未來想從事什麽樣的工作?你準備怎樣來規劃你技術道路,職業道路和社會道路?(必答)

當前計算機領域最熱門的方向即是機器學習,而我現在也在努力的擠入這個領域。如果可能的話,在研究生畢業之後,進入BAT或別的大公司進行鍛煉,在有了一定的經驗之後,進而去 Google 等跨國公司進行工作,創造更多的價值。

2.你對於實現自己的夢想已經做了或者計劃做什麽樣的準備?

目前,已經積累的非常多的代碼經驗,對於研究生階段的學習是很好的基礎。接下來的一年,我會上好每一節課,同時跟隨導師做好任務,在閑暇時間學習知識,為將來的工作積累更多的經驗。

3.實習經驗究竟有多重要?你準備如何積累實習經驗?你希望在企業內實習還是在實驗室做項目?

量變導致質變,實習經驗的增加,必然會使一個人的能力大大提升。而現階段作為研一新生,更多的是要完成上課計劃,因此,在實驗室做項目來積累經驗是非常合理的選擇。

第四部分:課程期望

1.你對這門課的期望是什麽?你打算平均每周拿出多少個小時用在這門課上?你願意為了一個你感興趣的項目、或得到實戰鍛煉而付出更多時間和精力(包括熬夜)嗎?(必答)

由於是跨專業,對於大型軟件的合作開發沒有經驗,我希望在這門課上系統的學習到軟件開發的一般過程。

對於這門課的學習,我會根據老師具體的教學內容分配合理的時間,學好這門課。

對於我來說,為了感興趣的研究而熬夜,已經是家常便飯了,常常在關燈後在床上抱著筆記本碼代碼,偶爾甚至可以寫到天亮。

分析軟件

Web APP

Web APP 即在網頁上的應用,隨著 HTML 的發展而盛行,依賴於 HTML5 的新標準、CSS3 的新特性、以及 JavaScript 的發展,Web APP 在界面上已經可以美觀到接近原生應用,並且由於其使用起來非常方便,通過一個瀏覽器即可運行,如此方便的使用方式很快吸引了大量的用戶。對於 Web APP,收費與否取決於企業的性質,公益機構大多會有其免費的宣傳 Web APP,對於購物網站,則通過銷售商品來盈利,對於其他的一些機構也有各種各樣的需求,不過大多會通過廣告來賺取金錢。

Web APP 隨著互聯網的發展而發展,在未來的時間裏,互聯網仍是不可或缺的,因此,Web APP 在很長一段時間裏仍會健康發展。

Mobile Apps

現代人們幾乎人手一部手機,Mobile Apps 依托於手機以及平板等移動設備,發展飛快,無論是在手機上用視頻軟件看一場球賽,還是用即時通信軟件與數千公裏之外的朋友聊天,無不使用著 Mobile Apps。現如今,大多數 Mobile Apps 都是靠著廣告來賺取金錢的,也有通過提供有價值的東西來進行收費。

在很長的一段時間內,手機或平板還是會存在的,而 Mobile Apps 也會依附於手機以及平板存在,當然,如果有一天能有新產品革新手機以及平板,那麽 Mobile Apps 即走向終結。

Games

電子遊戲作為讓人們放松的娛樂方式,已經很久的歷史,但是由於真的太有意思了,導致很多青少年沈迷之中。在近些年的發展之中,遊戲畫面、遊戲的劇情有了質的提升,例如在 Grand Theft Auto 5 中,雖然遊戲內容暴力,但是其畫面以及劇情完全超越了真實的電影。超高的制作水準,使得現在大多數單機遊戲都是直接收費的,而對於網絡遊戲,大多數的模式是充錢可以變得更強。

隨著機器性能的提升 AR、VR 近些年來快速發展,目前已有部分遊戲采用 AR、VR 模式來進行交互,相信這也是未來遊戲的發展方向。

高級軟件工程作業 No. 0x01