zoukankan      html  css  js  c++  java
  • C++和C++程序员谁先完蛋?

    作者:闻数起舞来源:今日头条

     

    直到昨天,我还以为AI永远不会取代我成为程序员。

    好吧,从一开始,编程作为一种职业就已经陷入了自己的死亡之中。我想,当有人第一次提出汇编程序时,很多人都认为这就是结局。

    什么?一个可以将人类可读的笔迹转化为真实机器代码的程序?那么每个经理现在都可以编写代码吗?我们过时了吗?我们已经自动化了吗?是时候收拾东西走了吗?

    然后很快就出现了足够多的高级语言,诸如FORTRAN和COBOL之类的语言。现在,这肯定使真正的程序员变得不必要了,不是吗?您可以是机械工程师或业务分析师,并且精通计算机。您不再需要程序员为您编写代码。

    然后归纳编程来了。具有Haskell的功能或Prolog的逻辑。归纳编程的思想是-您无需编写代码,只需设置程序应在其中运行的约束条件,并且在可能的情况下,语言将为其编写代码。

    随着语言发展到计算机代数系统,它成为不可知的语言。现在,您可以在Python笔记本中编写一些方程式,并将其解转换为其他任何语言的代码。因此,不仅您不需要程序员来编写代码,甚至都不需要自己编写代码。

    尽管所有这些事情都威胁着要终止编程作为一种职业,但是,却有大量的程序员崛起,崛起并继续崛起。指数也是如此。每五年,这个数字就会增长两倍。比人类增长的速度快得多。以这种速度,到2075年,我们所有人(约有100亿)将各自拥有三个编程工作。

    当然,这种增长必须在某个时候停止。世界上没有足够的可卡因来使我们所有人日复一日地不停地进行编程。但这不会因为某些颠覆性技术而停止,只有在其他行业的需求超过程序员的需求时,它才会停止。

    诸如汇编,高级语言,归纳编程或AI之类的破坏性技术只能改变我们进行编程的方式,而不能杀死编程作为一种职业。

     

    还是我昨天想过。

    您可能会认为,我与GPT-3聊天,它最终说服了我从事男性妓女的光辉事业。但不是。实际上,昨天只是另一天,我只是在做我的工作。好吧,不是我的工作。我当时正在从事C ++应该为我完成的工作,但失败了。我正在将一段高性能代码从MSVC移植到GCC。

    是什么让程序在2021年快速运行?内存仍然相对较慢,并且说来话长,因此必须进行显式内存管理。现在每个CPU有许多内核,因此我们需要并行计算。而且,处理器的滴答速度并没有比20年前快很多,但是现在它们确实有很多传送带,因此,如果我们要快速编写代码,就必须对所有内容进行超标量。

    C++糟透了这三个方面。

    • 是的,在C++中有一种分配对齐内存的标准方法,但MSVC不支持。
    • 开箱即用的并发性太糟糕了,您必须依靠第三方库,例如英特尔的TBB。
    • 编译器尝试在可能的情况下利用SIMD,但是它们无法有效地利用SIMD,因此您必须使用内部函数编写代码才能获得所有好处。

    如果您终生坚持使用Microsoft和Intel,那没关系。但是,当您尝试将事物从一个平台移植到另一个平台时,您会发现多年来C ++悄然失去了可移植性游戏。是的,您可以通过定义来解决对齐不一致的问题。从技术上讲,您可以为ARM进行TBB克隆,因为英特尔理所当然地不愿意支持他们的竞争对手。但是,有了内在函数,您就有了句号。固有特性是特定于处理器的,因此您的代码未得到优化或可导入。

    具有讽刺意味的是,由于C最初是为了将UNIX从PDP-7移植到PDP-11而发明的。其唯一目的是实现可移植性。50年后的今天,我们面临着令人不安的事实。为了使性能最大化,您必须比编译器更好地使用处理器指令。因此本质上就像最初的程序员一样编写代码。

    > Rainer Gerhards, CC BY-SA 3.0, via Wikimedia Commons

    好的,但是它与AI有什么关系?

    很高兴你问。我觉得,尽管对程序员的需求仍然追随全球市场,但对创新的需求却在70年代急剧上升,并在随后的几年中逐渐下降。

    归纳编程的需求为零,因此不会有像归纳编程甚至高级语言一样出色的破坏性技术。对于C ++缺乏高性能计算方面的开发,我显然感到不满意,但您猜怎么着。我不是不高兴去创造另一个FORTRAN。显然,没有人。

    C++的作品。这不是理想的,但也没有那么糟。这就是为什么它会留下来。

    是的,我花了一天的时间将代码从MSVC C++重写为GCC C++,这很无聊,而且我写了这句话,但这并没有改变。一天就是一天。头就是头。

    现在为破坏性技术。尽管AI尚无法满足客户想要的一切,但它具有完成我无聊的工作的全部能力。它可以解决交叉编译器的不一致问题,也可以在固有级别上优化代码。甚至用std :: threads重新实现parallel-for看起来也很繁琐,足以委派给机器。

    之后,AI甚至可以为我写书。

    对于拥有比我更多的人工智能经验的人来说,这一切都是可能的,有利可图的,并且可能很有趣。我们已经使用SymPy用C ++编写代码,利用AI优化该代码将只是一步之遥,但是人们很乐意为此付出代价。它具有启动潜力,所以我希望它会很快出现

    AI很有可能最终取代我,也许不是以程序员的身份,而是以C ++程序员的身份。但是一些新技术将杀死C ++本身的可能性很小。

     

    C/C++具有底层操作能力,既适合软件开发,同样也适合硬件开发。还可开发Windows操作系统,Linux操作系统,大型游戏,大型服务器,桌面应用程序等。

     

     

    如果你C/C++感兴趣,想学编程,小编推荐一个C/C++技术交流群【点击进入】!

     

    涉及到了:编程入门、游戏编程、网络编程、Windows编程、Linux编程、Qt界面开发、黑客等等......

     

  • 相关阅读:
    使用makeself创建安装文件
    Java类的多态机制
    LintCode 带最小值操作的栈
    js限制checkbox选中个数
    Java Collection框架—List set map 的异同世界
    利用runtime动态生成对象?
    2014-3-4 大规模无缝水陆导航图
    atitit。全局变量的设计与实现 java php的异同
    PHP从入门到精通(四)
    PHP从入门到精通(三)
  • 原文地址:https://www.cnblogs.com/zm131417-/p/14469342.html
Copyright © 2011-2022 走看看