笔者用过 Java 和 Python, 现在主力语言是 Python / JavaScript

先回答题主的疑问:10 W 行应该算不上大项目。

通常情况下,动态类型的语言在单位代码行数的表达能力比静态语言强,但也取决于使用者。

糟糕的代码结构,混乱的命名,荒谬的模块划分,胡乱的 Copy Paste 造成的问题,用静态语言和动态语言真的没差大区别。

真正的开发工具是个什么概念?PyCharm 这么强了还不够用么?

并不是所有的语法错误都在运行时的,而且什么时代了,flake8 和 mypy 了解一下?

已经有人回答了『大项目』了,我就回答**『不那么大的项目』**好了。动态语言在多人开发的项目上确实会因为类型问题而增加 BUG 率,这点是无法否认的。并且这种问题通过『提升程序员的素质』这种方式并不是很管用。

静态语言引以为傲的类型检查,现在 Python 3.7 内置了 Type Annotation, 想用类型检查,就用呗。Python 的创始人带头搞了 MyPy 这个项目用于解决类型检查的问题。

当项目代码质量很差的时候不仅仅可以考虑是不是强类型和弱类型的问题,还有如下的问题需要考虑

通用的姿势如下(不管你是 Javaer 还是 Pythonista)

7.1 Code Review 是不是做了。为了炫技而炫技的 Python 代码不应该通过。KISS 原则必须要遵守。

7.2 持续集成 CI 和 unit test 和 functional test 做了没?是不是要提升一下代码覆盖率?

7.3 是不是应该花点时间补充测试然后重构了?

7.4 是不是应该多花时间尽量理解需求方的背后目的,梳理完沟通完毕再动手写代码。

7.5 有没有好好的打日志?Sentry 了解一下?

7.6 常用的 workflow 是不是该写到 makefile 里面,拷贝到身边,一用很多年?

如果你使用的是 Python 则还有一些途径。假如你还是觉得加类型检查比较好,类型错误这种低级错误确实不能忍,那么 Python 的 Type Annotation 可以用起来了。

动态类型往往有很方便的 repl, 比如 Python 界著名的 IPython 可以在真实环境中非常方便的运行局部代码,甚至可以在 ipy 里面完成一波调试之后,把调整好的代码拷贝回源代码中,然后 make staging 之后速度 reload ipython 继续调试。

第二点可能有些静态语言的使用者,比如 Javaer 可能感受不到。我来举个栗子。

我现在需要到生产环境上把 redis 里面的缓存的帖子 id 为 xxx,xxx,xx,xx 的里面的活动重置一下状态,如果重置成功,则把 redis 里面的 key 删掉。

这类操作属于临时性的操作,一般也不需要单独写个小功能走一下发布流程。

我直接 ssh 到机器上,make shell 进入环境。执行如下代码:

POST_KEY_PREFIX = "HOT_POSTS_"

for p in Post.mget([1,2,3,4,7,11,44]):

if p.status == "STOP":

p.status = "PUBLISH"

# DO SOMETHING

redis.delete(f"{POST_KEY_PREFIX}_{p.id}")

session.commit()

这个操作在我都不需要显式的导入 Post , session, redis 在自定义 ipython shell 的时候直接把我常用的 Model, 和工具类直接导入到上下文中。

相对于静态语言,我更喜欢写动态语言(个人喜好,无关于优劣)动态语言,表达简洁,阅读起来更加接近自然语言。

快速出结果,拖到 IPython 里面跑一遍,验证核心流程,然后拖出来改改就可以运行了。

写静态语言的时候,写个简单的东西往往要变得比较啰嗦,不想花时间在『修改代码直到类型检查器通过』

下结论了大型项目上 Python 等静态语言 确实不是最优选择。但首先你得确认你的那个项目真的是大项目,而且代码 BUG 率高真的是因为缺乏类型检查。

必须要黑一波的是,无注释文档测试想到哪写到哪的动态语言代码比静态语言代码难看,难维护。

但是如果你说.... CPython 的性能差搞不起大项目,我是无法反驳的.... 毕竟你说的是实话

语言毕竟只是工具 希望大家作为 Money-orient programmer 啥挣钱学啥

学一波 Golang 去....

