Slide 1

Slide 1 text

Think less, write more. A statically-typed functional programming language with powerful objective syntax > 鎉铂剅ְג׫׋鑧

Slide 2

Slide 2 text

ࢲ͸… About me ■ $FS ■ \'SPOU #BDL^FOE+4΋ͨ·ʹ ■ ϚΠίϯɾిࢠ޻࡞
 \1*$ "SEVJOP &EJTPO^ ■ !DPPSE@F
 DPPSEF ■ ϩϘοτͭ͘Γ·ͤΜ͔ 
 XXXZNPEJGZPSH
 !ZNPEJGZ
 :NPEJGZ ŢŖŲƅŽŲƅŽŕš-

Slide 3

Slide 3 text

About scopion (ͳʹͦΕ)

Slide 4

Slide 4 text

ςʔϚ: Think less, Write more. ߟ͑ͣʹͨ͘͞Μॻ͚Δݴޠ

Slide 5

Slide 5 text

ϓϩάϥϛϯά͸ɺ޷͖Ͱ͔͢ Do you like programming? ޷͖ ͚ͩͲ ͨ·ʹ ͩΔ͍

Slide 6

Slide 6 text

scopionͳΒ… (1/2) ■ ܕΛॻ͘ͷ͕ΊΜͲ͍͘͞
 ˠ ܕਪ࿦ ■ ม਺໊Λߟ͑Δͷ͕ͩΔ͍
 ˠ ༧໿ޠͷഉআ ■ ؔ਺ͷ෭࡞༻Λҙࣝ͢Δͷ͕ͩΔ͍
 ˠ ͦΜͳ΋ͷ͸ͳ͍ (ࢀরಁա) Features (1/2)

Slide 7

Slide 7 text

scopionͳΒ… (2/2) ■ ಈతܕ෇͚/ΠϯλϓϦλ͸஗͍
 ˠ ੩తܕ෇͚/ίϯύΠϥ ■ ΦϒδΣΫτࢦ޲͕͍͍
 ˠ Ͳ͏ͧ(?) ■ CݴޠͷϥΠϒϥϦ͕࢖͍͍ͨ
 ˠ Ͳ͏ͧ Features (2/2)

Slide 8

Slide 8 text

1 (argc, argv){ 2 /* CϔομͷಡΈࠐΈ */ 3 io = @import#c:stdio.h; 4 lib = @import#c:stdlib.h; 5 math = @import#c:math.h; 6 7 argc > 2 ? { // ৚݅෼ذ 8 base = lib.atof(argv[1]); 9 exp = lib.atof(argv[2]); 10 io.printf("%f^%f = %f\n", base, exp, math.pow(base, exp)); 11 |> 0; // return 12 } : { 13 io.printf("Invaild argument!\n"); 14 |> -1; 15 }; 16 }

Slide 9

Slide 9 text

❯ scopc pow.scc –o pow ❯ ./pow 3 2 3.000000^2.000000 = 9.000000 ❯ ./pow 2 10 2.000000^10.000000 = 1024.000000

Slide 10

Slide 10 text

Construction ߏ੒ ύʔα τϥϯεϨʔλ *3ίϯύΠϥ จ๏ʹैͬͯ۠੾Γ
 σʔλߏ଄ "45 ʹ
 ม׵͢Δ "45͔ΒҙຯΛղੳ͠
 ͦΕʹԠͯ͡ɺதؒݴ ޠ --7.*3 ʹ຋༁͢Δ தؒݴޠ --7.*3 ͔Βػցޠʹ຋༁ ͢Δ ΑΓίϯϐϡʔλʔʹΘ͔Γ΍͍͢දݱ΁຋༁͍ͯ͘͠ ιʔείʔυ ࣮ߦՄೳ
 ϑΝΠϧ scopc compiler ࢲ੍͕࡞ͨ͠෦෼ By LLVM ›_

Slide 11

Slide 11 text

WebαΠτ Website

Slide 12

Slide 12 text

ΦϯϥΠϯίϯύΠϥ online compiler

Slide 13

Slide 13 text

ͥͻ͓ࢼ͍ͩ͘͠͞ Feel free to try it out scopion.coord-e.com

Slide 14

Slide 14 text

Construction ߏ੒

Slide 15

Slide 15 text

ߏ੒ ■ ੩తαΠτ෦͸babel+sass+webpackΛ༻͍ES6 & SCSS ■ ίϯύΠϧٴͼ࣮ߦ͸Ϧιʔεͷ੍ݶ͞ΕͨDockerίϯςφ಺ͰߦΘΕ
 ͦͷίϯςφ͸1࣮ߦ͝ͱʹੜ੒/ഁغ͞ΕΔͨΊ҆શ ■ αʔόʔʹ͸node.js+express.jsΛ༻͍ɺ
 ͍ͭͰʹLet’s encryptΛ༻͍ͯhttpsʹରԠͤͨ͞ ■ t2.microͰ༨༟ ■ coord-e/scopion-website Construction

Slide 16

Slide 16 text

ͦͷଞ Misc

Slide 17

Slide 17 text

Q: RustͰΑ͘ͳ͍? A: Θ͔Δ

Slide 18

Slide 18 text

͜Ε͔Β ■ ·ͱ΋ͳܕγεςϜ ■ ඪ४ϥΠϒϥϦΛॻ͘ ■ ׬ᘳͳίϯύΠϧ࣌ॲཧ ■ ෦෼ద༻ ■ ύλʔϯϚον ■ Nullable TODO

Slide 19

Slide 19 text

࠷ޙʹݴ͍͍ͨ͜ͱ What I wanna say

Slide 20

Slide 20 text

ݴޠ࡞Ζ͏

Slide 21

Slide 21 text

Boost.Spirit.X3ͱLLVMͷίϯϘ͕ᖵ྾Ρ! ͍͍࣌୅

Slide 22

Slide 22 text

Boost.Spirit.X3 /'Λιʔεʹॻ͍͍ͯΔ৺஍ ͍͢͝ύʔα auto const mul_expr_def = pow_expr[detail::assign] >> *(("*" > pow_expr)[detail::assign_op] | ("/" > pow_expr)[detail::assign_op]); auto const add_expr_def = mul_expr[detail::assign] >> *(("+" > mul_expr)[detail::assign_op] | ("-" > mul_expr)[detail::assign_op] | ("%" > mul_expr)[detail::assign_op]);

Slide 23

Slide 23 text

LLVM ๛෋ͳ"1*Λ૊Έ߹Θ͍͚ͤͯͩ͘ ࠷ڧͷίϯύΠϥج൫ llvm::IRBuilder<> builder; builder.CreateAdd(builder.getInt32(1), builder.getInt32(2)) // -> 1+2

Slide 24

Slide 24 text

ϓϧϦΫ͍ͩ͘͞ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠! by @coord_e https://github.com/coord-e/scopion