10多年前,卡耐基梅隆大学计算机教授Jeannette Wing就曾提出这一概念。
按我的理解来看,编程的核心,不是语法,不是算法,甚至不是数据结构本身。而是如何分析问题、拆解问题、解决问题的思维方式,也就是我们分析并发现规律、建立解决问题的模型、再映射到合适的数据结构和算法上,后根据算法写程序的过程。
这个过程中,前两步的分解和模式识别,其实还属于数学思维的范畴,而后面的抽象和算法却是编程思维所独有的,也是我们应试教学上缺少的、真正可以解决问题的步骤。
那么,编程思维是如何应用的?我举个简单的例子:
要如何用一只手表达26个字母呢?
就通常而言,我们一只手多数到5,就算再加上复杂的手势,多也就数到10了。怎么样?一只手要演示多达26种手势,是不是毫无头绪?
我们试着将问题拆分,一只手5个手指,要么弯曲,要么伸直,如果我们能给五个手指不同的赋值,是不是就能产生不同的排列组合呢?
由此,运用编程简单的二进制算法,我们用一只手就能表达32个数字。
攥紧拳头表示“0”
大拇指表示“1”
食指表示“2”
中指表示“4”
无名指表示“8”
小拇指表示“16”
将1-26与26个字母一一对应,就可以得到一组很容易理解的简单手势。
其实,不仅是这种智力题,在我们的日常生活中,小到炒菜之前先把饭煮上(多线程),大到治国平天下(秦国张仪用连横破坏六国合纵,其实是分治法),都能体现出编程思维。
别觉得我是生搬硬套,编程的各种经典算法,诸如暴力法、递推法、枚举法、递归法、贪心法……提供了我们许多解决问题的途径,而这些算法不仅是编程会用到,甚至在日常生活中也会给到我们启迪。
网上随便一查,铺天盖地都是编程天才少年的各种发明
你看,连一统天下的难题都能解决,还有什么难题,能难倒拥有编程思维的人呢?怪不得乔布斯都要说:每个人都应该学习编程,因为它教会你思考。学编程来酷叮猫少儿编程大连校区。