O que há de Novo?
Fórum Outer Space - O maior fórum de games do Brasil

Registre uma conta gratuita hoje para se tornar um membro! Uma vez conectado, você poderá participar neste site adicionando seus próprios tópicos e postagens, além de se conectar com outros membros por meio de sua própria caixa de entrada privada!

  • Anunciando os planos GOLD no Fórum Outer Space
    Visitante, agora você pode ajudar o Fórum Outer Space e receber alguns recursos exclusivos, incluindo navegação sem anúncios e dois temas exclusivos. Veja os detalhes aqui.


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

Sonymaster

Jogador de Videogame das décadas 1980/1990
VIP
Mensagens
11.618
Reações
17.617
Pontos
1.659
hacker2.jpg
Linguagem 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.


57130,O.png


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.


1111195251_1352819046.gif


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

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.


php_progr_img_exp.jpg

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 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.


visual_studio_javascript_de.png


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 JavaScript nã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

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.

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 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.


HelloHaskell4.png

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 as outras linguagens funcionais. Alguns perguntariam:


lfs-emacs-bibtex-screenshot0.png


- “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 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 + incremento
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.


Open-source-REBOL-3-on-SyllableDesktop.png


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.

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.

Fonte: Aprender Programar
 

Kaze Senoue

Ei mãe, 500 pontos!
Mensagens
11.051
Reações
13.585
Pontos
564
Eu queria muito aprender, mas não acho um bom lugar online pra isso. Já tentei fazer um curso aqui na minha cidade, mas é daqueles que te botam sentado num computador usando um programa que te "ensina".
 

ZKAEV

Mil pontos, LOL!
Mensagens
4.328
Reações
2.202
Pontos
1.029
Eu queria muito aprender, mas não acho um bom lugar online pra isso. Já tentei fazer um curso aqui na minha cidade, mas é daqueles que te botam sentado num computador usando um programa que te "ensina".

Eu aprendi mesmo no trabalho.

Na faculdade aprendi C, C++ (esses dois bem a fundo mesmo), SQL, e Java.

No trabalho: C#, Basic ou Visual Basic, Python e ASP.NET

Considero C++ ou C as melhores linguagens que existem até hoje, e Basic e C# as mais simples, em meia hora você tem um esboço do seu programa mas perde muita performance.

C é lindo por que a forma que você aprende é uma entrada excelente para todas as outras línguas, tantas que foram por acaso baseadas nele. Isso sem contar que tem uma performance incrível, porém, é bem demorado o desenvolvimento, e a falta de gerenciamento de memória (Garbage collector) também é uma dor de cabeça constante para o programador.
 


Sephirothrx7

Mil pontos, LOL!
Mensagens
12.406
Reações
2.292
Pontos
1.269
Recomendaria todo programador a conhecer um pouco de JavaScript. Depois que comecei a trabalhar com desenv. web e aprendi JS gostei bastante da linguagem, é bem legal pensar diferente dos C*/Java. Sem falar que você tem um compilador JS em todos os computadores, basta ter um navegador.
 

Kaze Senoue

Ei mãe, 500 pontos!
Mensagens
11.051
Reações
13.585
Pontos
564
Eu aprendi mesmo no trabalho.

Na faculdade aprendi C, C++ (esses dois bem a fundo mesmo), SQL, e Java.

No trabalho: C#, Basic ou Visual Basic, Python e ASP.NET

Considero C++ ou C as melhores linguagens que existem até hoje, e Basic e C# as mais simples, em meia hora você tem um esboço do seu programa mas perde muita performance.

C é lindo por que a forma que você aprende é uma entrada excelente para todas as outras línguas, tantas que foram por acaso baseadas nele. Isso sem contar que tem uma performance incrível, porém, é bem demorado o desenvolvimento, e a falta de gerenciamento de memória (Garbage collector) também é uma dor de cabeça constante para o programador.

Ah, mas não sei se C++ me ajudaria no que eu quero... Eu pretendo me focar mais em desenvolvimento pra web.
 

dk120

Lenda da internet
Mensagens
41.906
Reações
95.093
Pontos
2.179
Eu sempre digo que como programador gosto de Java/C#/PHP, mas como usuario gosto de C/C++.

O desempenho que se consegue com C/C++ é praticamente imbatível. Como usuário você só vai querer usar programas feitos em C. Claro que em alguns casos se consegue desempenho equivalente em Java/C#, mas são em casos bem específicos. Em geral um programa feito em C/C++ vai ter sempre melhor desempenho. Se comparar com linguagens de script então, C está a anos luz no quesito desempenho.

Agora na correria do dia a dia, C++ é uma linguagem muito perigosa. Um errinho que voce faz hoje pode te tirar noites de sono daqui a alguns meses. O programador precisa de muita experiencia e disciplina para não fazer m****. No lugar que eu trabalho hoje, sem chances de se usar C++. O pessoal consegue fazer besteira em PHP, que é uma linguagem muito amigavel, imagina C.

Em geral, eu acho que tem sempre uma linguagem mais adequada para casa caso. As minhas favoritas são C++ e Java, mas não recomendo elas para tudo. Em alguns casos um "simples" PHP é tudo que voce precisa.
 

AlefKSilver

Ei mãe, 500 pontos!
Mensagens
11.004
Reações
14.527
Pontos
553
Aproveitando o tópico

Tem como aprender essas linguagens pela net?

Gratis?

Se tiver como alguem ajuda com uma apostila?
 

Math Dealer

Ei mãe, 500 pontos!
Mensagens
5.521
Reações
4.989
Pontos
819
So sei C++, e um nivel médio que eu aprendi na faculdade, o necessário pra fazer simulações numéricas de problemas fisicos, e praticamente nem uso, quando eu tenho que resolver alguma coisa muito cabulosa uso o matlab mesmo

Aproveitando o tópico

Tem como aprender essas linguagens pela net?

Gratis?

Se tiver como alguem ajuda com uma apostila?

Procura livros bons da linguagem que você quer aprender e caça os PDFs deles nos torresmos da rede. Se você não tiver problemas com ingles fica mais facil ainda achar esses livros em pdf. Eu aprendi C++ assim.
 

dk120

Lenda da internet
Mensagens
41.906
Reações
95.093
Pontos
2.179
Tem um site que ensina Javascript interativamente. Vou escreve o código o site ja corrige e tal. É só procurar.
 

AlefKSilver

Ei mãe, 500 pontos!
Mensagens
11.004
Reações
14.527
Pontos
553
So sei C++, e um nivel médio que eu aprendi na faculdade, o necessário pra fazer simulações numéricas de problemas fisicos, e praticamente nem uso, quando eu tenho que resolver alguma coisa muito cabulosa uso o matlab mesmo



Procura livros bons da linguagem que você quer aprender e caça os PDFs deles nos torresmos da rede. Se você não tiver problemas com ingles fica mais facil ainda achar esses livros em pdf. Eu aprendi C++ assim.

Estou catando no Chuta bundas o C COMPLETO E TOTAL :D
 

ZKAEV

Mil pontos, LOL!
Mensagens
4.328
Reações
2.202
Pontos
1.029
Eu sempre digo que como programador gosto de Java/C#/PHP, mas como usuario gosto de C/C++.

O desempenho que se consegue com C/C++ é praticamente imbatível. Como usuário você só vai querer usar programas feitos em C. Claro que em alguns casos se consegue desempenho equivalente em Java/C#, mas são em casos bem específicos. Em geral um programa feito em C/C++ vai ter sempre melhor desempenho. Se comparar com linguagens de script então, C está a anos luz no quesito desempenho.

Agora na correria do dia a dia, C++ é uma linguagem muito perigosa. Um errinho que voce faz hoje pode te tirar noites de sono daqui a alguns meses. O programador precisa de muita experiencia e disciplina para não fazer m****. No lugar que eu trabalho hoje, sem chances de se usar C++. O pessoal consegue fazer besteira em PHP, que é uma linguagem muito amigavel, imagina C.

Em geral, eu acho que tem sempre uma linguagem mais adequada para casa caso. As minhas favoritas são C++ e Java, mas não recomendo elas para tudo. Em alguns casos um "simples" PHP é tudo que voce precisa.

Eu entendi seu ponto de vista e concordo com ele mas comparar C com PHP foi meio bizarro né.

Compara C com Basic ou C# ou Java aí eu concordo plenamente.

C++ precisa ganhar um gerenciador de memória próprio, um Garbage Collector só faria ele ficar anos a frente do que está agora na facilidade de programar.


Ah, mas não sei se C++ me ajudaria no que eu quero... Eu pretendo me focar mais em desenvolvimento pra web.

Aí suas opções são pequenas. PHP ou ASP.net.

O PHP é gratuito tem performance boa mas o código é bem livre mesmo (Estruturação), você vai ver código totalmente diferente um do outro.

ASP.net é bom também mas aí é só em windows, e o código é mais linear (dois programadores de ASP.net certificados tendem a programar de maneira parecida). E como sempre as ferramentas da Microsoft vão te ajudar muito na área gráfica e tal (tipo o Visual Studio para fazer template).

Em geral empresas optam por ASP e as empresas com area de TI grande optam por PHP, ASP você tem suporte enorme (da própria MS) PHP você depende dos seus desenvolvedores para corrigir problemas e dos forums da vida.
 

Sonymaster

Jogador de Videogame das décadas 1980/1990
VIP
Mensagens
11.618
Reações
17.617
Pontos
1.659
Eu sempre digo que como programador gosto de Java/C#/PHP, mas como usuario gosto de C/C++.

O desempenho que se consegue com C/C++ é praticamente imbatível. Como usuário você só vai querer usar programas feitos em C. Claro que em alguns casos se consegue desempenho equivalente em Java/C#, mas são em casos bem específicos. Em geral um programa feito em C/C++ vai ter sempre melhor desempenho. Se comparar com linguagens de script então, C está a anos luz no quesito desempenho.

Agora na correria do dia a dia, C++ é uma linguagem muito perigosa. Um errinho que voce faz hoje pode te tirar noites de sono daqui a alguns meses. O programador precisa de muita experiencia e disciplina para não fazer m****. No lugar que eu trabalho hoje, sem chances de se usar C++. O pessoal consegue fazer besteira em PHP, que é uma linguagem muito amigavel, imagina C.

Em geral, eu acho que tem sempre uma linguagem mais adequada para casa caso. As minhas favoritas são C++ e Java, mas não recomendo elas para tudo. Em alguns casos um "simples" PHP é tudo que voce precisa.


Como falei para o Palhano que esta querendo começar a programar dk120 ele disse que comecaria com Assembler.

Bom eu trabalho na IBM desde 98 comecei como programador Cobol para um sistema chamado Gescom e aplicações em C e Assembler para Engenharia de Hardware em servidores dedicados a PDVs empresariais e digo que não é uma linguagem fácil de se mexer como você mencionou sobre o cuidado com o código em C, depois veio programas para uso de front-end usando Clipper ou Turbo Pascal coisas simples, mas a minha turma ainda tinha programadores em Cobol, Clipper, Qbasic, Fox Script, C e Assembler, tudo para uso em sistemas Unix System e DOS, hoje a IBM ainda usa o DOS para algumas maquinas, no caso é o FreeDOS um sistema DOS Opensource.

Em meados de 2011 tive que mudar para o sistema WEB que hoje é a grande fatia do mercado, senão estava muito atrasado, porque como programador de linguagens antigas a gente só fazia reparos nos programas que no caso estavam sendo substituídos por programas novos, fizemos alguns cursos para tirar certificações como do PHP que achei uma linguagem muito fácil por isso gostei dela, não queria outa linguagem difícil de aprender, mas de tanto mexer no Javascript com esse "JQuery" eu gostei dessa linguagem para uso dos programadas que estamos desenvolvendo.

Por isso se fosse começar hoje a programar seria em alguma linguagem WEB como PHP ou Javascript.
 

xXxFreemanxXx

Ei mãe, 500 pontos!
Mensagens
1.044
Reações
340
Pontos
794
Estou estudando C++ na faculdade esse período, e to gostando muito, fiz alguns projetos, programa de Agenda e um para Hotéis, e até o momento eu acho bem legal essa linguagem, no momento estou no assunto de Pilhas e Filas, e o bixo ta pegando.

Próximo período vem JAVA, que estou ansioso para conhecer.

Abraços
 

dk120

Lenda da internet
Mensagens
41.906
Reações
95.093
Pontos
2.179
Como falei para o Palhano que esta querendo começar a programar dk120 ele disse que comecaria com Assembler.

Bom eu trabalho na IBM desde 98 comecei como programador Cobol para um sistema chamado Gescom e aplicações em C e Assembler para Engenharia de Hardware em servidores dedicados a PDVs empresariais e digo que não é uma linguagem fácil de se mexer como você mencionou sobre o cuidado com o código em C, depois veio programas para uso de front-end usando Clipper ou Turbo Pascal coisas simples, mas a minha turma ainda tinha programadores em Cobol, Clipper, Qbasic, Fox Script, C e Assembler, tudo para uso em sistemas Unix System e DOS, hoje a IBM ainda usa o DOS para algumas maquinas, no caso é o FreeDOS um sistema DOS Opensource.

Em meados de 2011 tive que mudar para o sistema WEB que hoje é a grande fatia do mercado, senão estava muito atrasado, porque como programador de linguagens antigas a gente só fazia reparos nos programas que no caso estavam sendo substituídos por programas novos, fizemos alguns cursos para tirar certificações como do PHP que achei uma linguagem muito fácil por isso gostei dela, não queria outa linguagem difícil de aprender, mas de tanto mexer no Javascript com esse "JQuery" eu gostei dessa linguagem para uso dos programadas que estamos desenvolvendo.

