プログラミング
コンピューター・プログラミングは、意味のあるタスクを実行するために、コンピュータ・システムによってインタープリトまたはコンパイルされる、有用で保守可能かつ拡張可能なソースコードを記述する技術です。
コンピュータのプログラミングは、高レベルの言語から、低レベルの機械語(コンピュータのハードウェアの仕様をより直接的に制御するコード)やマイクロコード(コンピュータ内の素子を直接制御するコード)に至るまで、数多くの言語のいずれかで行うことができます。
プログラミング言語とマークアップ言語(HTMLなど)の使用には、同じようなスキルが必要とされるが、マークアップ言語の使用は一般的に「プログラミング」とは見なされません。 しかし、多くのマークアップ言語ではスクリプトを組み込むことが可能で、例えば多くのHTML文書にはJavaScriptが含まれています。
コンピューター・プログラミングは、設計、構築、品質管理など、ソフトウェアを作成するためのさまざまな側面を含む、ソフトウェア工学として知られる、より大きな学問分野の一部です。 本書では、ソフトウェアの構築、つまりプログラミングをテーマにしています。 コンピューター・プログラミングは、コンピュータ・サイエンスに興味がある人にとっても有用なスキルです(ただし、必ずしも必要ではありません)。 ソフトウェア工学がソフトウェアを作ることに特化しているのに対し、コンピュータサイエンスはより理論的、数学的な問題を志向する傾向があります。
スタートアップ[編集]
情報企業では、特定の(限られた)コンピュータ言語のスキルセットを持つ従業員を募集したり、プログラミングのバックグラウンドを持つ人がいなくても人事部が対応したりすることがあり、雇用市場はコンピューター・プログラミングに対する妥当ではない発想を助長している側面があります。
つまり、プログラマーになるためには特定のプログラミング言語を選択しなければならないと考え、その言語しかできないと考える、これはプログラミングの実際を正しくとらえていない考え方です。
「C言語のプログラマーになるべきか、Javaのプログラマーになるべきか」を考える必要はないでしょう。むしろ良いプログラマーになること、良いプログラムを書くことを考えたいです。
プログラマーは特定のコンピュータ言語について何を知っているのでしょうか?
まず、多くの言語は同じ基本的な構成要素に基づいています。 言語を学ぶということは、言語やマシンに特化したテクニックよりも、それらの概念を習得する方法として捉えるべきです。
多くのプログラマーは、一般的に複数の言語に精通しています。それは、問題を解決するためのさまざまな方法を見つけることは、自然に興味深く、有用だからです。 1つの言語に秀でていても、他の言語のプログラミング方法については漠然としたアイデアしか持っていないこともあります。アルゴリズムと呼ばれる、コンピュータの問題を解決するための様々な方法を知っていると便利です。アルゴリズムとは、ある課題を解決するための明確な命令(instruction)のリストであり、複数の言語を知っているということは、コンピュータの命令を様々な方法でリスト化する能力を持っているということです。 コンピューター・プログラミング言語には多くの共通点があるため、他のプログラミング言語をマスターすれば、新しいプログラミング言語を習得するのは一般的に簡単です。
では、どうやって始めるのか? 一つの合理的な方法は、ある言語を選んで、それを実行することです。 残念ながら、すべての人、すべての目的に適したコンピュータ言語を提案することはできません。 10人のプログラマーにどの言語を学ぶべきか尋ねれば、10通りの答えが返ってくるでしょう。 このウィキブックスの協力的な性質を考えると、おそらくこのサイトにあるプログラミング言語の本の数と同じくらいの数の回答が得られるでしょう。
言語の種類[編集]
コンピュータ・プログラミングに慣れていない人は、プログラミング言語は基本的にどれも同じだと考えることがあるようですが、これは事実と違います。 すべてのデジタル電子計算機はプログラミング言語をバイナリと呼ばれる1と0の文字列、つまり機械語に変換するので、ある意味ではこれは正しいのですが…。
主流のパーソナルコンピュータ用の言語は、特定の伝統から派生したものであり、非常に似通っていますが、中には根本的に異なるプログラミング体験を提供する、異なるパラダイムに属する言語もあります。 例えば、Javaでのプログラミングは、アセンブリ言語でのプログラミングとは全く異なり、HaskellやProlog、Forthなどでのプログラミングとは全く異なるものです。
共通知識[編集]
コンピュータ言語[編集]
プログラミング言語[編集]
- ActionScript
- Ada
- ALGOL
- AWK
- BASIC
(2014-02-09)
- Bash_Shell_Scripting
- C++
- C言語
(2020-07-11)
- C#
- COBOL
- D言語
(2020-07-11)
- Dart
- Fortran
(2014-02-09)
- GNU Octave
- Go
(2020-06-19)
- Haskell
- HSP
- Java
(2020-07-11)
- JavaScript
(2020-07-11)
- Kotlin
(2020-07-11)
- Lisp
(2014-02-09)
- Logo
- MathML
(2020-05-12)
- Objective-C
- OpenOffice.org Basic
- Perl
(2020-06-19)
- PHP
(2020-06-19)
- PL/I
- PL/M
- Prolog
- Python
(2020-06-19)
- Ruby
- Rust
- Scheme
- SQL
(2020-07-11) ※ MySQL の単元は別の節でリンクを記載。
- Swift
- TypeScript
- 正規表現 (リンク集)
(2020-07-11)
アセンブラ[編集]
- x86アセンブラ
(2020-07-11)
- x80アセンブラ
- Z80系アセンブラ
- 6800系アセンブラ
- CASL - 国家試験「基本情報技術者試験」に出題するために開発されたアセンブラ言語。
データベース[編集]
仕様[編集]
実装[編集]
- MySQL
(2020-07-11) (mariaDB もココ)
- PostgreSQL
- SQLite
低レイヤープログラミング[編集]
BIOS[編集]
機械語[編集]
その他[編集]
ハードウェア記述言語[編集]
各論[編集]
フレームワークやライブラリ[編集]
- OpenGL
- OpenGLプログラミング
- Xプログラミング
- GNOMEフレームワーク
(2020-07-11)
- GTKプログラミング
(2020-07-11)
- Qtプログラミング
(2020-07-11)
- CGI
(2020-07-11)
- Chainer