25

前言

一年一度的春节又到了,作为程序员的你是怎么告诉亲朋好友自己日常到底是做什么工作的呢?

程序员是一个新兴的职业,我在上大学以前不了解程序员到底是做什么的,对编程语言也一窍不通,也不关心玩过的「游戏」和天天逛的「网站」究竟是怎么来的。

当年加了计算机科学与技术专业的新生群,听着师兄和师姐们在聊天,其中就聊到了「程序员」这份职业。当时脑海里第一反应想象的竟是「复印机、打印机等办公」乱七八糟的东西

复印机、打印机

外行人看程序员

有的「初高中」同学知道我读了计算机专业,于是过来问我:计算机专业应该会组装电脑的吧,我想组装一台新电脑,能不能帮帮忙给点意见,比如电脑配置清单什么的。

电脑配置清单

在我大学期间我爸希望我多考一些证书,比如有关「电气和会计」之类证书。他认为:只要证书多,那找工作肯定不成问题,工资也会比没有证书的人要高。

N多证书

临毕业了,跟同学出去吃宵夜,我当时正忙着找工作,同学也多问了一句:“你在找什么工作啊”。于是我说:”就IT呗,程序员了解不“。他说:”不懂啊,你会不会盗QQ、做游戏外挂那些东西的啊?“。

盗QQ

前几天跟亲戚去吃饭,得知我年后要离开广州去杭州做软件相关的工作,几杯酒过后,深长意味告诉我:“还是做「行政」相关的工作有前途,走那么远做软件有啥用啊,我来给你介绍去xxx工作”。

啥才是好工作!

我这里想表达的是:老一辈的人大多不太了解互联网行业,认为行政、银行、老师、医生这些行业才是“正道”。我对这些行业都持有敬畏之心,并没有讽刺的意思。

程序员喜欢自嘲

外行人对程序员的误解,也有可能只是看到网上有很多关于程序员的言论,真以为「大多数」程序员都那样。

比如说程序员都爱穿格子衫:

程序员最爱格子衫

程序员没有女朋友:

程序员女朋友

程序员人傻话少死得快:

人傻话少死得快

其实很多的言论都是程序员们在闲暇之余的时候「自嘲」罢了。大多数程序员跟其他行业的人都一样,并没有像网上说得那么玄乎。

程序员在网上一般称自己为「码农」(编码的农民)

程序员加班

暂且不管关于程序员其他的言论,但对于互联网行业来说,加班的确是「普遍」存在的现象,就在前阵子,「有赞」在年会上公开宣布996工作制。

「有赞」在年会上公开宣布996工作制

有人可能不知道996是什么意思,这里我解释一下:从早上9点工作至晚上9点,一周上六天班。简称996

我在秋招跑了几个广州游戏公司的宣讲会,大多在宣讲会上明确公司需要「加班」。

经验都是加班出来的

「苏宁」之前也闹出一事

「华为」的狼性文化也是家喻户晓的

狼性文化

啥是编程语言

基本大家能想到程序员能做的事,而程序员们几乎都不会

程序员要你有何用

每个程序员都会有一门自己拿手的编程语言,有的时候一门编程语言可以对应不同的「岗位」。(比如说,Java程序员、PHP程序员)

一大堆编程语言

程序员每天都是跟「计算机」打交道,让计算机干什么,计算机就会去干什么,很是听话

让计算机干什么,计算机就会去干什么

那计算机咋能听懂程序员让它去干啥呀。有点计算机基础的同学可能会知道,计算机只认「二进制

计算机只认二进制

「二进制」:逢二进一。「十进制」:逢十进一

「二进制」:逢二进一

看到这里,大家可能都看不懂了。没事,我们继续往下看

看不懂

程序员也是人,人与人的交流,「常用的语言」有阿拉伯语、汉语、英语、法语、俄语和西班牙语等,而不是啥「二进制」的东西。为了方便,聪明的「程序员」企图让计算机去读懂「自然语言」。(能够让计算机去读懂阿拉伯语、汉语、英语、法语、俄语和西班牙语等这些语言)