Por isso se fosse começar hoje a programar seria em alguma linguagem WEB como PHP ou Javascript.


Eu trabalho com PHP porque preciso ganhar a vida e é o que tem emprego hoje em dia. Mas na verdade acho um saco linguagem tão alto nivel. Sou formado em computação, então gosto de saber como funciona as coisas por baixo.

Para me "divertir" e não desamprender C/C++, gosto de ficar lendo codigos open source. Ultimamente estou vendo o código do SQLite.
 

X-Shiryu

Ei mãe, 500 pontos!
Mensagens
1.595
Reações
3.103
Pontos
694
C++ precisa ganhar um gerenciador de memória próprio, um Garbage Collector só faria ele ficar anos a frente do que está agora na facilidade de programar.

O C++ moderno (c++11) já tem algo muito melhor que GC: smart pointers. Voce nem precisar mais utilizar o new, muito menos o delete.

C é a linguagem mais importante já feita para a computação, ela influenciou varias outras de grande importância hoje.
Se você quer se tornar um melhor desenvolvedor, C++ é a linguagem que o fará.
 

Haagenti

Lenda da internet
Mensagens
39.364
Reações
51.546
Pontos
1.712
Como falei para o Palhano que esta querendo começar a programar dk120 ele disse que comecaria com Assembler.

Bom eu trabalho na IBM desde 98 comecei como programador Cobol para um sistema chamado Gescom e aplicações em C e Assembler para Engenharia de Hardware em servidores dedicados a PDVs empresariais e digo que não é uma linguagem fácil de se mexer como você mencionou sobre o cuidado com o código em C, depois veio programas para uso de front-end usando Clipper ou Turbo Pascal coisas simples, mas a minha turma ainda tinha programadores em Cobol, Clipper, Qbasic, Fox Script, C e Assembler, tudo para uso em sistemas Unix System e DOS, hoje a IBM ainda usa o DOS para algumas maquinas, no caso é o FreeDOS um sistema DOS Opensource.

Em meados de 2011 tive que mudar para o sistema WEB que hoje é a grande fatia do mercado, senão estava muito atrasado, porque como programador de linguagens antigas a gente só fazia reparos nos programas que no caso estavam sendo substituídos por programas novos, fizemos alguns cursos para tirar certificações como do PHP que achei uma linguagem muito fácil por isso gostei dela, não queria outa linguagem difícil de aprender, mas de tanto mexer no Javascript com esse "JQuery" eu gostei dessa linguagem para uso dos programadas que estamos desenvolvendo.

Por isso se fosse começar hoje a programar seria em alguma linguagem WEB como PHP ou Javascript.

VOCE TRABALHA NA IBM FAZ 15 ANOS?
 

RubsBR

Bam-bam-bam
Mensagens
2.638
Reações
1.963
Pontos
204
Eu queria muito aprender, mas não acho um bom lugar online pra isso. Já tentei fazer um curso aqui na minha cidade, mas é daqueles que te botam sentado num computador usando um programa que te "ensina".



Pra quem quer aprender a programar ou qualquer outra coisa, o que não falta são cursos bons na internet.

pra quem não manja inglês: http://www.veduca.com.br/

outros:
http://oyc.yale.edu/
http://online.stanford.edu/courses
http://ocw.mit.edu/courses/
https://www.coursera.org/

etc..
 

Jorgel

Bam-bam-bam
Mensagens
5.630
Reações
4.066
Pontos
389
Programo a uns 5 anos, mas sou um péssimo programador, me sinto mal por isso. Pratico muito pouco, praticamente só na faculdade, e tem semestre que eu não pego nenhuma matéria com prática. Não consigo pegar um projeto meu e começar a fazer e sou péssimo como auto-didata :ksnif
 

dk120

Lenda da internet
Mensagens
41.906
Reações
95.093
Pontos
2.179
O C++ moderno (c++11) já tem algo muito melhor que GC: smart pointers. Voce nem precisar mais utilizar o new, muito menos o delete.

C é a linguagem mais importante já feita para a computação, ela influenciou varias outras de grande importância hoje.
Se você quer se tornar um melhor desenvolvedor, C++ é a linguagem que o fará.


Mas é isso mesmo. O problema é que os programadores começam a desenvolver em C++ vindo do C e continuam com as mesmas coisas perigosas, como deixando ponteiros "soltos" ou usando array de caracteres em vez de std::string. E falo por experiencia propria, pois também fiz isso.
 

