演进和使用的JavaScript是早在1995年开发的一种语言,真的是刚刚起步。

网景公司在1995年四月聘请Brendan Eich ,他被告知,他有10天时间创造并制作了一种将在Netscape的浏览器中运行,以原型为工作方式的编程语言。那时候,Web创新的步伐是激烈的,由于微软突然使互联网的焦点集中在它即将发布的Windows 95操作系统作为对新兴Netscape的浏览器和服务器产品的系统发布的回应。

当时网景得到如此多的来自微软的关注,因为网景考虑将Web浏览器和服务器作为一个分布式操作系统一种新形式,而不仅仅是一个单一的应用程序的。自从Mosaic在1993年首次亮相,网络便成为可移植的,跨越Windows,Macintosh和Unix,并给了软件开发者他们可以为所有这些环境中开发应用程序的希望。

但是,仅凭HTML本身去定义一个新的应用程序开发环境或操作系统,是远远不够。为了巩固便携式操作系统的概念,网络和网景公司需要便携式的编程语言。

Sun公司的Java语言似乎是便携式重量级应用的解决方案。一种产生的字节代码并运行在Java虚拟机中的编译语言,Java支持丰富的来自C++的面向对象的模式并且似乎能够能够实现和Ç++和C相似的性能.Java 是Web对Microsoft的Visual C + +的答案。

走进javascript

众所周知Java是一个丰富的,复杂的,编译的,专门针对专业程序员的语言。Netscape和其他人一样都想要一个轻量级的解释语言作为对java的补充。这种语言需要呼应和微软的Visual Basic和解释和相像,方便嵌入在网页中适合非科班出身的程序员。根据艾希的回忆:

回到1995年的5月,如果我在JavaScript中加入了类,我会被告知这是太像Java或者是JavaScript是在与Java竞争…

我根据市场营销原因,使它看起来很像Java,但不能使它太像java,javascript需要是一个愚蠢的小弟弟语言。

鉴于上面所有这些要求,约束,和局限性,布兰登 艾希所有的时间非常紧迫,他必须制作了一个基于原型工作的,既能够满足太阳公司的需求又能够赶上Netscape的2.0 B测试版的发布时间表。

技术的启示

虽然对大多数程序员来说日程和约束可能已经不可能反生的问题,布兰登 艾希建设新的编程语言已经有很长的历史了。从他作为一个学生开始在伊利诺伊大学里的经验,在那里他建立语言只是进行语法实验。在硅谷图形(美国计算机公司),布兰登 艾希创造出来的语言,可以用来构建网络监控工具的扩展。

很显然,对于布兰登 艾希来说建造一个 “再一次” 语言 并不是这困难的部分,对布兰登 艾希来说这最困难的部分是建造一个复杂的,强大的语言,但却被禁止使用保留用于Java的面向对象的语法。他想在JavaScript中嵌入先进的功能,并且不涉及java语言的语法。所以导致这门语言最初看起来似乎很简单,重量轻,尚未成熟的程序员将能够很轻易的利用其潜在的能力。

像许多其他语言一样,JavaScript的基本语法来自C语言,包括大括号,分号和保留字。JavaScript是轻便的,和具备简单的语义和更好的动态内存特性的友好的C语言版本。因为一个典型的网页的生命周期的持续时间从几秒钟到几分钟不等,JavaScript可以采取一种非常简单的方法,去实现并发性和内存管理。

布兰登 艾希建立了一个简化的对象模型,组合结构来自C语言,模式来自Smalltalk和LISP提供的数据和代码之间的对称性。超卡事件模型启发在HTML文档中添加事件的模式。面向对象的模式是可行的,但通过用原型在运行时的语义(作为Self的代替),而不是编译器支持的类语法(如在Java和C++中)。

一鸣惊人?

几乎所有成功的编程语言需要一个2.0版本,在他们正真大步向前发展之前,但但现在为止,我们还没有看到,也可能永远不会看到一个JavaScript2.0。没有什么能建造在10天时间就是完美的,可是,一旦某些东西被释放到野外,错误或不完善的地方迅速成为必不可少的特色,并且是几乎不可能改变。根据布兰登 艾希回忆:

在开始时为了生存,JavaScript拥有的足够的好东西。如果你回想在20世纪90年代,JavaScript是被人们所诅咒的,因为它主要用于在您的浏览器的底部状态栏的滚动消息或闪烁图像。随着JavaScript获得一些进化方面的改进[在20世纪90年代后期]通过[ECMA]标准的过程。在2004年和2005年,它变得速度足够够快,足够够好去催生Web 2.0革命。

尽管JavaScript的最初版本可能并不完美,但它首次采用了比较简单的应用程序,所以使它有时间在幕后来慢慢演变,并解决其早期的弱点。此外,由于JavaScript的丰富对其其运行时的支持,而不是在它的语言的语法,提高JavaScript实现,而无需改变现有的JavaScript程序的语法是比较简单的。

当今时代

当Ajax革命开始时,JAVASCRIPT已经在浏览器存在将近10年,移动的JavaScript成为主流应用的重要组成部分的发展。微软触发Ajax在Web接口的统治地位,通过加入XMLHttpRequest的功能在它的Internet Explorer浏览器。其他浏览器迅速加入了类似的功能,允许JavaScript从服务器检索数据和更新HTML文档,而不需要一整页的请求 - 响应周期。有了这个创新,高度互动的用户界面功能被搬进创建类似桌面的经验日益丰富的应用程序,如浏览器谷歌邮件和谷歌地图。

