百科问答小站 logo
百科问答小站 font logo



上古时期的程序员都有哪些当今普通程序员无法想象的神级操作? 第1页

  

user avatar   yyss2037 网友的相关建议: 
      

是时候放上我女神的照片了。

阿波罗计划的首席软件工程师玛格丽特·汉密尔顿站在阿波罗项目中导航计算机源代码旁边,正是这些代码把人送上了月球。


我们来看看为什么这些代码是神操作:

1. 火箭和飞船上的代码开发难度完爆其他人说的电脑上的代码(不管是磁心线还是打孔卡片),在计算机还没有发展完善以前,火箭代码是没法debug的喔,总不能每改一段代码就发一颗新火箭吧。打孔卡片虽然逼格高,但是总不会程序出了bug就炸飞几千万美元的设备吧。火箭和飞船的程序员们肯定通过纸笔度过了很多不眠不休的夜晚。

2. 那个时候晶体管计算机还没发展完善,很多东西没有统一,大家做一个计算机出来就自带一套汇编。而阿波罗飞船上包含着许多不同的计算机模块,避障模块是A公司产的,中央处理器是B公司产的……为了给不同的模块编程,少说得学三五套汇编语言。手下的程序员专门负责某个模块,只用学一套,但是玛格丽特自己作为项目的leader,应该得是每一套都基本可以弄懂、会写、还不搞混吧。当然,这一点相比于其他事情已经是小事了。

3. 人类实现的第一个卡尔曼滤波器(线性系统的最优估计观测器)是在阿波罗计划中实现的,作者是斯坦利施密特,不过我猜玛格丽特作为首席工程师也是参与讨论和开发的,代码一定也在这一摞厚厚的纸当中。为什么开发卡尔曼滤波器就比比尔盖茨写Basic解释器更屌呢,根据吴军老师《文明之光》第二册(哎呀妈呀这一段太屌了,每次和别人讲都觉得热血沸腾),斯坦利施密特是和卡尔曼讨论阿波罗的轨迹预测问题时发现卡尔曼滤波器的妙用的。卡尔曼滤波器是一个我觉得很高大上的东西,因为和一般的程序不同,他用到了深刻的数学和数值计算工具。轨迹预测的话,三维位置,三维速度?如果是这样的,那么他们的代码里包含对六阶矩阵的乘法、求逆矩阵(LU分解或者QR分解)。当然也许他们只预测位置,那么三维矩阵求逆就好办了一些,然而我觉得,我们可是在谈几百万美元的大飞船啊怎么可能没有带速度的运动模型,应该还是搞六维的吧。让现在任何一个工程师拿C手写矩阵分解,估计都会让他痛苦好几天的,别说上古时代只有晶体管计算机和汇编语言了。

大家应该能想想出更多艰难的事情了。。。

4. 最神操作的当然是“女神玛格丽特对自己人生的选择” =。=

大家可以自行百度她的照片,真人很漂亮,在1969年就已经引领了黑丝连衣裙的流行女神装扮,中年之后依然知性优雅。明明靠脸就能够生活得很好了,却选择了程序员的职业生涯,而且还领导了人类历史上最伟大的软件工程,这个人生真是。。。我辈只能佩服得五体投地。


所以每次我写好程序到飞行器里忐忑不安地准备测试的时候,我都会想一想我的女神,然后鼓励自己:这没什么难的,你的卡尔曼滤波器是用Eigen写的,安全的很;你的飞行器也就几万块钱,便宜得很……

====================================================

评论区起了奇怪的争论,让我觉得有必要喊轮子哥出来解释一下。

根据

Altair BASIC

Interview with Bill Gates

(两个应该都是比较可信的原始资料),并没有Bill Gates在飞机上撸出Basic解释器这个说法。史料中只是记载,当Gates和Allen完成他们第一版的BASIC解释器之后,Allen飞去位于Albuquerque的MITS公司给他们做展示,那里有一个Altair机器可以用来测试BASIC。在路上Allen想到他们忘了写bootstrap,于是在飞机上写了一个,长度为46字节。而比尔盖茨后来写了个长度为17字节的bootstrap,但是没有说写这个更短的bootstrap是在Allen去展示之前还是之后,我猜是Allen去展示之后,而且是蹲在家里写的……

另外根据比尔盖茨自己的说法“Paul was very good with the PDP-10 Assembler. I, in the meantime, laid out the design and charged off coding the BASIC. Paul later came in and helped out with that. A third person, Monte Davidoff, sat down for lunch with us and said he knew floating point packages. So, we had him write some of the math routines. And then we just kept squeezing it.”我们得知有另外一个人帮助盖茨和艾伦写了一些数学函数,而且盖茨他们用了simulator测试BASIC解释器,而且盖茨把码代码的过程叫做“squeeze”,显然回忆起了开发过程的辛苦。

