跟卖白菜的大爷说说二叉树-跟自己父辈讲明白计算机编程
一直以来,都有一个小心愿,跟自己的父辈们讲明白计算机编程是咋回事。念书的时候,可以跟他们交流自己的学习心得,学习方法跟方式。最直观的表达,就是可以将自己的作文拿出来跟父母分享。
但是上班工作以后,却不能跟他们沟通自己工作到底是干啥。想跟他们说说自己的工作内容到底是干啥,但是却每次都受限于表达能力跟计算机复杂的边际,不知道从何说起。总不能拿一堆的代码给父辈去展示。每次只能一句话概括飘过:就是你看到的网站,手机里面的app打开里使用到的功能,就是我上班的工作内容。
自己一直都认为跟父辈们讲不清楚自己的工作内容,是自己的问题。并不是他们的问题。因为我个人从来都认为,真正对一件事理解深入到了大神的人,是可以将二叉树跟卖白菜的大爷讲明白的。跟自己父辈们讲不清楚自己的工作内容,是自己的对计算机的不够了解,对自己的工作内容不够精通。就跟自己经常跟同行戏谑的那样:没有任何技术含量的事,就是增删改查的重复劳动。
所以一直想找一个切入点,跟自己的父辈们表达清楚,计算机编程是咋一回事。至少计算机专业的,不是修电脑的。
首先看到的计算机是一个硬件设备的集成。里面包括cpu、内存、硬盘、显示屏、键盘等都属于硬件。一般国内的联想公司为代表,就是组装这些硬件起来成一个完整的计算机。没有太多的核心竞争力。
然后就是平时看到的家用路由器,这是网络通信的硬件设备。能够将不同的计算机之间进行通信,做信息交互。这个是网络硬件设备,其中大型的网络的中继器,路由器是软硬结合的,需要制定通信标准之类。例如手机通信的从2G时代,到如今的5G时代,以国内华为为代表的公司,就有较大的技术竞争力。在网络通信技术方面。
再次,就是能够将这些硬件设备用起来的东西。叫做操作系统。操作系统,就是利用cpu将各种硬件利用起来的软件。接受键盘、鼠标的各种点击操作,同时可以控制屏幕展示,控制音响设备声音播放等~这中间就是操作系统来管理。而cpu就是这些活动的控制大脑,操作系统都得通过cpu来发出各种动作命令~ 所以制造cpu为代表的公司,Intel公司,是pc个人电脑这个行业的执牛耳。放开到其它端,移动设备。手机、汽车等~这也是现在各国在高科技技术竞争最激烈的地方:芯片行业、操作系统。个人电脑系统里面基本是微软、苹果。在服务器基本是linux,而手机上基本被苹果、跟谷歌为代表的安卓平分秋色。
最后才是建立在操作系统上面的的软件编程,才是绝大部分的程序员的工作内容。《人月神话》里面表述的那样:程序员,像诗人一样,几乎工作在纯粹的思考中。程序员凭空地通过实现想象来构建自己的城堡。很少有创造的媒介如此灵活,如此容易完善跟重建,以及如此的容易的实现概念上的构架。个人觉得这段话,是对程序员工作最好的诠释。国内各种互联网公司,基本都是这类公司。阿里、百度、腾讯等~
所以整个计算机系统,就如同是一个层层包裹的洋葱。最底层的是各种硬件、再上面一层是操作系统、再解决不同操作系统中间的调用产生的统一链接库(c标准库)、再到最外层的应用程序。也就是大部分程序员工作的层,以各种不同的语言、软件以分工等~一层套一层,而且上层依赖下层。越是下层,则越有竞争力。最关键的像洋葱的一点,不管是哪一层,只要你扒开了,去细看看,看久了都辣眼睛~
要跨行业跟所有人将一件事表达清楚,感觉最重要的是挖掘事物背后的运行逻辑。然后联系大家都熟悉的事物,用比喻来承载这种背后的本质,才能起到四两拨千斤的效果。