本ページでは、プログラミング技術に対して以下に示される領域の情報について述べている。目次をクリックするとサマリー項目にジャンプする。
プログラミング技術の概要
プログミング技術について
プログラミング言語は、コンピューターと人間を結ぶ情報手段となる。コンピューターが誕生してから様々な言語が考案されてきた。本ブログでは、まずそれらの歴史を外観し、プログミング言語の効率化の流れである構造化プログラミング、オブジェクト指向言語、関数型言語のコンセプトと活用について述べた後、web技術を作り上げてきたフロントエンド言語(JavaScript系)とバックエンド言語について述べた。 バックエンド言語では、機械学習に用いられせるPython、Rについて述べ、更にAI系の関数型言語であるClojureについても述べている。 以下それらの詳細情報について述べる。
プログラミング技術概要
プログラミング技術概要。ここでは、プログラミング言語の概要としてプログラミング言語とは何か?から始まり、機械言語から始まる様々な言語の概要と歴史について述べた後、プログラミング言語の歴史の中でも重要なパラダイムである「構造化言語」「オブジェクト言語」「関数型言語」の概要と歴史について述べ、さらに数学とアルゴリズムを結ぶジェネリックプログラミング、ウェブ技術の根幹にあるフロントエンド用プログラミング言語の概要について述べる。
プログラミング言語とその応用
機械学習
Pythonと機械学習(1)数学と基本的なアルゴリズム
Pythonと機械学習(1)数学と基本的なアルゴリズム。ここではPythonの実装例のうち、数学と基本的なアルゴリズムに関して述べる。
Pythonと機械学習(2)深層学習と強化学習
Pythonと機械学習(2)深層学習と強化学習。ここではPythonの実装のうち、深層学習と強化学習について述べる。
Pythonと機械学習(3)その他機械学習
Pythonと機械学習(3)その他機械学習。Pythonは、1991年にGuido van Rossumによって開発された汎用プログラミング言語で、簡単に学べ、読みやすいコードが特徴である。オブジェクト指向、手続き型、関数型などの多様なプログラミング手法をサポートし、Webアプリケーション、デスクトップアプリ、機械学習、人工知能など幅広い分野で使用される。クロスプラットフォーム対応で、インタープリタ言語として素早い開発が可能。ここでは、Pythonの概要と機械学習・深層学習の実装について解説する。
R言語と機械学習
R言語と機械学習。Rは、S言語を基に1993年にRobert GentlemanとRoss Ihakaによって改良された高級プログラミング言語で、インタラクティブ性を重視して設計された。データ分析、モデル適用、予測、可視化に加え、グラフィックスやレポート作成機能も備え、フルスタックのデータ解析が可能。2000年代後半から急速に人気が高まり、学術界を超えて多分野で利用され、多くのアドオンパッケージが公開されている。本書では、Rを用いた機械学習の実装について解説する。
人工知能
Pythonと人工知能技術
Pythonと人工知能技術。機械学習以外の人工知能技術へのPythonの応用について述べている
Clojureと関数型プログラミング
Clojureと関数プログラミング。Clojureは、2007年にRich Hickeyによって発表された関数型プログラミング言語で、LISPの方言に位置づけられ、JVM上で動作しJavaコードと連携可能な特徴を持つ。関数を機能ブロックとして再利用性を高め、オブジェクト指向に続く新しいプログラミングの潮流を反映している。言語概要や実装例、Webアプリケーション、機械学習、AI技術への応用について解説している。
LISPと人工知能技術
LISPと人工知能。PLは、ラムダ計算や再帰関数を基礎に1956年に作られた初期の関数型プログラミング言語であり、その影響を受けてLISPが誕生した。LISPは「list processor」に由来し、プログラムとデータがリスト構造で表現されるのが特徴で、初期の人工知能技術の構築に活用された。本書ではLISPの概要と初期AI技術の実装について解説している。
Prologと知識情報処理
Prologと知識情報処理。Prologはシンボリック人工知能プログラミングの古典的言語で、宣言型プログラミングに分類される。プログラムでは「何を得たいか」を宣言し、「どうやって得るか」は記述しない。処理手続きはランタイムやフレームワークに委ねられ、知識情報処理への応用としてエキスパートシステムなどが解説されている。
バックエンド
汎用アプリケーション構築環境であるJavaとScalaとKoltlin
汎用アプリケーション構築環境であるJavaとScalaとKoltlin。JVM(Java仮想マシン)は、Javaバイトコードをホストの機械語に変換して実行する仮想環境で、Javaは1996年にサンマイクロシステムズからリリースされ、現在はオラクルが開発を続けている。JVMはプラットフォーム非依存で、Scala、JRuby、Clojureなどの他の言語との互換性を提供する。
C/C++とRust
C/C++言語とRustについて。C/C++言語は、幅広いプラットフォームで利用されるプログラミング言語で、Cはシンプルで自由度が高く、実行速度が速い構造化プログラミング言語である。一方、C++はCにオブジェクト指向プログラミングを加え、ジェネリックプログラミングにも対応しており、1990年代にはSTLが開発された。ジェネリックプログラミングは効率を損なわずに汎用的な環境で動作するアルゴリズムとデータ構造の設計方法である。
PHPとウェブフレームワーク
PHPとウェブ開発フレームワーク。PHPは、サーバーサイドで動作するスクリプト言語で、Webアプリケーション開発に広く利用されている。1995年にRasmus Lerdorfが開発し、現在はオープンソースで保守されている。動的Webページ生成、データベース操作、ファイル管理などが可能で、HTMLに埋め込んで実行できる。WordPressやJoomlaなどの基盤にも使用され、多くのOSやデータベースとの統合が容易。LaravelやSymfonyなどのフレームワークを使用することで、開発効率を向上させることができる。
フロントエンド
JavascriptとReactによるフロントエンド開発
JavascriptとReactによるフロントエンド開発。JavaScriptは、Webページに動的な動作を追加するためのプログラミング言語であり、1995年にNetscapeによって開発された。主にWebページのDOMを操作し、ユーザーとのインタラクションやデータ処理、アニメーション、非同期通信などを実現する。豊富なライブラリやフレームワーク(例:jQuery、React、Vue.js、D3.js、Three.js)を活用することで、効率的なWeb開発が可能となる。また、TypeScriptやCoffeeScriptなどの代替言語も存在し、JavaScriptの機能を補完・強化している。
CSSによるウェブデザイン
CSSによるウェブデザイン。CSS(Cascading Style Sheets)は、HTMLやXMLの見た目やレイアウトを設定するための言語で、ウェブサイトやアプリケーションのスタイルを一元管理することができる。効率的なCSS開発のために、Bootstrap、Foundation、Materialize、Bulmaなどのフレームワークや、Sass、Less、Stylusなどのプリプロセッサが提供されている。