写软件难在哪儿?(一)

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

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

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

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

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

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

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

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

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

推荐阅读更多精彩内容