![]() | 1 raysonx 2019-12-18 21:24:37 +08:00 via iPhone ![]() 3.9 3.10 3.11 3.12 ... 3.10086 |
![]() | 2 Tink PRO 不会 |
![]() | 3 MinQ 2019-12-18 21:31:31 +08:00 via Android ![]() 最后版本号可以是 3.141592653 嘛 |
![]() | 4 wtks1 2019-12-18 21:33:45 +08:00 via Android 说不定直接从 python3 变成 python+了呢 |
5 Xuyiyang23333 2019-12-18 21:35:08 +08:00 @raysonx 23333。 |
![]() | 6 shintendo 2019-12-18 21:42:01 +08:00 python 2020 |
![]() | 7 tiedan 2019-12-18 21:44:05 +08:00 python 3 plus |
![]() | 8 linvaux 2019-12-18 21:50:12 +08:00 via Android ![]() Python3A,Python4 多不吉利 |
![]() | 9 lhx2008 2019-12-18 21:53:23 +08:00 如果向前兼容的话,就还是 3.10 3.11 ,不向前兼容才是 4.0,并不是 Java 和 Chrome 那种只管加主版本 |
![]() | 10 ipwx 2019-12-18 21:53:49 +08:00 via Android ![]() 楼主你需要理解 semver |
![]() | 11 Pastsong 2019-12-18 21:54:17 +08:00 via Android ![]() 3.n 就要用完了还行,是谁规定 n<10 的? |
![]() | 13 mimzy 2019-12-18 22:09:48 +08:00 不会。「 Python 4.0 will merely be "the release that comes after Python 3.9". (Also the release after 3.9 will probably just be 3.10.) 」另外 GIL 不是那么容易去掉的。 http://www.curiousefficiency.org/posts/2014/08/python-4000.html |
![]() | 14 miniyao OP ![]() @raysonx 这个命名方式今后会造成很大的困惑,比如 Python 3.6 和 Python 3.60 看起来很像,其实相隔了 54 个小版本。 |
![]() | 15 leavic 2019-12-18 22:11:35 +08:00 真拥抱多 CPU 核心了我管他兼容不兼容,一定上。 |
![]() | 16 echo1937 2019-12-18 22:12:35 +08:00 ![]() emm,Python 这个语言如果不搞好 Python Specification 的,靠 CPython 修修补补,很难解决所谓的多核心问题。 |
![]() | 17 mimzy 2019-12-18 22:13:16 +08:00 |
![]() | 18 raysonx 2019-12-18 22:19:58 +08:00 via iPhone @miniyao 然而这种版本命名方式已经成为现在绝大多数著名软件所用了,包括 Linux 内核 kubernetes Nginx 之类的 |
19 DefoliationM 2019-12-18 22:29:25 +08:00 via Android ? 3.10 3.11 3.10000 被你吃了? |
20 imgse 2019-12-18 22:31:14 +08:00 python 是要作死吗? python2 和 3 的兼容问题,才快解决完。 |
21 xpresslink 2019-12-18 22:55:07 +08:00 ![]() 给楼主科普一下 Python 的版本号知识。 实际所有的官方 release 版本号都是由完整三段组成的,分别是:major.minior.micro,每段不限于 1 位数,比如 3.12.34 这是合法的。 major 号变化是翻天覆地的。 minior 号变化说明有新增功能或功能变更, micro 变化没有功能不同,只是优化或解决 bug 官方说明: https://www.python.org/dev/peps/pep-0440/ python 的三方库都执行这个规则定版本号。比如 django 1.11.27 |
22 ys0290 2019-12-18 23:01:09 +08:00 via iPhone 别啊,3 的手册还没看完呢 |
23 hakono 2019-12-18 23:21:04 +08:00 @Pastsong 但是作为一个正常程序猿的思维,n 会自然地被作为 string 中的一个字符来看待,而不是数字中的自然数 n。 比如 3.11 会首先觉得是 3.1 的子版本而不是十一 因为这种思维上的问题,早就出过不止一次问题了。最经典的应该就是当年 windows 10 发布,因为 windows 获取系统版本的 api,返回的版本号是 10.0,导致很多软件只取第一个字符,把系统版本编号当成了 1,认为系统版本过老拒绝启动 顺便贴一下 MSDN 上的各个系统对应的版本数字,也让大家来想想,如果自己处在 windows xp 或者 windows 7 的时代,面对这么缓慢增长的版本数字,当时肯定会觉得,在有生之年微软也不回把版本跌倒到 10。然而谁也没想到,微软直接来了个 win10。如果自己处在那个时代,是否能避免上面说的 BUG ? Operating system Version number Windows 10 10.0* Windows Server 2019 10.0* Windows Server 2016 10.0* Windows 8.1 6.3* Windows Server 2012 R2 6.3* Windows 8 6.2 Windows Server 2012 6.2 Windows 7 6.1 Windows Server 2008 R2 6.1 Windows Server 2008 6.0 Windows Vista 6.0 Windows Server 2003 R2 5.2 Windows Server 2003 5.2 Windows XP 64-Bit Edition 5.2 Windows XP 5.1 Windows 2000 5.0 |
![]() | 24 KyonLi 2019-12-18 23:39:00 +08:00 via iPhone @hakono #23 那我属于不正常的,可能是因为第一次有意识的看版本号就是三段的,导致我产生了要用以.分隔后的正整数来比较大小的错误习惯 |
![]() | 25 Pastsong 2019-12-18 23:41:42 +08:00 ![]() @hakono 作为一个程序员,你不仅要知道被广泛使用的 SemVer https://semver.org/ ( Python,Node.js ,Go,PHP 等),还要知道版本只是一个约定的规范,软件可以自由地使用任何版本系统,比如 Windows 10 Version 1903 Build 18362.535 ,Java SE 8u231,TeX 3.14159265 |
![]() | 26 Vegetable 2019-12-18 23:44:19 +08:00 |
![]() | 27 Osk 2019-12-18 23:49:18 +08:00 via Android 同不正常,导致数学上比较 1.11 和 1.2 这种,下意识觉得 1.11 更大,但仔细一想又发觉哪里好像不对劲。。。 |
![]() | 28 toptyloo 2019-12-18 23:53:34 +08:00 via Android 不会 |
![]() | 29 wwqgtxx 2019-12-18 23:58:01 +08:00 via iPhone ![]() @hakono 包括但不限于 linux 内核,nodejs,golang 都在大量的使用 n>10 的版本号,可能你要想想什么才是正常程序猿的思维了 |
![]() | 31 Felldeadbird 2019-12-19 00:09:21 +08:00 via iPhone 所以我还是没理解到 1 和 10 难道不是区别很大的版本?唔…? |
![]() | 32 zdnyp 2019-12-19 00:09:59 +08:00 老实说,经历了 2、3 的噩梦,应该不会重蹈覆辙了。 |
![]() | 33 pyscream 2019-12-19 01:04:25 +08:00 可以采用巨硬的风格,直接 python 10 |
34 lqf96 2019-12-19 03:17:30 +08:00 ![]() @echo1937 现在 Python 官方正在推 Sub-interpreter,应该有望解决多线程的问题,简单来说就是每个 interpreter 运行在一个线程上,各自拥有自己的 GIL,唯一的问题就是需要 c 库更新代码... |
36 laike9m 2019-12-19 03:58:09 +08:00 via Android @lqf96 Python 官方并没有推多解释器,它目前还只是个 pep,说是 Eric Snow 的个人项目都没问题 |
37 charlie21 2019-12-19 04:04:01 +08:00 via Android ![]() 半只脚踏进坟墓的东西了也能聊真是 |
38 arischow 2019-12-19 07:31:22 +08:00 via iPhone 为什么你不去搜索? |
39 superrichman 2019-12-19 07:35:33 +08:00 via iPhone @hakono 版本号中的点是分隔符不是数学意义上的小数点。点分隔的每个数字都是独立的,不存在数字不够用的说法。参考 pep-440。https://www.python.org/dev/peps/pep-0440/ |
![]() | 40 nullcc 2019-12-19 08:00:46 +08:00 3.9 后面应该是 3.10 而不是 4.0 |
![]() | 41 lwh0328 2019-12-19 08:05:20 +08:00 via iPhone Python3S, python3SE, python3S Max, python3S Max Lite Pro. |
![]() | 42 xnode 2019-12-19 08:18:30 +08:00 p++ p# |
43 AM2coder 2019-12-19 08:22:15 +08:00 via Android 楼歪得厉害 |
45 kneep 2019-12-19 08:38:36 +08:00 via iPhone 这个数字可以两位数甚至三位数 |
46 hakono 2019-12-19 08:59:25 +08:00 via Android @Pastsong @wwqgtxx @superrichman 请勿理解歪我想说的观点,我说的是对程序员来说,对版本号的理解直觉性的会觉得 3.11 是 3.1 的子版本,而不是十一。 这和任何版本规范无关,而是直觉性的,下意识的行为 这种思维方式的原因是,在编程时,通过获取版本号的 api 得到的版本号是个字符串 string,而不是 int。在用代码对版本号进行处理时自然会使用字符串的逻辑来处理版本号而不是数字。而处理版本号时很多人会选择使用字符串截断来获取主、子版本号,而这就是我说的这种思维的根源。 这也是我举例 Windows10 例子的原因 请问在 xp 或 win7 时代写一个判断系统版本的逻辑,你们能否避免我上个回帖中提到的那个 bug ? |
![]() | 48 siganushka 2019-12-19 09:09:08 +08:00 有必要 Google 一下“版本语义化” |
![]() | 49 weixiangzhe 2019-12-19 09:09:34 +08:00 @hakono 那你需要自行适应了,现在开源的软件我看都是这样的 |
![]() | 50 qping 2019-12-19 09:10:44 +08:00 @hakono #46 在特定的年代,人的思维会有局限性,就像过去的人不会想到 windows 版本还能变成 2 位数,导致只取第一位作为版本,不够健壮。 时代在发展,要以发展的眼光看待问题,出现新的问题就想新的解决方法,而不应该紧抱固有的思维,你说对不对 |
![]() | 51 qping 2019-12-19 09:14:58 +08:00 @hakono #46 很多规范是因为过去太不规范了,大家对于版本号都有一套自己的理解,导致出现的各种问题。规范的出现,是对版本认知的统一。以字符点 "." 分割来获取主版本、子版本、补丁版本号。这样一目了然,自然不会再出现过去这种只取第一位作为主版本的现象。 |
52 jeffersonpig 2019-12-19 09:18:06 +08:00 ![]() @hakono 可能只有你有这样的直觉…… |
![]() | 53 zpf124 2019-12-19 09:21:46 +08:00 @hakono 你的理解是你个人的理解,不是程序员的理解,不是程序员都会觉得 3.11 和 3.1 有关联的。 3 段式版本号算是最常见最普遍的一种命名方式了,多接触几种语言或者几个项目都不会有你这总想法。 linux 4.1.x 和 4.19.x nginx 1.1.x 和 1.16.x docker 1.1.x 和 docker 1.17.x |
![]() | 54 wwqgtxx 2019-12-19 09:31:57 +08:00 ![]() @hakono 对于 python 来说,最简单的办法就是 >>> sys.version_info sys.version_info(major=3, minor=7, micro=2, releaselevel='final', serial=0) 这样来解析版本号才是官方推荐的方法,而不是解析字符串 如果真的要解析字符串,请用“.”来分割字符串,而不是简单的靠第几位去匹配 |
![]() | 55 1239305697 2019-12-19 09:40:38 +08:00 ![]() @hakono 不要随便代表别的程序员。。 |
![]() | 56 Vegetable 2019-12-19 09:43:25 +08:00 实际上 python4 已经出现在官方一些讨论中了,为什么都在聊 semver? |
![]() | 57 dafsic 2019-12-19 09:44:11 +08:00 就说下你们对 3.11 怎么读就知道了,读成三点一一的?还是读成三点十一的就好了? |
![]() | 59 HyHyemmm 2019-12-19 09:49:59 +08:00 新语言我只认 swift 1234 |
60 Illusionary 2019-12-19 09:53:20 +08:00 Python Pro Max |
61 OceanSea 2019-12-19 09:54:24 +08:00 Python 3s or Python 3 Pro |
![]() | 62 robinlovemaggie 2019-12-19 09:54:41 +08:00 最终 all python == one python, 因为 CPU 的发展最后归于量子计算,单核秒一切~ |
![]() | 63 shawnLuo 2019-12-19 09:55:03 +08:00 via Android Python3 max Python3 max pro Python3 max pro plus |
![]() | 68 janxin 2019-12-19 10:07:29 +08:00 python 3 plus plus |
69 ungrown 2019-12-19 10:09:07 +08:00 @hakono #46 你所描述的压根不是什么思维 仅仅只是特定场合下的方法 请不要因为你只会这一种方法就觉得这是正常思维 什么你说你不光只会这一种方法会的方法多了去了? 那就更奇怪了为什么你非要认定这一种方法能代表思维 |
![]() | 72 qakito 2019-12-19 10:20:37 +08:00 偷偷告诉楼主,perl 已经 5.30 了哟 |
73 djFFFFF 2019-12-19 10:25:34 +08:00 @hakono 难道不是对非程序员来说,3.10 看起来像 3.1 的子版本,对程序员来说,3.10 看起来就是 3 的第 10 个版本?你有这种直觉只能说还是业余程序员吧 |
74 hakono 2019-12-19 10:31:30 +08:00 via Android @qping 在有三段式或遵守特定版本命名规范的情况下,的确这个问题不是很大。比如 Python 比如 win10 各个版本的。 可能我上面的回复加的限定还不够多,导致很多人误解,这种直觉性的东西针对的是没有遵照特定版本命名规范或者随性命名的情况。可能我顺手用了 3.11 和 3.1 导致很多人觉得我在说 Python,但我想表达的是这种情况:某个软件,没有遵照版本命名规范的版本或系统,随手定了个版本号比如 1.1,这种情况下直觉性地会觉得 1.11 是 1.1 的子版本,这和命名规则无关 当然,上面我说了所有程序员,代表了所有人的确有失偏颇。可能是因为我最早从 Win32 编程还是主流的那个时代起步的,版本命名不够规范的影响还留着点,时代在发展当年根本没人相信也没考虑到 Windows 能迭代到 10.0,导致程序设计不健壮 但其实也并不是想说要否定版本命名规范这东西,直觉这东西形成了就不好改,每次看版本号我的思维都是 1.11 哦 1.1 的子版本,然后马上又提醒自己 11 是十一不是 1 |
![]() | 75 wwqgtxx 2019-12-19 10:47:35 +08:00 @hakono 其实你说的这个问题和千年虫问题很像,当初也是用两位数来标记年份,又有谁想到了会进入 2000 年。 不过在现在这个年头应该不会再有程序还在抱着两位年份来做了吧,所以观念是会变的,只要大部分人都遵循这个命名规范,其实就不会产生什么歧义了 |
![]() | 76 marcong95 2019-12-19 10:50:20 +08:00 @hakono #23 windows 版本号的问题其实根本不是对版本号的理解的问题,你抛开程序员的思路,把那个版本号当普通数字来比较也是完全可行的,10.0 > 6.x > 5.x。而且也没出现 3.10 > 3.9 的这种情况。先 atof 然后比较,在已经发布了的 windows 内核版本号上一点问题都没有。 只不过是当年的人过分武断认为版本号在软件的生命周期内没可能上到两位数,这无论如何都是错误的编码方式 |
78 ungrown 2019-12-19 11:07:21 +08:00 ![]() @djFFFFF #73 不,就算非软件从业者,看到 3.10 ,也不会马上联想到 3.1,因为中间那个小数点实在太扎眼,如果 0 算是修订版编号的话,为什么前面要有一个小数点?说不过去的! dota 的地图版本就是一个例子,多少年了版本号一直遵循 x.xx 的格式,但是新图出来很多 bug 要修复怎么标注修订版呢?数字后面加小写字母,比如 7.23e 这样。 诚然玩 dota 的有不少软件从业者,但更多的是无软件开发背景的人,他们能轻松理解两位数子版本的含义,也能理解为什么要额外加一个字母来代表修正版。 所以说,根本不存在什么“程序员思维”,搞软件开发过程中产生的各种习俗规则,本质上是为了实用性,而实用性是放之四海而皆能被理解的,版本号这个东西不存在说什么只有程序员能看懂。随便一个人看到 3.1 和 3.10 ,也不会不假思索认定这俩号之间除了前面的 3 之外有其他关联。 |
![]() | 79 xxm459259 2019-12-19 11:32:14 +08:00 一看 LZ 就没做过 Leetcode 165... https://leetcode.com/problems/compare-version-numbers/ |
80 jellyspot 2019-12-19 12:18:59 +08:00 你以为 9 完了就归零了?还是两位数三位数啊 |
![]() | 81 crella 2019-12-19 12:27:46 +08:00 via Android div class="reply_content">@qakito 编译 perl6 还真需要 2G 以上内存……还好提前看了一下说明书 |
![]() | 82 GG668v26Fd55CP5W 2019-12-19 12:31:11 +08:00 via iPhone ![]() 你对版本号的认识有点业余…… |
![]() | 83 yzlnew 2019-12-19 12:37:22 +08:00 你对版本号的认识相当业余…… |
![]() | 84 U7Q5tLAex2FI0o0g 2019-12-19 12:38:43 +08:00 谁告诉你 3.9 以后版本号就用完了??????? 此处可以 @ 迷惑行为大赏 |
85 lolizeppelin 2019-12-19 12:39:37 +08:00 哼! php 能 7 得, 我 python 就不能 8 ? |
![]() | 86 U7Q5tLAex2FI0o0g 2019-12-19 12:40:47 +08:00 你对版本号的认识相当业余…… |
87 zgq3337 2019-12-19 12:44:37 +08:00 via Android 都有量子了,可以是“3.量” |
![]() | 89 下个版本 python5 妥妥的 |
![]() | 91 xingheng 2019-12-19 13:37:21 +08:00 via iPhone @hakono 比较版本号直接用 string comparion 还好意思说,不是说很多人那样用了就变成规范了。 iOS 9 升到 10 的时候不也是很多菜鸟犯了这个错误,老老实实修 bug 就对了。 |
![]() | 92 blindpirate 2019-12-19 13:53:26 +08:00 @ungrown 你确实是一个人。。。不要代表其他程序员。 |
![]() | 93 blindpirate 2019-12-19 13:55:11 +08:00 |
![]() | 94 tt67wq 2019-12-19 14:54:48 +08:00 我赌五毛不会拥抱多核心 |
![]() | 95 xypty 2019-12-19 14:56:22 +08:00 python 365 |
![]() | 96 fhsan 2019-12-19 15:07:52 +08:00 你号没了 |
97 foxyier 2019-12-19 15:32:38 +08:00 python3.8 文档里明确写了会有 python3.10 |
98 wangxiaoaer 2019-12-19 16:17:56 +08:00 所以如果用 3-6-1 3-60-1 这种表示方法就不会疑惑了。 |
![]() | 99 msg7086 2019-12-19 16:51:12 +08:00 你们还真别说,Windows 3.11 就是 Windows 3.1 的增强版,后来又出了个 Windows 3.2。 不过现在版本号都有更多的意义了,不像当时那样拍脑瓜写数字,所以应该不太容易误解就是了。 |
![]() | 100 nomemo 2019-12-19 17:44:39 +08:00 只是版本号有什么困难的。 |