2016-05-26 JustWe
你的问题在于读书太少,想的太多 —— 杨绛 昨天惊闻杨绛先生去世,突然想到了几年前看到的杨绛先生的这句话。我觉得在计算机领域理论知识更是尤为重要,现在某乎上盛行的计算机理论知识(尤指算法)无用论当真特别可悲。在这里我觉得讨论科班非科班的人都是别有用心的,重要的问题在于这些基础的训练,而不是科班非科班,我们知道很多大神都不是计算机相关专业的,但是他们的基础的深厚程度,确是很多科班出身的人无法能及的,所以说一切的问题还是要积累知识。 这学期一直在学编译原理的课程,我实实在在的感觉到了这个课程和相关内容的有趣。尤其是我在学习之前试着自己不借助任何的理论去写一个解释器,竟然也命中了不少的知识,这让 继续阅读 »
2012-04-04 Robin Wen
目录 Table of Contents {:toc} 写在前面 文/温国兵 经常听到有人在抱怨这个语言哪里哪里不好,那个语言又是如何的优秀。对于这样的牢骚,我只是一笑而过。 就我而言,语言只是工具,没有好坏之分。只要你采用相应的语言,完成对应的工作,那你的目标就完成了。我们无需抱怨这种语言的缺点,而是应该抱有接受的态度。任何语言的存在都有它的合理性,如果不合理是不会经受住时间的考验的。世间之物都具有双面性,只是看利多还是弊大。如果一个东西是十全十美的,那我毫不犹豫的告诉你,一种情况是它不存在,另一种情况是你还没发现它的缺点。 每种语言都有自己得天独厚的优势,当然缺点同时伴存。C语言是计算机界的常青藤。C语言执行效率高,用 继续阅读 »
2016-05-27 JustWe
熟悉一下Lex 和 Yacc的用法 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse tips:阅读此篇需要一定的C语言基础和正则表达式的知识 首先上一篇提到了第一步的工作是要使用 Lex 和 Yacc 进行编写,所以说第一步首先简单的学习一下 Lex & Yacc 的用法,Lex & Yacc 是一套很古老的编译生成套件,大约在上个世纪80年代就有了。但是并不过时,我们今天生成编译程序仍然能够用得上。Lex & Yacc 如果简单的概括来说,Lex 负责词法分析,就是把输入串的纯字符转化为 继续阅读 »
2016-06-01 JustWe
博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 为计算器添加一些新功能 本节代码:CalcWithTable 上次我们使用Lex & Yacc制作了一个能够处理优先级的计算器,其中的优先级的设定是通过修改文法 ,将优先级提升,这次重写这个计算器并添加一些新的功能。 先看Lex文件 ``` C %{ include "y.tab.h" include include "link_list.h" %} %% /* 这段正则和之前都有所不同 明显的增加了对于科学 继续阅读 »
2016-06-25 JustWe
几种常用算法 我们日常会用正则表达式的时候,我们会发现正则表达式用了非常精简的语法就能概括多种输入串的特征, 继续阅读 »
2017-09-22 Robert Zhang
学习一门语言的最佳方式是实践——但“Hello, World!”之类的实践太过简单,然而太复杂的实践(比如一个复杂的项目代码)又让人十分痛苦。本文提供了一个不那么简单、又不会让人过于痛苦的算法用于编程实践。同时,它还提供了若干种不同编程语言对这一算法的实现——通过比较它们,我们可以对这些语言有更好的理解。 继续阅读 »
2013-07-19 walter lee
编译型和解释型: 1.1 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件。 1.2 解释型语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译。 动态语言和静态语言(对应变量而言): 2.1 动态语言:一种在执行期间才去发现数据类型的语言, 动态语言是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。pythton 2.2 静态语言:即一种在编译时,数据类型是固定的语言。大多数静态类型定义语言强制这一点,它要求你在使用所有变量之前要声明它们的数据类型。C、C++、Java 强类型定义语言和 继续阅读 »
2016-06-01 JustWe
分析一个C语言的Lex & Yacc 程序 博客地址: http://lfkdsk.github.io 代码地址: https://github.com/lfkdsk/CodeParse 本节我们来分析一个能匹配C语言的Lex & Yacc 程序 Lex文件:http://www.lysator.liu.se/c/ANSI-C-grammar-l.html Yacc文件:http://www.lysator.liu.se/c/ANSI-C-grammar-y.html 也可以直接在我的github代码地址中进行下载。 先来分析Lex文件 ``` c D [ 继续阅读 »
2018-01-09 geekspeng
Python 是一种极少数能兼具 简单 与 功能强大 的编程语言。你将惊异于发现你正在使用的这门编程语言是如此简单,它专注于如何解决问题,而非拘泥于语法与结构。 官方对 Python 的介绍如下: Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使得它成为一种在多种领域与绝大多数平台都能进行脚本编写与应用快速开发工作的理想语言。 继续阅读 »
2014-01-09 Robin Wen
文/温国兵 Shell脚本存在的价值,就是让工作更高效。 反观整个人类社会的发展,不管是奴隶社会,还是工业时代,都会出现各种各样的工具。比如为了更快的砍伐一颗树,有了锯子和斧头;为了更快的出行,有了各式各样的代步工具。直到现在我们正处的科技时代,不管是IT技术,还是新式交互,都是避免重复性的工作。编程语言为什么会出现,归根结底就是满足人类的惰性。正因为有了编程语言,有了计算机,人类的发展才得以如此得迅猛,很难想象这个世界缺少计算机会成什么样。为了代替重复性的工作,脚本语言才得以长远发展,比如Shell脚本等等。 脚本语言最大的特点就是边解释边执行,无需编译和链接。这样带来的好处就是很灵活,但不好的地方就是每次运行脚本都会带来较 继续阅读 »