読者です 読者をやめる 読者になる 読者になる

どんなにへたくそでも一日後にはプログラミングが上手くなる方法(3/4)

雑記

1 / 2 / 3 / 4

(11) Java

3年前にちょっと触ったっきりのJavaです。
gcjを使う場合と、openjdkを使う場合の二通りで実行。

コンパイル環境をゲット。

% yum install gcj

class Hello{                                                                                        
    public static void main(String[] args){                                                         
        System.out.println("hello,world!");                                                         
    }                                                                                               
}

コンパイル方法

% gcj -o hello_java --main=Hello Hello.java

実行方法

% ./hello_java

次、openjdkを使う場合。

コンパイル環境のインストール。

% yum install java-1.6.0-openjdk-devel

ソースは同じものが使えるので省略。

コンパイル。

% javac Hello.java

実行。

% java Hello

こちらを使った方が、Web上にドキュメントが充実してるし簡単ですね。

(12) Haskell

ここから先は未知の領域です。

まず手始めに、確かF10から実行環境が採用されたというHaskellから。
書き方はもちろんのこと、実行方法や必要なパッケージすらわかりません。

とりあえずghcはあったので実行は可能なようです。

とりあえずこのあたりを参考に、ハロワを作ってみます。

main = putStr "hello,world!\n"

関数型言語と聞いていましたが、モジュールがあったりメソッドがあったり、Rubyみたいでとっつきやすそうですね。

コンパイルは……gccの一部だし、同じでいいのかな。

% ghc -o hello_haskell hello.hs

うまくいきました。

(13) Arc

ポールグレアムの生み出したArcに手を出してみます。

そろそろFedora標準のrpmじゃ対応できなくなってきました。

http://arclanguage.org/install:こちらのページを参考にインストール作業を行います。

本当はFedora標準のパッケージにもplt-schemeというのがあるのですが、上記リンク先の指示通りにします。

まずmzschemeのインストール。

http://download.plt-scheme.org/mzscheme/v372.html

なんか古そうなバイナリだし、ソースからコンパイルします。

% ./configure --prefix=/usr/local/plt --enable-shared
% make
% make install

……この時点で気づいたのですが、よく考えたらschemeだって言語の一つなんですよね。後でハロワ書いてみましょう。
次にArc本体を落とします。

http://ycombinator.com/arc/arc3.tar

で、これをコンパイル……するのかな?

% mzscheme -m -f as.scm

あ、コンパイルじゃなくて、このままArcのプロンプトが起動するんですね。

さすがにマイナーなのか、wikipediaにすらハロワの書き方がありません。
チュートリアルにHello,worldを書くためのコードがあったのでそれを流用することにします。
……が。

Now that you've learned the basics of Arc programming, the best way
to learn more about the language is to try writing some programs
in it. Here's how to write the hello-world of web apps:

arc> (defop hello req (pr "hello world"))
#
arc> (asv)
ready to serve port 8080

If you now go to http://localhost:8080/hello your new web app will
be waiting for you.

おお、2行でWebサーバが立ち上がる。

試しに書いてみると……。

動いちゃいました。

Arcすごいですね。

まあWebアプリケーションというにはあまりにシンプルすぎますが、たった2行でWeb経由でのアクセスを可能にしてしまうというのは面白いですね。

(14) Scheme

せっかく登場いただいたことだし、SchemeでもHello,worldしてみましょう。

前述の通りplt-schemeというパッケージがあるのですが、既にmzschemeをインストールしていますので、そちらを使うことにします。

(display "hello,world!")                                                                            
(newline)

実行方法

% mzscheme -r hello.scm

(15) COBOL

もうちょっとメジャーな言語に触りたかったので、次はCOBOLにします。

コンパイル環境をゲット。

% yum install open-cobol

こちらのページを頼りに、COBOLでのハロワを書いてみます。

IDENTIFICATION DIVISION.                                                                            
PROGRAM-ID. hello.                                                                                  
PROCEDURE DIVISION.                                                                                 
DISPLAY "hello,world!".                                                                             
STOP RUN.

先述のページに記載してあるままのオプションだとコンパイルできないので、-x(実行形式で出力)、-free(自由書式)を付加してコンパイルします。

% cobc -x -free -o hello_cobol hello.cob

(16) C#

RMSの大嫌いな、Monoをとってくる必要があります……と思ったら既に入ってますね。

ここによると、MCSというC#コンパイラがあるようです。

確かに、manもありますね。

では早速。
Linux上でのC#の入門ドキュメントが全く見当たらないので、MacOSX上でのMonoの実行記事を参考にさせていただきました。

class Hello {                                                                                       
 public static void Main() {                                                                        
  System.Console.Out.WriteLine("hello,world!");                                                     
 }                                                                                                  
}

ソースはWikipediaからの丸パクリです。


コンパイル。

% mcs -out:Hello.cs hello.cs

実行。

% mono Hello.cs


これでようやく15言語終わりです。

(i) なでしこ

つまづきました。

まさかWindows専用だとは。

(2i) ひまわり

ひまわりって、なでしこの前バージョンだったんですね。

(17) Whitespace

ネタプログラミング言語の世界に突入します。

まずは実行環境を入手。

http://compsoc.dur.ac.uk/whitespace/index.php

さて、Hello,worldを書くとしますか……。

…………。

難しすぎます。
とてもパッと手を出せるような代物じゃないです。
まず、空白文字を可視化できるエディタを用意する必要がありますし、見えたら見えたですぐ読めるようになるわけでもなく一つ一つ解読が必要です。

さすがに厳しいのであきらめました……。

コード例をそのまま使います。

http://compsoc.dur.ac.uk/whitespace/hworld.ws

読めます? これ。


とりあえず実行。

% wspace hworld.ws

(18) Brainfuck

ネタプログラミングその2。

まずはコンパイル環境を。

オリジナルのBrainfuckAmiga専用なので、Linuxでは使えません。

nbfcを使います。

http://esoteric.sange.fi/brainfuck/impl/compilers/

ここからnbfc-*.tar.gzを落とします。(現時点で最新版は0.1)。

落として展開したら、config.hを編集。
javacとgccのパスを自分の環境に合わせます。

@@ -1,2 +1,2 @@
 #define CC     "/usr/bin/gcc -g -O4"
-#define JAVAC  "/usr/bin/guavac"
+#define JAVAC  "/usr/bin/javac"

さらに、bf.hを編集。
stdio.hをincludeします。

@@ -1,3 +1,4 @@
+#include <stdio.h>
 void emmit(char * s);
 extern int yyparse();
 extern FILE * yyin;

後はmakeするだけです。

次はソースコードの作成。
今回もWikipediaからそのまま持ってきました。

+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.
------------.<++++++++.--------.+++.------.--------.>+.

これでもWhitespaceに比べて数段マシに見えるから不思議です。

コンパイル。

% nbfc -o hello_bf hello.b

後は実行するだけです。

(19) Grass

ネタプログラミング特集、お次は国産のGrass。

http://www.blue.sky.or.jp/grass/doc_ja.html

Rubyインタプリタでやってみます。

grass.rbをDLします。

次はコード。

……関数型プログラミングが全くできないことを痛感。

あきらめます。

id:rst76さんがhello,worldのコードを書いているのでそのまま使わせてもらいます。

wvwwWWwWWWwvWwwwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwWwwwwwwwwwwwwWWWWwWWWWWWWwWWWW
WWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWwwWWWWWWWWWWWWwWWWWWWWWWWwwWWWWWWWWWWwwwwwwWWW
WWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWwwWWWWWW
WWWWWWWWWWWwwwwwWWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWW
WWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwWWwwwwwwwWWWwwwwwwwWWWWwWWWWWwwwwwwww
WWWWWWwwwwwwwwwwwwwwwwWWWWWWWwwwwwwwwwwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwWWWWWWWWWwwwwWWWWWWWWWWwwwwwwwwwwwWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWwww
wwwwwwwwwwwwwwwWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwww

実行。

% ruby grass.rb < hello.grass

(20) D

面白そうだと思いつつ、コンパイラのありかすらわからないD言語

早速取ってきます。

オープンソース版のgdcは最終更新日が2007年とあまりに古いので、Digital Mars社謹製のdmdを取ってきます。

2系はalpha版なので今回は遠慮させていただいて、最新の1.0.46をゲット。

http://www.digitalmars.com/d/download.html

まずは展開。dmdというフォルダを/usr/localに移動。

ライブラリにパスを通す。

% vi /etc/ld.so.conf.d/dmd.conf
( 中に /usr/local/dmd/linux/lib とだけ記述)
% ldconfig

バイナリにもパスを通す。(/usr/local/dmd/linux/bin)

さて、コーディングです。

さすがD言語、言語仕様がコロコロ変わるという話を聞いてはいたものの、まさかHello,worldのプログラムの書き方まであちこちで違うとは思いませんでした。

wikipediaのD言語のページのサンプルコードではコンパイルできず。

こちらのページのコードを使わせてもらいました。

import std.cstream;
 
int main(char[][] args)
{
    dout.writefln("Hello, World!");
 
    return 0;
}

コンパイル。

% dmd -ofhello_d hello.d

(3i) Delphi

そういえばなでしこってDelphiで出来てるんだった、ということを思い出して試してみようと思いましたが、案の定Windows専用。

残念。


1 / 2 / 3 / 4