Google PlayストアでUnionpediaアプリを復元するために作業中です
出ていきます入ってきます
🌟ナビゲーションを改善するためにデザインを簡素化しました!
Instagram Facebook X LinkedIn
あなたのロゴとドメインを持つ独自のユニオンペディア、月額9.99 USDから
私のユニオンペディアを作成する

Cfront

索引 Cfront

Cfront(シーフロント)はビャーネ・ストロヴストルップが1983年頃に開発したC++(当時 C with Classes と呼ばれていた)の初期のコンパイラである。C++のソースコードをC言語にコンパイルした。プリプロセッサはソースコードをプログラミング言語として解釈せず文字列を変換するものに過ぎないが、Cfrontは完全なパーサを搭載し、 シンボルテーブルを構築し、クラスや関数のツリーを構築する。 Cfrontはそれ自体がC++で記述されている。当初はC++コンパイラ自体が存在しておらずブートストラップ問題があった。C++で記述されたCfrontのソースコードを提供するのと同時に、そのCfrontでコンパイルしてC言語に変換した「半分処理済み」の特別バージョンも提供された。このコードはネイティブなC言語コンパイラでコンパイルでき、C++で記述されたCfrontのコードをコンパイルできる実行ファイルを出力できた。

目次

  1. 21 関係: 名前修飾例外処理リンケージエディタトランスコンパイラブートストラップ問題プリプロセッサビャーネ・ストロヴストルップファイルフォーマットオブジェクトファイルクラス (コンピュータ)コンパイラシンボルテーブルソースコードサブルーチンBerkeley Software DistributionC++C言語UNIXUNIX System V構文解析木構造 (データ構造)

  2. UNIXプログラミングツール

名前修飾

名前修飾(なまえしゅうしょく、name mangling)は、現代的なコンピュータプログラミング言語処理系で用いられている手法で、サブルーチン(関数)名などに対する内部名を、その表層的な名前のみならず、関数であればその引数の型や返戻値の型などといった意味的な情報を含めて修飾した(manglingした)名前とするものである。コンパイラからリンカ、さらには実行時のデバッガなども含んだシステム全体が、高度な型に関する情報などをサポートするように再実装するには多くの難しさがあるが、この手法であれば、システムの多くの部分ではわずかな修正(たとえば、名前に '$' という文字が含まれることを許すようにする、など)で済む。特に、多重定義(オーバーロード)を許す言語では、同一の表層名に対して許される多重定義や、その同定について上手に修飾を設計すれば、扱いが単純になる。また、そのままではエラーメッセージ等が読み辛いものとなるが、「解読」ルーチンを呼ぶように修正するだけで、型の情報などが付加された、むしろわかりやすいメッセージが出力されるようになる。

見る Cfrontと名前修飾

例外処理

例外処理(れいがいしょり、)とは、IT業界で用いられる専門用語で、ある抽象レベルにおけるシステムの設計で想定されておらず、ユーザー操作によって解決できない問題に対処するための処理である。例外処理の結果として問題が解決されないとシステム障害になる。システム停止やデータ破損の原因になり、ユーザーに損害を与える可能性があるため、システム開発で例外処理は重要視されている。 システムの設計で想定されておらず、継続不能や継続すると問題になる様な状態としては、次のようなものが挙げられる。

見る Cfrontと例外処理

リンケージエディタ

リンケージエディタ(linkage editor)またはリンカ(linker)とは、機械語のプログラムの断片を結合し実行可能なプログラムを作成するプログラムのことである。例として、C言語では、ソースファイルをコンパイルするとオブジェクトファイルが生成される。それに他のオブジェクトファイルやライブラリを結合して1つの実行可能なプログラム(実行可能ファイル)が完成する。この結合(リンク)の際リンケージエディタが使われる。 日本語では「連係編集プログラム」とも訳される。

見る Cfrontとリンケージエディタ

トランスコンパイラ

トランスコンパイラ(他にトランスパイラ、ソース・トゥ・ソースコンパイラ、などとも)は、あるプログラミング言語で書かれたプログラムのソースコードを入力として受け取り、別のプログラミング言語の同等のコードを目的コードとして生成する、ある種のコンパイラである。一般に、コンパイラが「比較すると高水準な言語のソースコード」を入力とし、「比較すると低水準な言語の目的コード」を、コンパイル結果として出力するものであったのに対し、トランスコンパイラは同じ程度の(抽象化の)水準のコードをコンパイル結果として出力する。 それらの処理系における具体的なコンパイルの処理、すなわち、入力から出力への変換において実際に行われることは、それぞれの処理系によってさまざまである。字句のレキシカルな変換やsyntactic sugar(糖衣構文)の展開といったような程度の場合もあれば、高度なコンパイラ最適化を施して機械語をコード生成するような、通常のコンパイラと全く同様の処理をおこなっているものもある。

