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
86
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
69
Git - O mínimo que você precisa saber
deniscostadsc
2
200
Shell Script
deniscostadsc
2
2.7k
Coding Dojo
deniscostadsc
1
110
Other Decks in Technology
See All in Technology
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
480
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
57k
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
2
1.3k
マルチモーダル理解と生成の統合 DeepSeek Janus, etc... / Multimodal Understanding and Generation Integration
hiroga
0
370
SA Night #2 FinatextのSA思想/SA Night #2 Finatext session
satoshiimai
1
130
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
290
地方拠点で エンジニアリングマネージャーってできるの? 〜地方という制約を楽しむオーナーシップとコミュニティ作り〜
1coin
1
220
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
3
300
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
6.6k
第13回 Data-Centric AI勉強会, 画像認識におけるData-centric AI
ksaito_osx
0
370
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
1.2k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Code Review Best Practice
trishagee
66
17k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
RailsConf 2023
tenderlove
29
1k
A better future with KSS
kneath
238
17k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Practical Orchestrator
shlominoach
186
10k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Scaling GitHub
holman
459
140k
Optimizing for Happiness
mojombo
376
70k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
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