小說家與程式設計師

大大老狼發表於2014-10-04

前言:

一直有個目標:出一本書,適合大眾閱讀的書有趣的書。 一直有個目標:讓更多的人體會到程式設計的樂趣。

在遇到樂高積木前,這兩個目標是分離的。現在這兩個目標可以合二為一了。

有許多人可能沒想過成為程式設計師,但想過了解一下電腦的神祕,成為程式設計師是最好的辦法,可又苦於無處下手,選什麼語言來學好呢,糾結於哪種既簡單又有趣;也有人想成為小說家,但想一下子寫出經典作品來,一直未出手寫,所以老是處在想的階段。其實最重要的是行動,走出第一步至關重要。這本書的目的就是引導讀者——不論你是中學生小學生或是大學生,是少年人還是老年人——成為一名程式設計師,工作就在入門上,先不要考慮難與易,先動手再說。

動手之前,還有點私人感慨抒發一下。

將程式設計師和小說家聯絡到一起很偶然,有兩點原因。首先,程式設計師與小說家有許多相似之處,都是用語言來寫東西,都需要熬夜,都需要創造性,都顯得很神祕很高尚一般人象無法深入其中。另外一點是,很有意思也很幸運,我在這兩方面都曾嘗試過,並且在我的周圍,出來一個世界級的大小說家——莫言。由此,諾貝爾文學獎成了家鄉最大的事,這成為高密這個縣級市裡面最熱鬧人們最為關心的話題,此事件從莫言獲獎開始一直持續不斷的熱了幾個月時間,現在冷卻了,但是,諾貝爾的世界級的份量仍然很沉重地擺在那裡。諾貝爾獎是許多領域中很多人的夢想。我兒時也有一個夢想,不知是因為當時受小有名氣的莫言的影響還是別的什麼原因,想成為一名小說家,從初中開始寫小說,作品屢投不中屢次未能在刊物發表,看來與收穫諾貝爾獎是差距巨大了,但寫作給我最終的收穫是使自己成了一名程式設計師。

真正開始深入的研究電腦程式設計,是從2000年開始,些時離我大學畢業有六年了,說實話,大學裡的日子寫小說的時候比看專業課的時候要認真得多,而成為一名教師後,開始教相應的程式設計課程時,小說寫作不得不暫時放下,但寫作還在繼續,從寫作小說到寫作計算機程式設計,慢慢開始認識到小說與程式類似的魅力。

轉變的開始是迷茫而艱難的,選擇什麼樣的語言,針對什麼樣的東西來寫程式,使自己思索了很多,現在的Scratch以積木的形式,可以使許多初學者以其為初始,向更多的計算機語言擴充套件。我剛開始選擇的是BASIC語言,思考著改變素材能否提高對程式設計技術與電腦的興致的同時,進入Visual Basic(以下簡稱VB)語言程式設計的提升時期。

從2000年開始,由於教學過程中遇到的教材陳舊問題,開始更新計算機語言教學方面的資料,開始研究VB計算機語言應用,從教學實際情況出發蒐集素材,整理成遊戲程式設計系列。有掃雷、迷宮、出圈遊戲等遊戲等代表作品,不僅如此,開始從實際應用出發解決問題,通過煙囪彎脖問題、選擇題考試等作品來歸納,並且第一篇作品《用VB實現選擇題考試》在《計算機世界》週報上發表。現在看來這個程式實在太稚嫩簡單了,但那卻是一個開始,正是自己真實轉變的寫真,大家可以看本書第2章第二回的愛因斯坦的板凳,這個問題其實也非常簡單,象不值一提,但任何簡單的哪怕簡單到簡陋的東西,都是我們很好的起點。以此為開始,通過與數學等科目結合整合教材增加教學資料的趣味性與可用性,寫成趣味數學問題解題,程式設計小博士等系列作品。總起來看,此階段主要研究工作集中在程式設計與學習層次。通過將資料集中與再造,以推出適合學生學習的趣味生動教材為目標,通過結集發表將自己的經驗同更多人交流和分享,獲得反饋後繼續加以改進,最後經過不斷努力,將寫作與程式設計結合,有了作品出爐,開始在報刊雜誌上發表,先後推出掃雷程式設計系列,程式設計小博士系列以及趣味數學程式設計系列和阿蘭程式演義系列四個系列集,本書中第2章和第3章主要來源於後面兩個集子。其實寫作與發表作品並非想象的那麼難,因為之前有過寫作十年卻隻字未發的窘境,而這一轉變使得我開始對程式著迷,開始深入程式設計。從一個寫作的老者到一個程式設計的新手,如何成長為一個程式設計的優秀者?帶著對這個問題的思考,我的程式設計進入第二個階段。

第二階段開始對最成功的程式設計者的經歷與經驗進行探索,通過成功人士的方法以啟發我們學習一種東西以達到成功。通過探索成功程式人物和及其研究方法,有了新的系列,尋跡系列專訪。這個過程與自己對所教學生的思考和自己的思考密切相關,教學的過程中,面對初中升學過來的文化課成績最差的一部分學生,是否他們天生不是學程式設計的料?一遍遍教不會的歷程,也一次次問自己,是否自己不是當教師的料?這兩個追問,激發了向最優秀者去尋找答案的想法。

2004年開始,因為在通過實際教學體驗體會到教材的改進方面對於教學效果改進侷限性,教學效果不很明顯,開始將重點從語言本身轉到和語言相關的方面,如語言的誕生過程、學習語言的方法、語言與語言之間的整合等。通過一系列專訪,通過網際網路或面對面採訪了十多位計算機方面的專家學者,開始形成這方面的體系。採訪物件包括C++語言之父、C語言之父、STL之父、Pascal語言之父,網際網路之父、N-S圖之父、LOGO之父、計算機程式設計藝術教授以及LEGO頭腦風暴機器人之父等專家。通過專訪系列的完成,對行業發展有所對比,對於教學中出現的問題有了更好的借鑑,也從中看到了自己專業知識方面的差距。C++、Pascal語言與C語言之父的經驗說明,對於專業知識要執著地研究,堅持不懈,最終會取得受人矚目的成果,他們在自己的行業內都堅持三十年之上,特別是C語言之父,在自己的行業內樂此不疲達到五十年,正是半個世紀的堅持,才使其技術成果光芒四射。通過計算機程式設計藝術教授,告訴我們對於後續的教學與研究,要積極地總結前人的知識,將其形成可交流的文字材料,更要積極利用現在的網際網路等先進手段。而通過N-S圖之父,LOGO之父以及頭腦風暴機器人之父,更進一步體會到教與學要講究方法,教學的過程中,要增加多感官利用,手腦並用,通過實際與實踐加深學習的效果。不論是莫言的成功還是這些成功的程式語言成功人士,都離不開堅持,莫言堅持35年之久實現了自己的最高理想,諾貝爾獎,而現在已作古的C語言之父在自己熱愛的行業裡堅持達半個世紀之久。堅持的精神是至關重要的,成功沒有捷徑,只有不懈的努力。又是什麼塑造出這種長達幾十年的忠實的努力呢,以此為出發點,進入個人程式設計的第三個階段,提升行業興趣。要提升對行業的興趣,先要了解這個行業。

第三階段,深入瞭解和觀察行業,對行業的問題提煉我們自己的觀察和思考:IT評論與行業觀察——部落格寫作。將自己的觀察與體驗整理,與更多人交流。

