O que eh que o java nao    tem?
Denis costa@deniscostadsc
Etb fatec open source linux  regex web python  Coding dojotraducao django javascript      comunidade
sou programador
2006 – pascal, delphi2007 – shell script, regex2008 – python2010 – Javascript2011 – C, java2012 – javascript
2006 – pascal, delphi2007 – shell script, regex2008 – python2010 – Javascript2011 – C, java2012 – javascript
Por que aprenderjavascript de novo?
de novo nao, de verdade
var fatorial = function () {    // Memoization    var results = [];    return function fat (n) {        if(results[n])    ...
vai dizer que essasgambiarras sao boas?
essas coisas naosao gambiarras,e eu vou explicar    o motivo
Pascal == C == java
Abra sua mente
afinal, o que   eh que ojava nao tem?
tipagemdinamica
Variaveis sem tipo variavel   objeto
Checagem de tipos em  tempo de execucaonumber = (1..100).to_a.choiceif number == 42    # runtime error    puts(4 + 2)end
Pros    econtras
Contras- Sem checagem em tempo de compilacao
pros- sem casting- sem interfaces ou classes em comum
Quem tem?   Ruby, Python,Javascript, Php, lua perl, smalltalk...
Ducktyping
"quando eu vejo um passaroque anda como um pato, nadacomo um pato e grasna como  um pato, eu chamo essa     passaro de pat...
alex martelli
interfaceimplicita
polimorfismosem interfaces  ou heranca
def foo(my_object):    my_object.my_method()
my_object[1]
my_object.__getitem__(1)
Quem tem?    Ruby, Python,Javascript, Php, perl,smalltalk, C#, lua...
Passagemflexivel deparametros
def foo(*args):    passfoo()foo(1, 2, 3, 4, 5)foo(*[1, 2, 3, 4, 5])
def foo(**kwargs):    passfoo()foo(a=1, b=2, c=3)foo(**{a: 1, b: 2, c: 3})
def foo(param=True):    passfoo()foo(False)foo(param=False)
def foo(param, param_two=True, *args, **kwargs):    pass
semsobrecargade metodos
Quem tem?Python, ruby, lua,  Javascript*...
first  classfunctions
funcoes saoobjetos comuns,como inteiros e    strings
podem ser passadas como  parametro eretornadas como valor de outra     funcao
def calculate(number, functions):    for function in functions:        number = function(number)    return numberdef sum_o...
def my_map(function, items):    result = []    for item in items:        result.append(function(item))    return result
var surround = function (tag) {    return function (text) {        return < + tag + > + text + </ + tag + >;    };};strong...
Quem tem?Python, ruby, lua,Javascript, c++*,     lisp...
closure
eh umanecessidade de  funcoes deprimeira classe
var counter = function () {     var number = 0;     return function () {         return ++number;     };}();
var fatorial = function () {    // Memoization    var results = [];    return function fat (n) {        if(results[n])    ...
Quem tem?Python, ruby, lua,Javascript, c++*,     lisp...
listcomprehension
inspirado nosconjuntos da matematica
cria listabaseado em   lista existente
even = [s for s in range(1001) if s % 2 == 0]
Quem tem?Python, ruby, erlang, scala, smalltalk...
lambda functions
funcao declarada   que pode ser  executada semestar ligada a uma    referencia
lambda x: x + x
lambda{|x| x + x}
(int x) -> x + x() -> 42(String s) -> { System.out.println(s); }
map(lambda x: x + x, [1, 2, 3, 4])
Quem tem?Python, ruby, javascript,   lua, erlang, scala,   smalltalk, java*...
Obrigado Q & A
O que é que o Java não tem?
O que é que o Java não tem?
O que é que o Java não tem?
O que é que o Java não tem?
O que é que o Java não tem?
O que é que o Java não tem?
O que é que o Java não tem?
Upcoming SlideShare
Loading in …5
×

O que é que o Java não tem?

1,246 views
1,199 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,246
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

O que é que o Java não tem?

  1. 1. O que eh que o java nao tem?
  2. 2. Denis costa@deniscostadsc
  3. 3. Etb fatec open source linux regex web python Coding dojotraducao django javascript comunidade
  4. 4. sou programador
  5. 5. 2006 – pascal, delphi2007 – shell script, regex2008 – python2010 – Javascript2011 – C, java2012 – javascript
  6. 6. 2006 – pascal, delphi2007 – shell script, regex2008 – python2010 – Javascript2011 – C, java2012 – javascript
  7. 7. Por que aprenderjavascript de novo?
  8. 8. de novo nao, de verdade
  9. 9. var fatorial = function () { // Memoization var results = []; return function fat (n) { if(results[n]) return results[n]; if(n === 0) result = 1; else result = fat(n – 1) * n; results[n] = result; return results[n]; };}();fatorial(5); // 120 - 6 recursoesfatorial(6); // 720 - 2 recursoes
  10. 10. vai dizer que essasgambiarras sao boas?
  11. 11. essas coisas naosao gambiarras,e eu vou explicar o motivo
  12. 12. Pascal == C == java
  13. 13. Abra sua mente
  14. 14. afinal, o que eh que ojava nao tem?
  15. 15. tipagemdinamica
  16. 16. Variaveis sem tipo variavel objeto
  17. 17. Checagem de tipos em tempo de execucaonumber = (1..100).to_a.choiceif number == 42 # runtime error puts(4 + 2)end
  18. 18. Pros econtras
  19. 19. Contras- Sem checagem em tempo de compilacao
  20. 20. pros- sem casting- sem interfaces ou classes em comum
  21. 21. Quem tem? Ruby, Python,Javascript, Php, lua perl, smalltalk...
  22. 22. Ducktyping
  23. 23. "quando eu vejo um passaroque anda como um pato, nadacomo um pato e grasna como um pato, eu chamo essa passaro de pato." James Whitcomb Riley
  24. 24. alex martelli
  25. 25. interfaceimplicita
  26. 26. polimorfismosem interfaces ou heranca
  27. 27. def foo(my_object): my_object.my_method()
  28. 28. my_object[1]
  29. 29. my_object.__getitem__(1)
  30. 30. Quem tem? Ruby, Python,Javascript, Php, perl,smalltalk, C#, lua...
  31. 31. Passagemflexivel deparametros
  32. 32. def foo(*args): passfoo()foo(1, 2, 3, 4, 5)foo(*[1, 2, 3, 4, 5])
  33. 33. def foo(**kwargs): passfoo()foo(a=1, b=2, c=3)foo(**{a: 1, b: 2, c: 3})
  34. 34. def foo(param=True): passfoo()foo(False)foo(param=False)
  35. 35. def foo(param, param_two=True, *args, **kwargs): pass
  36. 36. semsobrecargade metodos
  37. 37. Quem tem?Python, ruby, lua, Javascript*...
  38. 38. first classfunctions
  39. 39. funcoes saoobjetos comuns,como inteiros e strings
  40. 40. podem ser passadas como parametro eretornadas como valor de outra funcao
  41. 41. def calculate(number, functions): for function in functions: number = function(number) return numberdef sum_one(number): return number + 1def multiply_two(number): return number * 2def power_three(number): return number ** 3functions = [sum_one, multiply_two, power_three]print calculate(2, functions)
  42. 42. def my_map(function, items): result = [] for item in items: result.append(function(item)) return result
  43. 43. var surround = function (tag) { return function (text) { return < + tag + > + text + </ + tag + >; };};strong = surround(strong);small = surround(small);strong(My text);// <strong>My text</strong>small(My text);// <small>My text</small>
  44. 44. Quem tem?Python, ruby, lua,Javascript, c++*, lisp...
  45. 45. closure
  46. 46. eh umanecessidade de funcoes deprimeira classe
  47. 47. var counter = function () { var number = 0; return function () { return ++number; };}();
  48. 48. var fatorial = function () { // Memoization var results = []; return function fat (n) { if(results[n]) return results[n]; if(n === 0) result = 1; else result = fat(n – 1) * n; results[n] = result; return results[n]; };}();fatorial(5); // 120 - 6 recursoesfatorial(6); // 720 - 2 recursoes
  49. 49. Quem tem?Python, ruby, lua,Javascript, c++*, lisp...
  50. 50. listcomprehension
  51. 51. inspirado nosconjuntos da matematica
  52. 52. cria listabaseado em lista existente
  53. 53. even = [s for s in range(1001) if s % 2 == 0]
  54. 54. Quem tem?Python, ruby, erlang, scala, smalltalk...
  55. 55. lambda functions
  56. 56. funcao declarada que pode ser executada semestar ligada a uma referencia
  57. 57. lambda x: x + x
  58. 58. lambda{|x| x + x}
  59. 59. (int x) -> x + x() -> 42(String s) -> { System.out.println(s); }
  60. 60. map(lambda x: x + x, [1, 2, 3, 4])
  61. 61. Quem tem?Python, ruby, javascript, lua, erlang, scala, smalltalk, java*...
  62. 62. Obrigado Q & A

×