热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么要继续学习C/C++的7个理由

由于以下原因,许多程序员对CC编程语言感到沮丧并倾向于:(1)非常陡峭的学习曲线许多人通过学习C或C进入了编程世界ÿ

由于以下原因,许多程序员对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



推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 报错现象:从mysql5.5数据库导出的数据结构放到mysql5.7.10报错create_timetimestampNOTNULLDEFAULT‘0000-00-0 ... [详细]
  • 前言小伙伴们大家好。从今天开始我们将从 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 随着前端技术的发展,越来越多的开发者开始使用react、vue等web框架,但很少有人深入理解这些框架的源码。然而,这些框架底层都是由原生的javascript构建而成。对于初学前端的人来说,可能会认为javascript很容易上手,但实际上只是因为它被高度封装了。与能够使用封装类的人相比,能够理解框架原理的人则处于另一个层面。本文将深入剖析jquery源码,探寻框架底层的原理,帮助读者更好地理解web框架的运行机制。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • iOS逆向工程(三):利用Cycript调试App
    利用Cycript调试App一、Cycript是什么?Cycript是一种脚本语言,是Ob ... [详细]
author-avatar
泥泥的春天_565_576
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有