最近我在放假, 不太忙, 读了一些文章。其中, 我感触比较深的就是阮一峰老师的《技术的边界》。
我认为, 当今社会的科学技术发展速度很快, 一不小心就会落后于整个世界, 被整个世界抛弃。比如, 现在感觉上很直接的东西, 其实背后确实有深奥的技术支持, 因其学习难度很大, 技术要求很高, 普通用户根本不了解, 甚至无从下手去学习。这直接导致了, 东西坏了自己不会修, 从而导致生活安全感和幸福感的降低。实际的例子就是电话、手机、电视以及上网。
值得说一说的是上网, 这个看上去很直接的东西, 最近越来越火热。即时通信软件、网络购物、网络团购、打车软件、共享单车和共享汽车, 使用这些app实际上就是上网。上网的最简单的例子, 就是访问一个网页。有人以访问Google为例, 详细描述了从输入第一个字母g开始, 到网页完全呈现在眼前的过程。我这里也讨论一下, 以手机上网为例。(可以开始跳过)
/*
首先, 手机需要处理用户点按屏幕的事件, 这就涉及到了电容触摸屏的原理、液晶显示器的原理, 以及显示器和控制器的通信接口的设计。另外, 使用手机就需要有电, 这就又涉及到了锂电池充放电的原理以及电源管理器的设计。更底层的, 硬件方面还有CPU、GPU、内存以及存储器。CPU、GPU如何设计, 设计出的版图如何制造出物理芯片(流片), 处理器的时钟信号由谁提供, 怎么产生, 这都是技术。内存的物理原理是什么, 怎么让它变得更快、更可靠, DDR是什么, 这些又是一堆问题。存储器目前常用的是flash, 它的原理又是什么, 为什么flash有所谓的磨损或擦写次数限制, 如何设计出更好、更快、更稳定的flash, 也值得研究。此外, Wi-Fi、4G通信的无线电电路如何设计, 如何减少干扰, 如何编码信息使得信息能够通过电磁波稳定的传输, 降低误码率, 这是信号与系统的问题。这些电路模块、芯片设计好之后如何组合在一起, 如果用印刷电路板, 那么印刷电路板又是什么, 它又是如何设计并生产出来的, 生产它需要多大的环境代价, 芯片的封装又是什么, 应该如何选择, 为什么现在逐渐流行使用贴片, 为什么直插也没有完全被淘汰掉, 这些都是相应的技术和工艺。软件方面, 操作系统到底是如何运行在CPU上的, 它的驱动程序如何与硬件通信, 如何响应硬件的事件, 如何调度每一个运行的app, 内存不够了该怎么办, 如何均衡每一个flash块的使用来延长flash整体寿命, 如何保存用户的文件并且能很快的找到, 如何优化用户界面使得响应速度快、操作方便, 又是另外一个领域的技术。写好的操作系统如何变为可以运行在CPU上的代码, 程序是否有漏洞, 如何证明程序是正确的, 如何证明电路是正确的, 这都是一项项的技术。炫酷的动画如何变成能够显示在屏幕上的数据, 如何产生看起来像立体的图像, 这又是不同领域干的事情。
然后, 还需要处理网络链接。上面提到了Wi-Fi、4G, 这都是”物理层”的东西。那么, app如何设计一个合适的数据包, app产生的一个数据包, 怎么就发到网络上去了呢, DNS是什么, 它是如何层层递归查询的, 如何解决DNS查询慢的问题, 为什么DNS会被污染, IP地址、MAC地址又是什么, 它们如何设计与分配, 如何使用它们进行通信, 这些分配出来的地址真的够用吗, 如何从IP地址获知MAC地址, ARP(协议)又是干什么的, 为什么会有ARP伪造的问题, 这会给正常上网造成何种影响, 交换机如何传递数据包, 数据包如何通过层层路由最终到达app的服务器, 路由器上的算法怎么设计才能让所有的数据包尽快到达, AS又是什么, AS号(ASN)又该如何分配, AS之间如何通信, BGP(协议)是如何工作的, 为什么有的确认存在的网站就是访问不了, 防火墙又是什么, 这都和网络技术有关。请求发出去了, 交换机如何做到”线速转发”, 100G核心路由器如何设计制造, 服务器上的操作系统和守护程序如何应对相当大的并发, 如何存储用户的数据, 如果用数据库, 如何优化数据库查询使得请求能够更快完成, 如何确保数据库操作的原子性, 如何尽可能保障数据不丢失, RAID又是什么, 这在设计系统的时候都需要考虑。
*/
其实手机是一个比较复杂的设备, 而手机上网是一个比较复杂的过程, 但是我觉得计算机、电视机和电话的技术含量不比它少多少。举这个例子只是为了说明感觉上很直接的东西, 其实背后确实有很多很多深奥的技术这一个观点。要掌握日常生活中用到的东西的所有技术是具有挑战性的, 但是掌握的技术越多, 自然是更好的事情。没有技术的人的心里实际上是会发慌的, 他们根本不知道意外什么时候会到来, 设备会什么时候停止工作。真出现问题的时候他们是不会解决问题的。所以, 还是需要尽可能的提高自己的知识水平。
我学习的是计算机科学与技术专业, 我发现本专业的核心技能应该是自学能力, 并且我觉得这种核心技能也可以推广到每一个生活在当今社会的现代人。现在科技发展很快, 有的东西别人要么由于利益原因不愿意教, 要么由于事情多, 没空教, 所以一定需要自己搜集资料来学习。幸运的是, 现在想要自学点什么东西很方便, 搜索引擎(Google)或百科全书(Wikipedia), 都是很好的入口。值得注意的是, 关于搜索引擎, 就不要去用”百度”了。
写得好!