软件工程:伟大的程序员不写代码?快看看未来“好的”编程语言应该长什么样

每篇一格言:
to err is human; to forgive, divine(博主译:人非圣贤,孰能无过;闻过则喜,点凡成圣)
——Alexander Pope

前言

2020年3月TIOBE编程语言排行榜:Java继续蝉联榜首,C、Python、C++、C#、Visual Basic .NET、JavaScript、PHP、SQL、Go分列前十。这不禁令人深思,像C和C++这种诞生于40年前的语言,为何仍然这么有生命力?

下面随我一起,思考“好的”编程语言应该是什么样子的。
在定义什么是”好“之前,首先需要考虑的是,为什么会有编程语言,或者说,编程语言是干什么用的?


在这里插入图片描述

1.编程语言,人与机器的沟通工具

计算机的天然语言是二进制组成的指令;
人类用的语言称为自然语言。,计算机无法理解;
于是问题来了:怎样让计算机理解人类的指令并执行任务呢?
直接的思路是把人类用的自然语言翻译成机器语言,但这是十分困难的,主要原因是自然语言不是一种形式语言,翻译自然语言有三个难点:
歧义性:
自然语言充满了歧义,需要通过上下文才能理解确切含义
冗余性:
自然语言存在大量冗余,这些冗余主要是为了消除歧义而存在,但带来的问题就是不够简洁。
言外之意:
自然语言中有很多字面以外的意思,如果不结合具体情境极易造成误解。

在这里插入图片描述

因此,我们需要一种形式语言,也就是编程语言,它是简洁、准确、有效的,人能看懂,同时也容易翻译成机器语言,来解决与机器的沟通问题。

2.编程语言,发挥人与机器的优势

既然编程语言是人与机器的沟通工具,那么它应该是侧重于适应人还是侧重于适应机器呢?换句话说,是让人用起来更方便,还是让机器更方便?在回答该问题之前,我们需要先讨论人与机器的比较优势。

机器相对于人的优势:

运算速度极高,远胜于人;
严谨度极高:
对于人类来说,打错一个字,算错一个数是很常见的;对于机器来说,这是不被允许的。
处理问题的复杂度规模远胜于人:
一次处理一千万行代码,对于人是个巨大的挑战;对于机器来说只是个普通工程。

人相对于机器的优势:

我认为人类的最大优势是思维方式的不同,主要有下面几点:
辩证思维:
机器最擅长的是逻辑思维,true or false,这是机器的底层硬件中的设计如此;
人类还具备辩证思维,也就是“亦真亦假”,“对立统一”,目前机器不具备这种理解能力。
模糊思维:
“直觉告诉我,这是对的”,“大概是往这个方向走”,人类擅长做出模糊判断,但是对于机器来说,这是不可思议的。
创新思维:
创新思维是指以新颖独创的方法解决问题的思维过程,通过这种思维能突破常规思维的界限,以超常规甚至反常规的方法、视角去思考问题。目前在这一点上,机器只能拙劣的模仿,无法超越。

在这里插入图片描述

通过对比,我们可以得出这样的推论:

推论1:编程语言的设计原则是充分发挥人和机器的比较优势。

一个具体的例子是内存管理。由于内存管理很复杂,它应该由编程语言负责,因为机器最擅长处理复杂的结构和逻辑关系。有谁会认为开发者花费大量精力处理内存泄漏是值得的呢?开发者没有必要越俎代庖去管理内存,反过来说,如果管理内存是必须的,那开发者是不是也要直接操作ALU呢?当然不是。应该想想我们编程的目的是什么。
而之所以目前开发者需要掌握内存管理知识,是因为编程语言没有做好。但相比较而言,java比C++做的更好。


在这里插入图片描述

3.编程语言,以人为本还是以机器为本?

软件开发行业存在一条鄙视链,通常是用汇编语言的看不起用C语言的,用C和C++的看不起用java的。这是为什么呢?博主推测可能是因为低级语言要求更多的硬件知识,而这些知识在高级语言中已经不那么重要了。所以鄙视链的核心是知识结构。
但是,从另一个角度看,只有高级语言才更符合编程语言的设计原则。
为什么呢?

3.1谁是主角?

在编程这件事上,人是主体,机器是客体,起决定作用的是人。人是否有足够的时间和条件发挥创造力、有效的工作直接决定着编程的成败。


在这里插入图片描述

据此我们可以得出另一个推论:

推论2:编程语言的另一设计原则是充分便利开发者。

如果一个指令让开发者用一条语句就能实现的话,又有何必让他操作指针,寄存器,甚至机器码呢?对于人来说,指针,寄存器这些是很不友好的。让容易疏忽犯错的人类去操作指针,然后再花费大量的精力去debug野指针和内存踩坏的问题,这样的思路正确吗?

4. 编程语言,畅想未来

在我看来,当前的软件开发行业仍然处于手工业时代。代码基本靠人敲,bug基本靠人改,原始而低效。
不久的将来可能会朝着机械化生产演变,到那时,
优秀的软件开发者会变成“思想的巨人,行动的矮子”
这句话该如何理解呢,那就是开发者注重研究设计思想并提供给机器,而代码组织、编译、debug这些工作交给编程机器来处理了。

在这里插入图片描述

我们以这段假想的对话作结尾:

面试官:知道指针怎么用吗?
开发者:不知道。
面试官:知道hashmap的原理吗?
开发者:不清楚。
面试官(不耐烦):说说你清楚啥?
开发者:我知道该做出什么样的软件产品,并且知道如何让机器理解并制作出这样的软件出来。我的目标是软件设计,就像服装设计,不需要关注怎样纺布织毛衣,而是把精力花在设计出受欢迎的时装上。至于纺布和织毛衣,交给机器就好。

面试官:(沉思)。。。你是未来型人才。你的思想已经超前了10年。我们决定给你offer,10年以后你来上班吧。

发表时间:2020-3-12

本文为博主原创。看完请点赞,我们2030年再见。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,928评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,748评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,282评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,065评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,101评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,855评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,521评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,414评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,931评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,053评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,191评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,873评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,529评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,074评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,188评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,491评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,173评论 2 357