我和C 校園篇

2021-09-30 06:05:22 字數 4754 閱讀 3157

在十二年前, 我從高考失敗的陰影中走出來, 作為計算機專業的入學新生, 來到南方一所並不知名的綜合大學. 剛入學的時候, 對於我的專業, 基本上是不甚了解. 只知道是個高科技的東西, 但是它離我似乎既遠又近. 印象深刻的是高考之後, 在家附近出了一間最間的"網咖", 其實還算不上是真正的網咖. 只能玩區域網遊戲, 並不能聯上網際網路. 那是qq還是未來之物呢. 見識了帝國時代和紅色警戒, 真的是很顛覆性的直觀認識啊. 之前也聽說過一點程式設計啊, **之類的術語, 又覺得好神秘不可親近. 第一次親臨計算機面前時, 面對圖形化的計算機有點目瞪口呆, 和本來想象中的黑底白字截然不同. 對於光碟機, 滑鼠這些個新鮮玩意, 真的是又好奇, 又有點不知從何下手的感覺. 看著桌面上的內容在老生面前有如彩蝶翻飛, 真個是心潮澎湃.

不過第一次和專業有點關係的課程, 計算機基礎, 給了我當頭一棒. 不知道是老師真的水平太高還是故弄玄虛, 給我們這些初入大學的新生們, 大講了一通數理邏輯, 什麼與或非, 頭暈腦漲, 不知所云. 真的是個下馬威, 殺威棒, 立時覺得計算機專業真個有如登天之難了.

在大學一年級我開始上的第一門程式設計課是pascal. 恐怕現在新入學的同學已經比較小接觸這樣的語言了. 雖然我只學了乙個學期, 而且後來也沒機會一直用下來, 但是給我的影響卻是很深刻的. 讓我理解了很多基本的程式設計與開發理念, 最簡單的資料結構和基礎知識. 現在想起來也很感激我的這位啟蒙老師. 只記得是姓劉的女老師, 慚愧得緊, 當年一考完試就忘了人家的姓名... ... 鄙視一下自己.

但是很多問題在學習的過程中會冒出來, 現在想起來, 覺得很簡單而且幼稚了. 比如為什麼用main來作為函式的開始, main函式是如何被呼叫的. 作業系統是個什麼東西? 有黑白視窗的dos和有漂亮介面的windows95有什麼區別呢? 恐怕這些問題連普通非計算機專業, 有點計算機基礎的同學也能說個**不離十. 不過對於我們那一代的同學, 這種現象還是挺普遍的. 比如我的上鋪同學, 還曾問過鍵盤旁邊那個連著跟線, 象個饅頭一樣的東西是幹什麼的(滑鼠)

不過我覺得, 有問題總是件好事,有問題說明你是在思考. 回答不出來問題, 是咱們的能力問題, 知識積累的問題. 這些可以通過努力都提高和改進的. 但是如果沒有問題, 那就比較糟糕, 是態度問題呢. 對於這些問題的思考和回答, 步步上公升, 才能提高自己的水平.

後來學過c語言, 老師當然講得很神了, 比如說起了微軟作業系統的核心就是用c語言來實現. 還可以和硬體結合進行程式設計, 它的執行效率是在組合語言之外等等. 最高但是象牙塔中的教育, 總是難免有點空對空的缺憾, 只是提了一點知識概念, 對任何具體的說明都沒有. 對我們來說, 真的是蜻蜓點水, 除了知道自己什麼都不知道, 就真不知道還有什麼其他. 現在想來老師的課程有點不合理的地方, c語言和資料結構是分開來講. 而且講語言時, 總是圍繞著基本的語言特性, 比如{}有什麼好處, 語句之後用;作為**的結束符之類的內容. 這些細枝末節的東西, 如果是與實際的操作相結合, 那就上手容易得多. 說三遍不如動手作一遍. 用c語言來實踐一下資料結構, 比如堆疊鍊錶什麼的, 該有多好. 而且當時已經推出了vc++6.0, 已經有了基本的型別庫, 自己掌握之後, 再來比較一下類庫是如何實現, 從效能和效率上來梳理自己的知識體系. 學習效果和掌握程度要高得多. 當然也許現在這麼說對當時的老師也有點要求過高了, 那會兒大家面對vc++6.0都還是剛開始認識和了解, 連本好點的參考書都沒有. 老師也沒有能力規劃得如此好吧. 還記得有老師對我們解釋什麼是物件導向的開發就是就是作gui的程式, 面向過程的開發就是作命令列窗體程式.

