整理 | 王启隆
透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。
今天是 2023 年 3 月 13 日,在 1995 年的今天,Perl 5.001 发布;Perl 是一种功能丰富的计算机程序语言,最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web 开发,网络编程,GUI 开发等。这次更新也有着里程碑意义,因为在 5.001 版本之前, 除非格式在词法变量的范围内声明,否则词法变量在格式中不可见。回顾计算机历史上的 3 月 13 日,这一天还发生过哪些关键事件呢?
1942 年 3 月 13 日,NT 项目的组建人、微软传奇程序员大卫·卡特勒(David N. Cutler)出生;他开发了几种计算机操作系统,包括 Microsoft 的 Windows NT、Digital Equipment Corporation 的 RSX-11M、VAXELN 还有 VMS。比尔·盖茨对卡特勒敬畏三分。卡特勒严厉冷酷,视懒散、困惑、没有竞争力为敌人,不但是一位传奇程序员,更是一位伟大的项目管理者。
Windows NT 历时之长、耗资之巨、人员之多,可以说是对软件工程一个史无前例的诠释。Windows NT 以及以后的 Windows 版本几乎统一了个人计算机平台,为计算机和计算机软件发展作出了无法估量的贡献。

卡特勒出生在密歇根州的兰辛,在密歇根州的德威特长大。1965 年从密歇根奥利维特学院毕业后,他前往杜邦公司工作。他的工作需要电脑建模,到 IBM 开办的一所学校学习怎样给 IBM 的电脑编程序。于是卡特勒终于找到了自己的兴趣,他跳槽到 DEC 公司,为 DEC 生产的计算机编写软件。在 DEC 组建一个全新的计算机系列 Prism 之后,卡特勒的项目被 DEC 公司取消,默默离开了公司,而这个夭折的项目也成为了后来 NT 的雏形。
卡特勒一生蔑视 Unix,他看不起 Unix 背后的技术委员会,而这一点和比尔·盖茨可谓是一拍即合。1988 年,盖茨见缝插针,竭力劝说卡特勒加入微软。卡特勒不仅欣然同意,还带走了许多与他一同开发 VMS 和 Mica 的程序员。进入微软之后,卡特勒直接授权领导一个工程小组,负责设计一种能提供文件服务、打印服务和应用服务的对称多处理操作系统,起名为 Windows New Technology(NT)。如今大部分用过的 Windows 操作系统,其内核便源自 Windows NT。
经过近 4 年的开发工作,在 1993 年 6 月发布的第一版 Windows NT 3.1,已经具备了现代操作系统的雏形——抢先式多任务、虚拟内存、对称多处理器、图形界面、C2 安全级、坚固而稳定的内核、内置网络支持、完全的 32 位代码等。而 1994 年推出的 Windows NT 3.51 和 1996 年推出的 Windows NT 4.0,在性能上有了更进一步提高;NT4.0 甚至提供了当时最先进的 Windows 95 风格界面。卡特勒一生拥有至少 20 项专利,并且是华盛顿大学计算机科学系的附属教员;除了 Windows NT,他还参与了 Xbox One 游戏机的软件优化团队,始终奋战在微软的开发第一线。
资料来源:维基百科、百度百科

1986 年 3 月 13 日,微软成立近十一年后,开始在纳斯达克证券交易所交易股票。最初的股价定为每股 28 美元,一天之内筹集了近 6100 万美元。如果一个人在 1986 年 3 月 13 日以 21 美元的价格购买了股票,那么截至 2012 年,他的投资价值能达到约 4000 美元。微软这家科技巨头,在 1980 年代中期以 MS-DOS 统治个人计算机操作系统市场,随后在大卫·卡特勒的加盟后成就了 Microsoft Windows;随着这次上市,微软员工中直接诞生了 3 位亿万富翁和大约 12000 名百万富翁。
自 1990 年代以来,微软从局限于操作系统市场变得日益多元化,取得了许多企业收购,其中最大的一笔交易是 2016 年 12 月以 262 亿美元收购 LinkedIn ,其次是 2011 年 5 月以 85 亿美元收购 Skype Technologies。但是,随着这次上市之后,微软迎来了和 IBM 的合作,美国联邦贸易委员会因此审查了微软可能存在的勾结,导致着微软在接下来十多年里陷入了无休止的反垄断战争之中。
资料来源:维基百科、百度百科
2004 年 3 月 13 日,美国国防部高级研究计划局(DARPA)组织了首届无人车挑战赛 DARPA Grand Challenge,挑战目标是:让车辆自动驾驶穿越 142 英里的沙漠。参赛队伍包括领域内顶尖高校、工程师、程序员等,可没有一个队伍完成比赛;卡内基梅隆大学的红队用一辆改装的悍马 Sandstorm 行驶了最远的距离,完成了 11.78 公里(7.32 英里)的路线,然后在转弯后被挂在岩石上。虽然未能成功颁奖,但这次赛事大大促进了自动驾驶的快速发展,可谓自动驾驶行业的里程碑事件。

