0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

“不会编程就是新文盲”?没有书本会教你解决以前没人碰到过的问题

电子工程师 来源:lq 2018-12-16 11:19 次阅读

毋庸置疑,未来的一切都会是自动化的,那么一份从事自动化软件开发的工作要稳妥得多——这一点,相信是很多程序员父母的考量。也因此,目前的市面上充斥着各色各样的幼少儿编程书籍、编程夏令营、课外编程俱乐部等等。然而,这些虽然可以教会孩子们特定的编程语言,但是实际上它们与软件开发工作没有多大关系,反而会扼杀孩子们的好奇心——本文的作者JOE MORGAN就发表了自己的看法。

以下为译文:

在最近一次的例行午夜小跑时,我看到一堆关于教孩子们写代码的书。

教大家写代码的书籍随处可见,但从来没有见过这么多直接针对小学生的。这些编程书籍只是用来培训孩子们“面向未来的技能”等庞大资源的一部分,还有编程夏令营、课外编程俱乐部,旨在教给幼儿园小朋友们JavaScript基础知识的小程序等等。

很容易理解父母为什么要求孩子学习编程——还有什么比教会孩子写代码更好的方法来让我们的孩子为未来的自动化社会做好准备呢?如果未来的一切都是自动化的,那么一份从事自动化软件开发的工作要保险得多。如果学习编程是好的,那么早点学习就更好了。然而,这些书籍虽然可以教会孩子们特定的编程语言,但是实际上它们与软件开发工作没有多大关系。

“不会编程就是新文盲”?

我的一位前同事曾经在编程训练营接受训练,而这个训练营的口号就是“不会编程就是新文盲”。这种观点是所有编程书籍和游戏的核心。有一本畅销书说尽早学会编程“对孩子的将来必不可少”。这等于告诉我们,不教孩子编程就等于不教他们阅读。

当然这种观点是很荒谬的,不会编程不等于文盲。虽然大多数父母都有文化和读写能力,但是大多数父母都不是程序员,也不知道程序员需要什么样的技能。针对孩子们的编程书籍给出的都是一些问题的“标准”答案。如果你的孩子能掌握编程语言,他们就能快速轻松地写出这些代码。然而编程不仅仅是写代码,编程是复杂的,需要同时具备创造性和明确性。作为一名程序员仅仅懂得编程语言是不够的,某些技能只能在非常年轻时学习。

好的程序员不仅仅是让代码工作,他们希望写出好代码。

没有书本会教你解决以前没人碰到过的问题

在我的职业生涯早期,我写了一些代码配置在一组远程服务器上运行。一开始代码似乎运行得很好,至少我是这样认为的。直到18个小时后,电话在半夜响起,告诉我一些服务器出了故障。我从床上爬起来,拿起我的笔记本电脑,在故障服务器上再次运行代码。然而几小时后,另外一些服务器又报故障。

问题不是出在代码语法上。如果是语法问题,首先服务器上编译就不会成功。故障是由更深层的问题引起的,隔离和解决这个问题花了我几个星期,经常半夜里被叫醒。

编程就是这样的,先试一试,看看代码能否工作,再试一次,如此反复。简单的问题应该会有现成的解决方案或者至少用开源代码来解决,剩下的就是一些繁杂的而且独特的问题。没有书本教你如何解决以前无人碰到过的问题,这就是为什么我不想让我的孩子学习代码语法。我希望他们学习如何解决问题,深入研究问题,学会创新。那我们该怎么教呢?

纯粹地写代码不可取,质量、创造性和代码美感同样值得学习

有一天,我儿子担心他的椅子摇摇晃晃。我们一起看了看后他找到了问题在哪里,原来椅子的一个螺丝松了。我找出一把用过的六角扳手,告诉他如何拧紧。他很好奇如果他向相反方向拧螺丝,会发生什么。他这样试了直到把螺丝拧出来。后来我们把椅子拆开了,然后试着装回来,我们一起装了好几次,有几次装错位了,直到最后他满意地把椅子装好。就像编程一样,试一试,看看它是如何工作的,再试一次。

