Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
O que é que o Java Não tem?
Search
Denis Costa
December 18, 2012
Technology
1
92
O que é que o Java Não tem?
Denis Costa
December 18, 2012
Tweet
Share
More Decks by Denis Costa
See All by Denis Costa
Defesa pessoal contra vigilância em massa
deniscostadsc
0
120
Django responsibilities
deniscostadsc
0
75
Git - O mínimo que você precisa saber
deniscostadsc
2
210
Shell Script
deniscostadsc
2
2.8k
Coding Dojo
deniscostadsc
1
110
Other Decks in Technology
See All in Technology
Webhook best practices for rock solid and resilient deployments
glaforge
1
280
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
150
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
210
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
220
Red Hat OpenStack Services on OpenShift
tamemiya
0
100
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
720
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
360
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
640
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
150
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
Code Review Best Practice
trishagee
74
20k
The Pragmatic Product Professional
lauravandoore
37
7.1k
The browser strikes back
jonoalderson
0
370
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
GraphQLとの向き合い方2022年版
quramy
50
14k
Done Done
chrislema
186
16k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Transcript
O que eh que O que eh que o o
java java nao nao tem? tem?
Denis costa Denis costa @deniscostadsc @deniscostadsc
Etb Etb fatec fatec open source open source linux linux
regex regex web web python python Coding dojo Coding dojo traducao traducao django django javascript javascript comunidade comunidade
sou programador sou programador
2006 2006 pascal, – pascal, – delphi delphi 2007 2007
shell script, regex – shell script, regex – 2008 2008 python – python – 2010 2010 Javascript – Javascript – 2011 2011 C, java – C, java – 2012 2012 javascript – javascript –
2006 2006 pascal, – pascal, – delphi delphi 2007 2007
shell script, regex – shell script, regex – 2008 2008 python – python – 2010 2010 Javascript – Javascript – 2011 2011 C, java – C, java – 2012 2012 – – javascript javascript
Por que aprender Por que aprender javascript de novo? javascript
de novo?
de novo nao, de novo nao, de verdade de 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 recursoes fatorial(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 motivo o motivo
Pascal == C == java Pascal == C == java
Abra sua mente Abra sua mente
afinal, o que afinal, o que eh que o eh
que o java nao tem? java nao tem?
tipagem tipagem dinamica dinamica
Variaveis sem tipo Variaveis sem tipo variavel variavel objeto objeto
number = (1..100).to_a.choice if number == 42 # runtime error
puts('4' + 2) end Checagem de tipos em Checagem de tipos em tempo de execucao tempo de execucao
Pros Pros e e contras contras
Contras Contras - Sem checagem em tempo de compilacao -
Sem checagem em tempo de compilacao
pros pros - 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 typing typing
"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 Riley James Whitcomb Riley
alex martelli alex martelli
interface interface implicita implicita
polimorfismo polimorfismo sem interfaces sem interfaces ou heranca ou 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 parametros parametros
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 metodos de metodos
Quem tem? Quem tem? Python, ruby, lua, Python, ruby, lua,
Javascript Javascript* *... ...
first first class class functions functions
funcoes sao funcoes sao objetos comuns, objetos comuns, como inteiros
e como inteiros e strings strings
podem ser podem ser passadas como passadas como parametro e
parametro e retornadas como retornadas como valor de outra valor de outra funcao funcao
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>
None
None
Quem tem? Quem tem? Python, ruby, lua, Python, ruby, lua,
Javascript, c++ Javascript, c++* *, , lisp... lisp...
closure closure
eh uma eh uma necessidade de necessidade de funcoes de
funcoes de primeira classe primeira 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 recursoes fatorial(6); // 720 - 2 recursoes
Quem tem? Quem tem? Python, ruby, lua, Python, ruby, lua,
Javascript, c++ Javascript, c++* *, , lisp... lisp...
list list comprehension comprehension
inspirado nos inspirado nos conjuntos da conjuntos da matematica matematica
cria lista cria lista baseado em baseado em lista lista
existente existente
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 functions lambda functions
funcao declarada funcao declarada que pode ser que pode ser
executada sem executada sem estar ligada a uma estar ligada a uma referencia 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? Quem tem? Python, ruby, javascript, Python, ruby, javascript,
lua, erlang, scala, lua, erlang, scala, smalltalk, java smalltalk, java* *... ...
None
None
None
None
None
Obrigado Obrigado Q & A Q & A