TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

27
pen4education Ruby – Crystal-lang. Tipo o Ruby, mas é C. Vitor D’Amico

Transcript of TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

Page 1: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Ruby – Crystal-lang.Tipo o Ruby, mas é C.

Vitor D’Amico

Page 2: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Sobre mim

<< Vitor D'Amico

Page 3: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Agenda

Crystal-lang✔ Por quê inventar o Crystal?✔ Objetivos do Crystal!✔ Mais uma linguagem?✔ Benchmarcks. Yey!✔ Live Code

Page 4: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Page 5: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Versão atual v0.18.7 03/07/2016

Lançamento v0.1 19/06/2014

Compilador Crystal 14/11/2013

Primeiro commit público 04/09/2012

Histórico

Page 6: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Por quê inventar o Crystal?

Nós amamos a eficiência de escrever código em Ruby.

Page 7: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Nós amamos a eficiência de executar código em C.

Por quê inventar o Crystal?

Page 8: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Por quê inventar o Crystal?

Nós queremos o melhor dos dois mundos.

Page 9: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Por quê inventar o Crystal?

✍� Nós queremos que o compilador nos entenda sem termos que especificar tipos em todos os lugares.

Page 10: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Por quê inventar o Crystal?

Nós queremos OOP completa.

Page 11: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Por quê inventar o Crystal?

❤� Ah! E nós não queremos escrever em C para fazer o código ficar mais rápido.

Page 12: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Objetivos do Crystal!

Ter uma sintaxe similar à Ruby(porém compatibilidade com a mesma não é uma meta)

Page 13: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Objetivos do Crystal!

Checagem estática de tipos mas sem

ter de especificar o tipo das variáveis ou

argumentos de método.

Page 14: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Objetivos do Crystal!

Poder chamar código em C

escrevendo bindings ao mesmo em

Crystal.

Page 15: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Objetivos do Crystal!

Ter avaliação em tempo de

compilação e geração de código, para

evitar código repetido. (boilerplate)

Page 16: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Objetivos do Crystal!

Compilar em código nativo eficiente.

Page 17: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Mais uma linguagem?

Page 18: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Mais uma sintaxe?

Mais uma documentação?

Mais uma biblioteca básica?

Mais um ecossistema?

Mais uma comunidade?

Page 19: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

✔ Mais uma sintaxe?

Mais uma documentação?

Mais uma biblioteca básica?

Mais um ecossistema?

Mais uma comunidade?

Page 20: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

✔ Mais uma sintaxe?

✔ Mais uma documentação?

Mais uma biblioteca básica?

Mais um ecossistema?

Mais uma comunidade?

Page 21: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

✔ Mais uma sintaxe?

✔ Mais uma documentação?

✔ Mais uma biblioteca básica?

Mais um ecossistema?

Mais uma comunidade?

Page 22: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

✔ Mais uma sintaxe?

✔ Mais uma documentação?

✔ Mais uma biblioteca básica?

✔ Mais um ecossistema?

Mais uma comunidade?

Page 23: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

✔ Mais uma sintaxe?

✔ Mais uma documentação?

✔ Mais uma biblioteca básica?

✔ Mais um ecossistema?

✔ Mais uma comunidade?

Page 24: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Benchmarks. Yey!

https://github.com/kostya/benchmarks

Page 25: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Live Code!

Page 26: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

• crystal http_server.cr

• ruby -run -e httpd . -p 8080

• ab -n 1000 -c 100 'http://127.0.0.1:8080/'

Live Code FallBack

Page 27: TDC2016SP - Crystal-lang. Tipo o Ruby, mas é C.

pen4education

Crystal-lang:

Website: http://crystal-lang.org/Emulador NES: https://github.com/romeroadrian/nes.crBenchmarks: https://github.com/kostya/benchmarksProjetos: https://github.com/veelenga/awesome-crystal#web-frameworksExemplos: https://github.com/askn/crystal-by-example

Vitor D’Amico:

Email: [email protected]: https://github.com/vitormd

Obrigado!