(一)什么是javaScript?

71 阅读6分钟

序言

温故而知新 ----《论语·为政》

javaScript重启计划

什么是javaScript?

根据MDN 对javaScript的定义:

 

JavaScript是一种脚本程序,一门编程语言。JavaScript是轻量级解释型语言。通常,以英文文本为基本的计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的一连串数字的格式,然后放入运行。这种程序也叫做编译语言。未经编译就可运行的程序,通常称之为脚本程序或解释性语言。然而浏览器接受到JavaScript代码,并以代码自身的文本格式运行它。技术上,几乎所有 JavaScript 转换器都运用了一种叫做即时编译(just-in-time compiling)的技术;当 JavaScript 源代码被执行时,它会被编译成二进制的格式,使代码运行速度更快。尽管如此,JavaScript 仍然是一门解释型语言,因为编译过程发生在代码运行中,而非之前。

 

 how does javascript work

 

 

什么是程序?

从上面的定义中我们知道了JavaScript是一种脚本程序,一门编程语言。不知道有多少同学有问过自己这个问题。什么是程序?程序究竟是什么?怀着这个疑问。我查阅了很多书籍。对程序的解释都不太一样。下面我将从两个角度去解释一下什么是程序。并且开展我们的学习路线。

 

 

  1.  从定义的角度(摘录自维基百科)

计算机程序(英语:Computer Program)是指一组指示计算机或其他具有消息处理能力设备每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序的源代码就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序源代码),用于指导懂汉语(编辑器)同时也会烹饪手法(体系结构)的人来做这道菜(程序)。

 

  1.  从程序 = 算法 + 数据结构的角度

程序 = 算法 + 数据结构 是由N.Wirth(沃斯)提出来的。

什么是算法?

算法指的是解决特定问题的步骤和方法。

什么是数据结构?

数据结构指的是数据与数据之间的逻辑关系

栈:一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

 

队列:与上相反,一种遵循先进先出 (FIFO / First In First Out) 原则的一组有序的项;队列在尾部添加新元素,并从头部移除元素。最新添加的元素必须排在队列的末尾。

 

链表:存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的;每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(指针/链接)组成。

 

集合:由一组无序且唯一(即不能重复)的项组成;这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中。

 

字典:以 [键,值] 对为数据形态的数据结构,其中键名用来查询特定元素,类似于 Javascript 中的Object。

 

散列:根据关键码值(Key value)直接进行访问的数据结构;它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表。

 

树:由 n(n>=1)个有限节点组成一个具有层次关系的集合;把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的,基本呈一对多关系,树也可以看做是图的特殊形式。

 

图:图是网络结构的抽象模型;图是一组由边连接的节点(顶点);任何二元关系都可以用图来表示,常见的比如:道路图、关系图,呈多对多关系。

 

 

本章目的

本章说了这么多和JavaScript看似不太相关的内容,其实最主要的是想告诉,作为大多数半路出家学习前端来说。这些东西正是我们的薄弱项。计算机基础,就拿我自身学习经验来说,从我入门前端到现在的开发经验,在平时的工作当中你跟我说什么数据结构,说什么算法,这个功能我实现不就好了。正是因为一直这样,所以自己的前端技能,知识素养才一直停滞不前。算法和数据结构还有一个原因,说这章的原因是我想说一下我的学习方法。我一般学习的时候,经常会带着问题学习,后面的内容基本上也都是先问问题,然后去学习,这样带着问题去学习,才能有所收获。当我出现了重新整理学习JavaScript这个想法的时候,就一直在问自己,什么是JavaScript,JavaScript的前世今生等,最后我探究到了程序这一层,其实还可以继续按照上面的思路往下面整理的。就会发现自己知道的很少很少。比如当我说到程序=算法+数据结构的时候,什么是数据结构?数据结构是指相互之间存在一种或多种特定关系的数据元素的集。这么一问一查,你就会发现你又多了一个新的陌生名称,数据元素又是什么鬼?这时你又会发现数据项。我其实计算机基础也都忘光了,可能跟我是一个学渣也有关系。我能看到的理解到了也就那么一点。我只有多问自己几个为什么,什么是,我才能一层一层的往下探究。我打算在重新系统的整理前端知识后,自己能够对这些有一些新的认识。并且用JavaScript把上面的数据结构实现出来。完善这方面的知识体系。

 

 

总结

数据结构和算法思想是程序的灵魂

 

 

数据结构和算法虽然看上去很枯燥,但它们其实是计算机科学的核心技术和原理。著名的瑞士计算机科学家沃思(N.Wirth)教授曾提出:

 

 

算法 + 数据结构 = 程序

 

 

编程的本质是算法,而算法的本质是解决问题。程序设计的实质是对实际问题设计/选择好的数据结构和好的算法。

 

 

对任何专业技术人员来说,理解数据结构和算法都非常重要。Java、Python、C/C++、JavaScript、PHP、R语言等各种编程语言不断更新迭代,但经典的数据结构和算法思想却历久弥新,指导着程序员们针对问题的特点和数据的规模设计出合适的解决方案。