方法和教材的改進仍然不能解決教育教學過程中的許多問題,教育本身並不能解決所有的問題,IT教育也是如此。從2006年開始,對行業進行觀察與思索,想通過建立一個廣泛的行業通識圈子,以達到提高學生學習興趣的目的。通過IT評論《請放網咖一馬》,開始對行業進行綜合思考與評價,當年發生在方山縣的全國首個“有網無吧”縣事件在業界震動很大,將許多地方對網咖的極端態度顯露無疑。以此開始,在《計算機世界》發表IT評論,由時下新聞積極加入自己的思索,而後,通過和《電腦商情報》家用電腦週刊、《電腦報》網路與軟體版合作,在新聞版推出熱點新聞評論專欄,對每週IT新聞熱點事件進行比較綜述。由於網路的普及,許多日常事件同IT關係越來越密切,IT事件很多,其中涉及許多值得業界思考的地方,時下的熱點事件很多,象網路遊戲、防毒軟體、盜版、搜尋引擎等都引起業界極大關注。由於紙媒傳播的侷限性,此時也開始個人網路部落格創作,通過IT部落格IT狼閒評發表自己的觀點,與網友和相關專業人士形成互動。這些相關的知識對於程式設計能力的提高有一定幫助,但作用並非立竿見影式的。原因在哪裡呢? 我們教學或自學或學習某一專業知識起效趨微的原因在哪裡?我們需要如何學。優秀的個體給我們提供了最好的例證,我們需要從最優秀的個體中學習如何求知,如何處事,如何做人。是教法、教材還是因為我們的學習環境太簡陋,導致我們不能好好地學習知識,還是由於其他的原因,使我們對知識缺乏必要的興致與興趣呢?是由於我們的父母對我們管教太嚴厲或太寬鬆,還是由於初中小學時某一位老師,激起同學對某一學科的義憤?這些可能都有,最根本的原因在哪裡?還在我們自己。

我們需要檢討自己的行為,重拾自己的優點,以獲得對生活、對知識的熱愛與激情。從2011年起,通過對幸福課(積極心理學Positive Psychology)的實踐,教與學起效趨微的原因慢慢浮出水面,最重要的點在於我們每一個人自己。誰能解決這一問題,還要靠我們自己。爹孃,老師,朋友都是外力,最重要的是我們自己。重新認識自己,在傳統與新潮間找好自己的定位,在優勢與缺點的對照中重新發現自己的優點和優勢;改造自己思考問題的方式,以開放的態度面對問題,多看到問題的積極一面,注重實現的過程而不僅看最終的結果,使普通的你變優秀,使優秀的你變卓越;培養自己的興趣愛好,以百分百的熱情對待新知,以百分百的投入來幹一件事,想幹任何事都沒有一下子成功的祕笈,祕笈都是老老實實努力刻苦地去幹,並且從任何時候開始都不算晚。在追問幸福的祕密時,我們的學習生活中需要什麼樣子的自己?重新發現自己的優點,正視自己,實現個人的成長。這看起來與程式設計沒有關係,但正是從程式與寫作的融合中讓我看到興趣的力量,從寫作的興趣擴充套件到程式設計的興致,從一個方面的優勢擴充套件到另一方面的優勢,程式設計讓我找到了自己的生活目標和努力方向,同寫作結合的程式設計給了我許多充實的時間和快樂的體驗。

我不可能象生活在與我同一時候的高密籍作家那樣獲得諾貝爾大獎,但通過寫作我收穫了程式設計。計算機程式就是這樣一種可以幫助人們天賦獲得發展的良好的輔助用品,可以讓人們收穫更多的人生幸福和快樂。寫作和程式讓我重新發現了自己,找到了充實的可以稍有作為的生活,希望對於計算機初學者和程式設計初學者能有所啟示。圖形化的Scratch語言,通過積木的直觀形式,可以將語言的有趣的部分傳達給更多的人,通過一種巧妙的工具,人們會發現自己更多的東西。

下面的書中,是本人在電腦商情報、軟體報,中小學電腦報、電腦報等報刊發表相關程式設計類文章的再創作,因為用了N-S圖,有了圖形的方式,使我從一個寫小說的非著名小說家成長為一名程式設計師。因為有了Scratch,圖形化可以直接變成可執行的電腦程式,這樣,這部原本非專業人士才能艱難解讀的書,可能被更多人瞭解,並從中體會到樂趣。

(初稿發於2014年2月上《電腦程式設計技巧與維護》)

部落格地址:http://dadalaolang.blog.ccidnet.com/。

百度一下:IT狼閒評

電子郵件:zhao.yuyong@gmail.com

趙玉勇 2014年10月1日

相關文章