python语言依赖平台吗_在大型项目上,Python 是个烂语言吗?相关推荐

  1. python不适合大型项目_在大型项目上,Python 是个烂语言吗? |

    [洪强宁的回答(89票)]: 太多硬伤和臆想,懒得批.只说"代码超过 10w 以后你就别想用 python 开发了"这一句,2012年4月豆瓣主站项目代码行数就近50万行了,可我们 ...

  2. python真是最烂的语言_在大型项目上,Python 是个烂语言吗?

    展开全部 是存在的东西就不能用烂来形容,也许只是不对某些人的爱.e68a84e8a2ad3231313335323631343130323136353331333363396464 用 Boost 去 ...

  3. python支持哪些平台开发_【后端开发】python能兼容哪些平台

    目前Python可以说是相当的火爆了,网络爬虫,人工智能,数据挖掘与处理,金融量化交易等.那么Python都能运行在那些平台呢? Python支持常见的主流平台,如AIX.HPUX.Solaris.L ...

  4. python能熔断吗_在大型项目上,Python 是个烂语言吗?

    python工作一年,目前写过最大的项目,代码量2W左右,后端+爬虫. try: 优点:开发效率够快,社区活跃,三方库丰富,语法简单清晰(同步代码初阶),有大量的作业可以抄(你遇到的绝大部分问题已经有 ...

  5. r语言 柱状图加星号_如何在地图上添加柱形图(R语言)

    首先,了解一下ESRI Shapefile(shp)格式文件: 用于描述几何体对象:点,折线与多边形.例如,Shapefile文件可以存储井.河流.湖泊等空间对象的几何位置.除了几何位置,shp文件也 ...

  6. python大型项目教程_在大型项目开发上,python真是个“烂语言”吗?

    有人问独孤求败,君子剑和青锋剑哪个好? 独孤求败说,这些不重要,只要技术到了,拈花飞叶皆可伤人. 杨过和郭靖武功天下卓绝,然而武林中绝大多数人表示: "前辈,哪个门派能招一大拨杨过.郭靖和独 ...

  7. python语言依赖平台_poetry首页、文档和下载 - Python 依赖管理和打包工具 - OSCHINA - 中文开源技术交流社区...

    poetry 是一个包管理和打包的工具. 在 Python 中,对于初学者来说,打包系统和依赖管理是非常复杂和难懂的.即使对于经验丰富的开发者,一个项目总是要同时创建多个文件: `setup.py` ...

  8. python做自动化测试的优点_乐搏讲自动化测试-python语言特点及优缺点(5)

    相信小伙伴们都知道,随着软件测试行业的发展和进步自动化测试已经成为必然.在竞争日益激烈的市场环境中也是你升职加薪的利器. 所以,小编决定从今天起!将要系统.连续.高质量的持续更新「整套自动化测试」文章 ...

  9. 以下不属于python特点的是什么_以下哪一个不属于python语言的特点-Python语言的特点有哪些...

    Python语言的特点有哪些 Python 是目前最流行的语言之一,从云计算.大数据到人工智能,Python 无处不在,Python 人才需求量也在逐年攀升,Python 为何能发展如此的迅猛,究竟有 ...

最新文章

  1. PostgreSQL学习手册(七) 事物隔离
  2. 使用数值计算库Zero - VC6调用失败、cfree调用成功
  3. 关于 SAP Spartacus OAuth 2.0 Resource Owner Password Flow 实现的一些讨论
  4. 远程桌面登录 Windows Server 2003时提示无权限
  5. MACOSX下查看某个端口被哪个程序占用及杀进程方法
  6. Kafka+Log4j实现日志集中管理
  7. Python partial
  8. 49 张图详解 WiFi 的 26 个知识点
  9. halfstone 原理_打水漂的原理研究
  10. windows切换窗口快捷键
  11. java公路中轴_技术帖 自行车中轴的种类 入门车友请细读
  12. 计数器+按钮控制数码管显示
  13. .net 在图片上写字
  14. 三子棋(时间智障版)
  15. iOS中根据网络环境显示不同图片
  16. AutoJs学习-投币小游戏
  17. w7计算机防火墙无法更改,Win7电脑系统防火墙设置无法更改解决方法
  18. 校招生向京东发起的“攻势”,做到他这样,你,也可以
  19. CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
  20. 用python制作条形图时出现“posx and posy should be finite values”问题的解决方法

热门文章

  1. python 路径往上一层_Python常用模块之模块、包介绍和相关语法
  2. 阐述一下Mysql事务的四个特性_数据库事务的四个基本性质?
  3. 【细品架构8/100】好代码是架构的根基
  4. js过滤HTML标签以及空格
  5. Swift 中的 @autoclosure
  6. java字符串转换成日期型对象
  7. 数据结构实验之链表二:逆序建立链表
  8. sizeof计算类大小
  9. Shell常用内容汇总
  10. 用Leangoo敏捷看板工具管理 产品线路图