有思想的程序员

来源:互联网 发布:年轻人大城市买房知乎 编辑:程序博客网 时间:2024/04/29 06:00

         每一个有思想的程序员都应该通过网络,把思想传播出去。

         有思想的程序员,不会甘于平庸,也不会为五斗米折腰,程序员需要的是更多的思考,更少的编码。

         无尽的加班,无尽的需求,诡异的bug,只能困扰平庸的程序员。有思想,源于有深度的思考。只有深入思考,才能脱颖而出,才能举重若轻,治大国若烹小鲜。程序员有程序员式的世界观,人生观和价值观。


         思考框架。

         从语言说起。没有谁生来就懂计算机,就会编程。 经验丰富的老鸟都是从菜鸟过来的。 可以说行内人都是先学了那个举世闻名的hello world 程序 之后,慢慢对程序有了更深更广的认识。有了一定经验后,某些程序员就开始对语言本身进行思考,语言的本质是什么,它有怎样的模型,它的局限是什么。 光研究数理逻辑中的语言概念,似乎不能给出什么有趣的答案。 我觉得书本上的内容总是太孤立,无趣,总是不能明显的跟现实中的问题联系起来。不过有思想的程序员,不用什么书本的引导,他天生就对这些事情感兴趣,总是以他人鲜有的归纳广度,对这个世界进行递归的抽象。

        计算机编程语言,自然语言,甚至肢体语言,这些都是语言,他们的共同之处是什么,和程序有什么联系。

        语言,是人类思考的工具。 思考语言本身,就有着自我纠缠的递归的意味。递归,也正是思维的起点。 因为如果想说明一个概念或问题,必须以其他概念为基础,比如说明概念A: 概念A是‘边长为一米的正方形’  ,   如果继续解释, 那可能是 :  正方形是‘临边相等的长方形’   ,长方形是‘对边相等,四个角都是直角的四边形’  ,XX是……样的YY,这个模式一直可以走下去,但是现实中, 都有个终点, 我们没法再解释的那个概念, 叫做不定义概念。 这是递归的终点。

         以上达到了逻辑的根基。从根基出发,将演绎出基本的逻辑元素:概念,判断,推理。 逻辑学上来就会搬出这几个概念,但不说明他们如何形成。似乎这是心理学的任务,可我觉得逻辑学应该说明这些东东才好。说这个,常常是误解难免,  因为在概念形成之前就说明概念在逻辑上是不可能的,因为他在逻辑上递归了。 这个边界,似乎就是语言的能力边界了。好了不纠缠语言能力之外的事情了。以下探讨语言能力之内的事。

         看不懂上边的话,正常。因为语言是你思考的工具,阅读的工具,这注定了,它对表达清楚自身无能为力。

         说了半天,这与程序何干,关程序员屁事?

         如果你只想写代码混个饭吃,对技术本质没啥兴趣可以打住不看了。如果你有强烈的好奇心,看我能说出什么新奇来,请继续。

         各种语言,不论计算机语言,还是自然语言,都涉及如下东东。 注意我现在说的语言概念不是数理逻辑力那个。 凭你常规理解就够。 这些东东包括: 描述对象, 对象怎样怎样。也就是主语,谓语。谓语导致主语状态改变,也可能不改变。你注意到状态这个东西。还有状态改变。状态机正是它所描述的数学模型。

         文章开头提到了三观。似乎和现在说的没什么联系。 实际上它和世界观联系非常紧密。在你的头脑里,一定有个外部世界模型, 比较完整的,还应该有自身。也就是说所有人都会对客观世界,和主观世界建模。这里同样有一个难题,本质上还是递归。对客观世界建模没什么困难,注意客观世界不包括建模者自己。 对主观世界建模就有了问题,造成了递归。先不管这个递归难题。说明现在的问题,只需知道,人脑中有一个模型,这个模型对应于外部世界。模型是如何描述的呢。把自然语言对应起来看。会发现语言中的这些词很容易被模型解释了。 如时态想关的词,  “曾” , “已经” ,“了”   , “着”  , “将”  ,“会”  ,这些揭示了状态机模型的历史和未来。 为什么我们要关心历史和未来? 或者说,语言为何发展出了描述时态的功能? 可以这样解释, 人在环境中生存, 环境在变化,人将在预见到环境的不利变化前调整自己行为,以适应环境,求得生存。 这其中有个时间差,调整行为必须在环境变化之前。也就是说,两个模型, 一个真实世界,以自身为模型,一个是真实世界在人脑中建模的模型。或者说是两个自动机,都在运行,  人脑中的模型必须运行的比真实模型快, 才可以在环境变化前预见到未来,调整自身,否则慢了就没有意义了。


           从上述可知, 人类智能的本质是预测,而程序的本质是自动机。  这个结论跨度很大, 不过也是很多书所得出的结论。详细的说明他们不是三言两语的事,都需要一正本书的篇幅。

          此文,算是提纲挈领式的描述,实际上很多内容需要很大篇幅说明, 以后在其他文中只抓一点详细说。

          原来以为一切都是程序,万事万物。幻想着哪天能上传意识得以永生,最近有科学家说人类意识压根就不是自动机,意识上传不可能。困惑。

          你要问这些东东有什么用?  确实有用,稍后就说。 不过我在此特别想说,这个世界是按经济学原则运行的,经济学的原则可能是普适的。就是说总会抽象出一个付出和回报,你看了半天发现没什么用,就不看了,或者看完后悔浪费时间了。

          有什么用呢?  既然一切过程都可用程序描述,  那编程本身为什么不能?这就是牛哄哄的元编程。 它让你编程生活轻松百倍是轻而易举。一门好的语言,应该是语言的语言,应该包括构造一门语言的能力, lisp语言是其中的典范, 其专业词汇叫dsl,领域特定语言。任何一个问题域的程序化描述,都是建立在特定的一组概念上的,自然语言有构造语言的能力, 你发现你可以很简洁的描述一个问题,  但是编程却很难,为什么呢, 是程序语言没有提供特定的概念, 你最好按照自然语言的结构先构造这些概念,然后再在这个层次上编程, 这会十分轻松。









0 0
原创粉丝点击