ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
無料
ブラウザよりも高速アクセス!
 

最適化 (情報工学)

索引 最適化 (情報工学)

ンピュータ関連において最適化(Optimization)という語は、最適化問題のそれを指すことも多いが、ここでは、コンパイラ最適化などに似た話題について説明する(「情報工学」と記事名には付いているが、全く information engineering の話題ではない)。コンピュータシステムは、主としてコストパフォーマンス上の理由から、効率的に(efficiently)動作することが望ましいことが多い。例えば、コンパイラ最適化は、高速化のためだったり、メモリの使用量を削減するためだったり、電力消費を抑えるためだったりする。最適化の対象となるシステムは、1つのプログラムの場合もあるし、複数のコンピュータの場合もあるし、インターネットのようなネットワーク全体の場合もある。 "optimization" という単語の語源は "optimal"(最適な、最善な)と同じだが、最適化によって真に最適なシステムとなることは稀である。最適化されたシステムは一般にある面でのみ最適となる。プログラムの実行時間を削減するためにメモリ使用量を増やしてでも実行時間を最適化したり、逆にメモリが少ないシステムで実行時間が長くなることを覚悟してメモリ使用量が少ないアルゴリズムを選んだりする。あらゆる場合に最適な方法や設計は存在しないので、技術者は最も重要と思われる観点での最適化のために妥協点を探る。さらに、ソフトウェアを完全に最適にする(それ以上どうやっても最適化できない状態にする)のに要する労力は、その最適化されたシステムを利用することで得られる利益よりも大きい。従って、最適化の工程は完全な最適解に到達する以前に終了させられるのが普通である。幸いなことに、効果の大きい改善は最適化工程の初期に現れることが多い。 最適化は様々なレベルで行われる。最も高いレベルの最適化は設計段階に行われる。設計が最適化されていれば、実装でも効率的なアルゴリズムを利用でき、品質のよいコードになるという利点がある。コンパイラ最適化を使えば、実行ファイルがさらに最適化される。最も低いレベルでは、コンパイラを使わずに人間がアセンブリ言語で最適なコードを書く。コンパイラ最適化の技術の進歩と最近のCPUの複雑さのため、コンパイラよりも最適なコードを人間が書くには大変な技能を要する。そのため、このような最適化を行うプロジェクトは滅多にない。最適化は例外的なケースを考慮しつつ、複雑な妥協点を探ることが多い。従って最適化されたプログラムはプログラマが理解できないほど難解になることも多い。可能であれば等価であることが保証されながらプログラムを変形させるなどの手法でバグの可能性をゼロにすべきだが、できない場合、できてないコードではバグを多く含む危険性がある。.

81 関係: 可読性可逆圧縮参照の局所性実行ファイル実行時コンパイラ中間言語形式的検証待ち行列理論マクロ (コンピュータ用語)チューリング賞バグメモ化ループ展開ロブ・パイクボトルネックトレードオフプログラミング (コンピュータ)プログラミング言語プログラム (コンピュータ)プログラム意味論パレートの法則デバッグデータ型フィルタ (ソフトウェア)ドナルド・クヌースニクラウス・ヴィルトホーア論理ベンチマーク制御フローグラフ分散コンピューティング命令レベルの並列性アルゴリズムアントニー・ホーアアセンブリ言語インラインアセンブラインターネットインタプリタエドガー・ダイクストラエイダ・ラブレスキャッシュ (コンピュータシステム)クイックソートクエリ最適化グリッド・コンピューティングコンパイラコンパイラ最適化コンピュータコンピュータネットワークコンピュータ・アーキテクチャコンピュータシステムシミュレーション...ソートソースコードソフトウェア工学ソフトウェア開発工程公理的意味論C言語CPUD言語EiffelEsterel遅延評価静的単一代入表示的意味論記憶装置高水準言語関数型言語JavaScriptLISPLLVMPHP (プログラミング言語)PythonThe Art of Computer Programming抽象解釈投機的実行技術者正当性 (計算機科学)最適化問題最悪実行時間情報工学操作的意味論性能解析 インデックスを展開 (31 もっと) »

可読性

可読性(かどくせい、英語:readability)とは、読み取れる性質、読み取れる度合などを表す言葉。分野により、以下に説明するような意味を持つ。.

新しい!!: 最適化 (情報工学)と可読性 · 続きを見る »

可逆圧縮

可逆圧縮(かぎゃくあっしゅく)とは、圧縮前のデータと、圧縮・展開の処理を経たデータが完全に等しくなるデータ圧縮方法のこと。ロスレス圧縮とも呼ばれる。 アルゴリズムとしてはランレングス、ハフマン符号、LZWなどが有名。 コンピュータ上でよく扱われるLZH、ZIP、CABや、画像圧縮形式のPNG、GIF、動画圧縮形式のHuffyuv、音声圧縮形式のWindows Media Audio Lossless、Apple Lossless、ATRAC Advanced Lossless(AAL)、FLAC、TAK、TTA、Dolby TrueHD、DTS-HDマスターオーディオ、Meridian Lossless Packing、Monkey's Audio、Shorten、mp3HD、WavPack などが可逆圧縮である。.

新しい!!: 最適化 (情報工学)と可逆圧縮 · 続きを見る »

参照の局所性

参照の局所性(さんしょうのきょくしょせい、locality of reference)とは、1つのリソースに複数回アクセスする処理に関する情報工学上の概念である。.

新しい!!: 最適化 (情報工学)と参照の局所性 · 続きを見る »

実行ファイル

実行ファイル(じっこうファイル、Executable、Executable file)とは、コンピュータがプログラムとして解釈実行できるファイルである。実行可能ファイル、実行形式ファイル、あるいは単に実行形式とも呼ばれる。 多くの場合、特定のCPUの機械語を格納したバイナリ形式である(この形式の実行ファイルを単に「バイナリ(ファイル)」と呼ぶこともある)。あるファイルが実行ファイルかどうかは、主に規約の問題である。オペレーティングシステムによっては実行ファイルであることを示すファイル名の規約が存在する(拡張子 ".bin" ".exe"など)。あるいはファイルのメタデータで実行ファイルかどうかを示す(例えばUNIX系オペレーティングシステムのファイルパーミッションビット)。 最近のアーキテクチャでは、実行ファイルにはプログラム自体に含まれない情報も格納される。例えば、実行に必要な環境についての情報、デバッグ情報、シンボル情報などである。 実行ファイルには特定のオペレーティングシステムのシステムコールを呼び出すコードが含まれることもある。つまり実行ファイルはプロセッサ固有であるだけでなくオペレーティングシステム固有でもある。 ソースファイルと実行ファイルの違いはあいまいである。というのもソースから実行形式への変換が暗黙のうちに行われることがあるためである。インタプリタのファイル(シェルスクリプトやバッチファイルを含む)は、厳密に言えばインタプリタプログラムが解釈する命令を与えるものである。.

新しい!!: 最適化 (情報工学)と実行ファイル · 続きを見る »

実行時コンパイラ

実行時コンパイラ(じっこうじコンパイラ、、JITコンパイラ、その都度のコンパイラ)とは、ソフトウェアの実行時にコードのコンパイルを行い実行速度の向上を図るコンパイラのこと。通常のコンパイラはソースコード(あるいは中間コード)から対象CPUの機械語への変換を実行前に事前に行い、これをJITと対比して事前コンパイラ (Ahead-Of-Timeコンパイラ、AOTコンパイラ)と呼ぶ。.

新しい!!: 最適化 (情報工学)と実行時コンパイラ · 続きを見る »

中間言語

中間言語(Pivot language)は、任意の言語を異なる任意の言語へ翻訳する際に利用する中間的な人工言語もしくは自然言語である。.

新しい!!: 最適化 (情報工学)と中間言語 · 続きを見る »

形式的検証

形式的検証(けいしきてきけんしょう)とは、ハードウェアおよびソフトウェアのシステムにおいて形式手法や数学を利用し、何らかの形式仕様記述やプロパティに照らしてシステムが正しいことを証明したり、逆に正しくないことを証明することである。.

新しい!!: 最適化 (情報工学)と形式的検証 · 続きを見る »

待ち行列理論

待ち行列理論(まちぎょうれつりろん )とは、顧客がサービスを受けるために行列に並ぶような確率的に挙動するシステムの混雑現象を数理モデルを用いて解析することを目的とした理論である。応用数学のオペレーションズ・リサーチにおける分野の一つに数えられる。 電話交換機や情報ネットワーク、生産システム、空港や病院などの設計や性能評価に応用される。性能評価指標としては、待ち行列長・待ち時間・スループットなどが用いられる。応用の場では、システムの性能がある設計目標を満たすために必要な設計パラメータを決定する際に、その逆問題を提供できる。.

新しい!!: 最適化 (情報工学)と待ち行列理論 · 続きを見る »

マクロ (コンピュータ用語)

マクロ (macro) は「大きい」「巨大な」といったような意味の語であるが、コンピュータ関係では、アプリケーションソフトウェアなどの操作などといった、プログラミング言語と比較して粒度が大きい操作をまとめて自動化したりする機能を指して良く使われる。マクロを記述するコンピュータ言語をマクロ言語と言う(言語の無いマクロ機能もある)。また、テキスト等の変換を記述する変換言語もマクロと呼ばれる。 この記事と、マクロ言語の記事は、それぞれに書くべき内容と書かれている内容が混乱している。また以下の内容のいくつかは変換言語についてのものである。.

新しい!!: 最適化 (情報工学)とマクロ (コンピュータ用語) · 続きを見る »

チューリング賞

ACMチューリング賞(ACM A.M. Turing Award)は、計算機科学分野で革新的な功績を残した人物に年に1度、ACMから贈られる賞であり世界最高の権威を持つ賞とされている。その功績は長く影響が続くもので、コンピュータ業界で技術的にも重要なものとされている。計算機科学におけるノーベル賞と広く認識されており、事実、受賞者にはハーバート・サイモンなどノーベル賞受賞者が存在している。 「チューリング」の名は、現代計算機科学の父の1人とされるアラン・チューリングの名にちなむ。2014年11月3日、Googleの後援により受賞者には100万ドルが贈られると発表された。 1966年の最初の受賞者はカーネギーメロン大学のアラン・パリスだった。初の女性受賞者は、2006年のフランシス・E・アレン(IBM)である。2008年には再び女性であるバーバラ・リスコフが受賞している。.

新しい!!: 最適化 (情報工学)とチューリング賞 · 続きを見る »

バグ

バグ (bug) とは、英語で「虫」の意であり、転じてコンピュータプログラムの誤りや欠陥を表す。 ソフトウェア・ハードウェア開発における契約文書など、法的な文書ではバグのことを「瑕疵」と記述する。原因や責任の所在などが不明なものを特定性の低い表現の「不具合」と呼ぶことがある。また、セキュリティ上に関わるバグや欠陥は「セキュリティホール」などと呼ばれることもある(正確には、バグはこれらの原因(のひとつ)である)。 多くのバグが含まれ、機能的に正常な役割を果たさないものを、バギー・プログラム (Buggy Program) と呼ぶことがある。 なお、発生したバグを探して取り除く作業はデバッグと呼ばれる。.

新しい!!: 最適化 (情報工学)とバグ · 続きを見る »

メモ化

メモ化(Memoization)とは、プログラムの高速化のための最適化技法の一種であり、サブルーチン呼び出しの結果を後で再利用するために保持し、そのサブルーチン(関数)の呼び出し毎の再計算を防ぐ手法である。メモ化は構文解析などでも使われる(必ずしも高速化のためだけとは限らない)。キャッシュはより広範な用語であり、メモ化はキャッシュの限定的な形態を指す用語である。.

新しい!!: 最適化 (情報工学)とメモ化 · 続きを見る »

ループ展開

ループ展開(ループてんかい、)は、プログラムのサイズを犠牲に実行速度を最適化する(時間と空間のトレードオフ)、と呼ばれる手法の1つである。ループアンローリング()とも呼ぶ。プログラマが手動で行うこともあるし、コンパイラが行うこともある。 ループ展開の目的は、毎回の繰り返しごとに発生する「ループの終了」条件のテストを減少させる(もしくはなくす)事によって、実行速度を向上させることである。ループは、ループ自体を制御するためのオーバーヘッドがなくなるように、独立した命令ブロックの連続に書き換えることができる。.

新しい!!: 最適化 (情報工学)とループ展開 · 続きを見る »

ロブ・パイク

バート・C・パイク(Robert C. Pike、1956年 - )は、ソフトウェア工学者でありソフトウェア作家。ベル研究所でのUNIX開発、その後の Plan 9 と Inferno というオペレーティングシステムの開発で知られる。また、Limbo というプログラミング言語の作者でもある。また、UNIX用のグラフィカル端末 Blit の開発も行った。それ以前の1981年、彼は世界初のUNIX用ウィンドウシステムのコードも書いている。 長年に渡って、彼はテキストエディタを数々開発している。特によく知られているのは、sam と acme である。パイクはブライアン・カーニハンと共に『UNIXプログラミング環境』と『プログラミング作法』という2冊の著書を著している。また、ケン・トンプソンと共にUTF-8の開発を行った。パイクは細かいプログラムも開発しており、例えば電子メールの差出人の顔写真の画像を表示するプログラム vismon などがある。 パイクはコメディデュオ Penn and Teller のテクニカルアシスタントとして、テレビ番組『レイト・ショー・ウィズ・デイヴィッド・レターマン』に出演したことがある。パイクはジョークとして、1980年のオリンピック(モスクワオリンピック)ので銀メダルを取ったと言っていた。実際には、パイクはカナダ国籍であり、カナダはモスクワオリンピックをボイコットした。 現在は Google に勤務しており、とプログラミング言語Goの開発に関わっている。.

新しい!!: 最適化 (情報工学)とロブ・パイク · 続きを見る »

ボトルネック

