Buscar

10 Linguagens de Programação que Você Deveria Aprender!

Prévia do material em texto

“Uma linguagem que não afeta a maneira que
você  pensa  sobre  programação,  não  vela  a
pena ser aprendida” – Alan Perlis
10 Linguagens de Programação que Você Deveria Aprender!
Posted by renato on maio 5th, 2011
Em 2006  foi  publicado  o  artigo  10  Linguagens  que Você Deveria Aprender  Imediatamenteque  ganhou
certa fama na internet. Embora o artigo tenha seu mérito, existem dois problemas básicos com ele:
1­ É de 2006, e as coisas mudam; e
2­ É focado na popularidade das linguagens e, principalmente, no mercado de trabalho.
Sim, eu creio que recomendar o aprendizado de linguagens baseando seu argumento na popularidade ou
mercado de trabalho como falho.
Para ilustrar o motivo, entre as 10 recomendações do artigo indicado acima temos:
­ C#; VB.NET e Java;
Estas 3 linguagens são todas orientadas a objetos baseadas em classes. Todas as 3 carregam conceitos
muito  próximos.  Se  você  programa  muito  bem  em  C#,  aprender  Java  não  vai  mudar  sua  vida  e  nem
ampliar verdadeiramente seus conhecimentos. O inverso também é igualmente verdadeiro.
O  que  eu  quero  dizer  é  que  se  deva  aprender
linguagens que sejam diferentes entre si  ou que,
ao menos,  lhe  ensinem  conceitos  novos.  É  claro
que se o trabalho exige que você aprenda alguma
linguagem afim à alguma que você  já domina, vá
em  frente  e  você  tirará  a missão  de  letra  pois  você  já  conhecerá  os  princípios  que  regem aquela  nova
linguagem.
Não sou o único a sugerir que um programador deva aprender sempre linguagens que lhe ensinem novos
conceitos – e não simplesmente uma nova linguagem. No altamente recomendável artigo Teach Yourself
Programming  in  Ten  Years,  Peter  Norvig  indica  que  um  programador  deveria  conhecer  ao  menos  6
linguagens. Porém, utilizando uma das afirmações de Alan Perlis  lembra  que:  “Uma  linguagem que  não
afeta a maneira que você pensa sobre programação, não vela a pena ser aprendida”. Uma ótima tradução
para este artigo pode ser encontrada aqui: Aprenda a Programar em Dez Anos.
Baseado na premissa acima, segue agora a minha versão da lista “10 Linguagens Você Deveria Aprender”.
Retirei  a  palavra  “Imediatamente”  porque  se  você  acessou  os  artigos  indicados  acima,  já  deve  ter
percebido que a pressa não é uma boa amiga nesta hora. E se você seguir a recomendação do  livro “O
Programador Pragmático” que sugere aos programadores a meta de se aprender uma nova linguagem por
ano,  segue abaixo  uma  sugestão  de  trabalho  para  os  próximos 10  anos!  (Isso  não  rima  com o  artigo
“Aprenda a Programar em Dez Anos”?)
 ATENÇÃO
Não é tão simples quanto parece definir uma linguagem de programação. Para fins deste artigo considerei como
linguagem de programação qualquer linguagem padronizada, que sirva para expressar instruções para um
computador e que, necessariamente seja Turing Completo. Isto deixa de lado linguagens como SQL, HTML, CSS,
XML e JSON que, embora tenham grande importância no mundo de hoje, ficam de fora do escopo deste artigo.
Índice das Linguagens Recomendadas:
1.  C – Para aprender ‘como as coisas realmente funcionam’;
2.  Java ou C# – Orientação a Objetos e entrar no mercado de trabalho;
Não  existe  uma  linguagem  de  conhecimento
obrigatório. Mas se existisse esta  linguagem,
seria  o  C.  Não  seria  exagero  afirmar  que  a
base  da  tecnologia  hoje  está,  em  sua maior
parte, construída em C.
Se  você  busca  por  uma  boa  colocação  no
mercado de trabalho, escolher entre Java ou
C# é uma ótima idéia.
3.  PHP ou Python – Programação Web em uma linguagem Script;
4.  JavaScript – Orientação a Objetos baseada em protótipos. Programação web do lado do cliente;
5.  LUA – Para aprender co­rotinas;
6.  Smalltalk  –  Linguagem  orientada  a  objetos  pura.  Sintaxe  baseada  na  troca  de  mensagens  entre
objetos;
7.  Lisp/Scheme ou Haskell – Programação funcional. Força a trabalhar com recursão;
8.  Prolog – Programação Lógica;
9.  Sisal – Programação paralela. Apresenta a programação orientada a fluxo de dados; e
10.  Rebol – Linguagem funcional – não pura – rica sintaticamente e altamente econômica.
Linguagens
C
Não  existe  uma  linguagem  de  conhecimento
obrigatório. Mas se existisse esta linguagem, seria
o C. Também não recomendo ninguém começar a
programar por ela. Mas seria uma ótima 2a ou 3a
linguagem.
C está  apenas uma camada de abstração acima
do  chamado  código  de  máquina.  Então  é  uma
linguagem importante para você aprender ‘como as coisas realmente funcionam’.
Outro forte argumento para aprender C é que no mundo da programação, a cultura C impera. C influenciou
e/ou  foi  utilizado  para  criar  várias  outras  linguagens.  Isto  significa  que  a  sintaxe  C  está  espalhada  por
várias outras linguagens como C++, Java, C#, PHP ou Javascript. Logo se você aprende C, várias outras
linguagens passam a ser familiares.
O  próprio  C++  inicialmente  era  compilado  para  C  e,  utilizando  o  compilador  C,  era  compilado  para
linguagem de máquina.  Embora  hoje  tenhamos  compiladores C++,  em geral  compiladores C++  também
compilam as  instruções em C. E  fato é que esta dobradinha C/C++  tem criado e  inspirado várias outras
linguagens. Para dar um exemplo, baixe o código fonte do PHP. Veja que ele é construído em C.
Se com C construímos o interpretador e bibliotecas da linguagem PHP, logo tudo o que pode ser feito com
PHP também poderia ser produzido com C. Com C poderíamos até dispensar o Apache fazendo com que
nosso  programa  responda  diretamente  as  requisições  que  chegam  pela  porta  80.  É  claro  que  nunca
sugeriria  que  alguém  fizesse  isso.  Utilizar  o  PHP  para  desenvolvimento  web  é  muito  mais  prático.  A
linguagem PHP é focada em desenvolvimento web. E, caso seja necessário, pode­se criar novas extensões
para PHP utilizando a linguagem C.
Outro  ponto  é  que  a  possibilidade  de  acessar  diretamente  endereços  de  memória,  faz  com  que
teoricamente  tudo  possa  ser  feito  com  C.  Como  conseqüência,  C  é  a  escolha  lógica  para  com  deseja
construir um novo sistema operacional. C está na base dos sistemas Windows, Linux, Unix, Minix etc.
Em resumo, não seria exagero afirmar que a base da tecnologia hoje está, em sua maior parte, construída
em C, direta ou indiretamente.
Java, C# se já não souber C++
Estas são, sem sombra de dúvidas, as linguagens
que  geram  mais  oportunidades  de  emprego  da
atualidade.  Então  se  você  busca  por  uma  boa
colocação no mercado de trabalho, escolher entre
Java ou C# é uma ótima  idéia. Mas como  falei a
idéia deste artigo não é limitar a nossa analise no mercado, mas sim buscarmos conceitos.
A  indicação aqui é que você escolha uma linguagem orientada a objetos, baseada em classe, compilável
(mesmo  que  para  bytecode)  e  tipagem  estática  para  aprender  a  programar.  Eu  recomendaria  você
escolher entre Java e C# para entrar neste mundo. Mas, caso você já saiba C++ você poderia pular para o
próximo grupo de linguagens. Se você é contra a Microsoft escolha Java. Caso a ame, vá de C#! 
Ambas as linguagens apresentam uma rica biblioteca de classes para os mais variados fins (contando com
a biblioteca do .NET no caso do C#). São linguagens de propósito geral podendo ser utilizadas para criar
aplicações desktop assim como aplicações web.
A grande vantagem do Java é que a sua aplicação será independente de plataforma. Servidores Linux são
bastante utilizados em empresas e neste ambiente Java possui grandes vantagens. Por outro  lado, C# é
uma  linguagem  mais  nova,  quase  10  anos,  e  isto,  nesta  área,  é  muito  tempo.  Então  C#  traz  muitos
conceitos que Java simplesmente não implementa. Não vou me deter na comparação entre as duas, mas
para uma analise mais profunda, visite o artigo Comparação entre Java e C Sharp. Então se seu objetivoé
simplesmente  aprender  novos  conceitos,  C#  trará  mais  benefícios.  Por  exemplo  C#  traz  suporte  a
Expressões Lambda e “Closures”, sendo possível:
Fazer com que um método retorne uma função que faz referência a uma variável fora de seu escopo:
(...)
Adder CreateAdder(int addend)
{
return delegate(int augend)
{
return addend + augend;
};
}
(...)
Ou ainda passar uma função como parâmetro:
var evens2 = numbers.FindAll((int n) => { return n % 2 == 0; });
Outro  fator  em  favor  do  C#  é  que,  por  razões  óbvias,  opera melhor  em  conjunto  com  outras  soluções
Microsoft o que em determinados cenários pode ser uma grande vantagem.
Mas apesar da aparente vantagem para a linguagem da Microsoft, não desconsidere Java. Afinal Java é a
linguagem  mais  utilizada  –  segundo  o  índice  TIOBE  –  e  aprender  a  linguagem  que  a  maioria  fala  é
tentador. E se você pensa em sistemas verdadeiramente independentes de plataforma, Java é a escolha.
Sem falar que, mesmo sendo seu objetivo aprender novos conceitos, estes mesmos que o C# implementa
pode ser encontrado em outras linguagens listadas abaixo.
Um outro fator em relação a Java: Se você considerar Java como não apenas uma linguagem mas como
uma plataforma, existem outras linguagens que rodam sobre a JVM, como o Groovy, e que suportam estas
e  outras  funcionalidades  de  linguagem  script  e/ou  tipicamente  funcionais.  Se  você  já  conhece  Java,  e
principalmente se você só conhece Java e é apaixonado pela JVM, talvez aprender Groovy seja um bom
caminho.
E porque não aprender ambas, Java e C# ? Bem, eu continuo defendendo que, mesmos diferentes, elas
ainda são muito próximas. Ambas são inspiradas em C++, sem falar que Java foi a grande inspiração de
C#. É  lógico que ao  final você poderia as duas. Mas  recomendo que escolha uma e vá aprender outras
linguagens. Se um belo dia tiver necessidade da outra, você aprenderá fácil.
A  recomendação  é  para  que  o  programador
tenha  também  alguma  experiência  com
programação  para  web  com  uma  destas
linguagens scripts (PHP ou Python). A lógica
é  bem  diferente  do  que  ocorre  com  a
programação para desktop.
PHP ou Python
Depois  de  termos  passado  pelas  linguagens
orientadas a objetos usualmente compiláveis e de
tipagem estática, o passo natural é conhecermos
agora alguma linguagem ainda orientada a objeto,
porém  interpretada  e  de  tipagem  dinâmica.  E
estas  duas  são  exatamente  isto:  linguagens
scripts,  de  tipagem  dinâmica,  orientadas  a
objetos,  bastante  utilizadas  no  desenvolvimento
web embora as duas possam ser utilizadas em ambiente desktop.
Mas a  recomendação aqui é principalmente para que o programador  tenha  também alguma experiência
com programação para web com uma destas  linguagens scripts. A  lógica é bem diferente do que ocorre
com a programação para desktop. Normalmente, ao programarmos para desktop, a nossa aplicação fica
instanciada ‘rodando’, até que o usuário feche a aplicação. Não raro, principalmente em programação com
C, temos uma rotina principal que implementa um loop quase eterno, e tudo ocorre dentro deste loop. Por
exemplo:
while(!saiu_do_programa) {
/* Aqui são capturado e tratados os eventos, as rotinas para redesenhar a interface
são chamadas etc. */
}
Embora em Java e C# não tenhamos a necessidade de criarmos tal loop, a idéia é que o programa fica em
execução.  Os  dados  são  persistentes  e  o  foco  da  programação  fica  no  tratamento  dos  eventos  que  o
usuário gera ao  interagir com os elementos de  interface. Por exemplo, numa clássica aplicação desktop,
implementaríamos uma rotina determinando o que deve ocorrer ao se clicar em um certo botão.
Já  uma  aplicação web  nestas  linguagens,  a  idéia  é muito  diferente.  Seu  programa  não  ‘fica  rodando’  a
espera dos eventos do usuário. Sua aplicação nasce e morre em cada requisição do usuário. O foco não é
mais  nos  eventos  do  usuário,  mas  sim  nas  entradas  de  dados/acessos  que  estes  usuários  fazem.  Os
dados  não  são  persistentes,  então  em  cada  acesso,  você  deverá  redefinir  as  constantes,  variáveis,
conexões com o banco, ler a entrada do usuário, decidir o que fazer com ela, criar uma página html, enviar
o html para o navegador e terminar a aplicação. Em resumo, cada acesso é uma vida inteira.
Destas duas linguagens listadas, PHP é a que tem o foco para web mais bem definido, enquanto a outra
tenta se posicionar como uma  linguagem de propósito mais geral. Talvez por  isso PHP seja a  linguagem
mais utilizada neste meio. A grande maioria dos CMS existentes é construído em PHP. E isto inclui nomes
de  muito  peso  como  o  WordPress,  Joomla,  Moodle  e  Drupal.  Portanto  se  você  pensa  em  focar  no
desenvolvimento  de  Sistemas  Web,  e/ou  ainda  dar  suporte  ou  customizar  os  CMS  listados  acima,
considere o PHP. Vale ainda dizer que o próprio Facebook é em sua maior parte PHP. Só para deixar claro
eles criaram um compilador de PHP para C++, o HipHop. Com isso eles uniram o foco e agilidade do PHP
para desenvolvimento web com a rapidez característica de uma linguagem compilada.
Por  outro  lado,  das  duas PHP  é  a mais  pobre  em  recursos  –  leia­se  conceitos.  Faltam  para  linguagem
construções  como  threads  que  normalmente  temos  como  algo  básico  em  outras  linguagens.  Talvez  a
maior motivo disto seja exatamente seu  foco bem definido para Web onde a necessidade de criação de
threads é algo bem mais raro do que costuma ocorrer com aplicações desktop.
Python,  por  sua  proposta mais  generalista,  é  uma  ótima  escolha  como  linguagem  para  prototipação  de
sistemas  construídos  em  linguagens,  digamos,  mais  burocráticas  como  C,  C++,  C#  ou  Java.  Mas,  vale
lembrar, o Python pode ser utilizado sozinho, como a linguagem escolhida para o desenvolvimento de um
JavaScript  não  tem  concorrentes.  Ela  é
simplesmente  a  linguagem  de  programação
web  no  lado  do  cliente.  Por  isso  vale
aprender, e aprender bem.
Que  tal  aprender  sobre  co­rotinas  utilizando
uma  linguagem  brasileira  que  está  perto  de
alcançar  o  TOP­10  das  linguagens  mais
utilizadas do mundo? Na  linguagem LUA, as
co­rotinas são construções completas.
grande sistema, web ou desktop. Por  ser  simples e de propósito geral,  é  também uma ótima  linguagem
para o aprendizado de programação, onde o aluno pode aprender diretamente lógica de programação sem
perder muito tempo com as já ditas ‘burocracias’ das linguagens acima.
JavaScript
A  Orientação  a  objetos  está  obrigatoriamente
ligada ao conceito de classes, correto? Resposta:
Não!
Enquanto  as  linguagens  do  grupo  anterior  são
baseadas  em  classes,  JavaScript  é  uma
linguagem  orientada  a  objetos  baseada  em
protótipo.  Assim,  conceitualmente,  tudo  é  objeto  e  não  temos  classes.  Ter  contato  com  este  outro
paradigma é  o  primeiro motivo  para  conhecer  a  linguagem. Vale  comentar  que,  em  relação a  criação e
definição  de  objetos,  JavaScript  é,  em  geral,  muito  mais  expressivo  do  que  linguagens  baseadas  em
classes.
O outro motivo é que Javascript é uma linguagem importante por definição: É praticamente impossível falar
em desenvolvimento web sem falar em Javascript. Quase todos os navegadores possuem um interpretador
Javascript. Logo, virtualmente, Javascript está presente e pode ser executado em praticamente  todos os
computadores  do  mundo.  Sem  falar  que  com  as  novas  implementações  do  HTML5,  a  utilização  do
Javascript do lado do cliente, no contexto web ganha uma grande força.
Douglas Crockford fala, em seu artigo, que Javascript é a  linguagem mais  incompreendida do mundo. E
entre seus argumentos um deles aponta o amadorismo que envolve a linguagem. De fato, se por um lado
a maioria das pessoas que criam/utilizam pequenas rotinas em JavaScriptnão são programadores da fato,
JavaScript é uma das linguagens mais flexíveis. Ou seja, temos muito sendo JavaScript sub­aproveitado.
Para dar uma idéia desta flexibilidade/dinamismo, em JavaScript:
1­ Embora não tenha classes, você pode programar como se tivesse;
2­ Pode­se implementar herança simples, múltipla ou até parcial, ou seja, selecionando os métodos que se
quer herdar;
3­ Pode­se adicionar ou substituir os métodos para as  ‘classes’(na verdade seriam protótipos).  Isto afeta
todos os objetos, atuais ou futuros, funcionando retroativamente; e
4­ Pode­se adicionar ou substituir os métodos para apenas um objeto específico.
Por  fim,  vale  lembrar  que,  diferente  do  que  ocorre  com  outras  linguagens  que  normalmente  concorrem
entre  elas:  Java  vs  C#  ou  PHP  vs  Python,  JavaScript  não  tem  concorrentes.  Ela  é  simplesmente  a
linguagem de programação web no lado do cliente. Por isso vale aprender, e aprender bem.
LUA
Uma  das  recomendações  do  artigo  “Aprenda  a
Programar  em  Dez  Anos”  é  que  entre  as
linguagens  que  o  programador  escolha  para
aprender,  inclua  uma  com  suporte  a  co­rotinas.
Então que tal aprender sobre co­rotinas utilizando
uma  linguagem  brasileira  que  está  perto  de
alcançar o TOP­10 das linguagens mais utilizadas
do mundo, segundo o índice TIOBE?
Para quem não sabe, uma co­rotina é uma generalização de rotina/função/procedimento que permite que
a execução da mesma seja suspensa temporariamente passando o controle para outra rotina. E em algum
ponto no futuro, ao retornar o controle para a co­rotina inicial, sua execução é restabelecida no ponto onde
Smalltalk é uma linguagem orientada a objetos
pura. Um programa em Smalltalk  se  resume
em objetos e em trocas de mensagens entre
eles.  O  maior  benefício  de  se  aprender
Smalltalk  talvez  seja  começar  a  fugir  da
‘cultura C’.  Sua  sintaxe  é  bem  diferente  das
linguagens tradicionais.
havia parado e tendo seu contexto local recuperado.
Na  linguagem LUA, as  co­rotinas  são construções completas. Em outras palavras,  nesta  linguagem elas
são construções stackfull de primeira classe. Ser stackfull  significa que em LUA as co­rotinas podem ser
suspensas mesmo enquanto executam uma função aninhada. Ser de primeira classe significa que as co­
rotinas podem ser  livremente manipuladas pelo programador, podendo ser  invocadas em qualquer ponto
do  programa  ou  ordem.  Isto,  por  exemplo,  oferece  um  grau  de  expressividade  muito  maior  do  que
encontramos na implementação dos geradores de Python (que também é um exemplo de implementação
de co­rotina).
Mas LUA possui outros fatores que fazem valer a pena o seu aprendizado. Possui um tipo de dados básico
muito versátil chamado de tabela. Embora LUA não seja originalmente uma linguagem orientada a objetos,
a flexibilidade encontrada neste tipo de dados permite que ela se comporte como se o fosse, caso isto seja
necessário.
Outro fator é que o foco de LUA é diferente do foco das linguagens vistas até agora. Lua nasceu para ser
uma linguagem de extensão incluindo funcionalidades/facilidades de uma linguagem script em linguagens
como  C,  C++  ou  Java.  Embora  LUA  também  possa  ser  utilizada  em  modo  standalone  ou  ainda  como
linguagem script para web.
Smalltalk
Smalltalk  é  uma  linguagem  orientada  a  objetos
pura.  Isto  significa  que  tudo  é  objeto. Mesmo  os
tipos  primitivos  como  o  inteiro.  Até  mesmo  a
classe é um tipo especial de objeto assim como os
métodos  ou  blocos  de  código.  Um  programa  em
Smalltalk  se  resume  em  objetos  e  em  trocas  de
mensagens  entre  eles.  O  próprio  nome  da
linguagem, ‘Papo Furado’, mostra bem como este
conceito  de  troca  de mensagens  entre  objetos  é
importante  nesta  linguagem.  A  idéia  é  que  os  objetos  fiquem  ‘batendo  papo’  ou  melhor,  troquem
mensagens entre eles.
Como  tudo  é  um  objeto,  tudo  em Smalltalk  é  um  objeto,  tudo  em Smalltalk  também  é  um  elemento  de
primeira ordem. Isto significa que um inteiro é encarado da mesma forma que um bloco de código e que
ambos podem ser atribuídos a uma variável.
Da Wikipedia, seguem os conceitos trazidos pela linguagem:
Tudo é representado como objetos. (De longe, a regra mais importante em Smalltalk)
Toda computação é disparada pelo envio de mensagens. Uma mensagem é enviada para um objeto
fazer alguma coisa.
Quase todas as expressões são da forma .
Mensagens fazem com que métodos sejam executados, sendo que o mapeamento de mensagens
para métodos  é  determinado  pelo  objeto  recebedor.  Os métodos  são  as  unidades  de  código  em
Smalltalk, equivalente a funções ou procedimentos em outras linguagens.
Todo objeto é uma  instância de alguma classe. 12 é uma  instância da classe SmallInteger.  ‘abc’ é
uma instância da classe String. A classe determina o comportamento e os dados de suas instâncias.
Toda  classe  tem  uma  classe  mãe,  exceto  a  classe  Object.  A  classe  mãe  define  os  dados  e
comportamento que são herdados por suas classes filhas. A classe mãe é chamada de superclasse
e suas filhas, subclasses.
Mas o maior benefício de se aprender Smalltalk seja começarmos a fugir da ‘cultura C’. Como você poderá
observar  neste  exemplo  de  Hello World  abaixo,  A  sintaxe  de  Smalltalk  é  bem  diferente  das  linguagens
Uma  grande  vantagem  do  aprendizado  da
programação  por  meio  de  uma  linguagem
funcional  é  que  o  programador
obrigatoriamente  aprende  recursão  já  em
suas  primeiras  aulas  e  passa  a  ver  este
conceito como algo muito natural.
De  todas as  linguagens  listadas neste artigo
Prolog é a mais diferente. Mas não deixe que
a  linguagem  te  engane  pelo  estilo.  De  fato
Prolog  é  uma  linguagem  Turing  Completa  o
que  significa  que  pode  implementar  qualquer
tradicionais.
publish
Transcript show: 'Olá Mundo!'
Entenda o código acima como sendo o envio da mensagem [show: 'Olá Mundo!'] ao objeto Transcript. Esta
instrução definem o método publish.
Vale ainda dizer que o padrão MVC que conquistou o mundo e que  inspiraram o chamado MVC Web ou
MVC  2  que  viraram  moda,  saiu  do  Smalltalk.  Isto  mostra  o  como  estudar  novas  linguagens  e,
principalmente,  o  como  estas  resolvem  seus  problemas,  nos  tornam  programadores melhores  e  podem
nos  inspirar  a  reaplicar  conceitos  muito  utilizados  em  uma  linguagem  em  áreas  bem  diferentes  da
aplicação original.
Lisp/Scheme (e/ou talvez Haskell)
Um programador que queira abrir sua mente deve
considerar fortemente a possibilidade de aprender
a  programar  numa  linguagem  funcional.  Mesmo
que,  cada  vez  mais,  linguagens  classicamente
imperativas  e/ou  orientada  a  objetos  estejam
importando  conceitos  funcionais,  aprender  a
montar  os  problemas  seguindo  uma  lógica
funcional é um diferencial.
Um programador adaptado a  linguagens  imperativas ou orientada a objetos,  estranhe práticas adotadas
em uma programação funcional como:
­ Ausência de Atribuições;
­ Ausência de comandos iteradores como for, while e until;
­ Ausência de alocação explícita de memória; e
­ Ausência de declaração explícita de variáveis.
Para  qualquer  “programador  imperativo”  as  ‘ausências’  listadas  acima  fariam  uma  falta  absurda.  São
atributos normalmente entendidos como fundamentais em uma linguagem. Isto significa que aprender uma
linguagem funcional lhe dará uma nova visão sobre como resolver problemas computacionais.
Uma grande  vantagem do  aprendizado  da  programação  por meio  de  uma  linguagem  funcional  é  que  o
programador obrigatoriamente aprende recursão  já em suas primeiras aulas e passa a ver este conceito
como  algo  muito  natural.  Normalmente,  ao  se  utilizar  uma  linguagem  imperativa,  como  Pascal,  ou
orientada a objetos, como Java, numa matéria introdutória, este conceito sóvai ser visto, se muito, ao final
do 1o período. Porém, não raro, a matéria ainda é empurrada para um 2o e 3o período. Resultado: temos
profissionais  que  simplesmente  ainda  não  trabalham  bem  com  recursão,  ou  pior:  não  a  entende
completamente.  O  que  é  uma  limitação  grave  para  um  profissional.  Citando  novamente  Alan  Perlis:
“Recursão é a raiz da computação(…)”.
Prolog
De  todas  as  linguagens  listadas  neste  artigo
Prolog  é  a  mais  diferente  ­sempre  comparando
com  um  mundo  imerso  numa  ‘cultura  C’.  E  não
estou  falando  apenas  de  sintaxe,  mas  sim  em
relação  ao  paradigma  da  linguagem:  Prolog  é
uma  linguagem  lógica,  além de declarativa  como
algoritmo.
Peter Norvig, em seu artigo, sugere ainda que
entre uma daquele mínimo de seis linguagens
que um programador deveria conhecer, tenha
alguma  com  suporte  a  paralelismo. E  é  aqui
que entra a indicação de Sisal.
as  outras  linguagens  funcionais.  Alguns
perguntariam:
­ “Ué? Mas toda linguagem, não é lógica?”   Veremos com um pouco mais de detalhes.
Para programar em Prolog devemos:
1­ Enumerar os fatos verdadeiros do mundo – estou falando do mini­mundo que iremos abstrair. E não do
mundo inteiro, claro!;
2­ Ditar as regras existentes entre estes fatos.
3­ Realizar a pergunta certa para o interpretador que te responderá.
Bem diferente das outras, não?
– Exemplificando –
Fatos:
gato(tom).
rato(jerry).
Com o exemplo acima definimos dois fatos: Tom é um gato e que Jerry é um rato.
Regras:
come(X,Y) :- gato(X), rato(Y).
Resumidamente, definimos acima a clássica regra de que gatos comem ratos.
Perguntas/Avaliações:
?- come(tom, jerry).
E o interpretador retornará yes.
Mas não deixe que a linguagem te engane pelo estilo. De fato Prolog é uma linguagem Turing Completa o
que significa que pode implementar qualquer algoritmo. Por exemplo veja o algoritmo da Torre de Hanoy
implementada nela:
hanoi(N) :- move(N, left, centre, right).
move(0, _, _, _) :- !.
move(N, A, B, C) :-
M is N-1,
move(M, A, C, B), inform(A, B), move(M, C, B, A).
inform(X, Y) :-
write('move a disc from the '),write(X), write(' pole to the '), write(Y), write('
pole'),
nl.
Sisal
Peter  Norvig,  em  seu  artigo,  sugere  ainda  que
entre uma daquele mínimo de seis linguagens que
um programador deveria conhecer, tenha alguma
com suporte a paralelismo. E é aqui  que entra a
indicação de Sisal. Outro motivo  para  aprende­la
é que você poderá conhecer um outro paradigma
“Rebol é uma linguagem moderna, porêm com
algumas  idéias  muito  semelhante  ao  Lisp.
Mas Rebol  é muito mais  rico  sintaticamente.
Rebol  é  uma  linguagem  brilhante  e  é  uma
pena  que  não  seja  mais  popular,  porque
merece ser.” – Douglas Crockford
de programação: Programação orientada a fluxo de dados (diagramas). Sobre o paralelismo e como este
conceito pode ajudar a você novamente mudar o como você vê a programação, é melhor mostrar através
de um exemplo. Veja e analise o código abaixo:
for i in 1, quantidade_produtos
preco_final:= preco_liquido[i] + incremento[i]
returns array of preco_final
end for
Reflita e responda, o que você espera que este código faça? Bem, claramente ele soma um ‘preço líquido’
de algum produto e o soma com seu respectivo  incremento e o atribui a um ‘preço final’. E, claro,  já que
estamos num for ele repetirá o processo para todos os produtos. Só que se você estiver atento talvez diga
que há um erro no código: todas as somas estão sendo atribuídas para uma mesma variável. Logo cada
operação sobrescreverá o resultado da operação anterior, correto? Não!
No Sisal  temos dois  tipos de Loops e um deles é  feito para casos onde as  iterações são  independentes
entre  elas.  Este  costuma  ser  um  ótimo  caso  para  paralelismo  e  é  isso  que  Sisal  faz.  Ele  não  faz  uma
operação após a outra. Ele faz todas, idealmente, ao mesmo tempo!
Se  tivermos  50  produtos  ele  criará  50  instâncias  independentes,  do  corpo  da  iteração.  Ou  seja
preco_final:=  preco_liquido[1]  +  incremento[1]  e  preco_final:=  preco_liquido[50]  +  incremento[50]  estarão
coexistindo em regiões diferentes da memória.
Ao  final a operação returns  array of  preco_final  junta  todos  os  valores  preco_final  destas  instâncias  e
monta num array. Diferente de uma programação imperativa, não? 
Rebol
Que  tal  conhecer  uma  das  linguagens  que
inspiraram a criação do padrão JSON? REBOL é
uma  linguagem multiparadigma,  com  traços  bem
fortes  de  linguagem  funcional  e  programação
simbólica, criada por Carl Sassenrath, o arquiteto
e  principal  desenvolvedor  do  AmigaOS.  A
linguagem teve inspirações de Lisp, Forth, Logo e
Self.
Pelas palavras de Douglas Crockford,  falando  sobre  as  influências  de  JSON:  “Outra  influência  foi Rebol.
Rebol é uma linguagem moderna, porêm com algumas idéias muito semelhante ao Lisp. (…) Mas Rebol é
muito mais mais  rico sintaticamente. Rebol é uma  linguagem brilhante e é uma pena que não seja mais
popular, porque merece ser.”
REBOL  apresenta  conceito  de  dialetos  que  é  a  capacidade/facilidade  de  se  criar  linguagens  para  um
domínio específico. De acordo com seu próprio criador, este é o aspecto mais importante da linguagem:
“Embora  possa  ser  utilizado  para  a  programação,  escrevendo  funções,  e  executando  processos,  a  sua
maior força é a capacidade de facilmente criar linguagens de domínio específicas ou dialetos. ”
Outra característica interessante do REBOL é que ela é uma linguagem econômica. Eu fui apresentado ao
Rebol  entre  2002/2003  por  um  colega  de  trabalho,  que  havia  implementado  um  programa  de  Instant
messaging  para  a  empresa  num  tempo  relativamente  curto.  Para  se  ter  idéia  de  quão  econômica  esta
linguagem pode ser, baixe o interpletador e execute o código abaixo:
REBOL[title:"Demo"]p: :append kk: :pick r: :random y: :layout q: 'image
z: :if gg: :to-image v: :length? g: :view k: :center-face ts: :to-string
tu: :to-url sh: :show al: :alert rr: :request-date co: :copy g y[style h
btn 150 h"Paint"[g/new k y[s: area black 650x350 feel[engage: func[f a e][
z a = 'over[p pk: s/effect/draw e/offset sh s]z a = 'up[p pk 'line]]]
effect[draw[line]]b: btn"Save"[save/png %a.png gg s al"Saved 'a.png'"]btn
"Clear"[s/effect/draw: co[line]sh s]]]h"Game"[u: :reduce x: does[al join{
SCORE: }[v b]unview]s: gg y/tight[btn red 10x10]o: gg y/tight[btn tan
10x10]d: 0x10 w: 0 r/seed now b: u[q o(((r 19x19)* 10)+ 50x50)q s(((r
19x19)* 10)+ 50x50)]g/new k y/tight[c: area 305x305 effect[draw b]rate 15
feel[engage: func[f a e][z a = 'key[d: select u['up 0x-10 'down 0x10 'left
-10x0 'right 10x0]e/key]z a = 'time[z any[b/6/1 < 0 b/6/2 < 0 b/6/1 > 290
b/6/2 > 290][x]z find(at b 7)b/6[x]z within? b/6 b/3 10x10[p b u[q s(last
b)]w: 1 b/3:((r 29x29)* 10)]n: co/part b 5 p n(b/6 + d)for i 7(v b)1[
either(type?(kk b i)= pair!)[p n kk b(i - 3)][p n kk b i]]z w = 1[clear(
back tail n)p n(last b)w: 0]b: co n sh c]]]do[focus c]]]h"Puzzle"[al{
Arrange tiles alphabetically:}g/new k y[origin 0x0 space 0x0 across style
p button 60x60[z not find[0x60 60x0 0x-60 -60x0]face/offset - x/offset[
exit]tp: face/offset face/offset: x/offset x/offset: tp]p"O"p"N"p"M"p"L"
return p"K"p"J"p"I"p"H"return p"G"p"F"p"E"p"D"return p"C"p"B"p"A"x: p
white edge[size: 0]]]h"Calendar"[do bx:[z not(exists? %s)[write %s ""]rq:
rr g/new k y[h5 ts rq aa: area ts select to-block(find/last(to-block read
%s)rq)rq btn"Save"[write/append %s rejoin[rq" {"aa/text"} "]unview do bx]]
]]h"Video"[wl: tu request-text/title/default"URL:"join"http://tinyurl.com"
"/m54ltm"g/new k y[image load wl 640x480 rate 0 feel[engage: func[f a e][
z a = 'time[f/image: load wl show f]]]]]h"IPs"[parse read tu join"http://"
"guitarz.org/ip.cgi"[thru]i: last parse my none
al ts rejoin["WAN: "i" -- LAN: "read join dns:// read dns://]]h"Email"[g/new k y[mp: field"pop://user:pass@site.com"btn"Read"[ma: co[]foreach i
read tu mp/text[p ma join i"^/^/^/^/^/^/"editor ma]]]]h"Days"[g/new k y[
btn"Start"[sd: rr]btn"End"[ed: rr db/text: ts(ed - sd)show db]text{Days
Between:}db: field]]h"Sounds"[ps: func[sl][wait 0 rg: load sl wf: 1 sp:
open sound:// insert sp rg wait sp close sp wf: 0]wf: 0 change-dir
%/c/Windows/media do wl:[wv: co[]foreach i read %.[z %.wav = suffix? i[p
wv i]]]g/new k y[ft: text-list data wv[z wf <> 1[z error? try[ps value][al
"Error"close sp wf: 0]]]btn"Dir"[change-dir request-dir do wl ft/data: wv
sh ft]]]h{FTP}[g/new k y[px: field"ftp://user:pass@site.com/folder/"[
either dir? tu va: value[f/data: sort read tu va sh f][editor tu va]]f:
text-list[editor tu join px/text value]btn"?"[al{Type a URL path to browse
(nonexistent files are created). Click files to edit.}]]]]
Considerações Finais
Não existe saída para um artigo como este. Mesmo que existam  linguagens  ‘hors concours’, é  inevitável
que muitas linguagens boas acabem ficando de fora. Não ter mencionado Ruby entre PHP e Python é algo
que será notado e questionado por muitos. Ter  incluído Rebol entre as 10 e ‘esquecido’ Erlang como um
belo exemplo de processamento paralelo pode ser encarado por muitos como algo discutível. Em resumo,
decidir  quem  entra  e  quem  sai  é  uma  decisão  difícil  e  extremamente  pessoal.  Até  incluir  Forth  como
exemplo  de  programação  baseada  em  pilha  foi  considerado.  Sem  falar  que  é  humanamente  inviável
conhecer  todas  as  linguagens.  Então,  por  estes motivos,  ao  fim,  a minha  seleção  foi  esta  apresentada
acima.
« Davit – Aula 1 – Ao seu Comando! Davit – Aula 2 – Dados na Memória! »
Para compensar esta falta, gostaria de tornar este post um ‘post aberto’. Fique livre para, nos comentários,
criticar  a  seleção,  apresentar  uma  linguagem  que  tenha  sido  ‘injustamente’  esquecida  ou,  ainda,
apresentar  a  sua  própria  seleção.  Se  este  post  tiver  a  capacidade  de  inspirar  você,  e  se  você  quiser
escrever um post semelhante em seu blog, contendo a sua própria seleção ou simplesmente apresentando
melhor uma linguagem que você acredite que vale apena o aprendizado, me informe que eu porto o  link
sem problemas.
Abraços e espero que tenham gostado!
 Posted in Artigos
You can leave a response,
or trackback from your own site.
50 Responses to “10 Linguagens de Programação
que Você Deveria Aprender!”
10 Linguagens de Programação que Você poderia Aprender! « Segurança da Informação disse:
30 de julho de 2014 às 17:33
[…]  Fonte:  http://www.aprenderprogramar.com.br/10­linguagens­de­programacao­voce­
deveria­aprender/ […]
Responder
 Thadeu disse:
31 de janeiro de 2014 às 23:45
Uma  linguagem  interessante  pelo  seu  comportamento  é  Gnu  Octave  (parente  gratuito  do
Matlab que é de preço salgado) e R que começa a despontar. Desenvolvidos para exploração
científica e estatística, estão muito em voga com mineração de dados. O que me surpreendeu
em Octave  é  o modo  como  se  cria matrizes  e  as manipula.  É  possível multiplicar,  somar,
subtrair etc. colunas ou linhas entre si e facilmente ver o resultado gráfico com gnuplot.
Responder
 Bruno Menezes disse:
5 de dezembro de 2013 às 22:13
Estou querendo começar agora nesta área de programação,porem existem varias duvidas e
gostaria que muito de vocês já trabalha na área e tem experiencia nisso me ajudassem qual
tipo de linguagem seguir,acabei de concluir logica de programação e com isso já quero investir
em  alguma  linguagem  como  citado  acima  pensei  entre  Java  e  C#,porem  como  estou
desempregado gostaria de acerta no investimento,qual linguagem teria um retorno mais rápido
em termo de emprego já não tenho experiência na área.
Obrigado.
Responder
 renato disse:
27 de dezembro de 2013 às 14:44
Para  que  se  interessar,  este  assunto  teve  prosseguimento  na  página  do
site:https://www.facebook.com/aprenderprogramar/posts/646623152048180
Responder
 Marcos Cals disse:
8 de outubro de 2013 às 3:24
Excelente artigo, virou um verdadeiro ícone no assunto esse post.
Seria bacana dar dicas de onde se aprender a programar, mas de maneira gratuita e online,
algo bem ‘livre’.
Andei pesquisando e achei alguns projetos bacanas, umas apostilas boas:
Apostila de HTML: http://www.htmlprogressivo.net
Apostila de C: http://www.cprogressivo.net
Apostila de Java: http://www.javaprogressivo.net
Espero mais dicas de outros usuários, e que minhas dicas sejam proveitosas!
Abraço!
Responder
 Denner disse:
18 de setembro de 2013 às 16:22
Muito bom seu artigo.
Realmente me inspirou a buscar novas linguagens.
Não conhecia a necessidade.
Mito obrigado!!!
Responder
 Daniel disse:
17 de julho de 2013 às 14:26
Sensacional o artigo!!! Me ajudou muito, abriu minha cabeça e definiu minha “rota” profissional!
Muito Obrigado!!
Responder
 ricardo disse:
28 de junho de 2013 às 17:30
Muito  bom o  post,  parabéns  ajudou  bastante  !  no  site Scriptcase  tem algumas  informações
interessantes tbm.
Responder
 Valter disse:
15 de junho de 2013 às 22:09
Olá Renato
Aprendi toda parte básica da linguagem Pascal sem entrar na
programação  orientada  a  objeto.  Após  isto  fiquei  vários  anos  sem  praticar.  Gostaria  de
aprender  este  novo  conceito  de  programação  (orientada  a  objeto)sem  gastar  muito  tempo.
Você recomendaria utilizar o Delphi ou o C# ?
At.
Valter
Responder
 Toni disse:
24 de abril de 2013 às 11:15
Parabens  pelo  post,  as  diferenças  entre  as  linguagens  de  programação  estão  sempre
presentes  em  calorosas  discussões  nos  grupos  de  programadores,  encontrei  uma piadinha
antiga  criada  originalmente  para  explicar  as  vertentes  do  Metal  que  foi  reaplicada  para  as
linguagens de programação e dar uma visão das diferenças entre cada linguagem.
Segue no site abaixo
http://regifelix.com/2013/04/23/linguagens­de­programacao/
Abraço
Responder
 Ronald disse:
16 de abril de 2013 às 23:12
Renato,
Primeiramente parabéns pelo post, bastante esclarecedor!
Tenho noçao de VB6 e já “programei” bastante em VBA, me interessei muito pelo Python, pelo
que li aqui e em outros  lugares e agradeço se puder me ajudar com o seguinte: Gostaria de
entender  melhor  a  diferença  entre  programar  com  Python  para  web  e  para  desktop.  Na
verdade  gostaria  de  por  em  prática,  num  primeiro  momento,  algumas  idéias  de  aplicativos
simples  para  desktop  para  facilitar  o  dia­a­dia,  e  como  futuramente  pretendo me aprofundar
mais em programaçao, queria fugir do velho VB e de ficar preso à M$. Qualquer dica é bem
vinda!
Obrigado!
Responder
 Blog de Programação disse:
31 de março de 2013 às 22:04
Prezados, acredito que Lisp e Haskell poderiam ser sugeridas separadamente, pois cada uma
merece destaque especial. Estamos trabalhando em um tutorial Scala o qual gostariamos de
sugerir também à comunidade Aprender Programar.
Abs.
Literati
Responder
 Luis disse:
26 de março de 2013 às 10:11
Muito bom!!!!!
Responder
 Vitor disse:
6 de fevereiro de 2013 às 13:24
Olá, Voce  poderia  fazer  algum post  de  trabalhos/projetos  para  nos  treinarmos a  programar,
pois muitas pessoas tem vontade de aprender, mas nao sabem ao certo o que pode fazer com
cada linguagem, voce poderia dar ideias de algumas linguagem e alguns projetos interessantes
para serem desenvolvidos pelos estudantes.
Obrigado
Responder
 renato disse:
11 de fevereiro de 2013 às 16:21
Opa Vitor,
eu não só acho que você tem razão como eu já havia começado a me mover para
isso!
Veja  o  post  Como  se  tornar  um  programador?,  nele  eu  falo  justamente  desta
necessidade prática. Logo no menu principal do blog, tem um link chamadoProjetos,onde a idéia é justamente essa que você deu.
Atualmente temos apenas um projeto, mas estou com com ideias de pelo menos 2
outros, um mais básico e outro mais avançado. Agora em favereiro estou voltando
com toda a força, então espere por novidades!
Responder
 weslly disse:
20 de janeiro de 2013 às 20:45
Tenho como aprender java e c++ ao mesmo tempo?
Na minha faculdade so usa java mais eu gosto muito da linguagem c++, se eu estuda as 2 ao
mesmo tempo. Atrapalhara meu desempenho de apredizagem de ambas as liguagens?
Responder
 Joao disse:
2 de dezembro de 2012 às 22:00
Deixou Perl de fora da lista!!!Isso é um sacrilégio!
Responder
 Temístocles disse:
29 de outubro de 2012 às 12:01
Cara, acho que você esqueceu algo muito importante, o estudo de uma linguagem de bando de
dados que no caso é o SQL, importantíssimo. De resto muito bom.
Responder
 renato disse:
29 de outubro de 2012 às 14:16
Entendo, Temístocles,
Sem dúvida linguagem de banco de dados é muito importante. Mas, como disse no
início  do  artigo,  minha  análise  foi  restrita  ao  que  chamei  de  linguagens  de
programação. Embora estas possam ser definidas de várias maneiras, a definição
escolhida foi o de linguagens que sejam Turing completas. E isso descartou SQL da
análise. Mas sem dúvida o aprendizado de SQL é importantíssimo.
Abraços
Responder
 Jorge Miranda disse:
26 de junho de 2013 às 23:25
Datalog, só digo esta palavra.
Responder
 Adélio disse:
23 de outubro de 2012 às 16:25
Jonny,
Parabéns pelo artigo, muito bom…
Quando puder poderia, criar uma artigo sobre linguagem voltada,
só para aparelhos moveis( Celular, Tablet ).
Sei que a linguagem mais dita neste meio é o C, Java e Obj­C. Mas entre
estas não existe uma mais simples e ao mesmo tempo poderosa.
Não gostaria de desenvolver aplicativos WEB, para estes aparelhos,
pois acho que não tem muita segurança.
Obrigado,
Adélio.
Responder
 pablo disse:
6 de setembro de 2012 às 19:12
obrigado pela informação
Responder
 pablo disse:
6 de setembro de 2012 às 19:10
voces nem falaram do boo
Responder
 João Henrique disse:
20 de abril de 2012 às 11:24
Bom dia, só passando para dar os parabéns pelo excelente artigo. É dificil achar hoje me dia
pessoas que saibam tratar as principais diferenças entre Java e C# sem “insultar” os fanboys.
No meu ver, essas duas  linguagens estão tão próximas como Ciência e Religião,  todos que
defendem  uma  preferem  criticar  a  outra mas  somente  quem  olha  sem  nenhum  preconceito
sabe que as duas são “parceiras”.
Responder
 Jhonny Freitas Dutra disse:
18 de agosto de 2011 às 12:00
Oi Renato, respondi a pergunta acima, e queria dar uma dica. Vc não citou F#, uma linguaem
nova e funcional, umas das primeiras desse tipo a entrar pro indice TIOBE entre as 20 mais
ultilizadas. Acho que vale a pena comentar algo sobre esta linguagem!!
Responder
 renato disse:
18 de agosto de 2011 às 15:44
Olá Jonny,
O mesmo que eu disse do Scala, em relação a plataforma JVM, eu digo sobre F#
sobre a plataforma .NET: Reconheço que é uma linguagem nova e importante. Não
desmereço  a  linguagem.  Apenas  não  a  conheço  bem  o  suficiente  a  ponto  de
recomenda­la. Tão pouco sei se acrescenta conceitos diferentes das linguagens já
listadas. Eu não tentei ser exaustivo nesta listagem e sei que muita coisa boa, como
Ruby, F# e Scala ficaram de fora.
Mas deixo o post aberto para quem quiser ‘defender’ outras linguagens.
Você  conhecê  ao  menos  um  pouco  de  F#  a  ponto  de  ‘defender’  o  porque  é
interessante  aprender  a  linguagem  e  dar  alguns  exemplos  de  conceitos  legais
implementados nela?
Se  sim,  se  você  quiser  e  tiver  um  tempo,  escreva  algum  artigo  ou,  ao  menos
algumas linhas sobre a linguagem.
Daí você pode postar no seu próprio blog e eu crio um link ou, se for o caso, publico
por aqui mesmo.
Fica a provocação. 
Abraços
Responder
 Jhonny Freitas Dutra disse:
18 de agosto de 2011 às 21:49
Olá Renato  ,  infelizmente eu  tmb não conheço a  lingugem, apenas vi no
TIOBE,  e  fiquei  curioso  pelo  fato  de  ser  uma  das  primeiras  linguagens
funcionais  a  ficar  entre  as  20,  por  isso  achei  que  deveria  ser  citada.
Quanto ao artigo, posso pesquisar algo e criar um, talvez eu possa postar
por aqui mesmo como vc disse.
Responder
 renato disse:
19 de agosto de 2011 às 4:47
Sim,  isso  é  verdade.  Sem  dúvida  é  digno  de  nota.  E  fique  a
vontade sobre o artigo, acho que seria sim um bom tema!
Responder
 Manuel disse:
18 de agosto de 2011 às 0:57
Olá,  adorei  seu  artigo.Está  sendo muito  construtivo  para mim  como  iniciante  no mundo  da
programação.
Só  fiquei  como  uma  dúvida.Você  foi  categórico  ao  afirmar  que  JavaScript  não  têm
concorrentes, mas e quanto aos outros scripts como VBS e Ajax ?Eles não têm nenhum valor
frente ao javascript ?
Grato
Responder
 renato disse:
18 de agosto de 2011 às 11:38
Olá Manuel,
Vamos por partes.
Ajax  não  é  linguagem.  Ajax  é  uma  metodologia  que  basicamente  permite  à  uma
página continuar recebendo dados do servidor sem precisar ser atualizada como um
todo.  Ajax  utiliza  algumas  tecnologias  como:  Javascript,  XML,  HTML,  e  uma
linguagem de servidor.
Em  outras  palavras,  utilizamos  Javascript  para  implementar  o  Ajax.  Ajax  não  é
concorrente  do  javascript.  Ajax  é  uma  forma  de  se  utilizar  a  linguagem  javascript
assim  como  outras  tecnologias.  Se  você  ouviu  ou  leu  alguém  chamando Ajax  de
linguagem: Foi um erro.
O VBScript (VBS) sim é linguagem, que também pode ser utilizado em páginas webs
e sim, a uma década era um concorrente relevante ao Javascript. Mas hoje, volto a
afirmar, o Javascript se encontra sem concorrentes a altura.
O VBS é uma linguagem da Microsoft e só é implementado nativamente pelo IE. Já
escutei que existe, ou deve existir algum plugin para o Firefox que o faz interpretar o
VBS. Mas, sem problematizar muito, entenda: VBS é IE.
Quando o IE representava mais de 90% do mercado de navegadores, então sim, o
VBS era utilizado por vários desenvolvedores.
Mas hoje a participação do IE no mercado mundial de navegadores está a menos de
50%.
Pergunta  direta:  hoje  você  criaria  um  site  web  limitado  a  menos  de  50%  dos
usuários?
Hoje,  sem  sombra  de  dúvidas  a  grande  maioria  dos  desenvolvedores  utiliza
javascript em suas páginas. Até porque uma ideia do desenvolvimento web é que, ao
menos para o cliente, seja realmente independente de plataforma.
Só vejo algum sentido em utilizar o VBS para desenvolvimento web se vc tem uma
equipe muito fluente em Visual Basic e nada fluente em Javascipt. E se o que você
estiver desenvolvendo é para rodar numa intranet muito específica onde 100% dos
navegadores  sejam  IE.  Mas  ainda  assim  eu  consideraria  o  Javascript  pois  os
grandes frameworks voltados para UI/Web são em Javascript:
jQuery
YUI
DOJO
ExtJs
Prototype
Mootools
Scriptaculous
Spry.
E é por isso que eu volto a afirmar, embora o IE mantenha o suporto ao VBS, talvez
até  por  conta  dos  sistemas  legados,  no  mondo  de  hoje,  no  desenvolvimento  de
páginas webs, Javascript está, virtualmente, sem concorrentes. É ele ou ele. Para
desenvolvimento web não dá para fugir de aprende­lo.
Abraços
Responder
 Jhonny Freitas Dutra disse:
18 de agosto de 2011 às 11:58
Olá manuel, me chamo Jhonny e resolvi responder sua pergunta.
Ajax não e uma linguagem de programação, mas um conjunto de tecnologias. Ajax é
a junção de XML e JavaScript(Wikipédia), ou seja quando vc ultiliza ajax na verade
vc estára ultilizando JavaScript.
VBScript,  eu  ja  ouvi  falar,  mas  não  sei  se  é  realmente  uma  linguagem  para
desenvolvimentoWEB do lado cliente, e mesmo que fosse, não é citado no Indice do
TIOBE(http://www.tiobe.com/content/paperinfo/tpci/index.html)  e  JavaScript  sim,  e
está em 10º posição, porntanto, muitos poucos usam o VBScript,  não poderia  ser
considerado concorrente.
Responder
 Jhonny Freitas Dutra disse:
18 de agosto de 2011 às 12:04
ops acho q demorou pra aparecer sua resposta aquie, pode excluir esse
coment
Responder
 renato disse:
18 de agosto de 2011 às 13:09
Sem problemas, fique a vontade para responder. Mas só a título
de  informação,  o  VBScript  é  sim  uma  linguagem  para
desenvolvimento web tanto no  lado do servidor assim como no
cliente.  Mas,  só  para  IEs.  Mas  do  ano  2000  para  cá  vem
perdendo força. Hoje páginas webs com VBScript por sorte são
raras.
Responder
 Jhonny Freitas Dutra disse:
16 de agosto de 2011 às 17:35
Olá renato, estou procurando um artigo que trate de livros de referencia de cada Linguagem,
por exemplo Linguagem C, o melhor livro de referencia seria o C Completo e Total de Herbert
Schildt,  para  Java  o  Java  Como  programar  da  deitel(pelo menos  é minha  opnião  sobre  as
duas), gostaria que vc criasse um artigo tratando deste tema. Vlw!
Responder
 renato disse:
16 de agosto de 2011 às 18:05
Ótima dica, sem dúvida, Jhonny.
Vou trabalhar nisso sim.
Abraços.
Responder
 Jhonny Freitas Dutra disse:
16 de agosto de 2011 às 21:17
ok  ok,  vlw,  tenta  colocar  Principalmente  das  linguems  diferentes  do
“mundo C”. Vlw renato! Até os Proximos Posts
Responder
 Ramon disse:
25 de julho de 2011 às 6:40
Olá Renato,
parabéns pelo artigo, mas acredito que você cometeu um equivoco:
Quando  você  compara  PHP  e  Python,  você  diz  que  esta  última  linguagem  é  focada  no
desenvolvimento web, o que não é verdade. Python é uma linguagem de propósito geral, mas
que hoje em dia, com seus frameworks (como o Django) está ganhando muito espaço neste
cenário.
Outra coisa  interessante há ressaltar, é que no Python tudo é objeto, e é uma linguagem de
tipagem forte.
Acredito que a melhor comparação a ser feita no caso, seria PHP vs ASP e um outro tópico
abordando Python vs Ruby.
Bom, acho que é isso e mais uma vez parabéns pelo artigo.
Responder
 renato disse:
25 de julho de 2011 às 11:32
Olá Ramon,
Fico feliz que tenha gostado do artigo.
Mas em nenhum momento eu disse que Python tem foco na web. Pelo contrário. Eu
falei
Do PHP:
Destas duas  linguagens  listadas, PHP é a que  tem o  foco para web mais
bem definido
e
Do Python
Python, por  sua proposta mais generalista,  (…) Python pode ser utilizado
sozinho, como a linguagem escolhida para o desenvolvimento de um grande
sistema, web ou desktop. Por ser simples e de propósito geral, (…)
Talvez você tenha estranhado o fato de ter colocado ambas no mesmo grupo.
Neste grupo eu juntei linguagens scripts, orientada a objetos, baseadas em classes
– mesmo no caso onde a classe é um tipo especial de objeto, e de grande utilização
na web. Sugerindo que o leitor aprenda programação scritp/web com uma delas. Mas
em nenhum momento pensei em limitar ou igualar qualquer uma das duas.
Caso  tivesse  falado em Ruby,  teria colocado no mesmo grupo. Embora saiba que
Ruby também tem diferenças significativas destas duas.
Repondi?
Nota:  a  divisão  que  tentei  fazer  com  as  linguagens  pelos  grupos  tenta  ter  os
seguintes critérios:
1­  Função  ­> Neste  grupo  elejo  linguagens  com  boa  indicação  para  programação
web. Python é também indicado para programação web, mesmo não sendo seu foco.
2­ Conceitos novos ­> Neste grupo o leitor aprende o que é uma linguagem script e
percebe a particularidade de uma programação script para web.
Ou  seja,  a  ideia  central  é  que  o  leitor  passeando  pelos  grupos  e  escolhendo  ao
menos uma  linguagem de cada grupo ele absorva os mais variados conceitos em
programação.
Só para deixar mais claro a minha postura:
Eu me senti mais culpado em não ter falado em Forth, que é baseado em pilhas mas
ultrapassada,  do  que  em Ruby,  uma  linguagem  realmente moderna,  bonita  e  com
vários conceitos legais.
O  ponto  é  que  a  grande  maioria  dos  conceitos  de  Ruby,  você  pode  encontrar
espalhadas por estes grupos de linguagens.
Abraços
Responder
 Ramon disse:
25 de julho de 2011 às 13:15
O que me fez fazer a tal afirmação foi o seguinte paragrafo:
“E  estas  duas  são  exatamente  isto:  linguagens  scripts,  de  tipagem
dinâmica, orientadas a objetos,  focadas no desenvolvimento web embora
as duas possam ser utilizadas em ambiente desktop.”
Que da o sentido de ambas foram projetadas focando o desenvolvimento
web, anyway , mas há centenas de linguagens mundo a fora, que trazem
conceitos  e  filosofias  interessantes,  porem  essas  ai  já  estão  de  bom
tamanho 
Bom,  nunca  ouvi  falar  sobre  a  linguagem  Forth,  depois  dou  uma
pesquisada…
ps: se vc fazer um post falando dela leio com o maior prazer =)
abraços.
Responder
 renato disse:
25 de julho de 2011 às 14:39
Hum…. verdade.
Ficou  mal  escrito  o  parágrafo.  Troquei  de  ‘focadas’  para
‘bastante utilizadas’. Obrigado pela ajuda.
Quanto  ao  Forth,  é  uma  linguagem  antiga  e  muitos  diriam:
ultrapassada.  Mas  ainda  assim  ainda  encontramos  ela  sendo
utilizada hoje.
Mas a grande questão é a orientação a pilha que, embora  raro
nos dias de hoje, é encontrada em várias linguagens assembly.
Provavelmente  que  você  já  saiba,  mas  internamente,  quando
uma função é chamada, seus parâmetros e variáveis locais são
empilhados. Quando esta  função chama outra os parâmetros e
variáveis  locais da nova são novamente empilhados. Ao fim do
processamendo os parâmetros são retirados da pilha e o retorno
é  empilhado.  A  primeira  função  lê  o  retorno  da  pilha  e  assim
segue.
Normalmente  estas  operações  ficam  invisíveis  para  o
programador  numa  linguagem  de  alto­nível.  Em  Forth  não.
Passagens de parâmetros entre funções são pela pilha.
Se algum dia você quiser criar uma linhagem para rodar na JVM
ou  na  plataforma  .NET  encontrará  novamente  este  conceito.
Pois no Java bytecode e no CIL da Microsoft, as passagens de
parâmetros também são via pilha. Então, em termos de conceito,
este ficou faltando no artigo. Não creio que seja grave, mas… o
que você acha?
Só ilustrando um pouco mais de Forth, segue a expressão:
2 4 * 2 + .
imprime 10
Ele é processado da seguinte maneira:
2­ empilha 2
4­ empilha 4
* – multiplica desempilhando os dois últimos valores da pilha e
empilha o resultado: 8
2­ empilha 2
+­  soma  desempilhando  os  dois  últimos  valores  da  pilha  e
empilha o resultado: 10
.­ imprime o topo da pilha.
Legal, né? 
Responder
 Felipe dos Santos de Morais disse:
24 de julho de 2011 às 15:36
Olá,
Sobre  o  artigo  senti  falta  de  algumas  linguagens  que  ouço  muito  falar  como  .Net,  VB,
Delhpi.Entendi suas escolhas pessoais mas gostaria de saber porque não às citou.
Acabei  de me  tornar  técnico de  informática  vi  um pouco de Delphi,  Java,  e PHP.Acabei  de
entrar  para  o  curso  de  Ciência  da  Computação  onde  só  vi  um  pouco  de  C  no  primeiro
período(estou indo para o segundo este semestre).
Gostei  muito  do  seu  artigo.Estou  em  uma  época  de  decidir  quais  serão  minhas  próximas
linguagens.Então  gostaria  de  me  aprofundar  mais  nas  que  eu  aprendi,  um  pouco
superficialmente,  e  então  ir  para  as  próximas,  gostaria  de  saber  se  você  tem  algumas
indicações  não  somente  de  livros  pode  ser  blogs,  pessoas, …  qualquer  referência  nessas
linguagens citadas no artigos.
Responder
 renato disse:
25 de julho de 2011 às 11:21
Olá Felipe. Vamos lá:
.NET  não  é  uma  linguagem.  Na  realidade  é  uma  plataforma  sobre  a  qualrodam
várias linguagens. Por exemplo, uma das linguagens que rodam sobre a plataforma
.NET é a C# que eu citei. Na realidade a C# é a principal  linguagem da plataforma
.NET. Uma outra é o Visual Basic, no caso: VB.NET.
O antigo Visual Basic, o VB, foi até a versão 6 e depois foi migrado para a plataforma
.net. Então após o VB 6 vem o VB.NET. Então, eu não sitei o VB por uma  razão
muito simples: Se você sabe o C#, não te agregaria nenhum valor aprender VB.
Se  você  já  vem  do  VB6,  ir  para  o  VB.NET  pode  ser  a  entrada mais  fácil  para  a
plataforma  .NET mas, caso contrário, vá de C# sem dúvida. Ou vá para o mundo
Java. Posso vir a ser alvo de apedrejamento pelo que  falarei mas o único sentido
que vejo no VB.net é este: absorver para a plataforma .NET o povo legado do VB6.
Nada mais.
Quanto ao Delphi,  também não é  linguagem. Delphi é o nome de um ambiente de
desenvolvimento que utiliza a  linguagem de programação Object Pascal, que é um
pascal orientado a objetos. O Object Pascal, a linguagem utilizada pelo Delphi, utiliza
o  paradigma Orientado  a Objeto  baseado  em  classes. Ou  seja,  nenhum  conceito
muito inovador caso você já conheça Java ou C#.
Lembrando, eu procurei  listar as linguagens que te dessem novos conceitos. Dado
as  linguagens  listadas,  o  VB  e  o  Object  Pascal  não  te  dão  nada  novo.  Já  a
plataforma .NET está com a sua participação garantida pela linguagem C#.
Em resumo é isso!
Abraços
Responder
 Felipe deMorais disse:
25 de julho de 2011 às 11:51
Gostei muito  do  seu  artigo.Estou  em  uma  época  de  decidir  quais  serão
minhas  próximas  linguagens.Então  gostaria  de  me  aprofundar  mais  nas
que eu aprendi, um pouco superficialmente, e então  ir para as próximas,
gostaria de saber se você tem algumas indicações não somente de livros
pode  ser  blogs,  pessoas,  …  qualquer  referência  nessas  linguagens
citadas no artigos.
Sobre essa parte das referências, o que você tem a me dizer ?
Responder
 renato disse:
26 de julho de 2011 às 1:14
Opa,
Realmente passei batido nesta questão.
Bem…  Tanto  C  assim  como  Java  e  até  PHP,  justificam  uma
carreira. Olhando apenas para mercado de trabalho destas Java
é a que tem maior demanda.
Aqui  você  pode  encontrar  as  linguagens  mais  populares  e  o
quão  usadas  elas  estão  sendo  no  mundo  de
hoje.http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Então a primeira dica é esta mesma que você já se deu: Escolha
uma  destas  3  e  se  aprofunde.  Pode  continuar
estudando/brincando com as outras. Mas veja qual destas você
mais se  identifica para se aprofundar. E, como eu já falei neste
blog,  a  única  maneira  de  aprender  a  programar  é
programando:http://www.aprenderprogramar.com.br/como­se­
tornar­um­programador/
Então procure criar ou se envolver em projetos com a linguagem
escolhida. E procure as comunidades/fóruns da linguagem.
Quanto  a  próxima  linguagem,  pelas  linguagens  que  você
conhece,  posso dizer  que  você está  contaminado pela  sintaxe
C. PHP e Java se inspiraram em C++ que vem da linhagem C.
Vamos quebrar isso?
1o Opção: Conhecer uma Linguagem Orientada a objetos pura –
nem java ou php são – com sintaxe completamente diferente de
C  e  que  trabalha  com  envio  de  mensagens  para  objetos.
Smalltalk:http://www.aprenderprogramar.com.br/10­linguagens­
de­programacao­voce­deveria­aprender/#smalltalk
Para aprender smalltalk:
http://www.inf.ufsc.br/poo/smalltalk/jonathan/
2a  Opção:  Vamos  aprender  logo  outro  paradigma  trabalhando
com programação funcional? Aprendendo Scheme – um dialeto
lisp  –  ou  ainda  Haskell  você  ‘subverterá’  aquilo  que  você
entende por programação:
http://www.aprenderprogramar.com.br/10­linguagens­de­
programacao­voce­deveria­aprender/#lispscheme_haskell
Sobre Scheme
http://pt.wikipedia.org/wiki/Scheme
Sobre Haskell
http://haskell.tailorfontela.com.br/chapters
http://pt.wikipedia.org/wiki/Haskell_(linguagem_de_programa%C3%A7%C3%A3o)
Mas,  destas  3,  veja  que  você  listou  já  Delphi,  Java,  e
PHP.Acabei de entrar para o curso de Ciência da Computação
onde só vi um pouco de C
Responder
 jardel disse:
7 de junho de 2011 às 21:26
obrigado pela atençao vou seguir suas dicas valeu!!!!!!!
Responder
 renato disse:
21 de junho de 2011 às 12:16
De Nada! 
Responder
 jardel disse:
6 de junho de 2011 às 23:10
Oi não sou programador ainda, mais adorei o artigo! Na verdade quero pedir uma orientação,
quero aprende a desenvolver aplicativos para android, sei que ele é baseado em java, estou
certo?? Então qual  linguagem devo aprende primeiro?? Java, c  ,?? Há mais uma dúvida se
android é baseado eu java, android também é uma linguagem?
Responder
 renato disse:
7 de junho de 2011 às 8:38
Olá Jardel,
Vamos  começar  do  início:  Android  é  um  sistema  operacional,  assim  como  o
Windows, assim como o Linux. Claro que ele é focado em dispositivos móveis, mas,
ainda assim, é um sistema operacional.
Na verdade ele é baseado no Linux, já que usa a sua kernel.
E tal qual o Windows ou Linux você pode programar em qualquer linguagem para a
qual exista um compilador ou um interpretador da linguagem naquele sistema.
Talvez, o que tenha feito a confusão é que a plataforma de desenvolvimento oficial
para Android é o SDK Java. Então pode­se entender que Java é a ‘linguagem oficial’
do sistema. Mas não ache que é a única. Pode­se programar até em C# utilizando o
Monodroid.Ou ainda em C/C++ utilizando o Native Development Kit (NDK).
Mas se você quer realmente é focar no desenvolvimento para o Android e vc ainda
não  tem preferências por nenhuma  linguagem é sempre melhor  seguir  a  linha que
tenha  um  melhor  suporte  da  comunidade  e  dos  mantenedores  e,  neste  caso,  a
resposta é sim Java.
Mas, se você ainda não sabe programar, é melhor iniciar por uma linguagem onde,
primeiro,  você  possa  aprender  lógica  de  programação.  E  para  isso  eu  não
recomendo Java e muito menos C.
Minha  recomendação  é:  primeiro  aprenda  a  programar.  Busque  por  apostilas
introdutórias  de  python  ou  siga  o  nosso
curso:http://www.aprenderprogramar.com.br/logica­programacao­davit/
Depois,  que você  já  souber um mínimo de programação e  lógica, aí  sim, aprenda
Java e a orientação a objeto.
Abraços e espero ter ajudado!
Renato
Responder
 Eli Moura disse:
7 de maio de 2011 às 18:01
Não posso acreditar que vocês não falaram de SCALA (scala­lang.com) muito boaa para quem
trabalha com Java ou odeia java mas precisa de rodar softwares na JVM… recomendo ainda
que eu esteja apenas começando a conhecer…
Responder
 renato disse:
8 de maio de 2011 às 22:41
Olá Eli,
entendo a sua ‘revolta’, sério. Concordo que Scala é um ótimo exemplo de linguagem
multiparadigma que, assim como o citado Groovy, também roda sobre a JVM, sendo
uma escolha também natural para os nascidos no Java, terem contatos com novos
conceitos e paradigmas que o próprio Java não aborda.
Porém como falado em ‘Considerações Finais’, a seleção destas linguagens foi uma
difícil  escolha  pessoal.  E,  pessoalmente,  eu  nunca  fiz  um  mero  ‘hello  world’  em
Scala. Por isso não me senti apto a defender a linguagem. Mas do pouco que eu li
sobre,  acho  que  é  uma  pena  ela  ainda  não  tenha  chegado  aos  top  50  do  índice
TIOBE.
Mas,  caso  você  queira,  use  este  espaço  para  ‘defender’  a  linguagem,  pontuando,
principalmente os pontos pelos quais vale a pena aprender Scala.
Caso prefira criar um conteúdo no seu próprio blog ‘http://estagionerd.blogspot.com/’
defendendo o porquê de aprender Scala eu dou a referência, combinado? 
Responder

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes