《做中學》讀后有感
最近讀了婁老師的“做中學”系列文章,有很大感觸,今天想著重談一談我在學習方面收到的啟發。
如何成功get一項技能
如果問到“如何開始get一項技能”,我想我們應該是最有發言權的一代。從小就被爸爸媽媽引導著參加各種課外班,鋼琴畫畫舞蹈書法,或情愿或不情愿地,“被掌握”了一身技能。但是仔細想想,又有哪項技能真正能凌駕于眾人之上,可以自豪地被稱為“特長”呢?
以我自己為例,小時候連續幾年利用寒暑假及周末課余時間學習拉二胡,可是等我終于摸到門路,學會換把,能演奏《賽馬》之類的樂曲時,卻因為升學壓力變大漸漸減少練習,直至高中不得不放棄。所以,我從不敢說自己的二胡水平能凌駕于大多數人,畢竟比我專業的人太多太多。
不過,學習拉二胡的過程卻給了我很多啟示。
由于開始學習二胡的時候我年齡很小,使勁伸直胳膊才能把琴弓拉開,所以光是持琴持弓的姿勢就練了很久。后來慢慢開始學著識譜,拉出不成調的曲子,不斷聽了練,練了聽,模仿老師,修正自我,最終竟也能拉得像模像樣了。在這期間,常常每天一練就是三四個小時,胳膊酸麻,左手食指也被琴弦磨出了繭子,但就是不肯停下來歇一歇。我拉二胡的水平就是在這個時期突飛猛進的。
現在想來,一項技能從入門到精通,往往需要以下條件:
強大的意志力。就像我學拉二胡的那段日子,小朋友叫我出去玩我也不應,最后找到我家,也只能坐在旁邊看著滿臉堅毅的我扣著樂譜,端著琴弓。所以說,不管是興趣所致,還是現實所迫,總之必須找到一個讓你堅持下去的理由,橫下心來達到即定的目標。
必要的練習。學習二胡需要大量練習,這是毋庸置疑的。在練習中逐漸摸索,逐漸熟悉,逐漸提高。不管是高考前期老師要求的每天三套題,還是如今Java學習需要編寫五千行代碼,都是通過必要的練習為技能的提高打下基礎。這一點我在看完婁老師的博客后深有感觸。婁老師在「做中學(Learning By Doing)」之乒乓球刻意訓練一年總結一文中記錄了他學習乒乓球的過程:
“這一年訓練,平均每天揮拍7000多次,一年200多萬次;這一年訓練,打爛了100多個乒乓球;這一年訓練,穿爛了兩雙乒乓鞋......”
指點迷津的老師。俗話說:“嚴師出高徒。”現在回想起我的二胡老師,我仍怕他三分。他從來都是毫不客氣地批評我的錯誤,在他的嚴格要求下我也從不敢偷懶懈怠。不過正是有了他的指點,我的技術才能在短時間內有很大的進步和提高。慶幸我又遇到了一位嚴格要求我們的老師,不管是定期寫博客還是每天背單詞,婁老師帶給我們的絕不僅僅是知識本身,更是一種積極健康的生活態度以及知難而上的精神品格。
學習拉二胡的過程對我來說是一筆不小的財富,在接下來的學習中,我會拿出不服輸的勁頭,加強練習,同時主動向老師請教,盡我最大努力學好Java這門課程。
有關C語言學習的調查
你是怎么學習C語言的?(作業,實驗,教材,其他),與你的高超技能相比,C語言的學習有什么經驗和教訓?
- 我學習c語言的過程大致分為:課前預習、精讀教材、課上聽講、課后練習、歸納改進這幾個部分。重中之重還是課后的練習。非常感謝徐小青老師的嚴格要求,讓我們養成了每天編程15道題的好習慣。其實無論哪一個部分,都與一行一行的代碼練習是分不開的。就像韋鈺老師的做中學”/ “Learning by Doing” 理念一樣,“做了才會”,只有親手編程,才能從一次又一次修改bug的過程中得到提升。
目前為止估算自己寫過多少行C代碼?理解的情況如何?
- 上個學期的學習過程中,差不多兩個月的時間有每日編程任務。按照每天獨立完成7道無重復的題目來計算,前20天編寫的代碼是較為簡單的,每道大概在15行左右,后40天難度有所加深,每道平均需要30-50行。所以說,經過上學期c語言編程的嚴格訓練,我認為完成下學期Java課程要求的5000行代碼并非難事。由于C語言期末考試并未涉及到結構體和文件操作,所以平時也沒有著重訓練,相對而言比較薄弱。
學過了C語言,你分的清數組指針,指針數組;函數指針,指針函數這些概念嗎?
- 數組指針是一個指針變量,用來指向二維數組;而指針數組是指一個數組,里面存放了多個指針變量。兩者的本質是不同的。同樣道理,指針函數是帶指針的函數,本質上是一個函數,返回值是指針;函數指針是指指向函數的指針變量,函數指針指向函數的入口地址。
學過了C語言,你明白文件和流的區別和聯系嗎?如何區分文本文件和二進制文件?如何編程操作這兩種文件?
- 通過課下的自學,我大致明白了文件和流的關系。流在C中就是一種文件形式,它實際上就表示一個文件或設備。這種和流等同的文件也可以稱為流式文件。當流到磁盤而成為文件時,要啟動磁盤寫入操作,這樣流入一個字符或者流入一個字節均要啟動磁盤操作,將大大降低傳輸效率,并且影響磁盤的使用壽命。文本文件中的每一位數字都單獨占用一個字節的存儲空間,而二進制文件則是把整個數字作為一個二進制數來儲存的。例如:單詞“August”用文本文件或二進制文件儲存都占據6字節,而1234.56在文本文件占據7字節,在二進制文件占據4字節。因此從儲存使用情況來看,二進制文件更緊湊一些,占據更少的磁盤空間。
學過了C語言,你知道什么叫面向過程程序設計嗎?它解決問題的方法是什么?
- 以我的理解,面向過程是把解決問題的步驟一一列出,用函數實現,需要時調用函數完成,是比較基礎和原始的。
在C語言里面,什么是模塊?你寫過多個源文件的程序嗎?
- C語言的編程是基于模塊的。以函數為例,在主函數調用各個不同功能的函數,而每一個函數獨自完成不同的功能。如需修改,只改動每一個模塊即可。由于我現階段編寫的程序都較為簡單,還沒有涉及大程序,所以也沒有嘗試編寫過多個源文件的程序。
學過了C語言,你知道什么是“高內聚,低耦合”嗎?這個原則如何應用到高質量程序設計中?
- “高內聚”,即模塊內部各個部分的緊密程度很高,能夠很好完成某一特定功能;“低內聚”,即不同模塊之間的聯系很弱,各個模塊相互獨立。“高內聚,低耦合”可以使系統便于修改、維護和開發,從程序設計來看,這可以讓代碼變得可讀性更強,后期維護更方便。具體來說,不同模塊之間的嵌套要盡量少,而同一種功能的模塊則要盡量整合在一起,這樣一來,模塊的功能性更強,如果要對程序進行修改,也可以避免“牽一發而動全身”的麻煩。
學過了C語言,你如何把數組A的內容復制到數組B中?如何查找整數數組A中有沒有數字5?如何對整數數組A進行排序(從小到大,從大到小)?寫出相應的程序。
- 把數組A的內容復制到數組B中:
#include<stdio.h>
#define MAX 10
void main()
{int a[MAX]={0,1,2,3,4,5,6,7,8,9},b[MAX],i;for(i=0;i<=MAX-1;i++){b[i]=a[i];printf("%d",b[i]);}
}
- 查找整數數組A中有沒有數字5:
#include<stdio.h>
#define MAX 50
void main()
{int number[MAX]={0,1,2,3,4,5,6,7,8,9},i;for(i=0;i<=MAX-1;i++)if(number[i]==5)printf("The number 5 is found.");
}
- 對整數數組A進行排序(以升序為例):
int a[10];
void sort(int l,int r,int n)
{int i,j,t,flag,p;int k;if(r>l){i=l;j=r;p=a[i];flag=0;while(!flag){do{++i;}while(a[i]<=p&&i<=r);while(a[j]>=p&&j>l){--j;}if(i>=j){t=a[l];a[l]=a[j];a[j]=t;flag=1;}else{t=a[i];a[i]=a[j];a[j]=t;}}sort(l,j-1,n);sort(i,r,n);}}
void main()
{int i,l,r,n;printf("How many numbers? ");scanf("%d",&n);printf("Enter numbers: ");for(i=0;i<n;i++)scanf("%d",&a[i]);l=0;r=n-1;sort(l,r,n);printf("Numbers after sorting: ");for(i=0;i<=n-1;i++)printf("%d ",a[i]);
}
寫一個程序,統計自己C語言共寫了多少行代碼。
- 由于上學期學習C語言時,只是將Codeblocks看作檢驗自己程序是否成功的工具,并沒有保存所有代碼,也沒有統計所寫代碼行數的意識。程序如下:
#include<stdio.h>
void main(char *argv[])
{FILE *fp;char ch;int lines=0;fp=fopen(argv[1],"r");if(fp==NULL){printf("\nFile is not found.");return;}while((ch=getc(fp))!=EOF){if(ch=='\n') lines++;}printf("\nThe number of lines=%d",lines);fclose(fp);
}
你知道什么是斷點嗎?給出自己調試程序的例子。
- 斷點是指,在程序進行過程中,計算機中斷該程序而去執行其他程序。在編程過程中可以設置斷點進行調試,以確定程序當前的執行情況。在較難的程序中,如果編譯出現問題,我會進行調試以查找錯誤。
《Java程序設計》學習目標
經過下學期Java課程的學習,我希望能夠熟練掌握這門語言,編寫出高質量的代碼,學習Java語言的基礎知識以及它的核心類庫等等,在不斷的練習中得到提高。在學習過程中,我會每天不間斷練習并每周進行歸納總結,錘煉代碼,改進程序,提高編程水平。“做中學”,即進行實踐,動手操作,所以Java的學習絕不可拘泥于書本的閱讀,而應該多上機實踐。
公文寫作能力
由于我的父親在單位分管文稿撰寫的工作,經常購買各種書籍。受到這種熏陶,所以我從小熱愛寫作,小學中學階段也獲得過校級市級甚至國家級的獎項,我的作品《放手》獲得國家級銀獎并被收錄進作品集《飛舞的剪紙》。這對于當時的我來說是莫大的鼓勵。中學時期寫作思維受到中考和高考的限制,也沒有豐富的課余時間寫文章,寫作水平也僅僅在議論文、記敘文等文體上有些許提高。
到了大學,我加入了院學生會辦公室,有許多公文需要我們學生來寫,這才明白公文寫作的重要性。在學生工作中,我負責會議紀要的撰寫,也嘗試寫過新聞稿、請示、策劃書等等,但明顯感覺到吃力,主要原因在于詞匯的匱乏以及對黨和國家方針政策理解的不透徹。
雖然在過去的一年半時間里,我積累了一些公文寫作的經驗,但我深知遠遠不足。所以在接下來時間里,我會著重訓練自己對時事政治的分析能力,持續關注黨和國家新的方針政策,同時虛心向長輩請教,為今后的公文寫作打下良好的基礎,努力做到“提筆能寫,開口能說,問策能對,遇事能辦”。
以上均為個人一些淺薄的認識和見解,尤其涉及編程等方面的內容一定存在疏漏之處,歡迎大家指正~