SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

あなたが学ぶべき10の現代実用プログラミング言語

独断と偏見で選ぶプログラミング言語10選


  • このエントリーをはてなブックマークに追加

本稿は、多様化するアプリケーションの様々な実行形式に対応するため、開発者が学習するべきプログラミング言語を10個選んで、それぞれの言語の開発分野や特徴を、簡単に説明させていただきます。世の中には多くのプログラミング言語が存在しますが、その中でも特に開発現場での実用度が高い言語を選びました。プログラミング言語をこれから始めようと考えている方から、別の言語を学習しようと考えている開発者の方まで、参考にしていただければ幸いです。

  • このエントリーをはてなブックマークに追加

はじめに

 Webベースのアプリケーションや、Webベースで機能するサービス、加えてJavaや.NETのような物理的なシステムを抽象化するプラットフォームの台頭によって、現在のアプリケーション開発は環境によってアプローチが大きく異なり、それに伴って様々なプログラミング言語が使われるようになっています。

 ネイティブの実行ファイルを対象としたアプリケーション開発であれば、古くから使われているC言語やC++言語が今でも主流です。しかしながら、Webアプリケーション開発ではPerlやPHP、Ruby、Pythonなどの組み込み可能なスクリプト言語が人気です。Ajaxを代表としたブラウザ内で動作するクライアントベースのWebアプリケーションであればJavaScriptが駆使されることになります。

 仮想システムを対象としたアプリケーション開発には、仮想システム専用の言語が使われます。Javaアプリケーション開発であれば主にJava言語が使われ、.NETアプリケーション開発であればC#言語やVisual Basic.NETなどが主流です。しかし、ここ最近になってこれらの仮想システム上で標準ライブラリにアクセス可能なRubyやPythonなどのスクリプト言語も実装されるようになり、さらに選択肢は広がっています。

 加えて、それぞれのプログラミング言語ごとに魅力的なフレームワークが競って開発されています。利用するフレームワークによって利用するプログラミング言語を切り替えたいという場合があるでしょう。質の高いフレームワークを利用することができれば、短時間で完成度の高いアプリケーションを構築できるようになります。

 選択肢が増えることは悪いことではありません。しかし、開発者にとっては数多くのプログラミング言語を学習しなければ、最先端のアプリケーション開発環境を使いこなすことができないという状況になりつつあります。加えて、新人開発者や学生にとっては覚えなければならないプログラミング言語が沢山待ち構えていることになります。新人教育を担当される方であれば、どの言語を教えれば良いのか迷うことでしょう。

 本稿では、アプリケーション開発の現場で実用されているプログラミング言語をピックアップし、それらの言語の特徴や、テキストを表示するまでの簡単なサンプルをご紹介します。これからプログラミング言語を勉強しようと考えている学生や新人開発者の方はもちろんですが、すでにプログラミング言語をいくつか覚え、新しい別の言語を学習しようと考えている方にも参考にしていただけると思います。

C

 「C言語」は、古くから本格的なアプリケーション開発用の言語として使われていたプロフェッショナル向けのプログラミング言語で、現代でも変わることなく多くの専門家たちの間で実用されています。アプリケーションの実行基盤が多様化したことによって、全盛期ほどの影響力はないものの、現在使われている他の多くのプログラミング言語の文法にも影響を与えているため、教育からビジネスまで幅広く使われているプログラミング言語です。

 高水準言語でありながら、ポインタによるメモリアドレスの演算などが可能であり、ハードウェアに近い処理も可能となっています。Visual C++など、一部の処理系ではC言語のソースコード内にアセンブリ言語を記述するインライン・アセンブラもサポートしています。このことからも、C言語がマシン語レベルの処理と相性が良いことがうかがえます。OSやデバイスドライバなど、ハードウェアに密着したソフトウェアを書くことにも適しています。

 プロの開発者を目指すならば、早い段階で習得しておくべきプログラミング言語です。Web開発の専門家を目指すのであれば必ずしも必須ではないかもしれませんが、多くのプログラミング言語がC言語の影響を受けているため、C言語を学習することで他のプログラミング言語の理解を深めることができます。

