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番目は、プログラム名になる
- 次にjavaで
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; }
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
- 感想
言語ごとに少しずつ違うので混乱、なのでこれから実装して勉強していくし、その経過をブログに書いていく。
一流のプログラマーの方々は、どうやってこれらの違いを覚えているのだろう・・・