当前位置: 首页 > news >正文

Javascript真的是10天内做出来的吗?

我曾听说,Javascript 之所以有这么多缺点,是因为它的第一个版本是在短短十天内完成的。我很好奇:1)这是否属实;2)这是否能解释这种语言的缺陷。

经过一番研究,我可以不自信地说:是的,但有点复杂:

  • 事实上,JavaScript 的 "第一版 "确实花了十天时间:确切日期没有得到证实,但布伦丹-艾奇(Brendan Eich)回忆说是 1995 年 5 月 6 日至 15 日。但这只是一个用于内部演示的最小原型("Mocha")。
  • JavaScript 1.0 于 1996 年 3 月公开发布(第 10 页),第一个 "完整 "版本于 1996 年 8 月发布(同上)。
  • 即使在那之后,网景团队也会定期调整 JS 的设计;Eich 回忆说,1996 年秋天,"比尔-盖茨一直在抱怨我们不停地修改 JS"。

艾奇在语言设计和编译器开发方面也有十年左右的经验,网景公司明确聘请他在浏览器中使用编程语言。最初这应该是 Scheme,但后来网景公司与 Sun 签订了协议,同意让它更 "像 Java"。

这是否解释了JavaScript的缺陷?
可以说,JavaScript 的大部分现代缺陷都不是因为开发时间太短造成的:

  • Mocha 最初并没有隐式类型转换功能,但用户要求 Eich 在 1.0 中加入这一功能(视频链接)。他对此深表遗憾。
  • JS 1.0 添加 null 是为了与 Java 更加兼容(第 13 页)。与 Java 兼容也是 typeof null = object 的原因。
  • 所有 JavaScript API 的缺陷都是在 Mocha 之后才出现的,因为所有 API 的工作都是在 Mocha 之后进行的。Mocha 是一种相当简约的语言!
  • 所有数字都是浮点数 "的问题最初出现在Mocha中,但我认为这一直都是Mocha想要解决的问题。JavaScript 1.0 手册将 HyperTalk 作为主要灵感来源。我从未使用过 HyperTalk,但略读手册后,我觉得它做了同样的事情(第 102 页,第 517 页)。

我发现 10 天冲刺肯定会对 JavaScript 造成损害

  • 布伦丹-艾奇(Brendan Eich)没有时间添加垃圾回收器,
  • 后来试图添加垃圾回收器时又增加了很多安全漏洞(43:04)。

原文:https://www.jdon.com/68717.html

相关文章:

Javascript真的是10天内做出来的吗?

我曾听说,Javascript 之所以有这么多缺点,是因为它的第一个版本是在短短十天内完成的。我很好奇:1)这是否属实;2)这是否能解释这种语言的缺陷。 经过一番研究,我可以不自信地说:是的…...

picoctf_2018_got_shell

