近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置大量机器学习算法,Python 在开发者中逐渐流行起来。

尽管如此,我们却很难在移动设备中看见用 Python 开发的应用程序

基于此,Python 之父 Guido van Rossum 和部分 Python 开发者都希望未来有天能看见用 Python 编写的应用能在 iOS 和 Android 设备上运行。其中 Russell Keith-Magee 发起了 BeeWare 项目,该项目旨在将 CPython 移植到 Android,即用 Python 编写的应用可以在 Android 上本地运行。

按理说,在 BeeWare 项目取得了初步成功后应值得庆贺,但 Guido van Rossum 却清晰地认识到:Python 在移动设备和浏览器领域中都存在“痛点”。

在 Android 上运行纯 Python 应用障碍重重

BeeWare 项目成立的目标是让开发者能用 Python 编写应用程序,而在去年 2 月,这一目标初步实现了第一个里程碑:一个纯 Python 应用程序在可以在 Android 设备上运行!

彼时,Russell Keith-Magee 就指出:“这不是项目的结束——而是开始。”如他所说,BeeWare 项目的追求,绝对不仅仅是 Python 应用可以运行在 Android 上就满足了。

BeeWare 的目标是让开发者能用 Python 编写的应用程序,在包括 iOS、Android、Windows、macOS、Linux、浏览器和 tvOS 上都能很好地运行。但问题在于,Python 无法像台式机系统那样应用于移动设备

为了解决这个缺点,Python 软件基金会去年向 BeeWare 项目给予了 50000 美元的资助,以使其对 Android 的支持水平有所提高,而 CPython Android 端口必须支持运行 4.4 或更高版本的大多数现代 Android 设备。

对此,MongoDB 工程师兼 Python 贡献者 A Jesse Jiryu Davis 表示:“BeeWare 的策略是将 Python 编译为 Java 字节码,但如今 Android 设备足够快,并且 Android 内核足以运行 CPython 本身。”

不过 Davis 指出这项计划的一个主要障碍就是用 Python 编写的 Android 应用程序的规模。因为 Python 应用需要自己的运行环境副本,所以这就意味着 Python 需要缩小规模以顺利运行在移动设备。对此,有些人建议可以通过创建一个简化内核版本的 Python 以解决该问题。

另外,构建 Python 应用程序对普通的 Python 开发者而言也是完全陌生的领域。Davis 解释道:“没有子进程;套接字和信号行为都与常规 Unix 有所不同;并且禁止许多 syscall。”

除此之外,资金和人才也是一大难题。Python 软件基金会中的 Ned Deily 认为,相比许多其他 Python 计划,提供移动支持需要更多的资金和人力。Davis 也表示,由于 Python 不支持移动设备,因此没有公司为移动设备上的 Python 提供资金,也没有人愿意依靠移动设备来为 Python 筹集资金。

Python 在浏览器和移动设备上不成功的原因

对于 Python 在移动设备上艰难的发展,近日 Python 之父 Guido van Rossum 也给予了正面回应:“许多人都觉得,如果移动应用程序可以用 Python 编写,那就太好了。实际上也有一些人在为此努力实现,但 CPython 已有 30 年的历史了,它最初是为工作站、台式机和服务器环境而诞生的。”

他补充道:“但那些设法让 CPython 能在移动设备上运行的人们发现,Python 消耗了太多的资源。”

Guido van Rossum 指出,与期待中在移动操作系统运行的情况相比,Python 又大又慢:运行 Python 编写的应用会迅速消耗电池电量和内存

不仅如此,他还承认 Python 在浏览器中可能也没有前途。

虽然 Python 在后端 Web 开发中很流行,但的确 JavaScript 在前端 Web 开发中占主导地位。”他表示,越来越多的 Web 开发人员都在使用微软的 JavaScript 超集——TypeScript。

Guido van Rossum 总结为:“Python 是一种非常流行的后端语言。在谷歌,我从事的项目都基于 Python 构建;在 Dropbox,整个 Dropbox 服务器都是基于 Python 构建的。但你如果看浏览器中运行的是什么代码,那必然是 JavaScript 的世界。”

不过对此 Guido van Rossum 并不气馁,他认为 Python 应该专注于有利的应用领域,包括后端网络和科学数据处理

除此之外,Python 之父也对 Julia(一种可能在科学计算和机器学习领域跟 Python 竞争的编程语言,但没有如 Python 那般丰富的机器学习和数据科学库)发表了一些看法:Julia 是一种非常像 Python 的有趣作品。

他认为,Julia 在很多的细节上与 Python 非常相似,并且在其编译器优化代码方面更胜 Python 一筹。但总体看来,Julia 还颇有不足,属于一种“小众语言”。

参考链接

  • https://www.zdnet.com/article/python-programming-why-it-hasnt-taken-off-in-the-browser-or-mobile-according-to-its-creator/

  • https://www.zdnet.com/article/programming-languages-python-apps-might-soon-be-running-on-android/

  • https://beeware.org/news/buzz/python-on-android-its-alive/

程序人生 - Python 攻克移动开发失败!相关推荐

  1. Python 攻克移动开发失败!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热--Python.得益于其针对机器学习提供了大量开源框架和第三方模块,内置大量机器 ...

  2. 程序人生 - Python爬虫要违法了吗?告诉大家:守住规则,大胆去爬

    最近我学习和实践网络爬虫,总想着在这儿抓点数据在那儿抓点数据. 但不知为什么,抓取别人网站数据时,总会产生莫名恐慌生怕自己一不小心就侵权了,然后被关在监狱摩擦 所以我想现在这个时候,非常有必要仔细研究 ...

  3. python是一个免费开源的软件吗_Python是开源的吗?使用Python的软件开发领域

    Python是开源的吗?使用Python的软件开发领域.我们要清除的是Python开放源代码,因此Python是开放源代码,这意味着它是免费的,并且python开放源代码不是不同的编程语言,每个人都可 ...

  4. 20篇高质量程序人生文章分享,做开发不仅仅只有代码

    我一直觉得,我们做开发,不应该只有代码,合上公司的电脑脱离了公司的产品需求就脱离了程序,而应该结合软件的程序思维去更多的思考我们所处的生活和空间,从而指导自己面对更多的未曾见过的人与事,这可能就是我理 ...

  5. 【Books】推荐书单(算法、JavaWeb、Python爬虫、机器学习、程序人生、人文社科)

    回想我的大学四年,看了很多有价值的书(总计300多本),很感谢这些书及其作者,所以我写了这样一个书籍推荐列表-这些书籍都是我都认真看过并觉得值得推荐的-希望能对你们有一些帮助- PS:有些书可能出了最 ...

  6. Python最抢手、Go最有前途,7000位程序员揭秘2019软件开发现状

    作者 | 屠敏 整理 报告来源 | JetBrains 转载自 CSDN(ID:CSDNnews) 互联网的下半场,科技公司为面对更加严峻的竞争环境,越来越重视开源节流.而对于身处其中且撑起 IT 半 ...

  7. python开发安卓程序-用python开发android应用(1)

    Python是动态语言,比较简洁.Android不直接支持使用python开发应用,需要使用其它中间件或者库.PythonForAndroid提供了在android平台上对python语言的支持:CL ...

  8. python开发图形小程序_python小程序图画 python开发微信小程序

    你用python写过哪些好玩的微信小程序? 首先要明确一点,python是后台语言,不能直接用python来写微信小程序的. 微信小程序是用javascript和css来写的. python只是用来给 ...

  9. Python+WebKit+HTML开发桌面应用程序

    Python+WebKit+HTML开发桌面应用程序 前言 几天前写了一个备份的小工具,用Python写个脚本,也就花个一天的时间搞定,给客户用了一下,对功能很满意,但对界面不满足,想要一个图形界面来 ...

最新文章

  1. 34 JavaScript中的构造函数和原型
  2. keras 与tensorflow绑定在一起用的,何以见得
  3. 使用Java调用以WSDL形式发布的web service
  4. Statistical language model 统计语言模型
  5. 如何正确、高效地阅读源代码?
  6. 动态规划思路和Python解决零钱兑换问题和最大乘积子序列的乘积的问题
  7. mysql max_prepared_stmt_count_MySQL的max_prepared_stmt_count参数
  8. TCC Demo 代码实现
  9. Altium AD20批量修改丝印大小、更改丝印字体、丝印显示中文、更改位号丝印 相对元件的位置
  10. python所有软件-一款Python黑客打造的勒索软件,让所有国产杀毒软件升起无力感!...
  11. 三角形周长最短问题_1.八年级数学:DE平分ABC的周长?怎么求DE的长?你想了很久吧?...
  12. bzoj 4516: [Sdoi2016]生成魔咒
  13. ubuntu vscode 配置字体_配置vscode终端字体,vscode终端字体
  14. BeEF-XSS实验手记
  15. 全国计算机大学排名2019最新排名,2019全国大学最新排名 中国最好大学排行榜
  16. 设计模式之(九)--包装模式(decorator)
  17. 物联网威胁监测系统最新发现一款针对IoT设备的RAT远控木马
  18. 远距离WiFi模块,无人机传输技术,无线通信视频传输技术
  19. [前端工坊]第二届京东技术节-前端技术实践专场
  20. 网络七层模型和四层模型的区别

热门文章

  1. 微信如何唤起外部浏览器打开指定链接
  2. 如何学习Python技术?自学Python需要多久?
  3. 无人机航测案例-湘南某县增减挂钩拆旧地块航拍任务
  4. 论android等平台回音消除解决方案
  5. Thingsboard源码安装
  6. C/C++笔试面试题
  7. mysql事务的坑----MyISAM表类型不支持事务操作
  8. html中的xmlns是什么意思?
  9. 关于直播的技术细节都在这里
  10. 利用 Universal Transformer,翻译将无往不利!