(渣翻译,娱乐向,消遣读物,感谢有道词典,百度翻译等).
原文:传送门
ELOQUENT JAVASCRIPT Written by Marijn Haverbeke
介绍:
这是一本让计算机变成类似于’你的女仆‘一样存在的书,让它做你想让它做的事情 →_→。
现在,计算机变的越来越和螺丝刀一样平常了,但是它们依然隐藏了很多复杂的东西致使它们很难调教。另外,它们还遗留着一些性质不同的,稍微有些难以搞的问题。
人们能找到两种有意义的办法去弥补我们和它们沟通上的困难,可以用人类拥有社交和空间天赋的大脑去分析,然后交给计算机去计算---搞那些没有感情的数据然后得到结果...,这种方式接近人们对现实世界的感觉并和人们模拟的世界联系起来,还允许人们自己调整看世界的方式。这种办法对于临时的机器交互非常的.......额......好!
但那时我们还未找到一个不错的手段去使用 '指' 和 '点击' 的这种方式去和计算机交流,这也是以前交互界面的设计者没有预料到的。为了使交互方式更开放,比如让计算机去完成更长,更大,更...的任务,我们幸运的找到了一种方法,使用我们的人类的固有技能--语言:我们要让机器学会语言。
人类的语言,能让单词和短语用许多不同的姿势组合在一起,嗯,还可以是许许多多不同的姿势。编程语言,一般在语法上缺少灵活性,也就是会的姿势少...而且姿势的原理很类似。
最近这二十年来,临时计算变的越来越广泛,基于语言的,没错,就是那种某些人使用的某些方法来和我们亲爱的计算机进行交互♂的、大量的被图形界面所代替的---编程语言。但是我们亲爱的编程语言还健在,如果你认识它们的话。其中有一种特别2b的,Javascript。它几乎被搞在所有浏览器的肚子里,以至于很多人都在使用它♂。
这本书打算让你和它来个紧密接触,然后做你想让它做的事→_→;
开始吧!
不愤不启,不悱不发,举一隅,不以三隅反,则不复也 ---孔哥
除了讲解javascript,当然也要介绍一下基本的编程原则。嘛,编程的出现是艰难的,如同便秘一样。它的基本规则非常简洁,明了。但是代码会在这看似简单明了的规则上变态一般的复杂,复杂到他爹...咳咳..他的设计者都无奈的程度。就好像我自己建造了一个只有一条路的迷宫,但我他妹的居然迷路了。
在学习本书时可能会感到非常令人沮丧,如果你是一个菜鸟,你将会遇到很多知识去消化,大部分知识将会被你以某种方式联系起来,再获得额外的东西。
尽多大的努力去学习,这取决于你。当你在本书上奋斗的时候,请不要草率的得出任何超出你知识范围的结论。放轻松,你只需要紧跟步伐,适当的休息,复习一下所学到的知识,要一直确保自己读懂和理解了那些程序例子,并多做练习。学习是一件不轻松的工作,但是你所学到的任何知识都将会成为你的一部分,并让你在以后的学习中更加的轻松。
The computer programmer is a creator of universes for which he [sic] alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs.
-------------------------- Joseph Weizenbaum, Computer Power and Human Reason
(上面这段话请自行度娘....)
一段程序涵盖很多,它像是程序员所写的一段段文章,也像是一个暴力的主人强迫他的女仆去做任何他想让她做的事→_→,它是一块在计算机内存中的数据,它还可能是控制这块内存其他执行程序的动作指令。通过类比可以让我们把一段段常用程序看成一个个对象,使整个程序变的更加简洁,浅薄地看,计算机的工作就是让大量分散的模块整合起来,把所有的东西全部标上记号,我们不得不去考虑如何将那些分散的模块相互联系起来使以便于整体的操作。
计算机是许多'单蠢的'机器的集群。计算机本身只会做一些单纯的事情,它之所以这么有用是因为它们可以以一种恐怖的速度进行那些单纯的工作,一段程序可以很有才的组合一串庞大的数字只通过它们那些单纯的小动作来为了处理更复杂的事。
对我们中的一些人来说,编程像是一款让人上瘾的游戏。代码是由思想筑成的,它不用付费,它很轻巧,它在我们手中很容易成长。
但是不小心的话,代码的大小与复杂程度将会超出我们的控制,它会把搞它的人搞得头大。使我们的代码易于掌控是编程中重要的课题。当一段代码工作时,它是美丽的。编程的艺术在于管理错综复杂的技巧,优秀的代码是被‘驯服’的,它使复杂变’简单‘。
许多程序员相信那些复杂的东西会被完美的掌控在拥有良好、简明技巧的代码之下。他们已经制订了严格的规则(’最佳规范‘)来规定代码应该有的姿态,更狠的人会把打破这些规则的程序员归类为‘2b程序员’;
什么是优美代码的死敌呢?---去试着减少它对某些问题直截了当的操作和预判断,让所有不可思议且漂亮的代码成为一个禁忌!
编程技巧中的优美风景是无处不在的,它的多样性让我着迷,而且还有着大量的未知有待探索。它确实很危险,吸引着无数前来探索的程序员陷入各种各样困惑的泥潭,但这意味你应该保持冷静,继续前进。每当你以为自己学会了什么的时候,那里总会新的挑战和未知等待你去探索。
而那些拒绝探索的程序员,他们将会停滞不前,忘记曾经的乐趣,慢慢地厌倦自己。
为什么语言很重要?
在计算机诞生之初,是没有编程语言的,程序是这个样子的:
00110001 00000000 00000000
00110001 00000001 00000001
00110011 00000001 00000010
01010001 00001011 00000010
00100010 00000010 00001000
01000011 00000001 00000000
01000001 00000001 00000001
00010000 00000010 00000000
01100010 00000000 00000000
这是一段将1加到10的程序:1+2+3+4+。。。+10=55,它可运行在任何一台有简单逻辑的机器上,为了给早期的计算机程序,必须通过设置大型的开关阵列或者在纸条上打孔再提供给计算机。你能想象到这是多么无聊且低效的事吗?只是编写一段简单的程序就不得不很小心谨慎,复杂繁琐到不能忍。
当然,手动的输入这些神秘的比特位(0和1)让程序员觉得自己像一个牛到爆的魔法师一样。这很值得我们对工作满意。
每一行数字都代表着一个单独的指令,用我的文字来表示的话就是这样:
1 将数字0储存在内存位置为0的地方.
2 将数字1存储在内存位置为1的地方.
3 将内存位置1中的值存储在内存位置为2的地方.
4 将内存位置2中的值减去11
5 如果内存位置2中的值为0,则执行指令9
6 将内存位置1的值加到内存位置0上
7 将内存位置1的值加1
8 继续回到指令3
9 返回内存位置0的值
尽管这样来看比那些比特位(0和1)好读了点,但是依然乏味。嗯...如果用特定的名称代替那些指令和内存位置可能会更好。
Set “total” to 0.
Set “count” to 1.
[loop]
Set “compare” to “count”.
Subtract 11 from “compare”.
If “compare” is zero, continue at [end].
Add “count” to “total”.
Add 1 to “count”.
Continue at [loop].
[end]
Output “total”.
现在,能看到程序是如何运行了吗? 前两行给出了两块内存地址用来放它们的初始值:total 将会被用来储存结果,count 将会追踪当前我们正在用于计算的值,那行使 compare 的可能比较怪。程序回去判断 count 是否等于11并以此为做出是否终止程序的决定。因为我们的亲爱的计算机实在是太笨了,它只能测试一个数是否为0并据此做出决定。因此,它使用内存地址标记 compare 来储存 count - 11 的值并以此为依据作出反应。最后两行将 count 加到结果中去,并在 count 不是11的时候自加1。
这里有两个简单的javascript的小程序:
var total = 0, count = 1;
while (count <= 10) {
total += count;
count += 1;
}
console.log(total);
// → 55
这个版本的程序带来了更多的改进。最总要的是,我们不必在详细的写出程序的跳转步骤了,while 这个语句会帮我们搞定。它将在满足角括号条件的前提下不断地执行中括号里面的代码,给我们的条件是 count <=11 意思很明显。我们不用再去创建一个临时变量去和0比较了,编程语言的一个重要功能就是替我们干了无聊的杂活。
在程序的最后,当 while 结束后,console.log 操作将会把的结果输出在控制台(什么?什么是控制台?以后你会知道的。。。你也可以打开浏览器的开发者工具(F12),你会找到你想要的东西。)
最终,如果我们碰巧有便捷操作 range 和 sum 可以使用,我们的程序又将会变成现在这个样子:(range返回给出指定范围的数字集合,sum将给出的数字集合全部相加)
console.log(sum(range(1,10)));
//55
到了这里,我们发现同样的程序能被表示的长短不一,难于理解或者易于理解。第一版本的程序很不易读,但是到了最后基本上就变成了纯英文,log sum 的 range 的1 到 10 。
编程语言帮助编程者站在一个高的层次上组织计算机的行为,它帮我们干了杂活,提供给我们更方便的方式去编写我们的代码模块,允许我们自己定义代码块。
什么是 javascript?
javascript是在1995年的时候作为一种辅助构建网页的编程语言被应用在Netscape的浏览器中的。戳这里了解详细信息
---未完待续