培训机构为什么很少培训C++ 您所在的位置:网站首页 为什么学c语言的人少 培训机构为什么很少培训C++

培训机构为什么很少培训C++

2023-10-23 07:18| 来源: 网络整理| 查看: 265

为什么不教C++? 单刀直入吧,别嫌不好听,因为你不是科班出身的,学起来难,培训机构的ROI(投入产出比)太低。举个栗子,都是零基础,教个Java,三个月可以出师,写出一个炫酷的应用。教个C++,三个月后学生还在问,指针和引用究竟有什么区别?

对于科班出身的,据我所知,没有哪个计算机本科专业是不开C/C++的课程的。

C++为什么难?因为它需要你了解更多软件的底层知识,比如内存管理机制,然后很多事情都需要你亲自去实现。不说其他的,单一个指针及内存管理,要去理解透彻,那就够你喝一壶的。很多出来工作多年的写C/C++的程序员,还不时晚上做噩梦梦到某个指针没初始化指向了一块随机内存导致崩溃而惊醒!再次迷糊快睡着时,又梦到某个循环中内存没有释放而导致内存爆了!

Java, C#等为什么相对好学点?因为这些更多是面向业务的语言,底层的隐晦难懂的相关知识早已有人为我们处理好(jvm,clr之类的)。大部分情况下我们不需要去了解。这就让我们能够从一些底层细节中抽身出来,花更多心思在我们业务逻辑的实现上,以最快的速度实现我们的上层应用。

打个比方吧,我们来打造一座房子。用C++来做的话,每块砖头乃至每颗沙子该怎么生产,你都需要关心,等这些基础设施都搭好了,你才能开始用这些沙子和砖头去堆房子。用Java来做的话,你直接关心的就是怎么去堆房子,因为沙子和砖头已经是Java的最小粒度,一大堆不同的沙子和砖头在那里,拿起来你就可以用。

那既然Java等能让我们只关注业务层,提高我们的生产力,为什么科班还需要从C/C++学起呢?

原因之一,我认为是没有这个基础,一些软件基石般的知识或者课程你就没法学。比如基石之一就是操作系统实现原理,相信用的都是Linux或者Minix吧?里面大部分实现的代码就是C,还有一小部分跟硬件更结合的就用汇编,比如bios怎么进入到第一个扇区找到操作系统启动位置,怎么操作寄存器,分配好GDT,LDT,底层中断等。你没有这些语言的基础,你怎么学?

原因之二,我想应该是效率和应用面。C/C++实现上层应用也许实现过程相对慢点,但是它运行起来速度更快,且让我们有更多的控制权。还是以内存管理来说,它让你能更高效的控制内存什么时候应该分配,什么时候应该释放。同时,我用C/C++还可以做和硬件打交道更紧密的事情,比如为某个设备做驱动,或者做单片机以及嵌入式底层的开发,而这些是JAVA等没法应付的,你总不能要求开发单片机之前你先让java给你在上面看怎么弄个解析器吧?那你不如直接搞个树莓派算了。

同时,这也回答了另外一个网上流行的一个问题:我应该学哪个语言,哪个才代表语言发展的趋势?

答案就是,你如果是想往底层走的,没有什么趋势可言!你就好好学好C和C++。

如果你是想往上层应用开发上发展的话,那么你也别去关心趋势,因为现在还没有办法用一个语言很好的实现跨平台,你每个平台的默认推荐语言你都需要去学习。

比如你现在可以用H5去套个壳实现所谓跨平台的应用,但你真去做的时候你会发现其中各种掣肘各种卡顿各种效果你做不出来,这些和native的语言做出来的效果是无法比拟的。

所以iOS上你还是乖乖的学swift,安装上你还是好好的java/kotlin,Windows上你还是好好的C#,小程序及Webapp上你还是好好的学JS, Mac上你还是好好的Objective-C,后端你喜欢Python就学Python,喜欢Nodejs就JS,喜欢JAVA就Java。但是你想走全栈路线的,建议你还是JS,据我了解,当前唯一能从前端打通到后端的,就是JS一家。

稍微总结下吧,语言没有优劣之分,看你用来做什么。但是你要系统学习计算机相关知识的话,C/C++你是逃不掉的。最后现在还么有哪个语言是可以真正完全跨平台实现Native App的效果的,所以每个平台自身Native的语言还是最好的选择。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有