前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不考虑用户体验的编程语言都是耍流氓

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

作者头像
飞雪无情
发布2020-08-17 16:31:23
7120
发布2020-08-17 16:31:23
举报
文章被收录于专栏:飞雪无情的博客

其实这篇文章应该还可以有个副标题—为什么选择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:不要抬杠特定领域的专用语言

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 评判标准
  • 垃圾回收
  • 简洁
  • 辅助功能
  • 小结
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档