中小学编程用哪种语言比较好?
这个问题就像有人问你“穿婚纱好,正装好,还是休闲装好?”
这是一个无法回答的问题,因为它缺乏“选择什么样的衣服取决于我们的目的”这一重要前提。
婚礼穿婚纱挺好的,但是每天上班穿会很奇怪。
每件衣服都有自己的场景。
编程语言是一样的,每种编程语言都有自己的应用场景。
来回答“中小学编程用哪种语言比较好?”
我的简单版答案中小学编程语言选择Scratch!从7岁开始做电子设计师,看过Linux源代码,写过RTOS,做过芯片编程FPGA/DSP。本人有20年的编程经验,能熟练使用汇编/C/c++/c#/Perl/Objective-C/Java/Ruby/Python/JavaScript/HTML/CSS等熟悉的编程语言和不熟悉的设计芯片编程语言Verilog、VHDL。我推荐使用
那为什么要刮呢?在与西瓜机教的近10万名孩子家长沟通的过程中,我总结了家长常见的困惑,并详细解释如下
问:Scratch是低级语言,太幼稚了。中小学的编程语言什么时候可以转高级语言?
这是一个常见的误解,主要是“高级”一词翻译不准确造成的。高级语言的英文原文叫高级编程语言,更准确的翻译应该是高级编程语言。层次的高低不是高级语言的划分,而是语言与硬件指令的距离。更接近人类自然语言的编程语言称为高级语言,更接近计算机指令的编程语言称为低级语言。
比如汇编语言,就是最接近CPU指令的人几乎听不懂的语言。用汇编表示1+2是这样的
这是用其他语言表达的
显然,其他语言更接近于人们更能理解的自然语言。
更离谱的是,不同的CPU架构有不同的指令来控制。也就是说,同样是1+2,需要在不同的CPU上写不同的。
所有的编程语言设计者都致力于做一件事
让人们优雅地用人类可读的语言来编程,只需要把自己的想法告诉电脑,电脑就可以自动把语言翻译成他可以自己执行的命令。
也就是说,无论我们用哪种高级语言编写代码,我们都需要一个翻译器来编译或解释我们编写的代码,以便计算机能够执行。
BTW,顾名思义,Scratch是比C和Java更高级的语言。
既然编程语言的设计者都有相同的目标,那么哪种语言是最好的编程语言呢?中小学编程用哪种语言最好?
这个问题类似于“什么样的衣服才是最好的衣服”。答案是在不同的场景和目标下选择相应的编程语言,没有语言是最好的。
比如C语言更接近计算机硬件,编程语法中有很多莫名其妙的操作,非常难学。但它的优点是离硬件很近,内存的申请和释放都得由开发者自己写,所以程序的执行效率可以很高。
但是如果有人想用C语言做一个网站,结合Javascript+CSS+HTML做一个网页可能需要5分钟,但是可能一个月都不会用C语言写。
那为什么编程语言排名会变?
这一切都是为了工作和市场机会。比如互联网爆炸的时候,做网站的人是最稀缺的,推动了JAVA、C#、Javascript+CSS+HTML等语言的发展。当时另一种语言叫Objective-C特别冷门。直到苹果的iPhone问世,移动互联网的春天才来临。那时候谁能做App谁就比别人有更多的工作机会。于是这种冷门的Objective-C语言迎来了他的春天。随着互联网和移动互联网的飞速发展,产生了大量的数据,机器学习和人工智能在坐了多年的冷板凳后终于投入使用。大量数据科学家使用Python编写机器学习程序,因此Python成为近年来的新宠。
那么如果选择编程语言是为了让孩子以后更容易找到工作,亲爱的,你确定现在选择的语言15年后不会没落吗?
问:选择Scratch有什么优势?会不会过时?中小学编程在学习过程中语言会发生变化吗?
“如果我给你一支高级钢笔,...
哦,不,不,不,你给我一支高级笔。
我能成为一名作家吗?"
“没有”
没错。不是因为用什么样的笔才能成为作家。决定你能否成为摄影师的不是昂贵的镜头和相机;
他能否成为一名优秀的开发人员,不是他选择的语言,而是他能否找到生活中的问题,找到解决问题的办法,然后用编程来做出解决方案。
表达自己的感受和感悟,记录故事,发现问题,解决问题,是我们的目标。用好笔,好相机,选择编程语言是达到目的的手段。我们不应该把手段当成错误的目标。
文章开头提到可以熟练使用汇编/c/c++/c#/perl/objective-c/Java/ruby/python/JavaScript/html/CSS等编程语言,这不是吹牛。事实上,一个成熟的开发人员已经掌握了很多编程语言,能够快速学习和适应新的语言。这是因为编程语言是定期可用的。
比如我们要用编程,下雨就打伞,不然就不打伞。像这样用不同的语言写的
这是编程不变的部分,他们只是在表达上有一点点不同。这就好比现在的主流音乐,12个音除以12个平均律组成。
但如果用葫芦丝吹婚礼进行曲,总会有点过桥米线的感觉。这是因为每种乐器都有自己独特的特点。编程语言是一样的。每种语言都有一些独特的特点。例如,我们想要确定菜单是否包含宫保鸡丁,如果包含,则输出“发现”。c语言,Python,Scratch写的如下。
你会发现Python和Scratch比C语言直观多了。这部分是不同语言的特色部分。
也就是说,在掌握了一门编程语言之后,想要学习另一门编程语言,只需要知道它的语法,利用它的特性就可以掌握了。编程的核心不是语法,而是解决问题的思路和方法。
Scratch包含了几乎所有编程语言的公共部分。以后语言再怎么变,基本逻辑都不会变。而且这些培训都可以在Scratch中完成。
问:听你说的,就是说中小学学其他语言也一样,因为只要精通一门语言,就很容易学会另一门语言?
是的,没错。学习Scratch到C,Java,Python都很容易。学习C到Python并不难。但是之所以还是推荐孩子学习Scratch而不是C,并不是因为编程,而是因为认知科学。
在认知科学中,人是能很快学会一件事,还是坚持学会一件事,与自我效能感密切相关。自我效能感是指人们是否相信自己能达到一个目标,当他们相信时,会觉得很刺激,一点也不无聊;当你不相信的时候,你会觉得自己很痛苦。简单理解就是成就感是人快乐学习,不断学习的重要原因。
如果我们学了什么,比如数学,一旦意识到自己学习有困难,就开始怀疑自己能不能学好,给自己各种理由证明自己学不好,甚至合理化。比如他们会说:“学这个有什么用?买菜不需要微积分。”或者“我是文科生,不需要学这种理科。”他们甚至说“我是文科生,理科写着我基因里的‘不擅长’几个字。”。
同样,如果希望孩子不要说自己“不是编程的材料”,最好的办法就是让孩子从第一步就有成就感,从而产生自我效能感,也就是相信自己能达到目标,学好编程。
在这样的前提下,你会让孩子从学习C或Java等工业级编程开始吗?这样他可能面临的困难不仅仅是编程上的,还有打字上的,标点使用是否正确,编程语言的语法,编译错误上莫名其妙的困难。这些困难会扼杀孩子学习编程的兴趣,找理由说“我不喜欢编程”,就像很多人找无数理由说不喜欢数学一样。这是在没有形成自我效能感的情况下鼓励年轻人的结果。
这就跟我在德国期间看到的德国音乐学习和中国音乐学习的区别一样。小时候在德国学音乐,第一件事就是学会欣赏,然后学演奏,最后学音乐。比如,首先老师会给孩子放音乐,音乐配上具体的故事和场景,让孩子把声音和场景搭配起来;然后让孩子玩乐器,也就是不管指法对不对,先和乐器做朋友,不要害怕音乐和乐器;最后,就是所谓的学习如何驾驭一种乐器,学习指法的基础工作。然而,在中国学习乐器却恰恰相反。第一,让孩子练习指法,而忽略了孩子对音乐的热爱。
这也是为什么西瓜机和我的老师肖恩还是建议学习Scratch,让孩子可以无所畏惧的对编程感兴趣,用编程表达自己。等到孩子有了自信和成就感,再提高难度。要想选择一种语言进入编程世界,就必须选择一种能让孩子快速找到自信和成就感的语言。那么目前最好的语言就是Scratch。
问:我想让我的孩子参加NOIP奥运会。听说只有C语言可以参与。西瓜制作师中小学编程学Scratch还有用吗?
NOIP一半是编程,一半是数学。编程部分基本不涉及语言特性,也就是说用C,Python或者Scratch写,核心算法都是一样的。数学与编程无关。比如鸡兔同笼问题,本身就是一个数学问题。如果在数学上找不到解决办法,只能编程,就不会有实质性的提高。
这种问题基本上就是先有一个数学解,然后把算法变成程序代码。
例如,这里我们演示了三个关于同一个笼子里的鸡和兔的算法
第一种是最常见的,一个个试试。程序里是这样写的
感觉有点复杂。第二种方法是稍微聪明一点的解方程方法。对应的算法是这样的
与上面的代码相比,这个算法简单多了。但是要理解这个算法,首先要解草稿纸上的方程。
最后一个算法是一个有趣可爱的算法,上面写着
你发现了吗?思路不同,写出的程序也完全不同。核心是有没有数学算法,在编程中,需要用到的代码类型都差不多。
以上三个算法都是用Scratch而不是C语言写的。因为核心不是编程问题,而是数学算法问题。对于那些声称C是“高级”语言的“老师”,你可以把这段代码发给他们,问问这个方法的作用是什么。我敢说很少有“编程老师”能回答。原因是,要想理解这段代码的作用,不仅需要好的编程,还需要好的数学。
问:如果我的孩子只是想学Scratch以外的语言,我该怎么为他选择?
首先,我们把编程语言分为两类,一类是基于兴趣的编程,侧重于图形化编程。目的是通过编程实现自己的想法,不用担心低效的程序执行,也不用考虑用户的使用场景和平台。另一种是工业编程,主要是基于源代码编程。除了解决日常生活和生产中的问题,还需要考虑用户会在什么样的场景下使用这个软件,以及产品的易用性。
如果青少年学编程,还是不建议从工业编程开始。目前Scratch语言也在不断发展,比起把一个图形从这里移到那里,可以支持更多的功能。Scratch现在可以编程特定的硬件。Blocky,一种类似Scratch的图形语言,已经可以完成很多很多远远超出Scratch的功能。比如Blockly开发的App Inventor,也是基于Scratch 3,通过图形化编程,让孩子可以创建一个手机应用。其实图形化编程也不弱。现在西瓜机的员工工资公式已经用Blocky写好了,西瓜机的后台工作流程规则也用图形化语言写好了。
如果非要选择工业编程语言,还是可以根据目标来划分。
如果目标是考,Python是首选。目前Python已经被浙江等地区列为高考科目。如果想通过NOIP加分,第二选择是C/C++语言。
如果目标是写控制硬件的程序,推荐的语言是Python和C,C的原因是主流的硬件编程支持C,而不是工业硬件编程,比如树莓Pi支持Python编程。
如果目标是做一个App,你可以选择的语言是像Scratch、Java或者Objective-C/Swift这样的App Inventor。另外,Java Script也是一个不错的跨平台选择。现在大多数程序都是苹果安卓通用的。这类程序基本都是基于某个框架,最常用的框架是React Native,React Native使用的是Javascript语言。
如果目标是创建网页,可以选择的语言是Javascript+CSS+HTML。其中,CSS和HTML决定了一个网页的样子。这两种语言很容易学。之所以推荐Javascript,是因为web编程的前端基本上是由Javascript控制的。现在是节点。JS是基于Javascript语法的后端程序。也就是说,只要你懂Javascript,就可以写在前端和后端。
如果目标是做数据分析,Python是第一语言。Python语言中有很多关于数据处理的公共库。让我们站在巨人的肩膀上继续深入学习,而不是重建车轮。
根据各种因素,如果是7-12岁的孩子在中小学学习编程,推荐的语言顺序是Scratch > Python > Javascript > C..
问:如果说编程不是目的,那就是手段。如果目的是让孩子有创造力,应该怎么做?
这是一个非常好的问题,值得在另一篇文章中详细说明。请关注西瓜商微信官方账号。肖恩老师以后会和大家分享这个话题。
1.《西瓜创客编程 西瓜创客肖恩老师详解中小学编程如何选择语言?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《西瓜创客编程 西瓜创客肖恩老师详解中小学编程如何选择语言?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/815139.html