秀丸マクロ用 .NET 系 プログラミング言語 対比表

hm.NET, hmPy, hmV8, hmJS, hmPS 対比表

似たようなものが複数存在するため、対比表が必要かと思います。
ここでは「言語記述性能」「将来性」「.NETとの相性」「可搬性」「読み込み速度」で、
対比しています。

hm.NET/C#

トピック 評価点
インデックス
捕捉
言語 10 Windowsでは圧倒的、iOSやAndroidにおいてもそれなりの実装シェアを持つ、
新進気鋭でありながら国際規格にもなっている
C#によって実装することを主眼に置いています。
この言語と、それを取り巻く環境が、
非常に高い開発効率と生産性を持っていることは、
いうに及ばないでしょう。
将来性 9 C#が消える時は、Visual Studio系が消える時であり、
Windowsも消える時である、
と断言しても良いと思います。

ECMAScriptの将来性には一歩及ばないでしょうが、
現在のC#の、Microsoftのプッシュ具合と
デスクトップ・クロスプラットフォーム・クラウド・サーバー
での使用状況を考慮すると、
充分に高い将来性が確保されていると言えるでしょう。
.NET相性 10 .NETは「まずはC#で使いやすいのか」というように
C#で利用しやすいということを念頭に設計されています。
可搬性 10 hm.NET1つが、
「実行時のライブラリであり」
「実装時の参照兼入力補完ライブラリでもある」
といった構成になっています。
読み込み速度 10 他のhm**シリーズが、
スクリプト言語スコープを別途作成するのに対して、
これはそのようなものは作成しないため、
非常に速い読み込み速度となっています。

hmV8/ECMAScript6

トピック 評価点
インデックス
捕捉
言語 7 ECMAScript2020 (Google V8 Engine) + α
言語そのものは、「強力」とまでは言えませんが、
ECMAScript6(ES2020)に至り、「現代的な言語としてはこの文法があった方がベター」
といった文法は一通り入っいます。
かなりオブジェクト指向系のモダンな他の言語と類似した記述となりなじみやすくなったと言えるでしょう。
組み込み言語としては、「必要な文法や機能は十分すぎるほど揃っている」という状態です。
将来性 10 「Perl, Ruby, Python, PHP」といった現行スクリプト言語にて記述されている多くの分野は、
長い目で見れば、将来はこのECMAScript6(2015~)へと差し替えられていくことは、疑いようもありません。

スクリプトだけではなく、C#、JAVAなどが担っている領域の一部も、
ECMAScript6(以降)で代替されていくことでしょう。

「基本文法とコアライブラリはECMAScript6系」、
各アプリは「拡張APIを提供」、
といった形が主流となっていくことが予想されます。

策定やエンジン実装の中心を担っているのは、Google, Microsoft, Apple, Mozillaですから、
年単位どころか、月単位で、主要プラットフォームの全てで全方位的にこの方向へと進んでいっています。
.NET相性 5 .NETのクラス等は利用できますが、
ECMAScript6のクラスと、.NETライブラリのクラスは別のものなので、
それほど相性が良いわけではありません。

継承「is-a」には出来ないため、.NETのライブラリは静的に利用するか、
もしくは、「has-a」にして組んでいくこととなります。
ちょうど、hmV8のトップページのサンプルがそのような形です。
可搬性 7 hmV8.dll、ClearScript***.dll
といった4つの構成で、
  • ECMAScript2019の文法全て
  • ECMAScript2019のライブラリ全て
  • .NETの多くのライブラリ
が使えるというのは、素晴らしい可搬性です。

4つファイルが必要というのが、「少しファイルが多めかな」といった程度でしょう。
読み込み速度 4 関連ファイルをNGenすることにより、
なんとか及第点の読み込み速度となります。
何もNGenしない場合は、かなり読み込み速度が遅いと言えます。

hmJS/JScript(=ECMAScript3)

トピック 評価点
インデックス
捕捉
言語 3 JScript 5.8 / ECMAScript3 + α
秀丸マクロの文法等に比べれば、かなりマシですが、
現代のスクリプト言語としては、 力不足感は否めません。
(より正確にはJavaScript3系のテクニックを使うと、バッドノウハウ的な記述になりやすい)
但し、組み込み言語として考えると、この程度の文法があれば十分である、という考え方もあります。
将来性 2 このhmJSは将来性を期待して採用するものではなく、
過去のJavaScriptやJScriptの記述を、出来るだけ利用しようといったものです。
.NET相性 4 .NETのクラス等は利用できますが、
ECMAScript3のプロトタイプでは、上手くクラスとしてまとめるのも難しいかと思います。
あまり相性が良いわけではありません。