SonOfJeffer

Mil pontos, LOL!
VIP
Mensagens
9.423
Reações
6.700
Pontos
1.449
Aprender uma linguagem hoje em dia é só querer. Aproveitem e APRENDAM pra valer o inglês, fazendo os cursos do coursera, como o colega falou acima. Está rolando o curso de python que está sendo ótimo. Recomendo.
 

Gkaarl

Bam-bam-bam
Mensagens
6.225
Reações
5.522
Pontos
353
Quem quer aprender algo daí, link na minha assinatura de cursos gratuitos.

No mais, pra quem tá começando, recomendo pseudo linguagem (portugol) pra fortalecer a lógica, depois partir pra Java, pois é bem simples e rápida de aprender. Depois, plataforma .net, C, PHP, o que quiser.
 

navossoc

Supra-sumo
Mensagens
1.319
Reações
788
Pontos
174
Recomendaria todo programador a conhecer um pouco de JavaScript. Depois que comecei a trabalhar com desenv. web e aprendi JS gostei bastante da linguagem, é bem legal pensar diferente dos C*/Java. Sem falar que você tem um compilador JS em todos os computadores, basta ter um navegador.


Você quis dizer, interpretador né? :P

Sério que você aprendeu tudo isso no trabalho? hahaha

[]'s
 

deep dog

Ei mãe, 500 pontos!
Mensagens
4.321
Reações
5.155
Pontos
703
fiz um período de ciência da computação. meti o pé por causa da programação, eu e metade da turma. não é pra mim, put* que o pariu. :klol
 

deep dog

Ei mãe, 500 pontos!
Mensagens
4.321
Reações
5.155
Pontos
703
acredite, programação é a parte mais fácil do curso...

eu amei algorítmos, fui mais ou menos com lógica de programação. linguagem passei com a nota mínima necessária.. enfim, não é pra mim. 2014.1 devo fazer ADM ou eng. de produção pq aproveito as matérias que estudei em CC. é a vida
 

CidoLoco

Bam-bam-bam
VIP
Mensagens
3.138
Reações
2.083
Pontos
354
Dessas todas só não programei em Sisal e Rebol. Lisp é algo que eu queria aprender melhor. Atualmente mexo regularmente com javascript, groovy, java, vb.net, vba, vbscript e cobol.

Uma interessante de ter na lista era bash script ou powershell, são bem diferentes e muito poderosas. (principalmente powershell)
 

Macaco Louco

Ei mãe, 500 pontos!
Mensagens
1.394
Reações
1.086
Pontos
608
Acho desnecessário aprender todas essas linguagens, não por elas não serem boas, muito pelo contrário, são ótimas, mas porque cada uma é direcionada para um tipo específico de aplicação.

A única linguagem que eu considero obrigatória é a linguagem C, por ela ser a base de várias outras e por forçar o usuário a programar em um nível mais baixo, aprendendo como funcionam as aplicações.

Mas não vejo motivo para um programador de aplicações web aprender a programar em MatLab, por exemplo, da mesma forma que não vejo um programador de aplicações científicas aprender PHP. São linguagens com propósitos diferentes.

Eu nunca senti a necessidade de acompanhar a moda das linguagens de programação. Eu comecei aprendendo C e Pascal, depois aprendi Delphi, Visual Basic e Clipper. Depois disso aprendi Java, C# e C++. Quando tive interesse em aprender programação web eu passei a estudar PHP e JavaScript. E no mestrado eu aprendi MatLab e Python que é praticamente uma convenção no ambiente acadêmico.

Mas eu sempre fui aprendendo conforme fui precisando. Hoje em dia eu estou 100% no ambiente acadêmico eu não vejo motivos para acompanhar a rápida evolução das novas linguagens e seus milhões de frameworks. Mas se algum dia precisar, certamente tenho base para aprender em pouco tempo.

Mais importante do que aprender linguagens de programação é aprender algoritmos e padrões de projeto. Não adianta você saber todas as funcionalidades da linguagem Java e não saber estruturar um projeto web de maneira correta.
 

=JD=

Ei mãe, 500 pontos!
Mensagens
109
Reações
9
Pontos
699
Ja vi C, Java, Prolog na facul e SQL. Ja mexi um pouco com C# tbm e achei legal e um pouco melhor q java.
Atualmente desenvolvo em php e um pouco de javascript e css( se é q é linguagem) pq desenvolvo para web e acho uma linguagem muito boa. Ao mesmo tempo, to estudando ruby, pq ta crescendo muitoo...
 
Topo Fundo