想想如何用程序来写文章—哪些年的努力!
2014-04-08 15:43
134 查看
很多程序员都愿意用程序(或者代码片段)来表达某些文字或者自己的想法, http://www.gkb120.net这种行为,总结一下,其实就是用程序写文章。那是不是所有的文章都用程序来写呢?这个问题就比较复杂了。
程序的定义很简单,一般的程序设计语言的基本元素都是函数(在部分语言里还有子程序的概念,是同一个概念),函数的定义是有零个到多个输入,有零个(对于子程序)或者一个输出的若干有效指令,按照一定算法组合规则和语法规则而成的集合。
程序的定义是如此的简洁,所以,程序是明确的,有逻辑的。
而文章的定义我至今没有找到,因为我也不是学中文的,如果真要给出一个非常精确的定义是很困难的。首先,文体有很多种,甚至还有像诗歌一类的奇怪的文体,这对于用程序来表达文章的内容就很困难了(当然那,也不是绝对,比如perl语言就可以用来写诗),还有记叙文、议论文、说明文……用程序写小说那就更困难了……
当然,可以回归原始,从语言的角度去思考如何用有限的程序语言来书写更多的文章,当然,肯定不是全部,因为从数学的角度上说,程序符号属于文字的一个子集,也许它的组合同样是无限多的,但是肯定无法表达所有类型的文字的组合,就像数轴上有理数比无理数要少是一个道理,虽然他们都是无限多。
程序的特性可以归结为这么几类:
1、语法特性:支持的运算符、表达式、数据类型的种类等等,这些特性在文字中的表现其实是构词能力,比如C语言里有指针,可以翻译成指向一类的词,Java里有对象,可以翻译成所属关系、集合关系。
2、算法特性:这个特性有两部分,一部分是关键字的效果,通常一个正常的程序设计语言都会支持顺序执行、分支执行、循环执行这至少三种运行类型,这些是体现在关键字上,这些特性表现在文章的逻辑结构上,但对于短的文章,这种特性的表现不明显,并且,实际上大多数文章都是“顺序阅读”的;另一部分是程序本身的算法特性,比如是否支持递归,是否无限递归(比如伟大的lisp),以及解释性执行等,这些都在实际应用中不明确,所以很难说是怎么样的。
3、支持库的特性:这其实是对用程序写文章最有用的部分,任何完整的程序(除了汇编)都包含一整套扩展库,其中内置的事先写好的各种算法、系统接口等扩展功能,这些接口函数的名字都是英文,并且含义都很直接,比如kill是删除文件,malloc申请内存空间,如果要表达找个新女朋友,抛弃原来的女朋友就可以写成:
{
Girlfriend MyGirlFriend;
delete MyGirlFriend;
MyGirlFriend = malloc(sizeof(Girlfriend));
}
用程序写文章是否要遵循语法规则呢?目前来看,其实没有太大必要,只要保证每句都是程序就可以,也不必一定要保证程序可执行,不可执行也OK,实际上,现在网上大多数程序表达的文字都是不可执行的。
程序的定义很简单,一般的程序设计语言的基本元素都是函数(在部分语言里还有子程序的概念,是同一个概念),函数的定义是有零个到多个输入,有零个(对于子程序)或者一个输出的若干有效指令,按照一定算法组合规则和语法规则而成的集合。
程序的定义是如此的简洁,所以,程序是明确的,有逻辑的。
而文章的定义我至今没有找到,因为我也不是学中文的,如果真要给出一个非常精确的定义是很困难的。首先,文体有很多种,甚至还有像诗歌一类的奇怪的文体,这对于用程序来表达文章的内容就很困难了(当然那,也不是绝对,比如perl语言就可以用来写诗),还有记叙文、议论文、说明文……用程序写小说那就更困难了……
当然,可以回归原始,从语言的角度去思考如何用有限的程序语言来书写更多的文章,当然,肯定不是全部,因为从数学的角度上说,程序符号属于文字的一个子集,也许它的组合同样是无限多的,但是肯定无法表达所有类型的文字的组合,就像数轴上有理数比无理数要少是一个道理,虽然他们都是无限多。
程序的特性可以归结为这么几类:
1、语法特性:支持的运算符、表达式、数据类型的种类等等,这些特性在文字中的表现其实是构词能力,比如C语言里有指针,可以翻译成指向一类的词,Java里有对象,可以翻译成所属关系、集合关系。
2、算法特性:这个特性有两部分,一部分是关键字的效果,通常一个正常的程序设计语言都会支持顺序执行、分支执行、循环执行这至少三种运行类型,这些是体现在关键字上,这些特性表现在文章的逻辑结构上,但对于短的文章,这种特性的表现不明显,并且,实际上大多数文章都是“顺序阅读”的;另一部分是程序本身的算法特性,比如是否支持递归,是否无限递归(比如伟大的lisp),以及解释性执行等,这些都在实际应用中不明确,所以很难说是怎么样的。
3、支持库的特性:这其实是对用程序写文章最有用的部分,任何完整的程序(除了汇编)都包含一整套扩展库,其中内置的事先写好的各种算法、系统接口等扩展功能,这些接口函数的名字都是英文,并且含义都很直接,比如kill是删除文件,malloc申请内存空间,如果要表达找个新女朋友,抛弃原来的女朋友就可以写成:
{
Girlfriend MyGirlFriend;
delete MyGirlFriend;
MyGirlFriend = malloc(sizeof(Girlfriend));
}
用程序写文章是否要遵循语法规则呢?目前来看,其实没有太大必要,只要保证每句都是程序就可以,也不必一定要保证程序可执行,不可执行也OK,实际上,现在网上大多数程序表达的文字都是不可执行的。
相关文章推荐
- 小程序如何展示富文本编辑的文章
- android应用如何在有需要时申请root权限?在程序中要调用哪些语句来实现?
- mac上如何查看某端口号被哪些程序占用?
- 技术文章 | 新站如何换高质量友链?需要注意哪些事项?
- 小程序应该如何入门,初学者应该掌握哪些基本知识?
- 如何删除WP系统程序中标题重复的文章
- win7上运行某程序的时候,如果这个程序需要以管理员的身份运行,那么就会有“用户帐户控制”的提示:“您想允许来自...发布者的以下程序对此计算机进行更改吗?”请问,win7如何知道哪些程序需要以管理员的身份运行?
- 【翻译自mos文章】在UNIX中,怎么确定一个特定的可执行程序link的是哪些Shared Libraries ?
- mac上如何某端口号被哪些程序占用
- 如何在程序中打开PDF文件 -C#文章(.net)
- 如何提高WP程序发布文章的质量
- C++程序内存泄漏都与哪些方面有关,该如何处理和避免
- 之前账号的文章3:android私有存储目录下的文件如何让其他程序有权限打开
- 师门技术论坛:java运行的程序占用哪些资源如何合理使用
- 如何入门微信小程序开发,有哪些学习资料?
- 想想怎么用程序来写文章
- 如何入门微信小程序开发,有哪些学习资料?
- java运行的程序占用哪些资源如何优化
- 如何查看某应用程序端口/查看本机端口使用情况/查看本机端口被哪些程序使用
- 如何监视Windows下运行了哪些程序