TypeScriptをフォークしてEmojiScriptを作った話

993ef638264def4334358f986fb4a91d?s=47 uhyo
October 09, 2020

 TypeScriptをフォークしてEmojiScriptを作った話

993ef638264def4334358f986fb4a91d?s=128

uhyo

October 09, 2020
Tweet

Transcript

  1. TypeScriptをフォークして EmojiScript を作った 2020-10-09 ⾃作プログラミング⾔語の集い @uhyo_

  2. EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) {

    (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4
  3. EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) {

    (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 function fizzbuzz(n) { for (var i = 0; i <= n; i++) { if (i % 15 === 0) { console.log("FizzBuzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else if (i % 5 === 0) { console.log("Buzz"); } else { console.log(i); } } } fizzbuzz(1000); コンパイル後 (JavaScript)
  4. EmojiScriptの⾔語仕様 (1)単純置換 fizzbuzz(n: ): { (i & ; i⏮n; i)

    { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4
  5. EmojiScriptの⾔語仕様 (2) 点字数値リテラル fizzbuzz(n: ): { (i & ; i⏮n;

    i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 256進数で整数を記述できる 0= , 1=⠁, 2=⠂, 3=⠃, 4=⠄, …, 254=⣾, 255=⣿ ex) – 1000 = 0x3e8 = ⠃⣨ – 65535 = 0xffff = ⣿⣿
  6. EmojiScriptの⾔語仕様 (3) 肌の⾊に対応 fizzbuzz(n: ): { (i & ; i⏮n;

    i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 ⾃分を表現できるプログラミング⾔語 !"#$%& ZWJ Sequenceを正しくパースする対応 ex) ! = U+1F647 U+1F3FE U+200D U+2640 U+FE0F (UTF-8で17バイト)
  7. TypeScriptがベース 良い点 – VSCodeサポートがついてくる – 型システムも最初からある – バックエンド実装が必要ない (JavaScriptにコンパイルできる) –

    TypeScriptにcontributeする練習 になる(?) 悪い点 – どうあがいてもJavaScriptになる
  8. まとめ –EmojiScriptで⾃分を表現しよう! –絵⽂字のパースを実装するとUnicodeの勉強になる –https://github.com/uhyo/EmojiScript –絵⽂字追加のプルリクも⼤歓迎