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
88
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
71
Git - O mínimo que você precisa saber
deniscostadsc
2
200
Shell Script
deniscostadsc
2
2.8k
Coding Dojo
deniscostadsc
1
110
Other Decks in Technology
See All in Technology
How do i Get in Touch With QuickBooks Payroll Support®️ USA Contact Numbers: Complete 2025 Support Guide
connectquickbooks
0
100
The Madness of Multiple Gemini CLIs Developing Simultaneously with Jujutsu
gunta
0
410
AWS Well-Architected から考えるオブザーバビリティの勘所 / Considering the Essentials of Observability from AWS Well-Architected
sms_tech
1
770
20250708オープンエンドな探索と知識発見
sakana_ai
PRO
5
1.2k
ソフトウェアQAがハードウェアの人になったの
mineo_matsuya
3
240
SREを知らずに SREマネージャーになった話 / How I Became an SRE Manager Without Knowing What SRE Is
moneyforward
0
180
振り返りTransit Gateway ~VPCをいい感じでつなげるために~
masakiokuda
4
220
Transformerを用いたアイテム間の 相互影響を考慮したレコメンドリスト生成
recruitengineers
PRO
2
580
QAを早期に巻き込む”って どうやるの? モヤモヤから抜け出す実践知
moritamasami
2
150
エンジニアリングマネージャー“お悩み相談”パネルセッション
ar_tama
1
490
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.7k
デザインレビューをAIにしてもらいたい!
tomuro
2
140
Featured
See All Featured
Designing Experiences People Love
moore
142
24k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
How to Ace a Technical Interview
jacobian
278
23k
RailsConf 2023
tenderlove
30
1.2k
How GitHub (no longer) Works
holman
314
140k
Side Projects
sachag
455
43k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
980
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building Applications with DynamoDB
mza
95
6.5k
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