关于python优缺点的思考

    由于工作原因,目前我接触最多的,理解最深的语言是python,虽然接触的时间没有C,Pascal来得长,但是由于工作的需要,对这个语言进行了一些探索,现在想谈谈我有关与python的看法,当然,我接触过的语言并不多,而且都没有怎么深入地接触,所以部分见解可能会有一定的偏差,还望读者纠正或补充。

    python的优点主要集中在以下几个方面,这也是这些年python逐渐从茫茫多的语言市场中脱颖而出的原因:

    1.简洁易懂:

    编程者接触某一种语言,一般不可能从底层开始了解,就像大学里计科系会在第一学期开C语言,而不是第一学期开汇编语言,计算机组成原理,编译原理这些比较深入的课程,C语言是建立在前面几门学问之上的没错,但是作为高级语言,它显然更贴近生活,能让零基础的人更快上手,计算机相关的教育,都是这样自顶向下的过程(当然你一定要说数学是计算机的基础,从小学开始学数学是自底向上,那我也无法反驳),总之,高级语言作为很多人接触计算机这门学问的第一步,相当于整个软件行业的脸面,自然不能生得组成原理,操作系统这样生涩坚晦的”凶恶“面孔,所以高级语言的上手难度直接决定了它的在人力市场中的受欢迎程度

    python就是这样一种”面色慈爱“的高级语言,或许对于一个中国人而言,python和其他语言一样都是一堆英文字母,但是从外国人的角度看,写python就像是写作一样顺畅自然,同样,即使对于不以英语为母语的国家,python也以关键字少,结构简单,语法清晰让初学者迅速上手,我记得我入职的时候,从python零基础开始,一周左右就可以顺畅地实现扫雷,俄罗斯方块这类简单的游戏逻辑了,而同样的情况在我刚刚大一的时候,我刷了一个月的HUD才比较顺畅地从高中的Pascal转到C,除了对部分尚未熟悉OOP(面向对象程序设计)的新手可能会有一定的理解难度,python其他的地方学习起来基本上不会有太大的阻力

    而且python的代码格式很好,这个和python将缩进作为语法辨识的其中一部分有直接的关系(当然,一定要不按照这个规则来也是可以的,用“;”连接不同行的代码,然后将代码拼成佛祖的形状企图反弹一切bug,但是大部分正常人不会这么做的,不是吗?)由于约定采用缩进作为代码分段的判断依据,一来规范了所有人的代码格式,二来减少了分号,括号这类的使用,这样使用者就不用将注意力放在这些随时跟在代码头尾,千篇一律的字符

    2.跨平台

    python本质上是用C写的(我知道有Java写的python,不过那可以称之为Jython),所以,一切有C编译器的地方,就等于有python解释器,python和C的关系有点类似于银票和银子的关系,一切可以用银子的地方,一般也适用于银票,因为银票本身就是银子的代表,银票的信誉基于银子作为一般等价物的信誉,这同样适用于python,而C作为一种横行天下数十载的大佬,自然早就有了大量适配的平台,这也为python的成长打下了基础

    3.可扩展性

    曾经我问过一位前辈:为什么python没有抽象类,没有其他语言里那些privity,public,protect这些设定,就连python定义内置方法的__前缀也很少看到在项目代码中使用,前辈告诉我,python这样做是为了自由,而项目组不用__是一种约定

    后一条是为了项目组内的统一,暂时不讨论,毕竟最好的规范就是统一的规范

    那么python之所以没有私有,公有,抽象这些东西,完全是出于一种自由的设计思想,事实上在python中实现私有,公有,抽象这些东西并不是做不到的,只需要自己封装一些东西就行了,比如抽象类,只需要让所有默认接口raise异常即可,这个类就从意义上成为了抽象类,同理,私有,公有也可以自己去实现,python没有在底层默认写好,就是出于一种自由的设计思想,虽然抽象类的适用范围很广,但是谁也不能打包票说任何地方都是有抽象类比没有抽象类更好,于是python就将有没有抽象类的选择留给了使用者。

    当然,这只是python内在的一个细节,实际上python的可扩展性不仅仅在对内的设计思想上,它对外也是如此,这里的对外即不同语言之间的配合使用,用我身边的例子来说,游戏的服务端可以用C作为底层游戏引擎,python作为逻辑脚本,就像是调用自己亲儿子一样调用C编写的引擎接口,除了跳转不进去之外(可以用文档填补),其他浑然天成,仿佛C语言的底层不存在一样。