由于每一页所需的代码和数据量的增加,它暴露了JavaScript基于浏览器实现运行时的弱点。不在是运行每分钟左右就重新启动JavaScript,同一个页面会在浏览器中停留数分钟伴随着巨大的,动态的在内存中的数据元素和几乎连续的后台与服务器通信。谷歌建立了自己的Chrome浏览器的V8 JavaScript解释器,把浏览器市场上的通知,绝不会容忍低性能的JavaScript实现。市场也迅速跟进和改进的JavaScript解释器全线表现。

例如Node.js这样的项目,使人们有可能使用JavaScript的语言构建Web应用程序的服务器元素。因为JavaScript已经从一开始急就是基于事件的,建设管理的复杂性,多线程不使用JavaScript的高度可扩展的Web应用程序变得很自然的。

随着HTML5的出现,这是完全有可能,JavaScript将很快成为主导移动和桌面应用程序的编程语言。演进和使用的JavaScript是真的才刚刚开始,这是令人印象深刻的10天,早在1995年开发的一种语言。

要查看我对艾希的采访,访问这里http://youtu.be/IPxQ9kEaF8c。

javascript是一门多线程的语言_Javascript:10天设计一门语言相关推荐

  1. c语言程序设计 在线课程设计,c语言程序设计 本科课程设计

    <c语言程序设计 本科课程设计>由会员分享,可在线阅读,更多相关<c语言程序设计 本科课程设计(11页珍藏版)>请在人人文库网上搜索. 1.河北农业大学本 科 课 程 设 计课 ...

  2. c语言一维数组教学设计,C语言教学中一维数组教学设计.doc

    C语言教学中一维数组教学设计 C语言教学中一维数组教学设计 [摘 要] 数组是C语言中非常重要的概念,通常学生在初次接触到这一概念时感到很抽象.本文通过生活中常常接触到的超市储物柜与数组进行类比,将数 ...

  3. c语言游戏菜单栏界面设计,C语言课程设计-精美游戏目录选择界面.doc

    计算机技术基础课程设计 C语言 设计报告 题目:精美游戏目录选择界面演示 学院:化学工程学院 专业:制药工程专业 班级:050607 姓名:徐成 指导教师:顾煜新 设计日期:2006年12月14日→2 ...

  4. c语言中函数教学设计,C语言程序设计 函数 C教学设计7单元V1.0.doc

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第七单元 函数 授课教师 宋铁桥 ...

  5. c语言指针课堂教学设计,C语言程序设计 指针 C教学设计8单元V1.0.doc

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第八单元 指针 授课教师 宋铁桥 ...

  6. c语言储存10的500,c语言程序基础练习题500道

    1.以下四个选项集的非c语言中介语选项为(a): A) define B) gect C) include D) while IF char scanf go Type printf case pow ...

  7. c语言循环10次代码,C语言教学(七-上)for循环

    原标题:C语言教学(七-上)for循环 今天带大家了解C语言for循环的用法,我们知道计算机对每行代码的处理只有一次,如果我们需要重复进行某一步骤的时候,那不是需要重复敲这一段代码吗,要是需要重复一千 ...

  8. fir滤波器算法c语言程序,FIR滤波器设计C语言程序

    实际可运行的FIR滤波器系数设计的C语言程序 #include"math.h" #include"stdio.h" /*n:滤波器的阶数,n是奇数时可用来设计各 ...

  9. c语言if语句教学设计,c语言if语句教学设计.pdf

    学习必备 欢迎下载 C 语言if 语句的应用教学设计 授课时间 45 分钟 课题(章节) 第4 章第3 节<if 语句> 教学目的与要求: 1.让学生了解if 语句的二种结构语句格式. 2 ...

最新文章

  1. spring cloud config将配置存储在数据库中
  2. c#语言程序设计实例,C#语言程序设计用.ppt
  3. ubuntu vasp 安裝_VASP安装过程(64位)
  4. 揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活
  5. audio标签不展示_设计标签式PPT:排版简洁明了,强烈信息秩序感,你想试试吗?...
  6. OpenGL ES之GLKit的使用功能和API说明
  7. shiro学习(19): 拦截器
  8. hdu 3746 kmp求循环节 下标从1开始
  9. 三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)
  10. 觉得Win 10不如WP好?微软确认可以降级
  11. 福禄克光纤OTDR测试原理
  12. 咸鱼Maya笔记—NURBS双轨成型法
  13. GPT转换MBR,MBR转换GPT
  14. ppt流程图箭头分叉_职场PPT实战:流程图只能箭头方框?设计师教你新思路
  15. 个税汇算清缴是怎么算的,为何有人补税几百,有人退税几千?
  16. 解决Invalid HTTP_HOST header: 'xxx.xx.xxx.xxx:8000'. You may need to add 'xxx.xx' to ALLOWED_HOSTS问题
  17. VS2008编译时error C2248处理方法
  18. 解决删除Volume报错的问题(二)
  19. 新浪大赚,阿里吃亏------剖析阿里巴巴入股新浪微博
  20. 中心频率、带内波动、带外抑制、矩形系数,dB是什么意思?

热门文章

  1. 洛谷3171 网络吞吐量(网络流)
  2. 如何给 mongodb 设置密码
  3. C# 匿名委托、匿名方法、匿名对象、Lambda表达式
  4. PHP - 使用 Pear 进行安装和卸载包
  5. 训练(线段树+树状数组) poj——3264
  6. 微信小程序——操作数据库
  7. SmartGit 过期解决方案之 非商业版本安装使用
  8. 浅谈vue $mount()
  9. 【linux】 -设备名称与文件目录
  10. node --- 使用nrm改变npm的源