Vous êtes sur la page 1sur 3

"Ver aquilo que temos diante do nariz requer uma luta constante".

George Orwell
Quando eu entrei na rea de TI, me deparei com diversos termos antes totalmente de
sconhecidos por mim. Logo percebi que se eu quisesse realmente me tornar um prof
issional da rea uma das primeiras coisas que eu deveria fazer era aprender o voca
bulrio comum utilizado por desenvolvedores.
Assim, para citar alguns, logo aprendi a diferena entre servidor e cliente, lingu
agem alto nvel e baixo nvel, linguagem orientada a objetos e procedural, etc.
Alguns desses termos, entretanto, tive especial dificuldade de entender. Inicial
mente, atribu isso somente minha falta de experincia, porm medida que minha capacid
ade crtica aumentava, percebi que na verdade muitos desses termos eram utilizados
de maneira confusa e, no poucas vezes, inapropriada.
Ciente disso, resolvi abordar a diferena entre algumas dessas palavras to importan
tes, mas que causam certa confuso. Acredito que pode ajudar tanto programadores i
nciantes, quanto aqueles com certa experincia.
Framework x Biblioteca x API
Linguagem interpretada x compilada
Untyped X Dynamic Typed X Statically Type
Strongly Typed X Loosely Typed
Framework x Biblioteca x API
Em meu primeiro contato com jQuery eu fiquei sem saber se ele era um framework,
uma biblioteca ou uma API.
Biblioteca
De acordo com Martin Fowler neste artigo, biblioteca apenas um conjunto de funes o
rganizadas normalmente em classes.
Em Javascript, as bibliotecas so organizadas em mdulos ou namespaces. Normalmente,
elas tornam a utilizao da prpria linguagem mais fcil. Zepto, jQuery, Closure, Proto
type e Underscore so todas bibliotecas.
Underscore, por exemplo, utilizado na criao do framework Backbone.js. Bibliotecas,
ento, so to generalistas que do suporte at criao de frameworks.
Frameworks
Framework um esqueleto que voc vai preenchendo com carne at ele ganhar vida.

Falando em termos de programao, um framework lhe proporciona uma estrutura, uma ab


strao prvia com um comportamento j construdo. O que voc voc faz preencher a estrutur
o framework com o comportamento(cdigo) desejado para construir uma aplicao nica.
Uma vez inserido o cdigo nas "lacunas" disponveis, o prprio framework vai se encarr
egar de chamar seu cdigo onde necessrio.

API
API uma abreviao para Interface de Programao de Aplicaes(Application Program Interfac
).
Essa definio no ajuda muito. O nico significado depreendido que estamos falando de u
ma simplificao(abstrao) que ajuda a construir aplicaes.
A verdade que popularmente API se tornou significado de qualquer especificao que o
ajude na construo de sua prpria aplicao. Assim, temos a REST API, jQuery API, Google
Maps API, Youtube API e diversas outras.
Tome, por exemplo, a REST API. Ela uma especificao para construo de servios de web se

rvice que simplificam, normalmente, o acesso e modificao de dados resultantes de s


olicitaes HTTP. A REST API no ao menos um componente desenvolvido por uma empresa e
specfica que voc "insere" dentro da sua aplicao. Ela puramente uma especificao que qu
lquer empresa pode aderir para facilitar a transferncia de dados.
Essa uma lista de 50 APIs teis a desenvolvedores para que voc possa ter uma idia ai
nda melhor do que estamos falando.
Interpretada x Compilada
Os pormenores da diferena so desconhecidos por mim que no tive todo o arcabouo terico
de cursos de computao. Mas existem umas diferenas centrais importantes quando se m
enciona esses termos. E eles so:

A diferena no na linguagem em si, mas em sua implementao. Assim, uma implementao perm
te que um compilador possa processar a linguagem e transform-la em linguagem de mq
uina a ser executada diretamente pelo hardware. A outra, a interpretada, process
ada para cdigo binrio, depois chega o interpretador e performa as aes especificadas.
Linguagens projetadas para ser mais facilmente compiladas, como C, so mais rpidas.
Existem tambm os chamados compiladores JIT(Just in Time) que podem trabalhar em c
onjunto com interpretadores pra tornar o processamento mais rpido. o caso da V8 J
avaScript Engine que deixou o Javascript bem mais rpido.
Dinamicamente Tipada x Estaticamente Tipada
comum ouvir de alguns programadores que Python, Ruby e Javascript so linguagens d
inmicas por no possurem tipos. Essa considerao equivocada. Embora essas linguagens re
almente sejam dinmicas, os valores das variveis possuem tipos. Elas possuem tipos,
mas so consideradas "Untyped Languages".
Veja a prpria declarao do criador do JavaScript quando perguntado se esta era uma l
inguagem no-tipada:
Academic types use "untyped" to mean "no static types". they are smart enough to
see that values have types (duh!). Context matters.
Resumindo, no vocabulrio programador Untyped o mesmo que Dynamically Typed. Enqua
nto Typed significa Statically Typed.
Pra evitar a confuso, recomendo o uso dos termos mais precisos Dinamicamente Tipa
da(Javascript,Python,Ruby) e Estaticamente Tipada(Java e C#).
As linguagens dinmicas s apontaro erros em tempos de execuo. As estticas acusam erros
antes do tempo de execuo(runtime).
Strongly Typed X Loosely Typed
O termo fortemente tipado constantemente associado a um sinnimo de estaticamente
tipado. O mesmo acontece com fracamente tipado e dinamicamente tipado.
Os termos, entretanto, no so sinnimos. Vejamos a classificao de 3 linguagens:
Python - Dinamicamente tipada e fortemente tipada.
C# - Estaticamente tipada e fortemente tipada.
Javascript - Dinamicamente tipada e fracamente tipada.
Linguagens fracamente tipadas (loosely typed) fazem uma converso implcita de tipos
e no acusam erros em operaes de diferentes tipos. Veja o exemplo do cdigo JavaScrip
t.
var a = 2;
var b = "2";

var c = a + b;
console.log(typeof c); //string
console.log(c); // 22
var d = 2;
var e = "2";
var f = d * e;
console.log(typeof f); //number
console.log(f); //4
Se fossemos executar o mesmo cdigo em Python
a = 2
b = "2"
c = a + b
Obteramos o seguinte erro: unsupported operand type(s) for +: 'int' and 'str'*.
Enquanto o cdigo em C#:
using System.IO;
using System;
class Program
{
static void Main()
{
int a = 2;
string b = "2";
var c = a * b;
Console.WriteLine(c);
}
}

Vous aimerez peut-être aussi