当然,让代码能够工作只是软件开发的第一步。下一步是使代码清晰、可重用和整洁。在我的职业生涯早期,有一次我完成了一个功能的编码工作,并把它交给一位资深程序员检查。他看了一眼我的代码,看到间距不一致,行也对不齐而且命名不规范,直接说一句“重做”就打回来了。尽管我的代码能够工作而且语法也对,但这仍然是错误的。好的程序员不仅仅是让代码工作,他们希望写出好代码。

对质量的把握是很多程序员觉得最难的事情。设计良好的代码使用起来感觉很好,而乱七八糟的代码会使程序员敬而远之。最好的程序员会将艺术家的敏感融入抽象逻辑中,他们相信代码的美感对编程来说,和所有的算法或编码模式一样重要。

最近,我和妻子带着儿子做曲奇饼干。每次我们加入一种成分,我们都会停下来检查一下面团,讨论一下面团的手感和颜色。它够软吗?所有成分都和匀了吗?当我们把面团摊开时,儿子摸了摸表面,看着我妻子教他如何把一切都弄得又匀又薄。然而,最难的部分是切出饼干形状。像所有的孩子一样,他本能地将饼干模子放到面团中间开始切,每次我们都试图告诉他如何将饼干模子在面团上依次切出饼干形状,以便让每个面团做出最多的饼干。

每一个步骤——精确测量每种成分,检查面团的柔软度和是否和匀,精确放置饼干模子以减少浪费——都是在教他关于质量的知识。仅仅教他做饼干的步骤(比如按照一个饼干食谱)很难让他学会分辨质量的好坏并做出好饼干,而这只能通过感觉和经验传递。每次你让孩子参与到你所重视的事情中来,你就是在教他们如何把事情做好,你也是在为他们以后编程做准备。

但在过程中你教他们的不仅仅如此,你让他们知道这世界充满了有趣的事情等待他们去发现,你向他们展示如何充满激情地在他们所做的每件事中寻找那种瞬间的质量感。最棒的是,即使他们不能成为程序员——当然这是大多数人不应该也不愿看到的——同样的技能几乎可以在任何职业、每种爱好、每天的生活中使用。然而当我们强迫小孩仅仅学习代码语法时,我们就给他们灌输这样一种观念:纯粹地写代码才是有用的,而那些关于质量、创造性和代码美感的知识不值得学习。

成年人可以直接去学习编码,孩子们则需要发掘他们的好奇心。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33073
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66751

