有心的家長可能常常發現,參加信息學競賽的孩子,好像都特別聰明,除了編程方面的表現突出,他們各科的學習成績都很不錯,尤其是語數外這樣的重要基礎學科。
思維敏捷,動手能力強,語言表達清晰,對數學概念敏感,似乎已經成為了編程少年們的共同表現,這究竟是為什么呢?編程對孩子們的學習是有什么額外幫助嗎?這需要分別來看。
閱讀理解和表達邏輯
語文是百科之母,學習其他任何學科的“概念”,首先都是需要從語言角度去理解的,孩子在語文方面的表現,某種程度上來說是可以直接反映到其他學科的基礎理解能力上的。
識字、用詞、閱讀、背誦可以通過練習逐步掌握,但涉及到閱讀、作文之類的綜合性強的項目,才是Z考驗一個學生的綜合能力的。
隨著中高考改革的方向,對考生的閱讀能力要求是已經超過了課本范圍了,這是一個趨勢,在這個時代的孩子們一方面需要拓展閱讀范圍,另一方面也要訓練閱讀理解的能力和邏輯表達能力。
在編程課題中,首先孩子們是需要通過閱讀理解的技巧來理解題目,抓住各項概念并清晰明確的理解。學習編程需要孩子透過程序的外在表現,看到程序內部的邏輯并理解過程。
然后,孩子還需要還要結合編程語言的特性來做拆解、重構、調用、表達,這其中,非常強調順序、步驟、語言邏輯、語法嵌套,這將充分訓練孩子的邏輯思考能力。
每一次編程都是深度的閱讀理解,并且還是一次經過深度思考分析的重新表達。
孩子在經過反復訓練之后,自然會培養出一種對文字描述和對語言組織表達的敏銳感,這種敏銳,對學習更有深度的文學、哲學等課題有很大的幫助。
與“抽象”共舞
編程與數學的關系是天然的,也是漸進的。什么意思呢?編程能力越強,數學能力也必然是越強的,編程與數學形成了一條共生共成長的曲線。
這也就意味著,孩子需要學習更深的編程知識,就需要有一定的數學基礎。而孩子為了寫出自己心愛的程序,他們擁有更強的動機去理解數學知識,這是第一點益處。
另一方面,數學概念常常是很抽象的,但是當孩子把數學概念用到編程中來的時候,就是一個“形象化”的過程,比如設計游戲中的小人跳動X次后停下并前進Y步,就需要將數學表達轉化為程序語言的表達,在這個過程中既建立了編程思維,也加深了對數學知識的理解。
很多學生基本都是死記硬背數學公式和概念,解題的時候生搬硬套,但在程序世界里,通過計算機或者機器人直觀、具象化演繹,會讓孩子從原理和本質上把數學概念吃透,這種學習效果是遠超死記硬背的。
另一個語言環境
英語與編程,也有一層天然的共生關系——絕大多數編程語言都使用英文。在編程的過程中,我們定義變量,定義函數,查看Bug,都接觸英文閱讀和英文輸入。
很多信息學題目也是用英文描述的,Codeforces、TopCoder、ICPC、USACO、CCC等國際比賽,那就更需要英文的能力了。
在學習編程的過程中是無法逃避英語的,所以編程又無形中構成了語言環境,而我們都知道語言環境是學習語言的重要因素。
編程不僅是一種知識,一種技能,更是一種思維方式,它還衍生出了“催化劑”或“粘合劑”的角色,幫助著小coder們進行跨領域學習,建立更立體的知識系統,無論是在學校課程還是生活知識的學習中,都有很大的幫助。