原文:Flask 框架作者希望看到的 Python
Python 真的有这种「最大的设计错误」吗?难道 Python 设计者看不到?「槽(slots)系统」真的很糟糕吗?
回复内容:
作者吐槽了Python语言与CPython解释器结合得过于紧密。甚至有时候CPython解释器的某些实现成为了语言的一部分。虽说有语言规范,但是大多数情况下,它只是规定了解释器要做什么,甚至连这些都没有规定。
Python的问题在文章的“该死的解释器”一节有了一个直接的解释:
解释器把这些类型结构体直接暴露给Python代码。
比如,你写了一个BigInteger类(只是举例子而已)
<span class="k">class</span> <span class="nc">BigInteger</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
<span class="k">return</span> <span class="n">BigInteger</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">Value</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">Value</span><span class="p">)</span>
<span class="o">...</span>
我认为作者的意思是,Python现在的发展模式是,公开搜集PEP,然后在现有基础上根据被采用的PEP打补丁,却几乎从来不对早起历史遗留下的解释器设计做调整和完善,并且几乎是针对CPython的。新特性越来越多,语言越来越复杂,老的问题一直没有改进,并且PSF致力于把一些历史遗留的烂设计解释成这是Python的哲学……与此同时,Python语言的文档其实是CPython的文档,于是乎其它实现,如Jython、PyPy、IronPython也不得不参照这些个奇怪的设计来做……他举的例子,如slots的设计就是完全为了兼容了早期解释器把内置类型的一些方法而做的,以现在的角度来看完全没有必要……
再说GIL,如果按照python哲学,PSF说这么做更便于写C扩展什么的,说只需要一个解释器实体什么的,明明可以脱离GIL,并且别家也都这么做了,性能也确实能有很大改善,再说GIL带来的明显性能缺陷……没有任何道理把单解释器归到python哲学里……
大致如此吧…… 所以Python / Ruby这些编程语言基本上都是implement-driven而非specification-driven来设计的。
Ruby有过1.8到1.9的一次蜕变,整体上还算是好的。
当然你也会看到其他人在吐槽:Matz's Ruby Developers Don't Use RubySpec and It's Hurting Ruby 整篇文章的意思就是说:
Python明面上给了你一套标准,背地里自己老走后门;
操蛋的是,写得很多库之类的还特么依赖自己的后门儿,就算新来的,比如PyPy想走标准,也走不通了,最后也被迫走了后门;
更操蛋的是,他那个后门,开的也不是很高级,一堆缺陷。 首先,flask做的挺烂的,混乱的测试支持,没准的卡死问题。
然后,他提到的很多问题是框架设计层面的,比如slot,一般用户用不到,就算需要类似功能也可以有其他实现。
Python C层面确实很多问题,甚至我怀疑都不能算积重难返,而是故意拖延。Python3在几年前决定大规模重构,但很多核心问题还是扔在那里没动。比如GIL仍然是进程级的,而不是解释器级的。以当前状态看,如果有Python4的那天,肯定还是个不兼容的升级。
说说看而已,对正常的Python用户,这些讨论都没什么卵用。反正大家又用不上。 Slot 这一点没看出来有什么大不了的槽点,cpython 投机取巧又不是说别的解释器不能投机取巧了,无非就是语言规范散漫了点,比这更戳死人的槽点多了去了。
私以为,以 flask 那个样子,作者这种吐槽不用太当真,什么时候 bottle 作者也开始吐槽了再说吧。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
