タイトル通り、いろんな言語でプログラミング入門のど定番、”Hello World!” をやってみる。
1.アセンブラ
環境:Alpine Linux 3.9 + yasm 1.3.0 or nasm 2.13.03 + gcc 8.3.0 (Docker)
アセンブラは、就職にあたって、当時の情報処理技術者試験2種の勉強のためにCASLをやった程度。
[hello.asm] section .text global _start _start: mov edx, len mov ecx, msg mov ebx, 1 mov eax, 4 int 0x80 mov eax, 1 int 0x80 section .data msg db 'Hello world!', 0xa len equ $ - msg
アセンブル→実行
# yasm -f elf64 hello.asm && ld -s -o hello hello.o (または) # nasm -f elf64 hello.asm && ld -s -o hello hello.o # ./hello Hello world!
2.COBOL
環境:Alpine Linux 3.9 + GnuCOBOL 3.0 + Berkeley DB 5.3.28 + gmp 6.1.2(Docker)
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. HELLO. 000300 PROCEDURE DIVISION. 000400 DISPLAY "HELLO, COBOL WORLD!". 000500 STOP RUN. 000600 END PROGRAM HELLO.
コンパイル→実行
# cobc -x hello.cbl # ./hello HELLO, COBOL WORLD!
COBOLって、行番号手書きなんやね・・・一応、cobc でコンパイルするときに、-free というオプションを付ければ、行番号なしでもOKらしい。
3.Fortran
環境:Alpine Linux 3.9 + gfortran 8.3.0(Docker)
program hello print *, 'Hello fortran World!' end program hello
コンパイル→実行
# gfortran hello.f90 # ./a.out Hello fortran World!
4.ALGOL 68
*ALGOL68を1950年代扱いにすると異論も出そうだが・・・大枠としてのALGOLの誕生が1958年なので。
環境:Alpine Linux 3.9 + Algol 68 Genie 2.8.4(Docker)
BEGIN printf(($gl$,"Hello, algol world!")) END
実行
# a68g hello.alg Hello, algol world!
5.LISP(Common Lisp)
*これも、Common Lispを(以下略)
環境:Alpine Linux 3.9 + roswell 19.4.10.98(Docker:frolvlad/alpine-glibc ベース)
* (format t "Hello World!~%") Hello World! NIL