在實驗課上,我們還是用c語言總在做些輸出字串, 列印hello world之類, 只能體現思想, 但是和實際的需求沒有什麼關聯的實驗性質的程式. 功能點也是剝離的, 這樣生吞活剝地學下去, 雖然也記住了不少函式, 但是沒有乙個實戰的檢驗, 到底也少不了趙括紙上談兵之後的惴惴不安.

98年剛出 vc++6.0, 當時的主流開發框架是mfc. 那時看過乙個petzald寫的windows程式設計. 記不太清楚名字了, 反正是一本很經典的c++ windows視覺化程式設計的書. 在那時, printf, sprintf用得還不是很熟練的時代, 對於面向過程開發, 物件導向開發還缺乏基本概念的時候, 猛然看這樣的書, 只覺得天書, 天書, 還是天書. 不過也想起來一位老師對於物件導向與面向過程開發的解釋, 面向過程就是黑窗體的命令列程式, 物件導向就是視覺化有窗體按鈕編輯框的開發. 也曾經一度深信不疑. 現在想起來, 對自己當時虔誠的信仰不免有些好笑. 不過, 我不認為這位老師說的有什麼太不靠譜. 畢竟, 當時對於c++的理解, 似乎還是乙個蠻荒時代, 很多後來被奉為經典的書籍還正在醞釀之中, 苛求那位老師也是不公平的. 而且我認為能在那時大家基礎都近乎空白的情況下, 可以用很直觀, 很形象的解釋給我們建立乙個基本的印象, 把複雜問題用簡單的語言表述出來, 也是件了不起的事. 正如我們現在的人, 沒有必要去笑歐幾里得幾何太粗淺一樣.

有些動手能力很強的同學, 自己買了電腦, 在vb環境下除錯一下應用程式, 加加, 操作檔案, 資料庫訪問, 很是讓人羨慕. 不過, 也許是我個人的惰性吧, 當時有了一點pascal和c語言的基礎之後, 對於大小寫不區分的**, 風格不統一, 生成了一種天生的偏見, 無法接受. 仍然在console窗體中, 和c語言的printf作著親密接觸.

在上大三時, 學校也開始教授c++. 不過是個選修課, 由於知識體系的繼承性, 我很自然地對c++青睞有加. 不過學校裡的教學方式, 不得不承認帶著深厚的應試教育的風格, 課堂上對c++的解釋是一堆知識點的羅列, 最多只能回答"怎麼做","how to do", 而背後的因果, 結構, 為什麼卻是隻字未提. 結果是很多人聽得一頭霧水, 對於我也只是知其然, 不知其何以然. 有的時候向老師提問, 還記得代課的耿姓女老師也被問得一頭汗的場面. 那時深深地痛苦著, 為什麼要用虛函式的繼承來實現多型??? 那時的水平僅僅達到能實現功能的要求, 對於多種c++語言特性, 沒有直接使用的動機, 就很難去深刻地理解它. 那時出版的關於c++的書, 實在是差勁的多, 精華的少. 現在想起來, 有些書說得不客氣點, 就是在騙錢呢. 一些從msdn上查詢得到的內容, 也當作個重點來介紹. 把vc++6.0上一些基本的介面操作也連篇累牘地講述. 無語了. 多年之後, 我的建議是, 學習c++, 只看大師. 不是說國內的作家不行, 是我認為, 看國外的大師就足夠了. 等你能把國外的大師經典讀明白, 你已經上了層次, 沒有必要再看國內的這些c++"科普"書了. 另外就是wrox出版社推出的紅皮書系列, 真是很經典. 涉及的知識面也很寬. 想起來就要順便表達一下感謝了.

在畢業設計時, 已經對c++的基本用法已經有了一點心得, 在選題時, 看到很多題目都是自己不熟悉的內容, 比如當時比較時髦的erp, 資料庫, 進銷存系統等. 但是覺得自己對於領域知識的了解還非常有限, 與其這時就和業務相**, 還不如繼續打技術基礎. 這時看到有個題目com技術的應用, (component object model), 接觸了一段時間的com技術, 不過當時學習的師資水平還非常有限, 就連給我們授課的老師(只記得是姓蔣的一位女研究生), 對於設計模式的了解也非常有限. 但是類廠模式, **模式在com中是如此重要, 以至於沒有它們, 有些基本的com概念就很難解釋得清楚. 現在回憶起當時學com, 其實是對自己c++基礎知識中, 以介面為基本概念進行的一次重新梳理, 終於有比較直觀的印象來理解c++所體現的基本三要素, 封裝, 繼承和多型. 當然, 這還只是當時的理解, 其實, 後面還會大幅的再次改變對c++的認識.

