本文来自 CSDN 策划的《2022 年技术年度盘点》栏目。本栏目将围绕编程语言、开源、云计算、人工智能、架构服务、数据库、芯片、开发工具等核心技术领域,特邀一线技术专家亲临分享自身的技术实践,借此希望能够为更多的行业从业者带来一些借鉴与思考,更好地把握技术的未来发展趋势。
在本篇文章中,来自北京火石镇网络科技 CEO 卞安, 将从应用领域和开发工具链的维度展开,分享 Python 语言在软件工具层面面临最新现状与挑战,探讨开发者助力 Python 突破自身的机遇所在。
一转眼,又到年底了。2022 年的 12 月,注定是我们人生记忆最为深刻的一个月。
一方面,发着高烧看世界杯决赛中梅西带着球队一波三折,最终如愿夺冠,我们一边感慨青春的逝去,一边鼓励自己早日康复,期待更好的自己。
另一方面,TIOBE 2022 年 12月的编程语言排行榜上,Python 终于再一次拿下冠军,卫冕成功,且一直保持着高速的增长,令人瞩目。
作为一个 Python 工具软件的作者,今天,我来聊一聊 Python 夺冠路上的喜和忧......
我致力于 Python 开发工具的这三年
三年前,当我得知 C 语言以微弱优势击败 Python 成为 2019 年度 TIOBE 编程语言排行榜冠军的新闻时,我正在用 C++ 开发游戏。那则新闻突然让我有点惊讶,“Python?是那个十几年前用过的脚本语言么?”
“天呐,就是这样一个当初只是在游戏中作为脚本嵌入语言的东西,竟然这么受欢迎”。也是从这天起,我开始学习 Python,并在这个过程中尝试不断地建设 Python 开发工具软件。
三年后的今天,看着 Python 的成长,说实话,我很欣慰。因为在我的眼里,它不只是一门语言,更带来了一种鼓舞,让我看到,作为一名程序员,应该怎么坚持自己的理想。
毕竟,距离 1991 年 Python 诞生已经过去 31 年了。当年的我,还青春年少,戴着红领巾和同学们嬉闹玩耍。而现在的我,踏过不惑之年的台阶,两鬓已经生出白发。
我感慨时光匆匆,回顾前半生,曾几何时,我把「约翰.卡马克」当作偶像,立志于做最好的游戏程序员,并十年如一日的学习和研究,但终归,技术的大潮滚滚而来,又洋洋而去,能在程序员这个岗位上,做到主程序,甚至是技术总监、业内大拿,终归是需要点天赋的,但能够成就大事,就不简简单单是一个人的问题,更多的是心态、团队、环境、家庭、运气等多方面的因素。
即便我们努力如初。但在时间的无情打击之下,我们,是否守得住这美好的初心?
Python 过去这一年
2022 年,Python 风声水起。
一定程度上,Python 在这一年里的发展,得益于 AI 的影响力,使得目前在编程教学普及方面,Python 成了广大学生和科研工作者所最希望掌握的技能之一。而这种热度也正在一步步的从科研院校扩散到各行各业的开发者领域。
除此之外,10 月份正式发布的 Python 3.11 运行速度比之前 3.10 快了 60%,
在 Python 之父 Guido van Rossum 的带领下,未来仍有巨大的效能提升空间。
知名的 Python 发行版 Anaconda 开发商也发布了可在浏览器中运行的 Python——PyScript。
应该说,如果你不能掌握一点 Python 技能,在当下这个时间点,是有点不合时宜的。
但是,冷静下来,对 Python 这门语言进行评价,也很难说就都是赞美之词。毕竟,仅仅是表面上的一些问题,就困扰了许多人。如果只是一味的相信 AI 的未来而认为掌握 Python 就能够成就高薪就业,更是不现实的。
使用 Python 的理想与现实
首先,Python 目前仍然很少作为主流的前端开发语言。
原因很简单,就三个字:“不靠谱”。比如:
在现实中创业者最扎堆的移动 App 开发领域,主流的开发语言仍然是苹果端的 Objective-C、Swift 和安卓端的 Java,暂没听说过谁用 Python;
在桌面应用软件领域,前有 Microsoft Visual C++、C# 在 Windows 系统上开发的各类工具软件,后有JavaScript、TypeScript 结合 Electron 开发的各类跨平台应用,而 Python 却经常陷入到底能做出多复杂界面的讨论中;
在 Web 端领域,Python 虽然具备在服务端进行大型网站开发的能力,但却很少参与前端开发。
少了这些开发岗位的加持,Python 自然是难以在企业应用开发市场讨得一杯羹。
其次,作为专业程序员看来,Python 语言虽然简单易学,开发效率高,但在现代软件企业产品的研发中,缺乏高效而完整的开发工作流软件支撑。
比如说,我们在游戏行业中习惯于使用 Unity 或 CocosCreator 来开发一款游戏,从项目的搭建、场景摆放、函数绑定,再到调试运行、打包多平台输出,都具有所见即所得的科学良好的工作流程支持。
CocosCreator 的组件化开发工作流
对于 C 和 C++,微软公司上世纪就推出了 VC++ 开发工具;Java 也有 IntelliJIDEA 和 Eclipse IDE,这些优秀的 IDE 支持背后,实际上是巨头企业对于开发者生态圈流量入口的掌握,更是帮助开发者掌握和使用一门语言的良好流程理念的践行。
在上面的排行榜中,我们也可以看到,“Visual Basic”这个早已经远离主流开发领域的编程语言,现如今依然能够排到第 6 名,而众所周知,“Visual Basic”是可视化编程工具中非常优秀的典范。拖拽式的控件创建加上非常简单的事件函数映射,对开发者掌握如何面向对象的界面编程开发起到了深刻的影响,也成为之后十数年大量应用开发工具和游戏编辑器借鉴的对象。
其实,我们现在在开发中所困扰的大部分问题,本质上是属于开发集成工具的不够完善,如果有一套科学、良好的集成开发工具作为底层支撑,那么我相信,这些问题实际上是不存在的。
但 Python 的问题,在于当初它诞生时的开发需求,经过三十年的变化,与现在是完全不同的。作者 Guido van Rossum 最初设计 Python 是将其当作一门教学语言。可以说,直到现在,Python 的基本面仍然还更像是一个教学语言一样,通俗易懂、简单上手,记事本打开就能写,写完保存直接就能运行。
不过在这个理念之下,更多专业的工程化的东西就省略了,比如良好的项目管理、丰富的调试功能、实时的性能监控等。
我们不能责怪作者,只能说时代在新的阶段,赋予了 Python 新的生机,而在新的环境下,原有的外围辅助工具已经落后了。虽然当下我们有了PyCharm、VSCode等优秀的开发工具,但这类工具的主体仍然没有脱离代码编程器的层面,并没有在开发流程上做到完整的覆盖。我认为这也是目前限制 Python 从小型软件转向大中型软件开发中不可缺少的一环。
笔者目前正在致力于开发基于 Python 语言的全栈式开发工具软件产品《PyMe》,希望通过可视化的方式,帮助 Python 开发者快速搭建应用软件项目,并可一键打包成桌面和安卓应用
最后,在本具备良好支持的 2D 和 3D 跨平台图形渲染领域,Python 未能实质上开疆扩土。
游戏,曾经是很多编程语言发展的重要推手,一旦沾上游戏,基本上这门编程语言可以稳定地占据一定的开发者市场。比如 C#,因作为 Unity 的主要开发语言,而被大量的游戏开发者们使用;LUA,因为能够高效的执行和简洁的设计,成为游戏中最主要的脚本语言,十多年来,虽然 LUA 仍然只能作为另一门主要开发语言的脚本补充,但仍然广受欢迎;C++,更是长期作为游戏服务器开发的不二之选。
现实来看,用 Python 开发游戏,不见得是个好的选择,因为它执行效率太低了,无法满足高速渲染和运行逻辑的要求,但是有一个很有趣的现象,就是很多的学生和非专业开发者,却使用 Pygame 或 PyOpenGL 来尝试开发 RPG 或一些小游戏。
掌握基本的 Python 编程,已经成了很多非专业开发人员的一个技能,而在这个世界上,如此众多的学生和非专业开发者,往往在学习语言的过程中,尝试做一些小游戏,或有意,或无意地娱乐自己或他人。
而 Python,是他们唯一的武器。
只是,却没有太多子弹。
Python 开发者经常使用一个基于 SDL 的图形库 Pygame 来开发一些小游戏,但 Pygame 发展到现在,却连基本的 Spine 动画支持库也没有,以及基本的 UI 库也没有。做一个游戏项目,只能手撸一切。
B 站上的“使用 Python 和 Pygame 开发《星露谷物语》”教程经常在 Python 游戏开发者群被提及,仿佛学会 Pygame,就能打开游戏制作的大门。
而 PyOpenGL 作为 OpenGL 在 Python 上的展现,一样缺这少那,大多数人连画出个方块都觉得费劲。
可能很多开发者会说:“Python 又不是为了专门做游戏用的,这不重要吧?”,但是我想说,游戏开发的能力用不用和有没有是两码事,对于广大的图形学与机器学习交叉学科,如果 Python 具备完善的开发能力和工具支撑,对于学生和科研人员来说,则可以更加专注于核心问题的探索,而不是浪费时间去学习 C++ 和繁琐的各种开发工具和环境配置,无疑可以大大加快相关学科的发展。
写在最后
笔者正在开发中的基于 PyOpenGL 的 3D 场景编辑器,目前还比较简陋。
不过,罗马也不是一天建成的,我由衷的相信,在这个过程中,不管是 Python 的作者,或者是其背后的微软公司,以及广大的开发者群体,都会不断的贡献自己的聪明才智,把 Python 的问题一点点解决掉,随着 Python 各方开发力量的不断投入,Python 的未来,将不仅仅局限于科研和教学,而在更加广泛的工程项目中,还会有更加巨大的可挖掘潜力。
毕竟,人生苦短,我用 Python 嘛!
参与《2022-2023 中国开发者大调查》问卷,
更有 iPad 等精美大礼等你拿!