picoctf_2018_got_shell Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)32位,只开了NX int __cdecl __noreturn main(int argc, const char **argv, const char **envp) {_DWOR…...

作用域 CSS 回来了

几年前,消失的作用域 CSS,如今它回来了,而且比以前的版本要好得多。 更好的是,W3C规范基本稳定,现在Chrome中已经有一个工作原型。我们只需要社区稍微关注一下,引诱其他浏览器构建它们的实现,并…...

简述ceph文件储存系统

Ceph 是一个统一的分布式存储系统和共享机制,它定义了数据如何存储在一个或多个节点上并呈现给其他机器以供文件访问。 Ceph特点 高性能 a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。 b.考…...

计算机图像处理:椒盐噪声和高斯噪声

图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,同时会造成图像一定程度上的模糊,这也叫做平滑或者低通滤波。无论是均衡化直方图和图像滤波,都一定程度上降低了图像阈值分割的难度,直…...

SQL SELECT 子查询与正则表达式

在之前的文章中已经探讨了 SQL SELECT 语句的基础和进阶用法,以及如何通过高级技巧来进行更复杂的数据查询和分析。本文将介绍 SQL SELECT 语句中的子查询和正则表达式的使用。这些是 SQL 中非常强大的工具,能让您进行更复杂和精细的数据操作。 文章目录 子查询基础与应用子…...

Package vips was not found in the pkg-config search path的解决方案

出现该问题是因为pkg-config未安装或未成功设置环境变量。 下文是centos下的操作。 前提 先安装C编译环境: yum -y install gcc-c 否则会报错configure: error: no acceptable C compiler found in $PATH 成功后gcc -v会显示版本信息。 下载&安装 pkg-config 传…...

Vue封装全局SVG组件

1.SVG图标配置 1.安装插件 npm install vite-plugin-svg-icons -D 2.Vite.config.ts中配置 import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from path export default () > {return {plugins: [createSvgIconsPlugin({// Specify the icon fo…...

课题学习(二)----倾角和方位角的动态测量方法(基于磁场的测量系统)

磁性测量工具安装在非磁性钻铤内,如图1,以避免磁性随钻测量工具测量时受到外部干扰。 测量系统采用三轴加速度计和三轴磁通门,并采用冗余设计,由于井下振动剧烈,陀螺仪的可靠性将大大降低。为了保证整个钻井过程中系统…...

Docker-Windows安装使用

1.下载docker https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.配置虚拟化环境 通过控制面板“设置”启用 Hyper-V 角色 右键单击 Windows 按钮并选择“应用和功能”。选择相关设置下右侧的“程序和功能”。选择“打开或关闭 Windows 功能”。选择“Hyper-…...

在Windows11上安装ubuntu虚拟机

一开始是参考了 VMware17虚拟机安装Ubuntu最新版本(Ubuntu22.04LTS)详细步骤 专栏的1和2来的。但是后面总是提示operating system not found,就参考vmware安装ubuntu时总是提示operating system not found,选择典型安装而不是专栏选择的自定义安装&#…...

【微服务】spring 控制bean加载顺序使用详解

目录 一、前言 二、使用order注解控制顺序 2.1 order 注解使用示例 2.2 order注解顺序失效问题 2.2.1 order失效问题解决办法 2.3 实现Ordered接口 三、使用dependon注解控制顺序 四、AutoConfiguration注解控制bean加载顺序 4.1 AutoConfigureBefore 操作演示 4.2 A…...

python-切换镜像源和使用PyCharm进行第三方开源包安装

文章目录 前言python-切换镜像源和使用PyCharm进行第三方开源包安装1. 切换镜像源2. 使用PyCharm进行第三方开源包安装 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每…...

tp6 + swagger 配置文档接口

ThinkPHP 6.0 运行环境要求PHP7.2,兼容PHP8.1 安装 composer create-project topthink/think tp 6.0.*如果需要更新框架使用 composer update topthink/framework文档 完全开发手册 swagger 文档 注解文档 安装包 composer require zircote/swagger-php 引用…...

试图一文彻底讲清 “精准测试”

在软件测试中,我们常常碰到两个基本问题(困难): 很难保障无漏测:我们做了大量测试,但不清楚测得怎样,对软件上线后会不会出问题,没有信心; 选择待执行的测试用例&#…...

Visual Studio 删除行尾空格

1.CtrlH 打开替换窗口(注意选择合适的查找范围) VS2010: VS2017、VS2022: 2.复制下面正则表达式到上面的选择窗口(注意前面有一个空格): VS2010: $ VS2017、VS2022: $ 3.下面的替换窗口不写入 VS2010: VS2017、VS2022: 4.点选“正则表达式…...

LeetCode_BFS_中等_1926.迷宫中离入口最近的出口

目录 1.题目2.思路3.代码实现(Java) 1.题目 给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 ‘.’ 表示)和墙(用 ‘’ 表示)。同时给你迷宫的入口 …...

开源Windows12网页版HTML源码

开源Windows12网页版HTML源码,无需安装就能用的Win12网页版来了Windows12概念版(PoweredbyPowerPoint)后深受启发,于是通过使用HTML、CSS、js等技术做了这样一个模拟板的Windows12系统,并已发布至github进行开源。 这…...

vscode中使用指定路径下的cmake

在 Visual Studio Code 中指定自定义的 CMake 路径,你可以通过以下步骤来实现: 打开你的 CMake 项目所在的文件夹,在 Visual Studio Code 中。 在项目文件夹中,创建一个名为 .vscode 的文件夹,如果它还不存在。 在 .…...

复杂度分析

文章目录 如何分析、统计算法的执行效率和资源消耗?为什么需要复杂度分析?测试结果非常依赖测试环境测试结果受数据规模的影响很大 大O复杂度表示法时间复杂度分析只关注循环次数最多的一段代码加法法则:总复杂度等于量级最大的那段代码的复杂…...

深入TIM从模式:用STM32的TI1FP1触发实现高精度PWM测量

深入解析STM32 TIM从模式:基于TI1FP1触发的高精度PWM测量技术 在嵌入式系统开发中,精确测量PWM信号的频率和占空比是许多应用场景的基础需求,从电机控制到数字电源管理,再到各类传感器信号处理,都需要可靠的测量手段。…...

全场景智能化多媒体采集平台:MediaCrawler技术架构与应用实践

全场景智能化多媒体采集平台:MediaCrawler技术架构与应用实践 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new MediaCrawler作为一款开源多媒体内容采集工具,通过智能化技术架构实现了跨…...

python沉浸式戏曲文化体验系统vue3

目录 系统架构设计前端实现方案后端Python服务沉浸式体验关键技术开发里程碑计划测试策略部署方案 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 系统架构设计 采用前后端分离架构,前端使用Vue3TypeScriptPinia构…...

优化问题存储格式对比:CBF vs MPS vs LP,哪种更适合你的场景?

优化问题存储格式深度对比:CBF、MPS与LP的技术选型指南 1. 优化问题存储格式的核心价值 在数学优化领域,数据存储格式的选择往往决定了工作流的效率和可扩展性。当处理包含混合整数变量、锥约束或大规模稀疏矩阵的复杂优化问题时,一个设计良好…...

Wechat Bot 保姆级 NodeJS 打造微信 AI 机器人私人助手,抓取最新快讯

《前端开发面试题进阶秘籍》:前端登顶-前端知识点梳理 微信 AI 机器人-人工智能技术,为用户提供服务的自动化系统:具备自然语言处理能力、理解用户的文本或语音输入,并给出相应的回复或执行特定的任务的能力。 AI 机器人能够提供…...

别再乱存Token了!Laravel+jwt-auth安全实践指南(LocalStorage vs Cookie对比)

Laraveljwt-auth安全实践:Token存储方案深度解析与防御策略 在当今前后端分离的Web开发架构中,如何安全地存储和传输身份验证Token一直是开发者面临的棘手问题。许多团队在快速迭代过程中往往忽视了Token存储环节的安全设计,导致系统暴露在XS…...

ACE-Step1.5:10分钟商用级AI音乐,4GB显存轻松跑

ACE-Step1.5:10分钟商用级AI音乐,4GB显存轻松跑 【免费下载链接】Ace-Step1.5 项目地址: https://ai.gitcode.com/hf_mirrors/ACE-Step/Ace-Step1.5 导语:ACE-Step1.5音乐生成模型的发布,首次让普通消费者只需4GB显存即可…...

实战:利用 AI 自动生成‘常见追问列表’,提前在页面底部布局搜索答案

在数字内容日益爆炸的今天,用户对于信息的获取不再满足于单向的阅读。他们总会有进一步的疑问,寻求更深层次的理解或关联信息。传统的FAQ(常见问题解答)列表,往往是人工编辑、静态固化的,难以跟上内容更新的…...

从零开始:用TI C2000 DSP(F280039)实现CAN标准帧收发,附完整代码与调试心得

从零构建TI C2000 DSP的CAN通信实战:F280039标准帧开发全解析 1. 硬件准备与环境搭建 拿到TMS320F280039 LaunchPad开发板的第一件事,就是确认CAN通信所需的硬件连接。这块板子已经贴心地集成了CAN收发器,我们只需要关注几个关键点&#xff1…...

Jetson Nano三合一串口方案对比:40pin/USB3.0/独立模块到底怎么选?

Jetson Nano三合一串口方案深度评测:硬件选型与实战指南 在嵌入式开发领域,Jetson Nano作为一款高性能边缘计算设备,其串口通信能力直接影响着与各类传感器、控制器(如STM32)的数据交互效率。面对40pin GPIO直连、USB3…...