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

ガベージコレクション

索引 ガベージコレクション

ベージコレクション(garbage collection; GC)とは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ集め」「ごみ拾い」となる。1959年ごろ、LISPにおける問題を解決するためジョン・マッカーシーによって発明された。 メモリの断片化を解消する機能はコンパクションと呼ばれ、実現方法によってはガベージコレクションと共にコンパクションも行う仕組みになっている。そのためコンパクションを含めてガベージコレクションと呼ぶ場合もあるが、厳密には区別される。 また、ガベージコレクションを行う主体はガベージコレクタと呼ばれる。ガベージコレクタはタスクやスレッドとして実装される場合が多い。 参照カウント方式のガベージコレクションは通常煩雑なコーディングを必要とするが、それを必要なく実装したライブラリとしがある。.

45 関係: APL型変換参照カウント主記憶装置世代別ガベージコレクション弱い参照応答時間マーク・アンド・スイープポインタ (プログラミング)メモリリークメモリ管理メッセージ (コンピュータ)ライブラリリアルタイムシステムプログラマプログラム (コンピュータ)デストラクタフラグメンテーション分散コンピューティングアルゴリズムアップル (企業)オブジェクト (プログラミング)ジョン・マッカーシースループットスレッド (コンピュータ)サブルーチン動的メモリ確保BoostC++C言語CPUDelphiECMAScriptGNUstepHaskellJavaLISPMacOSML (プログラミング言語)Objective-CPerlPHP (プログラミング言語)RubySmalltalk1959年

APL

APL(エーピーエル)は、プログラミング言語のひとつで、1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いる。処理系の実装は、ほとんどが対話型インタプリタである。とくに多次元配列の柔軟な処理が特徴である。「APL」は「プログラミング言語」(a programming language) の略であるが、言語の特性から、ときに「配列処理言語」(array processing language) などとされる。.

新しい!!: ガベージコレクションとAPL · 続きを見る »

型変換

型変換(かたへんかん)とはプログラムにおいて、あるデータ型を他のデータ型に変換することである。.

新しい!!: ガベージコレクションと型変換 · 続きを見る »

参照カウント

参照カウント(さんしょうカウント、reference counting)は、ガベージコレクタの動作方法の一つ。 また、コピーオンライトの実装方法としても多用される。.

新しい!!: ガベージコレクションと参照カウント · 続きを見る »

主記憶装置

主記憶装置(しゅきおくそうち)は、記憶装置の分類で、「補助記憶装置」が一般に外部バスなど比較的CPUから離れていて大容量だが遅い記憶装置を指すのに対し、コンピュータのメインバスなどに直接接続されている記憶装置で、レイテンシやスループットは速いが比較すると小容量である。特に、CPUが入出力命令によって外部のインタフェースを操作するのではなく、「ロード・ストア命令」や、さらには通常の加算などの命令において直接読み書きできる対象であるものを指す。メインメモリ、一次記憶装置とも。.

新しい!!: ガベージコレクションと主記憶装置 · 続きを見る »

世代別ガベージコレクション

世代別ガベージコレクション(Generational Garbage Collection 別名:Generation Scavenging:ジェネレーション・スキャベンジング)はガベージコレクションの一手法。(以下、ガベージコレクションをGCと省略する。) ガベージコレクションを持つ言語上で動く実システムでは、経験上メモリオブジェクトの利用にある偏りが存在する。それは「計算途上で利用される一時オブジェクトは数が多く、かつすぐさま破棄される率が高い」「ある程度長く生存したオブジェクトは、以降も長く生存する率が高い」という傾向である。 この傾向に着目し、メモリ領域を二つの世代に分離する。.

新しい!!: ガベージコレクションと世代別ガベージコレクション · 続きを見る »

弱い参照

弱い参照(weak reference、ウィークリファレンス)とは、参照先のオブジェクトをガベージコレクタから守ることのできない参照のことである。弱い参照からのみによって参照されるオブジェクトは到達不可能とみなされ、従っていつでも解放することができる。弱い参照は、不要となったオブジェクトが循環参照によって解放されないという問題を防ぐために用いられる。PythonやJavaをはじめとしたガベージコレクタを実装したオブジェクト指向言語の多くは、弱い参照を実装している。 ガベージコレクタ (GC) はメモリリークを防ぐために用いられる。GCの種類には、主にマーク・アンド・スイープ型と参照カウンタ型の2種類がある。このうち参照カウンタ型は、オブジェクトごとに参照の数を記録したレコードを用意し、その数が0になった時点でオブジェクトを解放するというものである。このタイプのGCは、あるオブジェクト間で参照が循環した場合にそれらを解放することができない。そのため、相互に参照しあったオブジェクト群はメモリリークの原因となる。この問題は、強い参照を弱い参照で置き換えることで循環が断たれるのであれば、弱い参照によって解決することが可能である。 プログラムは、あるオブジェクトに弱い参照のみを用いて参照することで、そのオブジェクトがさほど重要ではないということを示すことができる。そのため弱い参照は、必ずしも必要ではないオブジェクトがメモリ中に存在する数を最小にするためにも用いることができる。 弱い参照の強度を複数もつ言語もある。例えば、Javaには弱い参照、ファントム参照、ソフト参照がある(java.lang.ref パッケージに定義されている)。C++のように、元々ガベージコレクタのない言語で、その代替機能をライブラリでサポートし、その中で弱い参照・強い参照の機能を提供しているものもある。C++のスマートポインタ (Boost, TR1, C++11) の場合ではshared_ptrが「強い参照」でweak_ptrが「弱い参照」である。通常のポインタは参照の数に影響しないと言う意味で「弱い参照」と考えることもできるが、弱い参照はオブジェクトが到達不可能になったことを知っているべきなので、ポインタは本当の意味での弱い参照ではない。 弱い参照が便利なひとつの例として、アプリケーション内で参照されている変数を追跡するケースがある。この追跡リストは、対象オブジェクトに対して弱い参照で参照しなければならない。そうしなければ、一度リストに加えられたオブジェクトはリストによって参照されるため、プログラムが停止するまで半永久的に解放されることはない。 Category:プログラミング言語の構文 Category:メモリ管理.

新しい!!: ガベージコレクションと弱い参照 · 続きを見る »

応答時間

応答時間(おうとうじかん)またはレスポンスタイム()は、工学やテクノロジーにおいて、システムや実行ユニットが入力を与えられてから反応するまでにかかる時間を指す。.

新しい!!: ガベージコレクションと応答時間 · 続きを見る »

マーク・アンド・スイープ

マーク・アンド・スイープ(mark-and-sweep)は、ガベージコレクタの動作方法の一つ。.

新しい!!: ガベージコレクションとマーク・アンド・スイープ · 続きを見る »

ポインタ (プログラミング)

ポインタ (pointer) とは、あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照する(指し示す)ものである。有名な例としては Pascal のポインタが挙げられる。 なお、C++では、さらに独立した「参照」という機能がある。.

新しい!!: ガベージコレクションとポインタ (プログラミング) · 続きを見る »

メモリリーク

メモリリーク (Memory leak) とは、プログラミングにおけるバグの一種。プログラムが確保したメモリの一部、または全部を解放するのを忘れ、確保したままになってしまうことを言う。プログラマによる単純なミスやプログラムの論理的欠陥によって発生することが多い。.

新しい!!: ガベージコレクションとメモリリーク · 続きを見る »

メモリ管理

メモリ管理(メモリかんり)とは、コンピュータのメモリを管理するもの。単純化すれば、プログラム(プロセスなど)の要求に応じてメモリの一部を割り当てる方法と、そのメモリが不要となったときに再利用のために解放する方法を提供する。 今日では、CPU(メモリ管理ユニット)とオペレーティングシステムが協働して仮想記憶やメモリ保護を提供するのが一般的である。 また、各種データ構造を線形空間であるメモリに展開する場合の管理手法(アルゴリズム)についても「メモリ管理」と呼ばれる。.

新しい!!: ガベージコレクションとメモリ管理 · 続きを見る »

メッセージ (コンピュータ)

メッセージ(message)とは、言付け、伝言、伝送文などの意味がある。 計算機科学におけるメッセージパッシングとは並列コンピューティング、オブジェクト指向、プロセス間通信で使われる通信方式である。プロセスもしくはオブジェクトといったモデルではメッセージ(ゼロ以上のバイト、複雑なデータ構造、プログラムコードも)を送ったり受けたりできる。メッセージを待つことによって同期 (計算機科学)することも出来る。メッセージパッシングに基づく主なモデルとしてアクターモデルやプロセス代数がある。 Microsoft Windows などのオペレーティングシステムにおいて、メッセージとは、オペレーティングシステム上で動くアプリケーションで、オペレーティングシステムが管理しているデバイスからの入力をアプリケーションまで伝えることまたはその内容のことである。 オペレーティングシステムはメッセージをメッセージキューに保管し、アプリケーションはメッセージキューに保管されていたメッセージを受け取り、それを元に処理を行う。例えば「(10, 20) 左クリック」という情報をオペレーティングシステムが感知したらオペレーティングシステムはその情報をメッセージキューに保管する。アプリケーションはそのメッセージを受け取って対応した処理を行う。 アプリケーションは常にオペレーティングシステムからのメッセージを待機するようなプログラムになっており、この一連のプログラムの機構をメッセージループという。.

新しい!!: ガベージコレクションとメッセージ (コンピュータ) · 続きを見る »

ライブラリ

ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある。.

新しい!!: ガベージコレクションとライブラリ · 続きを見る »

リアルタイムシステム

リアルタイムシステム(Real-time System)とは、ジョブの実行が命令された時、その処理を設定された時間通りに動作することに着目した制御工学における概念の一つであり、「リアルタイム処理」とも呼ばれている。;ハードリアルタイムシステム;ファームリアルタイムシステム;ソフトリアルタイムシステム リアルタイム性を高めるために、どのような順番でジョブを処理するか(スケジューリング)が重要となる。各ジョブ(タスク)の重要度がスケジューリングの基準となることが多く、重要度が時間と共に変化する動的スケジューリングと、変化しない静的スケジューリングに大別される。またスケジューリングの結果、各ジョブがどの程度実行されるかも議論の対象となる。.

新しい!!: ガベージコレクションとリアルタイムシステム · 続きを見る »

プログラマ

プログラマ(Programmer)とは、コンピューターのプログラムを作成する人全般を指す。プログラマーとも表記される(#プログラマに対する呼称参照)。.

新しい!!: ガベージコレクションとプログラマ · 続きを見る »

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

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

新しい!!: ガベージコレクションとプログラム (コンピュータ) · 続きを見る »

デストラクタ

デストラクタ(消去子、destructor)は、オブジェクト指向プログラミング言語でオブジェクトを消去する際に呼び出されて後処理などを行なう関数、メソッドのこと。特にC++では安全なリソース管理を実現するための重要な役割を担う。 なお、本項では類似概念であるファイナライザについても合わせて述べる。.

新しい!!: ガベージコレクションとデストラクタ · 続きを見る »

フラグメンテーション

フラグメンテーション(fragmentation)、断片化(だんぺんか)とは、コンピュータ上のメモリの管理上の一単位が、そのままでは有効利用できない状態になることを言う。 具体的には、使用中のメモリ領域がわずかな大きさの未使用領域を挟んで飛び飛びに配置され、連続した未使用領域が大きく確保できなくなる状態を言う。 このような状態に陥ると、メモリ領域の新たな確保、走査に時間がかかるため、コンピュータのパフォーマンスが低下する傾向にある。 メモリ上での領域確保・解放の操作を長期間繰り返していると、フラグメンテーションは必然的に、主記憶・二次記憶を問わず発生する。これを解消するには、使用中のメモリ領域を移動させ、隣り合わせに配置し直すことで相対的に連続未使用領域を大きくする。この操作をデフラグメンテーション(defragmentation, デフラグ)もしくはメモリ・コンパクション(memory compaction)と呼ぶ。.

新しい!!: ガベージコレクションとフラグメンテーション · 続きを見る »

分散コンピューティング

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

新しい!!: ガベージコレクションと分散コンピューティング · 続きを見る »

アルゴリズム

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

新しい!!: ガベージコレクションとアルゴリズム · 続きを見る »

アップル (企業)

アップル()は、アメリカ合衆国カリフォルニア州に本社を置く、インターネット関連製品・デジタル家庭電化製品および同製品に関連するソフトウェア製品を開発・販売する多国籍企業である。2007年1月9日に、アップルコンピュータ (Apple Computer, Inc.) から改称した。.

新しい!!: ガベージコレクションとアップル (企業) · 続きを見る »

オブジェクト (プログラミング)

ブジェクト(object)はオブジェクト指向プログラミングにおいて、プログラム上の手続きの対象を抽象化する概念である。.

新しい!!: ガベージコレクションとオブジェクト (プログラミング) · 続きを見る »

ジョン・マッカーシー

ョン・マッカーシー(John McCarthy, 1927年9月4日 - 2011年10月24日)は、アメリカ合衆国の計算機科学者で認知科学者。マービン・ミンスキーとならぶ初期の人工知能研究の第一人者。「人工知能; Artificial Intelligence」という用語は彼が1956年のダートマス会議のために1955年に出した提案書で初めて使用された。また、ALGOL言語の設計に触発され、LISPというプログラミング言語を開発し、タイムシェアリングの概念を一般化させた。.

新しい!!: ガベージコレクションとジョン・マッカーシー · 続きを見る »

スループット

ループット()は、一般に単位時間当たりの処理能力のこと。特に.

新しい!!: ガベージコレクションとスループット · 続きを見る »

スレッド (コンピュータ)

レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.

新しい!!: ガベージコレクションとスレッド (コンピュータ) · 続きを見る »

サブルーチン

ブルーチン(subroutine)は、コンピュータプログラミングにおいて、プログラム中で意味や内容がまとまっている作業をひとつの手続きとしたものである。繰り返し利用されるルーチン作業をモジュールとしてまとめたもので、呼び出す側の「主」となるもの(メインルーチン)と対比して「サブルーチン」と呼ばれる。サブプログラム (subprogram) と呼ばれることもある。また、「サブ」をつけずに「ルーチン」と呼ぶこともある。 プログラムのソース中で、繰り返し現れる作業をサブルーチン化することで、可読性や保守性を高く保つことができる。繰り返し現れる作業でなくても、意味的なまとまりを示すためにサブルーチン化することもある。また、キャッシュのような階層的メモリの設計を持つコンピュータ(現在のパソコンやワークステーションなどほぼすべて)では、よく使われるサブルーチンがキャッシュに格納されることで高速な動作を期待できる。.

新しい!!: ガベージコレクションとサブルーチン · 続きを見る »

動的メモリ確保

動的メモリ確保 (動的メモリアロケーション・動的メモリ割り当て・dynamic memory allocation) とは、メモリ管理のひとつである、プログラムを実行しながら、並行して必要なメモリ領域の確保と解放を行う仕組みである。 メモリの利用状況は、自身の実行状況や他のプログラムの実行状況に応じて常に変動するため、それらの動作に支障を来さぬよう必要なメモリ領域を適切なアドレスに対して臨機応変に確保・解放を行う必要がある。.

新しい!!: ガベージコレクションと動的メモリ確保 · 続きを見る »

Boost

Boost (ブースト)とは、C++の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースライブラリのことを指す。コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。 Boostで公開されるライブラリはコミュニティの公開レビューによって精選されている。Boostを使用して作成したプログラムは、商用、非商用を問わず無償のの下でライセンスされる。 Boostはテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのためBoostライブラリの利用者にはC++の現代的な記述に慣れていることを要求される。 。.

新しい!!: ガベージコレクションとBoost · 続きを見る »

C++

C++(シープラスプラス)は、汎用プログラミング言語の一つである。日本語では略してシープラプラ、シープラなどとも呼ばれる。.

新しい!!: ガベージコレクションとC++ · 続きを見る »

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 · 続きを見る »

Delphi

Delphi(デルファイ)は、コンソール (CUI)、デスクトップ (GUI)、Web、モバイルアプリケーション開発のための統合開発環境 (IDE) である。 DelphiのコンパイラはPascal を独自に拡張した Object Pascal (Delphi 言語) を用いて、プラットフォーム毎にネイティブコードを生成する。対応プラットフォームはWindows、macOS、iOS、Android、Linux。 元々DelphiはボーランドがTurbo Pascal / Borland Pascalの後継として開発したWindows用のRADツールである。C++ Builderとは多くのコアコンポーネント、特にIDEとVisual Component Library (VCL) を共有していたが、Borland Developer Studio 2006の登場まではそれぞれ独立した製品だった。 2006年にボーランドの開発ツール部門がコードギアとして完全子会社化され、2008年にエンバカデロ・テクノロジーズに買収された。2015年10月に、上記エンバカデロ・テクノロジーズがアイデラにより買収される発表がなされた。 本項では Delphi Prism として開発されていた 「Embacardero Prism(エンバカデロ プリズム)」 についても述べる。.

新しい!!: ガベージコレクションとDelphi · 続きを見る »

ECMAScript

ECMAScript(エクマスクリプト)は、JavaScriptの標準であり、Ecma Internationalのもとで標準化手続きなどが行われている。 Ecma Internationalのほか、ISO/IEC JTC 1からもISO/IEC 16262として標準化されている。日本もJIS X 3060としてJIS化している。.

新しい!!: ガベージコレクションとECMAScript · 続きを見る »

GNUstep

GNUstep(グニューステップ)は、NeXTのOPENSTEP Objective-C ライブラリ(フレームワーク)、ウィジェット・ツールキット、アプリケーション開発ツール群をフリーソフトウェアとして実装したものである。Unix系オペレーティングシステムだけでなくMicrosoft Windowsでも動作する。GNUプロジェクトの一部でもある。 GNUstepは、NeXTのOPENSTEP仕様に完全互換なプラットフォームにまたがったオブジェクト指向開発環境を備えている(NeXT社はアップルコンピュータに買収された)。アップルと同様GNUstepはJavaインターフェイスを持ち、同時にRubyやSchemeとも接続できる。 GNUstepのアプリケーションインタフェースはmacOSのCocoaのインタフェースと根幹は同じ(NeXTとOPENSTEP)である。GNUstepの発祥はCocoaより先であった。 GNUstepはOPENSTEPの仕様を満たすことを目指して開発され、macOSが実装しているフレームワークの多くを欠いているが、GNUstepの開発者は互換性を保つため、アップルのCocoaの追加機能に追随しようとしている。ただし、CocoaとGNUstepはABIが全く異なるため、アプリケーションのバイナリレベルの互換性は期待できない。.

新しい!!: ガベージコレクションとGNUstep · 続きを見る »

Haskell

Haskell(ハスケル)は非正格な評価を特徴とする純粋関数型プログラミング言語である。名称は数学者であり論理学者であるハスケル・カリーに由来する。.

新しい!!: ガベージコレクションとHaskell · 続きを見る »

Java

Java(ジャバ)は、狭義ではプログラミング言語Javaを指す。広義では言語仕様以外にも、仕様が与えられているJavaクラスライブラリやJava仮想マシン、さらにはJDKやJREなどの公式のものをはじめとする、場合によってはサードパーティのものなどを含め曖昧にJavaプラットフォームと総称されるようなものなどのエコシステムなどを指すこともある。構文についてはJavaの文法の記事を参照。.

新しい!!: ガベージコレクションとJava · 続きを見る »

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 · 続きを見る »

MacOS

macOS(マックオーエス)は、アップルが開発・販売する、Macのオペレーティングシステムである。かつての名称はOS X、Mac OS Xであった(後述)。 技術的に直系ではないが、Classic Mac OS (Mac OS、System) の後継として、新たにBSD系UNIXをベースに開発された。.

新しい!!: ガベージコレクションとMacOS · 続きを見る »

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

ML(えむえる、Meta-Language)は、関数型言語のひとつである。現代風の関数型言語としては歴史が古いほうで、型推論機能などを持つが、デフォルトの評価戦略は遅延評価ではなく先行評価で、書き換えが可能なレコード型を持つなど、いわゆる「純粋関数型」でない特徴や機能を持つ。.

新しい!!: ガベージコレクションとML (プログラミング言語) · 続きを見る »

Objective-C

Objective-C(オブジェクティブ シー)は、プログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語である。 Objective-CはNeXT、macOSのOSに標準付属する公式開発言語である。macOSのパッケージ版に開発環境がDVDで付属するほか、ユーザ登録をすれば無償でダウンロードできる(Xcodeの項目参照)。現在では主にアップルのmacOSやiOS上で動作するアプリケーションの開発で利用される。.

新しい!!: ガベージコレクションとObjective-C · 続きを見る »

Perl

Perl(パール)とは、ラリー・ウォールによって開発されたプログラミング言語である。実用性と多様性を重視しており、C言語やsed、awk、シェルスクリプトなど他のプログラミング言語の優れた機能を取り入れている。ウェブ・アプリケーション、システム管理、テキスト処理などのプログラムを書くのに広く用いられている。 言語処理系としてのperlはフリーソフトウェアである。Artistic LicenseおよびGPLのもとで配布されており、誰でもどちらかのライセンスを選択して利用することができる。UNIXやWindowsなど多くのプラットフォーム上で動作する。.

新しい!!: ガベージコレクションとPerl · 続きを見る »

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

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

新しい!!: ガベージコレクションとPHP (プログラミング言語) · 続きを見る »

Ruby

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。 また日本で開発されたプログラミング言語としては初めて国際電気標準会議で国際規格に認証された事例となった。.

新しい!!: ガベージコレクションとRuby · 続きを見る »

Smalltalk

Smalltalk(スモールトーク)は、Simula のオブジェクト(およびクラス)、LISPの徹底した動的性、LOGO のタートル操作や描画機能に、アラン・ケイの「メッセージング」というアイデアを組み合わせて作られたクラスベースの純粋オブジェクト指向プログラミング言語、および、それによって記述構築された統合化プログラミング環境の呼称。 Smalltalk で一語であり、「Small Talk」「SmallTalk」などは誤りである。 大規模な開発実績としてはCargill Lynx Projectがあり、国産製品の開発実績としてはMCFrameがある。.

新しい!!: ガベージコレクションとSmalltalk · 続きを見る »

1959年

記載なし。

新しい!!: ガベージコレクションと1959年 · 続きを見る »

ここにリダイレクトされます:

Garbage collectionガーベッジコレクションガーベジコレクションガベージコレクトガベージコレクティングガベージコレクタスマートポインタ

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