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
UIテスト自動化サポート- Testbed for XCUIAutomation practice
notoroid
0
130
OpenHands🤲にContributeしてみた
kotauchisunsun
1
400
Witchcraft for Memory
pocke
1
220
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
10k
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.1k
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
290
実践! AIエージェント導入記
1mono2prod
0
150
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
120
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
180
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
910
BrainPadプログラミングコンテスト記念LT会2025_社内イベント&問題解説
brainpadpr
1
160
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
The Cult of Friendly URLs
andyhume
79
6.5k
GitHub's CSS Performance
jonrohan
1031
460k
4 Signs Your Business is Dying
shpigford
184
22k
Navigating Team Friction
lara
187
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
940
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
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