第二次 DARPA Grand Challenge 计划在 2005 年举行。在 2005 年秋天的第二届挑战赛上,就有 5 辆汽车完成了比赛,其中斯坦福大学的 Stanley 获得了第一名。在这次比赛中,车辆需要通过三条狭窄的隧道,并且完成 100 多个左右急转弯;比赛的终点是啤酒瓶山口,这是美国山区的一道蜿蜒山口,一边是陡峭的悬崖,另一边则是一个岩壁。斯坦福大学 Stanley 项目的负责人塞巴斯蒂安·特龙后来创立了谷歌无人驾驶团队和 Google X,特龙还是 Kitty Hawk 公司 CEO、Udacity 联合创始人。
从日本、德国、意大利、欧盟、美国等国家的陆续研究开始,全自动驾驶汽车已经成为国际社会多年来的追求。DARPA 从 1966 年开始资助斯坦福研究所的 Shakey 机器人项目,开发出了第一个完全自主的机器人。作为 1984 年开始的战略计算计划的一部分,DARPA 还开发了第一辆能够在道路上和非道路上行驶的自主地面车辆,也促成了 DARPA Grand Challenge 赛事的诞生。从第三届比赛,也就是 2007 年的城市挑战赛开始,第一名、第二名和第三名已经能分别获得 200 万美元、100 万美元和 50 万美元奖金;比赛向世界各地的团队和组织开放,其影响力也越来越大,最终载入了自动驾驶领域的史册。
以史为镜,可以知兴替。计算机科学发展至今,有许多至关重要的事件、人物。在《新程序员:我们的技术时代,我们的程序人生》中,来自四十余位技术人跨越半个世纪,用代码敲出一个个真实的程序人生故事!
扫描或点击《新程序员:我们的技术时代,我们的程序人生》订阅!

我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到
我有一个集合选择:此方法的单选按钮是什么?谢谢 最佳答案 Rails3中没有这样的助手。在Rails4中,它是collection_radio_buttons. 关于ruby-on-rails-rails上的ruby:radiobuttonsforcollectionselect,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18525986/
我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/
我正在尝试将cucumber项目的用户名和密码置于版本控制之外。有没有办法在命令行上手动将用户名和密码等变量传递给Cucumber脚本?我的备份计划是将它们放在一个YML文件中,然后将该文件添加到gitignore,这样它们就不会被置于版本控制中。 最佳答案 所以,我看到了您对铁皮人的评论,答案是肯定的。cucumberPASSWORD=my_passwordPASSWORD被设置为环境变量,您可以通过将其引用为ENV['PASSWORD']来使用它的值。例如,browser.text_field(:id=>'pwd').setEN
我刚刚迈出了编程的第一步。我刚刚完成了CodeAcademy的另一门类(class)。这次我被要求创建一个小电影目录。这是我的问题:如何在文件中保存/加载带有电影标题和评级的哈希值而不是自己的代码?下面是代码现在的样子(几句葡萄牙语,但您可以忽略它:movies={Memento:3,Primer:4,Ishtar:1}puts"Oquevocêgostariadefazer?"puts"--Digite'add'paraadicionarumfilme."puts"--Digite'update'paraatualizarumfilme."puts"--Digite'display'