Python 学习开发的两年后的反思

背景介绍

三年的C++ windows 客户端的开发经验, 接触python也快有两年了。 记得最开始会选择接触python的原因是因为李开复老师的强烈推荐。 接触以后一直对python简洁的编程风格所倾倒。自己的C++ 编程风格和设计思路上受到python 的影响很大,因为这个原因,一直以来都会花费一定的时间在python上。 虽说兴趣是最好的老师。,, interests (兴趣)和interests(利益)不能挂钩,再强烈的兴趣最终都可能因为失去生长的土壤会枯萎。学习python 的本身也是为了更好的应用python到工作或者生活中去解决问题。 备注: 这里说的利益,不是指狭义的金钱利益。而是指广义的收获,或提高开发效率,或解决原有解决不了的难题,或者改善编程体验。

目前工作中主要使用C++ 从事windows MFC 客户端编程,部分涉及服务器网络开发编程和底层开发。

在python熟悉了将近两年之后,总在思考一个问题。

使用Python 能够为我带来什么改变? 我能用Python 做些什么呢?

但是现在在Python技术上却感觉未能取得一点点值得欣慰的成就。也并未在工作效率上,或者解决方案上有所突破。 这给我未来的技术方向敲醒了警钟。一直有一个信念:

编程是为了解决帮助别人或者自己去解决问题

很显然,平时投入大量的时间和精力在python上却并未达到预期的要求。感觉很多技术都是用则强,不用则废。Python 虽然学习了很多相关方面的知识,但是却感觉自己一直找不到应用开发场景。这个问题让我陷入了沉思。所以写下一些文字好好反思一下,和大家分享一下自己失败的教训,过来人能够指点迷津

衡量开发效率参考标准:

熟悉程度 IDE 的熟悉 开发语言的熟悉 开发库的熟悉 项目架构功能的熟悉

C++ ★★★★★ ★★★★ ★★★ ★★★★

Python ★ ★★★ ★ ★★★

这四者的熟练程度很大程度上决定了一个项目的开发效率。

pyqt 客户端方案

概述: 通过使用pyqt 快速绘制界面, 使用python作为开发。实现快速开发的目的。 – 优点: python语法简单, (熟悉pyqt 界面库的前提下)开发速度快 – 缺点:鉴于pyqt 的亲妈qt 在windows 平台下都难以有所作为和发展的情况。 pyqt 面对企业级应用开发可能更是力不从心。pyqt 依赖于一整套较大的界面库,学习成本较大。pyqt 被团队 和市场认可度不高,难以实现正规化发展和应用

适用场景: pyqt 开发仅适合轻量级的应用程序开发(轻前台重后天的场景) 结论: 而对于企业级应用程序开发,被市场和开发团队认可度较低。且技术可实现度不明朗,缺乏论坛的支持,可发展前景极低。 在熟悉MFC 的基础上, pyqt客户端的开发效率几乎没有任何优势。 无法获得认可。

在windows 平台下 , python可表现的机会并不多,因为即使是QT,Java 这些历史悠久的解决方案都没有什么起色。 其主要的实力发挥可能更多集中在领域逻辑层(复杂逻辑处理) 和数据层(网络,数据库)。

C++ 和python 混合编程方案

优点: 实现对于 C++ 的库的拓展支持, 利用python 快速高效的脚本语言, 处理复杂的事务逻辑, 有着得天独厚的优势。 C++ 负责效率, python 负责逻辑处理,参考 lua + C++ 开发的模式。 缺点: **接口设计麻烦, 混合编程复杂度增加。 联合调试困难, 对于团队合作不利。 客户端的混合编程。需要打包python相关组件。 适用场景: 服务器领域开发, 业务逻辑复杂度较高,对性能要求较高的产品** 结论: 在处理较为复杂的业务逻辑,而且在服务器领域开发拥有一定优势,但是可等待的机会不多。 目前本人已经实现python 和C++ 混合编程的初级阶段和混合编程的打包处理技术

纯python服务器解决方案

twisted 应用服务器 ,web 服务器开发 优点: python 中存在大量优秀的 web 服务器库可供选择。 缺点: 公司目前的客户端程序暂时不支持webkit 开发,http 响应速度较慢,更多的网络通信是走底层的 tcp/udp 通信或者封装后的通信协议 备注:

由于对服务器开发熟悉程度不高,暂时未想到应用程序服务器的开发应用,求指点!!!网络快速测试方案

描述: 为解决基于 udp/tcp http 网络通信开发中的 优点:利用 twisted 库高效灵活的优势,可用较为简单的方式快速开发配置 较为复杂的网络通信测试方案,确定网络通信过程中存在的问题 缺点:无法实现 C /S 两端 代码风格复用。 需要重写代码 使用场合: 适用于网络通信较为复杂的通信过程。 结论: 目前为止唯一想到的可辅助工作应用的场合,自动测试。

学术研究

使用python 做一些 前沿技术探索,学术研究,类库接口设计学习等方面的研究 优点: 积累一些黑魔法,黑科技,实现快速上手的目的。 缺点: 适合学校和学术机构,不适合商业领域

技术规划

PC客户端(C++)—服务器(python , Java, C++)—android的发展规划(Java, C++)

虽然很喜欢Python的开发方式,但是苦于两年时间依旧没有能够找到一个能够实现Python 自我造血方式。 如果仅仅是凭借着兴趣,在每天下班之后的几个小时学习应用Python,再强烈的兴趣最终都可能失去生长的土壤而枯萎。 因为用的场景少,导致熟悉度一直无法提高,最终的结果是使用Python 开发效率不高。在选择开发方案的时候, Python始终无缘选择项。

反思

最近在接触java语言时候,让我想起java起家流行的原因。使用Python 进行界面开发的尝试,或许是一个比较愚蠢的决定,仅仅是当时因为热情,因为喜欢,头也不回的学习使用了。 如上图所示,Python 和C++ 的关联性,相似度不是那么大。想要实现两者1+1> 2的难度,相比于Java 就不那么容易了。

Java 曾经走过路,或许才是是python 应该走的,基于网络服务器的方案来更加高效的解决问题

问题

俗话说:当局者迷旁观者清。 一门技术,一种解决方案的兴起发展,往往与其有着更高的开发效率,实现手段,强大的功能有着紧密的关系。想请教经验人士一个问题: 在我当前的工作环境下,应该选择什么样的python技术方案或者路线,才能在C++的开发场景下立足???

获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的

Python 学习开发的两年后的反思

相关文章:

你感兴趣的文章:

标签云: