大学计算机老师说未来不需要程序员,都是机器自动生成代码。老师说估计20年,程序员就会被取代,现实吗?

最新跟帖
omega

omega

这位老师忽视了程序设计的复杂性。

童兜兜

童兜兜

如果机器能理解产品经理那些稀奇古怪自己都说不清楚的需求,那么机器也能统治人类了

我还是那个泡沫

我还是那个泡沫

很有可能

惠食叮叮TTCHEN

惠食叮叮TTCHEN

作为一个刚自学了2个星期的计算机爱好者,可以肯定的告诉你,根本不现实!因为你在写代码的时候,你是要先有目标的,然后构思实现目标的途径,必须要先想出实现目标的途径,你才能去编程,让机器为你做事!在这里你就知道了,这个实现目标的途径,是你告诉计算机的,而不是计算机自己想出来的,你去告诉它要怎么做,它才能按照你的想法一步一步去代替你做,在这里可以知道,计算机只是一个跑腿的,而不是这个事件目标的制定者和解决这个事件的决策者(思考者),它只是一个跑腿的。所谓的人工智能,也是人类先找出来的某个事件的解决方案,然后再告诉计算机,遇到一个事情怎么去做的,而不是它自己思考出来的解决方案,所以不必担心机器会比人类聪明!但是计算机有比人类的绝对优势,那就是存储容量,这一点非常的可怕,他可以对现有的知识无限的积累,所以有的计算机会比大多数的人不好好学习的人聪明,能干!这是我自己总结出来的!如果你问我,计算机会比人类聪明吗?我可以这样告诉你,因为我是这样独立思考的,但是你要是去问你的计算机这个问题,它会独立思考告诉你答案吗?[捂脸]所以不必担心计算机会比人类聪明,会取代人类!

yvonnebei

yvonnebei

控制生成代码的机器也是需要代码的,只能说未来对程序员的要求也是越来越高。只会写也许代码的程序员,可能逐步减少了。

摩羯座の男孩

摩羯座の男孩

20年后老师下岗了,而你,是一名优秀的程序员

旅游的米鱼

旅游的米鱼

纯粹的代码编写确实可能被取代,但是编写代码只是软件开发的一部分工作啊!其中软件功能的需求分析确却是不可能被取代的。

Diana-夕颜月

Diana-夕颜月

如果机器能自动生成代码,那可以无限套娃,说明人类现实世界也是被生成出来的

跑步狗

跑步狗

为啥这么多文科生对编程感兴趣?

左wei

左wei

就跟电视出来报纸说没了,mp3出来电台说没了,放心不会没的,可能变得小众,高价,就像现在很多手工奢侈品。“奢华全手工编程,更有感情更稀有”

shell飘来飘走

shell飘来飘走

如果计算机代替人工作,程序员也是最后失业的一批人,因为人工智能再怎么也需要发展。AI都能自我优化的时候其他行业也早就被取代了

y6ing顺其自然

y6ing顺其自然

假的,做业务,做架构设计,做底层优化等等工作都不是机器可以替代的。除非有一天机器有了自己的意识,但那时候被取代的可能不仅仅是程序员了。

蓝带少校

蓝带少校

ai能先搞定理解产品经理的各种需求后,再搞定根据这些需求写代码后,程序员才可能被取代

?一个穿透心

?一个穿透心

不现实,至少在“20年内”是不现实的。 “机器自动生成代码”应该是软件技术发展的顶峰。即使到了这样一天,仍然需要程序员,因为用于“生成代码”的系统也需要程序员来实现、持续改进、维护它,当然到了那一天,所需的程序员的数量较之当前会少很多。


我们可以从软件研发的过程,分析为什么说不现实。软件系统研发过程的主干环节有如下四个:


首先说说需求分析阶段存在的问题

需求分析是以用户的语言、文字描述等作为输入,通过分析梳理出整个软件功能的构成,包括:都有哪些软件功能、每一个软件功能的定义。

需要注意的是,这个功能定义往往也是采用自然语言描述的。举个例子:某用户说它需要一个可以替代打字机的软件,通过分析梳理我们知道这个软件需要诸如:文字输入、文字保存…等等N个功能。比如对于“文字输入”这个功能,它的定义往往会这样描述:提供图形化窗口,用户可输入文字…巴拉巴拉,为了便于下游工作人员理解,也会辅助一些图示:

即:输入是以自然语言表达的多种形式的信息载体、输出是软件功能定义往往也是自然语言表达。那么,假设要让计算机自动编码,它在这个环节就需要强大的自然语言的理解能力。目前人工智能自然语言理解这个领域的成熟度是非常低的,估计很多人都使用过类似“XX音响”等语音交互的东西,相信使用过的人都有一个直观的认识:就是一个玩具。特定场景(如家电控制)的、简短的一轮对话还凑合,但通用场景、复杂多轮对话基本它就开始胡说八道、顾左右而言他了。

