如何向新手程式設計師介紹程式設計?
學習Java,他們都說很easy。
作為一名剛從斯康星大學麥迪遜分校計算機科學系畢業的大學生,我透過一些程式設計課程認識了許多使用Java的朋友。現在很多學校都在從別的程式語言(大多是C ++)轉教Java,一項於2014年7月所做的研究表面截至調查時間為止,39個頂級美國CS項目已經有22個使用Java作為入門課程。
那麼,到底是什麼使得Java能從眾多的教學語言中脫穎而出?綜觀各方面,我們發現了一些蛛絲馬跡:
語法相對比較簡單(相較於C語言和C++),難點較少(還是相較於C語言和C++)。文法越簡單就意味著新手需要掌握的規律就越少,這對新手而言絕對不亞於一個福音。
Java相較於一些傳統的教學選擇,如C和C++,比較不容易出錯,因為很多操作都會自動檢查。如果你想要存取的陣列超出了其界限或使用空物件產生了異常,那程式就會透過漂亮的堆疊追蹤告訴你出了什麼錯誤,哪裡出了問題(直接將範圍縮小到造成這個問題的來源文件中)。與此相比,C語言和C++,如果訪問了空指針,那麼程式就像炸彈一樣毫無預警地爆炸,絲毫留給你任何有用的提示訊息(除非你是在調試器中運行,所以我們必須學會使用調試器,以防萬一)。而要是C語言和C++的陣列越界的話,那就更悲劇了,因為在很多例子中,甚至會有記憶體中數組元素值莫名其妙被改寫的情況。然後你只能面對這個崩潰的程序,目瞪口呆、完全束手無策。這絕對是分分鐘逼瘋一個程式設計師的節奏!
有了垃圾回收器就代表你並不需要親自來管理記憶體。用new關鍵字建立物件之後,那它將永遠保留在記憶體中(只要有任意一個地方引用即可)。而且使用完這個物件後,垃圾回收器就會為你清理掉這個物件。
Java在行業中的應用非常廣泛,因此,從理論上講,我們在學校裡學到的知識可以直接轉化成真正的工作。 TIOBE程式設計指標將它列為第二門最常用的程式語言。無論你是否同意TIOBE的準確分析,但你不得不同意Java廣泛使用的這個現狀。
Java是物件導向的。你可以建立包含資料的對象,然後寫方法用來描述作用於這些資料的行為。
上面這些聽上去真美!但是卻並不完整。
迂迴策略
幾乎所有的程式設計師所寫的任何語言的第一個程式都是「Hello World」。它所做的就是顯示一些訊息(傳統上都會選擇“Hello World”),然後退出,非常簡單。以下是用Java寫的Hello World程式:
public class Hello { public static void main(String[] args) { System.out.println("hello, world"); } }
一些對於程式設計全然陌生的人就會心有疑問了 ,然後這時候如果你是老師的話,嘿嘿,麻煩就來了。想要一下子就能將所有內容通通解釋給學生聽,可能會成為壓垮駱駝的稻草,所以,你最好採取迂迴策略。
「請問,public是什麼意思?」——現在沒必要考慮這些,以後我們會深入探討。
「class是什麼?」——現在沒必要考慮這些,以後我們會深入探討。
「static是什麼意思?」——現在沒必要考慮這些,以後我們會深入探討。
……等等,都可以這麼說。
但值得一提的是,無論是教什麼內容,我們都應該將其分解成一塊塊容易消化理解的組成部分。封裝(public關鍵字)、物件導向的程式設計(class和static)、陣列(String[ ])以及命令列參數(args)這些重要的知識都應該適時地解釋給學生。當然,對於那些尚處於程式啟蒙階段的新生來說,要想一口吃成個大胖子未免太過於天方夜譚了。我認識的很多朋友,他們在其他領域絕對算個佼佼者,但是碰到這些程式設計概念問題也立刻一個頭兩個大。就像是在代數中突然引入這個:
一旦我們知道了這些符號的含義,那麼理解起來似乎也沒有那麼困難。但是對於那些才涉足這領域的新生來說,這完全不亞於是無字天書啊。再則,迂迴策略雖然鼓勵了學生使他們不至於立刻洩氣,但是從另一個角度講,卻只是表面化地展示某種「神奇」成果,並沒有分析解釋其原理。但我想說,如果你想成長為真正的教師,這種方法與你的理念應該是背道而馳、截然相反的。例如Hello World這個例子,
Java嚴格面向對象,並要求每一個函數(或“方法”,在Java中的說法)被放置在一個類別中。如果你還沒讀過Execution in the Kingdom of Nouns這篇優秀文章,那我強烈推薦你去讀。它的主要內容可以概括為,「倡導物件導向的程式設計就像是為客人量身訂製服裝一樣」。向那些對if語句和for迴圈這些概念還是一團漿糊的新生解釋物件導向的設計原則,絕對是個糟糕的「呼叫」。要著眼於將工作分解為一個一個可以寫成函數的小片段,然後我們再回過頭來講什麼是OOP。
Java規定,所有的物件都是以堆的形式分配的,所以所有的物件變數都是指標。現在你需要解釋的是值和引用之間的差異,就像為什麼int、boolean、float在賦值和比較時與strings的行為就是有所不同。類似於這些衍生出來的問題共同組成了一個一致性的解釋工作原理的心智模式——作為程式設計師這個是必備——但是其過程異常艱鉅。
Java對於開發程式(無論大小範圍)而言或許真心是門超棒的程式語言,但是對於初學者而言這傢伙絕對算不上友好。
那我們該教什麼語言呢?
既然如此,那有人會問,那我一開始先學點簡單的概念,然後在這些的基礎上再深入學習Java,不就成了? !但很抱歉,Java表示臣妾做不到!
那我們該怎麼做呢?以下這兩種合情合理的開啟程式設計之路的方法或許能讓你有一種醍醐灌頂之感:
低水平的起始點,然後一步步提升難度。教你如何使用計算機,這樣你就可以直接用C語言寫一些簡單的程式。然後再在這個基礎上,建構更高層次的電腦科學結構體系。
高水準的起始點,然後再一步步降低難度。先教授電腦科學的理論和一種程式語言,這種程式語言得非常容易實現,並且毋須擔心底層機器的細節,例如Python,在這裡就是一個挺不錯的選擇,因為它不受正面加載Java需求的影響。然後再分解計算機是如何一步步實現這些理論的。
現在,第2個方法變得越來越風靡,從本文開頭提及的研究——Python已經超越Java成為了使用最廣的程式設計入門語言這一事實——可見一斑。
無論你選擇哪種方法,關鍵是要保持學生對此的興趣。如果你選擇的是低水平起始點的方法,可以使用Arduino或機器人技術套件,以便於學生可以在物理世界中觀看他們寫的程式碼。話說,我剛一開始用C語言為一支機器人團隊編寫程式碼,我就被這個奇幻的世界深深地迷住了:看著120磅的鋼管和轉動馬達因為我寫的程式碼而動起來的時候,那感覺真心是太神奇、太不可思議了。如果你選擇的是高水準起始點的方法的話,不妨利用庫中資源來製作視頻遊戲或其他圖形程式。
程式特別的不可思議。除了你的想像力還有表達能力,其他沒有別的東西可以限制你。找到學生的興趣切入點,寓教於樂,從易到難,循序漸進,教會他們如何使用工具,授之以魚不如授之以漁,讓他們在編程的世界中自由瘋狂地成長。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用正規表示式從PHP數組中移除重複值的方法:使用正規表示式/(.*)(.+)/i匹配並取代重複項。遍歷數組元素,使用preg_match檢查匹配情況。如果匹配,請跳過值;否則,將其添加到無重複值的新數組中。

