Reference
Wikipedia - MalbolgeMalbolge 言語仕様
http://www.antwon.com/other/malbolge/malbolge.txt
Malbolge Interpreter
http://www.lscheffer.com/malbolge_interp.html
via
ロベールの小部屋 - 最凶言語 Malbolgehttp://d.hatena.ne.jp/Robe/20060824
高級言語とコードジェネレータの間をつなぐ言語
- Reference
C-- Home
http://www.cminusminus.org/
> ポインタをインクリメントする.
< ポインタをデクリメントする.
+ ポインタが指す値をインクリメントする.
ポインタが指す値をデクリメントする.
. ポインタが指す値を出力する.
, 1バイトを入力してポインタが指す値に代入する.
[ ポインタが指す値が0なら、対応する ] までジャンプする.
] ポインタが指す値が0でないなら、対応する [ にジャンプする.
- Brainf*ckでHello world
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[<++++>-]<+.[-]++++++++++.
・バグは無くならない
・バグを生んだ他人を責めない
・バグを生んでも,見つけてすぐに直せばいい
・バグを見つけやすいように色々な方策を講じよう
ほとんどのバグはAPIの仕様の理解不足から生じる.
(ココでのAPIとは「自分以外の人が作ったモノ全て」)
・OSのシステムコール
・低レベルなライブラリ(libcなど)
・X Window Systemライブラリ(Xlib, Xt)
・GNOMEライブラリ(glib, GDK, GTK+, gnome-lib, etc.)
・Win32 API,(Windows)COM
・libapr, libapr-util
・マニュアルを良く読む
・馴染みが薄いAPIの場合,そのAPIの動作だけを確認する小さなコードを書く
・自分の書くコードでは,assert(3)で条件を明示する
・自分の書くコードでは,外部に見せる関数(モジュール境界)に極度に気を使う
・公開ヘッダにきちんとコメントをつける
・公開ヘッダは保守的にする(仕様はあまり変えず,公開部分も最小限にする)
・言語仕様から見直す (ポインタの無い言語にする,など)
・他人の作ったAPIは使わない
・枯れて良く知っている環境に安住して,そこから離れない(POSIXの環境から離れない,など)
・そのネットワークAPIはブロックするのかしないのか?
・そのAPIはスレッドセーフか否か?
・APIが返すメモリの所有者は?
・APIに渡すメモリの所有者は?
・(設計に問題があるにせよ)現実的には,呼び出し順序が意味を持つAPI群は多いので,そのコンテキスト依存性は?
業務に必要な簡易ツールがどうしても必要なとき,
社内にプログラマーがいれば事足りるのですが,
そうそう社内にソフト開発ができる人材がいるわけではありません.
そこで登場したのが,スクリプターと呼ばれる簡易プログラム言語です.
これならさほど難しくなく目的のツールを開発できますので,
若干の社員教育をすれば,誰もが簡単にちょっとしたツールを
作れるようになります.
しかしプログラム業界は既にオブジェクト指向やVisual的な開発環境が
主流になって複雑化しており,従来のプログラム言語やスクリプターを
さらに簡単かつ視覚的編集が行えるように進化させる必要がありました.
そこで登場したのが第4世代言語です.ウィザード形式で視覚的な
プログラミングを行うことによって生産効率を上げたものです.
極論ではありますが,マウス操作だけでツール開発を行い,
誰もが簡単に短時間で目的のツールを作成できるようにという構想でもあります.
ゲーム製作に例えると,○○ゲームツクールなどに当てはまる.
第1世代言語 | 機械語 |
第2世代言語 | アセンブリ語 |
第3世代言語 | C言語,Fortran,COBOL,Java 等 |
第4世代言語 | Visual Basic,Power Builder,Delphi,Natural,Uniface 等 |