说完了优点,自然要讲一讲缺点了,python的缺点自然很明显:

    1.效率

    动态语言的硬伤自然就是慢,比Java还慢,和C相比差距大概在五倍左右,大规模计算差距超过10倍

    这也是python最大的一个问题,有得必有失,python的效率问题也不是技术原因导致的,而且python也对这方面有所弥补,那就是对效率敏感的地方可以用C重写,以达到预期的效率需求,但是治标不治本,追求python的高开发效率的同时,就得舍弃一些性能上的追求。

    2.GIL

    这是属于python的一个历史遗留问题,当然我所接触的游戏服务端设计刻意避开了多线程的问题,在代码中尽量避开了这一个尴尬的部分(当然据大佬说,多线程容易出错,不好管理),虽然有世界服这种多进程的服务器设计思路,但是大部分维持数据同步的手段都是在脚本里写的,而不是python语言自身实现的

    有关与GIL相关的讨论,可以参考这里:

    点击打开链接

    当然,目前我对python的理解或许还不足以支撑起一篇深度探讨python的文章,不过我会持续更新这篇文章,将自己的理解和想法放进来,也希望大家能够在评论中分享自己对python的看法,互相提高

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 像计算机科学家一样思考Python意味着以科学家的思维方式来使用Python编程语言。这种思维方式强调逻辑性,注重问题解决的方法论和思考过程。 首先,像计算机科学家一样思考Python要注重问题的分析和解决。在编写程序之前,需要仔细分析问题并确定解决方案。这包括定义问题的输入、输出和所需的计算过程。通过详细的问题分析,我们可以更好地理解问题的本质,并找到更好的解决方案。 其次,像计算机科学家一样思考Python需要注重抽象和模块化。大问题可以通过将其分解为更小的、可管理的部分来解决。使用函数和类等概念对代码进行模块化,使其易于维护和扩展。同时,采用合理的命名和注释,使代码易于理解和阅读。 此外,像计算机科学家一样思考Python需要遵循良好的编程实践。这包括编写干净、可读性强的代码,避免重复和冗余。同时,应采用合适的数据结构和算法,以提高程序的性能和效率。 最后,像计算机科学家一样思考Python还强调测试和调试。在编程过程中,我们应该为代码编写测试用例,并进行测试以确保其正确性。对于出现的错误,我们需要进行系统的调试,定位问题并修复它们。 总之,像计算机科学家一样思考Python是一种系统和科学的方法来解决问题。通过注重问题分析、抽象和模块化、编程实践以及测试和调试,我们可以更高效地使用Python编程语言。这种思维方式不仅可以帮助我们更好地解决问题,也可以提高我们的代码质量和编程能力。 ### 回答2: 要像计算机科学家一样思考Python,我们需要遵循一些基本原则。首先,我们应该培养抽象思维和问题解决能力。计算机科学家不仅能够编写代码,还能够以高层次的方式思考问题,并将其分解成更小、更易处理的部分。这种能力有助于我们设计和实现更有效、可维护的代码。 其次,我们需要学会分析问题并提出多种解决方案。计算机科学家一直在寻求更好的方法来解决问题,这要求我们思考不同的方法,并评估每种方法的优缺点。这种批判性思维有助于我们编写高效、可扩展和可重用的代码。 此外,我们还需要学会使用适当的数据结构和算法。计算机科学家了解各种数据结构和算法的特点,并能够选择最适合解决特定问题的结构和算法。这些知识可以帮助我们提高代码的性能和效率。 最后,我们应该注重代码的可读性和可维护性。计算机科学家了解良好的编码实践,并努力编写易于理解和修改的代码。这样,不仅自己能够更轻松地维护代码,也可以使其他人能够更好地理解和使用我们的代码。 综上所述,要像计算机科学家一样思考Python,我们需要培养抽象思维、解决问题的能力,学会分析和评估多种解决方案,使用适当的数据结构和算法,以及关注代码的可读性和可维护性。这些原则将帮助我们提高编程技能,并更好地应用Python语言。 ### 回答3: 像计算机科学家一样思考Python,意味着运用系统化的思维方式来解决问题,并利用Python编程语言的特性和功能。 首先,计算机科学家注重分析和解决问题的能力。在编写Python代码之前,需要入了解问题的本质和要求,并分析问题的各个方面。这意味着需要明确问题的输入和输出,以及中间的计算步骤。通过分析,可以找出更加高效和可行的方法来解决问题。 其次,计算机科学家注重代码的可读性和可维护性。在Python编程中,注重命名规范和代码结构的清晰度。变量、函数和类的命名应该简洁明了,能够准确地反映其功能和用途。代码应该按照模块化和可重用的原则进行组织,使其易于理解和修改。此外,注释和文档也是重要的方面,可以帮助他人理解代码和进行维护。 进一步,计算机科学家注重算法和数据结构的选择。不同的算法和数据结构适用于不同类型的问题。在使用Python编程时,要了解各种算法和数据结构的优劣之处,并选择最适合的方法来解决问题。这将有助于提高代码的执行效率和性能。 另外,计算机科学家注重测试和调试。通过编写有效的测试用例来验证代码的正确性,通过调试技巧来解决代码中的错误和问题。在Python编程中,可以利用断言、单元测试和调试器等工具来进行测试和调试,从而确保代码的正确性和稳定性。 总结来说,像计算机科学家一样思考Python,需要注重问题分析、代码可读性和可维护性、算法和数据结构的选择,以及测试和调试等方面。这种思维方式能够帮助我们更加高效和优雅地使用Python来解决各种问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值