安全爱好者周刊(第16期):技术的母语
这里记录每周值得分享的网络安全内容。
1. 本周话题:技术的母语
在这里,“技术”具体指代的是计算机技术。
为什么说,技术是有母语的?
大家知道,世界上第一台计算机 ENIAC 于1946年在美国宾夕法尼亚大学诞生。
世界上首个互联网络是1969年在美国国防部高级研究计划署网络(又被称为 ARPANET网)上实现的。
通常被国内高校计算机科学与技术专业设置为入门编程语言的C语言,是1971年 Ken Thompson 和 Dennis Ritchie 共同发明的。时至今日,不计其数的信息设备上运行着使用C语言开发的程序,这也难怪会有人说,今天的世界是运行在C语言上的世界。
类似的例子数不胜数。
在这样的发明创造背景下,这些突破性技术最早的技术文档是用英文写就的。相应的标准委员会在用英文进行交流,当然,他们产出的标准也是用英文写就的。这些是信息世界的底层规则。
带来的结果是,中文世界里我们常常使用的术语,讨论的技术方法,实际上都是翻译品。这些技术的母语是英文。
我们说指针,翻译的是“pointer”;我们说“原型”,翻译的是“prototype”;我们说对象,翻译的是“object”;我们说协程,翻译的是“coroutine”;我们说设计模式,翻译的是“design pattern”...
译者们翻译,我们学习,我们试图理解,我们实践应用。在没有意识到的时候,译者对于技术的理解程度,决定了我们的理解上限。
以编程语言 JavaScript 来说,原型继承和函数的prototype属性是让很多初学者感到困惑的地方。
笔者曾阅读了很多中文文档,仍感觉意犹未尽。直到在《JavaScript: The Definitive Guide》里读到了
Remember: almost all objects have a prototype, but only a relatively small number of objects have a prototype property.
才感觉到了心里的石头落下了。
原版文档是技术的起点,也是问题的终点。
这会让我们沮丧,为什么我们要跨过语言的障碍才能准确地理解和表达这些问题?
我们都期盼着,未来会有以中文为母语的新技术出现。但是在那一天来临之前,我们还是要尽量读原版文档,尽量读原版书籍。开始的越早,受益就越早。
2. 文章
解决中国“卡脖子”问题:研究求解器的少数者
这篇文章写的是国内站在SAT/SMT求解器技术之巅的几位研究者的故事。
读完这篇文章笔者的感受是,能写出这样的评论文章,作者一定也是位大佬吧。
3. 资源
Reverse Engineering For Everyone
一个梳理逆向工程知识的站点,目前根据处理器架构,已经发布了不少内容。
Compiler Explorer
一个在线的编译结果查看网站。你可以在这里选择编译器,输入源代码,然后就可以看到编译器产生的汇编代码/字节码了。
网站目前已经覆盖了主流的30余种编程语言,包括C, C++, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java等。网站的一个显著优势是集成了同型号不同版本编译器。使用者可以很方便地比对不同版本的编译器所生成代码的不同。
How to write a JIT compiler
如何写一个简单的JIT编译器的入门教程。
Bjarne Stroustrups FAQ
C++ 之父的FAQ,不妨看一看他对一些问题的看法。
文章同步发布于知乎专栏“安全爱好者周刊”,感谢阅读。 https://www.zhihu.com/people/secweekly
文章同步发布于订阅号“安全思享”,感谢阅读。