o que é que o java não tem?

Post on 13-Jan-2015

1.038 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

top related