少儿编程和打字培训没区别!听我来说说编程语言

  点击关注,了解更多精彩内容!!努力陪伴孩子成长的中年胖子。

  一直有这方面的广告,所以尝试用通俗的语言说下我对编程的看法。

  昨天匆忙写了一篇,有兴趣的可以看下。

  少儿编程和打字一样的必备技能吗?你想让孩子咋样——养娃记0194文章有点长,大概需要10分钟,核心意思是,如果不确定要不要让孩子学编程,也许它可能可以帮你打消这个疑虑。

  能力所限,您且看且吐槽,欢迎留言。

  很多年前,如果会打字,就是算会计算机了。

  但是当时的很多人,毕业的时候电脑也没有摸过。

  很多年后,Word,Excel,PPT算是基本技能,但是要用好,也不容易。

  但是会了也不会特别加分。

  什么意思呢,这是一个级别工具,很多人只是拿它来做工具而已。

  现在很多人电脑打字不快,但是手机很溜,也可以。

  但是当年打字培训班的广告也是制造焦虑的哦。

  那么现在编程比当年的打字似乎高端了很多。

  但是在人群的知识水准上,他们其实没有太大差异。

  从这个朴素的角度来说,会编程和会打字没有太大差别。

  会编程给工作带来的提升固然是有的,但是我只是扫地而已,并不需要那么多高科技。

  再通俗一点,一件事,满分100分,会编程可以做到90分,不会编程我也能做到89分,这个时候,编程作为一种技能并没有稀缺性。

  

  其实看了很多广告,都没有特别确切地讲明这个事。可能是刻意模糊的。

  编程要解决的问题,我们通俗一点可以理解成是解决一次性问题还是长期性问题。一次性就是为了解决具体问题,解决完就拉到。

  少儿编程,或者是竞赛类的,都可以认为是一次性问题。

  比如说,要解方程,100元1次方程,解决了就好了,这次编程行动就结束了。它也不用太多考虑后续的事了。

  或者是做一次工资表,做完就好了。分析一次数据,分析完就好了。

  解决很多数学问题也是类似的,问题本身不需要很多复用性,也不用去推广,将来给很多人用,不需要考虑这些问题。

  这些东西,涉及很多算法,成就感会比较强。可能时间也比较短,代码也比较精炼,也不用太多考虑其他人的感受。

  实际上,真正的编程工作,很多时候,是长期性的,是1个很大的系统工程,这个时候,成就感就没那么大了,兴趣爱好成了工作,多少有些不一样的感觉了。

  这么多年下来,编程的很多积累都完成了。

  比如说,我们摄像头识别车牌,识别人脸,10多年前可能是非常困难的,涉及到很多领域的知识,但是现在不用,有很多开源免费的东西可以用。自己不用从头开始做。

  前面讲了这么多,核心的意思是,用计算机语言编程只是其中很小的一个部分,真正的编码工作,大部分都是工程问题,而不是某个看起来很有闪光点的个人英雄。

  再直白一点来说,真要再工作中用编程,到时候学都来得及。

  编程是工程问题不是很酷的事,一项普通的职业技能而已,和咖啡拉花比,不见得就高级多少了。

  

  编程语言后面会有个简单的说明。我们先说编程会越来越简单这个事。

  这个有很多现实因素,在很早的时候,软硬件是需要兼修的。

  什么意思呢,做编程,软件要懂,硬件也要懂,要不然没法弄。

  那个阶段,编程不是聚焦普通人的具体问题,更多的是——玩具。

  我让电脑发出声音了,我牛!

  但是这些事随着商业化的发展,会越来越简单。

  这些发展的迭代速度是非常快的。

  20年前的手持设备,和今天的手机比,简直是无法直视的。

  今天手机的处理性能,比以前的电脑要强很多。

  简单来说,手机要扫描二维码这个事,在手机刚刚出现的时候,算是一个挺难的问题,现在微信的二维码扫描识别都非常迅速。

  但是它们会把这些能力开放出来给人免费使用。

  如果自己个人要从底层开始写,非常不现实。

  现在能用好Excel,夸张一点说可以顶过去很多人完成一个项目的了。

  编程语言有很多种,现在广告比较多的,培训比较多的是Python和C++。

  但是这2个语言一直也是在争议中的。

  几乎每年都有很多编程语言产生,有些专注于具体领域,有些是通用的。

  总体来说,是越来越简单了。

  以前受制于硬件,比如说以前IPhone刚出来的时候,整个空间才8G,单子随随便便一个App就能几百M。

  从这个角度来说,学很难的编程,对未来的帮助未必有那么大。

  花那么多精力,学一个Hello World,产生的现实意义太小了。

  

  编程只是工具,早期的编程因为受制于硬件,需要花很多精力解决计算机本身的问题。

  但是随着技术的进步,现在越来越聚焦实际问题了。

  意思是说,很多计算机本身的限制慢慢被解决了。

  什么是工具呢,比如说要计算圆周率,知道方法,人力算不出来,用计算机来算,会编程有帮助,但是光会编程没用,得理解算圆周率的方法。

  比如说下围棋的AlphaGo,我们知道围棋是19X19,一共是361个点。

  如果我们直接编程去算,每个点的可能性,那将是非常庞大的计算量,现在也没法解决。所以需要很深的数学背景,把问题简化,把要搜索的结果范围收敛。才有可能在现有的算力背景下,解决问题。

  这个时候,编程重要吗?也重要,但是不是最重要的。

  相比来说,对于一个工具的执着,就容易陷入小人驭于物的困境。

  计算机语言给人的刻板印象也就在这里

  编程要解决的不是编程问题,而是工具使用问题

  随着科技的发展,现在对于很多人来说,打开电脑,是一件非常专业的事。

  但是在手机出现之前,办公设备,电脑是最重要的。

  但是现在很多人已经不开电脑了,大部分工作在手机完成了。

  什么意思呢。

  在电脑出现之前,要解决无纸办公的问题。

  手机要解决电脑笨拙的问题。

  那将来手机一定会长期存在吗?也是未必的事。

  编程语言和电脑病毒类似,这个名词可能算是好名词,同时很多误解也有由此产生的,利用信息不对称,确实很带来很多迷惑性。

  其实想用通俗的语言描述一个专业的事,不是一件容易的事。

  有误解是必然的。

  简单来说,编程语言就是人和计算机对话的语言(不准确也不严谨,但是好理解)。通过编程语言告诉计算机做什么。

  曾经有数学家在解决一些问题的时,发现可以把问题分解成不同的步骤。

  这些步骤看起来是很笨拙的,但是确实很解决问题。

  比如说,1+2+3+……+100,我们知道是(1+100)*50/2。

  编程思维是,从1开始,循环到n。

  每一步都是前面的和 加上 n。

  第一次:1

  第二次:1+2=3

  第三次:3+3

  ……

  类似这样,每一次都做加法,循环100次。

  整体来说,解决这些,大致可以分成3种应对措施。

  顺序

  从上到下依次做一件事

  选择

  判断,假如满足1种条件,做什么

  循环

  就是类似上面的做法

  这就是编程的思想了。把问题拆分开来解决。

  这和编程语言有什么关系呢。

  前面讲了编程的思维。计算机就可以理解成是一套精密的设备。

  它有一些功能,必然说在屏幕上显示一个小点。

  真正实现这个功能是很复杂的,电脑的各种硬件设备调度之后才可以。

  这其中的复杂程度远超我们想象,但是大部分编程的不需要了解这个。

  因为有人把这个工作包装成一个功能的单元。由操作系统调度。

  也就是平常我们说的Windows和苹果的IOS等,来和硬件打交道。

  但是这个工作还是太复杂了,所以他们把各种工作做了分类。

  有让屏幕亮一下的,有让设备发出声音的等等。

  这个时候编程语言就出来了,加入设备有1000种功能。

  这1000种功能怎么归类,怎么使用起来方便,就是各个语言不同的设计思路。

  从这个意义上说,编程语言其实是给人看的,并不是给计算机看的。

  从这个意义上来说,人是很Low的。只能用这样的大白话来沟通。

  各种编程语言------>告诉操作系统要干啥------>操作系统调度硬件。

  各种语言就是,对计算机的不同理解。

  

  前面说的是编程语言的区别。

  实际解决问题的时候,不太可能直接从头开始编。

  这个其实很好理解。

  我要做法,但是我不想切菜洗菜,那就有人帮我们把菜切好洗好。

  有人觉得这样不干净,有人纯粹觉得这样省力。

  编程要解决问题,做饭要解决吃饱的问题。

  去菜市场买菜,买回来洗好切好,炒好,吃!

  外卖送切好的菜过来,炒好,吃!

  编程需要了解哪里买的菜比较好。比较适合自己!

  但是现在培训的都是从种菜开始的开始。

  有意义吗?当然也有,但是并不是必要的。

  

  很多年前,在手持设备上开发,需要考虑崩溃,内存不足等等各种状况。

  开发的语言也相对底层,C为主,也有用汇编的。

  后来慢慢的就越来越简单了。

  为什么有Java这个语言,在一些人看来,主要是解决工程化的问题。

  相比来说,C,C++这些语言,门槛是比较高的。

  什么意思呢,就是我学会做饭,首先要学会修煤气灶。但是其实我只是饿了,吃泡面也是可以的。

  Java把很多编程复杂的东西,都包起来,不让我们看到了。

  把编程的门槛降低以后,意味着更多的人可以加入进来,加快整个行业的发展速度。

  其实这些单机的语言讨论已经意义不大了。

  现在硬件的成本很低,更重要的是,问题规模都不在单机能解决的。

  每年淘汰的语言,新产生的语言都很多。

  不见得学了Python,学了C++就独步天下了。

  如果兴趣没那么大,其实真没啥必要。

  

  有些孩子学了C++,学了Python会觉得有特别大的成就感。

  其实对于现在几千几万种编程语言来说,整体都是大同小异的。

  无非就是不同的语法糖而已。

  要计算1加到100,每个语言解决的时候都是类似的。

  区别的是解决一些具体问题的时候,有些差异。

  这种差异有些是运行差异,执行销量差异,有些是工程差异。

  什么意思呢,人比机器贵,所以如果要花很多人力,结果节省了一点时间。

  未必是一个合算的买卖。

  编程语言没那么重要,不要为了编程语言的语法迷惑。

  没有什么高低贵贱之分。

  如果真把Excel用好,大部分的Python都是废的。

  现在很多Python的培训广告,似乎比Excel强很多。

  但是,现实可能等把运行环境,开发环境弄利索,差不多也得放弃了。

  关键得快速解决问题。

  

  不知不觉,已经进入中学阶段,叛逆的萌芽已经越发明显,许多看起来无法接受的缺点,拖沓,拖拉,信心不足,情绪管理不善,丢三落四,凡此种种,一应俱全。我似乎慢慢把一手好牌给打坏了。不管如何,还是希望尝试着记录这段经历,聊以慰藉,抚慰余生。

  举报/反馈