最近用Haskell写一个简易的Web Server,取名HsServer,当一个模型十分清晰、确定,用函数式语言写起来十分方便。网络、线程基础基本搭好,但http协议交互处理等细节,感觉很麻烦。这部分代码还非常糟糕,也一直没想到怎么去实现为好。就一直搁置在那里,懒的折腾了。所以,这个web server还没啥实际用途,只实现了一个基础web server模型。对于实际应用代码,等有心情了,有想法了,再去写吧。
用Haskell写东西非常有意思。Function Language相比Imperative Language,我觉得特别适合解决已知、确定的问题域的问题,而且能做到尽可能地完美,效能高,以及健壮。
最近一段时间的haskell学习,总体让我对下面的东西有了些思考,思考是什么,很难用文字描述出来,就一次性列在这里,让它们在我的大脑里发生化学反应吧。
side-effect, state, concurrency/parallelism
lambda, pure functional programming (pure in, pure out)
type, class, variable, data, symbolic, behavior/action
在我学习了一些语言之后,包括自然语言汉语、英语,计算机语言之后。我越来越对语言着迷起来,更确却地说是类似符号性质的东西。
我有个习惯是,将我面临的事情非常3类,如下:
0. 面临一些我完全未知的事情
1. 提出一条标准
2. 分成两类
3. 总是没有办法将所有事情都认识清楚,余下的事情就是第3类。
如此,分3类恰好适合我的思考模式,也不会让事情超过我的handle能力。
那么,对于语言的要素,我将其非常分成以下三类:
1. symbolic data
2. grammar/syntax
3. context data
我将这三类归为Symbolic System。
在写各种各样的计算机代码的时候,就觉得,一切都在symbloic to, symbolic from。要拥有好的编程能力,就要能够将这些symbolic关系理清,并控制在可能的范围内,并最终在grammar/syntax的帮助下,将symbolic data应用到context上。
Tuesday, March 31, 2009
Thursday, March 26, 2009
Friday, March 20, 2009
事情存在的前提
最近一直在琢磨Haskell这门语言,并因为这门语言的特殊特点,让我深入思考许多一直以来困扰我的问题。
其中之一就是,对于事情存在前提的思考。
因为,我发现我面对许多事情时,常常没有将这个事情存在前提完全弄清楚,就去对事情最终形态下结论等等。但若所思考的事情存在的前提都未定义清楚的话,对事情本身的任何思考,是毫无意义的,因为你在尝试思考一个不存在的或只是你臆想的事情。完全徒劳,而无意义!
比如说,程序中的error-handling,即对程序运行错误的处理。一个程序在运行中,所产生的错误,有无限种可能。你本身处理错误的代码,也有可能产生错误。所以必须将你所思考的错误处理的前提思考清楚。比如,下面那些错误是需要处理的,而那些错误的产生是你不需要负责处理的:用户输入导致的错误,程序逻辑不严谨的错误,程序运行的外在环境(如系统调用,内存等)不可用导致的错误,程序解析或编译器导致的错误,程序运行的内在环境被破坏(如,驻留内存被修改)而导致的错误。
而之后将所思考的问题的前提建立并弄清楚之后,你才能明白在这个问题前,你能够做些什么,你不能够做些什么?如此,思考有意义前提、或者说是基础才建立起来了。
P.S. 简单点说,几乎没有事情是独立存在的,任何事情存在都有前提、假设(assumption)。所以,思考事情时,需将前提、假设弄清楚先。
P.S. 这里还另外一个问题,前提、假设的本源是什么?会是绝对的,还其实永远都是相对的了?
其中之一就是,对于事情存在前提的思考。
因为,我发现我面对许多事情时,常常没有将这个事情存在前提完全弄清楚,就去对事情最终形态下结论等等。但若所思考的事情存在的前提都未定义清楚的话,对事情本身的任何思考,是毫无意义的,因为你在尝试思考一个不存在的或只是你臆想的事情。完全徒劳,而无意义!
比如说,程序中的error-handling,即对程序运行错误的处理。一个程序在运行中,所产生的错误,有无限种可能。你本身处理错误的代码,也有可能产生错误。所以必须将你所思考的错误处理的前提思考清楚。比如,下面那些错误是需要处理的,而那些错误的产生是你不需要负责处理的:用户输入导致的错误,程序逻辑不严谨的错误,程序运行的外在环境(如系统调用,内存等)不可用导致的错误,程序解析或编译器导致的错误,程序运行的内在环境被破坏(如,驻留内存被修改)而导致的错误。
而之后将所思考的问题的前提建立并弄清楚之后,你才能明白在这个问题前,你能够做些什么,你不能够做些什么?如此,思考有意义前提、或者说是基础才建立起来了。
P.S. 简单点说,几乎没有事情是独立存在的,任何事情存在都有前提、假设(assumption)。所以,思考事情时,需将前提、假设弄清楚先。
P.S. 这里还另外一个问题,前提、假设的本源是什么?会是绝对的,还其实永远都是相对的了?
Wednesday, March 18, 2009
思考的方法、工具等
最近几个月,常常觉得自己变笨了,常常觉得自己越来越不会思考,许多问题在脑子里老是想不明白。比如,看书的时候,常常看了几行字,却啥都没理解进去,看不明白。
许多时候,这种情形,让大脑很迷糊,也不断在趋于疲惫。越是使劲思考,越是让自己焦虑,越是想不明白。
这个原因,今天想了下,很可能是因为自己还不懂得思考的方法,以及许多思考的工具,自己都还没有学会。所以,一遇到稍微复杂或者自己以前没有遇见的问题,套不上自己的经验,也不懂的如何思考,却十分浮躁的使劲思考,以为这样就能把问题想出来。但现实与自己的想象是不同的,这点都没有分开,怎么能有实质的思维进步。甚至许多时候,连问题都没弄明白,就在幻想把问题想明白,结果想清楚了。真是莫名其妙。
幸好今天,让自己清醒了点。那么,努力吧。
许多时候,这种情形,让大脑很迷糊,也不断在趋于疲惫。越是使劲思考,越是让自己焦虑,越是想不明白。
这个原因,今天想了下,很可能是因为自己还不懂得思考的方法,以及许多思考的工具,自己都还没有学会。所以,一遇到稍微复杂或者自己以前没有遇见的问题,套不上自己的经验,也不懂的如何思考,却十分浮躁的使劲思考,以为这样就能把问题想出来。但现实与自己的想象是不同的,这点都没有分开,怎么能有实质的思维进步。甚至许多时候,连问题都没弄明白,就在幻想把问题想明白,结果想清楚了。真是莫名其妙。
幸好今天,让自己清醒了点。那么,努力吧。
Sunday, March 8, 2009
Thursday, March 5, 2009
Subscribe to:
Posts (Atom)