Programs

とりあえずsyntaxhighlighterを導入したのでソースコードを書いていこうかと考えています。言語はC++、C#、VB、VBA、JAVA、JavaScript、PowerShellの7種に限定するつもりです。 まず、その前に、、、個人的な観点での各種言語説明から。基本的にはwindows上で動くものしか作ってません。JAVAはglassfish+linuxでの話になります。

■C++
所謂、高級言語の代表格、windows自体を構成している言語と言っても過言ではなく、windowsの中枢system32にある「〜.dll」とかはほぼこれで書かれてます。 システム的な互換性も高く、dllの関数を把握していれば単独でシステムを操作したりと、いろんな事ができます。OSの機能を拡張すれば、OS本来の機能以上のことができる可能性もあります。 ですが、MFCとか抜きで開発した場合に鬼の様な開発工数を要し、デバッグ等も非常に大変です。昨今の開発効率向上、工数削減とは少し縁遠いもので、あくまで動作するものを作るに重きが置かれます。 また、C系の言語でもネイティブでポインタを扱えるのは強みです。 ※ポインター操作(直接メモリのアドレスを指定して値を書き込んだり呼び出したりする行為、またはそのアドレスを扱う行為)

■C#
C++とはC言語という意味では同系列ですが、.NETFrameworkという作り置きのプログラムの集合体から構成されています。当然、それらがないと動きません。 windows7までは非常に不安定で、モジュールが足りなくて追加の.NETインストールを行わないと動かないなんてこともありましたが、windows10ではカバーされています。 特筆すべきはコーディングが容易でプログラミング初心者でも簡単なアプリケーションなら数日で作成することができます。現在、最もポピュラーな言語かも知れません。 ただし、C系でもポインターを扱えないことはないですが、ネイティブではない上に手間を要します。

■VB(VB.NET)
こちらもC#同様、現在は.NETFrameworkに集約されつつあります。昔は4.0、5.0、6.0等のランタイムを別途インストールしなければ使えないなど、オフライン環境では開発、検証が厳しいものでした。 もちろん現役で十分に通用する言語であり、dllを読み出せば、ある程度のことはできます。 C#と同じく.NETFrameworkないしVBランタイムが入っていないと動作しません、また、ポインターの扱いはできますが不向きです。

■VBA(Visual Basic for Applications )
VBの簡易版で基本的にはMicorosoftOfficeの製品群に組み込んで使用します。Excelで業務の大半をこなす企業が多いことから需要は高く、参照設定次第ではデータベース連携、デバイス制御も行えます。 コンパイラが無い時などに最後の砦としてOffice製品でキックを掛けてフォームのみを表示し、あたかも単体のアプリケーションっぽく見せるとか、Accessをデータベースとした小規模システムを構築する等 展開先の規模によっては十分な効力を発揮します。 ただし、Officeの製品のバージョンアップを行うと動作しなくなるケースが非常に多く、特にフォームはOCXに左右されるのでコーディングし直さなければいけません。

■JAVA
メモリを気にせずにゴリゴリ書けるプログラム、というか先ず「JAVAって何なのかって」話からです。昨今の世の中で「仮想化」という言葉がありますが、それとは別の意味で仮想化を行っているのがJAVA(JVM)です。 通常の仮想化はリソースの有効活用ですが、JAVAは互換性の向上という意味で仮想マシンを立てています。環境に影響を受けない言語、つまりOSを選ばないわけです。windows、mac、linux、android、iosプラットフォームはいろいろですが 間に仮想マシンを挟むことで、いちいちwindows用、mac用とプログラムを書かなくて良いというワケです。ちなみにこの仮想マシンをクライアントに立てその上で動かすのがJAVAアプレット、サーバーに立てて外部に処理結果を返すのがJAVAサーブレット、 そして、サーブレットをHTML感覚で書けるのがJSP、それに付随するタグがJSTLとなります。 欠点としては、メモリをガンガン気にせず使えますが、使った分のメモリはヒープ領域(メモリの動的確保領域)を占有していくので、解放を意識しなければいけません。 ガベージコレクションってやつですね。メインの処理とガベージコレクションの処理バランスが崩れるとレスポンス低下、処理落ちとなります。一番の策はシステム再起動ですね。

■JavaScript
WEBページ上で動く言語であり、2017年にもっとも書かれた言語ということで今一番「熱い」言語です。AJAXの非同期通信はユーザーにストレスなくデータロードを行います。実際に社内のシステムにも導入しましたが 画面遷移なくデータロードして表示されるのは圧巻です。ちなみに一応の原則なんですけど「クライアントPCに変更を加えることはできない」が仕様です。(ウイルス感染した人は何かしらクリックとかの対話を行っている、もしくはすでにPC内に応答するファイルが存在しているということになります。) 個人的な感想ですが書き方としてはVBに近い印象があります。

■PowerShell
最近やりはじめました。単体ではキックできないことと、.NETFrameworkってことで敬遠してたんですけど、そうも言ってられないなと。。。 実際にやってみると面白くて、Get、Set、Addでだいたい片付くのは楽で、自前で作ったシェルでコンパイルすればexeファイル化することも可能です。 ただし、dll参照とかwindows内部に食い込む記述をするとexe化できないのが難点です。。。

Powershell
 			#配列定義例1)文字列型
			$test = @("first","second","third","fourth","fifth")

			for($i = 0;$i -lt $test.count;$i++){
			[System.Windows.MessageBox]::Show($test[$i])
			}

			#配列定義例2)数値型
			$test = @(1,2,3,4,5)

			for($i = 0;$i -lt $test.count;$i++){
			[System.Windows.MessageBox]::Show($test[$i])
			}
			
C#
 			test;
 			test;
 			test;
 			test;