プログラミング

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

メインページ > 工学 > 情報技術 > プログラミング


Wikipedia
ウィキペディアプログラミングの記事があります。


コンピューター・プログラミングは、意味のあるタスクを実行するために、コンピュータ・システムによってインタープリトまたはコンパイルされる、有用で保守可能かつ拡張可能なソースコードを記述する技術です。 コンピュータのプログラミングは、高レベルの言語から、低レベルの機械語(コンピュータのハードウェアの仕様をより直接的に制御するコード)やマイクロコード(コンピュータ内の素子を直接制御するコード)に至るまで、数多くの言語のいずれかで行うことができます。

プログラミング言語とマークアップ言語(HTMLなど)の使用には、同じようなスキルが必要とされるが、マークアップ言語の使用は一般的に「プログラミング」とは見なされません。 しかし、多くのマークアップ言語ではスクリプトを組み込むことが可能で、例えば多くのHTML文書にはJavaScriptが含まれています。

コンピューター・プログラミングは、設計、構築、品質管理など、ソフトウェアを作成するためのさまざまな側面を含む、ソフトウェア工学として知られる、より大きな学問分野の一部です。 本書では、ソフトウェアの構築、つまりプログラミングをテーマにしています。 コンピューター・プログラミングは、コンピュータ・サイエンスに興味がある人にとっても有用なスキルです(ただし、必ずしも必要ではありません)。 ソフトウェア工学がソフトウェアを作ることに特化しているのに対し、コンピュータサイエンスはより理論的、数学的な問題を志向する傾向があります。

スタートアップ[編集]

ウィキバーシティ
ウィキバーシティプログラミングの学習教材があります。

多くの人は、プログラマーになるためには特定のプログラミング言語を選択しなければならないと考え、その言語しかできないと信じています。C言語のプログラマーになるべきか、Javaのプログラマーになるべきか」と自問します。これは完全に間違った質問です。正しい質問は、「どうすれば "良い "プログラマーになれるか」です。残念ながら、企業が特定の(つまり限られた)コンピュータ言語のスキルセットを持つ従業員を募集したり、プログラミングのバックグラウンドを持つ人がいなくても人事部が対応したりすることで、雇用市場はコンピューター・プログラミングに対する誤解を大きく助長しています。

優秀なプログラマーが特定のコンピュータ言語について何を知っているかについては、いくつかのポイントがあります。 まず、多くの言語は同じ基本的な構成要素に基づいています。 言語を学ぶということは、言語やマシンに特化したテクニックよりも、それらの概念を習得する方法として捉えるべきです。 第二に、優れたプログラマーは、一般的に複数の言語に精通しています。それは、問題を解決するためのさまざまな方法を見つけることは、自然に興味深く、有用だからです。 1つの言語に秀でていても、他の言語のプログラミング方法については漠然としたアイデアしか持っていないこともあります。アルゴリズムと呼ばれる、コンピュータの問題を解決するための様々な方法を知っていると便利です。アルゴリズムとは、ある課題を解決するための明確な命令(instruction)のリストであり、複数の言語を知っているということは、コンピュータの命令を様々な方法でリスト化する能力を持っているということです。 コンピューター・プログラミング言語には多くの共通点があるため、他のプログラミング言語をマスターすれば、新しいプログラミング言語を習得するのは一般的に簡単です。

では、どうやって始めるのか? 一つの合理的な方法は、ある言語を選んで、それを実行することです。 残念ながら、すべての人、すべての目的に適したコンピュータ言語を提案することはできません。 10人のプログラマーにどの言語を学ぶべきか尋ねれば、10通りの答えが返ってくるでしょう。 このウィキブックの協力的な性質を考えると、おそらくこのサイトにあるプログラミング言語の本の数と同じくらいの数の回答が得られるでしょう。

言語の種類[編集]

コンピュータ・プログラミングに慣れていない人の間では、プログラミング言語は基本的にどれも同じであるという誤解がよくあります。 すべてのデジタル電子計算機はプログラミング言語をバイナリと呼ばれる1と0の文字列、つまり機械語に変換するので、ある意味ではこれは正しい。

主流のパーソナルコンピュータ用の言語は、特定の伝統から派生したものであり、非常に似通っています(だからこそ、この誤解が広まったのです)が、中には根本的に異なるプログラミング体験を提供する、異なるパラダイムに属する言語もあります。 例えば、Javaでのプログラミングは、アセンブリ言語でのプログラミングとは全く異なり、HaskellやProlog、Forthなどでのプログラミングとは全く異なるものです。

共通知識[編集]

コンピュータ言語[編集]

進捗状況の凡例

00%.svg 数行の文章か目次があります。
25%.svg:本文が少しあります。
50%.svg:本文が半分ほどあります。
75%.svg: 間もなく完成します。
100 percent.svg: 一応完成しています。

プログラミング言語[編集]

アセンブラ[編集]

データベース[編集]

仕様[編集]

実装[編集]

低レイヤープログラミング[編集]

BIOS[編集]

機械語[編集]

その他[編集]

ハードウェア記述言語[編集]


各論[編集]

フレームワークやライブラリ[編集]

マークアップ言語および関連技術[編集]

ソケットプログラミング[編集]

その他[編集]