本科畢業之後, 我也參加了研究生考試, 很不幸, 我心儀的學校並沒有接受我, 不過所幸我在畢業設計期間的表現還比較突出, 給我當時的輔導老師留下了深刻印象, 她正好也是我們學院的研究生導師, 在她的幫助下, 我又重回母校, 投入她的門下進行研究生階段的學習. 回到乙個師資力量比較薄弱的學習讀研, 是件比較浪費時間的事. 不過不幸之中的萬幸, 我的老師雖然在技術上沒有給我很直接的指導, 但是她對我作人, 作技術的認識, 產生了很深刻的影響, 在此, 回憶起她的諄諄教導, 仍然是感激不盡. 同時老師也給我提供了一些很好的實習機會, 乙個我校與日本某公司合作的it小公司. 現在想起來, 這段實習經歷對我的影響非常深遠, 實實在在地在乙個專案上投入, 去思考, 去反思自己的學習方法和工作方法, 為以後的工作起了乙個很好的頭. 同時也小小地積累了一點與同事合作的經驗.

想起的一點例子就說一說. 當時去公司實習的一共有同期同學七人. 大家的想法和出發點並不一樣. 比如我就比較單純, 當時已經認定技術是自己日後的唯一出路, 所以帶著很個的熱情和積極性. 可是有些同學已經是工作幾年, 是打算通過考研來改變一下自己的方向, 比如變成老師什麼的. 還有的是立志於讀博士, 走學究這條路. 還有乾脆就是通過讀研, 再來享受幾年大學生活而已. 不同的目的, 就會反映到不同的態度和行動上. 這對於我日後反思自己的行動, 有了初步的參考.

在公司實習了大約一年半, 也結識了幾位朋友, 喜歡鑽研技術的同道中人. 不過當時作的專案都是基於asp.net平台的辦公室自動化還有土建的工程專案管理平台. 所以也投入了很多的時間和精力去學習.net平台, 以及在此平台基礎上的相關技術, 比如ado.net, asp.net, c#等等. 在這段經歷中, 我感覺到, 有著明確目標的學習, 要比為了成績學習, 有更大的驅動力. 目的是因, 行動是果. 給我很深的感觸. 而且現在回憶起來當時的學習方法, 非常學生氣, 還帶著分章節, 劃重點這樣的應試風格. 而且筆記作得非常之多, 多卻無用, 大部分是抄書, 或者是技術書籍的"縮寫版本". 雖然一本一本寫下來很有成就感, 但是, 沒有真正體會其中的意義, 簡單的抄寫沒有什麼意義. 現在這些筆記, 除了留一兩本作為當年紀念之外, 基本上已經被我用作草稿本了. 呵呵.

補充一句, 別怕吃苦, 因為我上的不是什麼名校, 沒有很好的學歷背景, 那麼讓自己能在競爭激烈的地方站穩腳跟, 就只能靠自己的業務能力了. 有點危機感, 總是件好事情. 不過不得不承認, 高水平的學校, 無論是知識層面還是知識寬度, 都是我們這些弱校所不能比擬的. 學校給的資源有限, 只要通過努力, 還是可以把這個差距彌補上的. 另外我也看到有名校的學生, 沒有充分利用自己所處環境的優勢和資源, 以至於沒有把自己從高考中獲取的領先優勢保持下來, 這是件非常可惜的事.

我的讀書計畫 C 篇

use a book as a bee does flowers 哈哈,這是我的部落格的副標題,嗯,是bugzilla上的一句話。其實感覺自己還是比較懶,自律性不夠好,平時浪費了不少時間。為了能夠對得起這句話,俺決定給自己制定乙個近期的讀書計畫,首先讀一些以前沒讀過的書,拓展知識面。首先從c 開始吧...

C 課外實踐 校園二手平台(心得篇)

先宣告一下,現在回頭看一下自己做的小程式,感覺很不怎麼地。但是通過這次的實踐明白了很多的東西。至於程式實現的什麼給你,通過名字就可以猜出來。不過,是客戶端的。我想,這應該是我見過的第乙個以客戶端為模式的交易 了。這次的心得 1 盡自己的一切努力,用 實現自己的想法。這裡,我想說,因為程式設計工具的完...

校園裡的藍色單車(故事篇)

校園裡的藍色單車 故事篇 創業失敗啟示錄 系列文章。第一章 校園裡的藍色單車 故事篇 時間回到2012年10月,我的大二上半學期。這是乙個大一學弟的創意。我們的大學建在自然風景區內,校內環境優美,綠水青山,各式建築錯落有致。宿舍到教學樓,宿舍到食堂,宿舍到校外,上坡下坡,翻山越嶺 彼此間距離都比較遠...