iPod Touchからの投稿テスト。
はてなにログインして普通に日記が書けてしまっている。これは本当に便利かもしれない。テキスト入力も慣れるとかなり快適になりそう。
Bjarne Stroustrup本
Programming: Principles and Practice Using C++ (Developer's Library)
- 作者: Bjarne Stroustrup
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2008/12/15
- メディア: ペーパーバック
- クリック: 67回
- この商品を含むブログ (11件) を見る
超分厚いです。さらっと眺めただけですが、豊富な色使いでかなり手の込んだつくりになっている印象を受けました。
かぜよみ
- アーティスト: 坂本真綾
- 出版社/メーカー: FlyingDog
- 発売日: 2009/01/14
- メディア: CD
- 購入: 12人 クリック: 59回
- この商品を含むブログ (166件) を見る
作曲は色々な人が参加しているようだ。
Brainfu_k in C
リハビリの続き。
#include <stdio.h> typedef unsigned char byte_t; int bf_exec(const char* code, int len, size_t mem_size) { byte_t* memory = calloc(mem_size, sizeof(byte_t)); byte_t* pointer = memory; const char* ip = code; while ((ip - code) < len) { switch (*ip) { case '>': ++pointer; break; case '<': --pointer; break; case '+': ++(*pointer); break; case '-': --(*pointer); break; case '.': fputc(*pointer, stdout); break; case ',': *pointer = fgetc(stdin); break; case '[': if (*pointer == 0) { int level = 1; while (level) { ++ip; if (*ip == '[') { ++level; } else if (*ip == ']') { --level; } } } break; case ']': if (*pointer != 0) { int level = 1; while (level) { --ip; if (*ip == '[') { --level; } else if (*ip == ']') { ++level; } } --ip; } break; defalt: break; } ++ip; } free(memory); return 0; } int main(int argc, char** argv) { const char* helloworld = "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+."; const char* metacircular = ">>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++<<-]+>>>,<++[[>[->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<+++++++++>[<->-]>>]>>]]<<]<]<[[<]>[[>]>>[>>]+[<<]<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[>+<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+>>-[<<+>++>-[<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>]<<[->>>>>>>>]<<[>.>>>>>>>]<<[>->>>>>]<<[>,>>>]<<[>+>]<<[+<<]<]"; bf_exec(helloworld, strlen(helloworld), 1024); bf_exec(metacircular, strlen(metacircular), 1024); return 0; }
Brainf_ck in Python
リハビリ。
サンプルプログラムは拾ってきました。
import array import re import sys def bf_exec(code, mem_size=1024): memory = array.array('B', [0] * mem_size) length = len(code) pc = 0 pointer = 0 while pc < length : inst = code[pc] if inst == '>': pointer += 1 elif inst == '<': pointer -= 1 elif inst == '+': memory[pointer] += 1 elif inst == '-': memory[pointer] -= 1 elif inst == '.': c = memory[pointer] sys.stdout.write("%c" % c) elif inst == ',': c = sys.stdin.read(1) memory[pointer] = ord(c) elif inst == '[': if memory[pointer] == 0: level = 1 while level: pc += 1 inst = code[pc] if inst == '[': level += 1 elif inst == ']': level -= 1 elif inst == ']': if not memory[pointer] == 0: level = 1 while level: pc -= 1 inst = code[pc] if inst == '[': level -= 1 elif inst == ']': level += 1 pc -= 1 pc += 1 if __name__ == '__main__': helloworld = """ +++++++++[>++++++++>+++++++++++>+++++<<<-]>. >++.+++++++..+++.>-.------------.<++++++++. --------.+++.------.--------.>+. """ # Metacircular interpretor of Brainf*ck. '!' is used as execution tirgger. metacircular = """ >>>+[[-]>>[-]++>+>+++++++[<++++>>++<-]++>>+>+>+++++[>++>++++++<<-]+>>>,<++[[>[ ->>]<[>>]<<-]<[<]<+>>[>]>[<+>-[[<+>-]>]<[[[-]<]++<-[<+++++++++>[<->-]>>]>>]]<< ]<]<[[<]>[[>]>>[>>]+[<<]<[<]<+>>-]>[>]+[->>]<<<<[[<<]<[<]+<<[+>+<<-[>-->+<<-[> +<[>>+<<-]]]>[<+>-]<]++>>-->[>]>>[>>]]<<[>>+<[[<]<]>[[<<]<[<]+[-<+>>-[<<+>++>- [<->[<<+>>-]]]<[>+<-]>]>[>]>]>[>>]>>]<<[>>+>>+>>]<<[->>>>>>>>]<<[>.>>>>>>>]<<[ >->>>>>]<<[>,>>>]<<[>+>]<<[+<<]<] """ countdown = """ ++++++++++++++++++++++++++++++++[>+>+<<-] >>+++++++++++++++++++++++++<<++++++++++ [>>.-<.<-] >>-.<.>.<.>.<. >++++++++++++++++++++++. +++++++++++++++++++++++++++++++++++++++++++.-.---------.>++++++++++. """ bf_exec(helloworld) bf_exec(countdown) bf_exec(metacircular)
もしプログラミング言語が宗教だったら
http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html
が面白かったので適当にまとめてみる。
(元記事にもありますがジョークですので、広い心でお読みください)
- C
- ユダヤ教
- Java
- キリスト教原理主義
- PHP
- カフェテリアキリスト教(自分に都合が良いだけの部分的キリスト教信仰といったところ?)
- C++
- イスラム教
- C#
- モルモン教
- Lisp
- 禅宗
- Haskell
- 道教
- Erlang
- ヒンズー教
- Perl
- ブードゥー教
- Lua
- 魔女崇拝
- Ruby
- 新興多神教
- Python
- 人文主義
- COBOL
- 古代多神教
- APL
- サイエントロジー
- LOLCODE
- 空飛ぶスパゲティモンスター教
- Visual Basic
- 悪魔崇拝
さらに元ネタの「もしプログラミング言語が車だったら」もあるみたいですね。
http://www.cs.caltech.edu/~mvanier/hacking/rants/cars.html