所以我觉得轮子哥所说“在飞机上写个BASIC解释器不debug就直接用”非常误导人。盖茨和艾伦就是正常在开发流程中做了个正常的解释器,而且根据他们开发的年代,应该是Unstructured BASIC。Unstructured BASIC转PDP-10 Assembler应该只需要拆loop,解释条件判断等等,没有太多现代编译器理论,应该还是好写的。难度主要是工程上的,因为要把解释器塞到4K内存里。

Anyway我就陈述个事实和我自己一点点看法。还是那句话,膜拜女神最重要,其他技术问题都是小事。。。


user avatar   boyuandeng 网友的相关建议: 
      

WPS 第一版貌似是求伯君一个人用纯汇编写出来的。


user avatar   korder 网友的相关建议: 
      为何大学基础物理又称「普通物理」?普通物理中「普通」二字究其有何具体的含义?
user avatar   be5invis 网友的相关建议: 
      为何大学基础物理又称「普通物理」?普通物理中「普通」二字究其有何具体的含义?
user avatar    网友的相关建议: 
      

MacBook Pro (从定位上来说)本来就是干活用的机器。说实话,用来娱乐,很可能还不如买台 iPad 好使——起码 iOS 上的娱乐应用生态还算是不错。

OS X 和 Windows 的软件不相兼容,这恐怕是购买一台 Mac 前最先要了解的事情。如果不先为此做好心理准备就兴冲冲地去买 Mac, 还是 MacBook Pro, 要么是被无良的店员坑了,要么是作为消费者太不谨慎了。

说回「OS X 有什么好」——对我而言:

  • 字体。我选择使用 Mac 的最主要原因,是 OS X 的字体渲染风格更对我胃口——即便我使用的是低分辨率屏的 2012 版 MacBook Pro。虽然 Windows 能使用 MacType 这样的插件来改变字体渲染风格,但在最近版本的 Windows 中,也已在很多场合下失效。
  • 对于设计而言的一点便利功能。包括而不限于「预览」能够以真实尺寸显示 PDF、更全局的 OpenType 特性支持、便利的 PDF 虚拟打印等。
  • 可用性不错的自带软件。
  • 此外,对于程序员而言,OS X 应该算是个不错的 UNIX 环境。

我学习需要使用的主要工具都可以在 OS X 中使用,而不能满足的那部分,用虚拟机也可以挺流畅的解决,而我并没有「杜绝在 Mac 上使用 Windows」的那种精神洁癖,所以用得挺舒服;加上对我而言,娱乐多是可以通过浏览器解决的事情,要玩点游戏,也有 Steam 和虚拟机。因此我不觉得 Mac 在娱乐上有什么特别大的问题。当然,这也只适用于我自己了。

* * * * * *

在 Mac 上装 Windows 没什么不好的,这本来就是苹果允许、并用以吸引新用户的手段,Windows 也是个好使的操作系统。就是续航会短,发热也相对厉害一些。此外,屏幕色彩可能需要加载色彩配置文件来改善。前两年 MacBook Pro 还被评为「最合适使用 Windows 的电脑」。只是,最好装 Windows 8 或 Windows 10——Windows 7 虽然是个好系统,但对 HiDPI 的支持不足会浪费了那块 Retina 屏。

如果还是绕不开「花大价钱买了屌丝机」的心理,那么趁早出了止损还好。亏钱无可避免,但好歹不会用着心塞。不过,现在达到 MacBook Pro 这个标准(硬件、设计、工艺)的 PC 笔记本,也不便宜得去哪里就是了。

谢谢邀请。




  

相关话题

  现代软件开发中,详细设计这一步要如何来做? 
  如何向一个零基础的人,解释学习计算机编程的正确顺序和原因? 
  在业务需求完全一致,技术指标要求不一致时,是否应该为此提供使用不同优化算法的接口? 
  男朋友的大脑是单线程的怎么办? 
  怎么给设备加个usb口读其他设备上数据? 
  大型公司里面如何防止程序员接触到核心代码? 
  全栈工程师为什么会招黑? 
  有没有那么一次,Java让你欣喜若狂? 
  如何向完全不懂编程的小伙伴解释「程序写死」? 
  只会增删改查的计算机专业学生真的不适合做开发吗? 

前一个讨论
如何看待 Max Howell 被 Google 拒绝?
下一个讨论
「吃地沟油的命,操中南海的心」与「忧国忧民」有什么区别?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利