O que é que o Java não tem?
-
Upload
denis-costa -
Category
Technology
-
view
1.040 -
download
0
description
Transcript of O que é que o Java não tem?
O que eh que O que eh que o o javajava nao nao
tem?tem?
Denis costaDenis costa@deniscostadsc@deniscostadsc
Etb Etb fatecfatec
open source open source linuxlinuxregexregex webweb pythonpython
Coding dojoCoding dojo traducao traducao django django javascriptjavascript
comunidadecomunidade
sou programadorsou programador
20062006 pascal, – pascal, – delphi delphi 20072007 shell script, regex– shell script, regex–20082008 python– python–20102010 Javascript– Javascript–20112011 C, java– C, java–20122012 javascript– javascript–
20062006 pascal, – pascal, – delphi delphi 20072007 shell script, regex– shell script, regex–20082008 python– python–20102010 Javascript– Javascript–20112011 C, java– C, java–20122012 – – javascriptjavascript
Por que aprender Por que aprender javascript de novo?javascript de novo?
de novo nao, de novo nao, de verdadede verdade
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
vai dizer vai dizer que essas que essas
gambiarras gambiarras sao boas?sao boas?
essas coisas nao essas coisas nao sao gambiarras, sao gambiarras, e eu vou explicar e eu vou explicar
o motivoo motivo
Pascal == C == javaPascal == C == java
Abra sua menteAbra sua mente
afinal, o queafinal, o queeh que oeh que o
java nao tem?java nao tem?
tipagem tipagem dinamicadinamica
Variaveis sem tipoVariaveis sem tipo
variavelvariavel objetoobjeto
number = (1..100).to_a.choiceif number == 42 # runtime error puts('4' + 2)end
Checagem de tipos em Checagem de tipos em tempo de execucaotempo de execucao
ProsProsee
contrascontras
ContrasContras
- Sem checagem em tempo de compilacao- Sem checagem em tempo de compilacao
prospros
- sem casting- sem casting- sem interfaces ou classes em comum- sem interfaces ou classes em comum
Quem tem?Quem tem?
Ruby, Python, Ruby, Python, Javascript, Php, lua Javascript, Php, lua perl, smalltalk...perl, smalltalk...
Duck Duck typingtyping
"quando eu vejo um passaro "quando eu vejo um passaro que anda como um pato, nada que anda como um pato, nada como um pato e grasna como como um pato e grasna como
um pato, eu chamo essa um pato, eu chamo essa passaro de pato."passaro de pato."
James Whitcomb RileyJames Whitcomb Riley
alex martellialex martelli
interface interface implicitaimplicita
polimorfismo polimorfismo sem interfaces sem interfaces
ou herancaou heranca
def foo(my_object): my_object.my_method()
my_object[1]
my_object.__getitem__(1)
Quem tem?Quem tem?
Ruby, Python, Ruby, Python, Javascript, Php, perl, Javascript, Php, perl, smalltalk, smalltalk, C#, lua...C#, lua...
Passagem Passagem flexivel de flexivel de parametrosparametros
def foo(*args): pass foo()foo(1, 2, 3, 4, 5)foo(*[1, 2, 3, 4, 5])
def foo(**kwargs): pass foo()foo(a=1, b=2, c=3)foo(**{'a': 1, 'b': 2, 'c': 3})
def foo(param=True): pass foo()foo(False)foo(param=False)
def foo(param, param_two=True, *args, **kwargs): pass
sem sem sobrecarga sobrecarga de metodosde metodos
Quem tem?Quem tem?
Python, ruby, lua, Python, ruby, lua, JavascriptJavascript**......
first first class class
functionsfunctions
funcoes sao funcoes sao objetos comuns, objetos comuns, como inteiros e como inteiros e
stringsstrings
podem ser podem ser passadas como passadas como parametro e parametro e
retornadas como retornadas como valor de outra valor de outra
funcaofuncao
def calculate(number, functions): for function in functions: number = function(number) return number def sum_one(number): return number + 1 def multiply_two(number): return number * 2 def power_three(number): return number ** 3 functions = [sum_one, multiply_two, power_three] print calculate(2, functions)
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 = surround('strong');small = surround('small');
strong('My text');// <strong>My text</strong>
small('My text');// <small>My text</small>
Quem tem?Quem tem?
Python, ruby, lua, Python, ruby, lua, Javascript, c++Javascript, c++**, ,
lisp...lisp...
closureclosure
eh uma eh uma necessidade de necessidade de
funcoes de funcoes de primeira classeprimeira classe
var counter = function () { var number = 0; return function () { return ++number; };}();
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
Quem tem?Quem tem?
Python, ruby, lua, Python, ruby, lua, Javascript, c++Javascript, c++**, ,
lisp...lisp...
list list comprehensioncomprehension
inspirado nos inspirado nos conjuntos da conjuntos da matematicamatematica
cria lista cria lista baseado em baseado em
lista lista existenteexistente
even = [s for s in range(1001) if s % 2 == 0]
Quem tem?Quem tem?
Python, ruby, erlang, Python, ruby, erlang, scala, smalltalk...scala, smalltalk...
lambda functionslambda functions
funcao declarada funcao declarada que pode ser que pode ser
executada sem executada sem estar ligada a uma estar ligada a uma
referenciareferencia
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?Quem tem?
Python, ruby, javascript, Python, ruby, javascript, lua, erlang, scala, lua, erlang, scala, smalltalk, javasmalltalk, java**......
ObrigadoObrigado
Q & AQ & A