ボトルネック概念図 ボトルネック (bottleneck) とは、システム設計上の制約の概念。英語の「瓶の首」の意。一部(主に化学分野)においては律速(りっそく、「速さ」を「律する(制御する)」要素を示すために使われる)、また『隘路(あいろ)』と言う同意語も存在する。 80-20の法則などが示すように、物事がスムーズに進行しない場合、遅延の原因は全体から見れば小さな部分が要因となり、他所をいくら向上させても状況改善が認められない場合が多い。このような部分を、ボトルネックという。 瓶のサイズがどれほど大きくても、中身の流出量・速度(スループット)は、狭まった首のみに制約を受けることからの連想である。 ボトムネックは誤記。.

新しい!!: 最適化 (情報工学)とボトルネック · 続きを見る »

トレードオフ

トレードオフ()とは、一方を追求すれば他方を犠牲にせざるを得ないという状態・関係のことである。トレードオフのある状況では具体的な選択肢の長所と短所をすべて考慮したうえで決定を行うことが求められる。.

新しい!!: 最適化 (情報工学)とトレードオフ · 続きを見る »

プログラミング (コンピュータ)

ンピュータのプログラミング(programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。.

新しい!!: 最適化 (情報工学)とプログラミング (コンピュータ) · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: 最適化 (情報工学)とプログラミング言語 · 続きを見る »

プログラム (コンピュータ)

ンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。.

新しい!!: 最適化 (情報工学)とプログラム (コンピュータ) · 続きを見る »

プログラム意味論

プログラム意味論(program semantics)とは、計算機科学(特に理論計算機科学と分類されることもある)の一分野で、プログラミング言語の意味と計算モデルに関する分野である。形式的なものは、プログラミング言語の形式意味論とも呼ばれる。標準規格等では形式的でなく意味論を与えているものも多い。.

新しい!!: 最適化 (情報工学)とプログラム意味論 · 続きを見る »

パレートの法則

パレートの法則(パレートのほうそく)は、イタリアの経済学者ヴィルフレド・パレートが発見した冪乗則。経済において、全体の数値の大部分は、全体を構成するうちの一部の要素が生み出しているという理論。80:20の法則、ばらつきの法則とも呼ばれる。.

新しい!!: 最適化 (情報工学)とパレートの法則 · 続きを見る »

デバッグ

デバッグ(debug)とは、コンピュータプログラムや電気機器中のバグ・欠陥を発見および修正し、動作を仕様通りのものとするための作業である。サブシステムが密結合であると、1箇所の変更が別の箇所でのバグを作り出すので、バグの修正がより困難となる。.

新しい!!: 最適化 (情報工学)とデバッグ · 続きを見る »

データ型

データ型(データがた、)とは、(コンピュータにおける)データ(値)の種類に関する分類である。データタイプとも。 具体的にいうと、たとえば 0, 1, 2, -42 といったような値は整数型であり、"foo", "Hello" といったような値は文字列型である。プログラミングなどにおいて、まずデータオブジェクトや関数などの「値」について、またさらに、それらに関連付け(束縛)される変数や定数、リテラル、それらを組合せる演算子、さらにそれらからなる式といった構文上の要素の型が、データ型の議論の対象となる。.

新しい!!: 最適化 (情報工学)とデータ型 · 続きを見る »

フィルタ (ソフトウェア)

フィルタ(filter)は、データストリームを処理するコンピュータプログラムである。.

新しい!!: 最適化 (情報工学)とフィルタ (ソフトウェア) · 続きを見る »

ドナルド・クヌース

ドナルド・エルビン・クヌース(Donald Ervin Knuth, 1938年1月10日 -)は数学者、計算機科学者。スタンフォード大学名誉教授。 クヌースによるアルゴリズムに関する著作 The Art of Computer Programming のシリーズはプログラミングに携わるものの間では有名である。アルゴリズム解析と呼ばれる分野を開拓し、計算理論の発展に多大な貢献をしている。その過程で漸近記法で計算量を表すことを一般化させた。 理論計算機科学への貢献とは別に、コンピュータによる組版システム TeX とフォント設計システム METAFONT の開発者でもあり、Computer Modern という書体ファミリも開発した。 作家であり学者であるクヌースは、文芸的プログラミングのコンセプトを生み出し、そのためのプログラミングシステム WEB / CWEB を開発。また、MIX / MMIX 命令セットアーキテクチャを設計。.

新しい!!: 最適化 (情報工学)とドナルド・クヌース · 続きを見る »

ニクラウス・ヴィルト

ニクラウス・ヴィルト (Niklaus Wirth, 1934年2月15日 -)はスイスの計算機科学者。プログラミング言語Pascal、Modula-2などの開発や、ソフトウェア工学分野の開拓的研究で知られる。.

新しい!!: 最適化 (情報工学)とニクラウス・ヴィルト · 続きを見る »

ホーア論理

ホーア論理(ホーアろんり、Hoare logic.)とは、公理的意味論の立場でプログラムの正当性について厳密に推論するために第一階述語論理を拡張した形式論理の言語を言う。 プログラムの正しさを証明するためのロバート・フロイドによる流れ図に関する方法を基に、計算機科学者のアントニー・ホーアによって提案された。.

新しい!!: 最適化 (情報工学)とホーア論理 · 続きを見る »

ベンチマーク

ベンチマーク()とは、本来は測量において利用する水準点を示す語で、転じて金融、資産運用や株式投資における指標銘柄など、比較のために用いる指標を意味する。また、広く社会の物事のシステムのあり方や規範としての水準や基準などを意味する。またベンチマーキングとは自社の課題解決のために、競合他社などの優れた経営手法(ベストプラクティス)を持つ企業を分析するプロセスを指す。.

新しい!!: 最適化 (情報工学)とベンチマーク · 続きを見る »

制御フローグラフ

制御フローグラフ(せいぎょフローグラフ、Control Flow Graph, CFG)は、プログラムを実行したときに通る可能性のある全経路をグラフで表したものである。この場合、ノードは基本ブロック(すなわち、分岐を全く含まない逐次的コード列であって、途中に分岐先もない)を表し、ノードとノードをつなぐ有向エッジは、あるブロックから別ブロックへのジャンプを意味する。一般に、グラフ全体の入口となる入口ブロックと、出口となる出口ブロックがある。 CFGはコンパイラ最適化や静的コード解析ツールでよく使われる。 最適化において利用されるグラフの属性として、到達可能性(reachability)がある。あるブロックまたは部分グラフが、入口ブロックを含む部分グラフと連結していない場合、そのブロックは決して実行されることはなく、いわゆる到達不能コードであって、容易に削除可能である。出口ブロックが入口ブロックから到達不能な場合、無限ループとなっている(あらゆる無限ループを検出できるわけではない。停止性問題を参照のこと)。プログラマが明示的に到達できないコードや無限ループを書かなくても、そのような状況になることはある。例えば、定数伝播や定数畳み込みといった最適化を行った後に分岐スレッディングを行うと、元々は別々だった基本ブロックが1つにまとめられることがあり、エッジがCFGから除去され、グラフの一部が連結されなくなることがある。.

新しい!!: 最適化 (情報工学)と制御フローグラフ · 続きを見る »

分散コンピューティング

分散コンピューティング(ぶんさんコンピューティング、英: Distributed computing)とは、プログラムの個々の部分が同時並行的に複数のコンピュータ上で実行され、各々がネットワークを介して互いに通信を行いながら全体として処理が進行する計算手法のことである。複雑な計算などをネットワークを介して複数のコンピュータを利用して行うことで、一台のコンピュータで計算するよりスループットを上げようとする取り組み、またはそれを実現する為の仕組みである。分散処理(ぶんさんしょり)ともいう。並列コンピューティングの一形態に分類されるが、一般に並列コンピューティングと言えば、同時並行に実行する主体は同じコンピュータシステム内のCPU群である。ただし、どちらもプログラムの分割(同時に実行できる部分にプログラムを分けること)が必須である。分散コンピューティングではさらに、それぞれの部分が異なる環境でも動作できるようにしなければならない。例えば、2台の異なるハードウェアを使ったコンピュータで、それぞれ異なるファイルシステム構成であっても動作するよう配慮する必要がある。 問題を複数の部分問題に分けて各コンピュータに実行させるのが基本であり、素数探索や数多く試してみる以外に解決できない問題の対処として用いられているものが多い。分散コンピューティングの例としてBOINCがある。これは、大きな問題を多数の小さな問題に分割し、多数のコンピュータに分配するフレームワークである。その後、それぞれの結果を集めて大きな解を得る。一般的に処理を分散すると一台のコンピュータで計算する場合と比べ、問題データの分配、収集、集計するためのネットワークの負荷が増加し、問題解決の為のボトルネックとなるため、部分問題間の依存関係を減らすことが重要な課題となる。 分散コンピューティングは、コンピュータ同士をネットワーク接続し、効率的に通信できるよう努力した結果として自然に生まれた。しかし、分散コンピューティングはコンピュータネットワークと同義ではない。単にコンピュータネットワークと言った場合、複数のコンピュータが互いにやり取りするが、単一のプログラムの処理を共有することはない。World Wide Web はコンピュータネットワークの例であるが、分散コンピューティングの例ではない。 分散処理を構築するための様々な技術や標準が存在し、一部はその目的に特化して設計されている。例えば、遠隔手続き呼出し (RPC)、Java Remote Method Invocation (Java RMI)、.NET Remoting などがある。.

新しい!!: 最適化 (情報工学)と分散コンピューティング · 続きを見る »

命令レベルの並列性

命令レベルの並列性(Instruction-level parallelism、ILP)とは、プログラムの中で並行して実行できる処理がいくつあるかの尺度である。.

新しい!!: 最適化 (情報工学)と命令レベルの並列性 · 続きを見る »

アルゴリズム

フローチャートはアルゴリズムの視覚的表現としてよく使われる。これはランプがつかない時のフローチャート。 アルゴリズム(algorithm )とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。 「問題」はその「解」を持っているが、アルゴリズムは正しくその解を得るための具体的手順および根拠を与える。さらに多くの場合において効率性が重要となる。 コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。人間より速く大量に計算ができるのがコンピュータの強みであるが、その計算が正しく効率的であるためには、正しく効率的なアルゴリズムに基づいたものでなければならない。.

新しい!!: 最適化 (情報工学)とアルゴリズム · 続きを見る »

アントニー・ホーア

チャールズ・アントニー・リチャード・ホーア(Charles Antony Richard Hoare、1934年1月11日 - )はイギリスの計算機科学者。通称はトニー・ホーア(Tony Hoare)またはC・A・R・ホーア。 クイックソート(一般的な場合には最も性能の良い実装ができるとされるソートアルゴリズム)の考案でも知られるが、専門的な業績としては、ホーア論理や、並行プロセスを形式記述するCommunicating Sequential Processes(CSP)などがある。CSPはプログラミング言語Occamに示唆を与えた。.

新しい!!: 最適化 (情報工学)とアントニー・ホーア · 続きを見る »

アセンブリ言語

モトローラ MC6800 のアセンブリ言語のソースコード アセンブリ言語(アセンブリげんご、英: assembly language)とは、コンピュータ、マイクロコントローラ、その他のプログラム可能な機器を動作させるための機械語を人間にわかりやすい形で記述する、代表的な低水準言語である。なお、英語の assembly とは「組立」という意味である。.

新しい!!: 最適化 (情報工学)とアセンブリ言語 · 続きを見る »

インラインアセンブラ

インラインアセンブラ(英: Inline assembler)は、高水準言語の処理系中に埋込まれているアセンブラ、ないし、そのような言語でソースコード中(インライン)にアセンブリ言語によるコードを埋込むことができる、という機能である。例として、以下のような利用法がある。.

新しい!!: 最適化 (情報工学)とインラインアセンブラ · 続きを見る »

インターネット

インターネット(internet)は、インターネット・プロトコル・スイートを使用し、複数のコンピュータネットワークを相互接続した、グローバルな情報通信網のことである。 インターネットは、光ファイバーや無線を含む幅広い通信技術により結合された、地域からグローバルまでの範囲を持つ、個人・公共・教育機関・商用・政府などの各ネットワークから構成された「ネットワークのネットワーク」であり、ウェブのハイパーテキスト文書やアプリケーション、電子メール、音声通信、ファイル共有のピア・トゥ・ピアなどを含む、広範な情報とサービスの基盤となっている。.

新しい!!: 最適化 (情報工学)とインターネット · 続きを見る »

インタプリタ

インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードないし中間表現を逐次解釈しながらするプログラムのこと。.

新しい!!: 最適化 (情報工学)とインタプリタ · 続きを見る »

エドガー・ダイクストラ

ドガー・ダイクストラ(Edsger Wybe Dijkstra, 1930年5月11日 - 2002年8月6日)は、オランダ人の計算機科学者。1972年、プログラミング言語の基礎研究への貢献に対してチューリング賞を受賞。構造化プログラミングの提唱者。1984年から2002年に亡くなるまでテキサス大学オースティン校の計算機科学の Schlumberger Centennial Chair を務めた。 2002年の死の直前、プログラム計算のについての仕事に対して ACM PODC Influential Paper Award を授与された。この賞は翌年からダイクストラを称えてと呼ばれるようになった。 エズガー・ダイクストラと表記されることもある。オランダ語での発音は、IPA表記で で、エツハー・ウィベ・デイクストラに近い。.

新しい!!: 最適化 (情報工学)とエドガー・ダイクストラ · 続きを見る »

エイダ・ラブレス

イダ・ラブレス エイダ・ラブレス ラブレース伯爵夫人オーガスタ・エイダ・キング(Augusta Ada King, Countess of Lovelace, 1815年12月10日 - 1852年11月27日)は、19世紀のイギリスの貴族の女性。ミドルネームのエイダで知られる。結婚前の姓はバイロン。詩人第6代バイロン男爵ジョージ・ゴードン・バイロンの一人娘であり、数学を愛好した。主にチャールズ・バベッジの考案した初期の汎用計算機である解析機関についての著作で知られている。.

新しい!!: 最適化 (情報工学)とエイダ・ラブレス · 続きを見る »

キャッシュ (コンピュータシステム)

ャッシュ (cache) は、CPUのバスやネットワークなど様々な情報伝達経路において、ある領域から他の領域へ情報を転送する際、その転送遅延を極力隠蔽し転送効率を向上するために考案された記憶階層の実現手段である。実装するシステムに応じてハードウェア・ソフトウェア双方の形態がある(今後コンピュータのプログラムなども含め全ての転送すべき情報をデータと表す)。 キャッシュ概要図 転送元と転送先の中間に位置し、データ内容の一部とその参照を保持する。データ転送元への転送要求があり、それへの参照が既にキャッシュに格納されていた場合は、元データからの転送は行わずキャッシュが転送を代行する(この状態をキャッシュヒット、キャッシュに所望のデータが存在せず元データから転送する状態をキャッシュミスという。なお、由来は不明で和製英語と思われるが日本の一部の文献及び資格試験において「キャッシュミスヒット」という用語が使われている)。もしくは出力データをある程度滞留させ、データ粒度を高める機能を持つ。これらによりデータの2種の局所性、すなわち時間的局所性と空間的局所性を活用し、データ転送の冗長性やオーバヘッドを低減させることで転送効率を向上させる。 コンピュータの各記憶領域を始めとして、ネットワークやデータベース、GPU、DSPなど様々なシステムの様々な階層に搭載されている。.

新しい!!: 最適化 (情報工学)とキャッシュ (コンピュータシステム) · 続きを見る »

クイックソート

イックソート (quicksort) は、1960年にアントニー・ホーアが開発したソートのアルゴリズム。分割統治法の一種。 n個のデータをソートする際の最良計算量および平均計算量はO(n\log n)である。他のソート法と比べて、一般的に最も高速だといわれているが対象のデータの並びやデータの数によっては必ずしも速いわけではなく、最悪の計算量はO(n^2)である。また数々の変種がある。 安定ソートではない。.

新しい!!: 最適化 (情報工学)とクイックソート · 続きを見る »

クエリ最適化

リ最適化(クエリさいてきか、query optimization.)は、多くのデータベース管理システム (DBMS) の持つ機能であり、クエリ(データに対する問い合わせ)を実行する最も効率的な方法を決定する。クエリオプティマイザ (query optimizer) とも言う。クエリオプティマイザは、入力されたクエリについて考えられるクエリ実行計画群を評価し、どれが最も効率的か決定する。コストに基づいたクエリオプティマイザでは、個々の計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力(I/O)操作数、CPU時間、その他から決定する。評価されるクエリ実行計画群は、可能なアクセス経路(例えば、インデックス検索、シーケンシャル検索)と結合アルゴリズム(例えば、ソートマージ結合、ハッシュ結合、入れ子ループ)の組み合わせから生成される。探索空間は入力されたSQLクエリによっては非常に大きくなる可能性もある。 クエリ最適化をユーザーが直接操作することはできない。クエリがデータベースサーバ (DBMS) に対して発行され、パーサーが構文解析すると、その結果がクエリオプティマイザに送られ、クエリ最適化が行われる。 関係代数 (関係モデル)#問い合わせ最適化も参照。.

新しい!!: 最適化 (情報工学)とクエリ最適化 · 続きを見る »

グリッド・コンピューティング

リッド・コンピューティングは、インターネットなどの広域のネットワーク上にある計算資源(CPUなどの計算能力や、ハードディスクなどの情報格納領域)を結びつけ、ひとつの複合したコンピュータシステムとしてサービスを提供する仕組みである。提供されるサービスは主に計算処理とデータの保存・利用に大別される。一箇所の計算センターや、一組のスーパーコンピュータでは足りないほどの大規模な計算処理や大量のデータを保存・利用するための手段として開発されている。.

新しい!!: 最適化 (情報工学)とグリッド・コンピューティング · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: 最適化 (情報工学)とコンパイラ · 続きを見る »

コンパイラ最適化

ンパイラ最適化(こんぱいらさいてきか、Compiler optimization)の記事では、コンピュータ・プログラムの最適化に関する話題のうち、もっぱらコンパイラに関係するものに関して説明する。最も一般的な要求はプログラムの実行時間を最小化することであり、その次に使用するメモリ量を最小化することである。また、携帯可能なコンピュータが増えるにつれて、消費電力を最小化するという最適化も生まれてきた。 一部のコード最適化問題はNP完全問題であることが示されている。実際には、プログラマがコンパイラによる最適化の完了を待てる時間の上限なども考慮してコンパイラ最適化を実装する(最適化はCPU時間とメモリを多大に使用する)。かつては、コンピュータのメモリ実装量も実行できる最適化を制限する要因だった。 コンパイラメーカによっては、「コンパイラの最適化の能力が売り上げや評判に大きく影響する」と信じている場合があり、そういう信念に従って「最適化コンパイラ」と銘打つことがある。少なくとも、同程度にバグが無いコンパイラ同士であれば、という前提の範囲内なら、最適化の能力が高いほうが魅力的と言えるであろう。.

新しい!!: 最適化 (情報工学)とコンパイラ最適化 · 続きを見る »

コンピュータ

ンピュータ(Computer)とは、自動計算機、とくに計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。実際の対象は文字の置き換えなど数値計算に限らず、情報処理やコンピューティングと呼ばれる幅広い分野で応用される。現代ではプログラム内蔵方式のディジタルコンピュータを指す場合が多く、特にパーソナルコンピュータやメインフレーム、スーパーコンピュータなどを含めた汎用的なシステムを指すことが多いが、ディジタルコンピュータは特定の機能を実現するために機械や装置等に組み込まれる組み込みシステムとしても広く用いられる。電卓・機械式計算機・アナログ計算機については各項を参照。.

新しい!!: 最適化 (情報工学)とコンピュータ · 続きを見る »

コンピュータネットワーク

ンピュータネットワーク(computer network)は、複数のコンピュータを接続する技術。または、接続されたシステム全体。コンピュータシステムにおける「通信インフラ」自体、あるいは通信インフラによって実現される接続や通信の総体が(コンピュータ)ネットワークである、とも言える。.

新しい!!: 最適化 (情報工学)とコンピュータネットワーク · 続きを見る »

コンピュータ・アーキテクチャ

ンピュータ・アーキテクチャ(computer architecture)は、コンピュータ(特にハードウェア)における基本設計や設計思想などを意味する。アーキテクチャ(建築)には、単に「建築物」以外に、設計や様式という意味があるが、それから転じて、コンピュータ分野においても使われるようになった。「設計思想」などと意訳されることもある。技術者や研究者の用語としては(企業ごとの用語の違いにもよるが)「方式」という語が使われることもある。 1964年のSystem/360で最初に使われた用語で、その際の意味としては、入出力インタフェースを含むコンピュータシステムのハードウェア全体(周辺機器自体は含まない)の、ユーザー(プログラマ、OSを設計するプログラマも含む)から見たインタフェースの定義であり、具体的には使用できるレジスタの構成、命令セット、入出力(チャネルコントロールワード)などであり、実装は含まない。このアーキテクチャが同一のコンピュータ間や、上位互換のアーキテクチャを持つコンピュータへの移行や、上位互換の周辺機器への移行などは、ソフトウェアの互換性が原則として保証される。またハードウェアの内部設計や実装は、定義されたアーキテクチャを守る限り、技術の進歩に応じて自由に更新できる。この結果、コンピュータ・ファミリー(シリーズ)が形成可能となる。現在で言えばレイヤー定義であり仮想化の一種でもある。 また、システムアーキテクチャ、エンタープライズアーキテクチャ、ソフトウェアアーキテクチャ、ARMアーキテクチャなどの用語も増えている。.

新しい!!: 最適化 (情報工学)とコンピュータ・アーキテクチャ · 続きを見る »

コンピュータシステム

ンピュータシステム(computer system)は、コンピュータをその内に含むシステムであり、広くはコンピューティングと総称される、情報処理や数値計算やデータ処理を行う情報システムや、制御にコンピュータを利用・応用した制御システムのことである(しかし、この記事の残りの部分には、もっぱら企業等において「情シス」などと略されるいわゆる「情報システム」についての話題しかない)。.

新しい!!: 最適化 (情報工学)とコンピュータシステム · 続きを見る »

シミュレーション

ミュレーション()は、何らかのシステムの挙動を、それとほぼ同じ法則に支配される他のシステムやコンピュータなどによって模擬すること広辞苑第6版。simulationには「模擬実験」や「模擬訓練」という意味もある。なお「シミュレイション」と表記することもまれにある。.

新しい!!: 最適化 (情報工学)とシミュレーション · 続きを見る »

ソート

ート は、データの集合を一定の規則に従って並べること。日本語では整列(せいれつ)と訳される。(以前はその原義から分類という訳語が充てられていたが、もう使われていない) 主にコンピュータソフトにおけるリストに表示するデータに対し、全順序関係によって一列に並べることを指す。また、単に「ソート」といった場合、値の小さい方から大きい方へ順に並べる昇順(しょうじゅん、)を指すことが多い。その反対に値を大きい方から小さい方へ順に並べることを降順(こうじゅん、)という。 対象となるデータのデータ構造や必要な出力によって、使われるアルゴリズムは異なる。.

新しい!!: 最適化 (情報工学)とソート · 続きを見る »

ソースコード

青で示されているのが有効なコードである。 ソースコード(source code)とは、コンピュータプログラミング言語で書かれた、コンピュータプログラムである文字列(テキストないしテキストファイル)のことである。.

新しい!!: 最適化 (情報工学)とソースコード · 続きを見る »

ソフトウェア工学

フトウェア工学(ソフトウェアこうがく、Software engineering)は、コンピュータのプログラム、およびその作成行為であるプログラミングを対象とした工学である。.

新しい!!: 最適化 (情報工学)とソフトウェア工学 · 続きを見る »

ソフトウェア開発工程

フトウェア開発工程(ソフトウェアかいはつこうてい、Software Development Process)とは、ソフトウェア製品の開発の構造を意味する。ソフトウェアライフサイクル、ソフトウェア開発プロセス、ソフトウェアプロセスもほぼ同義語である。開発工程にはいくつかのモデルがあり、開発工程内の各種タスク・活動のための手法を提案している。.

新しい!!: 最適化 (情報工学)とソフトウェア開発工程 · 続きを見る »

公理的意味論

公理的意味論(こうりてきいみろん、Axiomatics Semantics)とは、数理論理学に基づいてプログラムの正当性を証明する手法。ホーア論理と密接に関連している。.

新しい!!: 最適化 (情報工学)と公理的意味論 · 続きを見る »

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。.

新しい!!: 最適化 (情報工学)とC言語 · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: 最適化 (情報工学)とCPU · 続きを見る »

D言語

D言語(ディーげんご、D programming language)は、プログラミング言語のひとつ。C言語をベースとしABI互換を保ちつつも、テンプレートによるジェネリックプログラミングやオブジェクト指向プログラミング、関数型プログラミングなどをサポートするマルチパラダイムプログラミング言語である。.

新しい!!: 最適化 (情報工学)とD言語 · 続きを見る »

Eiffel

Eiffel(アイフェル、エッフェル)は頑健なソフトウェアの生産に注力したオブジェクト指向プログラミング言語である。.

新しい!!: 最適化 (情報工学)とEiffel · 続きを見る »

Esterel

Esterel は、複雑なリアルタイムシステム向けの同期型プログラミング言語である。命令型プログラミングのスタイルで、並列性とプリエンプションを単純に表せる。従って、制御系の設計に非常に適している。 開発は、Gérard Berry に率いられたパリ国立高等鉱業学校と INRIA のチームにより、1980年代初めに開始された。現在のコンパイラは、Esterel のソースコードからC言語のコードかレジスタ転送レベルのハードウェア記述(VHDLかVerilog)を生成する。 開発は今も継続している。商用版には統合開発環境 Esterel Studio がある。その開発会社 Esterel Technologies は IEEE での標準化を開始している。現在、 が一般に公開されている。.

新しい!!: 最適化 (情報工学)とEsterel · 続きを見る »

遅延評価

遅延評価(ちえんひょうか、lazy evaluation)や必要呼び(ひつようよび、call-by-need)は評価戦略の一種類であり、非正格な関数型言語で使用もされる。対義語は先行評価(eager evaluation)。.

新しい!!: 最適化 (情報工学)と遅延評価 · 続きを見る »

静的単一代入

静的単一代入(せいてきたんいつだいにゅう、Static Single Assignment form, SSA)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。 Scheme、ML、Haskell などの関数型言語のコンパイラでは、Fortran や C などのコンパイラで SSA の利用が期待される箇所で継続渡しスタイル (CPS) を用いるのが一般的である。SSA と CPS は形式的に等価であり、最適化やコードの変換などがいずれかに施された場合、もう片方にも同様に適用することができる。.

新しい!!: 最適化 (情報工学)と静的単一代入 · 続きを見る »

表示的意味論

表示的意味論(ひょうじてきいみろん、Denotational Semantics)とは、計算機科学(理論計算機科学)の一分野で、プログラミング言語の形式意味論(プログラム意味論)の手法のひとつである。初期には「数理的意味論」(mathematical semantics)、「スコット-ストレイチー意味論」(Scott–Strachey semantics)のようにも呼ばれた。プログラムの意味をあらわす数学的オブジェクト(これを「表示」(denotation)と呼ぶ)を構築することで、プログラミング言語の意味論を形式化する手法である。 表示的意味論の起源は、1960年代のクリストファー・ストレイチーやデイナ・スコットの研究である。ストレイチーやスコットが開発した本来の表示的意味論は、プログラムの表示(意味)を入力を出力にマッピングする関数に変換するものである。後にこれはプログラムの表示(意味)を定義するには非力であることが証明され、例えば再帰定義関数・データ構造を表現できないことが判明した。これを解決するため、スコットはより汎用的な領域理論に基づいた表示的意味論を提案したS.

新しい!!: 最適化 (情報工学)と表示的意味論 · 続きを見る »

記憶装置

GB SDRAM。一次記憶装置の例 GB ハードディスクドライブ(HDD)。コンピュータに接続すると二次記憶装置として機能する SDLT テープカートリッジ。オフライン・ストレージの例。自動テープライブラリで使う場合は、三次記憶装置に分類される 記憶装置(きおくそうち)は、コンピュータが処理すべきデジタルデータをある期間保持するのに使う、部品、装置、電子媒体の総称。「記憶」という語の一般的な意味にも対応する英語としてはメモリ(memory)である。記憶装置は「情報の記憶」を行う。他に「記憶装置」に相当する英語としてはストレージ デバイス(Storage Device)というものもある。.

新しい!!: 最適化 (情報工学)と記憶装置 · 続きを見る »

高水準言語

水準言語(high-level programming language: こうすいじゅんげんご、高級言語とも)とは、記述の抽象度が高いプログラミング言語のことである。対義語は機械語やアセンブリ言語を指す「低水準言語」である。「高級言語」の対は「低級言語」である。.

新しい!!: 最適化 (情報工学)と高水準言語 · 続きを見る »

関数型言語

関数型言語(かんすうがたげんご、functional language)は、以下に述べる関数型プログラミングを基本スタイルとして推奨する機能を持つプログラミング言語、関数型プログラミング言語の略称である。.

新しい!!: 最適化 (情報工学)と関数型言語 · 続きを見る »

JavaScript

JavaScript(ジャバスクリプト)とは、プログラミング言語のひとつである。Javaと名前が似ているが、全く異なるプログラミング言語である(後述の#歴史を参照)。 JavaScriptはプロトタイプベースのオブジェクト指向スクリプト言語であるが、クラスなどのクラスベースに見られる機能も取り込んでいる。 ウェブブラウザ上で動作し動的なウェブサイト構築やリッチインターネットアプリケーションの開発に用いられる。また、2010年以降はnode.jsなどのサーバサイドJavaScript実行環境や各種ライブラリの充実により、MEANに代表されるように、Web開発の全ての領域で活用されるようになってきている。.

新しい!!: 最適化 (情報工学)とJavaScript · 続きを見る »

LISP

LISPは、プログラミング言語である。 によって記述される。-->前置記法などが特徴である。 1958年にはじめて設計されたLISPは、現在広範囲に使用されている高水準プログラミング言語の中でもFORTRANに次いで2番目に古い。ただし、FORTRANと同様に、現在のLISPは初期のものから非常に大きく変化している。 これまでに多数の方言が存在してきたが、今日最も広く知られるLISP方言は、Common LispとSchemeである。 元々、LISPは、アロンゾ・チャーチのラムダ計算表記法に影響を受け、コンピュータープログラムのための実用的かつ数学的な表記法として作られた。そして、すぐに人工知能研究に好まれるプログラミング言語になった。最初期のプログラミング言語として、LISPは計算機科学にて、木構造、ガベージコレクション、動的型付け、条件分岐、高階関数、再帰、セルフホスティング、コンパイラを含む多くのアイディアを切り開いた。 LISPの名前は、「list processor」に由来している。リストはLISPの主要なデータ構造であり、LISPソースコードはそれ自体がリストからできている。その結果、LISPプログラムはソースコードをデータとして操作することができ、プログラマーは、マクロ・システムで新しい構文やLISP埋め込みの新しいDSLを作成できる。 コードとデータの互換性は、LISPにそのすぐに認識できる構文を与える。すべてのプログラム・コードはS式または入れ子のリストとして書かれる。関数呼び出しまたは構文は先頭が関数または演算子の名前で、その続きが引数であるリストとして書かれる。具体的には、3つの引数を取る関数fは、(f arg1 arg2 arg3)として呼び出される。.

新しい!!: 最適化 (情報工学)とLISP · 続きを見る »

LLVM

LLVM とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVM の名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが、現在は、何の頭文字でもないとしている。.

新しい!!: 最適化 (情報工学)とLLVM · 続きを見る »

PHP (プログラミング言語)

PHP(ピー・エイチ・ピー)は "The PHP Group" によってコミュニティベースで開発されているオープンソースの汎用プログラミング言語およびその公式の処理系であり、特にサーバーサイドで動的なウェブページ作成するための機能を多く備えていることを特徴とする。 名称の PHP は再帰的頭字語として、 "PHP: Hypertext Preprocessor" を意味するとされており、「PHPはHTMLのプリプロセッサである」とPHP自身を再帰的に説明している。.

新しい!!: 最適化 (情報工学)とPHP (プログラミング言語) · 続きを見る »

Python

Python(パイソン)は、汎用のプログラミング言語である。コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある。.

新しい!!: 最適化 (情報工学)とPython · 続きを見る »

The Art of Computer Programming

『』は、コンピュータプログラミングに関する書籍である。様々なアルゴリズムについて、その背景や歴史まで踏み込んだ徹底的な解説を行っている。著者のドナルド・クヌース は、自身のライフワークと位置づけている。 その全体構想から見れば現在も未完であるが、十分な業績としてみなされていることは、3巻初版までが刊行されていた1974年に受賞したチューリング賞の受賞理由に功績として本シリーズが含まれていることからも分かる。また、1976年に2巻の第2版の準備をしていた際に、初版のような鉛版による組版 (en:Hot metal typesetting) が行われなくなっていたために仕上がりに納得せず、組版システムの TeX を(当初は1978年のサバティカルが終わるまでには完全に仕上げるつもりで)作り始めてしまったことなど、逸話も多い。 現在3巻までと4巻の分冊が刊行されている。今後の計画についてはwebページで確認できるが、おおむね執筆開始当初の構想と変わっておらず、5巻は構文的 (syntactic) アルゴリズムについてで、9章が字句スキャナ、10章が(文字列)解析の技術、6巻は文脈自由文法の理論、7巻がコンパイラ技術となっている。ただし位置付けとして、5巻までの内容は central core of computer programming for sequential machines であるのに対し、6・7巻の内容は important but more specialized である、としている(またドラゴンブック等、この40年の間に書籍が充実した分野でもある)。 近年では、アスキーから日本語訳が出版されていた。2007年9月現在で3巻までと改訂版分冊1巻、4巻の分冊2,3が刊行されていた。その後、KADOKAWAドワンゴに在籍する元アスキーの編集者が担当する「アスキードワンゴ」レーベルにより、2015年6月の1巻再刊から再開され、2017年3月に4巻の最初のまとまった分冊である4A巻が刊行されている。 サイエンス社から出版されていた旧日本語訳版は、原著2巻相当分の4巻までしか出ていない。また、出版時期が古いためもあるが、専門用語について可能な限りカタカナ語を使わず訳すという少々冒険的な方針のために独特の用語が多用されており、和訳における専門用語の扱いにおける歴史的な一例にもなっている。.

新しい!!: 最適化 (情報工学)とThe Art of Computer Programming · 続きを見る »

抽象解釈

抽象解釈(ちゅうしょうかいしゃく、Abstract interpretation)は、コンピュータプログラムの意味論の健全な近似の理論であり、順序集合(特に束)における単調関数に基づいている。全ての計算を実施することなく、プログラムの部分的な実行(ある種の部分評価)をするものと見ることができ、それによりプログラムの意味に関する情報(例えば、制御構造、情報の流れなど)を獲得する。 主な応用として、形式的な静的コード解析があり、プログラム実行に関する情報を自動抽出するものである。このような解析には次の2つの利用法がある。.

新しい!!: 最適化 (情報工学)と抽象解釈 · 続きを見る »

投機的実行

投機的実行(とうきてきじっこう、)とは、コンピュータに必要としないかもしれない仕事をさせることである。この性能最適化技法は、パイプライン化されたプロセッサなどのシステムで使われている Butler Lampson Microsoft Research OPODIS, Bordeaux, France 12 December 2006。.

新しい!!: 最適化 (情報工学)と投機的実行 · 続きを見る »

技術者

技術者(ぎじゅつしゃ、engineer、エンジニア)とは、工学(エンジニアリング)に関する専門的な才能や技術を持った実践者のことである。(直訳するとエン=拡大する・実践するの接頭語、ジーニア=才能ある人・閃く人。エンジニアリングを工学と翻訳した場合、エンジニアには「工学者」が当てられるべきだが狭義すぎること、また技術=technicとして技術者=technician(:en:Technician)とする英語側とのねじれが生じることから、国内では実際の内容としては広義の専門的な技術者=エンジニアと定義することが多い。ただし英語圏ではエンジニアと単なる技能習得者は明確に区別されるので注意が必要となる。なお、逐語的には技術=technologyとすることが多い) 類義語の「技師」や「技士」は、日本では役職名や資格名に用いられることが多く、資格の例として臨床工学技士、臨床検査技師、診療放射線技師、施工管理技士がある。 日本における「技術者」は呼称であり、資格名ではないので、その名称の定義やその名称を名乗るための法的規制はない。一方、「技術士」および「技能士」は国家資格であることから、試験に合格した者以外が称することを禁じられている。外国に於いては、「Engineer」(エンジニア)の称号は、理学士ではなく工学士の学位が必要とされる等、明確な制限がある場合が多い。.

新しい!!: 最適化 (情報工学)と技術者 · 続きを見る »

正当性 (計算機科学)

計算機科学における正当性(Correctness)とは、アルゴリズムがその仕様に照らして正しいことを意味する。「機能的」正当性とは、アルゴリズムの入出力動作に関する正当性である(すなわち、各入力に対して正しく出力を生成すること)。形式的検証を参照されたい。 完全正当性(Total Correctness)は、アルゴリズムが常に停止することも要求される。一方、部分正当性(Partial Correctness)は単に返ってくる答えが正しいことのみを要求する(常に答えが返ってくるとは限らない)。停止問題には汎用的解法はないので、完全正当性はより深い問題をはらんでいる。 例えば、整数を 1 から順に調べて奇数の完全数を探すとした場合、部分正当性を備えたプログラムを書くのは極めて簡単である(素因数分解を行って n が完全数かどうかを調べる)。しかし、そのプログラムが完全正当性を備えているとするには数論において未知の知識を必要とする。 正当性の証明は数学的証明でなければならず、アルゴリズムもその仕様記述も形式的に与えられなければならない(形式的仕様記述)。特にその証明は、そのアルゴリズムを特定のマシン上でプログラムとして実装したものについて正当性を意味するものではない。その場合メモリ量の限界を考慮する必要がある。 証明論におけるカリー・ハワード対応は、直観主義論理における機能的正当性の証明がラムダ計算における特定プログラムに対応するとしている。このような証明の変換を「プログラム抽出; program extraction」と呼ぶ。.

新しい!!: 最適化 (情報工学)と正当性 (計算機科学) · 続きを見る »

最適化問題

最適化問題(さいてきかもんだい、optimization problem)とは、特定の集合上で定義された実数値関数または整数値関数についてその値が最小(もしくは最大)となる状態を解析する問題である。数理計画問題(すうりけいかくもんだい、mathematical programming problem, mathematical program)、数理計画とも呼ばれる。実世界の現象の数理的な解析に関わる問題や抽象的な理論の多くをこの最適化問題という一般的なくくりに入れることができる。物理学やコンピュータビジョンにおける最適化問題は、考えている関数をモデル化された系のエネルギーを表すものと見なすことによって、エネルギー最小化問題と呼ばれることもある。.

新しい!!: 最適化 (情報工学)と最適化問題 · 続きを見る »

最悪実行時間

最悪実行時間(さいあくじっこうじかん、Worst-case execution time, WCET)は、特定のハードウェアで特定の計算タスクを実行するのにかかる最長の時間を指す。最悪実行時間を知ることは、リアルタイムシステムのタイミング解析にとって最重要とされている。.

新しい!!: 最適化 (情報工学)と最悪実行時間 · 続きを見る »

情報工学

情報工学(じょうほうこうがく)は情報分野についての工学である。語感としては、情報科学という語がもっぱらおおまかに「科学」という語が指す範囲を中心としているのに対し、「工学」的な分野に重心があるが、内実としてはどれもたいして変わらないことが多い(たとえば、大学の学部学科名などに関しては、個々の大学の個性による違いのほうが、名前による違いより大きい)。日本で、大学の工学部などにコンピュータ科学ないし情報関係の学科を設置する際に、「工学」部という語との整合のためだけに便利に使われた、という面が大きい(情報工学科の記事を参照)。 なお英語の information engineering はソフトウェア工学における一手法であり、日本語の「情報工学」とは対応しない。また似た言葉に情報学がある。.

新しい!!: 最適化 (情報工学)と情報工学 · 続きを見る »

操作的意味論

操作的意味論(そうさてきいみろん、Operational Semantics)とは、プログラムの意味を数学的に厳密に与える計算機科学の手法の一種(プログラム意味論参照)。.

新しい!!: 最適化 (情報工学)と操作的意味論 · 続きを見る »

性能解析

フトウェア工学における性能解析または性能分析(Performance analysis)とは、動的プログラム解析の一種であり、プログラムの実行を通して情報を収集することでプログラムの性能を解析することを言う。逆にプログラムを実行せずに行う解析を静的コード解析と呼ぶ。性能解析の目的は、実行時間やメモリ使用量を最適化するためにプログラムのどの部分を改良すべきかを決定することである(ボトルネック、アムダールの法則参照)。.

新しい!!: 最適化 (情報工学)と性能解析 · 続きを見る »

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »