hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
携帯電話 携帯電話端末
さらに携帯電話でモバイルブラウザを動かしたり、画像や音楽といったマルチメディアデータを扱うようになると、ベースバンドLSIとは独立したCPUが搭載されるようになった。補助記憶装置の必要性はさらに増し、内蔵の補助記憶装置のみでは容量不足となった。そのため2000年代に入ると外部にメモリーカードのスロットを設け、外部メモリへの記録も可能とした。初期ではSDカードやメモリースティックが用いられていたが、端末に占める容積が大きかったため、miniSDカードやmicroSDカード、メモリースティックDuoなどの携帯電話に特化したメモリーカードが開発された。

技術の進化で大容量通信が可能となると、クラウドストレージへの保管という手段も登場した。
通常の通話機能とSMS程度の単機能のみの古典的な機種から、パソコンに匹敵する高性能スマートフォンまで、さまざまな製品が存在する。回線契約と端末の分離により端末の価格が機能に比例することや、コンテンツサービスが必要でなければ高機能な端末が必要とされないことなどから、安価で基本的な機能の端末にも根強い人気がある。

日本では、高機能（高価）な機種でもインセンティブ（販売報奨金）により安価に流通させるビジネスモデルがとられたため、高機能ガラケー機種が広く普及した。また韓国の携帯電話も高機能機種が多いことで知られる。
携帯電話 携帯電話端末
カメラ付き携帯電話が登場し、カメラ機能を利用した画像解析機能によりQRコードなどの二次元コードやJANコードなどのバーコードが読み取れるようになった。特にQRコードは大容量の文字データを格納することができるため普及した（参考：携帯機器）。
2000年代によく使われていたオペレーティングシステム（OS）としては、Symbian OS（シンビアン）、REX OS/BREW/Brew MP (クアルコム) 、ITRON/T-Kernel（TRONプロジェクト）がある。その他には、OS-9、Nucleus RTOS、China MobileSoft、MIZI、SavaJeがある。LinuxカーネルをベースとしたOS（MontaVista Linux、T-Linux）もある。
携帯電話 携帯電話端末
各メーカーがOS-9やNucleus RTOS、iTRONなどのRTOSから、Symbian OSやLinuxなど携帯電話向け汎用OSの採用に動いているのは、3Gの到来とともに、その開発コストが高騰しているからである。端末の高機能化が進み、ソフトウェア規模が巨大化してきているため、限られたハードウェアで動作させる組み込み用途を想定したRTOSでは、開発環境、ミドルウェア調達など、コスト面で不利な点が多くなってきている。「RTOSは通信制御を受け持ち、ユーザインターフェースやアプリケーションの動作は汎用OSが担当する」というハイブリッドOS実装もあるが、2つのOSを協調動作させることには難しい点も多く、リアルタイム性能を高めた汎用OSへ集約される傾向にある。
OSと、その上層のミドルウェアを端末メーカ各社で共通化したプラットフォームとして、NTTドコモは、MOAPやオペレータパックを開発した。OS部分にはSymbian OSかLinuxを用いる。それまで、端末メーカ各社が自社で携帯電話用のインターフェース、ミドルウェアなどを開発してきたが、共通プラットフォームによって開発コストの抑制、開発速度の向上が図れる。
携帯電話 携帯電話端末
同様にKDDIはクアルコムのREX OS、およびBREW、Brew MPをそれぞれ母体に、KCP（2005夏モデル - 2015年春モデルまで）、KCP+（2007年冬モデル - 2011年夏モデルまで）、KCP3.x（2010年夏モデル - 2014年冬モデルまで）という共通プラットフォームを開発した。
スマートフォン用OSは、GoogleのAndroidとAppleのiOSで市場シェアの98%が占められている（2019年現在、IDC調べ）。
過去に開発されていたものとしてはBlackBerry、Windows Mobile、Firefox OSなどがある。
携帯電話は限られたメモリ空間である一方で、多くの機能を搭載する高性能な電子デバイスであることから、専用のソフトウェアが搭載される。WindowsやmacOSのようなパソコン用OSのサブセットが搭載されている場合もあるが、パソコンのアプリケーションがそのまま動作することはなかったため、chromebookなどパソコンとの互換性を目指す動きもある。
2019年の世界スマートフォンおよび携帯電話の販売台数は16億8,721万5,000台であった。そのうち、スマートフォン販売台数は13億7,259万台となり、携帯電話販売台数の84％を占めた（米国調査会社ガートナー調べ）。
国際的に端末を供給しているのは以下の企業である。国名は本社所在地であり、2019年の端末販売台数順に並べてある（米国調査会社ガートナー調べ）。上位10社で約87%のシェアを持つ。
携帯電話 サービス
基地局の整備により、広いサービスエリアにおいて屋外で高速移動中でも安定した通話・通信が利用可能である。第三世代携帯電話は、高速パケット通信と高い周波数利用効率が特長である。なお、高速な無線アクセスとしても利用可能であるが、利用形態によっては高額な課金となり、この現象が俗にパケ死と呼ばれる。また、電話機端末単体による通話・通信の総トラフィック（データ量）に占める割合が高い傾向にある。また、デジタルツールとしての多機能化も関係している。
携帯電話での音声伝送方式は、当初はアナログ方式を採用しており途中からデジタル方式へと切り替えられた。当初サービスが開始された時点でのアナログ方式での通信は、暗号化されずにそのまま送信されていたため、ノイズが乗りやすいだけでなく、傍受が容易に行えるという欠点があった。そのため、強固な暗号化が可能なデジタル化が行われた。
国によってはそのころ、固定電話網もアナログ方式からデジタル方式（ISDN）への切り替えが進んでいたが、固定電話網のデジタル方式はパルス符号変調（PCM）であるのに対し、携帯電話網の方はより圧縮度の高い音声コーデック（おもにAMR形式）を使用している。両電話網の相互接続通話の際には、アナログ方式同士ならば単純だが、デジタル方式では（アナログ・デジタル併存の時期を含め）コーデック変換が、網関門交換機において必要である。
携帯電話 サービス
また、音声コーデックの方式は携帯電話事業者やサービス種別によって異なるため、事業者相互・方式相互の音声コーデック変換も必要となる。このため、コーデックの組み合わせによっては変換ロスにより、音声の品質が劣化してしまう。基本的には、同一事業者・同一方式の携帯電話同士の通話では変換によるロスは起こらないため、本来の通話品質を発揮できる。
当初の携帯電話には通話機能しかなかったが、音声通話のデジタル化により端末全体がデジタル化し、これによりパケット通信によるデジタルネットワークへの接続が可能となった。デジタルネットワークの中でも、世界的に普及しているインターネットへの接続が早くから行われ、携帯電話でインターネット網にアクセスできるようになった。クライアント化である。
これにより携帯電話を対象にしたウェブページ（モバイルサイト）が携帯電話会社から公式サイトとして設立されたり、また個人でインターネット上に携帯電話を対象にした勝手サイトと呼ばれるサイトが開設されるようになる。さらに携帯電話の高速通信化により、通信機能を利用して携帯電話で金銭の管理を行うモバイルバンキングやオンライントレードも行えるようになっただけでなく、動画コンテンツの閲覧も可能となった。
携帯電話 サービス
従来、携帯電話ではそれのみを対象にして作られた簡素なHTMLによるウェブページしか表示できなかったが、2000年代半ばからパソコン互換ブラウザを搭載した端末も実現し、パソコン向けに作成されたコンテンツの閲覧が可能となった。
各地域での携帯電話の通信規格（方式）はおおむね以下のようになっている。
第一世代携帯電話（1G）はアナログ方式。モトローラのTACSやNTTのHiCAPなどがある。
第二世代携帯電話（以下2G）はGSM方式が世界的に主流となっている。日本と韓国および北朝鮮では、GSMは採用されていない。日本では PDC（Personal Digital Cellular）という独自の方式が主流だったため、独自の端末やサービスが普及する一方、海外端末メーカーの参入や国際ローミングサービスが進まず鎖国的状態にあった。韓国では、アメリカのクアルコム（Qualcomm）社のcdmaOne（IS-95）という方式を全面的に採用し、サムスン電子やLG電子などが国際的に飛躍する基となった。北米はEUとは異なり、政府は携帯電話事業者に技術の選択について強制せず、各社の選択に委ねた。結果として、GSMとcdmaOneがほぼ拮抗しているのが現状である。
携帯電話 サービス
第三世代携帯電話（以下3G）は、2Gが各国・各地域で独自の方式、異なる周波数を採用し、全世界での同一方式の利用ができなかった反省を踏まえ、第三世代携帯電話の規格、IMT-2000の決定においては、携帯電話を全世界で利用できるようにするための指標が立てられた。しかし、規格策定の過程で、W-CDMAとCDMA2000が並行採用という形となり、GSM陣営はW-CDMAへ、cdmaOne陣営はCDMA2000へ移行することとなった（南北アメリカ・アジア地域の一部）。中国政府は、自己技術育成の観点から独自のTD-SCDMAを導入しようとしている。また3G技術の特許代に関し、「クアルコム」のライセンス価格が高すぎるとして、Qualcommと電話機ベンダー（販売会社）、チップセットベンダー数社の間で、現在係争中である。
日本ではNTTドコモ、ソフトバンクモバイルがW-CDMAを採用し、国際ローミングや海外メーカー参入が促進されている。KDDI（au）は2GはcdmaOne方式のためCDMA2000方式を採用している。ただし、日本のcdmaOneおよびCDMA2000は、UHFテレビ放送波との干渉回避のため、上りと下りの周波数が他国と逆転している。このためグローバルパスポートCDMA端末以外では国際ローミングができない。
携帯電話 サービス
先進国やcdmaOne陣営のほとんどは3Gの導入が済んでいるが、GSM陣営では、ユーザーがより安価なGSM端末を好む傾向もあるため、コストがかかるW-CDMAへの移行は進んでいない。安価なGSM端末は、高価なW-CDMA端末より人気がある。スマートフォンなどの高価なGSM端末でも、電池の軽量化を図って消費電力の多いW-CDMAやCDMA2000などの3Gには対応しない端末もある。またGSMでもEDGEやEDGE Evolutionを用いて3G並みの高速なデータ通信ができる。
このため、GSMのサービスの停止時期を打ち出しているGSM事業者は2008年現在、存在しない。
発展途上国では、固定電話網の未整備を補完し、低価格でデータ通信網込みで広域エリア化するために、最初からCDMA2000技術を400MHz帯に使ったCDMA450による3Gネットワークの導入なども行われている。
2006年の世界携帯電話販売台数における比率は、GSMがおおよそ7割弱、CDMA（cdmaOne + CDMA2000）がおおよそ2割強、W-CDMAは1割弱である。
携帯電話 サービス
第3.9世代移動通信システムでは、日本は4社ともLTE方式を採用する。
料金は音声通話の場合は通話時間、データ通信の場合は通信時間またはデータ量で算出されるのは国際的に共通である。プリペイド（前払い）、ネットワークを自前で持たない仮想移動体通信事業者（MVNO）によるサービスもある。
プリペイドの場合、基本料金はないが、最後に入金してからの経過日数によって有効期限が定められているため、使用頻度が低くても定期的に入金する必要はある。EUは、全般にプリペイド比率が高い。
アメリカなどでは、音声通話は一定時間まで定額であるのが一般的である。また、夜9時以降および週末の通話は無料になる契約が多い。その反面、一般的に、電話をかけた側だけでなく、受けた側も通話料が発生する。
携帯電話 ビジネスモデル
技術的には、SIMカードを交換することにより、通信事業者を変えることが可能である。このため、端末メーカーは最初に世界共通モデルを開発して、必要な場合にだけ、小規模の特定事業者向けのカスタマイズをするのが主流である。
海外ではひとつの機種でもメーカーの出す業界標準の機能のみを搭載している「スタンダードバージョン」とキャリア独自のサービスを付加したものの2種類販売されている。前者はSIMロックがかかっていないため通信方式が同じなら世界中どこでも利用できる。後者はインセンティブ制度のもと、SIMロックがついて販売されている。この辺の事情は日本と同じであるが、インセンティブの額は、日本は突出して大きい。
マーケット規模の巨大な携帯電話は、世界規模での大量販売による価格競争が行われ、膨大な出荷台数を獲得している。
携帯電話 使用上のトラブルと対策
耐水性
防水機能のない携帯電話は軽微な水濡れでも故障するので、利用者から「この程度の水濡れで故障するのは欠陥品ではないか」といった苦情が国民生活センターに寄せられている。国民生活センターでは、利用者に防水でない機種は水に濡らさないように注意し、水に濡れる使い方をする人は防水の機種を購入するように呼びかけている。携帯電話会社には消費者への周知徹底と日常の軽微な水濡れで故障しないような改善、修理をする場合は消費者に一方的な負担をさせないことを要望している。
異常過熱
機器に内蔵するリチウムイオン電池が異常過熱により爆発してけがや火災の原因となる事例もある。
健康への影響
WHO（世界保健機関）の一部であるIARC（国際がん研究機関）は2011年5月31日、発がん性リスクをランク分けする表（IARC発がん性リスク一覧）の中で、「携帯電話の使用」を、5段階中、上から3番目のGroup2Bのカテゴリーに入れたと発表した（Group2Bは、ヒトに対する発癌性が疑われるグループである）。
電子機器への影響
通信遮断エリア
病院や飛行機内などでの利用は制限される。
料金体系の確認誤りによる経済的被害
パケ死
フィルタリング
犯罪利用
暗号化されたチャットアプリの使用があったが、いずれも捜査機関によって摘発され大規模な逮捕劇となっている。EncroChat、ANOM
携帯電話 その他の用途
携帯電話の多機能性を活用して通信以外の用途へ使用する研究が進みつつある。満足な医療が受けられない地域では可搬式の診断装置としての応用が進められる。
日食
日食（にっしょく、英語: solar eclipse）とは、太陽が月によって覆われ、太陽が欠けて見えたり、あるいは全く見えなくなったりする天文現象である。日蝕と表記する場合もある（「食 (天文)#表記」を参照）。
朔すなわち新月の時に起こる。
日食 種類
月と太陽の視直径はほとんど同じであるが、月の地球周回軌道および地球の公転軌道は楕円であるため、地上から見た太陽と月の視直径は常に変化する。月の視直径が太陽より大きく、太陽の全体が隠される場合を皆既日食（かいきにっしょく、または皆既食、total eclipse）という。逆の場合は月の外側に太陽がはみ出して細い光輪状に見え、これを金環日食（きんかんにっしょく、または金環食、annular eclipse）と言う。場合によっては月と太陽の視直径が食の経路の途中でまったく同じになるため、正午に中心食となる付近で皆既日食、経路の両端では金環日食になることがあり、これを金環皆既日食（きんかんかいきにっしょく、または金環皆既食、hybrid eclipse）と呼ぶが、頻度は少ない。皆既日食と金環日食および金環皆既日食を中心食（ちゅうしんしょく）と称する。
日食 種類
中心食では本影と金環食影が地球上に落ちて西から東に移動しその範囲内（中心食帯）で中心食が見られ、そこから外れた地域では半影に入り太陽が部分的に隠される部分日食（ぶぶんにっしょく、または部分食）が見られる。半影だけが地球にかかって、地上のどこからも中心食が見られないこともある。
また日の出の際に太陽が欠けた状態で上る場合を特に日出帯食（にちしゅつたいしょく）、逆に欠けた状態で日の入りを迎える場合を日入帯食（にちにゅうたいしょく、もしくは日没帯食）と呼ぶ。この場合、いずれも食の最大を迎える前と食の最大を過ぎた後に分類される。
日食 原因
直接の原因は、地球の周囲を公転する月が地球と太陽の間に来て、月の影が地球上に落ちる事による。月の影に入った地域では、太陽が欠け、あるいは全く見えなくなる。
日食 原因
地上から見た太陽は、毎日昇っては沈む「日周運動」とは別に、黄道と呼ばれる仮想の軌道を1年で1周している。太陽は明るいので目で見たのではわからないが、星座の間でゆっくり位置を変え、365.2422日で元の点に戻る。すなわち1日に角度で約1度動く事になる。同じく月は、白道と呼ばれる仮想の軌道を27.3217日で1周する。地上から見ると、月の方がおよそ13倍も速く天球上を動く事になる。ただし、月が太陽を追い越す時が朔すなわち新月であり、地球を挟んで月が太陽と180度の位置に来た時が望すなわち満月であるが、朔から次の朔までの時間、つまり満ち欠けの周期は29.5306日である。月の公転周期27.3217日は朔望月の周期29.5306日と一致しないが、これは公転周期が宇宙空間（恒星）を基準に置いているためである。一方、地球は太陽の周囲を円に近い軌道を描いて公転しているため、月が朔の日から1周公転しても地上から見る太陽が黄道上を先行してしまっており、月が太陽に追いついて次の朔になるには2.2089日余分にかかる事になる。もし黄道と白道とが一致していれば、29.5306日ごとに起こる朔においては必ず月が太陽を覆い隠す、つまり月の影が地球上に達して日食が起こり、望には必ず月は地球の影に入って月食が起こるはずである。しかし実際には黄道と白道とは約5.1度の傾きでずれているため、朔の時（日月の合と言う）でも月が太陽の上や下を通過する場合や、望（日月の衝と呼ぶ）に際しても地球の影の外を通る場合が多い。日食が起こるのは、月が黄道・白道の交わる点つまり交点（月の昇交点・降交点）付近で朔となる時に限られ、月食も交点付近で望になる時に限られる。太陽を基準にすれば、太陽が交点付近にいる時に月が来て朔になれば日食が起こる事になる。
日食 原因
太陽が交点付近にある期間を食の季節と言い、日食はこの期間以外には発生しない。交点は2ヶ所ある、つまり昇交点と降交点が相対しているので、太陽が黄道を1周する間に日食が起こる機会が2度ある。ただし、交点は太陽による月への摂動のため、1年に19度ずつ後退しており、太陽が交点を出て再び戻って来る周期は346.6201日となる。これを「食年」と称するが、実際の日食や月食は約346日から347日周期（交点は2ヶ所あるので、起こるとすれば半分の約173日周期になる）では起こっていない。日食は朔の時にしか起こらないから、食年に最も近い日数となる12朔望月すなわちおよそ354日周期（交点は2ヶ所あるので、半分の6朔望月、およそ177日周期になる）で見られる。表は、21世紀初頭の日食の一覧であるが、桃色・水色で区分したそれぞれの日食は、ほぼ354日周期で発生している事がわかる。
※表のデータは、主として『理科年表 平成26年』によった。
日食 原因
食年（346.6201日）と12朔望月（354.3672日）には7〜8日もの差があるが、それでうまく日月が重なり、日食が起こるであろうか。太陽と月は共に30分前後の視直径であるから、ちょうど交点でなくとも、その前後の場所で出会えば食が起こり得る。その範囲は、条件により多少異なるが、交点の前後15度から18度程度である。仮に交点から15度もしくは18度近く離れた所で月と太陽が最接近（日月の合）すれば、月は太陽の一部を隠して北極もしくは南極付近で食が見られる。その約354日後には日月は更に交点の近くで合となり（最接近し）、低緯度で中心食となる。しかしその後は月と太陽は離れる一方となり、4回程度で食は起こらなくなる。上の表で、例えば桃色の場合は南極での中心食で始まり、急速に北上して北半球で周期を終えており、水色で示した食は、北極に近い高緯度での中心食に始まり、南下して南極での部分食として終わっているのがわかる。すなわち、太陽が交点から反対側の交点に行くには173.3101日弱かかり、元の交点に戻るのには346.6201日を要する一方、6朔望月は177.1836日、12朔望月は354.3672日である。従って、月と太陽の位置のずれは回数を重ねるごとに大きくなる。それは、ある時点で日食が起きた場合、いつまでもその状況は続かず、4回ほどで途切れてしまう事を意味する。回を重ねるたびに日月の距離が大きくなり、ついには食を起こさなくなるのである。むろん、新たな周期が始まっては繰り返され、よって日食が途絶える事はないのは、表を見ても明らかである。
日食 原因
通常は交点での日月の合は1回であるが、太陽の移動速度は1日に1度というゆっくりしたものであるため、交点から離れた手前で合となって食を起こした場合、29.536日後に再び月が巡って来た時にもまだ食の起こる範囲内にいる場合がある。従ってこのような場合には1ヶ月足らずの間隔で日食が見られる。ただし、日月の位置の隔たりが大きいので、起きる食は高緯度での部分食がほとんどで、表の2011年がそれに当たる。まれに中心食になっても極地で辛うじて見られる程度である。
さて、黄道と白道は天球を取り巻く円（正確には楕円）で表わされる。これらが傾きを持って交差しているから、交点は円の中心をはさんで2ヶ所ある事はすでに何度も述べたとおりで、従って食の季節は通常は年2回であり、日食は1年に最低2回は必ず起こる。しかし、食の季節が3回になる年もある。これは、既に述べた如く、交点が太陽の動く方向と逆向きに動いている（前進している）ためである。もし交点が固定されていれば太陽は平均およそ365日周期で元の交点に戻り、これが食年となるが、実際には346.6201日でしかない。食年は1年より19日ほど短いので、年の初めに食の季節があれば、年末に3度目の食の季節が巡って来る事になる。一方、前述の通り1朔望月は29.5306日であるから、これを12倍すると約354日になり、やはり1年よりおよそ11日短い。従ってある年の1月初めに日食があれば、その年半ばと12月末の3回日食が発生する機会が訪れる。前述のように、食の季節には日食が少なくとも1回、多い時には2回起こる。よって日食は年によっては3回ないし4回、まれには5回起こる（1935年）。
ただし、日食が連続して起こるにはどうしても1朔望月つまり約29.5306日を隔てなければならないから、仮に3回の食の季節に全て2回ずつ日食が起きたとしても、その期間は365日を越えるため、最も多い年でも日食の回数は5回が限度である。また、食の季節であっても月食は起きないこともある。月食が全くない年が数年に1度あり、発生頻度で見れば日食は月食より多い。詳しくは月食を参照。しかし日食は月の影に入った地域でしか観測できないため、地球全体で見れば日食は頻繁に起きていてもある地域に限定すると日食が観測される事は少ないが、月食は起きている時に月が見えている所では必ず観測できるので、一般には月食の方が見られる頻度が多い。
上記の例から、日食に周期性があり、予報できる可能性がある事がわかる。
日食 日食の予報
前の章で記述した354日周期又は177日周期は、地球全体から見れば最も短く扱いやすい予報法であるが、古代人の予報手段には使えない。食が起こる地域が大きく変動する一方、古代の人々は自分たちの居住地から大きく移動する事はなかったし、遠く離れた地域からの情報を入手するのも不可能であったから、地球全体での食の発生を知る事はできず、日食を見る機会はもっぱら自分たちの住む地域とその周辺に限られる。そうした制限下では、日食はあたかも不規則に起こるように見えるため、現在のような天文学知識の無い古代の人々は、突然太陽が欠け、時には見えなくなる日食の発生を非常に恐れたが、やがてその発生に強い規則性があることが知られ、原因はわからないながらも予報できるようになった。
実際には、日食・月食は天球上の月と太陽の規則的な運行周期の一致により発生するもので、いわば日月の運行周期の公倍数として考え得る。その視点に立てば、地球上の1地点でも食はかなり規則的に起きるので、ある程度の期間にわたって食発生の統計が得られれば予報が可能となる。ただし、そうした周期は非常に長いので、人間の一生程度の時間では把握できない。食の予報は、人類が文字を発明して数百年もの長期にわたってデータを蓄積できるようになって初めて実現した。
日食 日食の予報
日食や月食の予報は、まだ地動説はおろか地球が丸い事さえ知られていなかった時代に既に行われていた。長期にわたる記録を整理して、食の発生に周期性があるのを発見したためである。
古代において、日食は重大な関心を持たれていた。中国の日食予報として著名な逸話に、紀元前2000年頃の夏の時代に、羲氏と和氏という2名の司天官が酒に酔って日食の予報を怠ったため処刑された、と『書経』に記されている、いわゆる「仲康日食」がある。
事実であれば当時既に日食の予報が行われていた事になって、世界最古の日食予報になる。唐代以降、東西の多くの天文学者がこの日食の比定を試みたが、この記事に完全に符合するものは見つかっていない。
中国においては1994年に存在が確認された「上博楚簡」と呼ばれる竹簡の中に『競建内之』と称される物があり、斉の桓公が皆既日食を恐れて鮑叔の諫言を聞いたという故事が載せられている。『史記』においては専横を敷いていた前漢の最高権力者呂后が日食を目の当たりにし「悪行を行ったせいだ」と恐れ、『晋書』天文志では太陽を君主の象徴として日食時に国家行事が行われれば君主の尊厳が傷つけられて、やがては臣下によって国が滅ぼされる前兆となると解説しており予め日食を予測してこれに備える必要性が説かれている。中国の日食予報は戦国時代から行われていたが、三国時代に編纂された景初暦において高度な予報が可能となった。
日食 日食の予報
このため、日本の朝廷でも持統天皇の時代以後に暦博士が日食の予定日を計算し天文博士がこれを観測して密奏を行う規則が成立した。養老律令の儀制令・延喜式陰陽寮式には暦博士が毎年1月1日に陰陽寮に今年の日食の予想日を報告し、陰陽寮は予想日の8日前までに中務省に報告して当日は国家行事や一般政務を中止したとされている。六国史には多くの日食記事が掲載されているが、実際には起こらなかった日食も多い。ただしこれは日食が国政に重大な影響を与えるとする当時の為政者の考えから予め多めに予想したものがそのまま記事化されたためと考えられ、実際に日本の畿内（現在の近畿地方）で観測可能な日食（食分0.1以上）については比較的正確な暦が使われていた奈良時代・平安時代前期の日食予報とほぼ正確に合致している。
1183年の治承・寿永の乱の水島の戦いでは戦闘中に金環日食が発生し、源氏の兵が混乱して平氏が勝ったと源平盛衰記などの史料に記されている。当時、平氏は公家として暦を作成する仕事を行なっていたことから平氏は日食が起こることを予測しており、それを戦闘に利用したとの説がある。
日食 日食の予報
江戸時代の1839年（天保10年）には、金環食が発生した。幕府の役人は従来の中国式の予測時刻と伝来したばかりの西洋式の金環食の予測時刻、2種類の計算を行い、築地の海岸で観測を行った。西洋の方法での予測が的中し見える位置、時刻ともに正確であった。以降、西洋の天文学が日本で急速に広まっていった。
西洋においては、トルコから西アジアにかけて領土があったメディア王国とリディア王国が長期にわたり戦争を続けていた紀元前6世紀始め頃、ギリシャの哲学者タレスが予言していた日食が実際に起き、両国は和を結んだという話が、ギリシャの歴史学者ヘロドトスの『歴史（ヒストリア）』に書かれている（日食の戦い）。これも多くの天文学者の興味をそそり、その日食を特定する試みが為され、紀元前585年5月28日の皆既日食と推定された。この日食は南アメリカ北端から北大西洋を通り、ヨーロッパを経てトルコ北部からカスピ海の南に達したものであるが、異説もある。タレスは、古代バビロニアで考案された予報術を用いたとヘロドトスは記し、これは次に述べるサロスであるとの説もあるが、サロスは当時のギリシャでは知られていなかったというのが天文学史の主導的見解であり、タレスは、それまでに伝えられていた大雑把な法則に基づいて日食発生の年を予言したが、月日までは言及できなかったと考えられる（タレスの日食）。
日食 日食の予報
最も古くから知られていたのは前述の「サロス」と呼ばれるもので、紀元前6世紀頃にバビロニアで発見されていたとされ、またギリシャでは紀元前443年に数学者のメトンにより「メトン周期」が発見された。
既に記したとおり、1朔望月は29.5306日であり、223朔望月は6585.3212日となる。月が交点を出て再び戻って来る（交点から始まる軌道を一周する）交点月は27.2122日であり、242交点月は6585.3575日で、前者にきわめて近い。また月が地球をめぐる公転軌道のうちで近地点に来た時を近点月と言うが、239近点月は6585.5375日で、やはり非常に近い。さらに1食年346.6201日を19倍する、すなわち19食年は6585.782日で、これも大差がない。そのため、223朔望月に当る18年と11日（閏年の配置によっては10日）と8時間ほどの周期でよく似た状況の日食（継続時間、食の種類等）が繰り返される。これがサロスと呼ばれる周期である。
日食 日食の予報
ただ、余分の8時間が曲者で、次回の日食は経度でおよそ120度西にずれた所で起こる。その次はおよそ240度西方に動き、3回目で元の位置に戻る。そのため、実用上は3サロス、すなわち54年と約1ヶ月を用いるのがよい。下の表にサロスの実例を示す。3サロス毎にほぼ同じところで日食が起こっている事や、サロスは近点月や食年の倍数とよく一致しているので、毎回起こる食の状況も似ていることがわかる。
表を見ると、食により3サロスの間に経路が少し北上又は南下した事が分かる。サロスは不変ではなく、1000年程度の期間で、極地方の部分食から始まって少しずつ北上（あるいは南下）して赤道を越え、最後は反対側の極地方の部分食となって終わるという経過をたどる。また、サロス周期は約18年であるが、日食は毎年起こる。これは、複数のサロスが存在するためで、実際に18年間に40個ほどのサロスが食を繰り返しており、オランダの天文学者ゲオルグ・ファン・デン・ベルグがサロスに付けた通し番号が一般に使用されている。
1年は365.2422日であり、19年は6939.6018日となる。一方、235朔望月は6939.6675日で、非常に近い。さらに20食年（346.6201日×20=6932.402日）とも近似する。したがって、ある日食からちょうど19年後には再び日食が起こる。これをメトン周期と呼び、中国では「章」又は「章法」と言った。
ただし、19年及び235朔望月に対し20食年との差が7日余り出るのが問題で、回を重ねるごとにこれが大きくなるので、予報としては5 - 6回くらいで使えなくなる。下の表にメトンの例を示す。
他にも日食の周期性を用いた予報の種類は多い。
日食 日食の経過
食の経過及び状況を示すために「食分」（しょくぶん）という数値が用いられる。
皆既食や金環食などの中心食は、多くの場合数分、時には数秒以下しか見られない。皆既食の場合、月が地球に近い所（近地点）にあって地球から見た際の視直径が大きく、地球が太陽から遠い所（遠日点）にあって地球から見た太陽の視直径が小さい時には、月が太陽を隠す時間が長くなり、継続時間も長くなる。また、月の影は地球上を西から東へ秒速1km（時速3600km余り）ほどで進んで行くが、赤道に近い低緯度地方で正午頃に見られるなら、地球の自転により月の影の移動速度が相対的に遅くなり、やはり継続時間が延びる。さらに、白道は黄道から5.1度ずれているので、地球に落ちる月の影も地表面を斜走するため、地球の自転方向が食の中心線と平行になる地域から見れば継続時間が伸びる。
そうした好条件が重なれば、皆既食の継続時間は、稀ではあるが7分を越える。紀元前4000年から紀元6000年までの1万年間では、紀元（西暦）2186年7月16日に起きる皆既食が最も長く、最大約7分29秒に及ぶ。この日食はサロス番号139番に属しており、このサロスは皆既継続時間が非常に長く、前後併せて5回も7分以上の皆既が起こる。21世紀中は7分を越える皆既食はない。
日食 日食の経過
金環食では、皆既食と逆の条件があれば長くなる。太陽と月の平均視直径を比較すると、太陽が32分、月が31分で、前者がわずかに大きく見える。仮に月と地球の公転軌道が完全な円であったなら金環食しか見られなくなる。軌道が楕円であるため視直径が変動し、皆既食も金環食も見られるのであるが、このような条件もあって、金環食の方が継続時間の長いものが多い。皆既食は最長でも前述のように7分30秒程度であるのに対し、金環食は1955年12月14日の日食のように稀に12分以上継続する事がある。
日食 観測
皆既日食の際、普段は光球の輝きに妨げられて見ることができないコロナや紅炎の観測が可能になり太陽の構造・物理的性質を調べる絶好の機会となり、太陽のみならず恒星一般の研究にも大きな役割を果たす。
第2接触直前または第3接触直前には、月の表面にある起伏の谷間から太陽の光が点々と連なって見える状態になることがある。これを、原理を解明したフランシス・ベイリーの名を取ってベイリー・ビーズ（ベイリーの数珠）といい、古くから月に起伏がある証拠とされてきた。
また皆既食にて太陽がすべて隠れる直前と皆既が終わった直後、又は北限界線や南限界線から食を見る場合には、太陽の光が一か所だけ漏れ出て輝く瞬間があり、黒い太陽（実際は月）の周囲に細く内部コロナが輪状に見えるのと併せて宝石の着いた指輪に似た形状となる。これをダイヤモンドリングと言い、皆既日食の見所の一つである。これも、月面にある起伏による現象である。
皆既日食が起こると空がかなり暗くなり星の観測も可能な状態になる。そのわずかな時間を利用して1919年5月29日の日食で、一般相対性理論の検証がアーサー・エディントンによって行なわれた。皆既日食中に太陽周辺の星を観測すると、星からの光は太陽の重力場を通るため屈曲することになり、位置がわずかにずれる。一般相対性理論で予想される数値と実際に観測された数値とを比較することで、一般相対性理論の確かさが確認された。
日食 観測
太陽光は光量が大きく有害な紫外線なども含まれるため、部分食や金環食のように太陽の光球が完全に隠されない日食を肉眼で直接観測すると日食網膜症を引き起こし、網膜のやけどや後遺症、ひどい場合には失明を引き起こすことがあるため一定の性能を満たした観測機器が必要となる。
日食観察グラス（日食グラス）による観測 - 日食を日食グラスで観測する場合、一旦太陽に背を向けてグラスを目に当ててから太陽に向かって振り向くという動作をしなければならない。日食グラスの品質や性能についても留意が必要であり、透過率は可視光線で0.003%以下、赤外線で3%以下とされ（いずれも目安）、室内の蛍光灯を見てかすかに確認できる程度の見え方であり、LEDライトなどの強い光にかざしたときにひび割れや穴等の損傷が無いものであることが必要となる。20世紀末頃まで一般に用いられてきた、すすを付着させたガラスや通常市販されている黒色の下敷き、カラーネガフィルムによる遮光では不十分である。また、上記のような適切な専用機器を使って正しい観測方法を行ったとしても、時間的な間隔を置かずに継続して観測することによって日食網膜症を引き起こすこともあり、1分観測するごとに2〜3分程度中断して目を休ませるべきだとされており、市販されている日食グラスにもその旨の警告がなされている。
日食 日食時に起こる諸現象
日食の際は気温が少し低下することがある。1999年8月11日の日食におけるイギリスのデータでは、解析により日食による低下分を算出したところ最大3℃という値が得られている。またこの解析では、日食時に風速が平均0.7メートル毎秒低下、風向も平均で反時計回りに17°転回するという風の変化があったと報告されている。
日照の減少により太陽光発電の一時的な出力低下も生じる。2015年3月20日の日食において初めて電力系統に大きな影響を与える問題として取り上げられ、大陸欧州系統(UCTE grid)では晴れた日に90ギガワットある太陽光出力のうち34ギガワット分が一時的に低下すると推定され対策が講じられた。
皆既食になる直前および終了直後の部分食のとき、プールの底にできる光の模様のような明暗のゆらめきが日光に生じる。シャドーバンド (shadow bands) やフライング・シャドウズ (flying shadows) などと呼ばれる。皆既食の直前直後は三日月のような細長い太陽が光源となり、大気の乱流による光の屈折が現れることで生じると考えられている。
日食 日食時に起こる諸現象
皆既食のときには、地平線付近の低空の全方向で空が夕焼けや薄暮のようなオレンジ色に色づく現象が見られる。色づきは太陽光が当たっている遠くからの散乱光に由来しており、普段も存在するが青い光が強いため見えない。
日食のとき、例えば鳥やリスが巣に戻ったりコオロギが鳴きはじめたりといった動物の行動変化が観察されることも知られている。動物園の飼育動物では普段夕方や夜間にとる行動がみられたという報告がある。
日食 日食観測の歴史
人類にとって太陽はすべての生命の根源であり、世界全体を照らす最も重要な天体である事は古くから周知されており、世界各地の神話や宗教などで最高神として崇められてきた。その太陽が陰り、時には完全に隠れ、明るかった空が暗くなるということは、科学的な説明が浸透する以前の人々にとっては重大な出来事として認識された。そのため、彗星と共に天変地異を予告する凶兆として恐れられた。
近代天文学が確立する以前、多くの文明で日食や月食を説明する神話が長い間語り継がれてきた。これらの神話の多くでは、日月食は複数の神秘的な力の間の対立や争いによって起こるとされた。例えばヒンドゥー教の神話では、食が起こる月の昇交点がラーフ、降交点がケートゥという2人の魔神として擬人化され、この二神の働きによって食が起こると考えられた。この二神が象徴する二交点は後に古代中国で「羅睺星」「計斗星」の名で七曜に付け加えられ、九曜の一員を成している。
また北京天文台には日食神話を描いた石の彫刻があり、以下のような説明が添えられている。
「この彫刻の絵は日食の原因を説明している。金烏（太陽の象徴）の中心がヒキガエル（月の象徴）によって隠されている。漢時代の人々はこの現象を太陽と月の良い組み合わせと呼んでいた」
日食 日食観測の歴史
ここで金烏とは金色（太陽）の中にいるという三本足の烏（八咫烏を参照のこと）であり、ヒキガエルは月のクレーターの形に由来するものである。この解説文からは、当時の文化において天文現象としての事実の認識と現象に対する愉快な見立てとが両立していたことが窺える。
ヴァイキングたちの伝承を記した『スノッリのエッダ』ではスコルと呼ばれる狼が太陽を常に追いかけており、狼が太陽に追いつくと日食になるという記述がある。そして、世界の終わりの日に狼はついに太陽を完全に飲み込んでしまうという。
日本においては、計算上は邪馬台国の時代、卑弥呼が死んだとされる247年と248年に日本列島で日食が起きた可能性が推測されている。国立天文台では「特定された日食は『日本書紀』推古天皇36年3月2日（628年4月10日、推古天皇崩御の5日前）が最古であり、それより以前は途中の文献がないため地球の自転速度低下により特定できない」としている。
プログラム
プログラム（英: program、programme、希: prographein（公示する）から）
一般概念
特定の商品名、固有名など
コンパイラ
コンパイラ（英: compiler）は、高水準言語で書かれたコンピュータプログラムを、
コンピュータが実行や解釈できる形式に、一括して変換するソフトウェア。
コンパイラ 概説
コンパイラの技術書のバイブルとされるAlfred V.Aho（アルフレッド・エイホ）著 Compilers, Principles, Techniques, and Tools（通称「ドラゴンブック」）の第1章1節の冒頭に、コンパイラとはそもそも何かということについて説明が掲載されており、そこには「簡潔に言うと、コンパイラとは、ある言語（プログラミング言語）で書かれたプログラム（ソースプログラム）を読み、それを別の言語で書かれた等価のプログラム（ターゲットプログラム）へと翻訳（translate）するプログラムである。」と書かれており、さらに続けて「コンパイラは、ソースプログラムに含まれるエラーをユーザに報告するという重要なことを翻訳の1プロセスとして行う。」という説明も加えている。
英語の動詞で、あるプログラム言語で書かれたコードを別の言語で書かれたコードに変換することを"compile"（コンパイル）といい、コンパイラとはその変換を一括して行なうコンピュータプログラムのことである。インタプリタとよく対比される。
コンパイラ 概説
（なお、上では「ソースプログラム」「ターゲットプログラム」という古典的用語を含む説明文を紹介したが、最近の技術用語では、変換される前のプログラムを「ソースコード」と呼び、変換後の機械語あるいは中間言語のプログラムなどを「オブジェクトコード」と呼ぶ傾向がある。また機械語は二進数で書かれているので近年では「バイナリコード」ということもある。）
よくあるのは、高水準言語で書かれたプログラムを、コンピュータのプロセッサが直接実行できる機械語あるいはアセンブリ言語のような低水準言語あるいは元のプログラムよりも"低いレベル"のコード（例えばバイトコードなどの仮想機械向け中間表現）に変換するものである。
コンパイラ 概説
コンパイラを俯瞰してみると、この世には圧倒されるほど多種類のコンパイラがある。というのは、ソースコード（ソースプログラム）の記述に使われるプログラミング言語だけに着目しても、FORTRANなど歴史の古い言語から始まり近年勃興してきている言語まで含めると数千にもおよぶプログラミング言語があり、他方、オブジェクトコード（ターゲットプログラム）の記述に使われる言語のほうに着目しても、種類がやはり非常に多く、ソースコードの言語とは別の言語であるかも知れないし、（あるいは中間言語であるかも知れないし）、あるいは機械語であるかも知れないからであり、その機械語もマイクロプロセッサを用いたコンピュータのものからスーパーコンピュータのものまであり多種多様だからである。
またコンパイラの種類には、シングルパス（ワンパスとも。1回で変換作業を完了できるもの）、マルチパス（en:Multi-pass compiler。複数回の作業が必要だが、主記憶が少なくても動くもの）、ロード・アンド・ゴー（変換してすぐに実行を開始するもの）、デバッグ用、最適化用などの種類もある。　→#分類の節で説明
またコンパイルを使ったコンパイル作業は、ひとつのプログラムとして動作する全てのコードをいっぺんにコンパイルするのではなく、モジュール毎などに分けてコンパイルし（「分割コンパイル」）、ライブラリなどはあらかじめコンパイルされているものと合わせて、実行するようにすることも多い。この場合、コンパイラはリロケータブルバイナリを出力し、実行可能ファイルの生成にはリンケージエディタが必要であり、さらに動的リンクで実行する場合はダイナミックリンカ／ローダ（ローダの一種）も必要である。
なお、「コンパイラ（言語） / インタプリタ（言語）」という2分法的な分類は、Java登場以前では一般的で適切だったが、近年では適切でないことも増えている。開発環境などでは、コンパイルした後に実行するというような手続きを1コマンドで行えるものも増えている。そして、Java以降はインタプリタでも実行時コンパイラなどの技術の利用がさかんになってきており、古典的な意味での「コンパイラ」と「インタプリタ」の中間的な性質のツール（プログラム）も増えてきているからである。
なお英語の「compile」はもともと「編集する」「編纂する」という意味であり、「compiler」というのは「編集者」という意味の英語である。
コンパイラ 歴史
1940年代まで、コンピュータのプログラミングは機械語で直接行なわれていた。プログラムを指して「コード」（英語では暗号を意味する）と呼ぶのは、知らない人間には機械語は全く意味のわからない数値の羅列だからである。しかし、（人間にとって比較的理解のしやすい）十進法の数字で書かれたアドレスを内部表現の二進法に変換する、といったプログラムならばEDSAC（1940年代末に登場した、イギリスのマシン）において既に存在していた。（つまり、この段階で、アセンブラのごく一部の機能に限れば、実現していたことになる）
機械語でのプログラミングは言うに及ばず、アセンブリ言語を用いても、プログラミングというのは面倒な作業である。そういった低水準言語から、人間がより扱いやすい高水準言語が徐々に求められるようになった。また、機械の詳細が抽象化されることにより、高水準なプログラミング言語で書かれた同一のソースコードを元に、詳細仕様が異なる機械でも動くプログラムを生成できる、という利点もあった。1950年代末までに、プログラミング言語がいくつか提案され、実験的なコンパイラがいくつか開発された。
コンパイラ 歴史
世界初のコンパイラについては、1952年にグレース・ホッパーが書いたA-0 Systemだとされることもある。だが一般的には1957年にIBMのジョン・バッカスのチームが開発したFORTRANコンパイラが世界初の完全なコンパイラであるとされている。一般的なコンパイラの開発では、まず動くものを作ってから最適化の機能が付け加えられるが、最初のFORTRANコンパイラでは、コンパイラが実用になることを示すために、最初から最適化に労力が向けられた。
1960年の、ホッパーらによるCOBOLは複数のアーキテクチャ上でコンパイル可能となった言語の最初期の1つである。
様々なアプリケーション領域で、高水準言語というアイデアは素早く浸透していった。機能が拡張されたプログラミング言語が次々と提案され、コンピュータのアーキテクチャそのものも複雑化していったため、コンパイラはどんどん複雑化していった。
コンパイラ 歴史
初期のコンパイラはアセンブリ言語で書かれていた。世界初の「セルフホスティングコンパイラ」は、1962年にマサチューセッツ工科大学の Hart と Levin が開発したLISPコンパイラである。1970年代には、特にPascalやC言語などにおいて、コンパイル対象言語でコンパイラを書くことが一般化した。さらにより高水準の言語のコンパイラは、PascalやC言語で実装することも多い。セルフホスティング・コンパイラの構築には、ブートストラップ問題がつきまとう。すなわち、コンパイル対象言語で書かれたコンパイラを最初にコンパイルするには、別の言語で書かれたコンパイラが必要になる。Hart と Levin の LISPコンパイラではコンパイラをインタプリタ上で動作させてコンパイルを行なった。
コンパイラ 分類
機械語にコンパイルするコンパイラもあれば、そうでないコンパイラ（後述）もある。機械語コードのことを、ハードウェアであるプロセッサの生のコード、というような意味でネイティブコードなどと言うことがあり、機械語にコンパイルするコンパイラのことをネイティブコンパイラと言うことがある。
コンパイラに限らず、入力と出力を持つあらゆる変換系は、入力の種類がm種類、出力の種類がn種類あるとすると、m×n種類があることになる。コンパイラの場合、プログラミング言語がm種類、コード生成の対象となる命令セットアーキテクチャがn種類、といったような感じになるわけであり、入力側をフロントエンド、出力側をバックエンドと言うが、中間表現の設計いかんでは、残りの中間処理の部分、特に重要な部分であるコンパイラ最適化を共有できるため、1980年代以降に基本設計が為されたGCCやCOINSやLLVMなどでは、そのようにして多言語・多ターゲットに対応している。
コンパイラ 分類
汎用OSなど、開発環境と同じ環境で目的プログラムも動作させるような開発を「セルフ開発」と言い、セルフ開発のコンパイラを「セルフコンパイラ」という。それに対し、開発環境とは別の環境で実行するような開発を「クロス開発」といい、そのためのコンパイラをクロスコンパイラという。OSカーネル自身のコンパイルなどは、カーネル自身の実行環境は、そのOSではなくベアメタルであるという意味ではある種のクロスコンパイルのようなものであるし、新しいコンピュータシステムのための環境を最初に作るにはクロス開発の必要がある。あるいは、組み込みシステムやPDAなど、それ自体が開発環境を動作させるだけの機能や性能を持たない場合、といったものもある。
いわゆるネイティブコードではなく中間コードを生成し、さらに別のコンパイラに処理を任せたり、別のインタプリタによって実行したりするものもある。これを中間コードコンパイラ、バイトコードコンパイラなどと呼ぶ。またそのバイトコードを解釈実行する処理系をバイトコードインタプリタなどと呼ぶ。
コンパイラは様々な処理の集合体であり、初期のコンピュータではメモリ容量が不十分であったため、一度に全ての処理を行うことができなかった。このためコンパイラを複数に分割し、ソースコードや何らかの中間的な表現に何度も処理を施すことで解析や変換を行っていた。
コンパイラ 分類
一回でコンパイルが可能なものをワンパスコンパイラと呼び、一般にマルチパスコンパイラよりも高速で扱いやすい。Pascalなど、多くの言語はワンパスでコンパイルできるよう意図して設計されている。
言語の設計によっては、コンパイラがソースコードを複数回読み込む必要がある。たとえば、20行目に出現する宣言文が10行目の文の変換に影響を与える場合がある。この場合、一回目のパス（読み込み）で影響を受ける文の後にある宣言に関する情報を集め、二回目のパスで実際の変換を行う。
ワンパスの欠点は、高品質のコードに欠かせない最適化を行いにくいという点が挙げられる。最適化コンパイラが何回読み込みを行うかというのは決まっていないが、最適化の各フェーズで同じ式や文を何度も解析することもあるし、一回しか解析しない箇所もある。
コンパイラを小さなプログラムに分割する手法は、研究レベルでよく行われる。プログラムの正当性の判定は、対象プログラムが小さいほど簡単なためである。
ネイティブコンパイラの他にも以下のような、「ネイティブの機械語」以外をターゲットとするコンパイラ（ないしトランスレータ）がある。
コンパイラ 分類
もっぱらその言語の処理系がコンパイラとして実装される言語を「コンパイラ言語」などと言い、インタプリタとして実装される言語を「インタプリタ言語」などと言うこともあるが、実験的な実装まで含めればどちらもある言語も多い。Microsoft Visual Studioに付属するF#/C# Interactiveのように、対話環境で入力したプログラムを、コンパイラで共通中間言語（中間表現）にコンパイルし、さらに共通言語ランタイム（仮想機械）上でネイティブコードにJITコンパイルしてインタプリタ的に実行する、というような処理系もある。JavaやMicrosoft Visual Basicのように、登場当初はインタプリタ方式だったが、のちにネイティブコードへのJITコンパイルやAOTコンパイルをサポートするようになった言語もある。
コンパイラ 分類
言語によっては、Common Lisp規格のように実装にコンパイル機能を含むことを義務とするものもある(ただし、ANSI Common Lisp規格は解釈実行の処理系を禁止しているのではない)。また、インタプリタの実装が容易でコンパイラの実装が困難な言語もある（APL、SNOBOL4など）。メタプログラミングの利用、特に文字列をevalすることは、インタプリタ方式では造作ないことだが、コンパイラ方式では実行環境にコンパイラ自体が必要となる（動的プログラミング言語も参照）。
ハードウェア記述言語の処理系（合成系）を、ハードウェアコンパイラとかシリコンコンパイラなどと呼ぶことがある。
コンパイルをアプリケーションの実行時に行うか、実行前に行うかで2つに分かれる。
コンパイラ構築とコンパイラ最適化は、大学での計算機科学や情報工学のカリキュラムの一部となっている。そのようなコースでは適当な言語のコンパイラを実際に作らせることが多い。文書が豊富な例としてはニクラウス・ヴィルトが1970年代に教育用に設計し、教科書中で示した PL/0 がある。PL/0 は単純だが、教育目的にかなった基本が学べるようになっている。PL/0 はPascalで書かれていた。ヴィルトによる教科書は何度か改訂されており、1996年の版ではOberonでOberonのサブセットOberon-0を実装している。
コンパイラ インタプリタとの違い
もともとは、コンパイラはしばしばインタプリタと対比されてきたものである。コンパイラは、生成された機械語プログラムなどの実行は行わないが、一度コンパイルすればコンパイラを使わずに何度も実行できるという利点がある。しかし、インタプリタは、バイナリの実行ファイルは生成せず、実行するときに常に必要だが、プログラムを作ったらすぐに実行できるという利点がある。
コンパイラ しくみと設計
コンパイラは、概念的に言うと、一般に次のようなフェーズ（phase(s)、段階）に従い処理を行う
。
通常、次のような入・出力図で説明される。
太字で表記したものがコンパイラの中に含まれている部分（コンパイラの部品）である。つまり、まず字句解析器（字句解析部）がソースコードを読み込みトークンに分解し、次に構文解析器（構文解析部）がトークン列からプログラムの構文木を構築し、次にセマンティック解析器（意味解析器）が意味論的な解析を行い、次に中間コード作成器が中間コードを生成し、次に最適化器がコードの最適化を行い、最後にコード生成器が最終的なターゲットプログラム（オブジェクトコード）を生成する。
なお、コンパイラの作成に関することだが、字句規則から字句解析器を生成するlex、構文規則から構文解析器を生成するパーサジェネレータというプログラムがあり、広く実用的に使われている。つまりコンパイラのプログラムの一部分を自動的に書いてくれるようなプログラムがすでにあり、それのおかげで全部人力で書くようなことはしないで済む。（なお、コンパイラ全体を生成するコンパイラジェネレータも研究されているものの、広く実用に使われるには至っていない。）
コンパイラ設計手法は処理の複雑さ、設計者の経験、利用可能なリソース（人間やツール）に影響される。
コンパイラ しくみと設計
コンパイル処理の分割を採用したのはカーネギーメロン大学での Production Quality Compiler-Compiler Project であった。このプロジェクトでは、「フロントエンド」、「ミドルエンド」（今日では滅多に使われない）、「バックエンド」という用語が生み出された。
非常に小さなコンパイラ以外、今日では2段階（2フェーズ）以上に分割されている。しかし、どういったフェーズ分けをしようとも、それらフェーズはフロントエンドかバックエンドの一部と見なすことができる。フロントエンドとバックエンドの分割点はどこかというのは論争の種にもなっている。フロントエンドでは主に文法的な処理と意味論的な処理が行われ、ソースコードよりも低レベルな表現に変換する処理が行われる。
ミドルエンドはソースコードでも機械語でもない形式に対して最適化を施すフェーズとされる。ソースコードや機械語と独立しているため、汎用的な最適化が可能とされ、各種言語や各種プロセッサに共通の処理を行う。
バックエンドはミドルエンドの結果を受けて処理を行う。ここでさらなる解析・変換・最適化を特定のプラットフォーム向けに行う場合もある。そして、特定のプロセッサやOS向けにコードを生成する。