这就是当前自然语言识别的实际水平,虽然从最初的基于规则发展到今天的基于知识图谱等技术,但它仍然受限于当前基础科学的发展水平,达到完成类似需求分析这样复杂任务的要求依赖于基础科学的巨大进步,比如量子计算的成熟带来跨越N个数量级算力的增长、数学分析+高等代数+概率论领域有革命性的突破。


其次说说架构设计阶段存在的问题

用大白话讲,架构设计是以功能、以及一些非功能要求(如:必须支撑100万个用户同时使用系统)出发,选择最为合适的软件组件、软件技术等。这就等同于造一辆汽车,需求分析解决了诸如“要有四个轮子、要有5个座位、要有一个圆形方向盘”之类的定义后,架构设计是要解决“汽车分为底盘、发动机、变速系统等等构件”、“轮胎用橡胶而不是木头”这样一些问题。

可以看出来,解决这些问题是需要深刻理解功能定义、以及从功能定义出发分析出来的质量要求,对这些要求加以抽象和“变形”。当前几乎没有对应的“人工智能”技术出现,勉强称得上有点关系号称DeepMind的那位“围棋高手”,它基于强化学习、而强化学习完全是一个黑箱…

此外,架构设计的输出是基于“自然语言”的文字+“设计图”的文档,很不幸,又是自然语言…


编码阶段存在的问题更多

编码一方面基于架构设计完成软件系统框架的编码,另外一方面基于框架完成各个功能的编码。都知道编码是使用高级语言的,这就相当于要从“自然语言”到“高级语言”的一个映射。注意,这里是“映射”而不是“翻译”,因为代码并不是要和功能定义一一对应,否则也就没有类似“设计模式”之类的东西出现了。这样理解这个问题:编码等同于按照图纸盖房子,房子用砖块、预制块、成型钢筋、水泥构成,一方面这些东西的制造与要造的具体的一个房子完全没有对应关系、另外一方面如何合理利用这些东西建造是需要大量、琐碎、繁杂的“战术级”的创作。要让计算机自动完成这些事情,对它“智能”的要求会更为多种多样!


最后说说测试

我们可以假定,假设前几个环节都由计算机自动完成,那么测试工作极有可能可以省略,因为机器不会犯错。所以这一块不展开讨论了。


总结一下

假设计算机要能够自动完成代码,则需要:1)自然语言识别(其实也包括诸如流程图等的识别)至少要达到等于人的程度;2)具备通用问题的推理、归纳、抽象的等于或超越常人的能力。而这些能力的构筑,取决于基础科学的巨大进步以及突破。至少,在可见的20年内是不可能的!


题外话:会发生什么

那么,在20年内会有哪些确定会发生、持续的进步呢?会有(有些已经发生或者在发生):

1、 软件的模块化、框架化、平台化水平越来越高。这些东西相当于更为完善、灵活、强大、智能的砖块/预制块/成型钢筋/水泥,能够极大地降低程序员编写一个软件的难度以及工作量;

2、 基于第1点,会在特定领域形成一些半成熟的产品,可以让“小白”用户构建该领域的软件系统。比如当前已有的大量的无代码平台,一般都集中在企业OA领域,“小白”用户可以通过图形化界面,拖拽的方式生产特定的基于表单和流程性质的功能;再比如,在算法这一特定领域,谷歌的AutoML可以让“小白”用户通过拖拽方式产生所需的算法模型;

3、 程序员开发所需的工具越来越智能化。最典型的就是集成开发环境(IDE),会提供代码补全、特定结构生成、自动检查、下一行代码自动生成等等功能,极大地提高程序员的工作效率。


假设这样发展下去,是不是程序员技能要求会越来越低、数量要求会越来越少呢?对于前者,会逐渐两极分化。一极的要求反而会越来越高、另外一极的确是会越来越低,这全取决于个人的定位和努力;对于后者,不一定或者极大概率不降反升。原因在于软件还远没有覆盖到所有的行业、所有的场景中,同时会有新的场景(比如这几年出现的外卖平台)不断涌现,软件行业将等同于传统的农业,无论到哪个时代农业都是在发展而非在萎缩,对吧?


欢迎关注、欢迎评论!

圣乔治海峡

圣乔治海峡

不太可能吧,这么搞,大家不都失业了吗,那就是社会性问题了。就像现在的中介一样,中介不能砍掉,这样会造成大部分人失业。犯罪分子会增多。

暗夜女王

暗夜女王

  • 0
    经验
  • 0
    粉丝
  • 0
    关注
微信公众号 微信客服号 APP下载 返回顶部
顾文姬微信公众号

微信扫描关注

顾文姬微信客服号

微信扫描加好友

顾文姬app下载

扫描下载