码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-03 21:06:57      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:解决方案   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 ★★★ ★★★

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

  • python优势:语言开发高效友好, 支持类库庞大。
  • python劣势: 执行效率不高
  • C++ 优势 : 机器效率高,和C 语言兼容好
  • C++ 劣势: 开发库不全面,学习成本较高

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 学习开发的两年后的反思

标签:解决方案   python   开发   服务器   

原文地址:http://blog.csdn.net/leos_blog/article/details/44858509

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!