学習レベル 初心者~
実行方式 コンパイル型
開発対象 ネイティブ・アプリケーション(実行可能ファイル)
適用分野 アプリケーション開発、ドライバ・OS開発
サンプル01
#include<stdio.h>

int main(void) {
    printf("Kitty on your lap");
    return 0;
}

 C言語で画面にテキストを表示するプログラムを作ると「サンプル01」のようになります。最初の行は「stdio.h」というファイルをソースファイル上にテキストレベルで組み込む(インクルードする)ことを意味しています。こうした命令はプリプロセッサ・ディレクティブと呼ばれ、コンパイルされる前にテキストレベルで展開されます。このようなソースのテキスト処理はC言語の大きな特徴です。

 「stdio.h」のようなファイルはヘッダファイルと呼ばれ、C言語の標準関数を宣言しています。画面にテキストを表示するためにはprintf関数を使う必要があり、最初の行はprintf関数を使うために必要です。

 C言語では、プログラムの流れは全て関数の中に書かなければなりません。プログラムはmain関数から始まります。

 画面に文字列を表示するといった機能も、全て関数によって提供されています。printf関数は、言語の構文として定められているものではなく、あらかじめ処理系に標準機能として組み込まれている再利用可能なプログラムの部品です。

C++

 「C++言語」は、C言語を発展させたプログラミング言語です。基本的にはC言語と互換性があり、C言語のソースをC++言語としてコンパイルすることが可能です。基本的な文法も、すべてC言語を継承し、オブジェクト指向を実現するための拡張が行われています。

 オブジェクト指向の導入によって、C++言語は大規模アプリケーション開発、組織開発、ソフトウェアの再利用を強化しています。オブジェクト指向開発は、C言語でもある程度実現することが可能ですが、そのためには関数や構造体を十分に抽象化する高度な設計力が必要となります。正しい設計が必要なことはオブジェクト指向型言語でも変わりませんが、C言語に比べ、文法レベルでオブジェクト指向設計をサポートすることでC++言語はより大規模な開発や組織開発に適しています。

 しかしC++言語は、他のオブジェクト指向型言語と比べても複雑な仕様となっています。多重継承やテンプレートといった機能を駆使したライブラリは、熟練の技術者でも時に頭を悩ますものです。初心者が使いこなすことは難しく、オブジェクト指向に対する十分な知識と経験が必要となるでしょう。学習のタイミングとしては、少なくともC言語と、多少の開発経験を経てからがよいでしょう。

学習レベル 中級~上級
実行方式 コンパイル型
開発対象 ネイティブ・アプリケーション(実行可能ファイル)
適用分野 アプリケーション開発、ドライバ・OS開発
サンプル02
#include <iostream>

int main() {
    std::cout << "Kitty on your lap";
    return 0;
}

 C++言語もmain関数から開始されるという点はC言語と同じです。しかし、C++言語では「stdio.h」ヘッダファイルの代わりに「iostream」をインクルードしています。printf関数など、C言語の標準関数をC++言語で使うことも可能ですが、通常はC++用に作られた標準ライブラリを使って出力します。

 「std」という識別子は標準ライブラリが所属する名前空間を表します。名前空間とは、一連の識別子をパッケージ化する目的で使われ、ライブラリの目的や開発組織ごとに分けられます。coutはstd名前空間内にあるグローバルな変数で、標準出力を表すオブジェクトです。このオブジェクトは、シフト演算子<<をオーバーロードしているため、右オペランドに指定した値を標準出力に表示します。

 なお、現在ではC言語の純粋なコンパイラが使われるということは珍しく、多くの処理系はC言語とC++言語を同じコンパイラでサポートします。多くの場合は、オプションやソースコードの拡張子などでC言語とC++言語のコンパイルを切り替えます。

関連リンク

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Java

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

赤坂 玲音(アカサカ レオン)

平成13年度「全国高校生・専門学校生プログラミングコンテスト 高校生プログラミングの部」にて最優秀賞を受賞。2005 年度~ Microsoft Most Variable Professional Visual Developer - Visual C++。プログラミング入門サイト WisdomSoft の管理人。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1502 2008/08/26 14:11

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング