相关主题
{{discussion.title}}
最牛社区
首页
新主题
新回复
热门
注册
登录
Typescript 如此成功,为何没有发展出所谓 “Typthon”?
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 21:53:46') }}
#0
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 21:53:46') }}
#0
作为编程新手,我爱 Python 。我认为这是一个简洁好用的语言,生态丰富,官方文档细致,社区活跃。我本人目前在读研,是做应用数学里面算法方向的,做算法实验的时候,Python 简洁的语法和高质量的数值计算库使得实验编码的效率大大提高。
然而 Python 的类型有点过于灵活,这使得我在写程序的时候不时感到担忧,比如担心传参的时候传入非法的数据然而 IDE 却不能提醒我。类似地,这种强大的灵活性有时也使得调试 Python 程序变得很困难。比方讲假如你的程序里有不止一处语法错误,这些语法错误可能只能在运行时才能被发现。而且似乎运行一次只能找出一处错误,你需要不断地运行才能查找到所有的语法错误。
鉴于 J**ascript-> Typescript 的大获成功,为什么没有发展出所谓的 “Typthon” ?既有 Python 简易的语法,又有很好地的 Python 的互操作性从而可以轻松地继承 Python 丰富的生态和活跃的社区,借助编译器使得调试维护程序更加轻松,岂不美哉?
既然 Microsoft 肯开发 Typescript , 何不也考虑一下“Typthon”呢?感觉会是大庇天下程序员俱欢颜的大好事啊。
{{ getUsernameByUid(9826) }}
发布{{ getTimeInfo('2025-03-21 21:54:25') }}
#1
{{ getUsernameByUid(9826) }}
发布{{ getTimeInfo('2025-03-21 21:54:25') }}
#1
以前有个语言叫 coffeescript
{{ getUsernameByUid(9826) }}
发布{{ getTimeInfo('2025-03-21 21:55:01') }}
#2
{{ getUsernameByUid(9826) }}
发布{{ getTimeInfo('2025-03-21 21:55:01') }}
#2
python 现在也有类型标记
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 21:58:12') }}
#3
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 21:58:12') }}
#3
Coffeescript 似乎不是太流行。不过你举的这个例子为什么说明没有发展出 “Typthon” 呢?
{{ getUsernameByUid(1022) }}
发布{{ getTimeInfo('2025-03-21 21:59:20') }}
#4
{{ getUsernameByUid(1022) }}
发布{{ getTimeInfo('2025-03-21 21:59:20') }}
#4
因为用**通红的人,一般都是小项目或者 demo 性质,大多忙于搬砖哪有空搞这些有的没得。
{{ getUsernameByUid(1203) }}
发布{{ getTimeInfo('2025-03-21 22:07:08') }}
#5
{{ getUsernameByUid(1203) }}
发布{{ getTimeInfo('2025-03-21 22:07:08') }}
#5
你想要的是 typescript 那样的生态,还是类似的语法?
如果说是语法,python 本来就有 type hints 。想写类型标注,现在就可以开始,还不用预先编译。不需要再发明什么 typthon 。
https://docs.python.org/3/library/typing.html
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:07:50') }}
#6
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:07:50') }}
#6
现在也有用 Python 写大型项目的了吧,Typescript 不就是这么出来的么?干这种编程语言改造工作的肯定不是只能写小项目的等闲之辈。Microsoft 大佬如云,他们自己也用的很多,按理说应该是有这种条件的。
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:10:41') }}
#7
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:10:41') }}
#7
但是类型标注和 Typescript 那样的类型系统的差距还是很大的呀。不仅是类型的问题,还有编译器对于调试和维护相对复杂的代码也是很有帮助的。
{{ getUsernameByUid(242) }}
发布{{ getTimeInfo('2025-03-21 22:21:30') }}
#8
{{ getUsernameByUid(242) }}
发布{{ getTimeInfo('2025-03-21 22:21:30') }}
#8
我想到了一个原因:前端是没得选,迫不得已需要 Typescript 来曲线救国。但后端( Python 所在的领域)有一大堆静态语言,你选择 Python 只是偏好,而不是必须。
对于公司来说,“偏好”不太重要,有现成的静态语言直接拿来用就行,因此各家公司对 Typthon 的兴趣不大。而个人又没那个时间精力。
{{ getUsernameByUid(242) }}
发布{{ getTimeInfo('2025-03-21 22:24:30') }}
#9
{{ getUsernameByUid(242) }}
发布{{ getTimeInfo('2025-03-21 22:24:30') }}
#9
而且,搞个 Typthon ,最后编译为 Python 代码,还得忍受运行效率低。那还不如直接用 Go, Rust, J**a 之类的,既有静态编译,运行效率又高,何苦执着 Python 。
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:39:59') }}
#10
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 22:39:59') }}
#10
{{ getUsernameByPostNum(9) }}
#9 您说的这个似乎有点道理。可能是觉得编译成 Python 不太划算,那么有没有可能编译成比 Python 更低级更快的机器码什么之类的?以及为什么 J**aScript 能一统前端江湖,后端却没有,感觉前端的花样反而比后端多呀。
{{ getUsernameByUid(14067) }}
发布{{ getTimeInfo('2025-03-21 22:42:51') }}
#11
{{ getUsernameByUid(14067) }}
发布{{ getTimeInfo('2025-03-21 22:42:51') }}
#11
看看 Nuitka 。
{{ getUsernameByUid(13700) }}
发布{{ getTimeInfo('2025-03-21 23:19:02') }}
#12
{{ getUsernameByUid(13700) }}
发布{{ getTimeInfo('2025-03-21 23:19:02') }}
#12
因为已经有 Go 语言了。
{{ getUsernameByUid(4896) }}
发布{{ getTimeInfo('2025-03-21 23:22:11') }}
#13
{{ getUsernameByUid(4896) }}
发布{{ getTimeInfo('2025-03-21 23:22:11') }}
#13
你把 type checker 开 strict ,不用 any 不用 cast ,也能体会到写静态语言的感觉
{{ getUsernameByUid(5672) }}
发布{{ getTimeInfo('2025-03-21 23:37:01') }}
#14
{{ getUsernameByUid(5672) }}
发布{{ getTimeInfo('2025-03-21 23:37:01') }}
#14
需要有足够的动力开发,和足够的驱动力让人使用。 比如 Kotlin 是好,但让 J**a 的转动力没 JS 到 TS 那么强。要足够成功,CoffeeScript 就是一个失败的例子。
最最最重要的,前端真的没得选,只能在 JS 路径上找最优解。 后端,PHP 、J**a 、Python, C#,GO 甚至 Rust c++ erlang 等等, 你想要什么风格的就有什么风格的
{{ getUsernameByUid(1319) }}
发布{{ getTimeInfo('2025-03-21 23:46:36') }}
#15
{{ getUsernameByUid(1319) }}
发布{{ getTimeInfo('2025-03-21 23:46:36') }}
#15
天堂有路你不走,地狱无门自来投
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 23:50:25') }}
#16
{{ getUsernameByUid(14066) }}
发布{{ getTimeInfo('2025-03-21 23:50:25') }}
#16
劳烦您明确赐教。
{{ getUsernameByUid(1319) }}
发布{{ getTimeInfo('2025-03-22 00:05:38') }}
#17
{{ getUsernameByUid(1319) }}
发布{{ getTimeInfo('2025-03-22 00:05:38') }}
#17
回错地方了,不好意思
{{ getUsernameByUid(14068) }}
发布{{ getTimeInfo('2025-03-22 00:13:13') }}
#18
{{ getUsernameByUid(14068) }}
发布{{ getTimeInfo('2025-03-22 00:13:13') }}
#18
mojo?
{{ getUsernameByUid(14069) }}
发布{{ getTimeInfo('2025-03-22 09:45:50') }}
#19
{{ getUsernameByUid(14069) }}
发布{{ getTimeInfo('2025-03-22 09:45:50') }}
#19
J**aScript 基础语法亘古不变,Python 还没稳定。
{{ getUsernameByUid(post.updatedByUid) }}
编辑于 {{ getTimeInfo(post.UpdatedAt) }}
{{ getUsernameByUid(post.uid) }}
发布于 {{ getTimeInfo(post.CreatedAt) }}
# {{post.num}}
{{ getUsernameByUid(post.updatedByUid) }}
编辑于 {{ getTimeInfo(post.UpdatedAt) }}
{{ getUsernameByUid(post.uid) }}
发布于 {{ getTimeInfo(post.CreatedAt) }}
# {{post.num}}
{{ getUsernameByPostNum(post.mentionNum) }}
登录回复
#{{nav.post.anchor}}
{{ alert.text }}
关闭