30年前,一名网景员工用十天时间写出一个临时方案,如今它支撑着整个互联网

三十年后的今天,JavaScript依然是维系交互式网络的粘合剂,尽管它并非完美无缺。

三十年前的今天,网景通信与太阳微系统公司发布联合声明,宣布推出JavaScript——一种专为创建交互式网络应用而设计的对象脚本语言。该语言诞生于浏览器先驱网景公司一场为期十天的疯狂冲刺——1995年5月,工程师布伦丹·艾奇在十天内拼凑出可运行的内部原型。

尽管JavaScript语言直至同年9月才正式发布,1996年3月才推出1.0版本,但艾克最初十天编写的代码如今已演变为运行在约98.9%网站客户端代码中的核心技术(详见https://w3techs.com/technologies/details/cp-javascript),使JavaScript成为网络领域的主导编程语言。其普及程度惊人:除浏览器外,JavaScript还驱动着服务器后端、移动应用、桌面软件乃至部分嵌入式系统。多项调查显示,JavaScript始终位列全球使用最广泛的编程语言之列。

元素周期表

在设计JavaScript时,网景公司希望打造一种能使网页交互化的脚本语言——既要轻量化以吸引网页设计师和非专业程序员,又要满足功能需求。艾希融合了多重影响:为迎合网景管理层,其语法借鉴了当时新潮的Java语言;核心机制则吸纳了艾希推崇的Scheme语言理念,以及 Self——后者为JavaScript贡献了基于原型的对象模型。

Netscape Navigator 2.0 界面截图

JavaScript 合作计划获得了28家科技巨头的背书,但有趣的是,1995年12月的公告如今读来宛如科技行业的墓志铭。支持企业包括:数字设备公司(被康柏收购后并入惠普)、硅图公司(已破产)以及网景本身(被美国在线收购后解体)。JavaScript的联合创建者、Java所有者太阳微系统公司于2010年被甲骨文收购。唯有JavaScript存活至今。

名字背后

这段十日创世传奇已成为编程界的民间传说,但即便包含我们提到的核心事实,它仍过度简化了时间线。艾希的冲刺成果只是可运行的演示版而非完整语言,此后一年间网景持续调整设计。仓促开发导致JavaScript遗留诸多怪癖与不一致性,至今仍是开发者抱怨的根源。当时行业巨头比尔·盖茨甚至因持续涌现的改动而恼火。

“比尔·盖茨当时抱怨我们总在改动JS,”艾希后来回忆道。1996年秋季,微软为Internet Explorer开发了名为JScript的独立实现方案,由此引发的浏览器兼容性问题困扰了网页开发者多年。

在最终定名为“JavaScript”之前,该语言经历了多次更名。艾奇最初将其原型命名为“Mocha”,随后网景公司为1995年9月发布的Netscape 2.0测试版将其更名为LiveScript。直到12月网景与太阳微系统公司敲定合作协议时,JavaScript之名才最终确立。“从1995年5月到12月短短六个月间,它先是叫Mocha,后来又改为LiveScript。” 艾希在2008年接受《InfoWorld》采访时如此解释。“直到十二月初,网景和太阳公司达成许可协议,它才最终定名为JavaScript。”

这个名称三十年来一直令人困惑。这是当时一项营销决策,旨在借势Java的热潮。1995年的新闻稿将JavaScript定位为Java的补充,前者处理小型客户端任务,而后者则驱动大型企业应用。太阳微系统联合创始人兼研究副总裁比尔·乔伊当时表示:“JavaScript将成为连接HTML内容与Java小程序的最有效方式。”

关于其与Java关系的困惑至今未消:两者仅共享名称与部分语法规范,本质差异显著。Java由詹姆斯·高斯林在太阳微系统公司开发,采用静态类型和基于类的对象模型;而JavaScript则使用动态类型和基于原型的继承机制。正如某位Stack Overflow用户在2010年所言,这两种语言的区别类似于“汽车”与“地毯”的词义关系。

从咖啡命名到行业标准

1997年6月,通过ECMA国际组织的规范制定,JavaScript正式成为ECMAScript行业标准(“ECMA”即“欧洲计算机制造商协会”的缩写)。21世纪初,随着Internet Explorer垄断浏览器市场,该语言经历了创新停滞的艰难时期。但2005年AJAX技术的问世通过实现无需整页重载的流畅网页应用,重新点燃了开发热情。2009年Node.js的出现让开发者能在服务器端运行JavaScript,使该语言的应用范围远超浏览器领域。

如今JavaScript几乎渗透到网页开发的每个角落。Stack Overflow 2024开发者调查 发现62%的开发者使用JavaScript,使其连续第十二年蝉联最受欢迎编程语言(涵盖网页及其他领域)。JetBrains《开发者生态现状报告》显示 显示JavaScript在受访开发者中的使用率达61%,而作为JavaScript超集并添加静态类型的TypeScript采用率从2017年的12%跃升至2024年的35%。

该语言如今不仅驱动网站,还通过React Native等框架驱动移动应用,通过Electron驱动桌面软件,并通过Node.js驱动服务器基础设施。JavaScript 软件包注册库 npm存在 约 200 万至 300 万个软件包。

如今,人们希望将 JavaScript 商标解放出来供公众使用。甲骨文公司收购太阳微系统时继承了该商标,但从未以JavaScript之名开发过产品。由Node.js创始人Ryan Dahl、Eich及逾28,000名JavaScript社区成员联署的公开信指出,甲骨文因长期未使用已放弃该商标权,该术语现已成为通用名称。

该团体于2024年11月向美国专利商标局提交了撤销申请。公开信指出,若不冒着与甲骨文发生商标诉讼的风险,就无法举办“JavaScript大会”或制定“JavaScript规范”,迫使社区组织使用“JSConf”这类别扭的替代方案。艾希本人早在2006年就曾撰文指出,作为语言标准的官方名称“ECMAScript” 这个语言标准的官方名称“始终是个令人不快的商标名,听起来像皮肤病”。

无论是否像皮肤病,这种底层语言的存续时间远超所有人预期。或许最大的讽刺在于:Java小程序早已从浏览器中消失殆尽,而JavaScript却占据主导地位。这场怪诞的边缘表演最终成为了主角。生日快乐,JavaScript。

元素周期表抱枕

共有{99}精彩评论

  1. 网景与太阳公司计划向万维网联盟(W3C)及互联网工程任务组(IETF)提议将JavaScript作为开放的互联网脚本语言标准。JavaScript将成为开放的、自由许可的拟议标准,供整个互联网社区使用。现有太阳公司Java许可方将获得JavaScript使用许可。此外,太阳公司与网景公司计划提供JavaScript源代码参考实现版本,并开放免版税许可,进一步推动其在各类产品中作为标准被广泛采用。

    九十年代涌现了许多富有远见的人士。欧洲核子研究中心于1993年4月30日免费开放万维网协议及代码,促成其普及应用。

    当时CompuServe、AOL、Minitel和BTX等封闭系统仍占据市场——那不仅是围墙花园,更是封闭世界。但少数先驱者已洞见未来并塑造了它…

    1. 这再次印证了太阳微系统公司何其具有前瞻性。它堪称开放系统的真正捍卫者。

      1. 这并非基于道德层面的前瞻性,而是商业策略。每家科技公司都会将竞争对手更具优势的技术开源(或试图标准化)。

        1. 这篇文章不就反驳了你的观点吗?它列举了众多企业出于合理商业动机支持开源的案例,却指责Sun的动机不纯。

          1. 这篇写于2002年,不能要求乔尔具备完美预见力。

            但若仔细推敲,我能看出其中策略。首要任务是消除行业对微软的依赖。若能让开发者习惯Java,微软就不会着力打造Windows服务器作为最佳Java运行环境。

            Java本可能成为“骆驼进帐篷的鼻尖”。

            JavaScript无疑是试图将“应用运行环境”商品化,让更多人通过浏览器运行应用。

            1. 我认为动机顺序本末倒置。许多员工乃至高管都深受道德诉求驱动——他们渴望创造社会价值并获得回报,但必须用商业案例来证明其合理性。

              换言之,道德诉求先行,商业论证后继。

              1. 我认为非创始人的高管做任何事都不会不先考虑利润。

      2. 若我记忆无误,此举主要是试图通过将应用迁移至网络来削弱操作系统的意义。从长远看,这多少奏效了,但这场变革未能及时拯救Sun或网景。

        1. 这让我想起Sun当年打出的“网络即计算机”口号,甚至印在T恤上。我认识的多数技术人员都对此嗤之以鼻。有人特意印了件反讽T恤:“网络就是网络,计算机就是计算机,抱歉造成混淆。”

          不过我认为他们想表达的是“未来你使用的数据将遍布整个网络”——没错,这在1995年确实是个前沿概念。我希望这曾是试图绕开微软桌面霸权的商业策略(否则纯属偶然)。太阳公司确实为构建“桌面操作系统不再至关重要”的世界做出了卓越贡献(我日常使用FreeBSD、Linux、Win10,偶尔也用macOS)。但在我看来,Sun真正错失了移动革命。2000年代末,曾有Sun工程师来推销最新SPARC处理器用于移动设计。据我所记,其每周期功耗表现优异,但仅是独立CPU(非SoC),难以通过降频实现理想续航。唉,如此卓越的技术,如今尽数湮没。

          1. 关于Sun的口号:80年代中期,英特尔支持的VLSI组件与软件工程团队,正是基于摩托罗拉68K架构的Sun工作站搭建而成。该系统以五人小组为单位配置工程人员,通过10Mb厚网连接一台带磁盘服务器和四台无盘客户端,运行Sun的bootp、NFS及黄页服务。这正是Sun销售人员所宣扬的“网络即计算机”理念的实践。当时计算资源配置标准是每780服务器服务10-15名工程师,而该方案使每位工程师获得相当于VAX-11/780的CPU性能。整套设备全部安置在办公桌面或下方,无需专用空调机房和架空地板。互联网仅通过一条2400比特专线连接ARPA IMP终端,主要用于与卡内基梅隆大学研究人员的文件传输。外部邮件和Usenet则通过VAX机群的UUCP协议实现。

          2. 我至今记得那句广告语曾让我困惑不已,后来Sun的宣传语“我们为互联网注入了点点滴滴”同样令人费解!

            1. 你一针见血,这分析太精准了,而且绝非个例!

              但他们早就是这副德性了,早在1990年我入职之前就如此,远在Java诞生之前。他们将自身定位完全建立在对抗微软的基础上,甚至到了极端程度——当太阳微系统公司拆分成独立部门时,他们竟将其中一个部门命名为“SunSoft”,直接与微软对标。简直荒谬。

              Sun的管理层从未将Java视为编程语言或软件平台,他们首先将其定位为对抗微软末日战争中的主要大规模杀伤性武器;他们也不把Java开发者当作忠诚珍视的客户,而是视作全球反微软战争中可随意抛弃的洗脑雇佣兵。

              当太阳公司得意洋洋地宣称“我们为’点com’注入了核心价值”时,微软便巧妙反击:“哦,那微软可是为’点com’注入了’COM’——ActiveX、IE、MSJVM、IIS、OLE、Visual Basic、Excel、Word等等!”

              随后IBM嘲讽道:“他们在’点com’里加了点,却忘了如何连接这些点”,话音未落便嚣张推出Eclipse,只为给Java投下阴影。砰!噗!

              https://web.archive.org/web/20200814053447/https://www.itbus

              太阳公司完全错失了对抗真正宿敌AT&T的良机,本应将全部精力投入完善SunOS系统,并在SunOS最终击败System V称霸Unix市场后全力反击AT&T。然而SunOS赢得Unix战争后,他们竟向AT&T投降,彻底放弃抵抗,出卖自己给宿敌,最终沦为Solaris。

              借用我最爱的跨平台苹果/IBM笑话:

              问:太阳公司和AT&T结合会生出什么?
              答:AT&T。

              1. 这个AT&T梗实在妙趣横生。

                需补充的是,世事鲜有绝对。太阳公司是否珍视Solaris和Oak/Java开发者?当然珍视。但他们是否一视同仁?绝非如此。他们是否将这些开发者视为对抗微软的可抛弃棋子?初期未必,但后期几乎完全如此。

                即便给再多钱我也不愿用Eclipse。不过这话也不尽然——几年前有份工作我确实靠用Eclipse赚钱。虽然很不情愿,但懒得写更好的替代品。

                这里或许还暗含另一层讨论:市场在变,若不随变则会沦为IBM或CA的下场。(时移世易,吾等亦随之变。)IBM错失个人电脑浪潮,最终不得不出卖灵魂(采用开放架构),才避免被苹果(以及康懋达和雅达利这些对手)碾压。微软在互联网领域同样迟到,据说比尔·盖茨亲自揍了几个副总裁才让他们重视这个领域。我们似乎都强烈认同:太阳公司过于专注于抵御微软对网络霸权的挑战,以至于长期忽视了联想(据我所知,他们对移动领域更是完全漠视)。试想若Sun将第三方英特尔服务器纳入OpenSolaris的一级支持体系(或许还应更早启动该项目),行业格局将如何改写。但当时Sun管理层恐怕连脑干都无法理解这种战略。

        2. 核心问题无疑在于Linux在通用硬件上的普及成为行业标准。2000年时,许多企业仍将其视为业余爱好者的系统。但谷歌等公司将其引入企业领域后,对于多数应用场景而言,一台千元Linux主机就能替代万元级Sun服务器。

          1. 青少年选择开源软件的原因有二:a)囊中羞涩,b)YouTube上相关教程视频海量。十年后他们在职场仍会选用相同软件

            1. Linux(及LAMP等技术栈)的普及发生在YouTube、Stackoverflow、ChatGPT等新兴工具决策渠道兴起之前——当人们拥有选择权时,这些平台才成为工具决策的新标准。

              确实,你在学校学到的工具会影响到工作中使用的工具(当你有机会影响选择时),营销人员早在Linux出现前就明白这个道理。我甚至知道某顶尖计算机科学系曾被某大型软件公司威胁:若该系改用Linux而非该公司软件授课,将取消实习机会并实施其他制裁。当该系坚持使用Linux后,该公司似乎兑现了威胁。(如今计算机系更像职业学校,或寄望学生创业,普遍教授的是他们认为当下行业正在使用的工具,而非引领潮流。)

              相关案例:苹果公司曾大力将Apple II系列推入校园,影响富裕家庭的购买决策——甚至在学生成年就业前就已布局。

          2. 据我记忆,布莱恩·坎特里尔的演讲中早于太阳公司实际行动数年就提及过Solaris开源计划。

            倘若Solaris能提前五年开源,如今很可能成为操作系统领域的主流玩家。(当然我们永远无法知晓,历史已走向另一条轨迹)

            > 但随后谷歌等公司将其引入企业世界

            依稀记得曾读到/听闻谷歌内部基础设施曾考虑采用太阳硬件或Solaris系统,可惜记不清具体出处了 🙁

        3. 拯救太阳公司?!太阳公司从未消亡或失败。他们赢了:被甲骨文以数十亿美元收购。这绝非贱卖。

  2. 如今很难想象90年代Java和面向对象编程曾引发的狂热。网景将Livescript更名为JavaScript或许就是明证。那也是太阳公司的巅峰时期,他们真正引领了那个时代的网络发展。

    1. Java的狂热盛况前所未有且恐难再现。某科技巨头CEO竟登上全国电视网推销编程语言。我在车里听美国国家公共电台报道相关故事,母亲还特意打电话问我“那个Java是什么玩意儿”。Java无处不在,似乎要渗透所有领域。

      伴随这场热潮的是对高校的强势渗透,成功将其确立为标准教学编程语言。连麻省理工学院都从Scheme转向了Java。

      1. 我正处于这波浪潮的顶峰——大一暑假在麻省理工学院自学了Java和Scheme——因此我相当确定上述说法并不完全准确。

        计算机导论课程一直沿用Scheme,直到Java热潮过去约十年后才改用Python。

        我记得真正改变的是软件工程导论实验课(6.170),大约在同一时期从CLU(?)切换到了Java。

      2. 2015年我攻读计算机学位时,Java仍是我们的第一门编程语言。

        1. 2020年我攻读计算机科学学位时,先学习Python,随后课程迅速转为Java教学。

          1. 电气工程专业类似——编程基础课先学Java,后续数学课程才用Python。

            1. 我2003年入学,先学C++,之后大部分课程都用C++完成,期间还选修过Java课,并自学了Python、C#和PHP用于课程作业。

              有人能解释下吗?现在还有人用贬义的“Java学校”这个说法吗?我觉得很荒谬,毕竟编程领域多数岗位都用某种管理内存的语言,用Java教学完全合理。

    2. 这也是苹果将OpenStep更名为Cocoa的原因。Java本应成为Mac OS X的主要开发语言(因为Java和Cocoa配合得天衣无缝)。

      1. 有一段时间确实能用Java开发OSX应用。我亲身实践过。当时还有相当不错的JNI绑定库支持QuickTime等组件,我曾用Java写过调用QuickTime加载视频的应用。当时为完成博士论文需要分析视频流,就用Java结合QuickTime绑定库开发了定制化可视化工具。那段时光真美好。

    3. 那么如果今天诞生JavaScript,它会被命名为AIScript?明白了。完全无法理解当时的炒作程度。

    4. 拥有一个可运行任意代码的平台无关运行时,确实具有巨大潜力。这曾是ARPANET的核心理念之一,但最终未能普及——毕竟没人愿意在本地机器上运行来自网络的外部代码。对于平台无关的运行时环境,面向对象编程似乎是理想选择——它将数据、处理器和逻辑封装成交互对象(这与艾伦·凯描述的面向对象原始用例高度契合)。

      趣闻:Java最初也曾被命名为Oak。

    5. > 这也是太阳微系统公司的巅峰时期,他们在此阶段真正推动了网络发展。

      那不是我记忆中的样子。那是Sun公司希望呈现的景象,但实际情况是Apache在Linux或BSD(甚至SGI)平台上远更普及——至少在我身边是如此。我曾在本地Sun经销商的同一栋楼里待过相当长的时间。就算付钱给我,我也不会碰他们那些翻炒旧货又价格虚高的硬件。这正是我对SUN和SGI的印象:浪费金钱的厂商。

      不过嘛,既然身处泡沫期,就尽情狂欢吧,仿佛1999年重现。客户炒作无妨,但没必要跟着他们跳崖。昨天有人问贝佐斯为何不收购大型AI公司?原因就在此。

      1. 1995年根本没人用Linux托管网站。这帖子里的历史被改写得太离谱了。

        1. 我当年就用,而且认识不少同道中人。Slackware诞生于1993年,到1995年红帽系统也已问世。

          1995年NCSA运行得相当稳定,12月起Apache就已面世。我当时推出了首款商用摄像头软件(运行于SGI平台),一年后该软件也实现了PC端运行。

          1. 你们属于业余爱好者群体,相较于Sun硬件主导的ISP领域只是沧海一粟。IBM和HP虽是竞争对手,但在ISP市场表现逊色。你们当时在美国还是欧洲?

          2. 你和朋友们大概属于业余爱好者、黑客或小型主机服务商。数据中心(还记得Exodus吗?)里堆满了Sun硬件,机架上贴满早期互联网泡沫时期热门初创公司的标签。

            1. 据我所知,FreeBSD在主机服务商中也相当流行。

      2. 1990年代Sun系统在硅谷企业界极受欢迎。风投机构常将昂贵系统推销给资金雄厚的初创公司——“这是张大额支票,照照其他富有的初创公司做,买Sun系统吧”。而预算紧张的初创公司则普遍采用更具成本效益的Apache系统。但即便雅虎和Geocities这类巨头,最初也是在Apache架构上实现规模扩张的。

        1. 完全认同。我参与过的互联网泡沫时期初创企业,无一例外都采用Sun硬件搭载Oracle数据库。Apache是标配,Java因速度问题被有限采用,而C++则因能解决内存问题或提供比Java更高的速度/效率而成为主流。

          我接触过的风投机构表示这是商业决策。他们有资金可投,因此初创公司能负担得起经过一两轮质量保证周期的软硬件。风投认为多数投资对象的退出路径将是被收购(可能被另一家初创公司收购),因此希望采用标准化环境以简化技术栈整合流程,至少减少干扰。

          我隐约记得雅虎高管曾抱怨Viaweb/雅虎商店采用Lisp编写,管理层因无法快速招募足够Lisp人才而惊慌失措。至少硅谷流传的故事是这样说的。(保罗·格雷厄姆是否就在附近?或者有人能指出他谈论Viaweb被雅虎收购的权威参考资料?)

  3. 恍如昨日。那也是我女儿出生的时节,同样恍如昨日。

    当时我正忙于开发大量网景插件,还多次往返于加州的网景和太阳微系统办公室。

    那真是激动人心的年代。

    1. 精彩轶事。你现在从事什么工作?还是开发者,还是公司副总裁了?

      1. 仍在编程学习——这是我的热爱

    2. >Sun公司加州办公室

      基本上遍布圣克拉拉县及周边地区

  4. 补充说明:JavaScript由布伦丹·艾克十天内编写完成。

    肯·汤普森用30天构建了Unix系统。

    年轻人——去创造酷炫的东西吧!或许能成功。

      1. 记得比雅内·斯特劳斯特鲁普的名言:“编程语言只有两类:被抱怨的和无人使用的。”

      2. 确实如此。且如《系统圣经》所言:任何复杂的有效系统,皆源于简单有效系统的演进。它行之有效——过去如此,现在亦然。但这不意味着我们必须喜欢它。取代它恐怕是不可能的。

        1. 一本书涵盖DOM和浏览器API,另一本则没有。

    1. https://en.wikipedia.org/wiki/Brendan_Eich

      > 他曾担任Mozilla公司首席技术官,后被任命为首席执行官,但因反对同性婚姻引发争议而于就任不久后辞职。此后他成为Brave软件公司的联合创始人兼首席执行官。

      1. 顺便说一句…我和布伦丹在Mozilla共事了一年多。这位兄弟对我毫不掩饰的酷儿生活方式毫无异议。我认为人们对布伦丹的争议点不在于他反对同性婚姻,而在于他支持某个反对同性婚姻的组织。这虽是微妙的区别,却值得说明。人性本就复杂。

        1. 抱歉,区别何在?对熟人友善,却试图剥夺数量庞大得多的陌生人群体的权利——这难道不是更糟糕吗?

        2. 区别在于:个人层面的偏见与制度层面的偏见。别被温暖的握手和友善的笑容蒙蔽了双眼。

  5. 这段话的乐观态度真令人欣赏:

    > JavaScript与Visual Basic的相似之处在于,它能让编程经验匮乏甚至毫无经验的人快速构建复杂应用

    1. 我倒觉得这是句反话。意思是只要让外行碰触JavaScript,一切都会迅速变得复杂。

      在当前通用AI+过度设计的框架时代,这种说法或许不无道理。

    2. 某些VB应用在设计上相当出色,TCL/Tk亦是如此。它们在当时(奔腾I-III时代)略显臃肿,但我见过更糟糕的JavaScript怪胎。

  6. DEC那段引文让我查阅了资料…难以置信1995年竟有DEC制造(在美国!)的处理器能同时运行JavaScript、Linux、BSD、Windows 2000和Plan 9系统。

        1. 我知道。我只是想调侃一下。我至今还保留着一台AlphaServer,偶尔开机重温辉煌岁月。Alpha系列本该继续发展,可惜天太高。我明白英特尔在市场竞争中胜出,DEC也做过不少蠢事,但若他们能靠更优秀的产品取胜,我反而会更欣慰。

      1. 正如mfro所言,是Alpha。DEC从未生产过MIPS处理器;它竟是从MIPS公司采购的,并自1989年起用于DECstation RISC服务器。

        DEC于1992年推出自主RISC架构Alpha。我确信DECstation在1995年前就已停产。尽管承诺过,DEC始终未能为DECstation交付其下一代Unix系统OSF/1。

  7. 就在那时,我去了加州大学圣地亚哥分校的书店,买了一台Sun台式机。我还买了封装好的编译器、封装好的Sybase数据库,以及封装好的Netscape企业服务器。

    我在Netscape企业服务器上构建了大量服务器端JavaScript网络应用,并用JavaScript和Netscape开发了一个窗口壳(为移除Netscape的界面元素,我不得不获取代码签名证书)。最终图书馆内300多台公共工作站都运行着这个奇特的JavaScript窗口壳(取代了所有绿屏和琥珀屏终端)。

    编写服务器端应用和拼凑那个外壳的过程,基本就是我的编程启蒙。此外我还得把一大堆Perl 4代码迁移到Perl 5。

    1. 当年学生折扣价是多少?依稀记得SGI曾来我们大学推销整套系统,价格约2000美元(1996或1997年)。据我所记,奔腾Pro架构的系统价格也相差无几。

  8. 在JavaScript诞生前两年,我就已深陷网络世界——先是用Lynx浏览器,后来在Amiga上用Mosaic浏览器。当时还在Amiga上做了大量AREXX脚本编程。记得曾对朋友说:“这网页浏览器真该有个脚本语言”,当时就盼着AREXX(或其他语言)能自动化操控浏览器。

    当JavaScript首次现身于Netscape浏览器时,我的祈愿终于实现,从此再无回头路。自那日起,我便每日编写JavaScript代码。

  9. JavaScript是一种易于使用的对象脚本语言,专为创建实时在线应用而设计,可串联客户端与服务端对象及资源。Java供程序员创建新对象和小程序,而JavaScript则面向HTML页面作者和企业应用开发者,用于动态编写客户端或服务器端对象的行为脚本。JavaScript与Visual Basic相似之处在于,即使毫无编程经验者也能快速构建复杂应用。其设计理念代表了专为互联网打造的新一代软件

    1. “大写I”的互联网。超爱这种美学。

      1. 这是专有名词,区别于其他互联网。若有人名叫Guy,你不会称他为guy。

      2. 每当看到公众互联网“Internet”被错误地用小写i拼写时,我仍会感到恼火。

        1. 嗯。正努力回想以前工作的地方是否会说“The Intranet”或“the intranet”。我觉得如果指公司内部使用的特定系统,可以把“Intranet”当作专有名词;但若指公司防火墙内不连接互联网的局域网概念,则用“intranet”更合适。

          1. 成千上万的局域网,却只有一个互联网——这才是关键所在。

            1. 没错,但存在无数个“互联网”(小写’i’),这正是重点所在。

            2. 没错,我们写“the Internet”。上次有人写“an internet”是什么时候?:)

              1. 三条回复之前。

                但确实,大写的“Internet”指代“互联的互联网”,而这样的存在仅此一个。SIPRnet的第一条规则就是:不谈论SIPRnet。但若真要讨论,评论大概会说它类似“the Internet”却又不同于“the Internet”。

                在学术界或相关工业研究领域,偶尔会听到“an internet”(始终小写以示普通名词)来描述网络的网络。但你说得对…这种用法非但未见增长,反而日渐式微。

              2. 或许外星文明也有自己的互联网。但若如此,互联网是否只是所有局域网的集合,某种意义上不过是顶级局域网?

                  data Intranet = Intranet [Intranet]
                
    2. 他们几乎是在逼微软开发VBScript,而微软确实这么做了。

      1. 后来又推出了JScript。拥抱并扩展…这才是正道。

  10. 那是个疯狂的时代。发展速度超乎想象。记得Netscape 2.0正式版发布前至少经历了6-7次测试版迭代。每次测试版都带来颠覆互联网的重大突破——JavaScript(当时叫LiveScript吧)就是其中之一。他们随手在浏览器测试版里扔出后来统治整个行业的技术。

    我经历过的唯一能媲美这段时期的,就是当下。真是个绝佳的开发时代。

    1. 哈哈。而网景1.1版更随手为世界和后世生下了SSL(2.0)。

  11. 其实这是布伦丹·埃尔奇在网景公司十天左右内开发的,最初名为Mocha。

  12. 这是AI写的?

    “AT&T对JavaScript的支持不仅是支持一项酷炫技术——更是对开放标准流程的支持。”

  13. 有趣的是,那些宣传语总在谈论丰富的多媒体集成,而JavaScript 1.0的输出选项仅限于:写入文本区域、写入表单输入框,或设置其他表单元素状态(如复选框或下拉框)——这就是所谓的丰富多媒体体验!

    当然还有臭名昭著的document.write()——当文档加载时文档流仍处于开放状态时使用它,但这更像是一种黑客手段而非交互模型。

    1. 我认为他们指的是用JavaScript在Java小程序间建立消息队列,而小程序会执行类似多媒体的功能。

      1. 部分功能似乎也涉及服务器端(LiveWire),这是Node.js问世前Netscape推出的产品,但当时是否已实现尚不确定。(Netscape企业服务器何时发布?)

        同样不确定的是,当JavaScript发布时,LiveConnect(实现JS与Java小程序双向通信的技术)是否已存在。(我认为它稍晚些才出现。)

        编辑:我有一本Netscape在JavaScript测试版时期的书籍(这是我接触该主题的首部读物)。书中仅用一页篇幅提及小程序,并用一句话说明可通过LiveConnect按ID调用它们。可见该功能已实现,但未被重点宣传。全书示例均基于表单操作。

        (书中应用程序与网景官网展示的演示应用相同——很可能正是这些案例引发了当时的争议。)

        1. 我记得98年前后,人们争先恐后地研究如何将由小程序组成的“组件”进行串联。我认为当人们发现SpyGlass/IE浏览器与网景采用截然不同的applet连接技术后,这种热潮便戛然而止。微软公司,你们确实值得称赞——让我的开发生涯苦恼了数十年(更别提1990年我担任微软C 5.0测试员那段经历了)。

          我记得用过Netscape企业服务器套件,但当时没意识到它内置了JS引擎。我确实记得稍晚些出现的Rhino(尽管维基百科说它诞生于90年代末)。而Netscape团队将Visigenic ORB同时集成到企业服务器和Navigator浏览器里的做法,给我留下了相当糟糕的印象。真好奇他们是否把Rhino塞进了NES/iPlanet/Sun ONE系统里。

  14. 要是他们当时能同步发布一套像样的标准库就好了。

  15. “这让许多人非常愤怒,普遍被视为一次糟糕的决策。”

  16. 我以为JavaScript最初叫LiteScript?

    1. “LiveScript”——所有网景专有技术都冠以“Live…”前缀,比如LiveWire、LiveBridge等等。

  17. 有人有时光机吗?让我们回到过去把规范改成TypeScript吧

  18. 若真有语言该长眠,那非JS莫属

    它的时代已然终结…

    /s

    (前JS开发者的一点看法。偶尔我仍要和它较劲)

  19. “三十年前的今天,网景和太阳微杀死了万维网”

    1. 现代网页如今是这般模样:<html><one.js><two.js><three.js></html>

      标准竟是偶然形成的。

      1. 似乎人们实际使用的多数标准都是偶然形成的。

  20. JavaScript与Visual Basic相似,能让编程经验匮乏者快速构建复杂应用

    当时的谎言。更易上手的流行扩展语言早已存在(如VB、Python、Tcl、各类4GL甚至COBOL),且无一采用此种形态。

    他们赋予它类似系统编程语言的语法,却搭配了并不适合此目的的语义设计。(语法继承自Java——当时确实是优秀的应用语言,但必须取代C++,因为嵌入式开发者原本会用C++开发机顶盒类设备,而Sun公司当时正将Oak(即Java)定位于此类设备。) 更别提,普通非程序员完全能掌握这种混合了函数式与块结构命令式的语义体系——搭配几乎无人见过的原型委托对象模型,以及大量易出错的陷阱。)

    当市场营销、产品管理和工程团队未能协同合作,或在开发周期后期仓促拼凑时,就会出现这种局面。

    > 网景与太阳公司计划向万维网联盟(W3C)和互联网工程任务组(IETF)提议将JavaScript作为开放的互联网脚本语言标准。

    但首先,发布新闻稿!因为我们已集结行业权威背书,准备用这个仓促拼凑的权宜之计碾压W3C的核心网络标准——它本就是某位程序员在糟糕的需求和紧迫的时限下,短短数周内仓促完成的产物。当时他就清楚这是拙劣方案,若能多些时间或完善需求,本可做得更好。

    “技术债务以后再说。”我们都清楚这给行业带来了什么后果。如今整个领域都丧失了构建合理安全的网络系统的能力。(安全问题只是冰山一角——当所有人都不得不摸着石头过河,且无人真正理解自己在做什么时,这种糟糕局面带来的影响远不止于此。)

    这种做法甚至没能让网景或太阳公司长期受益。当年或许有人因此拿到奖金晋升,但两家公司都很快走向衰败——尽管此前曾有过卓越的工程与产品成就。

    1. 这种观点实在充满敌意。JavaScript率先问世,其性能已足够优秀,相较于浏览器中的Flash和Java都实现了巨大飞跃。根本无法保证某个委员会设计的语言能面世,更别提获得市场认可或超越JavaScript了。

      1. 当时的JS显然是在互联网IPO狂潮中仓促拼凑而成,是设计拙劣的抢占市场之作。

        所谓“委员会设计”的替代方案实为虚假二分法。

        针对非程序员(或低编程门槛)用户的需求,当时已有更成熟的语言解决方案。JS显然从未试图满足这类用户群体。

        而对于专业程序员实现相同功能,当时也存在更优的语言选择。

        即便在Sun公司内部,当时也存在更完善的多媒体网页浏览器方案。

        相反,某些团队为了尽快发布他们想要的新闻稿,不惜使用任何手段,根本不在乎内容是否垃圾,甚至在新闻稿的时限内本可以做得更好——如果他们愿意花心思的话。

        1. 市场就在那里,先发优势也存在。技术既植根于现有政治、社会和经济进程,也是其产物,而非独立存在的实体。

          想想那些曾被认为不如其他语言却最终胜出的“劣质”语言吧。

          1. 我认同先发优势是重要概念。虽不确定其在JS发布情境中的适用程度,但当时确实存在抢占先机的急迫感。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

你也许感兴趣的: