草庐IT

【历史上的今天】3 月 25 日:Ada 语言之父诞生;第一个维基站点问世;TechTV 被收购

历史上的今天 2023-06-15 原文

整理 | 王启隆

透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。

今天是 2023 年 3 月 25 日,在 1998 年的今天,为迎接 2000 年这一世界性节日的到来,人民日报发起,人民日报国际部、八达岭长城特区和春兰集团共同设立的 2000 年倒计时钟在北京八达岭长城下正式启动。

世纪钟选择了世界上先进的卫星自动校时钟,其误差为每 3 万年不超过一秒。为迎接新世纪,世界上有许多国家在本土设立了倒计时钟,如英国在格林尼治天文台,法国在埃菲尔铁塔,并且这些倒计时钟已成为著名景点。回顾科技历史上的 3 月 25 日,这一天的计算机界都发生过哪些关键事件呢?

1940 年 3 月 25 日:Ada 语言之父 Jean Ichbiah 出生

图源:维基百科

让·伊克比亚(Jean David Ichbiah)出生于 1940 年 3 月 25 日,他是法国计算机科学家和 Ada 语言的最初首席设计师,是移居法国的塞萨洛尼基希腊和土耳其犹太人;伊克比亚也是 IFIP WG 2.4 系统实现语言的创始成员之一,从 1972 年到 1974 年,他致力于设计一种名为 LIS 的实验性系统实现语言,这种语言基于 Pascal 和 Simula 设计。

自 19 世纪 70 年代中期以来,美国国防部一直在探索一种规模较大的全新计算机语言的基本原理,以在今后几年中取代 FORTRAN 和 COBOL 语言;在这一时代背景下,伊克比亚加入了位于法国 Louveciennes 的 CII Honeywell Bull(CII-HB),成为编程研究部门的成员。他的团队举办了一项竞赛,以选择美国国防部的嵌入式编程语言;随后,伊克比亚所设计的“Green”语言在 1978 年被选中,他也得以继续担任该语言的首席设计师,该语言也改名为“ Ada ”。Ada 语言以第一位计算机程序员 Ada Lovelace 的名字命名。

1980 年,伊克比亚离开 CII-HB,在 La Celle-Saint-Cloud 成立了 Alsys 公司,之后他开始发展 Ada 语言的编译器业务。在 1990 年代,伊克比亚设计了​​FATALY 键盘布局,专门针对手写笔或基于触摸的输入进行了优化。随后,他创办了 Textware Solutions 公司,该公司销售用于 PDA 和平板电脑的文本输入软件,以及用于 PC 上的医疗转录的文本输入软件。伊克比亚晚年时因在 Ada 语言方面的工作而获得了美国国防部颁发的杰出服务证书,他于 2007 年 1 月 26 日死于脑瘤并发症,享年 66 岁。

资料来源:维基百科、百度百科

1999 年 3 月 25 日:第一个维基站点 WikiWikiWeb 发布

图源:维基百科

WikiWikiWeb 于 1995 年 3 月 25 日由其发明者程序员沃德·坎宁安(Ward Cunningham)与 Portland Pattern Repository 网站一起讨论软件设计模式后推出,从苹果工程师比尔·阿特金森编写的 HyperCard 修改而来。这个维基软件用 Perl 编程语言编写,后更名为“WikiBase”。WikiWikiWeb 这个名字最初也是于运行这个网站的维基软件名称,名称中的 WikiWiki 是夏威夷语,意思是“快速”。

图源:维基百科

沃德·坎宁安设计 WikiWikiWeb 的初衷是配合波特兰模式知识库网站讨论设计模式,把它当协作式数据库使用,简化程序员之间的交流。该软件和网站由坎宁安于 1994 年开发,网站的概念基于坎宁安在 1980 年代后期构建的 HyperCard 堆栈中开发的想法。

坎宁安之所以能想出 WikiWikiWeb 这个名字,是因为他在一次旅途中被一位檀香山国际机场柜台员工告知需要乘坐 Wiki Wiki Shuttle,这是一条在机场航站楼之间运行的穿梭巴士线路。坎宁安的想法是让用户可以快速编辑 WikiWikiWeb 的页面,因此他最初考虑将其称为“QuickWeb”,但后来改变了主意,将其命名为“WikiWikiWeb”。

WikiWikiWeb 页面之间的超链接是通过将大写单词连接在一起创建的,这种技术称为驼峰式。一些较新的维基软件仍然遵循这种 wiki 标记格式约定,而其他一些软件,例如为维基百科提供支持的 MediaWiki 软件,允许链接没有驼峰式大小写。

资料来源:维基百科、百度百科

2004 年 3 月 25 日:Comcast 收购 TechTV 成立 G4TechTV

Comcast Corporation 是一家美国跨国电信集团,总部位于宾夕法尼亚州费城。按收入计算,它是全球第二大广播和有线电视公司(仅次于 AT&T),是美国最大的付费电视公司、最大的有线电视公司和最大的家庭互联网服务提供商,也是美国第三大家庭电话服务提供商;它为美国 40 个州和哥伦比亚特区的住宅和商业客户提供服务。

2004 年 3 月 25 日,Comcast 宣布计划收购 TechTV,后者是一个专注于计算机和技术的频道。收购于 2004 年 5 月 10 日完成,Comcast 将其 G4 电台与新收购的 TechTV 合并,形成 G4techTV。G4techTV 于 2004 年 5 月 28 日 在美国正式开播。G4techTV 保留了 TechTV 的节目,例如 The Screen Savers,以及 G4 之前的节目,例如 The Electric Playground。合并同时导致 TechTV 最著名的人物之一 Leo Laporte 因合同纠纷而离开该频道。Laporte 曾是电话求助节目 Call for Help 的主持人,该节目在合并后被取消。

图源:维基百科

2004 年 11 月 11 日,G4techTV 宣布解雇其许多知名员工,包括 Alex Albrecht 、 Dan Huard 和 Yoshi DeHerrera。这让许多人感到震惊,G4techTV 论坛上表达了愤怒和不满。G4techTV 还宣布取消其广受欢迎的深夜综艺节目《Unscrewed with Martin Sargent》以及其每周新闻节目《Pulse》。2005 年 2 月 15 日,合并后不到一年,TechTV 正式从网络名称中删除,网络名称恢复为 G4。2014 年 12 月 31 日,NBCUniversal 停止了 G4 的所有运营;它后来于 2021 年 11 月 16 日在 Comcast Spectacor 旗下重新推出。

以史为镜,可以知兴替。计算机科学发展至今,有许多至关重要的事件、人物。在《新程序员:我们的技术时代,我们的程序人生》中,来自四十余位技术人跨越半个世纪,用代码敲出一个个真实的程序人生故事!

扫描或点击《新程序员:我们的技术时代,我们的程序人生》订阅!

有关【历史上的今天】3 月 25 日:Ada 语言之父诞生;第一个维基站点问世;TechTV 被收购的更多相关文章

  1. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  2. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  3. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

  4. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  5. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  6. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  7. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  8. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从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

  9. ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例 - 2

    我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案

  10. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

随机推荐