(21) Smalltalk
オブジェクト指向言語として有名なSmalltalk。
流石にこれはgnu版のコンパイラもrpmでしっかりありました。
コードは、wikipedia版とこちらのページ版と2種類用意しました。
'hello,world!' printNl
Transcript show: 'hello,world!'
どちらも以下の実行方法で正しく動きます。
% gst hello.sm
しかし上記のコード、同じファイルで2行に続けて書くとエラーが起きます。どういう仕組みなんでしょうね?
解決しました。Smalltalkは文末をピリオドで表現するようです。
'hello,world!' printNl.
Transcript show: 'hello,world!'
上記コードで問題なく動きます。
(thx! id:sumim )
(22) Decartes
会社の先輩に教えてもらった言語。
公式サイトを読むと、以下のようなことが書かれています。
デカルト言語は、論理的な推論を中心とした言語として設計しました。
狙っているのは、強力な論理的推論・探索機能があり、関数プログラミング機能を持つオブジェクト群が、人間に近い構文のI/Fによって、並列にマルチコアで動く知的なシステムです。
http://sourceforge.jp/projects/descartes/releases/
……よくわかりません。
まあHello,worldぐらいならきっと動くでしょう。
上記サイトからソースをDL、コンパイルしてインストールします。
% ./configure
% make
% make install
make 時にワーニングの山が出ていましたが……。とりあえず置いておきます。
次はコードの用意。
http://sourceforge.jp/projects/descartes/wiki/ManOperation
ちゃんとHello,worldのコードも、コマンドの使い方も書かれています。
?
;
descartes hello.car
(23) Ada
世界最古の女性プログラマーの名前にちなんでうんたらかんたら……でしたっけ。
この言語も相当古いはずですが……さて、コンパイラは……。
ありました。GNATというのですね。
% yum install gcc-gnat
コードを書いてみます。
こちらのサイトを参考にして、Hello,worldを。
with Ada.Text_IO; procedure Hello is begin Ada.Text_IO.Put_Line("hello,world!"); end Hello;
コンパイルしてリンクして……。
% gcc -c hello.adb
% gnatbind -x hello.ali
% gnatlink hello.ali
% ./hello
で、実行できます。
(24) Visual Basic
せっかくMono入れてるのに、VB動かしてませんでした。
……と思ったら、標準で入っていませんでした。
インストールします。
% yum install mono-basic
では早速コードを。wikipediaからとってきます。
Public Class HelloWorldApp Shared Sub Main() System.Console.WriteLine("Hello, World!") End Sub End Class
私の記憶の中のBASICは行番号書いてあって、FORTRANっぽい感じがしていたのですが、VBって全然違うんですね。
見た目ほとんど最近のオブジェクト指向のスクリプト言語と変わらないです。
しかしコンパイルして実行する必要があります。
まずはコンパイルを。
色々と恐ろしいです。
- オプション指定で、最初の一文字にスラッシュ使わないといけない -> ルートディレクトリの上書きが怖い
- アウトプットファイルには必ず拡張子つけないといけない
こんな機会じゃなきゃ触りたくないですこのコマンド。
で、実行。これもjavaやC#と同じように、実行形式で保存できないようです。
% mono hello_vb.exe
(25) Pascal
Free Pascal という実装があるのでインストールします。
% yum install fpc
コード。wikipediaより。
program hello; begin Writeln('hello,world!'); end.
コンパイル。
% fpc -ohello_p hello.p
(26) Objective-C
Objective-C というとMaxOSXの言語というイメージが強くなってしまいましたが、gccでも余裕でコンパイルできるんですね。
なら何もインストールせずとも……と思ったら、やっぱり必要なパッケージがありました。
% yum install gcc-objc
wikipediaより、オブジェクト指向バージョンのHello,worldのコードをとってきます。
#import <stdio.h> #import <objc/Object.h> @interface Hello : Object { } - hello; @end @implementation Hello - hello { printf("hello,world!\n"); } @end int main(void) { id obj; obj = [Hello new]; [obj hello]; [obj free]; return 0; }
長い……。
コンパイルします。
man にも書いてますが、Objective-C をコンパイルするときは -lobjc をつけないといけないみたいです。
(エラー出てコンパイルできない)
% gcc -lobjc -o hello_m hello.m
(27) x86アセンブラ
いよいよアセンブラの世界に。
実行方法や記述形式が幾通りもあるので、どれを使ったらいいかわかりません。
今回はこちらのページを参考に、gcc でコンパイルしてみることにしました。
コード。
.text _start: .globl _start mov $12, %edx mov $message, %ecx mov $1, %ebx mov $4, %eax int $0x80 xor %ebx, %ebx mov $1, %eax int $0x80 message: .ascii "hello,world!\n"
コンパイル。
% gcc -o hello_s -nostdlib -static hello.s
(29) SISAL
プログラミングを独習するには10年かかるで紹介されていた、並列処理を行える言語の一つ。
コンパイル環境をとってきます。
http://sourceforge.net/projects/sisal/
% ./configure
% make
make だけで勝手に /usr/localに放り込むので注意。
コードを書きます。チュートリアルちょっと読んだだけじゃHello,worldの書き方がわからなかったので、結局別のサイトのコードに頼ることに。
http://www.ntecs.de/old-hp/uu9r/lang/html/sisal.en.html
define main
function main(returns array [Character])
"Hello World"
end function
コンパイル。
% sisalc -o hello_sis hello.sis
(30) Prolog
ラストは、先ほどのプログラミングを独習するには10年かかるからもう一つ、宣言的記述をサポートする言語として紹介されていたPrologで締めるとしましょう。
環境をとってきます。gprologよりSWI-prologの方がいいという話もあるようですが、今回はhello,world動かすだけですのでgprolog使います。
% yum install gprolog
コンパイルの仕方がわからなかったので、インタプリタの上で動作。
:- write('hello,world!').