英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料
JavaScript
当我还是一个初级程序员时,我想了解全部用到的语言的特点,我写程序时会尝试着去应用所有的特性。我觉得这是一种炫耀的好方法,而我也确实得到了许多的荣耀,因为我对每个特性都非常的;了解,每个人的问题我都能解答。
最终,我发现其中一些功能的麻烦比它们的价值还大。其中一些特性是因为标准很不完整的原因,因此可能会导致可移植性问题;一些特性会导致产生很难理解和修改的代码;一些特性使我们的代码风格过于复杂而且很容易出错;还有一些特性就是设计的错误。
大多数编程语言都有精华部分和鸡肋部分。我发现如果只使用精华部分而避免使用鸡肋部分,这样可以使我成为一名更好的程序员。毕竟,用糟糕的部件怎么可以建出好的东西呢?
标准委员会想要移除一门语言中的缺陷部分,这几乎是不可能的,因为这样做会损害所有依赖于那部分的程序。除了在已存在的已存在的一大堆缺陷上堆积更多的特性,他们通常无能为力。并且新旧特性并不总是能和谐共处。可能从而产生出更多的部分。
但是你有权利定义自己的子集。你完全可以基于精华部分去编写更好的程序。
JavaScript中的鸡肋部分超出了预料。在短到令人吃惊的时间里,它从存在发展到全球采用。它从来没有在实验室里被试用和打磨。当它还非常粗糙时,它就被直接集成到网景的Navigator2浏览器中。随着Java的小应用程序的失败,JavaScript变成了默认的网页语言。作为一门编程语言,JavaScript的流行几乎完全不受它的质量的影响。
幸运的是,JavaScript有一些非常好的部分。在JavaScript中,美丽、优雅、表达能力强的语言特性就像一些好的东西和不好的东西混在一起。JavaScript最本质的部分常常隐藏起来,以至于多年来对它的的主流观点是:JavaScript就是一个丑陋的、没用的东西。本书的目的就是要提示JavaScript中的精华,让大家知道这是一种优秀的动态编程语言。JavaScript就像是一块大理石,我要切除那些不好的特性,直到这门语言的本质自我显露出来。我相信我精雕细琢出来的优秀的一小部分大大地优于这门语言的整体。它更可靠、更易读、更易于维护。
这本书不会试图全面描述这种语言。相反,它将专注于好的方面,偶尔发出警告以避免坏的方面。这里将被描述的那部分可用于构造可靠的、易读取的程序。通过只关注好的部分,我们可以减少学习时间,增强健壮性,并且还能拯救一些东西。
或许只学习精华部分的最大的好处是你可以避免忘记坏的部分。消除坏的模式是非常困难的。这是一项痛苦的任务,我们大多数人都极不情愿地面对。有时,为了使语言更好地为学生服务,对它们进行了子类设置。但在本例中,我将JavaScript设置为子集,以便更好地为专业人员服务。
为什么要使用JavaScript?
JavaScript是一种重要的语言,因为它是web浏览器的语言。它与浏览器的关联使其成为世界上最流行的编程语言之一。同时,它也是世界上最受轻视的编程语言之一。浏览器的API、文档对象模型相当糟糕,导致JavaScript受到了不公平的指责。在任何语言中处理DOM都是一件痛苦的事情。它的规范制定地很拙劣,实现也不一致。这本书对DOM只作了非常浅显的介绍。我认为写一本关于DOM的好部分的书是极具挑战性的。
JavaScript是最受轻视的语言,因为它不是所谓的主流语言。如果你擅长某些主流语言,但却在在一个只支持JavaScript的环境中编程,那么你就不得不使用JavaScript,这很烦人。在这种情况下,大多数人甚至觉得不需要去学好JavaScript,但结果他们会惊讶地发现JavaScript跟他们宁愿使用的主流语言有很大不同,而且这些不同点极为关键。
JavaScript的神奇之处在于,它可以在不太了解该语言,甚至不太了解编程的情况下完成工作。它是一种具有巨大表达能力的语言。如果你知道自己在做什么,那就更好了。编程是一项困难的工作。这绝不能在无知中进行。
分析JavaScript
JavaScript建立在一些非常好的想法和少数非常糟糕的想法之上。
非常非常好的想法包括函数、弱类型、动态对象和一个富有表现力的对象字面量表示法。那些坏的想法包括基于全局变量的编程模型。
JavaScript的函数是基于词法作用域的顶级对象。JavaScript是第一个成为主流的lambda语言。实际上相对Java而言,JavaScript与Lisp和Scheme有更多的共同点。它是披着C外衣的lisp。这使得JavaScript成为一种非常强大的语言。
当今大多数编程语言都要求强类型。其原因在于强类型允许编译器在编译时就检测错误。我们发现并修复错误的速度越快,我们付出的代价就越小。JavaScript是一种弱类型的语言,因此JavaScript编译器无法检测和修改错误。这可能让从强类型语言转向JavaScript的开发人员感到惊恐。但事实证明,强类型并不会让你的测试工作变得轻松。并且我在工作中发现,强类型检查发现的错误并不是令我头痛的错误。另一方面,我发现弱类型是自由的。我不需要建立复杂的类层次结构。而且我从来不用强制转换或与类型系统斗争来获得我想要的行为。
JavaScript有一个非常强大的对象文字表示法。对象可以简单地通过列出它们的组件来创建。这种表示法是JSON(流行的数据交换格式)的灵感来源。
JavaScript中一个有争议的特性是原型继承。JavaScript有一个无类的对象系统,其中对象直接从其他对象继承属性。这确实很强大,但是对于受过传统培训的程序员来说原型继承是一个陌生的概念。如果您试图将经典的设计模式直接应用到JavaScript中,您将会受挫。但如果您学会使用JavaScript的原型特性,您的努力将得到回报。
JavaScript因其关键思想的选择而饱受诟病。不过,在很大程度上,这些选择是好的,尽管有些不同寻常。但是有一个选择特别糟糕:JavaScript依赖全局变量进行连接。所有编译单元的所有顶层变量都放在一个称为全局对象的公共名称空间中。这是一件坏事,因为全局变量是邪恶的,并且在JavaScript中它们是最基本的。幸运的是,正如我们将看到的,JavaScript还为我们提供了解决这个问题的工具。
在一些情况下,我们不能忽视坏的部分。另外还有一些不可避免的糟粕,当涉及这些部分时,我们将它们指出来。它们也将会被总结在附录a中。但我们将成功避免这本书中最坏的部分,另外一些会被总结在附录b中。如果你想了解更多关于坏的部分和如何使用它们,请参阅其他JavaScript的书。
定义JavaScript(又名JScript)的标准是ECMAScript编程语言的第三版。本书描述的语言是ECMAScript的一个适当子集。这本书没有描述全部语言,因为它漏掉了不好的部分。这里的处理并不全面。它避免了边缘情况。你也应该这么做。危险和痛苦就在边缘。
一个JavaScript解析器,它可以分析JavaScript程序并报告它的缺点。JSLint提供了JavaScript开发中通常缺乏的严格性。它能让你确信你的程序只包含优秀的部分。
JavaScript是一种有许多差异的语言。它包含许多错误和尖锐的边角,所以您可能会想,“为什么我应该使用JavaScript?”,有两个答案,首先,你没有选择,Web已经成为应用程序开发的一个重要平台,而JavaScript是唯一一门所有浏览器都可以识别的语言。不幸的是,Java在这种环境中失败了,否则对想用强类型语言的人来说就有其他选择了。但是Java确实失败了,而JavaScript正在蓬勃发展,这恰恰说明了JavaScript确实有过人之处。
另一个答案是,尽管JavaScript有缺陷,但它确实很优秀。它是轻量级的,富有表现力。一旦你掌握了它的窍门,就会发现函数式编程变得非常有趣。
但是为了更好地使用这门语言,您必须充分了解它的局限性。我要强烈地提醒 那些人,不要因此而气馁。这门语言的优秀部分足以弥补它的不足。
风格
计算机程序是人类制造的最复杂的东西。程序是由大量的部件组成的,这些部件以函数、语句和表达式的形式表示,这些函数、语句和表达式按照一定的顺序排列,并且实际上必须没有错误。运行时行为与实现它的程序几乎没有相似之处。在软件产品生存周期中,通常要修改它们。将一个正确的程序转换成另一个也正确不过风格有差别的程序的过程是极具挑战性的。
好的程序拥有一个预见性的结构,它会预见到未来所需要的可能修改的地方,但不会因为它成为过度的负担。优秀的程序员也有一种清晰的表达方式。如果一个程序很好,那么我们就能更加容易地去理解它,从而可以成功地修改它。
所有编程语言都存在这些问题,JavaScript尤其如此。JavaScript的弱类型和过度的容错几乎不能在编译时保证程序的质量,因此为了弥补这一点,我们应该严格遵守规则。
JavaScript包含大量薄弱或有问题的特性,这些特性可能会妨碍我们写出优秀的程序。我们显然应该避免JavaScript中那些最糟糕的特性。令人惊讶的是,也许我们还应该避免那些经常有用但偶尔危险的特性。这些特性让人既爱又恨,然而通过避免它们,可以避免大量潜在的错误。
对一个组织来说,软件的长期价值和代码库的质量成正比的。在程序的生命周期中,会有很多人的检测,使用和修改。如果一个程序能够清楚地传达它的结构和特征,那么在不远的将来,当它被修改时,它就不太可能崩溃。
JavaScript代码通常直接发送给公众。它应该始终具有出版质量。整洁是会带来价值的。通过清晰一致的写作风格,你的程序变得更容易阅读。
程序员可以不断地讨论什么是好的风格。大多数程序员都坚持他们所习惯的东西,例如他们在学校或者在他们首份工作时学到的最普遍的风格。他们中的一些人拿到高额薪水的工作但却没有一点代码风格的意识。这难道不证明了风格不重要吗?即使风格不重要,难道一种风格不比其他任何一种好吗?
事实证明,风格在编程中很重要,就像文字风格对于写作重要一样。它有助于更好地阅读。
JavaScript程序的动态行为分析
摘要
JavaScript编程语言是广泛用于web编程的语言,也越来越多地用于特定目的的计算。因此,如何提高正确性、安全性和JavaScript应用程序的性能就成为了推动类型系统分析,静态分析和编译技术研究等领域发展的动力之一。许多这些技术都旨在研究在一些最具有动态特性的语言,然而很少人会清楚的知道程序员是如何利用语言的这些特性。在本文中,我们将研究一些广泛使用JavaScript 程序的动态行为,并分析如何以及为什么使用这些动态特性。我们将根据这些JavaScript程序得出具体的动态程度,并与目前参考文献中使用的假定数据和通用工业标准中的数据进行比较。
关键词:动态行为;执行跟踪;动态指标;程序分析;JavaScript
1、介绍
JavaScript是一种面向对象的语言,它可以通过客户端的可执行代码让用户实现和网站的交互,它是在1995年由Netscape公司的Brendan Eich设计出的。它不同于Java、C#或Smalltalk这些传统语言,它不具有类,也不鼓励封装,甚至是结构化编程。与之对应的是,JavaScript十分强调编程语言的灵活性。JavaScript的成功是不可否认的。据相关数据显示,当前最流行的100个网站中有97个都使用了它.同时,JavaScript语言还成为了许多办公应用、浏览器应用以及开发环境等的通用计算平台。它一直被誉为互联网界的“汇编语言”,和Java 以及Scheme语言类似,JavaScript需要代码生成工具的解释。由于这种成功,
JavaScript的已经赢得了学术界的重视和尊重,而研究人员也开始将目光都集中在三个主要问题:安全性,正确性和性能。安全性可以说是JavaScript所要解决的最紧迫的问题:到目前为止,已经发生了一些利用语言的动态性能进行恶意攻击的案例(主要是能够利用JavaScript访问和修改共享文件的特点,通过eval函数植入恶意代码)。研究人员已经提出一些解决方法,比如将静态分析和实时监控结合起来,以防御一些已知的攻击。另一个研究方向则致力于提供更好的检测工具,以帮助开发者尽早的发现程序中的漏洞。作为一种弱类型语言,JavaScript 没有类型声明,并且只有再被访问和调用时才进行实时监控,因此为JavaScript 提供静态类型的系统也就成为了很自然的事情。最后,在被忽视了很长时间以后, JavaScript实现很大的进步,目前最先进的即时编译技术得到了应用。
2、动机及相关工作
我们最初研究JavaScript的动力在于评估一个静态类型的系统是否能成功的验证现有的JavaScript程序。其他动态语言,如Scheme语言就成功的逐步应用到了类型系统中,但是其他方面的进展就相对有些停滞,比如缺乏有关面向对象的扩展的类型检查(Scheme中用宏来实现)。对于JavaScript,Anderson等人提出了一种具有明确类型和潜在类型的类型系统,而Heidegger和Thiemann等人则把他们之前的工作向前推进了一步,加入了一些最新的类型,Furr等人则为DRuby提出了一种相关的系统。所有这些类型系统都可以接受目标语言的一些简单的简化,但是他们要依靠相当类似假设。举例来说,Thiemann写道:“通常情况下,在初始化后几不会再定义其他的类型了,而且对象的类型也基本不会发生变化。”常见的关于JavaScript的
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[427037],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。