阅读更多

0顶
0踩

非技术

原创新闻 什么会让程序员丢掉工作?

2017-07-14 10:29 by 副主编 jihong10102006 评论(2) 有9963人浏览
引用

什么会让程序员丢掉工作?

1,以后会不会出现中文编程呢?(这里说的肯定不是说易语言了,而是另一个层面的中文,第三层shell,在现在的基础上再裹上一层,而且大部分是中文)

2,各种IDE会不会再给自己套上一层翻译环境,以至于以后HR,文员就可以像写word一样,直接写出一个工程,或者更形象点说就像写现在代码的注释一样写未来的代码呢?然后由框架或者IDE直接后台翻译出来?已经有一些苗头出现在曾经的Dreamware和现在的Visual Studio,以及未来的所有IDE上。

3. 人工智能:是不是所有与机器打交道的工作,都会在未来被现在正在与机器人打交道的人自己干掉呢?社会中,重复性的工作都会被被淘汰。”,但在未来”重复“的界限会被已经产生的无数 ” 轮子 “ 碾压、拓宽到何种地步呢?

编程的工作不会消失,名字或者会变,但不会消失。编程困难之处,是需要精确无歧义地描述一件事物。只要你做到这个,就很容易学会编程。编程的语言、工具都不难,但需要你长期动手实践、熟悉。编程包含两部分,想清楚,动手做。

很多人没有觉察到,日常语言是很含糊的。因此编程才需要发明更精确的语言,就如同数学需要一些符号公式。这并非是想为难普通人,让普通人看不懂,而真的是实际需要。普通人让程序员说人话,总想将代码翻译成日常语言。而对于程序员,代码更容易看懂,更需要将日常语言翻译成代码。Talk is cheap. Show me the code.

日常语言约定俗成,创作出新词汇,我们基于这些词汇更好地说话。而开源的库,就让程序员,有更好的词汇,描述更抽象、更高级、更好的东西。

除了词汇,我更喜欢将编程比喻成拼积木。最开始只有一些简单基本的积木,用这些小积木拼出更大的积木。积木一旦拼好,就可以无限复制。之后再用拼好的积木拼更大的积木。这样可用的积木就会越来越多,越来越高级,就可以拼得越来越快。开源就是向其它人分享这些积木。

为什么编程不会消失?因为人们基于旧东西会创作出新东西,永远有想拼的更复杂的积木。比如数据库,前辈程序员耗了心力去拼这个积木。之后的程序员有了这个数据库这个积木,就可以直接用来做网站。一代代程序员薪火相传,向前进。这个过程没有尽头。或者有一天没有现在的人类了,也会有新人类重复这过程。假如有天机器会思考,会创造,它还会是机器吗?它应该改成他,他就是新人类。

编程中,重复性的工作肯定会被淘汰。社会中,重复性的工作都会被淘汰。

现在的编程工具还比较落后,但放到十年前,简直是梦幻般存在。而今天的软件,比十年前要复杂得多。今天我们用更好的工具创作出更复杂更好的软件,十年后也是。

抛开程序员,让普通人动手做产品,这个念想从计算机被发明开始,就一直没有停息过。实际上已经实现了部分。今天的大部分程序员,放到十多二十年前,也就是普通人。程序员并没有被抛开,反而越来越多,因为越来越多的普通人也可以编程,成为程序员了。

1,以后会不会出现中文编程呢?

我不清楚这里说的中文编程是什么意思。假如只是将英文的 "if", "else" 换成中文的 "如果", "否则"。这早就有了。程序员是很务实的,总会选择有用而非花俏的工具。敲中文去编程,总需要切换输入法,不方便跟别人沟通,看起来也累,注定流行不了。

但如果是用中文去描述,就自动出现一个软件。这种要求,首先需要说中文的人描述得精确并无歧义。你可以做个实验,你是 A, 先在纸上画一些最基本的三角形和正方形。给另外一个人 B 一张相同尺寸的纸,你用中文去描述你纸上的图形,让 B 画出来。B 不能看你的图形,而你只能用中文去描述,不能动手画。最终对比 A 画的图形和 B 画的图形。这个实验中,A 相当于用中文这种高级语言去编程,B 是可以理解中文的计算机。

想精确无歧义地传达意图,是很难很难的。

2. IDE 是否可以自动翻译人们意图?以后 HR,文员就可以像写 word 一样,直接写出一个工程,然后由框架或者IDE直接后台翻译出来呢?

这个问题见上文。HR,文员用 word 来描述意图,假如可以描述得很精确无歧义,实际就相当用 word 编程。你没有意识到,日常的 hr、文员、产品经理用文档去描述需求,是多么的含糊。假如文员能够精确无歧义地描述意图,他实际上可以改行当程序员,还会是很厉害的程序员。

3. 是不是所有与机器打交道的工作,都会在未来被现在正在与机器人打交道的人自己干掉呢?

