この世の中には開発言語が多数あります。もちろん、文法もそれぞれ違っています。
なにゆえそういう状況なのかというと、各場面で使いやすい言語があるからなのです。

ここでは、例として私が主に使ってきた言語である C++ と、VB それぞれの長所、短所などを挙げていきます。

・コードの量

コードというのは、命令を順序だてて記述することでプログラムの動きを定義するものです。これが、各言語によって文法や作法が異なっているものです。
ここでは、ウィンドウを表示し、そこに文字を表示するというコードを掲載します。

・C/C++


#include <windows.h>
#include "resource.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpsCmdLine, int nCmdShow);
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpsCmdLine, int nCmdShow)
{
	DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, (DLGPROC) WindowProc, NULL);

	return 0;
}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{
	case WM_INITDIALOG:
		SetDlgItemText(hWnd, IDC_STATIC, TEXT("こんにちは!"));

		return TRUE;

	case WM_CLOSE:
		EndDialog(hWnd, 0);

		return 0;
	}

	return FALSE;
}	

注)この他にもリソース スクリプト、およびリソース ID 定義ヘッダーファイルが必要です。

・VB


Private Sub Form_Load()
	Label1.Caption = "こんにちは!"
End Sub

注)フォームにはラベル “Label1” が必要です。

はい、差は歴然ですね。コード量は、C++ では30行。VB では3行。C++ は VB のちょうど10倍ですね。
「じゃあ、VB の方がいいジャン。 はい決定~」
……という単純な話ではないのです。

・自由度

先ほどの例で、VB ではウィンドウ作成の手順が省略されています。対して C++ では明示的に表示するよう指示しています。
これは、アプリケーションを作成する際の自由度に関わってきます。
これはウィンドウ作成の事項に限らず、例えばポインタ使用の可否です。
プログラムに無くてはならないもののひとつに変数というものがあります。これは、数値を格納するための場所のことです。
ポインタというのは、その変数の場所を指す数値――例えて言うなら住所です。
少々難しい話になりますが、変数はその大きさが決まっています。大きなデータはたとえ配列にしたとしても、普通の変数領域には格納できないのです。
そこで、動的にメモリ空間を割り当て、それを使うわけですが、そのときに必要なのが変数の場所なのです。
また、関数ポインタという概念もあります。これについての解説は省略させていただきます。

・危険度

メモリの内容を連番で操作できるのはいいのですが、割り当てた領域の外を誤って操作してしまうと意図しない変数の値が書き換えられたり、プログラムの命令まで書き換えられてしまいます。
これを悪用したのがコンピュータ ウィルスです。

・実行速度

C++ はコンパイラ言語で、VB はインタプリタ言語です。
コンパイラ言語というのは、コードを一度にすべて機械語に翻訳してから実行する方式をとった言語です。
インタプリタ言語は、コードを1行ずつ解釈しながら実行するものです。
当然、一度にすべて翻訳してから実行した方が動作速度は高速です。
スーパーやコンビニで買い物をするときに目にする値段の例にとってみます。
(例ですからね。厳密ではないですよ)
コンパイラ言語の方式では、「220円」と書いています。
インタプリタ言語の方式では「200円+税」と書いています。
前者の方がすぐに金額がわかると思います。
ただ、後者の方は税率が変わった場合は「税」の部分を読み換えるだけで済みます。
つまり、ぱっと見でわかりやすい(=動作速度が高速な)のがコンパイラ言語で、その時に応じやすい(=柔軟な)のがインタプリタ言語です。

・ランタイム ライブラリ

VB は、色々な部分が言語により補完されていて、プログラマーは手軽にプログラムを記述することができます。
その反面、補完される部分は他の何かにやってもらわないといけないわけです。その、他の何かは「ランタイム ライブラリ」といい、その機能を VB で書かれたアプリケーションが呼び出して実行しているのです。
そのため、呼び出しの際のオーバー ヘッド(実行遅延)が気になるところです。
また、ランタイム ライブラリは巨大なため、ダウンロードが億劫という問題もあります。
この問題は VB.net になってからも健在ですが、いずれ .net Framework という、VB6 以前でいうランタイム ライブラリが OS に添付されると予測されます
現在 (Windows 10) では .net Framework が標準で OS に添付されています。ただし、アプリケーションがどのバージョンの .net Framework で作られたかによって、そのままでは動作しない場合も多々あります。
コンピューターがインターネットに接続されている場合、インストールされていないバージョンの .net Framework で作られたアプリケーションを実行すると OS がメッセージを表示しダウンロードを促してくれますが、そうでない場合はオフラインでのインストール作業が必要となります。そのため、不特定多数に広く使える状況には至っていないといえます。

このように、長所と短所を挙げていったわけですが、最後に私個人の意見として、以下のような結論付けをします。

  • C++: 速度を求め、複雑な処理をし、不特定多数の人に使われるアプリケーションに最適
  • VB: 速度をあまり求めず、単純な処理で、特定少数の人 (自分自身だけ、会社の部署内等) に使われるアプリケーションに最適

トラックバック

このブログ記事に対するトラックバックURL:

コメント & トラックバック

No comments yet.

Comment feed

コメントする