Be a Geek有一天,走在回学校的路上,我在想:“未来是科技时代(现在也是),只是未来科技会无处不在,而如果我们对于周围的无处不在的代码一无所知的话,或许我们会成为黑客帝国中的一般人”。所以开始想着,人们会开始学习编程就像学习一门语言一样,直到有一天我看到了学习编程如同学习一门语言。这算是一个有趣的时间点,于是我开始想着像之前做最小物联网系统的那些步骤一样,写一个简单的入门。也可以补充好之前在这个最小物联网系统缺失的那些东西,给那些正在开始试图去解决编程问题的人。
我们先从身边的语言下手,也就是现在无处不在的html+javascript+css。
从html开始从html开始的原因在于我们不需要去配置一个复杂的开发环境,也许你还不知道开始环境是什么东西,而这些需要去慢慢的了解才能接触,特别是对于普通的业余爱好者来说,对于专业的选手那些自然不是问题。HTML是Web的核心语言,也算是基础的语言。
html的hello,worldHello,world是一个传统,所以在这里也遵循这个有趣的传统,我们所要做的事情事实很简单。虽然也有点hack的感觉,所以让我们新建一个文件叫"helloworld.html"。
(PS:大部分人应该都是在windows下工作的,所以你需要新建一个文本,然后重命名,或者你需要一个编辑器,在这里推荐用sublime text。破解不破解,注册不注册都不会对你的使用有太多的影响。)
- 新建文件
- 输入
hello,world
- 保存为->"helloworld.html",
- 然后双击打开这个文件。 正常情况下应该是刚好用你的默认浏览器打开。只要是一个现代的浏览器的话,应该可以看到上面显示的是"Hello,world"。
这才是最短的hello,world程序,其次呢?ruby中的会是这样子的
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- 2.0.0-p353 :001 > p "hello,world"
- "hello,world"
- => "hello,world"
- 2.0.0-p353 :002 >
等等,如果你了解过html的话,会觉得这一点都不符合语法规则,但是他工作了,没有什么比安装完Nginx后看到It works!更让人激动了。
遗憾的是,它可能无法在所有的浏览器上工作,所以我们需要去调试其中的bug。
调试hello,world我们会发现我们的代码在浏览器中变成了下面的代码,如果你和我一样用的是chrome,那么你可以右键浏览器中的空白区域,点击审查元素,就会看到下面的代码。
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
-
-
- hello,world
- tica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">
这个才是真正能在大部分浏览器上工作的代码,所以复制它到编辑器里吧。
说说hello,world我很不喜欢其中的<*>*>,但是我也没有找到别的方法来代替它们,所以这一个设计得当的语言,或许大部分人都说这算不上是一门真正的语言,不过html的原义是
超文本标记语言所以我们可以发现其中的关键词是标记——markup,也就是说html是一个markup,head是一个markup,body是一个markup。 而后,我们真正工作的代码是在body里面,至于为什么是在里面,这个问题算是太复杂了。 - 我们所学的汉语是别人创造的,我们所正在学的这门语言也是别人创造的。
- 我们在自己的语言里遵循着 他代表是个男的,她代替是个女的。
想用中文?所以我们也可以把计算机语言与现实世界的语言划上一个等号。而我们所要学习的语言,因为没有一门真正意义上的汉语语言,所以我们便觉得这些很复杂,如果我们可以用汉语代换掉上面的代码的话
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- <语言>
- <头><结束头>
- <身体>你好,世界<结束身体>
- <结束语言>
看上去很奇怪,只是因为是音译过去的原因,也许你会觉得这样会好理解一点,但是输入上可能一点儿也不方便,因为这键盘都不适合我们去输入汉字,也意味着可能你输入的会有问题。(转载保留:be a geek 1:无处不在的html)
让我们把上面的代码代替掉原来的代码然后保存,打开浏览器会看到下面的结果
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- <语言> <头><结束头> <身体>你好,世界<结束身体> <结束语言>
更不幸的结果可能是
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- <璇█> <澶�><缁撴潫澶�> <韬綋>浣犲ソ锛屼笘鐣�<缁撴潫韬綋> <缁撴潫璇█>
这是一个编码问题,对中文支持不友好。
所以我们把上面的代码改为和标记语言一样的结构
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- <语言>
- <头>头>
- <身体>你好,世界身体>
- <结束语言>
于是我们看到的结果便是 [html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
被chrome浏览器解析成什么样了?
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
以结尾的是注释,写给人看的代码,不是给机器看的,所以机器不会去理解这些代码。
但是当我们把代码改成
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
浏览器上面显示的内容就变成了
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
或许你会觉得很神奇,但是这一点儿也不神奇,虽然我们的中文语法也遵循着标记语言的标准,但是我们的浏览器不支持中文标记。
结论:
刚开始的时候不要对中文编程有太多的想法,这不是很现实的:- 现有的系统都是基于英语构建的,对中文支持不是很友好。
- 中文输入的速度在某种程度上来说没有英语快。
我们离开话题已经很远了,但是这里说的都是针对于那些不满于英语的人来说的,只有当我们可以从头构建一个中文系统的时候才是可行的,这些包括的东西有cpu,软件,硬件,而我们还需要考虑重新设计cpu的结构,在某种程度上来说会有些不现实。需要一代又一代的人的努力,只是在当前就更不现实了。忘记那些,师夷长之技以治夷。
其他html标记添加一个标题,
[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
我们便可以在浏览器的最上方看到“标题”二字,真实世界的淘宝网也包含了上面的东西,只是还包括了更多的东西,所以你也可以看懂那些我们可以看到的淘宝的标题。[html] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
-
-
- 标题
-
-
- hello,world
大标题 次标题 ... -
- 列表1
-
- 列表2
更多的东西可以在一些书籍上看到,这边所要说的只是一次简单的语言入门,其他的东西都和这些类似。
美妙之处我们简单地上手了一门不算是语言的语言,浏览器简化了这其中的大部分过程,虽然没有C和其他语言来得有专业感,但是我们试着去开始写代码了。我们可能在未来的某一篇中可能会看到类似的语言,诸如python,我们所要做的就是
[ruby] view plaincopyprint?[/url][url=https://code.csdn.net/snippets/214303/fork]
- $ python file.py
- =>hello,world
然后在终端上返回结果。只是因为在我看来学会html是有意义的,简单的上手,而后再慢慢地深入,如果一开始我们就开始去理解指针,开始去理解类。我们甚至还知道程序是怎么编译运行的时候,在这个过程中又发生了什么。虽然现在我们也没能理解这其中发生了什么,但是至少展示了
- 中文编程语言在当前意义不大,不现实,效率不高兼容性差
- 语言的语法是固定的。(ps:虽然我们也可以进行扩充,我们将会在后来支持上述的中文标记。)
- 已经开始写代码,而不是还在配置开发环境。
- 随身的工具才是最好的,最常用的code也才是实在的。
更多我们还没有试着去解决,某商店里的糖一个5块钱,小明买了3个糖,小明一共花了多少钱的问题。也就是说我们学会的是一个还不能解决实际问题的语言,于是我们还需要学点东西如javascript,css。我们可以理解为Javascript是解决问题的语言,html是前端显示,css是配置文件,这样的话,我们会在那之后学会成为一个近乎专业的程序员。我们刚学了下怎么在前端显示那些代码的行为,于是我们还需要Javascript。
|