Python vs Rubyへの返信

eyeofhellユーザーは最近Python対Rubyの記事を書きました。

高貴なホリバーが判明した。 私は支援するしかありません。 最初はコメントを書きたいと思っていましたが、答えが大きすぎました。





私について:

私は10年以上Pythonで書いており、Rubyを非常に表面的に知っています。

最近、私はコミット権を持つPythonコア開発者です。



サンタクララでの最後の米国PyConで、Guido van Rossumは素晴らしいスピーチをしました-みんなに見ることをお勧めします。



特に、彼はPythonとRubyはほぼ双子の兄弟だと指摘しました。 それらの違いは、これらの言語が他のすべての言語に対抗するよりもはるかに小さいです。

友達になろう



次に、著者に対する特定の主張について(もちろん、Pythonについて-知識豊富なルビストに重要な言葉を言ってみましょう)。



-Pythonにはsslモジュールが組み込まれています。 Microsoftとの古くからのライセンス済みの争い(正しくない場合は正しい)のため、このモジュールはWindowsの配布パッケージに含まれていません。 他のすべてのOSではそうです。



-サブプロセスでは、コマンドラインパラメーターを1行で指定できます。パラメーターshell = Trueで呼び出す必要があります。 これは単なる括弧ほど簡潔ではありませんが、方法があります。 さらに、サブプロセスを呼び出すことは、常にテキスト出力を変数に置き換えることとは程遠いことを理解する必要があります。 戻りコード、stderr、対話機能もあります...



-Pythonはモジュールを相対的な方法でインポートできます。 これは、ファイルではなく、モジュールの相対パスです。 モジュールはパッケージ(__init__.pyを含むフォルダー)にある必要があります。 読者はすでにこの点を指摘しています。



-codecs.openでは、開くファイルのエンコーディングを指定できます。 openは同じ目的のエンコーディングをサポートしています。



-良いかどうかはわかりませんが、オペレーティングシステムのスレッドを使用する場合、スレッドを破壊する信頼できる方法はありません。 使用されているリソース(メモリ、データベース接続、その他のソケットなど)が解放されないというリスクが常にあります。したがって、Pythonにはそのような機会はありません。 何らかの方法でメッセージをストリームに送信する必要があり、そこで彼はそれを理解しなければなりません。



その他:読者が既に述べたように、一部はPythonディストリビューションに含まれていませんが、サードパーティライブラリとして利用可能です。



-ピッツ。 タイムゾーンのリストは、新しいPythonのリリースに合わせて1年半以上頻繁に更新されます。 ドキュメントにはpytzへのリンクはありません-修正してください。



-テンプレートエンジン。 string.Templateよりも大きいものは、標準パッケージには含まれていません。 どのテンプレートエンジンがすべての人に適しているかが明確ではないためです。 私が使用するjinja2は素晴らしいことです。 ここでも、ペースが速すぎて、あまりにも独立しているため、ディストリビューションとしてPythonの一部にはなりません。



便利なことがたくさんあります。 ただし、ライブラリが標準Pythonに含まれている場合は、後方互換性を維持する必要があります。 多くの場合、これは非常に高価であり、Pythonのように1年に1回ではなく3か月ごとにリリースをリリースするために迅速に開発できません。



そして最後に、主なもの。

python2はすでに死んでいます。 はい、しばしばバグ修正を行います。 python2.7.3は間もなくリリースされます。 しかし、2つは2年前に終了しました。



ますます多くの図書館がトロイカのサポートを確認しています。

-SQLAlchemyはこれをかなり前に行っています。

-Jinga2も。

-ピラミッド-1週間前。

-昨年末にPyramidが依存していたWebOb。

-Djangoも上位3位に移行します-彼らは約束しました。



皆さん、Python3があなたの未来にあります。 準備をしなさい!



UPD:秋にリリースされるDjango 1.5には、Python 3.3の実験的なサポートが含まれます



All Articles