C語言是初學者學習程式設計的理想選擇,其優點包括效率、多功能性和可移植性。學習C語言需要:安裝C編譯器(如MinGW或Cygwin)了解變數、資料型別、條件語句和迴圈語句編寫包含主函數和printf()函數的第一個程式透過實戰案例(如計算平均數)練習C語言知識

1、程式設計可用於開發各種軟體和應用程序,包括網站、手機應用程式、遊戲和數據分析工具等。它的應用領域非常廣泛,幾乎涵蓋了所有行業,包括科學研究、醫療保健、金融、教育、娛樂等。 2.學習程式設計可以幫助我們提升問題解決能力和邏輯思考能力。在程式設計過程中,我們需要分析和理解問題,找出解決方案,並將其轉換為程式碼。這種思維方式能夠培養我們的分析和抽象能力,提升我們解決實際問題的能力。

使用Golang建立基於瀏覽器的應用程式Golang結合JavaScript建構了動態的前端體驗。安裝Golang:造訪https://golang.org/doc/install。設定Golang專案:建立一個名為main.go的檔案。使用GorillaWebToolkit:新增GorillaWebToolkit程式碼以處理HTTP請求。建立HTML模板:在templates子目錄中建立index.html,這是主模板。

C++程式設計謎題涵蓋斐波那契數列、階乘、漢明距離、陣列最大值和最小值等演算法和資料結構概念,透過解決這些謎題,可以鞏固C++知識,提升演算法理解和程式設計技巧。

Python透過其易學性和強大功能,是初學者的理想程式設計入門語言。其基礎包括:變數:用於儲存資料(數字、字串、列表等)。資料型態:定義變數中資料的型態(整數、浮點數等)。運算符:用於數學運算和比較。控制流程:控製程式碼執行流程(條件語句、迴圈)。

Python程式設計入門安裝Python:從官方網站下載並安裝。 HelloWorld!:使用print("HelloWorld!")列印第一行程式碼。實戰案例:計算圓面積:使用π(3.14159)和半徑計算圓面積。變數和資料類型:使用變數儲存數據,Python中的資料類型包括整數、浮點數、字串和布林值。表達式與賦值:使用運算子將變數、常數和函數連接起來,並使用賦值運算子(=)將值賦給變數。控制流程:if-else語句:根據條件執行不同的程式碼區塊,確定奇
