美文网首页
编程中很少思考的问题(一)

编程中很少思考的问题(一)

作者: 纸简书生 | 来源:发表于2017-01-13 10:27 被阅读83次

对编程语言的基本理解

编程语言和人类语言有许多相似之处,就是大家遵从一种公认的约定,通过这种约定达到传递信息的目的。对比人类语言包含的主要要素有:词汇表,语法。

这里自己弄了一份对比表。大致能表达这种意思。

分类 词汇表 语法
人类语言 动词,名词... 主谓宾...
编程语言 数据类型,操作符... 编程规则:比如末尾加分号...

来看一个简单的例子:2+3-1
词汇表包含如下:

INTEGER:0|[1-9][0-9]*

PLUS:+

MINUS:-

这里用正则表达式定义整数

语法通常用BNF格式定义

expression := term operation term

operation := PLUS | MINUS

term := INTEGER | expression

通过上面这样我们差不多就约定了一种交流方式。通过约定这种方式,2+3-1经过解析之后就能被计算机理解了。

对于平时使用的编程语言,基本的设计思路其实就是这样。只不过在词汇表及语法两部分丰富更多。这样就会有一个庞大的组合。

解释器和编译器的区别

  • 解释器是一条一条的解释执行源语言。比如php,postscritp,javascript就是典型的解释性语言。
  • 编译器是把源代码整个编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。比如C语言代码被编译成二进制代码(exe程序),在windows平台上执行。

他们之间的对比图


浏览器的如何工作

把浏览器和App对应起来看。他们做的事情大部分都是获取数据,然后通过特定的方式展示数据并和用户交互。而浏览器和App最大的区别就是:浏览器是为各式各样的应用程序服务的,而通常情况下App只是为单独的应用程序服务。

浏览器主要构成:



最为重要的是其中的:

  • 浏览器引擎- 用来查询及操作渲染引擎的接口
  • 渲染引擎- 用来显示请求的内容,例如,如果请求内容为html,它负责解析html及css,并将解析后的结果显示出来

所涉及的东西确实有点多,
渲染引擎主流程如下:


下面这几段来至翻译:

渲染引擎开始解析html,并将标签转化为内容树中的dom节点。接着,它解析外部CSS文件及style标签中的样式信息。这些样式信息以及html中的可见性指令将被用来构建另一棵树——render树。

Render树由一些包含有颜色和大小等属性的矩形组成,它们将被按照正确的顺序显示到屏幕上。

Render树构建好了之后,将会执行布局过程,它将确定每个节点在屏幕上的确切坐标。再下一步就是绘制,即遍历render树,并使用UI后端层绘制每个节点。

值得注意的是,这个过程是逐步完成的,为了更好的用户体验,渲染引擎将会尽可能早的将内容呈现到屏幕上,并不会等到所有的html都解析完成之后再去构建和布局render树。它是解析完一部分内容就显示一部分内容,同时,可能还在通过网络下载其余内容。

webkit解析主流程:


这里有篇非常不错的英文文档。
How Browsers Work: Behind the scenes of modern web browsers

未完待续...

相关文章

  • 编程中很少思考的问题(一)

    对编程语言的基本理解 编程语言和人类语言有许多相似之处,就是大家遵从一种公认的约定,通过这种约定达到传递信息的目的...

  • 编程中遇到的问题与思考

    网页的生成,是由前台生成还是由后台生成,各有什么优缺点? javascript 以及flask中对于json的处理...

  • JavaScript 函数式编程初窥

    编程范式 编程范式是:解决编程中的问题的过程中使用到的一种模式,体现在思考问题的方式和代码风格上。这点很像语言,语...

  • 编程中思考

    前言 前不久在微博上关注一个ID为垠的微博用户(后来百科之后才发现又是国内程序员中的牛人之一,就是池大大文章经常提...

  • 很少思考

  • 2019.2.22如果我的生命还有一个月

    我们国家的人很少思考死亡,我也很少考虑这个问题,离我最近的是外公、爷爷、奶奶的去世,对自己却是很少思考。 依稀记得...

  • 少儿学习编程的八大好处!让您的孩子不再沉迷游戏

    1. 强化逻辑思考力 编程学习过程中最重要的环节就是把大问题不断分割成小问题的过程。在这个过程中,孩子必须去思考如...

  • 花钱买时间真的划算吗

    以前我从来没有思考过这个问题,甚至可以说很少思考问题,很多东西只是看了,做了,唯独很少去思考。在李笑来老师的《财富...

  • 面向工资编程

    经常看我专栏的朋友知道,我很少写跟编程无关的话题。 很多人问过我一个问题,知道面向过程编程、面向对象编程,但你的“...

  • 2018-07-10 PYTHON第二天

    第一:关于编程 编程:编程就是编写程序,通过程序自动化的操作,编写程序,解决现实生活中的问题 解决生活中的问题。 ...

网友评论

      本文标题:编程中很少思考的问题(一)

      本文链接:https://www.haomeiwen.com/subject/vdzjbttx.html