原文标题:一个程序员父亲的呼吁:不要教你的孩子从小学编程!

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32CubeIDE+FreeRtos+LWIP初始化不通过怎么解决?

    MX_LAIP_Init就过不去。调试代码,发现HAL_Delay();函数出现错误。上网查了下,也有人碰到过,重构解决。然后还是过不去,调试发现创建任务时又出现了问题,卡在添加新链表上,不知道原因。大家这么用的时候,有没有碰到过
    发表于 04-15 07:42

    为什么我的IAR for msp 7.12.1的Debugger选项只有FET和simulator仿真,没有JLINK选项?

    如题,为什么我的IAR for msp 7.12.1的Debugger选项只有FET和simulator仿真,没有JLINK选项,已经重新下载过了,还是不行,上网找也没人出现我这种情况的,有没有老哥
    发表于 03-15 07:34

    三相设备电流不平衡怎么解决?

    镀锌管内。应该电缆问题。但具体原因不清楚。请教下有没有碰到过的师傅。指点一下,谢谢 设备应该没有问题,刚出厂测试好。没有变频负载。都是三相设备,就
    发表于 01-09 07:34

    Modbus转Profinet不会编程也能用 轻松快上手

    Modbus转Profinet是一种协议转换器,可将Modbus协议转换为Profinet协议,实现设备间的数据交换与通信。即使不会编程的人也可以轻松快速上手使用Modbus转Profinet!通过Modbus转Profinet网关(XD-MDPN100/2000),设备之间的通信变得更加灵活和可靠。
    的头像 发表于 12-30 16:10 574次阅读
    Modbus转Profinet<b class='flag-5'>不会编程</b>也能用 轻松快上手

    负压脉冲高?教你3招制伏

    负压脉冲高?教你3招制伏
    的头像 发表于 12-15 16:50 244次阅读
    负压脉冲高?<b class='flag-5'>教你</b>3招制伏

    硬件电路设计之泄放电路设计

    泄放电路就是将一部分电能转换成热能或者其它形式能量的电路。相信大家应该都有碰到过下面这些问题。
    的头像 发表于 11-17 18:20 2684次阅读
    硬件电路设计之泄放电路设计

    教你如何看懂网分电测报告

    提到线材的高频测试报告,就像医生开的诊断证明一样,天书,很多刚出江湖的线缆晚辈看起来会感觉很吃力,全是一堆英文字母,最简单的判断就是FAIL和PASS,如果PASS说明符合测试要求,如果FALL,那就是不符合测试要求,其实高频测试报告
    的头像 发表于 10-17 14:23 494次阅读
    <b class='flag-5'>教你</b>如何看懂网分电测报告

    VISA读取结果空格符0x20被自动替换为0x00是什么问题,有大佬碰到过吗?

    都是从VISA直接读取回来的,这是和系统设置有关系吗?从来没有碰到过这样的,有没有大佬碰到过这个。 如下图本应该是十六进制6120 42不知道为什么变成了610042 下图为读取VI
    发表于 08-23 15:45

    有大佬碰到过超出FLASH之外的内存,也可以正常读写的情况吗?

    有大佬碰到过超出FLASH之外的内存,也可以正常读写的情况吗?我用的芯片是STM32G474RCT6,FLASH为 256kB的,但是我对 Page64页、Page65页或者后面几页读写,都是正常的
    发表于 08-09 07:43

    为什么IAR的Debugger选项中没有JLINK可选?

    如题,为什么我的IAR for msp 7.12.1的Debugger选项只有FET和simulator仿真,没有JLINK选项,已经重新下载过了,还是不行,上网找也没人出现我这种情况的,有没有老哥
    发表于 08-05 06:02

    不会编程也能玩转物联网 中文编程 图形化编程

    编程
    学习电子知识
    发布于 :2023年07月17日 19:35:07

    碰到过电源板故障吗?PLC使用九大原则

    一般来说,PLC是极其可靠的设备,出故障率很低。PLC的CPU等硬件损坏或软件运行出错的概率几乎为零;PLC输入点如不是强电入侵所致,几乎也不会损坏。
    发表于 06-30 14:08 235次阅读

    在Keil的Options for Target里钩选USE MicroLIB,将会编译错误怎么解决?

    您好,我现在在用 N9H30K 的BSP包编程,用Keil ,我的工程需要用到 MicroLIB ,在Keil 的 Options for Target 里钩选USE MicroLIB,将会编译错误,好像是启动文件缺少定义,请帮忙解决这个问题,谢谢
    发表于 06-15 07:46

    没有办法在ESP8266上存储默认版本的固件,以防新的OTA固件搞砸?

    我成功地将 ESP8266httpUpdate 库用于使用远程服务器的 OTA 更新。当前固件可以完美抓取新的.bin文件并以新文件重启。有没有办法在 ESP8266 上存储默认版本的固件,以防
    发表于 05-10 10:52

    虹科技术 | BabyLIN的三种编程方式教你轻松驾驭总线通信

    虹科BabyLIN的三种编程方式教你轻松驾驭总线通信概述BabyLIN对LIN总线进行了专业的集成,特殊型号的设备还可以兼容CAN总线使用,对于车载网络的测试有着独特的优势。
    的头像 发表于 05-04 15:15 1595次阅读
    虹科技术 | BabyLIN的三种<b class='flag-5'>编程</b>方式<b class='flag-5'>教你</b>轻松驾驭总线通信