专栏首页飞雪无情的博客不考虑用户体验的编程语言都是耍流氓

不考虑用户体验的编程语言都是耍流氓

其实这篇文章应该还可以有个副标题—为什么选择Go语言。很多时候,我们在做一个需求的时候,很多编程语言都可以,但是为什么选择这个,而不是那个,甚至说为什么选择Go语言,而不是其他编程语言?今天我抛开特定业务只能选择某种特定的编程语言除外,对比下有多种语言选择的情况下,Go语言为什么具备更多的优势(不一定是TOP1),进而展开聊聊编程语言的用户体验。

评判标准

首先,我们评判的标准是什么?我认为和编程语言本身无关,评判的标准应该是在能做这个业务的前提下,是否高效、少出问题、入门容易等等,其实一句话就可以总结,对于企业是否更省成本。在任何时候,成本都是发展的核心驱动力。

这也是我说的和语言无关的意思,就像汇编,它的能力更强,但是学习成本大,书写成本大,一个公司没法直接招个实习生就可以用汇编开发项目的,即使能,开发同样一个功能,汇编的开发效率也是低下。

这让我想起来编程语言界的鄙视链,写汇编的看不起写C/C++的,写C/C++的看不起写Java的,写系统底层的看不起上层业务开发的,写后端的看不起前端的。其实这是一种很奇怪的氛围,都是为了革命,只是分工不同,有些业务的确只能用这门语言更合适,比如Linux内核,现在也只能用C写,不能用Java,但是这并不意味着Java开发人员所创造的价值比C的少。

垃圾回收

定义了前提就可以先聊聊编程语言中垃圾回收这个功能了。对于一些开发高手来说,会觉得垃圾回收这种东西有点鸡肋,因为不能像他自己用手动的内存管理更高效。其实这的确也是OK的,因为对于一些开发大牛来说,自己手动分配和释放内存,写出来的代码的确更高效。

但是有一个核心的前提,IT界有多少这样的大牛呢?能不能满足业界公司的需求?这样的大牛工资要求也高,公司能否承受的起这个成本?而且对于同样的业务,在不懂技术的CEO们眼里,技术就是个工具,实习生能做出来就可以,为什么要用一个会自己内存管理的大牛呢?

很现实的问题,公司要追求效益,效率,公司孜孜不倦的追求就是降低成本,提高收益,你看富士康这种生产苹果手机的高科技公司,它们也只需要高中毕业的流水线工人就可以了,为什么?因为成本,他们建立了成熟的流水线,把复杂的工艺分解,这样一个高中学历的工人就可以参与。

所以垃圾回收是一个伟大的创举,它让编程不再是专业人员的事情,降低了入门门槛,让更多的人可以参与到编程这个职业中来,从而大大降低了企业的用人成本,提高了社会的发展。不具备垃圾回收的语言不能称之为现代编程语言。

简洁

简洁,是Go语言的另一大优势。我们经常用编程语言,相对于不会编程的朋友来说,他们可能觉得你很厉害,很高深。但是如果我们跳出这个思维怪圈,会发现一门编程语言也是一个产品,甚至是一个APP,比如抖音,而编程语言「这款APP」面向的用户是开发人员,就像抖音面向的用户是社会大众一样。

那么这时候,用户体验这个词就可以用到编程语言上了,用户体验好的,不让用户思考的,上手简单的,就是更好的编程语言,而不是这个语言本身多NB(其实这也是鄙视链产生的原因)。

一个简洁的,高效的,不让开发人员思考太多的语言,才是一门好的编程语言,不然啥事都交给开发人员来做,那我还要你这个编程语言干啥,你这个编程语言不就是个传声筒吗?

所以Go语言简洁的优势,让你一天就可以入门学会,而不像C++为了做兼容,搞了那么多特性,花了80%的时间,只做了20%的有价值的工作,也就是说这些花80%成本搞出来的众多特性在现实开发中连20%都用不上。

这并不是说C++的这些小众特性没有价值,其实这就和做APP产品一样,有些APP的用户说我要这个,要那个,其实都是他自己特殊的需求而已,并不是大众的需求。如果你公司花时间做了这些需求,会发现其实在为极个别人服务而已,产出和收益完全不成正比,还把自己的产品带坑里了。

辅助功能

好用辅助功能。这些是什么的?就是Go语言里的自动格式化代码,自动检查没有使用到的变量,简短声明(类型推导),省略的分号等等。

这些是属于编程语言的辅助功能,虽然占比不大,但是其作用是非常大的,因为它可以让我们更专注于我们自己业务的开发,而不是花时间在这些琐事上。

就拿自动格式化代码来说,在团队协作中非常有效,大家写出来的代码格式都是一致的,可读性强,而且在git merge的时候也不会因为格式不一致导致那么多冲突。

还有就像没有用到的变量,省略的分号,这些编译器就可以检查的,有些语言偏偏没有,浪费内存和工作量。啥叫用户体验,Go语言这就叫用户体验。

注意,这里我用了一个关键词辅助,一定是辅助工具,不能反客为主。就像Java,现在Java开发还能算Java开发吗?叫Spring开发我觉得更恰当。你学了Java你发现你还是做不出来项目,因为你不会Spring全家桶,不会围绕Java的生态框架和平台工具,所以只学会Java没用。

小结

其他GO语言很多的优点就不提了,比如简洁的协程,高效的并发等等。我们说社会进步了?怎样才算是进步了呢?其实就是成本降低了。一部社会的进步史,就是孜孜不倦追求成本降低的过程,比如实验室的技术走出来,可以被大众所用。

那么编程语言也一样,如果这门编程语言只有高学历、研究人员、专家学者才能用或者才能用的好,这是一种退步。

不考虑程序员用户体验的语言都是耍流氓,把能力都开放给程序员的语言都是不负责任的(比如内存管理)。

PS:不要抬杠特定领域的专用语言

本文为原创文章,转载注明出处。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SDCC讲师专访】58同城孙玄:一切抛开业务的架构设计都是耍流氓

    孙玄@奈学教育
  • 我是如何为技术博客设计一个推荐系统(上):统计与评分加权

    过去的两周里,我一直忙于为 『玩点什么』 设计一个推荐系统。在这个过程中,参考几本书籍,查找了一系列的资料。想着这些资料上,大部分都是大同小异的,实现了几个简单...

    Phodal
  • 数学里也能耍流氓

    数学一向以严谨的思维著称,每一步推理都需要严格的理由。但在数学历史中,漏洞百出的数学推理也频频出现。有趣的是,即使是这些不严格的思路也充满着智慧,在数学中的地位...

    前朝楚水
  • 一直再说高并发,多少QPS才算高并发?

    首先是无状态前端机器不足以承载请求流量,需要进行水平扩展,一般QPS是千级。 然后是关系型数据库无法承载读取或写入峰值,需要数据库横向扩展或引入nosql,一般...

    春哥大魔王
  • 记武汉2016年第一期学习力提升工作坊——MVP设计篇

    我在加入 ThoughtWorks 的第一年间完成了8门 Coursera 课程的学习并获得了认证。但是,如果让我来讲授这11门课的任何一门,我能讲授的课程数量...

    顾宇
  • 纯算法AI企业最好的出路是被收购,数字化水平低的企业只有转型和淘汰两条路 | 大咖周语录

    数据猿导读 对于大数据的概念以及大数据在各行业的应用,每个人心中都有不同的看法。小编每周都会整理大数据牛人们的精彩观点,让你在最短的时间获得最精的思想荟萃。后续...

    数据猿
  • 【LeetCode】数组--合并区间(56)

    老粉丝可能知道现阶段的LeetCode刷题将按照某一个特定的专题进行,之前的【贪心算法】已经结束,虽然只有三个题却包含了简单,中等,困难这三个维度,今天介绍的是...

    PM小王
  • 微前端从Golang开始 |

    吴文周
  • 秒杀架构优化,产品折衷

    当然有,当一个业务技术难度非常大的时候,可以通过业务和产品的优化,来简化系统架构。

    架构师之路

扫码关注云+社区

领取腾讯云代金券