Smalltalkを使用したことのある人なら誰でも知っているように、主な利点の1つ(多くの不適切な慣行を思いとどまらせる遅延言語以外)は、システムが完全に透過的で反射的であるため、APIと既存のコードを簡単に理解し、機能を見つけることができます。とても簡単。
Python用に同様の環境を作成するものはありますか?
python)にネイティブにない、Smalltalk開発環境の機能のいくつかの例は次のとおりです。
私はウィンドウを使用しているので、ウィンドウでうまく機能するものはすべて特に便利です。
Smalltalkを2年間使用していて、Python IDEが利用可能であり、表現力のレベルを上げることができる利用可能なものを見たことがないことを私は言うことができます。 VisualWorksやSqueakなどのSmalltalkIDEで探しています。
ほとんどのSmalltalk IDEの重要な点は、コードと開発ツールが同じ場所に格納されていることです。したがって、テキストエディタでコーディングしてから、VMでコンパイル/解釈するのではなく、すべて同じバイナリで実行されます。これには明らかな利点があります。本番環境でSmalltalkイメージに接続し、イメージ自体でコーディング/デバッグを開始できます。すべてが既に存在するため、変更してから新しいコピーを公開する必要はありません。私がこのアプローチで見つけた主な欠点は、それが消費するメモリの量です。これを修正するために画像を削除することはできますが、それには時間がかかります。
これを行うPython IDE)を持つことは不可能ではないと言いますが、私が見た限りでは利用できるものはありません。両方の言語の動的な性質にもかかわらず、Pythonがファイルベースであり、Smalltalkが画像ベースであることを考えると、両方の言語間の開発へのアプローチは異なります。
ipython は、デフォルトよりも多くの構文糖を追加しますPython REPL。特に、タブ補完、help()
機能し、すべてがきれいに色付けされ、読みやすくなっています。
Smalltalk環境ではありませんが、非常に役立ちます。
PythonWin 's IDEデバッグ中に使用可能なGUIのためだけに使用していることに気付くことがあります(「デバッガーのステップスルー」を使用して実行し、スタックビューを表示します)。ただし、Smalltalkには触れたことがないので、ベースから大きく外れている可能性があります...
SmalltalkのようなPython IDEを期待することはできません。Smalltalkでは、IDEはランタイム(または「イメージ」)の不可欠な部分です。
Smalltalkの世界とPython world。の間には1つの基本的な違いがあります。Smalltalkではimageを操作しますPythonには明確なstaticとdynamicプログラム/プロジェクトのビュー。
Python側でこの違いを埋める通常の方法は、静的分析ツールを改善することと、プログラムの小さなチャンクを頻繁に実行できるようにすることで実行中のプログラムとの相互作用を容易にすることです。デバッガー、またはJupyterNotebookなどのツールで実行中のプログラムを調べます。
私のIDEの選択として、PyCharm( https://www.jetbrains.com/pycharm/ ))について話させてください。
PyCharmにはまともな静的分析機能があり、それを支援するために静的タイプのヒントを入れることができます https://www.jetbrains.com/help/pycharm/type-hinting-in-product.html
プログラムの小さなチャンクを実行できるようになるまでの道のりは、当然、単体テストです。これらがある場合は、検査したいプログラムの状態を再現するテストをいつでも見つけて書くことができるはずです。
help(instance)
を呼び出します。 https://stackoverflow.com/questions/34439/finding-what-methods-a-python-object-has 。オープン機能のリクエストがあります https://youtrack.jetbrains.com/issue/PY-2776 。Pythonでは、「システム内のすべての完全な状態」について考えることはほとんどありません(決して?)。それはおそらくSmalltalkismです。
デバッグセッション中に実行時に収集された情報によってプログラムの静的ビューを強化するPyCharm機能があります https://blog.jetbrains.com/pycharm/2013/02/dynamic-runtime-type-inference-in -pycharm-2-7 /