継承「is-a」には出来ないため、.NETのライブラリは静的に利用することになるかと思います。
ちょうど、hmJSのトップページのサンプルがそのような形です。
可搬性 10 hmJS.dll
というたった1つのファイルだけで
  • ECMAScript3の文法ほぼ全て
  • ECMAScript3のライブラリ全て
  • .NETの多くのライブラリ
が使えるというのは、可搬性としては完璧です。
読み込み速度 9 hmJS.dll単体なので、かなり読み込み速度が速いです。
hmJS.dllをNGenすると、さらに速くなります。

hmPy/IronPython

トピック 評価点
インデックス
捕捉
言語 8 Python2.7 + α
リスト機構を重視しつつ、バランスが取れた言語です。
変数に「記号」も極力付きませんし、「.」で区切りは統一しており、
「new」といった記述も不要であり、 記述に迷いが生じないため、とても優れています。
将来性 5 IronPythonは2021/01/16現在も更新され続けているため、まだ生存しているプロジェクトです。
すでにIronPython 3.x系開発も以前より進んでいるため、やがてリリースされることでしょう。

IronPythonは、.NET Frameworkが利用可能なスクリプト言語としては唯一、
Visual Studioで複数のバージョンに渡って正式といってもよいポジションでサポートされている言語です。
(Visual Studio 2019においても、インストール時にpython関連にチェックを入れるだけでIronPythonもサポートされます)
.NET相性 8 IronPythonは、Dynamic Language Runtimeを利用して作られた言語として
最も時間と人員が割かれた言語であり、DLRを最も活かした言語はIronPython
だと断言して良いでしょう。

既存のスクリプト言語の中で、.NETと非常に高いレベルで融合に成功した言語はPythonのみある。
と断言できるほどです。

hmPyのトップページの秀丸8.66以上の場合サンプルで、
その.NET Frameworkとの融合性の高さ、記述の自然さがみて取れます。
IronPythonに匹敵するのは、F#スクリプト、それらを超えるのは、C#スクリプトのみでしょう。
可搬性 4 IronPython本体のインストールが必要となるため、低めの得点となります。
しかし、その甲斐あって
  • Python2.7系の文法全て
  • .NETの多くのライブラリ
  • IronPythonに移植されたPython標準ライブラリの多くのもの
という非常に有利な構成を利用可能となります。
読み込み速度 6 hmPy.dllとIronPython系の本体の各種dllをNGenすることにより、
それなりの読み込み速度が確保できます。

hmPS/PowerShell

トピック 評価点
インデックス
捕捉
言語 7 PowerShell
PowerShellはWindows10では標準のシェルスクリプトであり、
・他のプログラムをいとも簡単に呼び出せるシェルとしての性質
・.NETプログラムであれば、オブジェクトベースのコマンドレットとなる機能、
・旧型のテキストベースのコマンドもシームレスに扱うことが可能。
・クラス機構や継承もあるとともに、名前空間などもあります。
・関数志向型を思わせるようなリスト処理もこなせます。
標準シェルとしては、機能的に十分な言語だと言え、エディタの組み込み言語としても
適性が高いと言えそうです。
将来性 9 Windows Vista あたりから細々と使われてきた印象ですが、
Microsoft Windows10でいよいよ、cmd.exeに替わる標準のシェルスクリプトという立場になったため、
今後は必然的に利用者が増えて、ノウハウも蓄積されていくことでしょう。
.NET相性 8 .NETのクラスなどを利用することが想定された作りとなっています。
また、PowerShellのコマンドレット自体、
.NET FrameworkのC#での制作を念頭に置かれていると考えてよいでしょう。
.NETのクラスを継承することも出来ます。
可搬性 10 hmPS.dll
というたった1つのファイルだけで
  • PowerShellの文法のほとんど全て(組み込みPowerShellではごく一部制限がある)
  • .NETの多くのライブラリ
が使えるというのは、可搬性としては完璧です。
読み込み速度 4 デフォルトだと初動が遅い!! 遅すぎる!! といった印象ですが
hmPS.dllやPowerShell系の.dllをNGenすると結構マシな速度となり、
hmV8をNGenするよりも速く起動するようになります。