Archive for 1月, 2012
-
Hello, Lua World!
Posted on 1月 13th, 2012 by cx20
Lua
Lua は軽量で速さに定評のあるスクリプト言語である。名前はポルトガル語で月を意味する。
構文は Pascal に似ており、他のスクリプト言語(Python や Ruby 等)よりも高速に動作するという特徴を持つ。
C言語の組み込み言語として設計されており、ゲーム開発におけるイベントスクリプトやヤマハのルータの組み込み言語等にも利用されている。また、最近、iPhone SDK の利用規約が少し緩くなったことにより、iPhone アプリの開発に利用されるケースも増えている。
ソースコード
実行方法(スクリプトファイルを指定して実行)
$ lua hello.lua
実行方法(実行権限を付与して実行)
$ chmod +x hello.lua $ ./hello.lua
コンパイル&実行方法(バイトコードにコンパイルして実行)
$ luac -o hello.luac hello.lua $ lua hello.luac
実行結果
Hello, Lua World!
-
Hello, OCaml World!
Posted on 1月 12th, 2012 by cx20
OCaml
OCaml は関数型言語 ML の方言の一つである。フランスの国立INRIA研究所で開発された。名前の由来は Objective Caml より。
スクリプトとして動作する他、コンパイルすることも可能である。コンパイルされたネイティブコードは実行速度が速いことで定評がある。
ソースコード
実行方法(スクリプトファイルを指定して実行)
$ ocaml hello.ml
実行方法(実行権限を付与して実行)
$ chmod +x hello.ml $ ./hello.ml
コンパイル&実行方法(バイトコードにコンパイルして実行)
$ ocamlc -o hello hello.ml $ ocamlrun hello
コンパイル&実行方法(ネイティブコードにコンパイルして実行)
$ ocamlopt -o hello hello.ml $ ./hello
実行結果
Hello, OCaml World!
-
Hello, Scheme World!
Posted on 1月 11th, 2012 by cx20
Scheme
Scheme は Lisp の方言の一つ。名前の由来は「策略家(schemer)」から。多くの言語仕様を取り入れた Common Lisp に対して、Scheme は必要最小限の言語仕様となっている。
Scheme の実装は多数存在するが主なものとして、Gauche、GNU Guile、MIT Scheme などがある。
以下のコードは、Gauche 及びに対話シェル gosh によるサンプルである。
Gaucheはフランス語で「ねじれた、左」の意味。
ソースコード
実行方法(スクリプトファイルを指定して実行)
$ gosh hello.scm
実行方法(実行権限を付与して実行)
$ chmod +x hello.scm $ ./hello.scm
実行結果
Hello, Scheme World!
-
Hello, Clojure World!
Posted on 1月 10th, 2012 by cx20
Clojure
Clojure は Lisp の方言の一つ。Java VM 上で動作する。名前の由来は Closure + java から。
Lisp の構文が使える他、Java のライブラリが利用できる。
ソースコード
ソースコード(Java ライブラリを使用した場合)
実行方法(スクリプトファイルを指定して実行)
$ clj hello.clj
実行方法(実行権限を付与して実行)
$ chmod +x ./hello.clj $ ./hello.clj
実行結果
Hello, Clojure World!
-
Hello, Jython World!
Posted on 1月 9th, 2012 by cx20
Jython
Jython はオブジェクト指向スクリプト言語 Python の Java 実装である。Jim Hugunin 氏によって開発された。
Python の構文が使える他、Java のライブラリが利用できる。
なお、Python の .NET 実装である IronPython を開発したのも Jim Hugunin 氏である。
ソースコード
ソースコード(Java ライブラリを使用した場合)
#!/usr/bin/env jython from java.lang import System System.out.println("Hello, Jython World!")
実行方法(スクリプトファイルを指定して実行)
$ jython hello.py
実行方法(実行権限を付与して実行)
$ chmod +x hello.py $ ./hello.py
実行結果
Hello, Jython World!
-
Hello, JRuby World!
Posted on 1月 8th, 2012 by cx20
JRuby
JRuby はオブジェクト指向スクリプト言語 Ruby の Java 実装である。
Ruby の構文が使える他、Java のライブラリが利用できる。
また、JRuby のスクリプトは Java クラスとしてコンパイルすることもできえる。
ソースコード
ソースコード(Java ライブラリを使用した場合)
#!/usr/bin/env jruby require 'java' import 'java.lang.System' System.out.println('Hello, JRuby World!')
実行方法(スクリプトファイルを指定して実行)
$ jruby hello.rb
実行方法(実行権限を付与して実行)
$ chmod +x hello.rb $ ./hello.rb
コンパイル&実行方法(バイトコードにコンパイルして実行)
$ jrubyc hello.rb $ jruby hello.class
コンパイル&実行方法(Java クラスとして実行)
$ jrubyc hello.rb $ java -cp $JRUBY_HOME/lib/jruby.jar:. hello
実行結果
Hello, JRuby World!
-
Hello, Scala World!
Posted on 1月 7th, 2012 by cx20
Scala
Scala はオブジェクト指向言語と関数型言語の特徴を組み合わせた比較的新しいプログラミング言語である。Java VM 上で動作する。Java の後継を担うものとしても注目を浴びている。
並行プロセス処理が優れているということで Twitter のメッセージ基盤(API の実装)にも採用されている。
なお、Java VM で動作するスクリプト言語としては、他にも、Groovy、JRuby、Jython、Clojure 等がある。
ソースコード
object Hello { def main(args: Array[String]) { println("Hello, Scala World!") } }
実行方法(スクリプトファイルを指定して実行)
$ scala Hello.scala
コンパイル&実行方法(バイトコードにコンパイルして実行)
$ scalac Hello.scala $ scala Hello
コンパイル&実行方法(Java クラスとして実行)
$ scalac Hello.scala $ java -cp $SCALA_HOME/lib/scala-library.jar:. Hello
実行結果
Hello, Scala World!
-
Hello, Java VM Assembler World!
Posted on 1月 6th, 2012 by cx20
Java VM Assembler
Java VM アセンブラは Java VM の中間コード(バイトコード)を生成するアセンブラである。
主要な Java VM アセンブラとしては、Jasmin 等がある。
ソースコード
.class public Hello .super java/lang/Object .method public ()V aload_0 invokespecial java/lang/Object/()V return .end method .method public static main([Ljava/lang/String;)V .limit stack 2 getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Hello, Java VM World!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V return .end method
上記コードは以下の Java のソースに対応する。
クラスファイルを tinapoc と言った逆アセンブラや javap で逆アセンブル(javap -c Hello)することでアセンブリコードを得られる。public class Hello { public static void main( String[] args ) { System.out.println( "Hello, Java VM World!" ); } }
コンパイル&実行方法(Jasmin)
$ java -jar jasmin.jar Hello.j $ java Hello
実行結果
Hello, Java VM World!
-
Hello, CASL World!
Posted on 1月 5th, 2012 by cx20
CASL
CASL は情報処理技術者試験の為に仕様策定されたアセンブリ言語である。仮想計算機 COMET 上で動作する。
2001年より仕様改訂され現在は COMMET II / CASL II が利用されている。ソースコード
コンパイル&実行方法(YACASL2)
$ casl2 -Ohello.o hello.cas $ comet2 hello.o
コンパイル&実行(JPA CASL II シミュレータ)
$ java -jar casl2.jar hello.cas $ java -jar run.jar hello.obj
実行結果
Hello, CASL World!
-
Hello, MASM World!
Posted on 1月 4th, 2012 by cx20
MASM
MASM はマイクロソフト社製のアセンブリ言語である。正式名称は Microsoft Macro Assembler。Visual C++ に付属している。
ソースコード(32bit版)
.MODEL flat EXTRN _printf:PROC _DATA SEGMENT msg DB 'Hello, MASM World!', 0aH, 00H _DATA ENDS _TEXT SEGMENT _main PROC push OFFSET msg call _printf add esp, 4 xor eax, eax ret 0 _main ENDP _TEXT ENDS END
ソースコード(64bit版)
EXTRN printf:PROC _DATA SEGMENT msg DB 'Hello, MASM World!', 0aH, 00H _DATA ENDS _TEXT SEGMENT main PROC sub rsp, 40 lea rcx, OFFSET msg call printf xor rax, rax add rsp, 40 ret 0 main ENDP _TEXT ENDS END
上記コードは以下のC言語のソースを VC++ でアセンブリコード出力(cl /FA hello.c)したものに相当する。
#include <stdio.h> int main( int argc, char* argv[] ) { printf( "Hello, MASM World!n" ); return 0; }
コンパイル&リンク方法(MASM 32bit版)
C:¥> ml -c hello.asm C:¥> link hello.obj libcmt.lib
コンパイル&リンク方法(MASM 64bit版)
C:¥> ml64 -c hello64.asm C:¥> link hello64.obj libcmt.lib
実行結果
Hello, MASM World!