三木谷社長といい和田社長といい、社長という生き物は乱暴ですねえ。

社内公用語を英語にするくらいならC言語にしてやる!!less than a minute ago via web

聞き手はEngrishは許してくれても、ぬるぽはゆるしてくれないじゃないですかあ。

というわけで、ご提案。

その名も、ボイン。

まずは実物をみていただきましょう。

ボインで話してみよう! Let's boin!

ボイン
Brainf?ck
にゅうりょく

しゅつりょく

じっこうじかん
Javaスクリプト

特長

  • 名前の通り、100%母音された言語です。出てくるのは「あいうえおやゆよ」だけです。え?「やゆよ」は母音じゃない?半母音ということで多めに見てあげてください。
  • なので、どんな発音が苦手な方でも発音できます。発音コンプレックスはこれでサヨナラです。
  • 現時点における国際標準語であるbrainf?ck完全互換です。移植はコピペ一発!
  • brainf?ckとは異なり、ボインは発音可能です。ギークは無口だなんてもう言わせない!

ヒントとなったのはこちらです。

え、これを社内公用語にするの? http://bit.ly/5eZBFZ RT @dankogai: らめええぇぇぇ<@goroyasu: 社内公用語を淫語にしてやる!less than a minute ago via YoruFukurou

どうみてもプロの淫行です。本当にありがとうございました。

われわれ人が Hello world! してから最初にすることはなんでしょうか?そうです。ボインを吸う事ですね!

それでは皆さんご一緒に、

ううううううううううゆいううううううういうううううううううういううういうああああえよいううおいうおうううううううおおうううおいううおああうううううううううううううううおいおうううおええええええおええええええええおいうおいお

Dan the Language Designer


(function(){
  var boin = 'あいうえおやゆよ'.split('');
  var bf = '<>+-.,[]'.split('');
  var boin2bf = {}, bf2boin = {};
  for (var i = 0; i < 8; i++){
    boin2bf[boin[i]] = bf[i];
    bf2boin[bf[i]] = boin[i];
  };
  b2f = function(s){ 
    return s.replace(/[^[あいうえおやゆよ]/g, '')
            .replace(/[あいうえおやゆよ]/g, function(c){
      return boin2bf[c];
    })
  };
  f2b = function(s){
    return s.replace(/[^<>\+\-\.\,\[\]]/g, '')
            .replace(/[<>\+\-\.\,\[\]]/g, function(c){
      return bf2boin[c];
    })  
  };
  
})();

BFF = function(str){
    this.code = []; this.output = []; this.input = [];
    this.pc = this.sp = 0;
    this.debug  = 0;
    this.js = '';
    this.timer = 0;
    this.init = function(str){
        str = str.replace(/[^<>\+\-\.\,\[\]]/g, '');
        str = str.replace(/(\<+|\>+|\++|\-+|[\.\,\[\]])/g, function(c){
          switch (c.charAt(0)) {
            case '>' : return 'sp+=' + c.length + ';\n';
            case '<' : return 'sp-=' + c.length + ';\n';
            /*
            case '+' : return 'data[sp] = data[sp] ? data[sp] + ' 
                              + c.length + ' : '  + c.length + ';\n';
            case '-' : return 'data[sp] = data[sp] ? data[sp] - '
                              + c.length + ' : -' + c.length + ';\n';
            */
            case '+' : return 'data[sp] += ' +  c.length + ';\n';
            case '-' : return 'data[sp] -= ' +  c.length + ';\n';
            case '.' : return 'output.push(data[sp]);\n';
            case ',' : return 'data[sp]=input.shift();\n';
            case '[' : return 'while(data[sp]){\n';
            case ']' : return '}\n';
          };
        });
        str = 'var data = [];\nvar output = [];\nvar sp = 0;\n'
            + 'for(var i = 0; i < 65536; i++) data.push(0);\n'
            +  str + 'return output;\n';
        try{
           // this.code = eval(str);
           this.js = this.code = new Function('input', str);
        }
        catch(e){
          alert(e + "\n" + str);
        }
        this.input = [];
    };
    this.stdin = function(str){
        for (var i = 0; i < str.length; i++){
            this.input.push(str.charCodeAt(i));
        }
    };
    this.stdout = function(){
        var str = '';
        for (var i = 0; i < this.output.length; i++){
            str += String.fromCharCode(this.output[i]);
        }
        return str;
    };
    this.run = function(){
        var start     = (new Date()).getTime();
        this.output = this.code(this.input);
        this.timer = ((new Date()).getTime() - start)/1000;
    }
    this.init(str);
}
$ = function(id){ return document.getElementById(id) };
var bf = new BFF('');

runbf = function(){
  $('code').value=b2f($('boin').value)
  bf.init($('code').value);
  bf.stdin($('stdin').value);
  $('bf2js').innerHTML = bf.code;
  bf.run()
  $('timer').innerHTML = bf.timer;
  $('stdout').innerHTML = bf.stdout();
  return false;
};