聪明的「程序员」企图让计算机去读懂「自然语言」

所以程序员们就搞出了一个「编译器」,编译器说白了就是能将这些「自然语言」翻译成二进制,让计算机读得懂!

将自然语言翻译成二进制

在计算机世界里,对任何事物都不含糊,说一就是一,说二就是二。想要让「自然语言」能够准确地翻译成二进制,就必须定下相应的「规则」。而使用不同的「规则」,就出现了不同的编程语言。因为大多数编程语言都是「外国人」发明的,并且由于英语的「广泛性」和「易用性」。所以,绝大多数的编程语言都由「英文」组成。

(以下就是各种常见的编程语言,由于「规则」不同,所以看起来都不一样。但所做的事都是相同的)


print_r('点个好看、转发吧!');
var_dump('点个好看、转发吧!');
NSLog(@"点个好看、转发吧!");
System.out.println("点个好看、转发吧!");
console.log("点个好看、转发吧!");
print("点个好看、转发吧!");
printf("点个好看、转发吧!");
cout << "点个好看、转发吧!" << endl;
Console.WriteLine("点个好看、转发吧!");
fmt.Println("点个好看、转发吧!");
Response.Write("点个好看、转发吧!");
alert("点个好看、转发吧!")
echo "点个好看、转发吧!"

解释程序员干啥活

别人问到我是做什么的,我往往会说“你平时用过的「微信」,「百度」这些软件啊,网站啊就是我们程序员做的”。

微信等有名软件

(一般到这里就不会继续往下问细节了,但还是遇到过继续问究竟是怎么做的)

接下来,为了继续演示,我们可以掏出手机,打开微信:

掏出手机,打开微信

“我们都是玩微信的人,要进入微信先得有个账户,所以要先注册“

微信注册页面

“注册实际上就是把你的账号和密码「保存」起来”。

账号和密码「保存」起来

“如果你注册成功了,那小本本「数据库」就有你的账号和密码了。等你登录的时候,就去小本本「数据库」查一下你输入的账号和密码是否匹配

登录

“看到这里,有没有觉得「程序员」真是容易当,不就把输入的数据记录下小本本,等用到的时候再查一下而已嘛。其实不然,就好比微信的注册页面,拿IOS系统来说,从IOS 6 到现在的IOS 12已经有6个版本了。Iphone手机屏幕的尺寸也一直在变,从3.5英寸到现在的6.5英寸。微信团队需要对不同的「版本」,不同的「屏幕大小」进行兼容,让iPhone4s还是iPhoneXS Max都能用上微信。(起码在不同的手机上,看到的注册功能都是完整的,而不是东一块西一块不整齐的)”

兼容问题

“还比如说,小本本「数据库」记下的密码不能是你输入的「原始密码」。举个例子:某一天,一个在微信团队的小伙子拿到了存放账号和密码的小本本「数据库」,把小本本「数据库」的内容给公开了。(或者说一个黑客把微信给攻破了,然后公开小本本「数据库」),那岂不是谁都可以上我的微信号了?”

公开小本本的内容

“程序员们当然可以考虑到这点,他们会这样做,将你输入的密码进行「加密」存到小本本「数据库」中。无论是谁,拿到加密后的密码,都不能「反推」你原始输入的密码。”

密码加密

“所以,每次比对的都是加密后的密码”

比对的是加密后的密码

“当然啦,程序员考虑的远远不止这些。不管怎么样,每个程序员都希望自己写的东西「简单易用,受人喜欢」”

其实我是一个软件工程师

最后

文章首发公众号Java3y过年了,给亲朋好友解释「啥是程序员」

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

帅的人都关注了

觉得我的文章写得不错,不妨点一下


Java3y
12.9k 声望9.2k 粉丝