静的型付けプログラミング言語Shiika

26e1ba9a02729b2d6013604135221aae?s=47 yhara
October 09, 2020

 静的型付けプログラミング言語Shiika

26e1ba9a02729b2d6013604135221aae?s=128

yhara

October 09, 2020
Tweet

Transcript

  1. ੩తܕ෇͚ϓϩάϥϛ ϯάݴޠShiika 2020-10-09 ࣗ࡞ϓϩάϥϛϯάݴޠͷू͍ @yhara (Yutaka HARA)

  2. @yhara • ౡࠜݝࡏॅ • ωοτϫʔΫԠ༻௨৴ݚڀॴ • झຯɿݴޠॲཧܥͷ։ൃ • BiwaScheme (R7RS

    Scheme in JS) • ॻ੶ʰRubyͰͭ͘Δحົͳϓϩάϥϛϯάݴޠʱ ࠷ۙͷڵຯɿΫϥϑτ Ϗʔϧࣗ࡞ΩʔϘʔ υ0DVMVT2VFTU $MBTI3PZBMF4PVM PG&EFO$PPLJF $MJDLFS
  3. • Brainf*ckͳͲͷ͍ΘΏΔesolangΛͭ͘Δຊ • খ͞ͳϓϩάϥϛϯάݴޠͰॲཧܥ࣮૷Λֶ Ϳ • Ruby஌Βͳͯ͘΋OK

  4. Shiika • github: yhara/shiika • Ruby෩ͷจ๏ʴ੩తܕ෇͚ݴޠ • 2017ʙ • ࣮૷ɿRust

    + LLVM
  5. ໨ඪ • ࣮༻ݴޠΛ໨ࢦ͢ • Χόʔൣғ͸Rubyͱ͍͍ͩͨಉ͡ 4IJJLB 3VCZ 8FCΞϓϦ ˕ ˕

    εΫϦϓςΟϯά ˓ ˕ ήʔϜ ˕ ˓ ਺஋ܭࢉ ˓ ˚ ϫϯϥΠφɺίʔυΰϧϑ ˓
  6. σϞ • examples/ray.sk

  7. ಈػ • Ruby͕޷͖͚ͩͲ੩తܕ΋ཉ͍͠ • έΞϨεϛεΛ࣮ߦલʹڭ͑ͯ΄͍͠ • ܕ͕ॻ͍ͯ͋Δͱಡղʹ໾ཱͭ • ܕ͔Βઃܭ͢Δָ͠Έ •

    Rubyͷʮॻ͖ຯʯΛ࣋ͬͨ੩తܕݴޠΛ࡞Εͳ͍͔
  8. ʮॻ͖ຯʯͱ͸ʁʁ • ࢖͍ͪ͜͝ • ;Θͬͱ͍ͯ͠Δ…

  9. Rubyͷॻ͖ຯΛߏ੒͢Δ΋ͷ • ʮεΫϦϓτݴޠʯͰ͋Δ͜ͱ • ୹͘ॻ͚Δ • ֤छsyntax sugarɾ๛෋ͳ૊ΈࠐΈϝιου • ָ͞ʼੑೳ

    • Fixnum͔ΒBignum΁ͷࣗಈঢ֨ • େΫϥεओٛ(Hashͷॱং͕อ࣋͞ΕΔ౳)
  10. Rubyͷॻ͖ຯΛߏ੒͢Δ΋ͷ • ౷Ұײ • શ͕ͯΦϒδΣΫτͰ͋Δ (1.timesͱ͔) • if΍case-when΋஋Λ΋ͭ

  11. ݴޠઃܭͷτϨʔυΦϑ • ੑೳ vs ָ͞ • eg. Bignum • ಡΈ΍͢͞

    vs ॻ͖΍͢͞ • eg. syntax sugar
  12. ݴޠઃܭ

  13. จ๏ • جຊRubyͱಉ͡ • ྫɿϝιουݺͼग़͠ͷׅހ͸লུՄ • EnumͳͲɺRubyʹͳ͍΋ͷ͸࢓༷Λݕ౼

  14. ܕγεςϜ • ͋·Γ೉͍͠΋ͷ͸ೖΕͨ͘ͳ͍(๻͕ಡΊͳ ͘ͳΔͷͰ) • ͱ͸͍͑δΣωϦΫε(parametricଟ૬)͘Β͍ ͸ཁΔ • ͳ͍ͱArray<T>΋Hash<S,T>΋࡞Εͳ͍…

  15. ΫϥεͱϝλΫϥε "abc" "abc".class #=> String String #=> String String.name #=>

    "String" String.class #=> Meta:String Array<Int> #=> Array<Int> Array<Int>.name #=> "Array<Int>" Array<Int>.new #=> [] Array<Int>.class #=> Meta:Array<Int>
  16. ͳͥClassͰ͸ͳ͍ͷ͔ • Rubyͩͱ String΋Array΋਌͸ClassΫϥε • ͔͠͠String.newͱArray.new͸(౰વͳ͕Β)γ άωνϟ͕ҧ͏ • => Class.newͷγάωνϟ͕ҰҙͰͳ͍

    • => ͦΕͧΕҧ͏਌Λ΋ͭ͜ͱʹͨ͠
  17. ༨ஊɿΫϥεͱܕͷؔ܎ • Ϋϥε != ܕ • ྫɿfoo(x: Float) • x͸FloatͷଞʹIntͰ΋Α͍

    • ܕʹ஋ͷू߹(ͲͷΑ͏ͳΫϥεͷΠϯελϯ εΛڐ͔͢) ͜͜͸ΫϥεͰ͸ͳ͘ɺ ܕΛॻ͘ཝ
  18. ޓ׵ੑʹ͍ͭͯ • Rubyͱͷޓ׵ੑ͸ॏࢹ͠ͳ͍ɻྫɿ • Ruby: "foo".start_with?("f") • Rust: "foo".starts_with("f") •

    startsʹ߹Θ͍ͤͨ
  19. ࠓޙͷల๬

  20. ೖΕ͍ͨ΋ͷ • Enum (Option͕΄͍͠) • ύλʔϯϚον

  21. ݕ౼தͷ΋ͷ • RubyͷModuleతͳ΋ͷ • ྫ֎ʁ • async/await

  22. ೖΕͳ͍΋ͷ • Ϣʔβఆٛԋࢉࢠ • ߏจ໦ϚΫϩ • ಡղ͕େมͳͷͰ • Rubyͷdefine_methodͷΑ͏ʹɺओͳ༻్ΛΧόʔ͢Δ΋ͷ(Ṗ)Λ୅Θ ΓʹೖΕ͍ͨ

    • ηϧϑϗετ͸͠ͳ͍ • σόοά͕େม • ௒௕ظతʹ͸ੑೳ͕ॏཁʹͳΔ
  23. ΍Δ͜ͱ͸ແݶʹ͋Δ • ... • ෼ׂίϯύΠϧ • ඪ४ϥΠϒϥϦ • ύοέʔδγεςϜ •

    ...
  24. Ұॹʹ΍Γ·͠ΐ͏ʂʂ • ݴޠॲཧܥSlack • https://prog-lang-sys-ja-slack.github.io/ wiki/ • νϟϯωϧ #shiika •

    https://github.com/yhara/shiika