Your SlideShare is downloading. ×
0
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
11 historias e 1 segredo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

11 historias e 1 segredo

127

Published on

Curiosidades sobre linguagens de programação. Apresentação realizada no Startup Dev Day.

Curiosidades sobre linguagens de programação. Apresentação realizada no Startup Dev Day.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
127
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 11 HISTÓRIAS E 1 SEGREDOLuiz Borbahttp://borba.blog.br
  • 2. 1989Estudante1991Programador1994EmpreendedorAnalistadeTecnologia1998LíderTécnico20002001Arquiteto deSoftware2005ScrumMaster2010Consultor emTecnologia2014(?)Consultor emNegóciosQuem éLuiz Borba?http://borba.blog.br
  • 3. O Pirulito
  • 4. “All non-trivial abstractions,to some degree, are leaky.”- Joel Spolsky
  • 5. Linguagens deprogramação são leakyabstractions.
  • 6. Temos obrigação deconhecer o que alinguagem queutilizamos faz pordebaixo dos panos.
  • 7. “When someone says: ‘Iwant a programminglanguage in which I needonly say what I wish done’,give him a lollipop.”- Alan J. Perlis
  • 8. Mergulhe
  • 9. O bugexistencial
  • 10. “The most likely way for theworld to be destroyed, mostexperts agree, is by accident.Thats where we come in; werecomputer professionals. Wecause accidents.”- Nathaniel Borenstein
  • 11. Qual a melhorforma deaprender umalinguagem?
  • 12. A Internet nãoesteve semprepor aqui...
  • 13. NÃO HÁ NADADE ERRADO EMLER LIVROS
  • 14. Não programe porcoincidência.
  • 15. Aprenda
  • 16. Eis o mistérioda FÉ
  • 17. |”May 2013” can’t be found|”””May 2013”” can’t be found”””May 2013” can’t be found”‘”May 2013” can’t be found’
  • 18. #include <stdio.h> main()[int value = 1; while(value<=3)[printf(|Value is %dn|, value);value++;] return array{1};]
  • 19. Qual a origem do QWERTY?
  • 20. O KALQ vinga?
  • 21. Não há progresso semdesafios. Desafie o“status quo”
  • 22. Desafie
  • 23. Tanto faz dá nacabeça quanto nacabeça dá?
  • 24. sort(lista)oulista.sort()
  • 25. Reflita
  • 26. Mister M
  • 27. salvar(objeto) {broker.beginTrans();broker.save(objeto);broker.commit();}
  • 28. salvar(objeto) {broker.save(objeto);}<transactional-methods><method>salvar</method></transactional-methods>
  • 29. @Transactionalsalvar(objeto) {broker.save(objeto);}
  • 30. Aspect-OrientedProgramming(AOP) é bacana
  • 31. Aspect-OrientedProgramming(AOP) é pura bosta
  • 32. Esse livroé bom pracaralho
  • 33. ...já esselivro é umamerda
  • 34. “Eu vou desdizerAquilo tudo que eu lhe disse antesEu prefiro serEssa metamorfose ambulanteDo que ter aquela velha opiniãoFormada sobre tudo”
  • 35. Mude
  • 36. Funcional ouOrientado a Objeto?
  • 37. “Software is getting slowerfaster than hardwarebecomes faster.”- Niklaus Wirth
  • 38. •Funções de alta ordem•Imutabilidade•Sem efeitos colaterais•Pattern Matching•Recursão•Currying•Lazy Evaluation•Continuations•Closures•Functional Composition•Referencial Transparency•Monads
  • 39. Linguagens Multi-Paradigmáticas
  • 40. Antene-se
  • 41. Vietnã dacomputação
  • 42. Object-Relational Mapping(ORM)Linguagens Orientadas a ObjetosBanco de Dados Relacionais
  • 43. NoSQLmas nada é para sempre
  • 44. Experimente
  • 45. COBOL morreu
  • 46. ou CONSERVADORAJava é uma linguagemREVOLUCIONÁRIA
  • 47. ENTERRE
  • 48. A Pior Linguagemdo Mundo
  • 49. ‘5’ + 3 = 53‘5’ - 2 = 2‘’ == ‘0’ // false0 == ‘’ // truefalse == undefined // falsefalse == null // falsenull == undefined // true
  • 50. Qual a linguagem?
  • 51. ACEITE
  • 52. LinguagemVerde
  • 53. Consumo de energia é cadadia mais importante
  • 54. Teremos linguagens ondepoderemos medir oconsumo do códigoproduzido?
  • 55. Viaje
  • 56. O que você querser quandocrescer?
  • 57. É possível serprogramador e ganhardinheiro?
  • 58. SEJA FIELA VOCÊ
  • 59. ...e o segredo?
  • 60. Rust
  • 61. “Rust is a general purpose,multi-paradigm, compiledprogramming languagedeveloped by Mozilla Research”- Wikipedia
  • 62. Está sendo usada para criaro Servo, um novo browserengine experimental
  • 63. C++ não é apropriada paracriar sistemas paralelos eseguros ao mesmo tempo
  • 64. Rust foi projetada para tera mesma performance deC/C++ mas sem o mesmorisco de bugs ou falhas desegurança
  • 65. fn main() {println(“hello world”);}
  • 66. use core::rand::RngUtil;fn main() {for ["Alice", "Bob", "Carol"].each |&name| {do spawn {let v = rand::Rng().shuffle([1, 2, 3]);for v.each |&num| {print(fmt!("%s says: %dn", name, num))}}}}
  • 67. TypeMemory safetyConcurrencyGenericsException handlingMemory modelCompilation modelsystem static, nominal, linear, algebraic, locally inferredno null or dangling pointers, no buffer overflowslightweight tasks with message passing, no shared memorytype parameterization with type classesunrecoverable unwinding with task isolationoptional task-local GC, safe pointer types with region analysisahead-of-time, C/C++ compatible
  • 68. let hi = "hi";let mut count = 0;while count < 10 {io::println(fmt!("count: %?", count));count += 1;}Imutável por default
  • 69. fn angle(vector: (float, float)) -> float {let pi = float::consts::pi;match vector {(0f, y) if y < 0f => 1.5 * pi,(0f, y) => 0.5 * pi,(x, y) => float::atan(y / x)}}Pattern Matching
  • 70. struct Point {x: float,y: float}let mut mypoint = Point { x: 1.0, y: 1.0 };let origin = Point { x: 0.0, y: 0.0 };mypoint.y += 1.0; // mypoint is mutable, and its fields as wellorigin.y += 1.0; // ERROR: assigning to immutable fieldStructs
  • 71. fn line(a: int, b: int, x: int) -> int{a * x + b}Funções
  • 72. Owning Pointers (~)fn f() {let x: ~int = ~1024; // allocate space and initialize an int// on the heapprintln(fmt!("%d", *x));} // <-- the memory that x pointed at is automatically freed herelet x = ~5;let z = x; // no new memory allocated, x can no longer be used
  • 73. fn foo() {let x: @int = @1024; // allocate space and initialize an int// on the heapbar(x); // pass it to `bar`println(fmt!("%d", *x)); // print it on the screen} // <-- the memory can be freed herefn bar(x: @int) {let y: @int = x; // make a new smart pointer to `x`} // <-- despite `y` going out of scope,the memory is *not* freed hereManaged Pointers (@)
  • 74. fn dogshow() {let dogs: [~Dog * 3] = [~Dog { name: ~"Spot" },~Dog { name: ~"Fido" },~Dog { name: ~"Snoopy" },];let winner: &Dog = dogs[1];// note use of `&` to form a referencefor dogs.each |dog| {println(fmt!("Say hello to %s", dog.name));}println(fmt!("And the winner is: %s!", winner.name));} // <-- all dogs destroyed hereBorrowed Pointers (&)
  • 75. Freezinglet mut x = 5;{let y = &x; // x is now frozen, it cannot be modified}// x is now unfrozen again
  • 76. use core::task::spawn;// Print something profound in a different task using a named functionfn print_message() { println("I am running in a different task!"); }spawn(print_message);// Print something more profound in a different task using a lambda expressionspawn( || println("I am also running in a different task!") );// The canonical way to spawn is using `do` notationdo spawn {println("I too am running in a different task!");}Tasks
  • 77. OBRIGADO!Luiz Borbahttp://borba.blog.br

×