見る Cfrontとトランスコンパイラ

ブートストラップ問題

ブートストラップ問題 (Bootstrap problem) は、コンパイラをコンパイル対象のプログラミング言語で作成した際に、そのコンパイラの最初のコンパイルをどうするかといった場合を典型的な例とする、いわゆる「鶏と卵」の形をしたセルフホスティング環境の問題を指す。これを解決するための方式をブートストラップ方式といい、この問題を何とかして最初の完備した環境を作ることをブートストラッピングという。 名前についてはブートストラップの記事を参照。

見る Cfrontとブートストラップ問題

プリプロセッサ

プリプロセッサ (preprocessor) とは、一般にある処理を行うソフトウェアに対して、データ入力やデータ整形などの準備的な処理を行うソフトウェアのことである。 他の分野の例としては、CADやCAEのデータ処理がある。またワープロソフトウェアにおける漢字変換ソフトウェアもプリプロセッサの一例である。

見る Cfrontとプリプロセッサ

ビャーネ・ストロヴストルップ

ビャーネ・ストロヴストルップ(, 1950年12月30日 - )は、デンマークのオーフス生まれの計算機科学者。プログラミング言語「C++」の開発で知られる。

見る Cfrontとビャーネ・ストロヴストルップ

ファイルフォーマット

ファイルフォーマット(file format、ファイル形式)は情報をファイルへ収納する形式である。

見る Cfrontとファイルフォーマット

オブジェクトファイル

オブジェクトファイル またはオブジェクトコード とは、コンパイラがソースコードを処理した結果生成される(たいていはアセンブリ言語による assembler code file と、アセンブラによるそれのアセンブルを経由している)、コード生成の結果にしてバイナリコードを含む中間的なデータ表現のファイルである。オブジェクトファイルは共有ライブラリのようにも使われることがある。名称としては、オブジェクトファイル、オブジェクトコードの他、オブジェクトプログラム()とも。 オブジェクトモジュールとは、ソースコードをコンパイルした結果の(静的リンクが行われる前の)機械語プログラムである。これらオブジェクトモジュールの集合体がオブジェクトファイルである。

見る Cfrontとオブジェクトファイル

クラス (コンピュータ)

オブジェクト指向プログラミングにおけるクラス(class)英語の class は、本来「分類」「種類」といった意味を持っている。は、オブジェクトを生成するための設計図あるいはひな形に相当するものである。抽象データ型の一つ。クラスから生成したオブジェクトの実体のことをインスタンスという。 クラスには、クラス自身またはクラスのインスタンスが保持するデータと、データに関連したオブジェクトの振る舞いを記述できる。プログラミング言語によっては、それぞれにを指定できる。統一モデリング言語 (UML) のクラス図では、データのことを「属性」、振る舞いのことを「操作」と呼ぶ。Javaなどでは、データのことを「フィールド」、振る舞いのことを「メソッド」と呼ぶ。

見る Cfrontとクラス (コンピュータ)

コンパイラ

コンパイラ(compiler)は、高水準言語で書かれたコンピュータプログラムを、 コンピュータが実行や解釈できる形式に、一括して(※(※)コンパイラの定義文にわざわざ「一括して」という言葉を含めることが多いのは、インタプリタと対比するためである。「一括して」を入れないとインタプリタまで含んでしまい、定義文としては落第点ものとなる。Merriam Websterの英文の定義文でも、やはり「translates an entire set of instructions」と、「命令群(の一部分ではなく)全部を」と明記している。 )変換するソフトウェア。

見る Cfrontとコンパイラ

シンボルテーブル

シンボルテーブル(symbol table)は、コンパイラやインタプリタといったコンピュータプログラミング言語処理系などのプログラムで使われるデータ構造のひとつであり、プログラムのソースコード内の変数名や関数名などの名前(シンボル)と、それぞれの内容(データ型、サイズ、スコープレベル、位置など)を表すデータ集合のペアを管理する。つまり、「名前」から対応する「中身」を参照するための情報を格納したテーブルである。

見る Cfrontとシンボルテーブル

ソースコード

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

見る Cfrontとソースコード

サブルーチン

プログラミングにおけるサブルーチン(subroutine)は、プログラム中で意味や内容がまとまっている作業をひとつにまとめたものである。サブプログラムあるいは副プログラム(subprogram)大滝みや子『2020年版 基本情報技術者 標準教科書』オーム社、2019年。pp.95-96「手続きと関数」「再帰呼び出し」の章とも呼ばれ、単に「ルーチン」(routine)と呼ばれることもある。プログラミング言語によっては、関数(function)やプロシージャあるいは手続き(procedure)とも呼ばれる。

見る Cfrontとサブルーチン

Berkeley Software Distribution

Berkeley Software Distributionは、1977年から1995年までカリフォルニア大学バークレー校 (University of California, Berkeley, UCB) の Computer Systems Research Group (CSRG) が開発・配布したソフトウェア群、およびUNIXオペレーティングシステム (OS) を言う。略称はBSD(ビーエスディー)。なお、今日「BSD」という名称は同OSを元に開発されたBSDの子孫の総称として使われることもあるが、この項では主に前述のUCBによるソフトウェア群およびOSについて述べる。 元となったコードベースと設計はAT&TのUNIXと共通であるため、歴史的にはBSDはUNIXの支流 "BSD UNIX" とみなされてきた。1980年代、ワークステーションクラスのシステムベンダーがプロプライエタリなUNIXとしてBSDを広く採用していた。例えば、DECのUltrix、サン・マイクロシステムズのSunOSなどである。これは、ライセンス条件の容易だったためと、当時の多くの技術系企業の創業者がBSDを熟知していたためである。

見る CfrontとBerkeley Software Distribution

C++

C++(シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、手続き型プログラミング・データ抽象・オブジェクト指向プログラミング・ジェネリックプログラミングといった複数のプログラミングパラダイムが組み合わされている。C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。アセンブリ言語以外の低水準言語を必要としないこと、使わない機能に時間的・空間的コストを必要としないことが、言語設計の重要な原則となっている。

見る CfrontとC++

C言語

C言語(シーげんご、C programming language)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発した汎用プログラミング言語である。英語圏では「C language」または単に「C」と呼ばれることが多い。日本でも文書や文脈によっては同様に「C」と呼ぶことがある。制御構文などに高水準言語の特徴を持ちながら、ハードウェア寄りの記述も可能な低水準言語の特徴も併せ持つ。基幹系システムや、動作環境の資源制約が厳しい、あるいは実行速度性能が要求されるソフトウェアの開発に用いられることが多い。後発のC++やJava、C#など、「C系」と呼ばれる派生言語の始祖でもある。 ANSI、ISO、またJISにより言語仕様が標準規格化されている。

見る CfrontとC言語

UNIX

UNIX (ユニックス、Unix、)は、コンピュータ用のマルチタスク・マルチユーザーのオペレーティングシステムの一種である。 公式な商標は「UNIX」だが、商標以外の意味として「Unix」、またはスモールキャピタルを使用して「Unix」などとも書かれる。2007年に、「UNIX」の商標の所有者である標準化団体のThe Open Groupは、Single UNIX Specificationを完全に満たすと認証を受けたシステムのみが「UNIX」の商標を得られるとした。このためそれ以外のシステムは(ずっと以前から、AT&T版およびBSD以外を指して使われていた用語だが)「Unixシステムライク」または「Unixライク(Unix系)」と呼ばれるようになった。ただし The Open Groupはその呼称を気に入っていない。

見る CfrontとUNIX

UNIX System V

System V(システムファイブ、SysV)は、初期の商用UNIXオペレーティングシステム (OS) の一種である。

見る CfrontとUNIX System V

構文解析

構文解析(こうぶんかいせき、英語: parsing, syntactic analysis, syntactic analysis)は、ある言語において、その形式文法に従って記号の文字列を分析する手続きである。構文解析を行う機構を構文解析器(parser)と呼ぶ。

見る Cfrontと構文解析

木構造 (データ構造)

親子構造 木構造(きこうぞう)とは、グラフ理論における木に対応づけられるデータ構造である。

見る Cfrontと木構造 (データ構造)

参考情報

UNIXプログラミングツール