hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
Forth 特徴
Forth は単純だが拡張性のある言語である。そのモジュール性と拡張性はCADシステムのような高度なプログラミングをも可能にする。しかしながら、拡張性は未熟なプログラマがわかりにくいコードを書くのも促すため、このことは Forth に「記述専用言語」との評判ももたらしている。大規模で複雑なプロジェクトでも成功裏に使われてきていて、有能でよく訓練されたプロフェッショナルによって開発されたアプリケーションが、何十年にもわたって発展していくハードウェアプラットフォーム上でも容易に保守されることを証明している。Forth は天文学分野や宇宙開発分野という得意分野も持っている。
その移植性、効率的なメモリ使用、短い開発期間および高速な実行スピードのため、Forth は今日でもいまだ多くの組み込みシステム(小さなコンピュータ化されたデバイス)で使われている。これは近代的なRISCプロセッサ上で効率的に実装されてきており、マシン語としてのForthの利用も生み出されてきている。他の Forth の用途としてはApple、IBM、サン・マイクロシステムズ、OLPC XO-1に使われるOpen Firmware ブートロムが含まれる。また、FreeBSDオペレーティングシステムのFICL-based first stage boot controllerもある。
Forth 歴史
Forth はチャールズ・ムーアの1958年から絶え間なく開発されていた個人的なプログラミングシステムから考案された。1968年、家具と絨毯を扱う企業に雇われた際、このソフトウェアをミニコン上でFORTRANを使って書き直したものがForthの原型である、という。Forth が他のプログラマに最初に公開されたのは1970年代で、アメリカ国立電波天文台(NRAO)にいたアメリカの Elizabeth Rather によって始められたものである。1971年にNRAOの制御用ソフト作成において、ムーアはForthを完成させた。このNRAOにいた彼らの仕事のあと、チャールズ・ムーアとElizabeth Ratherは FORTH, Inc. を1973年に設立し、その後の 10 年でさらに磨きをかけるとともにいくつものプラットフォームに Forth システムを移植した。
Forth 歴史
1968年の"[t]he file holding the interpreter was labeled FOURTH, for 4th (next) generation software — but the IBM 1130 operating system restricted file names to 5 characters."において Forth は命名された。ムーアは compile-link-go 第三世代言語の後継、または「第四世代」ハードウェアのためのソフトウェアとして Forth を見ており、用語として使われるようになっていた第四世代言語 (4GL) ではなかった。ムーアは、アセンブラ・FORTRAN・BASICに続く4番目の言語という意味で、このソフトウェアに「fourth」と名付けるつもりだったが、このミニコンで取り扱えるファイル名は最大5文字であったため「FORTH」という名になったという。
Forth 歴史
チャールズ・ムーアはたびたび仕事を渡り歩いていたため、初期の言語開発の困難は異なるコンピュータアーキテクチャへの移植の容易さであった。Forth システムはしばしば新しいハードウェアを育てるために使われていた。たとえば、Forthは1978年の新しい Intel 8086 チップ上の最初の常駐ソフトウェアで、MacFORTHは1984年の最初のAppleMacintoshの最初の常駐開発システムであった。
Forth, Inc の microFORTH は1976年に始まったIntel 8080, Motorola 6800, Zilog Z80 マイクロプロセッサ向けに開発された。MicroFORTH は　後に 1978年の 6502 のような他のアーキテクチャ向けの Forth システムを生成するのにホビーストたちにも使われた。広い普及は最終的に言語の標準化を誘導することとなった。共通の慣習は事実上の標準である FORTH-79 および FORTH-83 にそれぞれ1979年、1983年に成文化された。これらの標準は1994年に ANSIによって統合され、通常これは ANS Forth（ANSI INCITS 215-1994 (R2001)、ISO/IEC 15145:1997(E)のベースとなった）と呼ぶ。
Forth は1980年代にはとてもよく使われるようになったが、これは小さくかつ移植性が高いとして当時の小さなマイクロコンピュータにとてもよく適していたからである。すくなくともひとつのホームコンピュータ、英国のJupiter ACEは　そのROM常駐オペレーティングシステムに Forth を持っていた。キヤノン・キャットもまた そのシステムプログラミングのために Forth を使っていた。さらに Rockwell も常駐 Forth カーネルを持つ R65F11 と R65F12 のシングルチップマイクロコンピュータを製造していた。
Forth プログラマの観点
Forthの後置記法は、データスタック（オペランドスタック、以下単にスタックと呼ぶ）を意識的に操作しなければならないというForthの特徴と密接に結びついている。すなわち、オペランドはそのままスタックに積まれ、後から現れる演算子などはスタックからそれを取り出して演算し、結果をスタックに積む、といったように動作する。多くの言語と違い、バッカス・ナウア記法で構文が定義されているわけでもなく、伝統的にはコンパイラは、スレッデッドコードと呼ばれるシンプルな構造の目的コードを直接生成するだけである。また、文法の修正のような、多くの言語では実装の内部に手を入れる変更が必要なことが、Forthではそのようなワードを定義することで可能である（これは、Lispのマクロに少し似ている）。なお、データスタックの他にリターンスタックがあり、そちらはワードの呼出しの後で手続きを再開するアドレス等が積まれるスタックである（CPUのいわゆるスタックに似ている）。
たとえば、25 * 10 + 50 は、次のように入力して計算する（「⏎」は、改行の入力。「ok」はForth処理系が結果の出力の後に付けるプロンプト）。
Forth プログラマの観点
まず最初に数値 25 と 10 がこの順でスタックに積まれる。
ワード * がスタックの一番上にあるふたつの数を乗算し、その積に置き換える。
それから数値 50 をスタックに積む。
ワード + がこれに先ほどの積を加算する。最後に、. コマンドがスタックのトップを取り出して、それを、ユーザの端末に結果として出力する。
これは、スタックに4を積み、さらに5を積み、スタック上の2つの値を取り出して加算、その結果をスタックに戻し、スタックの値を表示する操作を示している。
上記のように入力してエンター（⏎：リターン）を打鍵すると、画面上には下記のように結果が表示される。
Forth の構造化機能でさえもスタックベースである。たとえば、
Forth プログラマの観点
このコードは 次のコマンドを使うことによって FLOOR5 が呼ばれる新しいワード（繰り返すが、「ワード」という用語はサブルーチンとして使われている）を定義する。DUPはスタックの数値を複製する。6がスタックの一番上に 6 を配置する。ワード < はスタックの一番上の二つの数（6 と DUP で複製された入力の値）を比較し、真偽値で置き換える。IFは真偽値をとり、その直後のコマンドを実行するか、ELSEまでスキップするかを選択する。DROPはスタックの上の値を放棄する。そして、THENは条件分岐の終端である。括弧に囲まれたテキストは、このワードが期待するスタックの数と値を返すかどうかを説明するコメントである。ワード FLOOR5 はC言語で書かれた次の関数に相当する。
この関数はより簡潔につぎのように書かれる。
このワードは次のように実行できる。
最初にインタプリタは数値 1（もしくは 8）をスタックにプッシュし、それからこの数値を再びポップし結果をプッシュする FLOOR5 を呼び出す。最後に、「.」の呼び出しは値をポップし、ユーザの端末にそれを表示する。
Forth 機能
Forthには公式の文法仕様はない。代わりに、簡単なアルゴリズムによって定義される。インタプリタは、ユーザ入力デバイスからの入力行を読み取り、その後、空白を区切り文字としてワード (words) を構文解析する。一部のシステムは、追加の空白文字を認識する。インタプリタがワードを見つけると、そのワードをディクショナリ (dictionary) から検索する。ワードが見つかった場合、インタプリタはそのワードに関連付けられたコードを実行し、その後、入力ストリームの残りを解析する。ワードが見つからない場合、ワードは数値と見なされ、数値に変換し、スタックにプッシュしようとする。変換に成功した場合、インタプリタは入力ストリームの構文解析を続行する。それ以外の場合、検索と数値変換の両方が失敗した場合、インタプリタはワードをエラーメッセージと共に出力し、入力ストリームをフラッシュして新しいユーザ入力を待機する。
新しいワードの定義は、ワード :（コロン）で始まり、ワード ;（セミコロン）で終了する。たとえば、
とすると、ワード X がコンパイルされ、ディクショナリで見つけることができるようになる。コンソールから 10 X と入力して実行すると、11 10 と表示される。
Forth 機能
Forthでは「+」や「.」などの演算子や出力機能などの全てがワードである。こういった組み込み済みのワードと、ユーザが後からコロン定義（コンパイラ）で追加したワードと、2つの間に本質的な差異はない。コンパイルしたワードはただちに環境に組み込まれ、インタプリタより単独で実行できるようになる。つまり、そのForth処理系を拡張するのである。このような点より、Forthは自己拡張性が高いと云われる。
プログラムの開発においては、処理毎に区切ってワードとして順次構築していくので、注意深く進めていけば自然ときれいに構造化されることになる。ワードは単独で実行できるため、部分に分けてのデバッグも容易である。また、それらのワードを使ってテスト用の処理（ワード）を気軽に作成して実行・テストできる。
Forth 機能
ほとんどのForthシステムには、プロセッサの機能を使用してワードを記述するためのアセンブラが含まれている。Forthのアセンブラは、一般的に、命令のパラメータが命令の前に来る逆ポーランド構文を使用する。典型的な逆ポーランド構文のアセンブラは、オペランドをスタックに用意し、ニーモニックが命令全体をメモリにコピーする最後の手順としている。Forthのアセンブラは本質的にマクロアセンブラであり、Forthシステム内での役割に応じてレジスタのエイリアスを定義することが容易だ。例えば、データスタックポインタとして使用されるレジスタの場合、「dsp」というエイリアスを定義することができる。
Forth 機能
古典的な Forth システムでは伝統的にオペレーティングシステムもファイルシステムも使われない。コードはファイルに格納される代わりに、ソースコードは物理的なディスクアドレスに書かれたディスクブロックに格納される。ワード BLOCK はディスクスペースの1キロバイトサイズのブロックの数値からデータを格納しているバッファのアドレスへの変換に割り当てられ、Forth システムによって自動的に管理される。固定されたディスクブロック範囲にファイルが配置されるときには、システムのディスクアクセスが使われる実装もある。たいていはこれらはディスクブロックごとのレコードの整数をつかって、固定長バイナリレコードして実装される。高速な検索はキーデータ上のハッシュアクセスによって実現される。
Forth 機能
マルチタスキングは、通常、協調的なラウンドロビン・スケジューリングが採用されるが、マルチタスキングのワードとサポートはANSI Forth標準ではカバーされていない。
ワード PAUSE は、次のタスクの配置や実行コンテキストのリストアための　現在のタスクの実行コンテキストの保存に使われる。どちらのタスクも自分自身のスタックやいくつかのコントロール変数のコピー、スクラッチエリアを持っている。タスクのスワップは単純で、効率的である。その結果、Forth マルチタスクは Intel 8051, Atmel AVR, and TI MSP430 のような非常に単純なマイクロコントローラでさえ有効である。
Forth 機能
その一方で、Microsoft WindowsやLinux、Unixのようなホストオペレーティングシステムのもとで実行され、ソースやデータのファイルのためにホストオペレーティングシステムのファイルシステムを利用する Forth システムもある。ANSI Forth 規格では　I/O のために使われたワードについて書かれている。他の標準的でない機能はホスト OS やウィンドウシステムへのシステムコールを発行するためのメカニズムも含み、多くはオペレーティングシステムから提供されるスケジューリングを採用する拡張を提供する。典型的には、タスク作成、一時停止、解体、および優先順位の変更のために、スタンドアロンのForthの PAUSEワードとは大きくて異なったワードのセットを持っている。
すべてのソースコードとともに十分な機能を有する Forth システムは自身をコンパイルすることができ、Forth プログラマはこのようなテクニックを普通メタ・コンピレーション (meta-compilation) と呼ぶ（ただし、この用語は普通の定義であるメタコンピレーションとは厳密には一致しない）。通常の方法はコンパイルされたビットをメモリに配置する一握りのワードの再定義である。コンパイラのワードはメモリ内のバッファエリアにリダイレクトされることができるフェッチとストアの、特別に命名されたバージョンを使う。このバッファエリアはコードバッファというより異なるアドレスから始まるメモリ領域へのシミュレートやアクセスをする。このコンパイラは対象のコンピュータのメモリとホストの（コンパイルする）コンピュータのメモリの両方にアクセスするワードを定義する。
フェッチやストア操作がコード空間に再定義されたあと、コンパイラやアセンブラなどはフェッチやストアの新たな定義を使って再コンパイルされる。これはコンパイラとインタプリタのすべてのコードの効果的な再利用である。それから、Forth システムのコードはコンパイルされるが、このバージョンはバッファに格納される。このメモリ内のバッファはディスクに書きこまれ、これをテストのために一時的にメモリにロードする方法が提供される。新たなバージョンがきちんと機能するようなら、これは以前のバージョンに上書きされる。
異なる環境のためのバリエーションが多数存在する。組み込みシステム向けには、代わりに他のコンピュータのためにコードが書かれることになるが、このテクニックはクロスコンピレーションとして知られ、シリアルポートや単独の TTL ビット越しでさえ、その上オリジナルのコンパイルするコンピュータのワード名やディクショナリの他の実行されない部分も維持する。このようなForthコンパイラのための最小の定義は　バイト単位のフェッチやストアをするワードと、実行される Forth ワード を命令するワードである。しばしばもっとも多くの時間のかかるリモートのポートへの書き込みの部分は、フェッチやストア、実行を実装するための初期化プログラムの構築であるが、多くの現代的なマイクロプロセッサ（Motorola CPU32など）は、このタスクを排除する統合されたデバッグ機能を持っている。
Forth 言語の構造
Forthの基本的なデータ構造は、「ワード」を実行可能なコードや名前のつけられたデータ構造を対応させる「ディクショナリ」である。このディクショナリは、門番（通常は NULL ポインタ）が発見されるまで最も新しく定義されたワードから最も古いワードまで進むリンクを用いた連結リストのツリーとして、メモリに展開される。コンテキストスイッチは異なる葉で開始するためにリスト検索を引き起こす。首位のメインの幹への枝のマージは最終的にルートの門番へ戻ってくるので、連結リスト検索は継続する。そこはさまざまなディクショナリになることができる。メタコンピレーションのような稀なケースでは、ディクショナリは隔離されスタンドアロンである。この効果は名前空間のネストのそれに似ていて、コンテキストに依存するキーワードのオーバーロードが可能である。
定義されたワードは一般的にヘッドとボディからなり、ヘッドは名前フィールド (NF) とリンクフィールド (LF) からなり、ボディはコードフィールド (CF) とパラメータフィールド (PF) からなる。
Forth 言語の構造
ディクショナリのエントリのヘッドとボディは、隣接していないかもしれないので別々に扱われる。たとえば、Forth プログラムが新しいプラットフォームのために再コンパイルされたとき、ヘッドはコンパイルするコンピュータに残るかもしれないが、ボディは新しいプラットフォームに行ってしまっている。組み込みシステムのようないくつかの環境によっては、ヘッドは不必要にメモリを占有する。しかしながら、もしターゲット自身が対話的なForthをサポートすることを期待されるなら、クロスコンパイラによってはヘッドをターゲット内に配置するかもしれない。
ディクショナリの厳密なフォーマットは規定されず、実装に依存する。しかしながら、いくつかのコンポーネントはほとんどいつも提示しており、しかし、厳密なサイズと順序は変わるかもしれない。記述された構造、ディクショナリエントリはこのように見えるかもしれない。
この名前フィールドはワードの名前の長さ（典型的には32バイト）を与えるプリフィックスで開始し、何ビットかはフラグ用である。それからワードの名前の文字表現がプリフィックスのあとに続く。特定のForth実装に依存するが、アラインメントのためひとつ以上の NUL ('\0') バイトがあるかもしれない。
Forth 言語の構造
リンクフィールドは以前に定義されたワードへのポインタを含む。このポインタは次に古い隣接するワードへの、相対的な変位かもしれないし、絶対的なアドレスかもしれない。
このコードフィールドポインタは　コードを実行するワードのアドレスか、パラメータフィールド内のデータか、プロセッサ直接実行するであろうマシンコードの開始のいずれかになるだろう。ワードを定義するコロンでは、コードフィールドポインタはリターンスタック上の現在の Forth 命令ポインタ (instruction pointer, IP) を保存し、ワードを実行継続するための新たなアドレスを用いてIP をロードするワードを指し示す。これはプロセッサの call/return 命令が行っているのと同様である。
コンパイラ自体は単一のプログラムではない。それはForthのワードで構成され、システムから見え、プログラマによって使用できる。これにより、プログラマは特別な目的のためにコンパイラのワードを変更できる。
名前フィールドの中にある「コンパイル時」フラグは、「コンパイル時」の振る舞いを持つワードに設定される。ほとんどの単純なワードは、コマンドラインに入力されるか、コードに埋め込まれるかにかかわらず、同じコードを実行する。これらをコンパイルするとき、コンパイラは単にコードを配置するか、ワードへのスレッドポインタを配置する。
Forth 言語の構造
コンパイル時のワードの典型的な例は、IFやWHILEなどの制御構造だ。Forthのほぼすべての制御構造およびほぼすべてのコンパイラは、コンパイル時のワードとして実装される。Ulrich HoffmannのpreForthで使用される条件付きリターンワード ?EXIT など、一部の稀な制御フローワードを除いて、Forthのほぼすべての制御フローワードは、プリミティブワードとその分岐アドレスとのさまざまな組み合わせをコンパイルするためにコンパイル中に実行される。たとえば、IFやWHILEなどのワード、およびそれに対応するワードは、BRANCH（無条件分岐）とTemplate:PreCode（スタックから値をポップし、偽の場合に分岐する）を設定する。カウンティングループの制御フローワードも同様に機能するが、カウンタと一緒に動作するプリミティブワードの組み合わせを設定する。コンパイル中に、データスタックは、制御構造のバランス、入れ子構造、および分岐アドレスの後方パッチングをサポートするために使用される。たとえば、次のスニペット：
は、定義の内部に以下のシーケンスとしてよくコンパイルされる。
Forth 言語の構造
BRANCHの後の数字は相対ジャンプアドレスを表す。LITは、データスタックに「リテラル」数字をプッシュするためのプリミティブ・ワードだ（もし関係する数値のうちのどれかが別個に定数として定義されていれば、LITと埋め込まれたデータの代わりに定数へのポインタを使用することで、より高速で短いコードがコンパイルされる。定数の代わりに他のワードが使用される場合、類似の変更が行われる）。
ワード :（コロン）は名前を引数として構文解析し、辞書にヘッダを作り（記述法はコロン記号で始まりセミコロン記号で終わるので、コロン定義, colon definition）、コンパイル状態に突入する。コンパイラは後続のワードをコンパイルしていく。このときワードが後述する即時ワードである場合は実行し、そうでない場合は実行時に呼び出されるようにコンパイルする。
ワード;（セミコロン）は現在の定義を終了し、実行状態へと復帰する。
Forth 言語の構造
システムの状態はワード [（左大括弧）及び ]（右大括弧）を用いて手動で変更させることができ、それぞれ実行状態とコンパイル状態に突入する。ANS  Forthでは、現在のインタプリタの状態はフラグ STATEから読み取ることができ、名前を引数としてとり、名前のつけられたワードのコンピレーションセマンティクスを現在の定義に追加する。Forth-83 は別々のワード COMPILE と [COMPILE] を定義し、それぞれイミディエイトでないワードとイミディエイトのワードのコンピレーションを強制する。
ワードIMMEDIATEは、直近のコロン定義をイミディエイトワードとしてマークし、そのコンパイル時のセマンティクスを解釈時のセマンティクスとして効果的に置き換える。イミディエイトワードは通常、コンパイルされるのではなく、コンパイル中に実行されるが、プログラマによってどちらの状態でも上書きできる。; は即時ワードの一例である。ANS Forth では、ワードがイミディエイトとしてマークされていても、ワード POSTPONE は名前を引つけられたワードを強制的にコンパイルする。
Forth 言語の構造
ANS Forth では、ワード :NONAME を用いて、次の;（セミコロン）までの後続のワードをコンパイルし、実行トークン (execution token) をデータスタック上に残す、無名のワードが定義できる。
ワード EXECUTE はデータスタックから実行トークンを取り出し、関連づけられたセマンティクスを実行することができる。またワード COMPILE,（COMPILE コンマ）は、データスタックから実行トークンを取り出し、コンパイルする。
ワード ' (tick) は、ワード名を引数としてとりデータスタック上のワードに関連づけられた実行トークンを返す。
Forth 言語の構造
ワード : (colon)、POSTPONE、' (tick)と :NONAME は、データスタックの代わりにユーザからの入力からそれらの引数をとる構文解析ワード (parsing words) の例である。別の例では、右括弧をまでの後続のワードを読み込んで無視し、コメントを配置するのに使われる ワード(（左括弧）がある。同様に、ワード \（バックスラッシュ）は現在の行の終端まで続くコメントのために使われる。括弧で括られるコメントは、ワードの解説においてスタック効果コメントを記述するのに使われる。 コメント中に -- を置き、その左側にはワードが利用（消費）する引数を、左端をスタックの底として順に列挙していく。-- の右側にはそのワードがスタックにプッシュする結果を、右端をスタックのトップとして列挙する。例えばワード dupは ( n -- n n ) というスタック効果コメントを記述することで、スタックの一番上にある値を引数として一つ消費し、消費したものと同じ値を二つ、スタックに戻すワードであることを説明できる。-- の左に何もなければ引数はなく、-- の右に何もなければ結果が返されることはない（スタックは必ず空になる）。( -- ) とだけ書かれているならば、引数も戻り値もない。
Forth 言語の構造
ほとんどの Forth システムにおいて、コード定義のボディはマシン語といくつかの形式のスレッデッドコードからなる。非公式の FIG 規格 (Forth Interest Group) に従っているオリジナルの Forth は、TIL (Threaded Interpretive Language) である。これは 間接スレッディング(indirect-threading)とも呼ばれ、直接スレッディング(direct-threading) と サブルーチン・スレッディング(subroutine-threading) も現在はよく使われるようになってきた。最初期のモダンな Forth はサブルーチン・スレッディングを使っており、マクロとしてシンプルなワードを挿入し、より小さく速いコードを生成するために のぞき穴的最適化 や他の最適化戦略を実行した。
ワードが変数や他のデータオブジェクトであるとき、CPはそれを作成した定義ワードに関連付けられたランタイムコードを指している。定義ワードは特徴的な"defining behavior"（ディクショナリエントリの作成に加え、もしかしたらアロケートとデータ領域の初期化をする）を持っており、この定義しているワードによって構築されたワードのクラスのインスタンスの振る舞いの定義もする。たとえは、
VARIABLE
初期化されていないものを命名する、one-cell memory location。VARIABLE のインスタンスの振る舞いはそのスタック上のアドレスを返す。
CONSTANT
値を命名する（CONSTANTの引数として指定する）。インスタンスの振る舞いは値を返す。
CREATE
位置を命名する。空間がこの場所に確保されるか、さもなくばこれは文字列か他の初期化された値を格納するためにそれがセットされることができる。インスタンスの振る舞いは、この空間の開始のアドレスを返す。
Forth は、カスタム定義の振る舞いとインスタンスの振る舞いを指定する、新しいアプリケーション特有の定義ワードをプログラマが定義できる機能もまた提供する。円形バッファ、I/Oポート上で命名されたビット、自動的にインデックス化された配列などの例がある。
これらに定義されたデータオブジェクトと同様のワードはスコープにおいてグローバルである。他の言語でローカル変数から提供された関数は、Forth ではデータスタックから提供される（しかし、Forth も真のローカル変数は持っている）。Forth のプログラミングスタイルは他の言語に比べ、ごく少数の名付けられたデータオブジェクトを使う。典型的にはこのようなデータオブジェクトは、たくさんのワードやタスク（マルチタスクの実装においては）によって使われるデータを格納するのに使われる。
Forth は型システムを持たない。したがって値の操作は全てプログラマの責任で行われる。
Forth プログラミング
Forth で書かれたワードは実行可能な形式にコンパイルされる。古典的実装は、順に実行されるワードのアドレスのリストをコンパイルする。多くの現代的なシステムは実際のマシンコードを生成する（いくつかの外部ワードの呼び出しと、適当な場所に展開された他者のためのコードを含む）。最適化コンパイラをもつシステムもある。一般的な場合、Forth プログラムは実行可能形式としてロードされたとき実行されるコマンド (e.g., RUN) を含めた、Forthプログラムのコンパイル済みコードのメモリイメージとして保存されている。
開発中、プログラマは小さなコード片を開発したときに実行およびテストするためにインタプリタを使う。そのため、ほとんどの Forth プログラマは緩やかなトップダウン設計と、単体テストと統合の繰り返しによるボトムアップ開発を支持している。
トップダウン設計では、普通まずプログラムを「語彙」へのプログラムを分割し、それらを最終的に必要なプログラムを書くための、高レベルなツールセットとして利用する。よく設計された Forth プログラムは自然言語のように読むことができ、単一の目的を達成するために用いられるだけでなく、関連する問題を解くプログラムを書くのに利用することができる。
Forth コード例
For an explanation of the tradition of programming "Hello World", see Hello world.
実装の一つとしては、
ワード CR (Carriage Return) は後続の出力を新しい行の上に表示するようにする。構文解析ワード  ." (dot-quote) はダブルクオートで区切られた文字列を読み、構文解析された文字列が実行時に表示されるように現在の定義にコードを追加する。文字列 Hello, world! からこの空白文字で区切っているワード ." は、文字列には含まれていない。これは構文解析器が ." を Forth ワードとして認識するために必要である。
標準的な Forth システムはインタプリタでもあり、同じ出力は次のコード片を Forth コンソールに入力することで得ることができる。
.( (dot-paren) は括弧で囲まれた文字列を構文解析し、これを表示するイミディエイトワードである。."と同様に、Hello, world! から空白文字で区切られた.( は文字列の一部ではない。
Forth コード例
ワード CR は表示する文字列の前にくる。慣例的に、Forth インタプリタは新規行に出力を開始しない。また、慣例により、インタプリタは直前の行の終端、okプロンプトの後で入力を待つ。他のプログラミング言語で時々そうであるような、Forth の CR にはバッファをフラッシュする暗黙の動作はない。
ここに 実行されると単一の文字 Q を発行するワード EMIT-Q の定義がある。
この定義は Q のASCII値 (81) を直接を使うことで書かれている。括弧の間の文字列はコメントで、コンパイラに無視される。ワード EMIT はデータスタックから値をとり、対応する文字を表示する。
次の EMIT-Q の再定義は、ワード[（左大括弧）、]（右大括弧）, CHAR、LITERAL  をインタプリタステートを一時的に切り替えるために使っており、文字 Q のAscii値を計算し、コンピレーションステートを返し、計算した値を現在のコロン定義に追加する。
構文解析ワード CHAR は空白で区切られたワードをパラメータとしてとり、データスタック上のその最初の文字の値を置く。ワード [CHAR] は CHAR のイミディエイトバージョンである。[CHAR]を使って、EMIT-Q の定義例は次のように書くことができる。
Forth コード例
この定義はコメントを書くために \（バックスラッシュ）を使っている。
CHAR と [CHAR]の両方は ANS Forth では事前に定義される。IMMEDIATE と POSTPONE と使って、[CHAR] はこのように定義することができる。
1987年、Ron Rivest は RC4 暗号システムを RSA Data Security, Inc. のために開発した。このコードは非常に単純で、説明を読めば大抵のプログラマは書くことができる。
それぞれすべて値の異なった 256 バイトの配列がある（訳注:これが暗号ストリームの状態であり、鍵で適当に初期化する）。
この配列が使われるときはいつも、2つのバイトが交換されることによって変更される。
この交換はカウンタ i および j によって制御され、どちらも最初は 0 である。
新しい i を取得するには 1 を加算する。
新しい j を取得するには、新しい i の位置にある配列のバイトを加算する。
Forth コード例
i と j の位置にある配列の値を交換する。
このコード（訳注:後のXORに使う値）は i と j の位置にある配列のバイトの和の位置にある配列のバイトである。
平文を暗号化したり暗号文を復号するためには、このバイトを XOR される。
配列は最初の設定によって 0 から 255 にかけて初期化される（訳注:手順の途中に書いてあるが、これは最初に行う）。
それから i と j を使う、i の位置にある配列のバイトを j に加算による新しい j とキーのバイトの取得、i と j のバイトの交換と手順は進んでいく。
最後に、i と j は 0 にセットされる。
すべての加算は 256 を法とするモジュラ演算である。
さらなる情報は、http://ciphersaber.gurus.com を参照すること。
以下の標準の Forth バージョンはコアのワードのみを使っている。
これはこのコードを検証する多くのテストのひとつである。
Forth 実装
Forth 仮想マシンは実装が単純で規格のリファレンス実装を持たないため、大量の言語実装が存在する。標準的な各種デスクトップコンピュータシステム (POSIX, Microsoft Windows, macOS) をサポートしていることに加え、これらの多くの Forth システムは各種の組み込みシステムもまた対象としている。1994年の ANS Forth 規格に準拠するさらに有名ないくつかのシステムが列挙する。
スーザフォン
スーザフォン（英: sousaphone）は、アメリカの作曲家ジョン・フィリップ・スーザによって考案された、大型のバルブ式低音金管楽器である。スーザホン、スーザホーン、スーザフォーンとも。
スーザフォン 歴史
アメリカの作曲家ジョン・フィリップ・スーザが、1893年にジェームズ・ウェールズ・ペッパーにリクエストして造られた。
スーザフォン 特徴
立奏を前提として設計されており、演奏者を中心として管は大きく円形に巻かれ、大きく開いた朝顔(ベル)は演奏者の後方から立ち上がりほぼ前方または上方を向く。袈裟懸け状に一方の肩に乗せて、チューバ奏者によって演奏される。
殆どのスーザフォンは、変ロ(B♭)調でピストン式の3本のバルブを備えるが、ごく稀には変ホ(E♭)調やハ(C)調のもの、そして、4バルブのスーザフォンも見られる。
ヘリコンと呼ばれる、米海兵隊バンドなどで使われていたチューバ/低音サクソルンから改良されたもので、ヘリコンの朝顔が小さく上向きで固定されているのに対して、スーザフォンでは大きく前方ないしは上方に開き、向きを変える事ができる。この朝顔部は収納及び運搬の便宜のために取り外すことも可能な構造となっている。また、ヘリコンにはロータリー・バルブのものも存在していたが、スーザフォンでこれを採用する事はまず無い。
演奏者の体力負担を軽減するため、1960年代以降、重量のかさむ真鍮に代えてより安価かつ軽量な繊維強化プラスチック(　)で楽器本体を製作する事が多くなった。また朝顔部にはABS樹脂を用いる事も多い。樹脂製の管体は真鍮製のものに比べ音色で劣るが、スーザフォンが求められる状況においては受容可能な範囲内にある。
スーザフォン 演奏
スーザフォンはパレードやマーチングといった行進のほか、デキシーランド・ジャズなどで好んで用いられる。動きのある野外演奏を大前提として考案された楽器なので、立奏用のチューバと比べ楽器の保持が容易で長時間の演奏に適し、トランペットやクラリネットなどの小型の楽器とともに俊敏な動作もできる。
スーザフォンの大きく前を向いて開いた朝顔に、団体の名称や絵などを描き入れた薄い布を強く張って使うこともよくある。隊列の後方から放たれる重低音とともに、巨大な姿による圧倒的な存在感を観衆に示す。
アーバンネットワーク
アーバンネットワーク（英語: Urban Network）は、西日本旅客鉄道（JR西日本）が1989年3月11日より使用を開始した、大阪駅を中心とした京阪神都市近郊区間（関西エリア）を指す愛称であった。「アーバンネットワーク」の定義と、旅客営業規則に規定される大都市近郊区間としての「大阪近郊区間」（新幹線を除く）や、JRが便宜的に呼称する「近畿エリア」とは完全には一致していなかった。
2006年10月21日のダイヤ改正以降、車内および駅の路線図と車内停車駅案内図が「アーバンネットワーク」の表記から「路線図」に変更されるなど、2000年代後半以降はアーバンネットワークという名称を使わず、「近畿圏」や「京阪神エリア」と表現されることが多い。また、JR西日本が発行する冊子からも2013年度以降アーバンネットワークの名称は使われていない。比較的、後年まで使用されていた月例社長会見における営業・輸送概況についても、2020年4月から「アーバンネットワーク」を「近畿圏」に改めている。ただし2021年現在も、鉄道趣味雑誌などでは使用されることがある。
JR西日本では公式に「アーバンネットワーク」の名称を使用しなくなったものの、本記事では過去に使用されていた範囲について、使用終了後の動きも含めて記述する。また路線名は、特に正式名称で記述する必要がある場合を除いて、路線愛称名がある場合はそれを使用する。
アーバンネットワーク 概要
JR西日本はJRの中では比較的経営が安定している「本州3社」の一角とされるが、関東地方に広大な通勤路線を持つ東日本旅客鉄道（JR東日本）や東海道新幹線を持つ東海旅客鉄道（JR東海）と比べると経営基盤が弱いとされた。そこで日本国有鉄道（国鉄）からの経営移管時には、山陽新幹線および大阪近郊の沿線の発展が著しい路線に経営資源を集中し、経営基盤を強化する方針が立てられた。また、「私鉄王国」と称される関西圏において、利用距離が長くなるほどJR利用の可能性が高くなるその特性や、東海道・山陽新幹線のフィーダーとしての役割とアドバンテージを一層強化するため、直通運転の拡大や、新快速を中心とした新型車両の導入・速度向上による所要時間の短縮を積極的に進めていくこととなった。
アーバンネットワーク 概要
1988年3月13日のダイヤ改正を機に、分かりやすさと親しみを感じてもらえるよう、8線区9区間に地域ごとの利用実態に合わせた愛称を制定した。1989年3月11日には京阪神都市近郊区間に「アーバンネットワーク」の愛称が与えられた。当初は、姫路駅以西や草津線・湖西線・和歌山線など一部線区は含まれていなかった。1990年3月10日には、不慣れな利用者にも分かりやすくするため、10線区に線区別（琵琶湖線・JR京都線・JR神戸線は同色）のラインカラーを導入した。大阪駅を中心点に他線区への直通列車が多く、2015年3月14日から路線記号の導入にあわせた、ラインカラーの拡充・変更（例:加古川線・姫新線のカラーを正式採用、山陰本線のラインカラー導入区間を城崎温泉駅まで延長、学研都市線のラインカラーを黄緑からJR東西線と同じ桜桃色に変更など）も行われている。
アーバンネットワーク 路線
各種路線図や駅の案内、アーバンネットワーク内の駅名標や、JR化後に登場した電車の種別幕には基本的にラインカラーと路線記号が使われている。国鉄型車両については一時期ラインカラーに準じた塗装変更も検討されたが見送られている。
主な報道機関（マスコミ）においては、朝日新聞および神戸新聞で路線愛称名が使用されている。朝日新聞は、愛称名の定着を踏まえ、2003年2月1日付けの紙面から愛称表記を原則としている。2005年4月25日に発生したJR福知山線脱線事故の際も多くの報道機関が「福知山線」を用いた中、この2社は「JR宝塚線」を用いた。
路線系統としては、東海道・山陽本線（琵琶湖線・JR京都線・JR神戸線）を軸とした「本線系統」と、大阪環状線を軸とした「南アーバン」の2つに大別されている。
アーバンネットワーク サービス
1989年3月より営業運転を開始した221系は、大きな窓や明るい車内、快適な座席（3ドア転換クロスシート）などが利用者から好評で、後継の223系とともにアーバンネットワークの象徴的な車両となった。また、4扉通勤型電車の207系をJR東西線開業準備用として学研都市線に投入し、その後JR京都・神戸線やJR宝塚線にも運転範囲を拡大、後継車である321系も同様に投入されている。さらに223系の後継として、安全性・利便性をより重視した225系が製造され、2010年12月1日より営業運転を開始した。近年、アーバンネットワーク向け車両の発注は地元の川崎重工業と近畿車輛に集中しており、日立製作所への発注は減少している。
2012年からはJR発足前後の車両のリニューアル工事が始まり、205系、221系、207系、223系の更新車両においてはバリアフリー対応の工事が施されている。また前述の通勤型4扉車にも大型のつり革が導入された。
アーバンネットワーク サービス
一方国鉄時代に天王寺鉄道管理局管内だった路線（その大部分が私鉄買収路線）を中心に当時から使われている車両も比較的多く、現在も国鉄型車両は大和路線・奈良線では201系・205系が使用されている。これらには接客設備を中心にリニューアルされた車両も含まれているが、車齢も高く騒音が大きい機器類や、乗り心地の比較的劣る台車を引き続き使用している。2016年に入ってから阪和線に103系・205系の置き換え用として225系5100番台が、大阪環状線に103系・201系の置き換え用として323系が新製配置された。2019年から万葉まほろば線・和歌山線（と直通運転を行うきのくに線の一部）に105系・113系・117系の置き換え用として227系1000番台が新製配置された。2020〜2023年度にかけて、225系の追加投入による221系の転用により、201系の運用を終了する予定である。
アーバンネットワーク サービス
大阪環状線 - 関西本線間の快速電車や、新快速の湖西線乗り入れなど、国鉄時代から実施されていた直通運転を、JR化後はそのネットワークを活用して一層拡大することとなり、特急列車の直通運転が開始された。1988年のなら・シルクロード博覧会を機に梅田貨物線の旅客使用を開始し、翌1989年7月22日の関西本線と阪和線を結ぶ連絡線の開通に伴って、紀勢本線の特急「くろしお」や一部の阪和線（きのくに線）快速が新大阪駅まで乗り入れを開始した。1994年6月には関西空港線の開業に合わせて京都駅 - 関西空港駅間に関空特急「はるか」の運転を開始した。
1980年代からの沿線の開発に伴う人口増加や郊外化、「のぞみ」の充実など新幹線の輸送改善を追い風に、アーバンネットワーク区間の利用客は年々増加し、ダイヤ改正のたびに利便性向上の施策がとられるようになった。1991年9月には北陸本線の田村駅 - 長浜駅間が直流化されて新快速が長浜駅まで運転されるようになった。1995年の阪神・淡路大震災では、いち早くJR神戸線が全線復旧し、利用客の増加に拍車をかけた。また、各線で新駅の設置や複線化等の輸送力増強工事が進められた。
アーバンネットワーク サービス
運転系統の充実・既存線相互の直通運転に加え、1997年3月8日にはJR東西線が開業、2008年3月15日にはおおさか東線の南部分が開業し、大和路線からの直通列車も登場した。このおおさか東線は北部区間が2019年3月16日に開業、さらに2023年3月18日の大阪駅（うめきたエリア）地下ホームの開業もあり、上記私鉄各線と相互に利用が可能なエリアの拡大を含めた利便性の向上とネットワークの拡大は今後も続く予定である。
所要時間短縮を意識しすぎた余裕の少ない運行ダイヤは、わずかの事象で大きなダイヤの乱れにつながることとなった。また、直通運転の拡大はダイヤの乱れの影響を広範囲に及ぼすこととなった。2002年11月6日、塚本駅 - 尼崎駅間で鉄道人身障害事故（消防隊員の死傷事故）が発生した際、安全の確認より列車運行を優先させたとして批判があった。さらに2005年4月25日の福知山線列車脱線事故では、余裕のないダイヤが乗務員に過度のプレッシャーをかけているのではないかと大きく批判を浴びることになったため、その後のダイヤ改正で余裕時間や駅停車時間が見直され、所要時間が増加している。特に翌2006年3月18日のダイヤ改正では新快速の所要時間が運転開始以来初めて延びることとなった。
アーバンネットワーク サービス
天王寺駅構内の阪和短絡線の複線化（2008年3月15日完成）などダイヤの安定性を高める施策や、保安装置の拡充などが今後も引き続いて進められることになっている。
列車指令所による列車制御の一元化に合わせて、旅客案内の拡充なども進めている。
アーバンネットワーク サービス
アーバンネットワーク内の各路線では、1997年3月8日のダイヤ改正以降、駅の発車標・列車の行先表示や放送などで方面と行先を併記した「○○方面△△」（「姫路方面網干」「宝塚方面篠山口」など）と案内される。これは新幹線からの乗り継ぎ客など、地名に馴染みのない利用客に配慮したもので、JR東海との共同使用駅となっている米原駅でも、同社の東海道本線（米原駅以東）で運転される列車のうち名古屋駅以東へ運転される列車に対して「名古屋方面○○」と案内している。また、京都駅以東の敦賀方面や東西線を介する直通運転など経路が複数存在する場合は、経由路線を明記した「XX線経由◇◇」（「湖西線経由敦賀」「東西線経由新三田」など）といった表記も用いられている（JR東西線関連以外の本格実施は1999年5月10日以降）。また、各駅から京都・大阪・神戸など主要駅への先着列車の表示や放送を行っている。ただ、車両表示や「〇〇方面」と行先に表示する基準が曖昧である。例えば、車両表示に関しては、「神戸方面加古川」は表示されても「宝塚方面新三田」は表示されず、一般的には馴染みの薄い「須磨」や「西明石」などは「神戸方面須磨」「神戸方面西明石」とは案内されない。
アーバンネットワーク サービス
2015年3月のダイヤ改正から路線記号を導入。吹田総合車両所（日根野支所・奈良支所）の所属車両を皮切りに、2017年までに路線記号対応の種別幕に交換され、他路線へ直通運転する列車の場合、直通運転先の路線記号およびラインカラーを掲出するようになった。
発車標は発光ダイオード(LED)式を標準とし、一部プラズマディスプレイ式が採用され、ほとんどの駅に設置されている。
発車標には一部の駅と特急・急行列車を除き、乗車位置が表示される。ホームには目安となる印（△、↑、○、◇など）と数字が書かれている（例：「△ 1 △」）。扉数や編成数などで乗車位置が変わるので、乗客はこれに表示された位置に並ぶ方式となっている（表示形式の例:「△1〜12」「白○1〜7」）。列車が接近すると、到着・通過を知らせる接近表示が点滅するものもある。なお、運行管理システム導入線区や自動進路制御装置 (SRC) 区間など一部の駅では、列車に遅延が発生した場合には遅延時間（「遅れ約○分」「Delay ○ minutes behind」、2時間以上の遅れの場合は「遅れ120分以上」「Delay 120 minutes over」）が表示される。大幅なダイヤ乱れ時には次の列車が到着するまでの時間が表示（「到着まで約○分」「○ min. until arrival」）されることもある。
アーバンネットワーク サービス
阪和線（羽衣線区間を除く）／琵琶湖線・JR京都線・JR神戸線・赤穂線（相生駅 - 播州赤穂駅間）／大阪環状線・JRゆめ咲線・大和路線・おおさか東線／学研都市線・JR東西線・JR宝塚線（尼崎駅 - 新三田駅間）／湖西線（山科駅‐近江今津駅間）ではアーバンネットワーク運行管理システムと連動した表示となっている。また、次に到着する列車の現在位置表示も行われている。
2003年から一部の駅の改札口・コンコース付近にプラズマディスプレイを設置していたが、2008年4月1日から「異常時情報提供システム」に移行している。普段は自社の宣伝や運行情報などを表示しているが、異常時には近畿総合指令所が運転見合わせ区間や振替輸送区間などの情報を一括入力して路線図形式による案内を行っている。情報を提供する区間はアーバンネットワークの路線区と東海道・山陽新幹線・九州新幹線である 。2016年9月8日からは、表示路線が拡大され、路線記号・ラインカラーに対応したものに更新されている。
アーバンネットワーク サービス
221系・207系・223系および205系体質改善車にはLED式の旅客案内装置を、321系・225系には19インチの液晶ディスプレイ (LCD) タイプの案内装置を、323系には17インチのワイドLCDを、223系1000・2000番台改造車には20.7インチのワイドLCDをそれぞれ設置しており、号車表示（207系未更新車を除く）・行先・停車駅・次駅案内や自社PRなどを行っている。また、321系・225系・323系および223系1000・2000番台改造車ではLCDで広告・生活情報・ニュース・天気予報（WESTビジョン）と文字による運行情報を表示している。ダイヤ乱れによる運用変更や表示不具合などの場合は種別・行先のみを表示するか、JR西日本のロゴが表示される。
なお、JR京都・神戸線で運用される223系330両について、2021年度までにLCD式案内装置への交換が進められた。
駅の利便性向上にも重点が置かれており、1997年のJR東西線開業を機に京阪神エリア全駅で自動改札機および磁気券の本格導入を開始した。1999年にはJスルーカード（ストアードフェアシステム）を導入、2003年からはICカード「ICOCA」を導入している。さらに2006年から「PiTaPa」との相互利用を開始するなど他社ICカードとの相互利用も行い、利便性向上を進めている。なおICOCAの普及に伴い、Jスルーカードは2009年3月1日をもって自動改札機および自動精算機での利用を終了し、自動券売機での支払いにのみ使用可能となった。ICOCAの利用可能駅は関西圏内でも年々拡大しており、2025年現在では福知山地区の特急通過駅、加古川線西脇市駅 - 谷川駅、姫新線の播磨新宮駅以西以外では利用可能になっている。（但し関西本線柘植駅 - 加茂駅、和歌山線五条駅 - 和歌山駅、きのくに線紀伊田辺駅以南の特急停車駅では車載型IC改札機での利用になる）。但しpitapaとの利用可能範囲とは完全に一致していない。2018年10月からは、「昼間特割きっぷ」に代わるサービスとして、利用回数や時間帯に応じて運賃割引が受けられる「ICOCAポイントサービス」が開始された。
なお、ICOCAについてはアーバンネットワーク外・近畿エリア外でも順次導入されている。
主に痴漢などの車内での迷惑行為を防止するために、2002年から関西で初めて女性専用車を導入している。指定の車両および乗車位置に黄緑色を用いた案内ステッカーが、ドア窓に小型の鏡ステッカー（ガラス貼付面は青色）が貼付されていたが、2011年春から案内ステッカーが大型化され、ピンク色が用いられるようになった。当初は4扉車のみに導入されていたが、2016年以降は3扉車にも女性専用車が設定されるようになった。なお、ダイヤ乱れ等の理由で、女性専用車の設定が解除される場合がある。
導入時期
2002年7月1日より、大阪環状線の平日の始発から9時までの周回列車および、学研都市線の平日の始発から9時までに京橋駅に到着する下り列車の最後部車両を女性専用車として試験的に導入し、同年10月1日から本格的に導入した。その後、同年12月2日からはJR京都線・JR神戸線・JR宝塚線などにも拡大して、平日の17時から21時までの時間帯についても女性専用車の設定を行い、2004年10月18日からは大和路線・和歌山線・阪和線にも導入した。さらに2011年4月18日からは、JRゆめ咲線にも女性専用車を導入するとともに、平日・休日にかかわらず毎日、始発から終電まで女性専用車が設定されるようになった。
アーバンネットワーク 安全対策
旅客の転落防止のため、一部の駅にホーム柵として通過線ホーム柵・可動式ホーム柵・昇降式ホーム柵が設置されている。
通過線ホーム柵は、JR京都線・JR神戸線・阪和線の一部の駅ホームにおいて、通常は列車が停車しないのりばに設置されている。異常時など臨時停車を行う際には、駅係員の操作により手動でホーム柵を開閉できる。
可動式ホーム柵は、全列車4扉車で運転されるJR東西線の北新地駅・大阪天満宮駅での設置を皮切りに、JR京都線や大阪環状線など停車する車両の扉数が統一されているホームへの設置が進められている。また、扉の数や位置の異なる様々な車両に対応できるホーム柵として、2013年12月5日から2014年3月まで桜島駅において昇降式ホーム柵が試行された。これは、ロープが支柱に固定されて支柱そのものが昇降する仕組みで、2014年12月13日から六甲道駅で試験が行われた。このホーム柵は高槻駅の新設ホームに設置され、2016年3月26日のダイヤ改正から使用を開始した。
アーバンネットワーク 安全対策
夜間での客扱い中に、最後尾の車掌から最前部付近の乗降が確認しづらい状況を解消するため、一部の駅において、夜間視認性向上装置 (TC-PAC) が設置されている。乗降客が装置からの光源を遮ることにより、車掌に旅客の存在が分かる仕組みとなっている。
アーバンネットワークの高密度線区を対象に、従来より高度な信号保安方式であるATS-P型の整備を進めている。なお、導入はすべての信号機にATS-P形の地上子を設ける全線P方式と、場内信号機・出発信号機および一部の閉塞信号機のみATS-P形の地上子を設けることで簡素化した拠点P方式の2つがある。アーバンネットワークでは、和歌山線・万葉まほろば線・赤穂線・北陸本線・和田岬線・関西本線・紀勢本線以外の線区にATS-P型が整備されている。
アーバンネットワーク プロジェクト
駅を核としたまちづくりへの寄与、利便性の向上および複数路線を利用可能とすることによる鉄道の利用機会創出のため、新駅の設置を進めている。以下、2004年以降のアーバンネットワークでの新駅開業状況を記す。
学研都市線京橋駅からJR宝塚線尼崎駅までの12.5kmを結ぶJR東西線が1997年3月8日に開通し、同線を介して関西文化学術研究都市のある京阪奈丘陵と三ノ宮・神戸方面や神戸三田国際公園都市がある北摂・北神地域の直通運転が開始された。
梅田貨物駅周辺の大阪駅北地区は「都心に残された最後の一等地」として大規模な再開発が進んでおり、これに合わせて大阪駅の改良工事が進められた。工事は、橋上駅舎とホームを覆うドームの新設、コンコースとホームの改良などによるバリアフリー施設の整備、新北ビル（メインテナントは三越伊勢丹）の建設、アクティ大阪の増床などで、2011年5月4日に「大阪ステーションシティ」としてグランドオープンした（大阪2011年問題も参照）。また2012年10月には桜橋口の駅ナカ施設のリニューアル（エキマルシェ大阪）が完成している。
新大阪駅ではおおさか東線整備事業に伴って改良工事が行われており、在来線改札口・コンコースの改良などが行われている。2014年3月にはコンコース内に大規模な駅ナカ施設（エキマルシェ新大阪）が一部完成した。