|
|
博雅小学堂! [1 m5 }# y/ j* A* n
给孩子受益终生的人文底色
& Q& k3 L8 T; S编译 | 杰宝麻麻 来源 | 鲸鱼与蜗牛
( Q. Z: r8 h, H9 S: o, h博雅小学堂专栏作者* \/ H+ \* \. X6 J, I8 }: R7 T
“每个人都应该学习编程,就像每个人都应该学习读书写字一样。” 在“未来已来 ”的当下,“编程 ”被认为是孩子适应人工智能时代的切入口之一。 f0 ? t# i6 X+ x8 B" I4 _
然而前两天,美国知名在线杂志Slate上刊登了一篇文章——《我是程序员,我不会教孩子学编程,你也别教》。这位名叫Joe Morgon的美国程序员爸爸在文章中写道:成年人可以学习语法,但只有孩子才能学会拥抱好奇心。您是否同意文中的观点?欢迎在留言区讨论。
: k7 J% d$ M% }, P/ M/ o010 r- y2 z. N' O, p. v* M& {
父母为什么要让孩子学编程, h- N6 ~8 C0 _$ e9 l
最近一次夜跑时,我路过一个很大的橱窗,里面展示的是教孩子们学编程的书。其中有些书我看到过,但我从来没有见过这么多针对小学生编程的书。; F: T" F& r" h0 h
而这些书不过是冰山一角,市面上还有大量跟编程相关的资源——夏季编程训练营、课后编程俱乐部、教幼儿园孩子JavaScript基础知识的APP——它们都在向孩子传授面向未来的技能。: L2 ^3 A, [* C' r" `
父母为什么要让孩子学编程呢?3 i# t* v b8 y/ X$ K8 B
新加坡一个编程校外班& q2 }4 g8 [2 p2 ]5 b8 w
答案显而易见。/ M* l! _% b+ U
除了学习开发软件之外,还有什么更好的方法,能让我们的孩子迎接一个由软件统治的未来世界?如果一切都将自动化,那么做控制自动化的人会更安全。如果学习编程有用,那么宜早不宜迟。: h4 v x. f; v: j' t
虽然这些学习编程的产品可能教孩子们特定的编程语言,但却与真正的软件开发关系不大。
5 }4 p5 `) h& |) C: W. a* U( s02
0 J9 T) F1 e9 @5 E不教孩子编程! J7 Z; j! Y6 ?/ m6 K' N
等于不教他们读书写字?) h( U- H* G* {5 i
我的一位前同事曾经在一个编程训练营接受过训练,这个训练营的口号是“编程是一种新的读写能力”。这种刻意营造的焦虑感是所有编程书和游戏的核心。
4 |& j+ x8 y5 } _! [正如一本很火的书中所描述的:尽早学习编程“是孩子为未来做好准备必不可少的一步”。这话给人的印象是,不教孩子编程在某种程度上等同于不教他们读书写字。
) c& m2 c# `1 e 这种说法显然是荒谬的,编程不等同于读书写字。虽然大多数父母都受过教育,并且知道给孩子读书,但他们大多数并不是程序员,也不知道程序员需要什么样的技能。. [# e# b+ P z0 [$ y% y7 E3 W
儿童编程书将编程看作能够为一系列问题找到“正确”解决方案的能力。如果你的孩子能够掌握编程语法(syntax),就能够快速轻松地完成任务。
7 ]$ g" ]$ m/ _* X& z但,这并不是程序员的工作方式。2 A$ \- a, s# I' Z: e# _
03
7 ~( C3 u; L9 \9 h学会编程语法, ^8 ` s6 u& @$ Y
就算学会编程了吗5 x; B! t+ e" s& E5 m: ]; o
软件开发是一项艰难的工程,是创造力和决心的结合。开发人员需要掌握的远远不止语法这么简单。
2 { `# i F; I: e杰出的程序员不光是让软件能够运行,他们还希望开发出优秀的软件。) k* d+ L7 o8 h( q4 \0 W% [" _* h
在职业生涯的早期,我编写了一些代码来配置和运行一组远程服务器。我的代码运行得很顺利——至少我是这么想的——直到大约18个小时后,夜半铃响,我得到通知:一组服务器宕机了。: K$ j4 N2 d" ^9 D! W: g
我从床上爬起来,走到笔记本前,又运行了一遍代码来替换宕机的服务器。几小时后,又有一组服务器宕机了。
?" L, I: w6 Q7 P2 l' L宕机并不是由语法引发的,如果有的话,服务器一开始就无法搭建起来。宕机的原因非常复杂,经过好几周和无数个被叫醒的夜晚,我终于解决了问题。
" P- P; i M, a5 ?编程就是这样:先写代码,看看它是否有效。失败了就再试一次。如果问题很简单,有些开源代码就能解决。剩下的就是需要独创性的艰巨任务。没有书可以教你如何解决前所未有的问题。
5 a4 D ?' Z- e! ^ {% C这就是为什么我不希望我的孩子学习编程语法——我希望他们学会解决问题,深入研究问题,发挥创造力。
9 {+ h! W' C& R8 I. E- `% h1 j 042 n+ s) Q M; i- x+ X& Y* f
为什么说比起学编程
, V0 M- ~9 x5 z. N1 N掌握这些能力更重要?0 o( S, @# E- C6 O5 h0 ^: z) T
那我们该怎么教这些能力呢?; p; ] K) O. g" o
有一天,我的儿子有点担心他那把摇摇晃晃的椅子。我们一起观察了下椅子,儿子帮我找到了问题:有一个螺钉松了。我在家里找到一个适合的六角扳手,并演示怎么把螺钉拧紧。
6 ~: `: q3 ~% u2 Y之后,儿子很好奇:如果反方向拧会发生什么?他试了试,直到螺钉被拧出来为止。最后,我们反复将椅子拆开,再装回去——中间还装错过——直到儿子满意为止。
/ J9 o, }- Z1 Z$ n9 T8 L9 c先试试,看结果如何,不行就再试一次。5 y2 M' e- v( ^. {( U
当然,让软件运行只是开发者的第一步。下一步是使代码清晰、可重复使用、简洁。0 Z; O- x2 W' m& g$ Q {! G2 Q
在我职业生涯的早期,我曾经开发了一项功能,交给一位高级开发人员审核。他看了一眼我草率的间距、错乱的代码行和混乱的命名规范,说:“重写!”
8 s- ^$ p$ a0 L! R" s我编写的代码可以运行,语法有效,但仍然是错的。优秀的程序员并不满足于让代码能运行,他们希望开发出优秀的软件。
" o0 y9 ?7 z7 p5 N3 y对于许多开发人员来说,这种追求品质的感觉是最难掌握的。精心设计的代码让人赏心悦目,而丑陋的代码让人退避三舍。
]7 M7 r7 P8 _! E3 R6 N一流的开发人员学会将抽象的逻辑与艺术家的敏锐融合在一起。程序员也要学着信奉一点,那就是代码的美感,与算法以及代码模式一样重要。8 i3 h3 B( H6 X# F
最近,我和妻子与儿子一起制作糖饼干。每次把配料混合在一起,我们就会停下来查看面团,讨论它的质地和颜色。面团是否光滑?所有配料是否已经均匀地混合在一起?) `+ O, O# d5 z9 L/ u/ Z
我们擀面团时,儿子摸了摸面团的表面,然后看妈妈演示如何让材料铺得均匀而且厚薄适中。
; L& u# ?0 M3 z2 J; n3 y! k% }然而,最难的部分是切出形状。像所有的孩子一样,他本能地将模具推到铺开的面团的中间,而每次,我们都会解释如何将模子挨个放在一起以便有最大化地利用面团。
- i7 }2 S3 M$ x" v% X精确称量材料、如何在压面团时保持光滑度和延展性、怎样放置模具减少面团的浪费——每一步都让儿子知道什么是追求品质。& m! _. g0 E/ k$ L+ O
如果只是按照步骤操作,孩子就很难理解遵循菜谱和追求优秀的差别在哪里。0 J9 D/ ^9 ]1 ^# f6 |0 o% F/ Y
这些只能通过感受和体验来传递。每当你让孩子参与你认为重要的事时,就在向他们言传身教如何做好一件事,包括编程。
0 W4 P& ~- I, P: u4 {; q不仅如此,你还告诉他们,这个世界充满有趣的事等待我们去发现。你向孩子展示了如何保持激情,无论做什么,都要寻找那种转瞬即逝的品质感。5 G; d( W* E) q) G. T0 A2 S( t* A$ ~( Q" |
这样的好处是,即使他们将来不会成为程序员——实际上,大多数人不应该也不会成为程序员——同样的技能适用于几乎任何职业、任何爱好和任何人的生活。
( F- b3 {7 K, K3 I1 H当我们强迫孩子们学习编程时,我们其实向孩子灌输了这样一种观点:如果某些技能不是公认能赚到钱,就毫无价值。
: N$ s h* F3 m' T# ^" |: d成年人可以学习语法,只有孩子才能学会拥抱好奇心。" Y$ P2 b+ @, V( t* h
作者:杰宝麻麻,为俩娃痛并快乐着的麻麻; M; H+ l0 T9 ]' L
' j, i$ w& a2 h/ m
来源:http://www.yidianzixun.com/article/0LdCqXyu Z7 |# Y, C" y3 p! x% t) a( A5 ^
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|