"语言并非仅仅是一种用以交流思想的工具,而且是存在的住所。"
编程思维与编程语言是编程中两大重要板块。轻松搭建编程逻辑的关键,在于准确把握它们的本质。
编程语言种类有很多,Python、C语言、C++,Java.....当然还有孩子喜欢的Scratch图形化编程语言。这么多编程语言,共通之处在哪里?新手老师,如何快速掌握一门编程语言?孩子学编程语言,关键在于学什么?
一、万变不离其宗,编程语言的实质是什么?
语言是人类最重要的交际工具,是人们沟通的主要表达方式。
人类迄今为止发明了三种标志性的语言,分别是自然语言、数学语言、程序语言,分别对应了人类的三个文明时代:农业与手工业时代、工业时代、信息时代。
每一种符号体系的建立都是人类智慧跨越式的发展,是上了一个大台阶。
相比于人类语言,琳琅满目的编程语言,它们的实质是什么?
实际上,任何一门编程语言至少包含两类内容:
知识(编程语言的共性,可迁移)
规则(编程语言的特性,不可迁移)
知识是共性,面向所有编程语言通用。
规则是特性,一门编程语言特有的规则。
就像人类语言用于人与人的交流,编程语言能实现人与机器之间的交流沟通,让人类可以享受智能服务的便利与好处。编程语言的实质,在于人机高效沟通的规则。
1)首先,编程是一门语言类技能
通俗的说,语言基本被定义成一种人际沟通的工具,或用于人际沟通的一组符号。而编程语言(Programming Language)可以简单理解为一种计算机和人都能识别的语言。既然能称作做语言,同样也遵循着语言的规律。
我们学习一门语言,最接近本质地学习一门语言时,我们最关心什么?
答案就是这个语言的规范/语言标准。正是这份规范/标准里的内容,让一门语言真正成了一门语言。
人类语言的规则,并没有一开始就被固化在某处,而是会经过一个动态学习的过程,然后最终被固化在人类大脑中。
人类的语言是人与人直接交流用的,经过了几十万年的打磨,可以比较随意地表达,文字顺序乱了我们也能看得懂,因为有文化和语境的帮助。然而,机器为了准确,不能有这样的随意性,必须得有一定的规范。
2)其次,编程语言规范,起源于人机相互驯化
编程语言和人类语言相似的地方,在于都有一定规则:
谁是倾听者、执行者,谁就要理解命令者语言背后隐含的意义;同样的,谁是发号施令者,发起沟通的人,谁就有义务把话说清楚、说明白、保证对方基本能听懂。
横梗在现实的问题是:机器与人类不同。
机器,是人类发明出来的傀儡,胜在“严谨刻板”“唯令是从”,也败在“机械呆板”“不知变通”。
人类不屑于机器唯令是从的特性,机器也没有快速理解人类意图的智慧。
人类的语言充满迂回,不同个性的人沟通时,过于木讷,缺乏共同的文化背景、经历与共识,不敞开天窗说亮话,就有人根本听不出话中话、弦外之音,机器更是如此。
然而,毕竟是我们想让机器代劳,我们就得使尽招数让机器力所能及,就是我们人类先去理解机器的行事风格和思维方式,然后再教会机器全力理解人类的意图与规则。
这就相当于我们想让英国人替我们完成一个任务,我们说英语的效率最高;我们想让计算机完成任务,我们就要去理解计算机的运作方式,然后输入计算机能识别的语言。
编程语言的诞生与演化,其实是人类与机器互相学习、双向驯化的产物,是“让机器听人类”与“还是让人类懂机器”双方博弈的结果。
二、编程语言的演变:编程语言是如何演化的?
编程语言自诞生起,就是在不断的进化升级,进化的方向包括两种:更像机器的语言,还是更像人类的语言。
1)第一阶段:机器语言
第一代计算机语言,称为机器语言。用二进制代码0和1描述的指令称为机器指令。全部指令的集合构成计算机的机器语言。
机器的底层世界只是有电和没电两种状态,分别用1和0表示,这就是二进制的来源。在计算机内部,无论是一部电影还是一首歌曲或是一张图片等等,最终保存的都是0和1组成的代码。
机器语言对于CPU来说十分亲切友好,能够被CPU识别并执行,但是对于设计开发人员却完全相反。毕竟机器语言不是人类擅长使用的语言,它的可阅读性很差。
理解机器语言尚需要时间,更别提用它编写程序。人们很快就设计出来了各种高级语言来编程,但是也带来了新的问题——计算机读不懂我们写的程序。
2)第二阶段:汇编语言
为了辨别和记忆,人类开始使用第二种语言,即将 0/1 代码翻译为英文单词,这些英文单词直接对应着一串 0/1 指令。这个就是汇编语言。
通过专门的软件就可以将这些英文单词转化成 0/1 代码并由计算机执行,这种专门起翻译的作用的软件叫作编译器。
这些英文单词和与它们对应的 0/1 代码之间的对应关系,以及语言的语法,在编写这个软件的时候就已经写在里面了。只需要通过编译器就可以将这些都转化成 0/1 代码,大大方便程序的编写。
3)第三阶段:高级语言
第三代语言又叫“高级语言”,就是我们今天不断进阶的各类编程语言,可阅读性更强,能够方便地表达程序的功能,更好地描述使用的算法,更容易被初学者所掌握。
编程一般用高级语言,计算机不能直接理解高级语言,只能理解和运行机器语言,所以必须要把高级语言翻译成机器语言,计算机才能运行高级语言所编写的程序。
三、思维vs语言:为什么学习编程能够训练思维?
在农业与手工业时代,人类对上帝的隐喻就是一个农夫;工业时代,上帝被假想为一个伟大的机械工程师;而今天,最精妙的隐喻就是——上帝是一个程序员。当你观察DNA上基因的序列时,你一定觉得那是伟大程序员的作品。
编程语言是一种简洁的、高纯度的、形式化的知识系统。它的类比对象是自然语言、数学语言,是一种思维工具。它的关键作用是塑造一种全新的世界观、思维方式、解决问题的手段,掌握它的人可以发掘出这个世界更深、更广的可能性。
不论是历史中的可编程发明,还是近代的计算机编程语言发展,我们都能从中看出,编程技术的目的是驾驭机器、驾驭计算机,让它们更高效地解决问题。
所以孩子学编程时,要逐步接触、理解、体验编程的逻辑操作、算法、数据结构、工程设计等通用的工程方法与数学知识,这样才符合孩子的学习成长规律。
学生在需要使用新的编程语言时,这些核心知识也能够帮助他们更快融汇贯通。更重要的是,学生可以脱离编程语言,更纯粹地思考如何让计算机解决问题,具有“编程思维”。
现在为了竞赛升学,很多家长送孩子去学 C++ 之类的编程语言。在小学阶段就开始学 Python和C++编程语言意义不大。因为孩子的抽象思维和形式逻辑思维发展还不完善,对纯代码难以产生真正的理解,很容易死记硬背。
而语言是死的,而思维是活的。学编程,重要的是掌握编程语言的语言特性,而不是语言本身。毕竟,大多数孩子未来不会靠编程吃饭,学习编程的目的,更偏重于培养编程思维,把编程中的概念和解决问题的方法论,尽可能地应用到学习和生活中去。
写在最后
对于儿童而言,编程语言的学习,可以是无意识的伴随状态,关键在于学习编程语言的规则,也就是规则背后思维的训练!不管是从语言角度,还是从思维角度出发,学编程对孩子最重要的还是掌握编程思维、搭建编程逻辑。打好编程思维基础后,掌握了用搜索引擎查找资料、阅读官方文档、在社区求助的能力之后,孩子日后完全可以自学任何一门编程语言,真正受益!
网友评论