c,java,objective-c,groovyでHello World

マシンはmac OS X 10.7 LION

  • まずは、cで実装
#include <stdio.h>

int main(int argc, char * argv[]){
    for (int i=0;i<argc;i++) {
        printf("arg[%d]=%s\n",i, argv[i]);
    }
    return 0;
}

コンパイルには、Xcode4.2で使用しているLLVMを使用

clang main.c

で引数を指定して実行
コンパイル時に引数でファイル名を指定しないと「a.out」で出力されるので

./a.out Hello World

実行結果は

arg[0]=./a.out
arg[1]=Hello
arg[2]=World

引数の1番目は、プログラム名になる

public class HelloWorld {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

コンパイル

javac HelloWorld.java

引数を指定して実行

java HelloWorld Hello World

実行結果は

Hello
World
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
    @autoreleasepool {
        for (int i=0; i<argc; i++) {
            NSLog(@"argv[%d]=%s", i, argv[i]);
        }
    }
    return 0;
}

コンパイルは、LLVMを使用して

clang -fobjc-arc -framework Foundation -o HelloWorld main.m

引数を指定して実行

./HelloWorld Hello World

実行結果は

2012-02-04 21:23:17.395 HelloWorld[365:707] argv[0]=./HelloWorld
2012-02-04 21:23:17.397 HelloWorld[365:707] argv[1]=Hello
2012-02-04 21:23:17.398 HelloWorld[365:707] argv[2]=World

cと同じで第一引数はプログラム名

  • 最後にgroovyで実装
this.args.each{a -> println "a=${a}"}

コンパイル不要なので、引数を指定して実行

groovy HelloWOrld.groovy Hello World

実行結果は

a=Hello
a=World
  • 感想

言語ごとに少しずつ違うので混乱、なのでこれから実装して勉強していくし、その経過をブログに書いていく。
一流のプログラマーの方々は、どうやってこれらの違いを覚えているのだろう・・・