美文网首页
写软件难在哪儿?(一)

写软件难在哪儿?(一)

作者: 约翰伍德 | 来源:发表于2018-12-08 07:53 被阅读0次

大学期间学校经常会举行各种创业比赛,在组队的时候往往会听到:“我们有想法有创意潜力巨大,就差一个程序员了!”而这个时候学计算机的同学们常常十分无语:“你知道要做出这个东西来得花多少时间么?你也太低估写一个软件的难度了吧!”

要想跟非专业人员解释清楚写软件难在哪儿,不容易。但我想试试看,看看能不能在这篇文章里思考明白这个问题。

首先,我们大部分时候看到的软件其实只是一个用户界面。不管是手机app,网页,还是电脑软件,我们看到的都是用户界面。在这个用户界面底下,有一个非常复杂的程序在运行。可能你只是在手机app上用手指滑了一下,这背后的程序可能会收到上百条信息,在每隔一段时间(可能是几毫秒甚至是几微秒)记录下你的手指当时所在的坐标位置。然后这个程序会通过复杂的计算知道你是往哪个方向滑。很有可能你滑的是一条弧线,那到底应该判断往右滑还是往上滑,背后的程序都会去做计算。

以上只是一个非常简单的例子,你可能会想说那手势操作就这么多,这软件也不算特别难写吧。那接下来我就以微信朋友圈为例子,来解释一下它背后涉及到的复杂逻辑。

首先你点开朋友圈,你会发现一些以前看过的内容立刻就展现出来了,甚至不需要联网也能看到它们。这是因为这些内容已经被存到你的手机里面了,这就涉及到了数据存储。朋友圈需要存下来的信息有,谁,头像是什么,在什么时候,在哪里,发了什么文字,什么图片,或者什么视频。这每一个逗号隔开的都是不同的数据,存储的时候必须得用某种方式隔开,因为之后读取的时候得能把它们分开。还有需要想办法让这种方式可扩展,因为我刚发现原来还有一种数据是分享的内容和来源。以后很有可能还得再加其它类型的数据,所以这个数据存储的方式必须得能增加或减少数据类型。研究数据存储的计算机科学分支叫数据库。

在读取本机数据之后,微信准备要把这些数据展示出来给你看了。针对于每一条朋友圈,它都得告诉手机系统,这个头像得画多大,放在哪里,还得能点开连到个人主页;这个名字得写多大,用什么颜色,放在哪里,也得能点开连到个人主页;这个时间......我省略了非常大一部分的内容,但你可以看到这每一条都是这个程序要和手机系统交代好的事情,要是出现一点差错你看到的朋友圈就彻底乱了。

在点开朋友圈的同时,你会发现屏幕上方有一个进度条在转,这意味着它在从网上去读取最新的内容。从哪里读?从腾讯服务器去读。腾讯服务器怎么知道要返回哪些内容?微信会告诉腾讯服务器,我是谁,我的密码是什么(当然不会是你的密码明文),我需要几几年几月几号几点几分几秒之后到当前的所有朋友圈内容。腾讯服务器收到这个消息,先判断一下你的账户是不是有效,密码对不对,然后就会去服务器端的数据库拿你要的数据。首先要知道腾讯有非常大量的数据,几十上百台机器都存不下。你可能听过2tb的硬盘,这个容量在日常生活中已经非常大了。但你听过pb么?pb是1024tb,也就是说你得买512个2t硬盘才是一个pb。而腾讯的数据量肯定远远超过pb级别,大到你根本无法想象。那腾讯的服务器怎么从这么多的数据里面找到你想要的呢?用来管理和维护这些数据库的程序非常复杂,但这涉及到非常专业的数据库知识,这里也就不多做介绍了。

本来希望能在一篇文章当中解释清楚为什么写软件难,可没想到写着写着就写多了。其实在做介绍的时候,我们还跳过了非常多的内容,包括手机端对网络链接的处理(发出请求多长时间收不到回复算没有联网?检测到没有联网应该怎么处理?),服务器端对数据的去重(我发了一条朋友圈,但腾讯并不会把它复制到每一个朋友的数据库里面,那样太浪费硬盘容量了),还有服务器端对连接数的均衡(一台服务器的处理能力是有限的,全世界这么多微信用户不可能全连到同一台服务器上,那谁应该判断哪个用户连哪个服务器呢)等等等等。这些背后的逻辑都很复杂,所以写一个朋友圈这样的软件就已经非常不容易了,更遑论微信支付宝这样包括各种功能的app。

相关文章

  • 写软件难在哪儿?(一)

    大学期间学校经常会举行各种创业比赛,在组队的时候往往会听到:“我们有想法有创意潜力巨大,就差一个程序员了!”而这个...

  • 写软件难在哪儿?(二)

    上一篇以微信朋友圈为例解释了一下要写好一个软件是非常复杂的。这篇再接着从编程语言的角度去讨论这个问题。 软件是由编...

  • 学习写作的8天……

    万事开头难。 学习写作也是一样,难,难在哪儿?难在不知道写什么,难在不知道怎么写,难在了没思路,没主题,没题材……...

  • 日更是反人性的

    全文共1985字,阅读时间5分钟 1 日更是什么?就是每天写一篇文章。 难在哪儿?难在持续。 一鼓作气后,再而衰,...

  • 汉语难不难?难在哪儿?

    文/ 十一月底,慢速中文的志愿者Robert和我讨论了一个问题,他问:“你认为对外国的学习者来说汉语最难的地方是什...

  • 成功难在哪儿?

    每个人的成功都不是偶然。 首先得有一份计划。 我们在定制计划的时候总是信心满满的,因为这些计划都是现实可行的,并且...

  • 坚持难在哪儿?

    突然发现又一周没有写字了✍ 每天100字这个目标其实没那么难,可为什么老是不能持续坚持呢? 想了很久,发现我可以每...

  • 聊聊读书: Ⅱ 如何选书

    万事开头难,难在哪儿?难在如何开始,难在如何选择一个开始。 读书如此,其它的事情也概莫如是。 ...

  • 作文教学难,难在哪儿?

    小学作文难教,首先难在训练的系统上。 在一次小学语文老师的培训会上,一个教了二十多年语文的老师问我“从...

  • 关于选择难,到底难在哪儿?

    今天,我整理出来了自己近期必须坚持做下去的两件事情: 第一,完成拉力赛,保持每天的日更;第二,持续学习有关中文教学...

网友评论

      本文标题:写软件难在哪儿?(一)

      本文链接:https://www.haomeiwen.com/subject/oiivqqtx.html