Browse Source

some more rust changes

master
Julio Biason 5 years ago
parent
commit
e304bf6f7d
  1. BIN
      _images/processor-speed.png
  2. 394
      porque-rust.html

BIN
_images/processor-speed.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

394
porque-rust.html

@ -81,11 +81,11 @@
<h2 class="semi-opaque">Porque Você DEVE Aprender Rust</h2>
</section>
<aside class="notes">
Eu ia falar do porque o pessoal deveria aprender Rust,
mas acho que faz mais sentido dizer que o pessoal TEM
QUE aprender Rust.
</aside>
<aside class="notes">
Eu ia falar do porque o pessoal deveria aprender Rust,
mas acho que faz mais sentido dizer que o pessoal TEM
QUE aprender Rust.
</aside>
</section>
<section>
@ -95,8 +95,8 @@
<div>
<ul class="empty">
<li>Júlio Biason</li>
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
</ul>
@ -104,64 +104,64 @@
</section>
</section>
<section>
<section>
<h2>História</h2>
<ul>
<li>Criada em 2006 por Graydon Hoare.</li>
<li>Patrocinada pela Mozilla em 2009.</li>
<li>Versão 1.0 em 2015.</li>
<li>Versão atual: 1.37</li>
</ul>
</section>
<aside class="notes">
Parte burocrática da apresentação.
PS: Pode ser que, quando você essa apresentação, 1.37
não seja mais a versão atual; a cada 6 semanas, sai uma
nova versão do compilador.
</aside>
</section>
<section>
<section>
<h2>
História
<img src="_images/AYV1X0yv.png" alt="" style="width:100px;margin:0">
</h2>
<p>
Basic (com números e estruturado), dBase III Plus,
Clipper, Pascal, Cobol, Delphi (ObjectPascal),
C, C++, ActionScript (Flash), PHP, JavaScript,
Python, Objective-C, Clojure, Java, Scala
<strong>, Rust.</strong>
</p>
<aside class="notes">
Um porque de história sobre esse que lhes apresenta
a linguagem:
Eu já trabalhei com todas essas linguagens. Fora
essas, eu ainda sei ler
- Perl
- Ruby
- Haskell
- Swift
</aside>
</section>
<section>
<img src="_images/my_opinion.jpg" alt="">
<aside class="notes">
Alerta: Tudo aqui é a minha opinião sobre Rust e o
contexto geral de linguagens de programação.
</aside>
</section>
<section>
<section>
<h2>História</h2>
<ul>
<li>Criada em 2006 por Graydon Hoare.</li>
<li>Patrocinada pela Mozilla em 2009.</li>
<li>Versão 1.0 em 2015.</li>
<li>Versão atual: 1.38</li>
</ul>
</section>
<aside class="notes">
Parte burocrática da apresentação.
PS: Pode ser que, quando você essa apresentação, 1.38
não seja mais a versão atual; a cada 6 semanas, sai uma
nova versão do compilador.
</aside>
</section>
<section>
<section>
<h2>
História
<img src="_images/AYV1X0yv.png" alt="" style="width:100px;margin:0">
</h2>
<p>
Basic (com números e estruturado), dBase III Plus,
Clipper, Pascal, Cobol, Delphi (ObjectPascal),
C, C++, ActionScript (Flash), PHP, JavaScript,
Python, Objective-C, Clojure, Java, Scala
<strong>, Rust.</strong>
</p>
<aside class="notes">
Um porque de história sobre esse que lhes apresenta
a linguagem:
Eu já trabalhei com todas essas linguagens. Fora
essas, eu ainda sei ler
- Perl
- Ruby
- Haskell
- Swift
</aside>
</section>
<section>
<img src="_images/my_opinion.jpg" alt="">
<aside class="notes">
Alerta: Tudo aqui é a minha opinião sobre Rust e o
contexto geral de linguagens de programação.
</aside>
</section>
<section>
<div>
@ -173,23 +173,23 @@
-- Alan Perlis, "ALGOL"
</div>
<aside class="notes">
Apesar de ter todas essas linguagens, eu ainda
preciso passar essa frase do Perlis, porque
realmente Rust mudou a forma como eu penso em
outras linguagens.
Apesar do forte do Rust ser a proteção de memória,
eu posso oficialmente dizer que agora eu entendo
generics muito melhor por causa da forma como o
Rust trabalha.
</aside>
<aside class="notes">
Apesar de ter todas essas linguagens, eu ainda
preciso passar essa frase do Perlis, porque
realmente Rust mudou a forma como eu penso em
outras linguagens.
Apesar do forte do Rust ser a proteção de memória,
eu posso oficialmente dizer que agora eu entendo
generics muito melhor por causa da forma como o
Rust trabalha.
</aside>
</section>
</section>
</section>
<section>
<section>
<h2>1. A Linguagem Mais Amada</h2>
<h2>1. A Linguagem Mais Amada</h2>
<p>
<a href="https://insights.stackoverflow.com/survey/2019">
A linguagem mais amada segundo o StackOverflow
@ -248,18 +248,18 @@
de alto nível que estamos acostumados com outras
linguagens.
Honestamente, se surgir uma nova linguagem que
tenha mais proteções de memória, com performance
ainda melhor que C mas eu tiver que escrever uma
lista encadeada mais uma vez, eu destruo todas as
coisas tecnológicas ao meu redor...
Honestamente, se surgir uma nova linguagem que
tenha mais proteções de memória, com performance
ainda melhor que C mas eu tiver que escrever uma
lista encadeada mais uma vez, eu destruo todas as
coisas tecnológicas ao meu redor...
E vou plantar batata.
E vou plantar batata.
... porque aprendemos absolutamente NADA sobre
desenvolvimento.
</aside>
</section>
... porque aprendemos absolutamente NADA sobre
desenvolvimento.
</aside>
</section>
</section>
<section>
@ -269,29 +269,29 @@
<section>
<pre><code class="hljs rust" data-trim>
fn main() -&lt; int{
fn main() -&gt; int{
let a = 2;
a = 3;
println!("{}", a);
0
0
}
</code></pre>
<aside class="notes">
Primeiro contato com Rust: assim como C, tem uma
função `main`, que pode retornar um inteiro; para
atribuir variáveis, usa-se `let`.
<aside class="notes">
Primeiro contato com Rust: assim como C, tem uma
função `main`, que pode retornar um inteiro; para
atribuir variáveis, usa-se `let`.
Uma coisa: Rust é "strong and statically typed", o
que sigifnica que a linguagem tem tipos, mas por
padrão o compilador tenta inferir o tipo.
Uma coisa: Rust é "strong and statically typed", o
que sigifnica que a linguagem tem tipos, mas por
padrão o compilador tenta inferir o tipo.
Uma outra forma de escrever o let seria:
Uma outra forma de escrever o let seria:
```
let a: u8 = 2;
```
</aside>
```
let a: u8 = 2;
```
</aside>
</section>
<section>
@ -322,11 +322,11 @@ fn main() -&lt; int{
| ^^^^^ cannot assign twice to immutable variable
</code></pre>
<aside class="notes">
... mas se tu olhar com calma, tu vai ver que não só o
compilador disse, claramente, o que era o problema...
</aside>
</section>
<aside class="notes">
... mas se tu olhar com calma, tu vai ver que não só o
compilador disse, claramente, o que era o problema...
</aside>
</section>
<section data-transition="fade">
<pre><code class="hljs" data-trim data-line-numbers="5">
@ -339,20 +339,20 @@ fn main() -&lt; int{
| ^^^^^ cannot assign twice to immutable variable
</code></pre>
<aside class="notes">
... como também vai dizer como resolver o problema.
</aside>
</section>
<aside class="notes">
... como também vai dizer como resolver o problema.
</aside>
</section>
<section>
<img class="stretch" src="_images/Sorry-bout-that.gif" alt="">
<aside class="notes">
Ou seja, o compilador não só vai lá e diz: ERRADO!
<aside class="notes">
Ou seja, o compilador não só vai lá e diz: ERRADO!
... ele ainda dá uma dica de como resolver esse
problema.
</aside>
... ele ainda dá uma dica de como resolver esse
problema.
</aside>
</section>
</section>
@ -507,6 +507,14 @@ fn main() {
</aside>
</section>
<section>
<h4>Drop</h4>
<pre><code class="hljs rust fragment">
pub fn drop&lt;T&gt;(_x: T) { }
</code></pre>
</section>
<section>
<h3>Regras do Borrow Checker</h3>
@ -548,36 +556,8 @@ fn main() {
</aside>
</section>
<section data-transition="fade">
<pre><code class="hljs go" data-trim>presente := Presente { ... }
canal &lt;- presente
&nbsp;</code></pre>
<aside class="notes">
Num exemplo em Go, criamos uma estrutura e passamos
essa estrutura para outra thread através de um
canal.
</aside>
</section>
<section data-transition="fade">
<pre><code class="hljs go" data-trim>presente := Presente { ... }
canal &lt;- presente
presente.abrir()</code></pre>
<aside class="notes">
... e depois de passar o presente pra outra pessoa,
nós abrimos o presente.
Mas se estamos entregando um presente pra alguém,
como é que estamos abrindo o presente?
O borrow checker não permite esse tipo de coisa:
Ele irá barrar a função atual de continuar
utilizando a variável porque, afinal de contas,
agora a região de memória pertence à outra função
(uma função que está rodando em outra thread).
</aside>
<section>
<img class="stretch" src="_images/processor-speed.png" alt="">
</section>
<section>
@ -599,8 +579,8 @@ presente.abrir()</code></pre>
<img class="stretch" src="_images/senta-que-la-vem-historia.gif" alt="">
<p class="fragment"><code>localtime</code></p>
<p class="fragment"><code>SimpleDateFormatter</code></p>
<p class="fragment"><code>localtime</code></p>
<p class="fragment"><code>SimpleDateFormatter</code></p>
<aside class="notes">
A muito tempo atrás, eu estava ajudando uma colega
@ -780,11 +760,11 @@ OK(())
<section>
<section>
<h2>7. Generics/Traits</h2>
</section>
<h2>7. Generics/Traits</h2>
</section>
<section>
<h3>Structs</h3>
<section>
<h3>Structs</h3>
<pre><code class="hljs rust" data-trim>
struct Gift {
@ -798,34 +778,34 @@ struct Gift {
</aside>
</section>
<section>
<h3>Structs</h3>
<section>
<h3>Structs</h3>
<pre><code class="hljs rust" data-trim>
<pre><code class="hljs rust" data-trim>
let presente = Gift { package_color: "red", content: "A GIFT!" };
</code></pre>
</section>
</code></pre>
</section>
<section>
<h3>Structs Genéricas</h3>
<section>
<h3>Structs Genéricas</h3>
<pre><code class="hljs rust" data-trim>
struct Point&lt;T&gt; {
x: T,
y: T
}
</code></pre>
</section>
</section>
<section>
<h3>Structs Genéricas</h3>
<section>
<h3>Structs Genéricas</h3>
<pre><code class="hljs rust" data-trim>
<pre><code class="hljs rust" data-trim>
let my_point = Point&lt;f32&gt;(x: 1.0, y: 2.0);
</code></pre>
</section>
</code></pre>
</section>
<section>
<h3>Enums Generics</h3>
<h3>Enums Generics</h3>
<pre><code class="hljs rust" data-trim>
enum Result&lt;T, E&gt; {
@ -836,7 +816,7 @@ enum Result&lt;T, E&gt; {
</section>
<section>
<h3>Traits</h3>
<h3>Traits</h3>
<pre><code class="hljs rust" data-trim>
trait Summary {
@ -873,38 +853,38 @@ fn get_summary&lt;T&gt;(summarizable: T) -&gt; String
</section>
</section>
<section>
<section>
<h2>
<a href="https://doc.rust-lang.org/cargo/">
8. Cargo
</a>
</h2>
<p>"Cargo is the Rust package manager"</p>
<p>
"Cargo downloads your Rust package’s dependencies,
compiles your packages, makes distributable
packages, and uploads them to crates.io, the Rust
community’s package registry."
</p>
</section>
</section>
<section>
<section>
<h2>9. Tests</h2>
<pre><code class="hljs rust" data-trim>
<section>
<section>
<h2>
<a href="https://doc.rust-lang.org/cargo/">
8. Cargo
</a>
</h2>
<p>"Cargo is the Rust package manager"</p>
<p>
"Cargo downloads your Rust package’s dependencies,
compiles your packages, makes distributable
packages, and uploads them to crates.io, the Rust
community’s package registry."
</p>
</section>
</section>
<section>
<section>
<h2>9. Tests</h2>
<pre><code class="hljs rust" data-trim>
#[cfg(test)]
mod tests {
#[test]
fn testing() {
}
}
</code></pre>
</section>
</code></pre>
</section>
<section>
<pre><code>
@ -917,7 +897,7 @@ running 1 test
test tests::testing ... ok
</code></pre>
</section>
</section>
</section>
<section>
<section>
@ -972,23 +952,23 @@ fn call_isan(num: &amp;str) -&gt; Result&lt;Success, Error&gt; {
</section>
</section>
<section>
<h2>E agora?</h2>
<ul>
<li><a href="https://rustup.rs/">rustup</a></li>
<li><a href="https://doc.rust-lang.org/book/">The Rust Book</a></li>
<li><a href="https://doc.rust-lang.org/stable/rust-by-example/">Rust By Example</a></li>
<li><a href="https://play.rust-lang.org/?version=stable">Rust Playground</a></li>
<li><a href="https://t.me/rustlangbr">Rust Brasil (Telegram)</a></li>
</ul>
</section>
<section>
<h2>E agora?</h2>
<ul>
<li><a href="https://rustup.rs/">rustup</a></li>
<li><a href="https://doc.rust-lang.org/book/">The Rust Book</a></li>
<li><a href="https://doc.rust-lang.org/stable/rust-by-example/">Rust By Example</a></li>
<li><a href="https://play.rust-lang.org/?version=stable">Rust Playground</a></li>
<li><a href="https://t.me/rustlangbr">Rust Brasil (Telegram)</a></li>
</ul>
</section>
<section data-background='_images/thats-all-folks.jpg'>
<div class="semi-opaque">
<ul class="empty">
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li><a href="https://functional.cafe/@juliobiason">https://functional.cafe/@juliobiason</a></li>
<li><a href="https://t.me/juliobiason">https://t.me/juliobiason</a></li>
<li>julio.biason@pm.me</li>
<li><a href="http://presentations.juliobiason.net">http://presentations.juliobiason.net</a></li>
</ul>

Loading…
Cancel
Save