ラベル HelloWorld の投稿を表示しています。 すべての投稿を表示
ラベル HelloWorld の投稿を表示しています。 すべての投稿を表示

2009/09/09

Hello,world!はプログラマがまず書くべきもの。Hello,workは引きこもりがまず行くべきところ。

WikipediaのHello worldのページを見たらThe Evolution of a Programmerというところへのリンクがありました。見てみると立場とHello,wolrd.についてのジョークのページのようです。
学生、プログラマ、ハッカー、マネージャ、それぞれレベル別になっています。

学生ではBASIC(行番号付)→Pascal→Lispとなっています。
プログラマではC→C++→・・・。
Masterにもなると200行以上。私には何をやってるのかわからないな。
New professionalのvoid main(void)に少しクスッと。mainは値を返してくれ。まあNew professional(新人)ですし。
ハッカーではPerl→Cと。最後にGuruで

%echo "Hello,world."

最初からそうすればよかったんだよ。

マネージャではNew Managerでは学生と同じくBASIC(行番号付)。それ以降はmail,zmailで
「ボブ、"Hello,wolrd."を表示するプログラムを書いてくれないかい?明日までに必要なんだ。」
「今日の午後までに"Hello,world."プログラムを作れ。」

最後のオチに社長?CEO?(Chief Executive)では
 % letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

・・・社長。落ち着いてください。

2009/08/26

"hello,world""Hello,world"より"Hello,world!"が好き


Hello,world!Wallpaperなる壁紙を作ってみた。
作成ソフトはGimp。
背景を少しグレーがかった黒(#222222)にしてHello,world!のコードにはWikipediaの
Hello worldプログラムの一覧. (2009, 8月 23). Wikipedia, . Retrieved 01:56, 8月 23, 2009 from http://ja.wikipedia.org/w/index.php?title=Hello_world%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E4%B8%80%E8%A6%A7&oldid=27573303.を使わさせてもらった。
サイズは1920*1200。ドラッグ&ドロップ画像変換で美最大でbmpからjpgに圧縮してる。

・・・Wikipediaのライセンスがよく分からない(´・ω・`)。

2009/08/17

変態プログラミングは男のロマン

とっても変態的なHello,world!プログラムたち
最もタメになる「初心者用言語」は Brainf*ck! - TAKESAKOのはてな出張所
普通のが見たい人はWikipediaへGo。
内容は前に紹介したppencodeやらbrainf*ckやらいろいろ

2009/06/30

1987年のIOCCC作品であるbiggar.cをgeekなページなんかでたまたま見かけた。
biggar.cのソースコードは

P;

以上。
は?と思われたでしょうが秘密はコンパイラオプションに有ります。

$cc -DC="R>0" -DI="if(T)O" -DO="c=write(1,&c,1);" -DP="main(){X}"\ -DR="read(0,&c,1)" -DT="c!=015" -DW="while(C)I" -DX="char c;W" biggar.c

コンパイラオプション-Dでマクロを設定しているわけです。
こちらに書き下したものが有ります。

こんな感じです。
main(){
char c;
while(read(0,&c,1)>0)
if(c!=015) c=write(1,&c,1);
}
「IOCCC 1987 P;」なんかでググるといろいろ出てきます。
もちろんgccでも出来ます。
ccをgccに変えるだけで。
gccに関してはここなんかやman gccを見たりしました。
-Dmacro=valueで臨時にマクロを定義。

というわけで以前gccでコンパイルできる最短のHello,world!、最短のソースコードに挑みましたが、それよりさらに短い物に挑んで見たいと思います。
ソースコードhello.cの中身はこう

A

以上、半角一文字。
おそらく最短。

このAにマクロを設定する。
コンパイラオプションは

$gcc -DA="int main(void){char H='H';char e='e';char l='l';char o='o';char S=',';char w='w';char r='r';char d='d';char E=0x21;char N=0x0A;write(1,&H,1);write(1,&e,1);write(1,&l,1);write(1,&l,1);write(1,&o,1);write(1,&S,1);write(1,&w,1);write(1,&o,1);write(1,&r,1);write(1,&l,1);write(1,&d,1);write(1,&E,1);write(1,&N,1);return 0;}" hello.c

まともなソースコード風に書き下すと

int main(void){
/*初期化*/
char H='H';
char e='e';
char l='l';
char o='o';
char S=',';
char w='w';
char r='r';
char d='d';
char E=0x21;//!
char N=0x0A;//改行コード
/*出力*/
write(1,&H,1);
write(1,&e,1);
write(1,&l,1);
write(1,&l,1);
write(1,&o,1);
write(1,&S,1);
write(1,&w,1);
write(1,&o,1);
write(1,&r,1);
write(1,&l,1);
write(1,&d,1);
write(1,&E,1);
write(1,&N,1);
return 0;
}

printfやput系はSegment Faultとなるのでwriteを使った。
charで文字一種類ずつ宣言してwriteで出力、
の流れです
"が使えないのと!がマクロのイベントか何かと認識されるのと
改行コードでの改行の出力がポイント。

09/09/09 少し改良。文章を。

2009/06/20

gccでコンパイルできる最短のソースコードというものを昨日いろいろ試してみた。
結果は・・・これです。

main;

以上、半角5文字。
ええ、警告出ますとも。
たしか何も無しは無理だったような。
ちなみに思いついた中で最短のHello,world!のソースは

main(){puts("Hello,world!");}

以上、半角30文字。
でもAnarchy Golfによると1位は21文字だそうな。どうやってるんだろう・・・。

おまけ

$ man life
No manual entry for life
$ man love
No manual entry for love

人生と恋愛のマニュアルは無しですか・・・そうですか・・・

09/09/09 少し文章を改善。