XPL0は、基本的にPascalとC言語の中間のようなコンピュータプログラミング言語です。見た目はPascalに似ていますが、動作はC言語に近いと言えます。1976年にピーター・JR・ボイルによって開発されました。彼は自身のマイクロコンピュータ向けに高水準言語を求めており、当時パーソナルコンピュータの主流言語であったBASICよりも洗練された言語を望んでいました。
XPL0は、ニクラウス・ヴィルト著『アルゴリズム+データ構造=プログラム』に掲載されているコンパイラの例であるPL/0をベースとしています。最初のXPL0コンパイラはALGOLで記述されました。これは、 6502マイクロプロセッサを搭載したデジタル・グループ社のコンピュータ上でインタプリタとして実装された擬似マシン用の命令を生成しました。その後、コンパイラはALGOLからXPL0に変換され、マイクロコンピュータ上で自己コンパイルおよび実行が可能になりました。
XPL0は、6502をベースとした様々な製品において、すぐにその真価を発揮した。これらの組み込みシステムは、そうでなければアセンブリ言語でコードを記述する必要があっただろうが、それははるかに手間のかかる作業である。
ボイルはXPL0を使ってApexというディスクオペレーティングシステムを開発した。1980年から、これはXPL0とともに、6502をベースとしたApple IIコンピュータ向けのApple DOSの代替として販売された。
初期の頃から、XPL0は十数種類のプロセッサに実装され、多くの機能が追加されてきました。現在では、当初の16ビット版に代わり、32ビット整数に対応した最適化ネイティブコードコンパイラが提供されています。WindowsおよびMS-DOS ( PC )用、そしてRaspberry Pi(Raspberry Pi)用のLinux向けオープンソースコンパイラは、下記のリンクから入手できます。
XPL0では、伝統的な「Hello World」プログラムは次のようにコーディングされます。
コードテキスト=12; テキスト(0, "こんにちは世界!")
Text は、文字列を出力する組み込みルーチンです。0 は文字列の送信先を指定します。この例ではディスプレイ画面に送信されますが、別の番号を指定することで、プリンタ、ファイル、またはシリアルポートに送信することも可能です。
XPL0では、すべての名前は使用する前に宣言する必要があります。コマンドワード「code」は、 「Text」という名前を組み込みルーチン番号12に関連付けます。このルーチンは文字列を出力するものです。このような組み込みルーチンは約100個あり、入出力、グラフィックス、三角関数などの機能を提供します。
32ビット版のコンパイラはコード宣言を自動的に挿入するため、上記のプログラムは次のように簡単に記述できます。
テキスト(0, "こんにちは世界!")
TPKアルゴリズムは、他の言語と比較できる例を示している。
関数実数 F(T) 本物のT; return sqrt(abs(T)) + 5.*Pow(T, 3.); int I; real Y, A(11); [I:= 0 から 10 まで、A(I):= RlIn(0) を実行する] for I:= 10 downto 0 do [Y:= F(A(I)); Y > 400 の場合、[IntOut(0, I); Text(0, "大きすぎます")] else [IntOut(0, I); RlOut(0, Y)]; CrLf(0); ]; ]
グラフィックス機能は、Apple IIコンピュータ時代からXPL0の特長の一つでした 。

int X、Y、Color; [SetVid($101); \ビデオモードを640x480x8に設定します Y:= 0 から 128-1 まで繰り返す X:=0から128-1まで繰り返す ポイント(X、Y、XまたはY xor 色) 色:=色+1; 遅延US(50_000); \0.05秒 ChkKey まで; ]