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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
MCPで決済に楽にする
mu7889yoon
0
140
FASTでAIエージェントを作りまくろう!
yukiogawa
4
130
The essence of decision-making lies in primary data
kaminashi
0
120
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
5
2.4k
Navigation APIと見るSvelteKitのWeb標準志向
yamanoku
2
120
CREがSLOを握ると 何が変わるのか
nekomaho
0
140
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
170
Phase08_クイックウィン実装
overflowinc
0
2k
私がよく使うMCPサーバー3選と社内で安全に活用する方法
kintotechdev
0
130
GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える
flatt_security
8
5k
DMBOKを使ってレバレジーズのデータマネジメントを評価した
leveragestech
0
430
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
120
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
Into the Great Unknown - MozCon
thekraken
40
2.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
89
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
We Have a Design System, Now What?
morganepeng
55
8k
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