由于以下原因,许多程序员对C / C ++编程语言感到沮丧并倾向于:
(1)非常陡峭的学习曲线
许多人通过学习C或C ++进入了编程世界,但这是
对于他们而言,很难很好地学习和掌握这两种语言
因为他们在处理底层编程时感到沮丧
元素,例如指针,内存存储模型,地址对齐,
模板扩展,多线程数据争用等等。 如果这些
元素处理不当,应用程序将很有可能
崩溃的问题,这会使新程序员感到沮丧。
(2)很少用于现代应用程序开发
如今,我们拥有许多高级编程语言,例如Java,C#,
Python,Javascript,Go等用于应用程序开发,看来
如果有人想开发Web应用程序或后端服务,那将很疯狂
在纯C / C ++中。 共同的应用领域已由
更高级的编程语言,例如:
- Web前端开发: Javascript / Typescript统治一切,前端中三个流行的框架是Angular,React和Vue。
- Web后端服务开发: Javascript(节点),Python(Flask,Django),Java和PHP是常用的技术。
- 桌面应用程序开发: QT(PyQT,C ++),Electron(Javascript),WPF(C#)。
- 移动应用程序开发: iOS(Objective-C,Swift),Android(Java)。
- 分布式系统,大数据,云计算: Java,Go,Groovy,Scala。
- 数据科学,人工智能(人工智能),机器学习(机器学习): Python。
看起来C / C ++在这些现代应用程序中很少使用
开发区。 那么为什么我们还要学习C / C ++呢? 这是7
您应该这样做的原因:
1.更快地掌握其他高级编程语言。
几乎所有其他现代编程语言和流行的库都是由C / C ++构建的。 以下是一些典型示例:
– Java:Java虚拟机热点的核心是用C ++实现的。
– Python:Python解释器是用C实现的。
– Javascript:最受欢迎的Javascript引擎V8是用C ++实现的。
– Numpy:Python最受欢迎的科学图书馆之一
在AI和ML中被广泛使用,但其核心模块在C中实现。
如果您只记得编程语言的语法或可以使用
通用库很好,这并不意味着您真正掌握了
编程语言。 了解语言背后的理论可以有所帮助
您可以更有效地使用该语言开发应用程序,然后
表示您真正掌握了该语言。 但是所有的前提
那就是您必须非常了解C / C ++。
2.带来表现。
在使用高级编程语言进行编程时,我们主要关注
关于功能的实施。 我们通常使用以下准则
避免愚蠢错误的最佳实践,但当这种情况不足时
您需要获得更好的性能。 更好的性能需要谨慎
进行分析和分析以找出哪些代码是性能热点
以及如何以更有效的方式重写它们。
如果您足够了解C / C ++,那么它将帮助您获得更好的成绩
性能,因为您知道这些高级编程语言的方式
以最低级别运行。 您将能够更快地发现问题
这可能是性能下降,昂贵的CPU指令,
缓存未命中,上下文切换的权衡或其他原因。
3.很好地理解计算机的基本理论。
计算机网络,操作系统,计算机体系结构和
编译器理论是最重要的四个基本计算机
理论和我们几乎所有的新技术都基于这些
四。
如果您只是使用高级编程语言进行编程,
这些机器级别的详细信息通常对您是隐藏的。 但是这些
如果您想跳出现有技术,技术真的很重要
框架并开发更多内容。
例如,当网络状态不稳定且您需要
可靠的连接,您将无法解决TCP问题,因为TCP
由于重传超时较大,因此带来较大的延迟。 又怎样
你应该这样做吗?
如果您很了解计算机网络,则可以构建自己的计算机网络。
可靠的协议,具有更积极,更有效的重传
计划。 然后,您需要将其集成到网络的SDK中,
您可能需要了解如何在
操作系统。 您的实施应该高效,因此您必须
也非常了解计算机架构,例如使用CPU缓存,
内存和网络适配器。 最后,如果你想
提供其他高级语言(如Python)的API接口,
Javascript等,您需要了解语言绑定的工作原理以及
编译器理论对此有所帮助。
最重要的是,所有这些关键技术都基于C / C ++。
4. C / C ++为世界提供动力
C / C ++无处不在。 特别是,它们提供的技术比我们认为的要多。
大多数操作系统内核都是用C编写的,包括但不限于Windows,Linux,Mac,iOS,Android等。
现代浏览器也是用C / C ++编写的。 例如Chrome,Firefox等。
现代游戏引擎是用C / C ++编写的,例如Unity3D,虚幻引擎,cocos2d-x等。
如上所述,编程语言的编译器和解释器也都在C / C ++中实现。
根据2018年3月的TIOBE指数,C / C ++仍然是最
流行语言。 所以不要犹豫,继续学习这两个
仍在为世界提供动力的语言。
5.语言接口
这里的问题是C ++接口和ABI(应用
二进制接口)不是标准化的,并且取决于您使用的编译器
用过的。 如果该库是使用其他编译器(甚至是
其他版本),则可能无法调用它。
对于定义和标准化接口并且也被许多其他语言使用的C而言并非如此。
6. C ++编译器产生的高效机器代码
嗯不 C ++不仅遭受与C相同的问题(
语言基本上无法对代码做出任何保证),
它的语法极其复杂,阻止了编译器对其进行编译
正确!
OCaml编译器可以产生比C更快的代码是有原因的
编译器,以及为什么C ++程序在编译时如此庞大。
7.如果您不懂C ++,您几乎不会被视为黑客。
这是产生火焰战争的极好点,因为它依赖
完全取决于您对黑客的定义以及您对C ++的看法。
就我个人而言,我知道C ++,并且我想回去度过一生
使用该语言。 C ++不必要地复杂,“ OO”是
开玩笑,它有这么多隐藏的陷阱,我很惊讶没有人
被C ++编译器吃掉了。
而且C ++是C的几乎完整的超集这一事实可能具有
赢得C程序员是一个好主意,但这也意味着您
得到所有Cs问题,例如预处理器和转换等。
一个热衷于编程语言的人可能知道C ++,但我无法想象他们真的喜欢它。
因此,开始使用C / C ++并继续学习。 不要被吓到
它的难度和陡峭的学习曲线。 一旦掌握了它们,
您将获得比您预期更多的知识!
摘要
计算机不是关于计算,它们是关于
信息-组织,检索和操纵它。 你想要
写高效的程序? 然后,您需要了解和学习工作
与数据结构。 数据结构和算法告诉您如何
可以充分利用您精通的编程语言。 拿起C
和C ++并实现和试用数据结构,并了解如何
令人兴奋的是。 尽管出现了新贵,但可靠的C和C ++
继续成为几种编程语言的选择
应用程序。
From: https://hackernoon.com/7-reasons-why-you-should-keep-learning-cc-cl423zgx