发表时间:2022-03-24来源:网络
先交代背景,我在互联网工作10年多,接触过的编程语言有python、java、golang,至于什么shell等各种系统的脚本语言就不多说了
恭喜题主,有一个对各种领域都感兴趣并且有一定天赋的孩子,这是我们做爸妈都非常羡慕的,相信不少父母都尝试让自己的孩子学数学、英语、音乐、体育等等兴趣班,就是想提前寻找到自己孩子擅长的领域
我和老婆都给自己的娃(女孩)报了很多兴趣班,其实就是为了试错,看看娃最适合学什么,从她学过的课中,我已经为她排除了钢琴(算了不多扯自己的娃了。。。)
至于以后给不给娃学编程,我猜大概率会!因为我们都是互联网行业的资深从业者(老婆也是大厂资深Java),相信以后给娃学编程的引导应该会比一般的父母要好一些。
但是编程教育和编程工作也是有挺大差距的,因为学校竞赛玩的那套和真实工作不一样,我们也会深入理解而不能将自己的工作经验生搬硬套进去
题主这里的观点学习一门语言就应当学通再去学其他,我是不同意的
因为一门语言根本就没有学通的时候,都是根据自己实际的项目开发需求来使用不同语言、不同框架
比如说个不是太严谨的举例,我用python 60%的语言特性,就能解决我99%的实际问题,我还有必要学习python剩下40%的语言特性吗?没必要,我不是要成为“编程语言”大师,而是解决我实际工作问题
而且在实际工作中,我们用不同工具是根据实际开发需求而切换的,甚至在不同工具或者语言切换后,你会更深刻地理解到不同语言的特性和长处短处,以后你选择工具就可以扬长避短
对于学生的编程比赛来说,又不涉及各种高并发、线程安全、代码风格什么的。我觉得用到编程语言的50%左右的特性就足够了吧,这点存疑,有反对意见的话,一切以你为准!
编程语言就是相当于厨师的刀具,有些是砍骨刀,有些是切肉刀,用处不同,要怎么用得好就看厨师的经验
而且,不同编程语言的差距,不像是你认为的类似中文和英文的差异那么大,你可以理解是普通话和粤语的差距吧,但很多基本原理都是想通的,比如循环、判断、条件、变量、函数、引用等等
再说说C++和python的简单差异吧
对C++的理解需要更多的计算机系统底层知识,比如指针、内存等等,理论上要大一点的孩子才能比较好理解,比如上了初中?要判断你孩子是否以后长期在计算机行业发展,很好的判断条件就是学C/C++语言,如果他们能通过这个语言写代码不吃力,并且对其背后的计算机运行原理都感兴趣的话,以后你的娃就算考不上计算机名校,也能凭自己的代码能力在IT行业混一口很香的饭
之前我回答过一个问题,是关于为什么大学的计算机系普遍选择C作为教学语言,供题主了解:
我们学习的过程一般是这样的:基础 -- 理论 -- 应用
比如数学吧,从一开始的加减乘除,到各种公式,再到应用题
加减乘除对应“基础”各种数据公式对应“理论”应用题对应“应用”但这里所述的基础是相对的,对于只做增删改查的码农来说,他们的基础可能是python、java、js之类的编码语言
但对于一个计算机学生来说,他们的基础是计算机组成、数据结构、操作系统、计算机网络等等


为什么差那么远呢?
因为以上两者学习的目的是不同的,前者是培养一个代码工人;后者是培养一个潜在的计算机科学的研究员、学者(对,我说的是潜在,毕竟能继续搞科研的是少数人)
回到题主的问题,计算机系学生为什么学C?
从概念上看,C语言是一门面向过程、抽象化的通用程序设计语言。
Java是一门面向对象编程语言,而Java语言是从C语言衍生而来,它吸收了C++语言的各种优点,并且摒弃了C++里难以理解的多继承、指针等概念,从概念可以看出C语言相当于Java的基础语言,学完C再学Java会更容易
而且从应用领域上,C语言和Java的应用领域几乎没有重合。
因为随着这几年Java、python、Go等语言的出现,它们凭借比C更简洁的、更安全的性能快速崛起,抢占了大量的市场
目前因为Java有完善的框架,在多线程、高并发方面有着较好的稳定性,所以Java主要应用于企业级应用开发、大型系统开发等领域
而C语言由于编程的复杂性,退守到了系统级别语言,而且因为想要系统级软件可以发挥出机器的功能,它的底层核心就需要用C/C++来编写,所以C语言主要应用于软件工业
简单总结一下,就是应用层用java、python、go、c++都可以,很适合
但是,一旦涉及操作系统、编译器、计算机网络、数据库等等底层的时候,就需要用C语言这种直接跟操作系统层面打交道的语言比较合适了,这里所述的底层,洽洽是计算机系学科的核心课程
如果不学c,根本做不了各种实验、项目
而且学会了C,也不影响你自学java、python、go,有了c的基础,学另外一门语言,有经验的工程师最多一周的业余时间,没经验的学生最多1~2个月的课余时间就能学好,根本不会成为你的学习瓶颈
所以程序员培训班让很多学历一般的都能学会java、python、go,题主是985学历还怕学不好吗?
至于c语言,说实话,我工作那么多年了也几乎没用过,但不妨碍它是一门很实用的编码语言
凡是看一些系统级软件的源码,都需要有一定的c语言功底,它是内功,身为计算机系的学生,是必修的,即便不学C++,也必须学C~



以我熟悉的车载系统开发为例,所以选了一个汽车行业智能化车机的标杆,小鹏XmartOS系统作为样例进行说明
现在的智能车载系统普遍是基于安卓内核来开发的,主要编程语言是Java,这里你会奇怪,不是说Java不适合用于做系统开发吗?

这里就得说说安卓和linux的关系了
2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。
因此我们就很清晰的理出了一条线路那就是Unix, 简化形成了Linux,Linux则是安卓的内核,而苹果则是使用unix系统作为ios和macos的内核。

linux是用c语言编写的,安卓是用Java语言编写的,两者处于系统的不同层次
安卓最初设计出来的时候就是要在不同厂商的不同硬件平台上运行的。不同硬件平台意味着不同的CPU不同的指令集。在系统层面为了保持效率以及系统开发一般都用c/c++开发在应用层面就必须面对跨平台的支持性。那么哪种语言能做到一次编译,到处运行呢?最成熟、可靠且流行的方案应该只有java了
还有的是,现在儿童教育机构鼓吹年龄很小的小朋友要学编程,我个人也是持怀疑态度的
编程这个技能,对于小孩来说,有点类似数学逻辑+计算机操作的复合技能,我们如果把编程这个技能分解出来,它并不是一个全新的东西,而是若干项技能的组合。
现在编程被炒热,主要基于一个观点:未来是AI的社会,很多问题是机器去解决,所以学会与机器打交道是必备技能,而编程就是学会与机器交流。幼儿场景下多以兴趣和思维包装训练进行包装。
价值方面,我分为非物质和物质的两个维度来说明吧
非物质:
主要锻炼儿童的编程思维,在入门初期,一般都不会涉及复杂算法、工程效率等需求,所以更多是对于各种事情的步骤“序列化”、“逻辑化”,其实这个作用,和学习数学、物理,甚至乐高积木等是差不多作用的。
物质:
为了以后能在计算机学科方面有特长,能获取奖学金、保送(这个其实很难,和奥数差不多概率)等等,另外,在互联网行业里面,如在中学、大学有编程竞赛经验的同学,一般来说,编码能力会比较强一点。
以上,是否能构成大家让小孩学习编程的理由,我认为这个是最重要的。如果家长们都认为这些没啥所谓,对我们收益不大,那真的没有学习编程的必要。
如果假设第一步成立,我们都认为学习编程的价值极大,那么第二步就是考虑要不要把孩子送到培训机构?
相信很多父母都会英语、数学甚至乐器,但为什么还是要把孩子送去培训机构学习呢?
因为从自己懂到能教育别人,甚至教育年龄那么小的儿童,是需要有专业的教育技巧的,假设你懂得100%,没有较好的教育和沟通技巧的话,可能只能传授30%给别人。而专业的教育工作者,可以把自己的100%的80~90%传授给其他人。以上数据是我拍脑袋假设的,大概就是这样一个道理。
我是很承认专业培训机构的价值,我自家的娃也有在培训机构学习,教的的确比我们好,而且很体系化。这个钱是值得花的,但大前提还是要有上面的那一个学习的理由,是否足够充分。
然而,学习编程对童子功没什么需求的,不像练习乐器、体系项目等需要很小身体没长开之前就要介入。
学习编码的话在初中年龄再学一点不迟,很多行业大牛都是中学甚至大学后才接触编码的。
如果是非常小年龄的儿童,连基础逻辑都没培育好,去学编程是事倍功半。6岁后,看娃发育情况和兴趣,有兴趣就去,当做培养思维能力,类似学习乐高拼积木。幼儿不要想着能学多少东西,主要还是培养兴趣为主,有了兴趣就有了未来继续深入学习的动力。
苏宁微店卖家版app(苏宁推客)下载v9.8.40 安卓最新版
57.19MB |生活服务
机友邦工程机械网官方版app下载v4.0.4 安卓版
88.56MB |系统工具
苏宁微店客户端(改名苏宁推客)下载v9.8.40 安卓版
57.19MB |生活服务
优腿商家端app下载v1.23.5 安卓版
34.13MB |系统工具
龙湖物业app下载v1.20.0 安卓版
84.54MB |生活服务
moon月球手机版下载v2.6.5 安卓版
51.55MB |生活服务
邻里掌柜app官方版下载v8.12.3 安卓版
151.25MB |生活服务
药采采app官方版下载v2.6.3 安卓版
31.88MB |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14