若是有时间我建议学一学,毕竟技多不压身,但是前提是不要丢了自己很了解的语言,因为那可能是你主要的阵地,这个顶多算加分项。你想想,自己写的单片机串口程序,上传到自己写的上位机,看着自己检测到的数据编程一幅幅美妙的图形,这是一个多么幸福的时刻。这段话不仅限送给纠结于学不学C++,其他的语言也一样。
在学习C++之前我有必要学习C语言吗
一口吃不出个胖子,任何事情都要循序渐进。在我来看,确实是有必要的,至少基本语法是要了解的。在学完C语言再去看C++的书你会发现,有大概半本的内容是你在学习C语言的时候学到的,这样学起来相当轻松。
有C语言基础,那该怎么学习C++呢
在学习C++初期,大部分人犯了同一种错误,就是真的把C++当作C语言来学,学来学去学到较后用C++写出来的代码还是和C语言一样的结构。显然这样学是不对的。学习C++我觉得切入点一定是从类切入,这样你学一段时间就会发现,C++和C语言完全不同。类可以说是C++的精髓,不妨在学习的时候贯穿始终。
C++与操作系统
虽然Java、Python等的SDK或运行时环境较终也会调用操作系统API,但其自带的SDK或者运行时环境都提供了常见的操作系统功能。而C++的运行时环境一般是操作系统自身,因此C++是离操作系统更近的一种编程语言,执行效率更高。
但是,C++的整套语法不具备“功能完备性”,在大多数情况下,单纯地使用其本身提供的功能无法创建出任何有意义的程序,还必须借助操作系统API来实现。例如,C++本身不直接提供网络通信功能的SDK,必须借助操作系统提供的套接字API才能实现网络通信;而对于Java来说,JDK自带的java.net、java.io等包则提供了完整的网络通信功能。所以,熟悉操作系统相关原理和API是用好C++的前提,这也是C++难学、对新手不友好的主要原因之一。
不过,随着C++标准和版本的不断迭代,这种现状正在改变:在C++标准库中引入了越来越多的功能,避免直接调用操作系统API。
不管怎样,应用直接使用操作系统API,程序执行效率高,控制力度大,开发能力仅仅限制于操作系统本身,这是C++的优势之一。比如对于Java,假设操作系统提供了某个功能,但Java虚拟机不提供该功能,则开发人员也无法使用该功能。