アルゴリズムとプログラム(3)
プログラミング
データ型
実数型
有限長の2進数で表現され、実数を扱う型だが、厳密に無理数や超越数を正しく扱えない
浮動小数点数、固定小数点数、通貨型など
整数型
符号付き整数型で負整数も扱える。一般に整数型に符号付き、8ビットで2の補数表示の場合、−128〜+127が扱える
文字型
英文字以外に特種記号や仮名文字も含まれる
論理型(プーリアン型)
TrueとFalse
抽象データ型
データ構造とそれを直接操作する手続きをまとめてデータ型の定義とすることでデータ抽象を実現する手法、またはそのひとまとまりとして定義されたデータ型。オブジェクト指向の基となる考え方
プログラム言語の種類と特徴
主なプログラム言語
言語の種類 | 特徴 | 代表的な言語 |
---|---|---|
手続き型言語 | 処理手順を手続きとして記述 | COBOL、FORTRAN、C、BASIC |
非手続き型言語 | 処理手順を意識しないで記述する プログラム言語 | Java、C++ |
オブジェクト指向言語
データと属性、メソッドをまとめてオブジェクトとしてとらえ、オブジェクトの操作を記述するプログラム言語
Java、C++、Smalltalk、Visual Basic.NETなど
ハイブリッド型オブジェクト指向言語
非オブジェクト指向言語にオブジェクト指向機能を拡張したもの
Simula、C++、Objective C、CLOS、Object Pascal
純粋オブジェクト指向言語
特に、その言語で扱うことのできる第一級データとしてオブジェクトしか使用できない場合、「純粋オブジェクト指向言語」と呼ぶことがある
Smalltalk、SELF、Ruby、Io(iolanguge)
関数型言語
関数を組み合わせて処理を記述するプログラム言語。引数に関数を作用させて計算を行うことから、作用型言語ともいう。データフロープログラミング言語も関数型言語の一種。リスト構造を操作する
LISP、Haskell、Scheme、Scala、F#など
論理型言語
論理式の集まりで処理を記述するプログラム言語。真(true)と偽(false)の2種類の値だけを扱う最も単純な構造の型。制御などの手続きなどを記述するのではなく、真実と推論から導いた論理に着目して記述する。逆向き推論や、バックトラックというすべての処理の組合せをもれなく実行するための機能が用意されている
Prolog、Ozなど
言語処理プログラム(言語プロセッサ)
言語処理プログラムとは、下の表に示すように人間が記述したプログラムをコンピュータが実行できる形式に変換するプログラムのこと
原始プログラム(ソースプログラム(ソースコード、ソースモジュール)
機械語以外のプログラム言語を使って書かれたプログラム
目的プログラム(オブジェクトプログラム、オブジェクトコード、オブジェクトモジュール)
機械語のプログラム
ロードモジュール
実行可能プログラム
コンパイラ | 高水準言語で書かれたプログラムを解釈(コンパイル)すると同時に実行 |
---|---|
インタプリタ | 高水準言語(より人間の言葉に近い言語)によるソースを機械語に翻訳 |
アセンブラ | アセンブラ語によるソースを機械語に翻訳 |
ジェネレータ | パラメータを設定し、目的プログラムを出力する |
クロスコンパイラ | 異機種のコンピュータシステムの目的プログラムを出力する |
トランスレータ | ある処理系用の原始プログラムをほかの処理系の原始プログラムに変換する |
エミュレータ | 異機種or異なるOS上で、本来の実行環境を模倣してプログラムを実行させる |
シミュレータ | 実際には実行できない環境を模擬的に再現し、模擬試験(シミュレーション)を行う |
リンカ(連係編集 プログラム) | 目的プログラムにOSのライブラリや、他のモジュールを結合し、実行可能プログラムを生成する |
JIT(Just in Time) コンパイラ | Java言語の中間言語(バイトコード)を、コンピュータが実行できるプログラム(ネイティブコード)に変換する |
コンパイラ
最も一般的な言語処理プログラム、C、COBOL、FORTRANなどの高水準言語で記述された原始プログラムを、機械語の目的プログラムに翻訳する
インタプリンタ
原始プログラムを、1命令ずつ解釈しながら実行する言語処理プログラム。コンパイルやリンクという手順が不要なのでインタプリタさえ用意されていればプログラムはすぐに実行可能だが、解釈しながらなので実行速度は遅い
アセンブラ
アセンブラ言語で記述された原始プログラムを、目的プログラムに翻訳する
クロスコンパイラ(クロスアセンブラ)
高水準言語で作成したソースコードを解釈し、開発に使用しているのとは異なる機種で実行可能な機械語のプログラムを再生するもの。ターゲットとする機種が開発に適した機能や性能を備えていない場合や、ハードウェアの開発が完了する前にソフトウェアを開発する場合など、何らかの事情で開発対象ハードウェア上での開発が困難な場合に用いられる。家庭用ゲーム機向けのゲームをパソコン上で開発する場合など
リンカ(連係編集プログラム)
コンパイラによって変換されたオブジェクトコードに、必要なライブラリなどをつけて実行可能なファイルを生成するプログラム。リンカはオブジェクトファイルを解析して、参照している他のオブジェクトファイルやライブラリなどを探し出し、必要なものを結合して実行形式のファイルを作成する
●静的リンク:1つのファイルにすべてを結合する方式
●動的リンク:実行時に必要に応じて外部のファイルをメモリ上に呼び出す方式
動的(ダイナミック)リンキング
プログラム実行時にダイナミックリンクライブラリ(DLL)から、必要なモジュールを呼び出して、その場でリンクしてプログラムを実行する方式
利点:ロードモジュールがコンパクトになる
欠点:必要なDLLファイルがない場合、プログラムが実行できない
ダイナミックリンクライブ(DLL)
ソフトウェアの一種。動的リンクを使ったライブラリ。複数のプログラムから共通に利用できるように種々の機能をプログラムとは分離させた、シェアードライブラリ(共有ライブラリ)でもあることが多い
Java
Javaとは
Javaは、従来の言語の良い部分を引継ぎ、欠点を克服するように設計され、次のような特徴を持つ
●マルチプラットフォームで実行可能 ●開発されたソフトウェアでは堅牢な実行環境(仮想マシン)であるJava仮想マシンのもとで動作する ●オブジェクト指向プログラミングの考え方に基づいて設計された言語。ソフトウェアの開発と保守の 複雑さを低減し、開発効率と保守性を高める ●SmalltalkやObjective-Cと同様な簡潔なオブジェクトモデルを採用している ●構文はCおよびC++から多くを引き継いでいる |
現在、Javaの技術は、情報技術のローエンドからハイエンドまで幅広く使われている。組込みシステムや携帯電話のシステムから、企業の情報システムを担う大規模なサーバやスーパーコンピュータまで、非常に多くの分野で活用されている
作成されるプログラム技術仕様
Javaアプリケーション技術仕様
Webブラウザとは別に独立して動作するJavaで作成したプログラム
Javaアプレット
Webブラウザと連動して動作するJavaで作成したプログラム
Javaサープレット
webブラウザの要求に応じてサーバ側で実行されるJavaで開発されたプログラム
Javaの技術仕様
JavaBeans(ジャバビーンズ)
Java言語で部品化されたプログラム(Bean)を作成するための技術仕様。部品したプログラムを再利用して組合わせることで、新たなプログラムを開発できる
JSP(Java Server Pages)
JavaプログラムをHTMLに埋め込んで、そのページの表示時に実行する仕組み
EJB(Enterprise JavaBeans)
Javaで開発したプログラム部品を組み合わせて利用し、ネットワーク分散型のアプリケーションをサーバで実現するJavaの仕様
マークアップ言語
HTML
SGMLをもとに開発されたWebページを作成するときに記述するマークアップ言語のひとつ。見出しや段落など文書の構造を記述する。HTMLファイルとCSSファイルを組み合わせて利用する
HTMLファイル | HTMLのスキーマ言語(DTD)の宣言と文書の構成をタグを使って記述したファイル |
---|---|
CSSファイル | HTML用のスタイルシート言語(CSS)で作成したスタイルシートファイル |
SGML
マークアップ言語のひとつ。データ交換を容易にすることを目的として開発された文書フォーマットで電子出版や文書データベースなどに使用されている
ハイパーテキスト
Webページのリンクに代表される、異なる文書にジャンプする(ハイパーリンク機能)ことができる文書
XML
インターネット向けに最適化されたデータを記述するためのマークアップ言語のマークアップ言語のマークアップ言語.
タグを独自に定義することができることから拡張可能なマークアップ言語といわれる
ネットワークを介したデータ交換やコンピュータの動作環境の定義などをおこなう場合の利用される
ITサービス、企業のインターネット上での情報公開や電子商取引などで幅広く利用される
XMLファイル、XML Schemaファイル、XSLファイルを組み合わせることができる
XMLファイル | 分書の構成をタグを使って記述したファイル |
---|---|
XML Schemaファイル | XMLのスキーマ言語(XML Schema)で作成したファイル。XMLファイルに記述されている独自のタグを定義したり、データの範囲を定義したりする |
XSLファイル | XML用のスタイルシート言語(XSL)で作成したスタイルシートファイル |
RSS
Webページが更新されたことが一目でわかるように、見出しや要約などを記述したXMLベースのファイルフォーマットのこと
SAX (サックス) | プログラムからXMLファイルを操作するときに利用できるAPI。XMLファイルのタグのデータを取り出せるが、XMLファイルを更新はできない。XMLファイルの内容を先頭から順に処理を行う。DOMと比べて、必要とされるメモリの容量を抑えることが可能 |
---|---|
SOAP (ソープ) | 他のコンピュータ上にあるデータやサービスにアクセスするためのプロトコル。XMLに付帯情報をつけたデータ(SOAPメッセージ)をHTTPなどをベースにして通信する |
SVG | ベクター画像を記述する言語。XMLをベースとしている |
ベクター画像
画像を構成する点の位置とその角度で処理された画像のこと。作成した画像を拡大したり変形したりしても点と点の位置の関係が変わらないため、ギザギザにならず、画質が低下しない(ドロー形式)
ビットマップ画像
画像全体を点単位で処理された画像のこと。JPEG、GIFなど、
妥当なXML文書
DTDが与えられ、それに対して完全に適合したXML文書のこと
整形式文書
DTDが与えられていないか、DTDに適合しないが、基本的な構文がXMLの仕様に適合する文書
総ての要素に終了タグと空ではない開始タグが記述されている文書
XSLT
XML文書を別の文書形式に変換するための仕様。スタイルシートとも呼ぶ
DTD(文書型定義)
SGMLやXMLで文書を記述する際、その文書中でどのようなタグや属性が使われているかを定義したもの。SGMLでは文書は必ずDTDに従って作成される必要があるが、XMLではDTDは必ずしも必要ではない
XLink
XML文書中のオブジェクト間のリンクを記述するための標準書式。XPointerと併用してハイパーリンクを実現する
XHTML
XMLをもとにHTMLを改良したマークアップ言語。見出しや段落などの文書の構造を記述する。記述方法はHTMLとほとんど同じ。HTMLよりも記述方法が統一されているため、コンピュータが内容を理解しやすいという特徴がある
XHTNL Basic
携帯電話や携帯情報端末などさまざまなデバイスからXHTMLで記述された文書を表示できるようにする仕組みのこと。XHTMLの必要最小限のモジュールだけで構成さている
Modulation of XHTML
W3Cによって勧告された「AHTML1.1」で定義された仕様のこと。リストや表、画像などの機能ごとに定義したモジュールを組み合わせることで、新しい定義型とすることができる
スクリプト言語
アプリケーションやツールの動作を記述するための簡易的な言語
Perl
テキスト処理に適しているインタプリタ型のフリーソフトウェア。Webページの掲示板システムやアクセスカウンタのどのCGIで使用される
PHP
HTMLに埋め込むことができるスクリプト言語。Webアプリケーション開発に特化しており、CGIよりも実行速度が速いので、ドプt系なページの作成に利用される
JavaScript
HTMLに埋め込むことができるスクリプト言語。動的なページの作成に使用。Javaと言語使用が似ている部分があるが、全く別物
Ajax(Asynchronous JavaScript+XML)
Webブラウザに実装されているJavaScriptのHTTP通信機能を使って、Webページのリロードを伴わずにサーバとXML形式のデータのやり取りを行って処理を進めていく対話型のWebアプリケーションの実装形態。ユーザの操作や画面描画などと並行してサーバと非同期に通信を行うことで、サーバの存在を感じさせないシームレスなWebアプリケーションを実現することが可能
用語
SOAP (Simple Object Access Protocol)
XMLとHTTPなどをベースとした、他のコンピュータにあるデータやサービスを呼び出すためのプロトコル(通信規約)。XML文書にエンベロープ(封筒)と呼ばれる付帯情報がついたメッセージを、HTTPなどのプロトコルで交換する。サービスと利用するクライアントと、サービスを提供するサーバの双方がSOAPの生成・解釈エンジンを持つことで、異なる環境間でのオブジェクト呼び出しを可能にしている。
UDDI (Universal Description, Discovery, and Integration)
XMLを応用した、インターネット上に存在するWebサービスの検索・照会システム。Webサービスのを提供企業は、自社のサービスを「UDDIレジストリ」に登録し、SOAPにより通信する
WSCI (web services choreography integration)
ウェブサービス間で交換されるメッセージの流れを記述するXMLベースのインタフェース記述言語。ビジネスプロセスのためのインタフェース。BPML(business process modeking language)と併用することにより、Webサービスを使ったBtoBのビジネスプロセスを実現できるというもの
WSDL (Web Services Descripiton Language)
Webサービスを記述するための、XMLをベースとした言語仕様。それぞれのWebサービスがどのような機能を持つのか、それを利用するためにはどのような要求をすればいいのか、などを記述する方法が定義されている。データや操作を定義する部分が通信プロトコルに関する部分から分離しているため、プロトコルやエンコード形式などに関わりなくフォーマットを再利用できる、という特徴を持つ
JSF (JavaServer Faces)
JavaベースのWebアプリケーションフレームワーク
SNS (Social Networking Service)
趣味や嗜好、住居地域、出身校、あるいは「友人の友人」といったつながりを通じて新たな人間関係を構築する場を提供する、会員制のサービスのこと
J2EE (Java 2 Enterprise Edition)
Java言語の機能セットの一つで、サーバや企業の情報システム、大規模システムなど向けの機能をまとめたもの。J2EEはバージョン5.0までの旧称で、以降はJava EEと呼ばれる
●マルチスレッドで実行されるため、CGIよりも高速かつ効率的にクライアントの
要求に応答可能
●豊富なJavaAPIをすべて利用可能
●クラインとの要求やその応答に対する処理がオブジェクトによってカプセル化
されており、開発の単純化が可能
●アプリケーションのアップデートが容易であり、任意のServletを配布可能。
複数のServletを組み合わせた処理を定義できる
記憶領域
スタック領域
自動変数、関数の引数や戻り値などを一時的に保存するための領域。後入れ先出し(LIFO:Last-In First-Out、FILO:First-In Last-Out)の構造を採用している
ヒープ領域
使うときに確保し、使い終わったら解放するための領域。C言語の静的変数は配列の割当てなど解放の順序に関係ないデータが使用される。プッシュ操作やポップ操作は用いない。ヒープ領域の格納と取り出しは変数名を通じていつでも直接的に行うことができる
ライブラリの基礎知識
ライブラリは、よく使用される機能をまとめ、 他のプログラムから利用できるようにしたもの
ライブラリには、静的ライブラリと共有ライブラリの2種類がある。
ライブラリ | 説明 |
---|---|
静的ライブラリ | プログラムの作成時にその実行ファイル内に組み込まれたライブラリ ・メリット:1つのプログラムだけで動作させられ、別環境で動作可 ・デメリット:プログラムのサイズが大きくなる |
共有ライブラリ | プログラムの実行時にロードされて、複数のプログラム間で共有されるライブラリ ・メリット:プログラム全体のサイズが小さくなる ・デメリット:プログラム実行時に適切に配置されたライブラリが必要 |
スタティックリンク・ダイナミックリンク
プログラムからライブラリの機能を呼び出すことをリンクと呼び、リンクには次の2種類がある
リンク | 説明 |
---|---|
スタティックリンク | プログラムの作成時に、あらかじめライブラリの機能をプログラム本体に組み込む方法 この時に組み込まれるライブラリは、静的ライブラリ |
ダイナミックリンク | プログラムの実行時に、ライブラリの機能を呼びだす方法 この時に呼び出されるライブラリは、共有ライブラリ |
局所参照性
1つのリソースに複数回アクセスする処理に関する情報工学上の概念。3つの種類が存在する。データの局所性によって階層的なメモリ構成が性能向上に寄与することになり、局所参照性を高めることで、プログラムを最適化することは一般的な技術となっている
時間的局所性
一度アクセスされたリソース(データ)が近い将来再びアクセスする可能性が高いという概念
空間的局所性
あるリソース(データ)が参照されたとき、連続してアクセスされるデータは隣接したアドレス空間に存在する可能性が高い
遂次的局所性
メモリが逐次アクセスされるという概念
 

