第1章 プログラムとは何か
プログラムとは
プログラムとは、コンピュータに特定の処理を実行させるために記述された命令の集合です。 これらの命令はプログラミング言語を使って書かれ、通常はテキスト形式のソースコードとして保存されます。
プログラムが担う役割は幅広く、簡単な計算処理から、ファイル操作、データベース管理、ネットワーク通信、グラフィック描画、さらには AI や機械学習まで、多岐にわたります。 実際のシステムでは、複数のプログラムが連携しながら一つのサービスを構成しているケースがほとんどです。
人間が書いたソースコードは、そのままではコンピュータが理解できません。そのため、コンパイラによって機械語に変換したり、インタープリタによって逐次解釈・実行したりする必要があります。
ソフトウェアとは、こうしたプログラムに加えて、設定ファイルやデータ、付随する仕組みを含めた機能全体の集合体を指します。Web ブラウザや OS、スマートフォンアプリなどが代表例です。
プログラミングとは
プログラミングとは、コンピュータに実行させたい処理を 論理的な手順として設計し、コードとして記述する行為 です。 人が理解しやすい形で書かれた指示を、コンピュータが実行可能な形に落とし込むことが目的になります。
プログラミングによって、次のようなことが可能になります。
- 作業の自動化
- 大量データの処理や分析
- 業務システムや Web サービスの構築
- ユーザーが操作できる画面の作成
- 複雑な処理ロジックの実装
また、プログラミングは単にコードを書くことだけを指すわけではありません。 実際には以下のような工程を含みます。
- 課題や要件の整理
- 処理の流れや構造の設計
- コードの実装
- エラーの修正(デバッグ)
- 動作確認や品質向上のためのテスト
- 保守や改修を考慮した整理・記述
つまり、プログラミングとは 問題を解決するための思考を、コンピュータ向けの命令として形にする作業 だと言えます。
プログラミング言語とは
プログラミング言語とは、人間がコンピュータに指示を伝えるために設計された 専用の言語体系 です。 それぞれの言語には文法や書き方のルールがあり、目的や得意分野も異なります。
プログラミング言語は、考え方や設計思想によっていくつかの種類に分けられます。
- 手続き型言語:処理を順番に記述する
- オブジェクト指向言語:データと処理をオブジェクトとしてまとめる
- 関数型言語:関数の組み合わせで処理を構築する
- 宣言型言語:処理の手順ではなく、結果や条件を記述する
- スクリプト言語:簡潔に書け、素早い開発や自動化に向いている
どの言語も万能ではなく、用途や開発規模、実行環境に応じて適切に選択されます。 重要なのは「言語そのもの」よりも、「どのように考え、どう設計するか」という点です。
プログラミング言語とその概要
多くの開発者や企業が使用している、または歴史的な影響力を持つ20の著名なプログラミング言語とその概要を挙げます。
- C: プログラミングの基本を学ぶのに適した低レベル言語。多くのシステムソフトウェアや組み込みシステムの開発に使用されます。
- C++: C言語にオブジェクト指向と一部の高レベル機能を追加した言語。システム/アプリケーションソフトウェア、ゲーム開発、リアルタイムシステムなどで使われます。
- C# (C Sharp): Microsoftが開発したオブジェクト指向言語で、Windowsアプリケーションやゲーム開発エンジンUnityでよく使われます。
- Java: プラットフォームに依存しない言語で、一度コンパイルすれば異なるハードウェアやOS上で実行できます。エンタープライズ環境やAndroidアプリ開発でよく使用されます。
- Objective-C: C言語にSmalltalk型のメッセージベースのオブジェクト指向システムを追加した言語。かつてはiOSやmacOSのアプリケーション開発で主に使用されました。
- Swift: Appleが開発し、iOSおよびmacOSのアプリケーション開発に使用されるモダンなオブジェクト指向言語。
- PHP: サーバーサイドのウェブ開発で広く使われるスクリプト言語。HTMLと混在して使うことが可能。
- Python: 高レベルで汎用性のあるプログラミング言語で、特にデータサイエンスとAI開発で人気です。簡潔で読みやすいシンタックスが特徴。
- Ruby: オブジェクト指向を強く重視したスクリプト言語。Ruby on Railsというウェブフレームワークで広く使われています。
- Perl: 強力なテキスト処理機能を持つスクリプト言語で、システム管理やウェブ開発で使われます。
- R: データ分析と統計計算に特化したプログラミング言語。
- SQL: データベースの構築と管理に使われる言語で、データの追加、更新、削除、検索などを行います。
- Go (Golang): Googleが開発した静的型付けのコンパイル言語で、シンプルさと並行処理の機能が特徴。
- Kotlin: 静的型付けのオブジェクト指向言語で、特にAndroidアプリケーション開発で人気。
- Rust: メモリ安全性と並行性を重視したシステムプログラミング言語。
- Scala: 静的型付けのマルチパラダイム言語で、Javaの互換性と関数型プログラミングの特性を組み合わせています。
- JavaScript: ウェブページに動的な要素を追加するために使用される言語で、ウェブブラウザ上で直接実行できます。
- TypeScript: JavaScriptに型システムを追加したスーパーセット。大規模なJavaScriptアプリケーションの開発に利用されます。
- Lua: 埋め込み可能なスクリプト言語で、主にゲーム開発や組み込みシステムで使用されます。
- Shell script (bash, sh, etc.): コマンドラインインターフェースの操作を自動化するためのスクリプト言語