这个问题的关注点错了。不应该太过于关注跟机器打交道,还是跟人类打交道。而更应关注你的工作是重复,还是有创作性。跟机器打交道,可以有创造性。跟人打交道,也可以是重复。人们普遍认为机器就是死板重复的,这只是误区。重复性的工作必定被淘汰,有创造性的工作就不会被淘汰。比如商场收银员,她的工作跟人打交道,但是重复的,这种工作就容易被淘汰。基于同样道理,银行柜员,一些中介,汽车司机,大部分农民,也很容易被淘汰。

程序员对着计算机,假如是很重复性地去拼凑代码,也容易被新人淘汰取代,拼体力是肯定不够年轻人的。需要思考如何更有创作性,让工作价值快速增长,让自己不可被替代。这个问题我没有完全想好,以后怎么做要靠自己思考行动,别人帮不了。不要等被淘汰就就说程序只是青春饭。事实上很多人是不适合当程序员的,只不小心混进来的,过几年被淘汰也应该。

而我自己会继续编程,但需要更厉害,可以持续养家糊口。我这样笨,这样懒,除了编程我想不出可以做什么。而想在编程达到顶尖,到一定程度,就不能整天埋头于编程。就需要接触额外的领域,比如设计,推广,规划,审美,文学,工程等。
  • 大小: 239.7 KB
  • 大小: 1.2 MB
0
0
评论 共 2 条 请登录后发表评论
2 楼 qibinggang 2017-07-24 12:12
身为程序员的我觉得靠谱,只是那时候人类不一定存在了。
1 楼 282849746 2017-07-15 09:36
我相信写这样一遍文章的人,一定是理论主义者,没有实际开发经验。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 3. Python解释器——《跟老吕学Python·新手》

    Python 解释器是一个程序,它读取和执行 Python 代码。解释器会将 Python 代码转换成计算机能理解的机器指令,然后执行这些指令。解释器是一种软件程序,它能够读取和执行用特定编程语言编写的代码。Python作为一种解释型语言,其代码在运行时通常由Python解释器来执行。以下是解释器工作原理的概述:源代码输入: 解释器的第一步是接收源代码作为输入。这可以是直接在解释器中输入的代码,也可以是从一个文件中读取的代码。词法分析(Lexical Analysis): 在这个阶段,解释器将源代码分解成一

  • 编程语言的分类与介绍(动态、静态、强类型、弱类型、编译型、解释型)

    1,动态类型语言 VS 静态类型语言 (1)动态类型语言指是在运行期间才检查数据的类型的语言。使用这类语言编程时,不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。 常见的动态类型语言有:Python、Ruby、Erland、JS、Swift、PHP、Perl (2)静态类型语言是会在编译期间做检查数据类型的语言,即写程序时要声明所有变量的数据类型,是固定的。使用数据之前,必须先声明数据类型(int,float,double 等)。相当于使用之前,首先要为它们分配好内存空间

  • 常见编程语言总结介绍 (包括:C/C++,Java,Go,Python,C#,Javascript,scala,PHP,R,Visual Basic .NET)

    编程语言本身是一个实现人与计算机交流,从而控制计算机运用自己的算力去完成某项功能的人机语言。 编程语言的顺序、选择、循环等结构构成了语言本身的句式。数据存储结构的优化方便了使用,形成了链表、栈、树、图等高级数据结构。由于要面对各种现实中的复杂问题,逐渐创造了各种算法。 C/C++ 现存编程语言中的老祖,其他语言皆由此而生。执行速度最快无人能及。但是写起来最为复杂,开发难度大。 C语言作为最古老的编...

  • 动态编程语言

      动态编程语言(Dynamic Programming Language),在运行期间完成需要其它高级语言在编译器决定的一些行为,这些行为可以被任何高级语言在足够足够复杂的情况下实现,而动态变成语言可以直接使用工具来运用这种特性。  动态语言基本的实现包括,对象的运行期行为改变(继承关系,对方法的调用),反射机制(对象树,动态类型识别),宏(提供编译器的能力,包括优化代码,改变语法,控制虚拟

  • 4 动态编程(Dynamic Programming, DP)

    动态编程

  • 动态网站开发技术

    动态网站开发技术 目前,最常用的4种动态网页开发语言有ASP(Active Server Page)、ASP.NET(Active Server Page .NET)、JSP(Java Server Page)和PHP(Hypertext Preprocessor)。那么这4种程序各有什么优缺点,我们学习哪一种语言更容易上手呢?下面就让我们一起来了解一下这4种技术的特点。

  • 常见的十几种编程语言介绍

    作为一名小白,在刚接触编程的时候,常常不了解这些编程语言具体有什么用途,或者说不知道应该学习哪种语言能实现自己想要从事的IT领域方向,于是,结合自身学习经验以及资料查找,我整理了一些常见的编程语言的介绍,帮助大家认识了解编程语言的特点、用途,从而快速明确学习方向,制定学习计划。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。——(与java的功能相似,但主要开发的软件类型不一样) / (创始者:微软公司)

  • 什么是“脚本语言”

    使用命令写成的 Shell 脚本非常简洁,使得对防火墙的配置工作简单化,管理员只需要按照网络性能要求写好脚本,提交命令就可以使防火墙的各种配置立即生效,实现了瞬间化网络管理;脚本只是命令字符的集合,往往几百条命令组成的 Shell 脚 本才几个 KB 大小,使用远程命令行工具对 Linux防火墙管理配置使得管理人员可以实现安全高效的远程办公,实现了网络管理的远程化;当执行脚本时,计算机会执行一连串的操作。脚本是由script翻译来的,这个词原本的意思是“剧本”,计算机时代到来后人们又将这个词解释为脚本。..

  • Python - 高级动态编程语言 - 入门基础知识(上)

    Python 是一种易于学习、功能强大的高级编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。

  • 常见编程语言介绍

    C语言 C语言诞生于1672年,现代高级语言的 鼻祖,由著名的贝尔实验室发明。 在底层编程,比如嵌入式、病毒开发等应用,可以替代汇编语言来开发系统程序。 在高层应用,也可以开发从操作系统(Linux/Windows都是基于C语言开发)到各种应用软件。 C++语言 作为C语言的扩展,C++是贝尔实验室于80年代推出的。C++是一种混合语言,既可以实现面向对象编程,也可以开发C语言面向过程风格的程序。 C++语言在科学计算、操作系统、网络通讯、系统开发、引擎开发仍......

  • Python动态语言理解

    动态语言的定义动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。

  • 高级编程语言高级在哪里?

    想必大家都知道编程语言经历了三个阶段:         第1阶段:机器语言:由数字0和1组成的一系列字符串。                 但是由于机器语言全都是一串串0和1的数字,这样很难记忆,更不好 掌握。由此随着时间的推移进入了第2阶段。         第2阶段:汇编语言:由特殊字符组成的一系列字符串。                汇编语言比机器语言能好一点,但是还是难记忆,不...

  • 1.2 常见编程语言介绍

    C 语言 C 语言诞生于 1972 年,可以称之为现代高级语言的鼻祖,由著名的贝尔实验室发明。 C 语言是人们追求结构化、模块化、高效率的“语言之花”。在底层编程,比如嵌入式、病毒 开发等应用,可以替代汇编语言来开发系统程序。在高层应用,也可以开发从操作系统 ...

  • 脚本语言是什么

    什么叫脚本转载自网络,地址不详!!! 脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当我们点击网页上的E-mail地址时能自动调用Outlook Expre

  • 各种语言的介绍

    在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在巨大的智利浪费,大家把大量的精力用在编写别人已经实现的程序代码上。看看,文本编辑器有多少,看看ftp程序有多少,看看字处理程序有多少,这些程序虽然有差别,但主要的功能都是一样的。要实现个性化的功能,在已有的软件基础上修改会节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工作量,世界上的程序员至少可以节省8

  • 牛逼操作!我用Python做了一个编程语言20年的动态排行榜!

    在编程语言的舞台上,一直有着谁是最好的语言的竞争,小编虽然一直用着几种编程语言,但是感觉个人的想法不能代表着大家的想法。虽然关于最好语言的争论从未停止过,但是关于编程语言的热度排名,我们...

  • 静态语言和动态语言,静态编程语言和动态编程语言

               1  在看书的时候无意中讲到编程语言分为解释型和编译型。我们知道软件的产生大都进过了这样的过程:(1)源程序----中间代码------机器代码;(2)源程序----机器代码。第一个过程应该是使用编译型程序设计语言,第二个过程应该用解释型程序设计语言。一过程分为编译,装配和链接,运行。二过程应该是解释,执行,两种还可以同步进行。编译型语言是说将源程序代码全部翻译成机器代码后,

  • 脚本语言总览

    脚本语言总览 -- Zoom.Quiet ::03061820年后,我们用什么样的语言?也许现在谁都不好回答,20年前的程序员们会告诉你用汇编吧,今天人们也许会告诉你用c语言(c++?)吧。那么20年后呢,也许不是c语言了吧。下面都是所谓的非主流语言,不过它们的设计思想、所能够完成的功能,绝对不比c语言差。也许将来它们会成为主流,也许不会,可是不管怎样,它们都有自己的闪光之处。 ---

  • 动态编程

        ClassPool pool = ClassPool.getDefault();     CtClass cc = pool.get("类路径");//通过反射获取类     cc. getName() ; //获取类名 包含包名     cc. getSimpleName() ; //获取简要类名 只有类名     cc. getSuperclass() ; //获得父类     cc....

  • 各种编程语言介绍与对比(详细)

    在介绍编程语言之前,先说说开放源代码的必要性。现在,在软件生产领域存在巨大的智利浪费,大家把大量的精力用在编写别人已经实现的 程序代码上。看看,文本编辑器有多少,看看ftp程序有多少,看看字处理程序有多少,这些程序虽然有差别,但主要的功能都是一样的。要实 现个性化的功能,在已有的软件基础上修改会节省多少时间呀!而每个程序各编一套,又浪费多少时间?如果,没有这些重复的工作量,世界 上的程序员至少可以...

Global site tag (gtag.js) - Google Analytics