软件编码与哲学思考

 

苹果、谷哥、脸书、微软、百度、阿里等国际和国内的知名的公司通过依托于计算机、移动终端等设备上的各种应用系统改变了我们生活的世界,使我们深深感受到了信息无穷的力量,也吸引了无数的分析师、设计师、软件工程师们怀着一颗“我也能改变世界”的梦想积极投身到信息的世界中。

对于软件工程师们来说要想实现改变世界的大梦想,必须从一行行简单的代码编制开始。对于资深的软件工程师们,通过键盘的敲打编写了数不胜数的代码,做了大量的软件程序,但要让他们说出第一行代码从哪里开始、最后一行代码在哪里结束却又是非常难回答的问题。

为了寻找这个问题的答案我们应循着“软件是什么?软件从哪里来?软件到哪里去?”这样一个思维过程来寻找问题的答案。而这一个思维过程,需要什么样的方法,想来想去也只有哲学。哲学通俗的来讲一门研究“我是谁?我从哪里来?我到哪里去”这样一类问题的学科。哲学的研究对象是人、物、和人与物的关系,研究的内容是意识和物质、系统与层次、运动与场、时间与空间,研究的方法是形而上学、辩证法、逻辑学等,研究的成果发现事物的本质的规律,研究的目的是用研究的成果更好的让人们改变世界。所以要实现“我也能改变世界的梦想”就必须学哲学,因为哲学的目的清晰的告诉我们只有发现事物的本质规律才能更好的改造世界。我们认为将哲学的研究方法引入到软件编码领域里来可以解决软件编码中“第一行代码从哪里开始、最后一行代码在哪里结束”这样的软件编码问题。

同样的着问题,在用自然语言写文章和说话时也同样存在。比如,在写一篇文章和讲述一个题目时,我们总是会思考许久,我第一句说什么?最后一句结尾是什么?所以在这里我们把软件编码和自然语言放在一起分析。软件编码是一系列行为活动的通称,这些活动包括需求分析、概要设计、详细设计、软件编码、软件调试、软件安装、软件维护等,这些活动从语言应用形式上可以分为使用自然语言应用的活动、自然语言与代码语言映射的活动、代码语言应用的活动。所以我们可以把软件编码看成是一个语言组织的活动

自然语言是我们通常所说的话语,它是由语素、语形、语句、语序组成。语素叫词汇,可以分为主语、谓语、宾语、定语、状语等类型;语形是语素组织的形式,即语句的结构,一般是由主语+谓语+宾语构成的形式;由语素按语形构成的一个整体,我们叫语句;语序是语句间的前后关系。

编码语言是我们通常所说的程序语言,它由标识符、程序语形、程序语句、程序语序组成。标识符是由符号组成的有意义的字串,可分为变量标识符、算法标识符(数学标识符、关系标识符、逻辑标识符竺、方法标识符)、类型标识符、关键字标识符、分隔标识符等;程序语形是由标识符组织的形式,即程序语句的结构,可以分为付值形式(A=”xx”),函数形式(f(x));程序语句是由标识符按程序语形构成的一个整体;程序语序是指程序语句间的前后关系,可以分为顺序关系、分支关系、循环关系。

自然语言与编码语言在组成体系上是一样的,其相同点是在语形和语序上是同构的,而不同点在语素和语句的表述上。自然语言的语素是用自然语言符号,而编码语言是用程序语言符号,即采用的符号体系不同,但符号指向物又是相同的,如”我“这个主语,自然语言用”我”来指向物质的我,而程序语言用”this”来指向物质的我。在语句上的不同体现在,自然语言是用主谓宾顺序来表述,而程序语言是用函数表达式来表述,如自然语言”我爱你”在程序语言中是I.love(“you”)来表达,在表达顺序上是一致的但加入了明显的间隔符来显示的区分其语素位置的不同。

通过对自然语言和程序语言在语形和语句组成上的分析,我们可以看出两种语言最大的不同是程序语言引入了分隔标识符,其语句是在分隔标识符显性区分下的语句描述,而自然语言只在语句间有分隔标识符,如逗号、句号,而在语素间没有显性的间隔符。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
贪心算法是一种常用的求解最优化问题的方法,它通过每一步选择当前最优的解来逐步构建整体最优解。而哈夫曼编码是一种用于数据压缩的编码方式,它通过将出现频率较高的字符用较短的编码表示,从而实现对数据的高效压缩。 在使用贪心算法求解哈夫曼编码时,我们首先需要统计字符出现的频率,并根据频率构建一个优先队列(通常使用最小堆实现)。然后,我们每次从队列中选择频率最低的两个字符,将它们合并为一个新的节点,并将新节点的频率设置为两个字符频率之和。这个新节点再次加入到队列中,重复上述步骤,直到队列中只剩下一个节点为止。 通过这种方式,我们可以构建出一棵哈夫曼树,树的叶子节点对应着字符,而根节点到叶子节点的路径上的编码就是对应字符的哈夫曼编码。由于每次选择频率最低的两个字符进行合并,所以贪心算法保证了构建出来的哈夫曼树是最优的。 在实际应用中,贪心算法求解哈夫曼编码具有以下几个优点: 1. 哈夫曼编码可以实现无损压缩,即解码后的数据与原始数据完全一致。 2. 哈夫曼编码可以根据字符出现的频率来分配不同长度的编码,从而实现对频率较高的字符进行更高效的压缩。 3. 哈夫曼编码可以根据字符的出现频率构建出一棵唯一确定的哈夫曼树,从而实现编码和解码的一致性。 然而,贪心算法求解哈夫曼编码也存在一些限制和注意事项: 1. 贪心算法只能保证局部最优解,不能保证全局最优解。因此,在实际应用中,需要根据具体问题进行合理的设计和调整。 2. 贪心算法求解哈夫曼编码的时间复杂度为O(nlogn),其中n为字符的个数。因此,在处理大规模数据时,需要考虑算法的效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值