3


2

PowerShellを既に使用している場合に学習する(スクリプト)言語は何ですか?

しばらく前、私は本当に素晴らしいPowerShellを使い始めました。 ほぼすべてをコーディングできます。.NETフレームワーク、WMI、WIN APIを使用することもできます。 パイピングなどの機能は、管理しやすく読みやすいコードを書くのに非常に役立ちます。 V2は、高度な機能、モジュール、バックグラウンドジョブ、リモート処理(woow)などを追加しました。

先ほど言ったように、PowerShellでほとんどすべてのことができますが、新しい言語を学びたいです。 主な理由は、さらなる独学です。 その他の理由(それほど重要ではない):

  • いくつかの制限(例: スレッドを操作するのは簡単ではありません PowerShellまたはジェネリックのサポート)

  • 速度(おそらくすべてをPSObjectにラップするためのコストであり、 オブジェクトを直接操作する)

  • クロスプラットフォーム開発(例: SymbianでPythonを実行できます。 PowerShellではおそらく不可能でしょう)

*いくつかの分野でPowerShellを打ち負かすことができるどの言語をお勧めしますか?*読みやすさ、言語の一貫性、ドキュメント、有用性、ライブラリ、安定性、WTFモーメントなど…​ +私が指摘した制限に対処できれば、より良い。

私はREPLループのため、そしてそれがあまりにも冗長ではないので、スクリプト言語を好む。 C#ですが、それは要件ではありません。

IronPythonを簡単に見てきました。 主な理由は、http://microsoftpdc.com/Sessions/FT30 [PDC 2009]で提示されているようにホスティングすることでした。 しかし、私はパイピングに失敗しました。PowerShellに比べて冗長すぎてやや不格好です。

'' '' '

私の経歴:私は、c#、c ++、javascript、tsqlの言語で(少なくとも初心者として)働いてきました。 私はpythonをざっと見てみましたが、それで試してみるように思われませんでした(間違いかもしれません)。

_この質問はPowerShellに固有であり、他の(スクリプト)言語と比較するため、この質問を終了すべきではないと思います。 ただし、閉鎖に投票する場合は、少なくともコメントを残してください。

4 Answer


4


「スクリプト」言語そのものではありませんが、F#は一見の価値があります。 パイピング(|>)およびパターンマッチングのような他の多くの高レベル機能をサポートします。 また、Visual Studio内に提供されるインタラクティブコンソールと、スタンドアロンコンソールのインタラクティブプロンプトがあります。 F#の機能的な性質もありますが、これは少し「気が曲がる」ものの、良い方法です。 :-)


2


別の_scripting_言語が必要な場合は、VB Script(Windowsのスクリプトのすべての例を読むことができる)、またはJavaScript(相補的なユースケース:Webクライアントプログラミングは開発の別の領域です)をお勧めします。

同様に、.NETコードを記述し、PowerShellを拡張するために、C#を見ることができます。 また、.NET Frameworkの機能を理解しやすくなります(PowerShellのほとんどのフレームワークの例はありませんが、C#の例はどこにでもあります)。


2


テストしたIronPythonのバージョンはわかりませんが、もう一度確認することを強くお勧めします。 IronPythonの最新バージョンは、2.6標準(他のほとんどのユーザーが使用しているpythonのバージョン)に対して構築されています。 一部のスクリプト言語よりも少し冗長かもしれませんが、私にとってはスクリプト言語よりも完全なプログラミング言語のようです。 classesおよびhttp://codeblog.theg2.net/2010/02/parallel-で作業するforeach-file-processing-in.html [複数スレッド]は、PowershellよりもIronPythonの方がはるかに簡単です。 さらに、Powershellでできるように.NETライブラリとアセンブリを利用できるという利点があります。 (クロスプラットフォームコードの場合は、Pythonクラスのみを使用する必要があります)

私の典型的なアプローチは、何かを一緒にハックしたり、システム管理タスク(ファイル、レジストリ、wmiなど)を行う必要があるときにPowershellを使用し、より複雑な場合や小さなサイドコードプロジェクトの場合はIronPythonを使用し、商用グレードコードの場合はC#を使用することです。 それぞれ異なる考え方(パイプ、動的型付け、静的型付け)を提供しますが、すべてが同じ基本的な.NETライブラリを使用するため、言語間で変更するときに日時を再度解析する方法を理解する必要はありません。

要件については、IronPython / pythonは非常によく適合するようです。

  1. 読みやすさと一貫性は pythonの2つの主要な目標

  2. Languangeのドキュメントは優れており、コードのドキュメントは pythonのピラー

  3. 有用性、ライブラリ:.NETのフルパワーを取得できるため、 Powershellでできること

  4. 安定性:最新のIronPythonは非常に安定しています (http://www.resolversystems.com/[Resolver One]はIronPythonを使用しており、完全にIronPythonで構築されています)

  5. WTFの瞬間…​ そこにあなたを助けることはできませんが、それはまだあなたができるようにREPLです 少なくとも何が間違っているのかを見つけるために突く

IronPythonが非常に不足していると私が言う1つの分野は、ツールのサポートです。 Powershellにはいくつかのhttp://powergui.org [素晴らしいスクリプトエディター]がありますが、これまでのところ、IronPythonで見つけた最高のエディターは、Notepad ++と、奇妙なことに、Resolver Oneの組み込みのPythonコンソールです。スプレッドシートアプリケーションであるため、データをグリッドに簡単にパイプで送信できます。 また、「Living in two worlds」という問題が発生する場合があります。この方法では、Pythonで何かを行う方法と.NETで何かを行う方法を選択する必要があります(互換性と.NETの使いやすさ)。 IronPythonは単純なスクリプト作成に使用できますが、主に単純なファイル、レジストリ、またはxmlを処理する場合は、Powershellを使用するのがはるかに良い方法です。 Ironpythonは、純粋なスクリプト言語と完全なプログラミング言語のギャップを埋めるのに役立ちます。

お役に立てば幸いです。 私のブログには、http://codeblog.theg2.net/search/label/IronPython [IronPython]とhttp://codeblog.theg2.net/search/label/PowerShell[Powershell]の例があります。 IronPythonを使用してから約1年になりますが、C#のバックグラウンドから来たので、動的言語のプログラミングがどのように機能するかを見るのは非常に興味深いです。 また、http://www.trypython.org/ [TryPython.Org]サイトは、ブラウザから直接IronPythonを使用するのに最適な方法です。

頑張って!


1


IronRubyはどうですか? Rubyは一般にプログラミングに適した言語と見なされており、IronRubyプロジェクトにはMicrosoftの支援があります。

しかし、それは初期段階です–実際の使用の準備ができていないようです。