没有人能真正精通C++

2023-06-10 02:44:45
关注

点击参加51CTO网站内容调查问卷

作者 | Mohit Pandey

编译 | 徐杰承

任何说自己很懂C++的人可能都是在夸大其词。

我想你可能已经注意到了,是的,今天的大多数程序员都在使用Python、Rust、Go或是其他新的编程语言。大部分人已经不再需要掌握C、C++等古老的编程语言了,甚至很多程序员已经从手动编码开始向AI编码转型。

但即便如此,还是有很多人认为自己足够了解并熟练掌握C++这门古老的编程语言,但他们之中绝大部分人其实都在夸大其词。这个说法来自 Louis Brandy此前发布的一篇博客——《永远不要相信自称懂C++的程序员》。

1、C++的“双峰”特性

在博客中,Brandy提到,自己在长期面试C++程序员的过程中开始意识到C++非常重要的一个特性,C++是一种“双峰”语言。也就是说刚刚接触C++的开发者会觉得它很简单,但随着了解深入,他们的自信会被这种语言庞大的复杂性慢慢摧毁,直到他们犯下了足够的错误,就像下面这张图所展示的一样。

程序员,尤其是那些曾经学习过C语言的程序员,通常能够非常快速地掌握C++并感觉对这门语言非常熟练。这些程序员会告诉你他们精通C++,然而其实这并不是真实的。

随着他们继续学习C++,他们会经历这个沮丧的低谷,在这里他们会完全了解到这门语言的全部复杂性。但好消息是,程序员很容易意识到自己处于谷前和谷后的区别。只要你和他们提起C++的复杂性,处于谷后位置的人会为你描述上百种他们写C++的挫败经历。而处于谷前的人则会说,C++不过是有类的C而已。

2、没人能真正精通C++

当然,很多程序员把这种说法当做一个玩笑,但也有很多人在争论这种理论的正确性。在Reddit上,程序员们分享了对该说法的观点,一位技术管理者提到,面试时他会让程序员以1—10分为标准描述自己的C++水平,如果答案高于6,那就需要详细谈谈关于这门语言的细节了。

此外,这位面试官还提到,建议程序员在面试时,尽量不要直接说自己对哪门语言的掌握程度很好,而是要与面试官交流你具体擅长处理哪类业务或哪类问题,否则当你遇到一位技术狂热者时,你将很容易在面试过程中暴露自己的无知。

在当前以AI为主导的世界中,C++这门古老的语言好像更多变成了帮助人们建立知识体系和卖书的工具,而不是实际被用于生产的语言。一些Reddit用户分享了他们将精通C++写在简历上,但当被问到智能指针和右值引用等问题时却回答不出来的窘迫经历。

事实上,很多开发者在使用C++进行工作时,其实并不了解它的细节,使用C++几十年的人大多也不敢说非常熟悉这种语言。甚至连C++之父Bjarne Stroustrup也曾表示自己并非100%精通C++,他提到:“C++存在一些错综复杂的陷阱,大多数人甚至没法写出一个简单的没有漏洞或错误的类。”

2、世界仍然需要C++

当前编程世界中的真相是,你可以选择任何适合你得编程语言。如果有人反驳这个观点,那便会被贴上“语言霸凌”的标签,编程语言只是一个程序员需要学习和使用的工具。如果Python能够帮助你很好的完成工作,为什么还要使用C++呢?

目前很多开发者已经认为C++是一种濒临死亡的语言,但事实上并不是这样。如果开发人员需要从头开始构建一些东西,例如操作系统、游戏或其他基础软件,C++目前仍被认为是实现这些目标的首选语言,当然在面对很多现代应用开发时使用复杂性过高的C++会变得很痛苦。

C++为了不限制程序员的想法,包含了太多的范式,包括面向对象(灵活应用virtual继承+shared_ptr)、模块化(type rich programming和meta programming)、函数式编程(lambda,配合文件),以及面向过程编程。然而当前世界上的大多数需求,只需要用到面向对象或函数式编程。

显然,无论是对于C++还是其他语言,几乎没有人能够做到对它们百分百了解,尤其是当语言复杂性和特性随着版本更新而不断变化的情况下。C++只是在这种情况下会变得更甚,并且由于这种经典语言的名气效应,人们会给C++程序员设定更高的标准。

大多数C++程序员都存在着这样一种心态——“如果我能遵守这些规则,避免炫技、避免犯错,我就可以避免把枪口对准自己的脚。”一个很明显的道理是,当你被问及是否了解C++时,最好的答案是:我对C++的了解足够多,所以我认为我并不足够了解这种语言。

参考链接:

https://analyticsindiamag.com/dont-trust-a-programmer-who-knows-c/

http://lbrandy.com/blog/2010/03/never-trust-a-programmer-who-says-he-knows-c/ 

您觉得本篇内容如何
评分

相关产品

Burkert 宝得 423922 流量控制器

模式和显示可以定制时,与单位和时间测量提供无限的灵活性的完整选项编程。使用三个按钮进行简单的菜单驱动编程。编程模式中的参数:语言、工程单位、K系数(由最终用户预设或定义)、示教功能、主累加器的过滤和复位最大流量=2-1200 L\/min电气连接=电缆密封套控制输出=模拟,脉冲安装样式=紧凑型供电电压=115V ac,230 V ac显示屏幕=8位LCD管道直径范围=DN 15-100 mm最低工作温度=0°C最高工作温度=+60°C

RS Components 欧时 1236623 数字电流表

提供SCPI命令编程手册,以支持远程控制操作编程。RS Pro RSDM3055与主流万用表命令集兼容,并使用与SCPI兼容的语言进行传输和控制。因此,从现有测试环境的转换很简单。万用表类型=工作台溶质最大交流电流测量值=10A AC校准=UKAS溶质最大交流电压测量值=750V AC溶质最大电阻测量值=100欧姆溶质最大温度测量值=+1000(E)°C,+1200(J)°C,+1300(N)°C,+1370(K)°C,+1760(R)°C,+1760(S)°C,+1820(B)°C,+400(T)°C,+660(电阻式温度检测器)°C\N溶质最大电容测量值=10000µF\N

VACUUBRAND, Inc. CVC 3000 真空传感器

带清晰文本菜单(14种语言)的照明图形显示和点动滚轮使其处理几乎不言自明。根据型号的不同,陶瓷隔膜真空传感器和排气阀已经集成(或可外部连接)。陶瓷真空传感器具有高耐化学性,测量气体类型独立且准确。当用于通过操作电磁阀(如VV-B 6C,单独订购)提供两点控制时,会自动建议滞后值。当用于控制VARIO®变速真空泵时,无需编程,只需按一个按钮即可实现全自动蒸发。

Transcat, Inc. 9118A 热电偶元件

9118A温度范围为300°C至1200°C,适用于大多数高温应用。,2。当使用等温块时,轴向温度均匀性为± 0.2°C,在距离完全浸入1200°C的60 mm(2.4 in)区域上。自动设定点控制以提高实验室生产力,一个专有可编程控制器,有九种语言(英语、中文、法语、德语、日语、韩语、葡萄牙语、西班牙语和俄语),使技术人员能够自动控制多达八个设定点温度、温度变化率和当福禄克1586A在第一个编程温度下收集数据后,超级数据采集将使熔炉提前到剩余的编程温度,在每个设定点收集数据。一旦配置并开始测试,技师就可以离开工作,进行其他活动。,5。这些故障包括过热、底盘恒温器、风扇故障、控制热电偶故障和用户可编程断路器。

是德 N9030A 仪器

内部运行的软件可执行 70 多种信号格式的先进信号分析 •用于通用数据分析、显示和自动测量的 MATLAB 数据分析软件 •标配包括安捷伦功率套件一键式功率测量 •自动测试和通信接口 •符合 LXI C类标准,并支持 SCPI 和 IVI-COM •USB 2.0、1000Base-T LAN、GPIB •兼容 PSA、8566/68、856x 等的远程编程语言 •通用的 X 系列用户界面 / 开放式

Georg Fischer (GF) 乔治费歇尔 159001110 液体流量计

2551磁流量传感器输出4毫安至20毫安,可连接至可编程逻辑控制器、图表记录器和监控与数据采集遥测系统。2551磁流量传感器具有空管检测功能,并具有内置诊断功能,带有易于解释的LED指示灯。•盲4毫安到20毫安,数字频率,继电器输出,•即使在脏液体中也能精确测量,•多语言显示菜单,•双向流动,u00e2€¢安装在管道尺寸为DN15至DN900(½ in至36 in)的管道中,u00e2€¢耐腐蚀材料,聚丙烯或聚偏氟乙烯,采用不锈钢、哈氏合金-C或钛,u00e2€¢工作速率范围为0.05至10 m/s(0.15至33 ft/s),•专利磁强计技术,•无活动部件,u00e2磁力计最小流速=0.05 m/s最大流速=10 m/s供电电压=24 V dc管径范围=1/2-4 in连接类型=DN15到DN 100插座最大压力=10.3 bar材料=聚丙烯,不锈钢最低介质温度=0°C

NTi Audio AG FLEXUS FX100 音频放大器和前置放大器

应用程序编程.Net,FX控制套件软件支持所有.NET编程语言,如C#.NET和Visual基本.NET. 这些解决方案可快速、轻松地集成到定制的生产解决方案中。

评论

您需要登录才可以回复|注册

提交评论

广告

选型助手

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

比Python快35000倍?这门新语言想搞个大新闻!

提取码
复制提取码
点击跳转至百度网盘