跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 4 会不会又是一门新语言?
未分類
14 2 月 2020

Python 4 会不会又是一门新语言?

Python 4 会不会又是一门新语言?

資深大佬 : miniyao 55

历史原因 Py3 不兼容 Py2,现在 Python 3 已经到 3.8,3.9 了,很快 3.n 的数字要用完了,版本号应该 4.0 起跳了。Python 4 会借大版本号,再搞一次大跃进吗?全面拥抱多核心 CPU ?
大佬有話說 (100)

  • 資深大佬 : raysonx

    3.9 3.10 3.11 3.12 … 3.10086

  • 資深大佬 : Tink

    不会

  • 資深大佬 : MinQ

    最后版本号可以是 3.141592653 嘛

  • 資深大佬 : wtks1

    说不定直接从 python3 变成 python+了呢

  • 資深大佬 : Xuyiyang23333

    @raysonx 23333。

  • 資深大佬 : shintendo

    python 2020

  • 資深大佬 : tiedan

    python 3 plus

  • 資深大佬 : linvaux

    Python3A,Python4 多不吉利

  • 資深大佬 : lhx2008

    如果向前兼容的话,就还是 3.10 3.11 ,不向前兼容才是 4.0,并不是 Java 和 Chrome 那种只管加主版本

  • 資深大佬 : ipwx

    主你需要理解 semver

  • 資深大佬 : Pastsong

    3.n 就要用完了还行,是谁规定 n<10 的?

  • 資深大佬 : lhx2008

    @lhx2008 #9 向前 -> 向后

  • 資深大佬 : mimzy

    不会。「 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

  • 主 資深大佬 : miniyao

    @raysonx 这个命名方式今后会造成很大的困惑,比如 Python 3.6 和 Python 3.60 看起来很像,其实相隔了 54 个小版本。

  • 資深大佬 : leavic

    真拥抱多 CPU 核心了我管他兼容不兼容,一定上。

  • 資深大佬 : echo1937

    emm,Python 这个语言如果不搞好 Python Specification 的,靠 CPython 修修补补,很难解决所谓的多核心问题。

  • 資深大佬 : mimzy

    @miniyao #14 https://semver.org/

  • 資深大佬 : raysonx

    @miniyao 然而这种版本命名方式已经成为现在绝大多数著名软件所用了,包括 Linux 内核 kubernetes Nginx 之类的

  • 資深大佬 : DefoliationM

    ? 3.10 3.11 3.10000 被你吃了?

  • 資深大佬 : imgse

    python 是要作死吗? python2 和 3 的兼容问题,才快解决完。

  • 資深大佬 : xpresslink

    给主科普一下 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

  • 資深大佬 : ys0290

    别啊,3 的手册还没看完呢

  • 資深大佬 : hakono

    @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

  • 資深大佬 : KyonLi

    @hakono #23 那我属于不正常的,可能是因为第一次有意识的看版本号就是三段的,导致我产生了要用以.分隔后的正整数来比较大小的错误习惯

  • 資深大佬 : Pastsong

    @hakono 作为一个程序员,你不仅要知道被广泛使用的 SemVer https://semver.org/ ( Python,Node.js ,Go,PHP 等),还要知道版本只是一个约定的规范,软件可以自由地使用任何版本系统,比如 Windows 10 Version 1903 Build 18362.535 ,Java SE 8u231,TeX 3.14159265

  • 資深大佬 : Vegetable

    变化不会小。
    https://www.python.org/dev/peps/pep-0563/#implementation

  • 資深大佬 : Osk

    同不正常,导致数学上比较 1.11 和 1.2 这种,下意识觉得 1.11 更大,但仔细一想又发觉哪里好像不对劲。。。

  • 資深大佬 : toptyloo

    不会

  • 資深大佬 : wwqgtxx

    @hakono 包括但不限于 linux 内核,nodejs,golang 都在大量的使用 n>10 的版本号,可能你要想想什么才是正常程序猿的思维了

  • 資深大佬 : em70

    @linvaux iphone 4 也不吉利吗

  • 資深大佬 : Felldeadbird

    所以我还是没理解到 1 和 10 难道不是区别很大的版本?唔…?

  • 資深大佬 : zdnyp

    老实说,经历了 2、3 的噩梦,应该不会重蹈覆辙了。

  • 資深大佬 : pyscream

    可以采用巨硬的风格,直接 python 10

  • 資深大佬 : lqf96

    @echo1937 现在 Python 官方正在推 Sub-interpreter,应该有望解决多线程的问题,简单来说就是每个 interpreter 运行在一个线程上,各自拥有自己的 GIL,唯一的问题就是需要 c 库更新代码…

  • 資深大佬 : Trim21

    @Osk 数学上都没有 3.1.4…

  • 資深大佬 : laike9m

    @lqf96 Python 官方并没有推多解释器,它目前还只是个 pep,说是 Eric Snow 的个人项目都没问题

  • 資深大佬 : charlie21

    半只脚踏进坟墓的东西了也能聊真是

  • 資深大佬 : arischow

    为什么你不去搜索?

  • 資深大佬 : superrichman

    @hakono 版本号中的点是分隔符不是数学意义上的小数点。点分隔的每个数字都是独立的,不存在数字不够用的说法。参考 pep-440。https://www.python.org/dev/peps/pep-0440/

  • 資深大佬 : nullcc

    3.9 后面应该是 3.10 而不是 4.0

  • 資深大佬 : lwh0328

    Python3S, python3SE, python3S Max, python3S Max Lite Pro.

  • 資深大佬 : xnode

    p++ p#

  • 資深大佬 : AM2coder

    歪得厉害

  • 資深大佬 : Takamine

    @xnode PHP:想跟我争做世界上最好的语言?:doge:

  • 資深大佬 : kneep

    这个数字可以两位数甚至三位数

  • 資深大佬 : hakono

    @Pastsong
    @wwqgtxx
    @superrichman
    请勿理解歪我想说的观点,我说的是对程序员来说,对版本号的理解直觉性的会觉得 3.11 是 3.1 的子版本,而不是十一。
    这和任何版本规范无关,而是直觉性的,下意识的行为

    这种思维方式的原因是,在编程时,通过获取版本号的 api 得到的版本号是个字符串 string,而不是 int。在用代码对版本号进行处理时自然会使用字符串的逻辑来处理版本号而不是数字。而处理版本号时很多人会选择使用字符串截断来获取主、子版本号,而这就是我说的这种思维的根源。

    这也是我举例 Windows10 例子的原因
    请问在 xp 或 win7 时代写一个判断系统版本的逻辑,你们能否避免我上个回帖中提到的那个 bug ?

  • 資深大佬 : qping

    @hakono #46 你这是错觉,3.1.1 才是 3.1 的子版本。

  • 資深大佬 : siganushka

    有必要 Google 一下“版本语义化”

  • 資深大佬 : weixiangzhe

    @hakono 那你需要自行适应了,现在开源的软件我看都是这样的

  • 資深大佬 : qping

    @hakono #46 在特定的年代,人的思维会有局限性,就像过去的人不会想到 windows 版本还能变成 2 位数,导致只取第一位作为版本,不够健壮。
    时代在发展,要以发展的眼光看待问题,出现新的问题就想新的解决方法,而不应该紧抱固有的思维,你说对不对

  • 資深大佬 : qping

    @hakono #46 很多规范是因为过去太不规范了,大家对于版本号都有一套自己的理解,导致出现的各种问题。规范的出现,是对版本认知的统一。以字符点 “.” 分割来获取主版本、子版本、补丁版本号。这样一目了然,自然不会再出现过去这种只取第一位作为主版本的现象。

  • 資深大佬 : jeffersonpig

    @hakono 可能只有你有这样的直觉……

  • 資深大佬 : zpf124

    @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

  • 資深大佬 : wwqgtxx

    @hakono 对于 python 来说,最简单的办法就是
    >>> sys.version_info
    sys.version_info(major=3, minor=7, micro=2, releaselevel=’final’, serial=0)
    这样来解析版本号才是官方推荐的方法,而不是解析字符串
    如果真的要解析字符串,请用“.”来分割字符串,而不是简单的靠第几位去匹配

  • 資深大佬 : 1239305697

    @hakono 不要随便代表别的程序员。。

  • 資深大佬 : Vegetable

    实际上 python4 已经出现在官方一些讨论中了,为什么都在聊 semver?

  • 資深大佬 : dafsic

    就说下你们对 3.11 怎么读就知道了,读成三点一一的?还是读成三点十一的就好了?

  • 資深大佬 : zhoulifu

    @hakono 换行吧,还来得及

  • 資深大佬 : HyHyemmm

    新语言我只认 swift 1234

  • 資深大佬 : Illusionary

    Python Pro Max

  • 資深大佬 : OceanSea

    Python 3s or Python 3 Pro

  • 資深大佬 : robinlovemaggie

    最终 all python == one python, 因为 CPU 的发展最后归于量子计算,单核秒一切~

  • 資深大佬 : shawnLuo

    Python3 max
    Python3 max pro
    Python3 max pro plus

  • 資深大佬 : ipwx

    @hakono 那我需要强调,我的直觉已经和 python linux 等开元软件相吻合了。。。

  • 資深大佬 : killerv

    @raysonx 每次我都有一种 3.9 比 3.12 版本高的错觉。

  • 資深大佬 : ungrown

    @miniyao #14
    不,一点也不像,谢谢
    3.6 和 3.6.0 很像不假
    60 和 6.0 完全两个含义

  • 資深大佬 : ungrown

    @hakono #23 不会
    你这个想法到底从哪看来的
    不,根本没有什么资料宣传过你所谓的格式
    我看就是你自己想出来的

  • 資深大佬 : janxin

    python 3 plus plus

  • 資深大佬 : ungrown

    @hakono #46
    你所描述的压根不是什么思维
    仅仅只是特定场合下的方法
    请不要因为你只会这一种方法就觉得这是正常思维
    什么你说你不光只会这一种方法会的方法多了去了?
    那就更奇怪了为什么你非要认定这一种方法能代表思维

  • 資深大佬 : ungrown

    @killerv #65 知道是错觉就没事不至于跟这下某些人一样病入膏肓无药可救

  • 資深大佬 : ungrown

    @charlie21 #37
    您烙呢?

  • 資深大佬 : qakito

    偷偷告诉主,perl 已经 5.30 了哟

  • 資深大佬 : djFFFFF

    @hakono 难道不是对非程序员来说,3.10 看起来像 3.1 的子版本,对程序员来说,3.10 看起来就是 3 的第 10 个版本?你有这种直觉只能说还是业余程序员吧

  • 資深大佬 : hakono

    @qping 在有三段式或遵守特定版本命名规范的情况下,的确这个问题不是很大。比如 Python 比如 win10 各个版本的。

    可能我上面的回复加的限定还不够多,导致很多人误解,这种直觉性的东西针对的是没有遵照特定版本命名规范或者随性命名的情况。可能我顺手用了 3.11 和 3.1 导致很多人觉得我在说 Python,但我想表达的是这种情况:某个软件,没有遵照版本命名规范的版本或系统,随手定了个版本号比如 1.1,这种情况下直觉性地会觉得 1.11 是 1.1 的子版本,这和命名规则无关

    当然,上面我说了所有程序员,代表了所有人的确有失偏颇。可能是因为我最早从 Win32 编程还是主流的那个时代起步的,版本命名不够规范的影响还留着点,时代在发展当年根本没人相信也没考虑到 Windows 能迭代到 10.0,导致程序设计不健壮
    但其实也并不是想说要否定版本命名规范这东西,直觉这东西形成了就不好改,每次看版本号我的思维都是 1.11 哦 1.1 的子版本,然后马上又提醒自己 11 是十一不是 1

  • 資深大佬 : wwqgtxx

    @hakono 其实你说的这个问题和千年虫问题很像,当初也是用两位数来标记年份,又有谁想到了会进入 2000 年。
    不过在现在这个年头应该不会再有程序还在抱着两位年份来做了吧,所以观念是会变的,只要大部分人都遵循这个命名规范,其实就不会产生什么歧义了

  • 資深大佬 : marcong95

    @hakono #23 windows 版本号的问题其实根本不是对版本号的理解的问题,你抛开程序员的思路,把那个版本号当普通数字来比较也是完全可行的,10.0 > 6.x > 5.x。而且也没出现 3.10 > 3.9 的这种情况。先 atof 然后比较,在已经发布了的 windows 内核版本号上一点问题都没有。

    只不过是当年的人过分武断认为版本号在软件的生命周期内没可能上到两位数,这无论如何都是错误的编码方式

  • 資深大佬 : GPLer

    @hakono 1.1.1 才是 1.1 的子版本

  • 資深大佬 : ungrown

    @djFFFFF #73
    不,就算非软件从业者,看到 3.10 ,也不会马上联想到 3.1,因为中间那个小数点实在太扎眼,如果 0 算是修订版编号的话,为什么前面要有一个小数点?说不过去的!
    dota 的地图版本就是一个例子,多少年了版本号一直遵循 x.xx 的格式,但是新图出来很多 bug 要修复怎么标注修订版呢?数字后面加小写字母,比如 7.23e 这样。
    诚然玩 dota 的有不少软件从业者,但更多的是无软件开发背景的人,他们能轻松理解两位数子版本的含义,也能理解为什么要额外加一个字母来代表修正版。
    所以说,根本不存在什么“程序员思维”,搞软件开发过程中产生的各种习俗规则,本质上是为了实用性,而实用性是放之四海而皆能被理解的,版本号这个东西不存在说什么只有程序员能看懂。随便一个人看到 3.1 和 3.10 ,也不会不假思索认定这俩号之间除了前面的 3 之外有其他关联。

  • 資深大佬 : pandachow

    一看 LZ 就没做过 Leetcode 165… https://leetcode.com/problems/compare-version-numbers/

  • 資深大佬 : moweiraul

    你以为 9 完了就归零了?还是两位数三位数啊

  • 資深大佬 : crella

    @qakito 编译 perl6 还真需要 2G 以上内存……还好提前看了一下说明书

  • 資深大佬 : falcon05

    你对版本号的认识有点业余……

  • 資深大佬 : yzlnew

    你对版本号的认识相当业余……

  • 資深大佬 : littleylv

    谁告诉你 3.9 以后版本号就用完了???????

    此处可以 @ 迷惑行为大赏

  • 資深大佬 : lolizeppelin

    哼! php 能 7 得, 我 python 就不能 8 ?

  • 資深大佬 : littleylv

    你对版本号的认识相当业余……

  • 資深大佬 : zgq3337

    都有量子了,可以是“3.量”

  • 資深大佬 : gunavy

    @linvaux Python3P

  • 資深大佬 : heiheidewo

    下个版本 python5 妥妥的

  • 資深大佬 : xingheng

    @miniyao 所以 Python 2 和 Python 20 也很像?

  • 資深大佬 : xingheng

    @hakono 比较版本号直接用 string comparion 还好意思说,不是说很多人那样用了就变成规范了。

    iOS 9 升到 10 的时候不也是很多菜鸟犯了这个错误,老老实实修 bug 就对了。

  • 資深大佬 : blindpirate

    @ungrown 你确实是一个人。。。不要代表其他程序员。

  • 資深大佬 : blindpirate

    @ungrown 抱歉我好像回复错人了。。。。

    此处回复主:你对版本号的认识相当业余……

  • 資深大佬 : tt67wq

    我赌五毛不会拥抱多核心

  • 資深大佬 : xypty

    python 365

  • 資深大佬 : fhsan

    你号没了

  • 資深大佬 : foxyier

    python3.8 文档里明确写了会有 python3.10

  • 資深大佬 : wangxiaoaer

    所以如果用 3-6-1 3-60-1 这种表示方法就不会疑惑了。

  • 資深大佬 : msg7086

    你们还真别说,Windows 3.11 就是 Windows 3.1 的增强版,后来又出了个 Windows 3.2。

    不过现在版本号都有更多的意义了,不像当时那样拍脑瓜写数字,所以应该不太容易误解就是了。

  • 資深大佬 : nomemo

    只是版本号有什么困难的。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具