Dockerで開発環境 ALGOL68編

またまた古い言語で、今度はALGOLにチャレンジ。本当に作れるかどうか確証はない。

流石に最近の現場で使われることはまず無いであろう、歴史上の言語だが、ブロック構造や入れ子、という記法を初めて導入した言語なので、いろんな言語の『ご先祖様』とは言えるだろう。

流石に手に入るような開発環境はないかなと思って調べてみたら、意外にもそこそこあるようだ。

ただ、一口にALGOLとひとまとめにしてしまうと何かと問題があるようで、実装によってかなり仕様に差異があるようで、Wikiで紹介されてるHello Worldだけを比べてみても、結構な差がある。(ざっくり分けても、ALGOL 58、ALGOL 60、ALGOL 68 とあり、特にALGOL 60は非常に派生版が多いようだ)

とはいえ、フリーで使えて、Linuxで動いて・・・となると「Algol 68 Genie」の一択か。

公式:https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html

こちらにはソースが公開されているので、それを落としてきてビルド&インストールとなるようだ。

一部ディストリビューションはパッケージもある模様。(Debian、Ubuntu、Arch Linux)

流石にAlpine用はないようだ。

Alpine にbuild-base をインストールして、wget でソースを落とし、ビルドしてみると、すんなりビルドは通って、インストールできた。

Dockerfileにすると、こんな感じ。

## Dockerfile
FROM alpine

WORKDIR /home/algol
RUN set -x && \
    apk update && \
    apk add --no-cache build-base && \
    wget https://jmvdveer.home.xs4all.nl/algol68g-2.8.4.tar.gz && \
    tar xvf algol68g-2.8.4.tar.gz && \
    ./configure && make install

CMD ["/bin/sh"]

## docker-compose.yaml
version: '3'
services:

  algol:
    build: .
    container_name: algol
    volumes:
      - .:/home/algol
    tty: true

Hello world も特に問題なく実行できました。

Algol 68 Genieの場合、”a68g [filename]”となるのだが、コンパイルして実行ファイルが出来るわけではないようで、コンパイル型なのか、インタプリタ型なのかすらも、実装によって異なる言語のようだ。

タグ: #
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA