一般的なプログラミング言語に関することをまとめてみました。
余談ですが、「プログラミング」は英語でprogrammingでもprogramingでも良いようです。
機械語 | 機械が直接理解できる言語。人間には理解することが非常に難しい。 いかなる言語で作られても、最後には機械語に変換して実行することになる。 |
アセンブリ言語 | 機械語を簡潔に記述することができるプログラミング言語。 機械語のままでは人間には読み辛いので、英文字などを使い、 機械語を少し読みやすくしたもの。機械語と親戚の関係。 リバースエンジニアリングをするときに使われることがある。 |
C言語 | ここからは、高級言語と呼ばれる人間側に近いプログラミング言語。 C言語は、オペレーティングシステム向けの低レベルでの記述ができる。 使いこなせればかなり自由度が高いが、大量の知識と経験が必要。 |
Java | 文法は非常にC言語に似ている。 生成するコードはバイトコードと呼ばれるもので、バーチャルマシンと呼ばれる実行環境で機械語に変換されて実行される。 バーチャルマシンが機械の違いを吸収することで、さまざまなプラットホーム(環境)で動作する。 しかし、そのために、動作が遅く、インターフェースもちょっと古く見える。 Webアプリケーション(アプレット・サーブレット)、実行ファイル等、さまざまな種類がある。 |
Visual Basic | 初心者向けの非常に分かりやすい言語。企業などでもよく使われているようだ。 生産性は非常に高い。インターネット上の情報量も非常に多い。 コントロールをウインドウにぺたぺた貼り付けて、コードを記述する。 C言語などに比べると、動作が遅い。ランタイムを入れないと動作しないのが問題。 インタプリタで開発して、コンパイラでコンパイルして実行ファイルを生成する。 最新の.netでは、Microsoft.NetFrameWorkと呼ばれるさまざまな言語に汎用性があるコンポーネントを使う。 Ver.6以前と比べるとかなり異なった言語となっている。移行も壁が高い。 |
Delphi | Visual Basicといろんな意味で似ている。Visual Basicより動作が速い。 Pascalを拡張した精密な言語で記述する。コンパイル速度は非常に速い。 ただし、VisualBasicと比べて、使用者が少ないため、情報が少し不足気味である。 最新のバージョンでは、Microsoftの.NetFrameWorkコンポーネント使ってアプリケーションを開発することができる。 |
HSP | C言語などの低水準の記述はできないが、プラットフォームの持つ機能を手軽に使うことができる。 プラグインと呼ばれる物を使うことによって機能を大きく拡張できる。 goto命令を頻繁に使うことになるので、あまり好ましくはないが、 最近、一般に広がり始めており、HSPで作成されたプログラムが増えてきている。 シューティングやスクリーンセーバー、3Dゲームなども作れる。 |
それぞれ、言語に特徴があるので自分の目的に合った言語を選択することが重要だと思います。
プログラミング学習は、一度にたくさんの言語をやるべきではありません。
たくさんやっても、どれも中途半端になり身につきません。
1つの言語を集中的にやって極めることが重要です。
1つを極めれば、他の言語でもすぐ応用できます。
以下は、私が考える言語選択の例です。
GUI(Graphical User Interface)は、ウインドウやボタン、画像などを使ったグラフィカルなもの、
CUIはMS-DOSプロンプトのような白黒の画面でキャラクタ(文字)ベースのようなものをいいます。
初心者である | 初心者ではない | ||||
無料 | 有料 | 無料 | 有料 | ||
GUI | CUI | GUI | CUI | GUI | GUI |
HSP | C | VisualBasic VisualC# |
C/C++ | Delphi,Java | VisualC++ |
問題解決能力 | なんといっても、自分で考えて問題を一つ一つ解決していくことが重要となる。 自分で考えてやらないことには成長できない。 |
---|---|
耐久力 | 肉体的・精神的にかなりの負担が生じることがある。 生活のリズムも狂うことがある。それに耐えうるだけの力は身につけておきたい。 実際に就職して、プログラマになった場合、趣味でやるのとは大きなギャップが出てくる。 自分の得意な(好きな)ことばかりすることは不可能。フリーでしない限り、あまり自由はない。 |
向上心・好奇心 | どんどん上を目指してがんばることが重要。 |
アイデア(創造力) | いくら知識や技術が身についていてもアイデアが浮かばなかったら宝の持ち腐れ。 問題を解決するにはさまざまな方法(アルゴリズム)があり、適切に選択することが大切。 |
情報収集 | インターネットや本、資料などから情報を効率的に収集することが必要である。 つまづいたときは必要な情報を収集しましょう。 |
知識・技術 | これについては、時間が解決してくれるので問題はない。 |
並列プログラミングとは、複数のプロセッサやクラスタなどを使って処理を高速化させる方法です。
プロセッサが2倍、3倍と増えると比例して性能も2倍、3倍になりそうに思えますが、実際はそんなに単純ではありません。
プロセッサ間を結ぶ回線の速度や制御方法に大きく影響します。
並列化の恩恵を受けるには、データ(メッセージ)転送のリスク・アルゴリズムの並列化・
デバッグの難しさ(多数のプロセッサを使うのでどこで不都合な動作をしたか特定しにくい)などの問題を解決していく必要があります。
そうはいっても、高速な計算が求められる分野もあり、
「並列プログラミング」は、今後重要になってくるでしょう。
個人的な偏見もあることをご理解ください。