1
Leviathann 1 天前
以前有个语言叫 coffeescript
|
2
Leviathann 1 天前 ![]() python 现在也有类型标记
|
3
JYLu OP @Leviathann Coffeescript 似乎不是太流行。不过你举的这个例子为什么说明没有发展出 “Typthon” 呢?
|
![]() |
4
povsister 1 天前
因为用屁眼通红的人,一般都是小项目或者 demo 性质,大多忙于搬砖哪有空搞这些有的没得。
|
![]() |
5
DOLLOR 1 天前
你想要的是 typescript 那样的生态,还是类似的语法?
如果说是语法,python 本来就有 type hints 。想写类型标注,现在就可以开始,还不用预先编译。不需要再发明什么 typthon 。 https://docs.python.org/3/library/typing.html |
6
JYLu OP @povsister 现在也有用 Python 写大型项目的了吧,Typescript 不就是这么出来的么?干这种编程语言改造工作的肯定不是只能写小项目的等闲之辈。Microsoft 大佬如云,他们自己也用的很多,按理说应该是有这种条件的。
|
![]() |
8
cmdOptionKana 1 天前 ![]() 我想到了一个原因:前端是没得选,迫不得已需要 Typescript 来曲线救国。但后端( Python 所在的领域)有一大堆静态语言,你选择 Python 只是偏好,而不是必须。
对于公司来说,“偏好”不太重要,有现成的静态语言直接拿来用就行,因此各家公司对 Typthon 的兴趣不大。而个人又没那个时间精力。 |
![]() |
9
cmdOptionKana 1 天前
而且,搞个 Typthon ,最后编译为 Python 代码,还得忍受运行效率低。那还不如直接用 Go, Rust, Java 之类的,既有静态编译,运行效率又高,何苦执着 Python 。
|
10
JYLu OP @cmdOptionKana #9 您说的这个似乎有点道理。可能是觉得编译成 Python 不太划算,那么有没有可能编译成比 Python 更低级更快的机器码什么之类的?以及为什么 JavaScript 能一统前端江湖,后端却没有,感觉前端的花样反而比后端多呀。
|
11
zk8802 1 天前 via iPhone
看看 Nuitka 。
|
![]() |
12
szzhiyang 1 天前 ![]() 因为已经有 Go 语言了。
|
![]() |
13
Trim21 1 天前 via Android
你把 type checker 开 strict ,不用 any 不用 cast ,也能体会到写静态语言的感觉
|
![]() |
14
nanajj 1 天前
需要有足够的动力开发,和足够的驱动力让人使用。 比如 Kotlin 是好,但让 Java 的转动力没 JS 到 TS 那么强。要足够成功,CoffeeScript 就是一个失败的例子。
最最最重要的,前端真的没得选,只能在 JS 路径上找最优解。 后端,PHP 、Java 、Python, C#,GO 甚至 Rust c++ erlang 等等, 你想要什么风格的就有什么风格的 |
15
tanhui2333 1 天前
天堂有路你不走,地狱无门自来投
|
16
JYLu OP @tanhui2333 劳烦您明确赐教。
|
17
tanhui2333 1 天前
@JYLu 回错地方了,不好意思
|
18
chonh 1 天前 via iPhone
mojo?
|
![]() |
19
loading 20 小时 39 分钟前
JavaScript 基础语法亘古不变,Python 还没稳定。
|
20
xgdgsc 19 小时 54 分钟前
真没那么多人喜欢 Python 的语法缩进和 OOP ,你这标题一开始我还以为是 https://github.com/Suzhou-Tongyuan/jnumpy/tree/main/TyPython 这个 julia 和 python 交互的包呢。 最近 colab 支持了 julia 可以试试 https://juliahub.com/blog/julia-now-available-on-google-colab
|
![]() |
21
biochen 19 小时 52 分钟前 ![]() 我的主要写 Python ,也以 Python 的方式写过 C++。因为用 Django 做网站,也写一点 JavaScript 代码。
Python 和 C++非常优雅,JavaScript 则是一言难尽。 举例:a = 1, b = "2", a + b = ? Python 会报类型错误,TypeError: unsupported operand type(s) for +: 'int' and 'str'。 JavaScript 的答案是"12"。 Python 是动态类型,但是强类型,不会隐式转换类型。C++是静态类型,数字 a ,其实也可以转换为字符 b ,不能重用变量名 a 而已; Python 的动态类型,更加方便,可以看成语法糖。C++的变量都有显式的定义,阅读 C++代码,可以清楚地知道每一步的输入和输出是什么。Python 的变量可以是隐式定义,根据变量值,Python 选一个合适的变量类型; Python 的变量类型还能改变。读 Python 代码时,不借助代码阅读工具提示变量类型,非常地吃力。所以,type hints 出现了,可以像 C++那样显性标注类型,方便人类阅读。 JavaScript 也是动态类型,但是是弱类型,1 + "2"会隐式转换得到"12"这个结果。你其实是忘记将"2"转换成 2 了,你本来期待的结果是 3 ,结果 JavaScript 得到了一个错误的答案“12”,而没有报错。 JavaScript 粉可能会觉得,你看我 JavaScript 多么灵活啊,但是这种“灵活”会让程序员有额外的心智负担,需要熟悉这种“灵活”。 JavaScript 推出时非常匆忙,里面的“灵活”或者“坑”太多了,JavaScript 自己还有严格模式。奈何历史负担太大,不能废掉 JavaScript 。所以有 TypeScript 这种严格的 JavaScript ,方便程序员编码和维护,然后翻译成 JavaScript 交给浏览器执行。 Python 一直很严谨,经历 Python2 到 Python3 的升级后,很多不 Python 的特性也修复了,目前社区没有出 Python4 的想法。 |
22
xgdgsc 19 小时 50 分钟前
还可以试试 https://mp.weixin.qq.com/s/6JCJTnuGQbYqMv4N3Ylj3Q 这个编译类型稳定 julia 代码到 cpp 的国产替代 MATLAB 软件
|
![]() |
23
duzhuo 19 小时 30 分钟前
PEP 561 、PEP 484
写出屎山我觉得很多都是故意的 |
![]() |
24
matrix1010 19 小时 28 分钟前 ![]() "作为编程新手,我爱 Python", 我刚当程序员时也是这样想,但用多了 Go 之后越来越嫌弃 Python
|
25
w568w 19 小时 22 分钟前
同楼上,你把类型检查器开到 strict ,写起来和静态语言差不多。
Python 是典型的渐进类型( Gradual Typing )语言。也就是说,你可以标注类型以享受类型检查的好处,也可以不标注类型来快速编码。类似的还有 Dart 的 dynamic 、TypeScript 的 any (如果没禁用的话)、PHP 等。 Python 现在的问题是泛型类型支持太差,很多时候不得不采取一些非常尴尬的写法来标注类型。 |
![]() |
28
biochen 18 小时 49 分钟前
|
29
Alias4ck 18 小时 30 分钟前
js 确实很抽象 至少比 python 抽象多了 ...
[1, 2, 3] + [4, 5, 6]; // -> '1,2,34,5,6' |
![]() |
30
DOLLOR 18 小时 26 分钟前
@biochen
但很多语言是不允许 int 和 bool 未经转换直接参与数学运算的。 像 go 、java 、dart 、swift 都不允许,连 ruby 这种跟 python 同样号称动态+强类型,都不允许。 所以当年 python 2 -> 3 没趁机把这漏网之鱼补上是个失误,后面再说什么理由都只是找补。 |
31
leonshaw 17 小时 57 分钟前 via Android
前端历史原因只能在 JS 上雕花
|
![]() |
32
PopRain 17 小时 34 分钟前
python 本来就是做为胶水语言、为非专业开发人员发明的;用来专业开发软件系统是本末倒置
|
![]() |
33
UnluckyNinja 17 小时 20 分钟前 via Android
python3.5 支持 typing 提示,后端语言确实选择很多,不喜欢 python 的直接就换其他语言了,比如微软直接就 c#了,不像前端只能在 js 上做文章,同时浏览器是微软第一个失去的高地,从另一个方面弥补回来也很正常。虽然很多时候说 xxx 不做总会有别人来做,但更普遍的是 xxx 没做所以现在处于没得用的状态,现在很可能就是后者,推行相关生态的人还没出现
|
![]() |
34
janus77 17 小时 19 分钟前 ![]() 前几年还有很多人在说“人生苦短,我用 Python” 你看这两年还有人提吗?
说白了这语言根本就没有所谓的真的那么让人喜爱,随着你接触到的工程越复杂越是这样。用他只是迫不得已。就这样。 |
![]() |
35
dragondove 17 小时 18 分钟前
@JYLu 和 Typescript 那样的差距很大是指什么?如果说是类型运算方面的,那确实没有,但是仅仅是类型提示、静态检查错误检测,python 已经完全具备了。你只要使用带静态检查的语言服务器开严格模式就可以了。复杂代码也是一样的,python 和 typescript 一样支持字面量类型,union 类型而且还是自带 tag 的 union 类型,这方面反而比 typescript 要好用点。
|
![]() |
36
jqtmviyu 17 小时 12 分钟前
说真的, 我不太喜欢这门需要游标卡尺的语言. 特别是它的定义类型部分.
我喜欢要么彻底放飞自我, 要么严格执行. 偏偏可以在代码里有的地方限制, 有的不限制, 传参时 字符串 列表 字典 一通乱传也不报错, 等到运行时就开始报错了. |
37
Lockroach 17 小时 7 分钟前
每一个语言都有其优势区间和使命,对 py 来说动态类型推导和 type hint 够用了。ts 是因为 js 原生就不支持 type hint ,ts 到 js 还要一层编译。你觉得不够用可以自己 fork 一个 python 实现强制类型标注和增加泛型 feature
|
![]() |
38
june4 16 小时 55 分钟前
@biochen 你不喜欢 js 只是因为你写得少而已。我本来也是 python 写了几年,很讨厌 js 。后来转 js 全栈后 js 语法真香,比 py 舒服。你说的类型问题在 ts 里不存在。
|
39
dayeye2006199 16 小时 50 分钟前 ![]() 我自己写的时候:写 python 还要写 typehint ,不如回家卖红薯
我看别人写的时候:写 python 竟然不写 typehint ,哪个杀千刀的! |
40
kneo 16 小时 42 分钟前 ![]() python 的 typehints 和 typescript 本质是一样的。
虽然就目前的表达能力来讲比 typescript 差很多,但是官方的原生支持在很大程度上消灭了竞争者,与其创建个新的转译层,不如继续改进已有的 typhints 。 > 还有编译器对于调试和维护相对复杂的代码也是很有帮助的 只能说不知所云。TypeScript 便于维护代码的原因就是类型标注和静态类型检查。难道还有别的??? > 觉得编译成 Python 不太划算,那么有没有可能编译成比 Python 更低级更快的机器码什么之类的? 所有语言都是编译成比 Python 更低级的代码。 > 以及为什么 JavaScript 能一统前端江湖,后端却没有,感觉前端的花样反而比后端多呀。 因为 JavaScript 是浏览器的原生语言。这个原生语言比后端的原生语言(机器码)要高级。凑合能用+原生支持在很大程度上消灭了竞争者。 |
41
Tanix2 16 小时 2 分钟前 ![]() 大点的项目我必用 mypy
|
42
JYLu OP @janus77 以前强调 Python 是脚本语言,不适合复杂工程,这倒也没错。然而现在 Python 的大型项目是越来越多了吧,而且这个问题的出发点不就是这样么?推出"Typthon" 使得 Python 更易被应用到大型项目中。
|
43
JYLu OP 同志们,我发这个帖子只是开脑洞而已。没有比较不同语言优劣的意思,大家不要误解。
|
![]() |
44
Felldeadbird 15 小时 35 分钟前
我觉得用 typython 为什么我不用别的开发语言。js 是因为 web 端发展不得不衍生出来的。
|
45
luting 15 小时 29 分钟前 ![]() 想写就去学 Type Hint(类型注解), Python 一直以来这种实现都是君子协定(即人的问题处理人, 程序的问题处理程序, 而不是程序去处理人的问题)
而且如果你好好学过 Python 的话应该知道 Python 是没有严格的私有属性的, 而且这种静态检查是可以通过 mypy 去实现的, 选择权交还给用户, 你可以拿 Python 写静态或不写静态, 所以用 Python 的人才多 你有需求你可以自己用, 但你不能强迫别人也去适应你的需求和习惯(即把类型检查嵌入到解释器中), 如果你喜欢这种严格的约束, 那学 Rust 是更好的选择 如果是喜欢 TypeScript 的静态检查带来的错误提示, 那只是因为 VSCode 自带了 TS 的语言服务器, 你可以给 VSCode 安装 Pylance 插件(这个是 Python 的语言服务器), 并把 Pylance 的类型检查开启为基本状态或者严格状态 (相信我, 如果你的包结构足够复杂, 你是绝对不会喜欢严格的类型检查, 如果说 Go 是在处理错误, 那严格的 Python 就一直在写类型) 培训班或者科班没讲的东西, 不是 Python 没有只是他们没讲, Python 这么多包, 没事多看看优秀的包的源代码 静态类型是非常方便维护的东西, 即让代码明确清晰有自解释, 但是对于 Python 的另一个场景, 大部分普通人拿来当脚本, 写一堆静态类型出了降低效率并不会带来多余的好处. 如果你要开发 Python 包, 那就应该使用静态类型, 如果这是脚本, 除了代码量特别大的, 那就不需要. 简单讲, 你需要在开发速度和可维护性上自己去权衡如何使用, Python 将选择权交还给了用户. 最后, 请尊重别的开发者, 他们在该如何设计编程语言上肯定要比我们这种设计都没设计过的要懂的多. |
![]() |
46
chiaf 15 小时 6 分钟前 via iPhone
虽然没有 tyPython ,但是有 pyScript 🤪
|
47
mark2025 14 小时 55 分钟前 ![]() 帖主看看 Typescript 的首席开发是谁,他以往经历有哪些~~
最主要的是 Typescript 后面是微软,有足够的人力财力可以投入。 |
![]() |
48
iorilu 14 小时 38 分钟前
python 添加类型注解多少年了把
而且这不是强制的 你需要就都添加上呗 |
![]() |
49
ansnail 13 小时 23 分钟前
@JYLu #10 JavaScript 能一统前端江湖靠的不是优秀,而是出生的早,前端花样多,但内核就那么几家。服务器不需要统一的解析标准,能给自家提供数据就行,随便折腾。
|
![]() |
50
twig 13 小时 13 分钟前 via iPhone
除了 type hint 还有 Pydantic 呢。
|
![]() |
51
mdn 12 小时 59 分钟前
因为 JavaScript 无可取代
|
![]() |
52
irisdev 11 小时 38 分钟前
ts 出现时 ie 还没死透,chrome 也还没有一统天下,node.js 生态开始活跃,微软研发 ts 肯定有商业上的考虑。至于 py ,搞这个就吃力不讨好了,何况 py3 已经有类型了
|
![]() |
53
Hopetree 11 小时 12 分钟前
python 现在就是有类型定义的,但是我不喜欢用,python 的优势本身就是编写和实用快捷,如果都写类型,感觉还不如去用 Go
|
54
chenqh 11 小时 7 分钟前
@Hopetree 但是 py 现在可以实现一些自己用的 utils 写类型,业务不写类型.这也是一种优势吧.如果 utils 可以复用的话,写类型还有必要,如果是一次性的,就没有必要写了.
|
![]() |
55
akira 11 小时 3 分钟前
一款语言 ,他有啥没啥 ,那就是这个语言的特性。 不要老想着 A 语言有的东西,B 语言就一定要有。
选择适合自己的语言就是了。 语言本身不重要的 |
56
roundgis 11 小时 2 分钟前 via Android
Python 的 yype hint 和 jsdoc 差不多
當然我現在也是用 jsdoc 比較多 |
![]() |
57
kaki1lI 10 小时 54 分钟前
大型项目用 pydantic 和 mypy 会方便维护,ruff 的语法检查多开一些也有帮助
|
![]() |
58
lts9165 10 小时 2 分钟前
python 有 pydantic ,自由,可以比强类型更强
|
59
Levox 9 小时 33 分钟前
Python Type Hints 简明教程
https://zhuanlan.zhihu.com/p/464979921 |
![]() |
60
qiaobeier 9 小时 22 分钟前
@Leviathann #1 朋友你 40 了吧?
|
![]() |
61
Al0rid4l 8 小时 31 分钟前
社区文化很不一样的, 前端是一个语法还在 stage3 就有一堆项目敢给你上生产, py 从 2 到 3 过渡都用了多少年, 也就比 Java8 好一点吧
抛开社区文化因素, 还有非常重要的一点是, VSCode 在一开始就用了 TypeScript, 且一开始就对前端提供了一流的支持(开箱即用的补全和浏览器 Node 调试), 并且 VSCode 飞速发展取得巨大成功带来的示范效应也是很足, 这种重量级应用不亚于 Docker K8s 之于 Go, JS 四个爹, 三个传说级(水果 Google MS)一个史诗级(Moz), TS 亲爹 Anders 也是传说级, 从社区, 到背后公司(钱), 到设计者(品味), 到重量级应用(光环示范), TS 是属于是 buff 叠满了 VSC 和 TS 差不多同时出生, 互相成就, 假如 VSC 一开始没多久就烂了, 那指不定 TS 可能又是另一个 Flow, 在人们眼里可能也就一个普通的大公司内部用的小众语言罢了, 再叠个强运 buff ( |
![]() |
62
me1onsoda 8 小时 22 分钟前
因为 Python 不是工业编程语言吧,就是很少用来做业务的。
|
![]() |
63
me1onsoda 8 小时 16 分钟前
说来也挺奇怪的,都说前端娱乐圈,结果在编程语言上 js 一家独大,居然没得选,没人在编程语言上动歪脑筋搞 kpi 。后端却娱乐地五花八门。
|
64
Leviathann 8 小时 9 分钟前
@qiaobeier 我只是听过 没用过
|
65
junkun 7 小时 52 分钟前
@DOLLOR bool 在 python 里实际上是 int 的子类,issubclass(bool, int) == True 。虽然定义有些魔法,但是既然是子类不能计算反而也很奇怪。
|
66
wizardyhnr 7 小时 35 分钟前
你要找的是不是 Mojo?
|
![]() |
67
nirnovo 7 小时 33 分钟前
typthon? 认真的吗? 中文翻译成胎神???
|