10多年前,卡耐基梅隆大學(xué)計(jì)算機(jī)教授Jeannette Wing就曾提出這一概念。
按我的理解來看,編程的核心,不是語法,不是算法,甚至不是數(shù)據(jù)結(jié)構(gòu)本身。而是如何分析問題、拆解問題、解決問題的思維方式,也就是我們分析并發(fā)現(xiàn)規(guī)律、建立解決問題的模型、再映射到合適的數(shù)據(jù)結(jié)構(gòu)和算法上,后根據(jù)算法寫程序的過程。
這個過程中,前兩步的分解和模式識別,其實(shí)還屬于數(shù)學(xué)思維的范疇,而后面的抽象和算法卻是編程思維所獨(dú)有的,也是我們應(yīng)試教學(xué)上缺少的、真正可以解決問題的步驟。
那么,編程思維是如何應(yīng)用的?我舉個簡單的例子:
要如何用一只手表達(dá)26個字母呢?
就通常而言,我們一只手多數(shù)到5,就算再加上復(fù)雜的手勢,多也就數(shù)到10了。怎么樣?一只手要演示多達(dá)26種手勢,是不是毫無頭緒?
我們試著將問題拆分,一只手5個手指,要么彎曲,要么伸直,如果我們能給五個手指不同的賦值,是不是就能產(chǎn)生不同的排列組合呢?
由此,運(yùn)用編程簡單的二進(jìn)制算法,我們用一只手就能表達(dá)32個數(shù)字。
攥緊拳頭表示“0”
大拇指表示“1”
食指表示“2”
中指表示“4”
無名指表示“8”
小拇指表示“16”
將1-26與26個字母一一對應(yīng),就可以得到一組很容易理解的簡單手勢。
其實(shí),不僅是這種智力題,在我們的日常生活中,小到炒菜之前先把飯煮上(多線程),大到治國平天下(秦國張儀用連橫破壞六國合縱,其實(shí)是分治法),都能體現(xiàn)出編程思維。
別覺得我是生搬硬套,編程的各種經(jīng)典算法,諸如暴力法、遞推法、枚舉法、遞歸法、貪心法……提供了我們許多解決問題的途徑,而這些算法不僅是編程會用到,甚至在日常生活中也會給到我們啟迪。
網(wǎng)上隨便一查,鋪天蓋地都是編程天才少年的各種發(fā)明
你看,連一統(tǒng)天下的難題都能解決,還有什么難題,能難倒擁有編程思維的人呢?怪不得喬布斯都要說:每個人都應(yīng)該學(xué)習(xí)編程,因?yàn)樗虝闼伎肌?/span>學(xué)編程來酷叮貓少兒編程大連校區(qū)。