Linguagens de Programação

Iniciado por aoalves, 19 de Maio de 2009, 16:43

tópico anterior - próximo tópico

aoalves

Olá pessoal, estou começando a estudar programação. Já tenho uma noção legal de algoritmos, já aprendi a sintaxe de linguagens como C e PHP. No entanto, eu quero concentrar meus esforços numa linguagem que seja bem completa. Não é meu objetivo desenvolver para web, como PHP ASP etc.
Queria saber de programadores mais experientes quais linguagens se mostram boas opções e quais as características de cada uma.
Se puderem dar exemplos de programas que foram feitos com linguagens seria bem interessante também. Por exemplo, o AutoCAD foi programado em qual linguagem?
Quais as vantagens de cada linguagem? Qual a diferença entre os tipos de linguagem: Orientada a Objetos, estruturada etc.
Qual linguagem é recomendada pra soluções de pequenas empresas como Hotéis etc.

Att.

Alexandre

ubu4ever

Alexandre,

Existem diversas linguagens disponíveis, cada uma tem suas vantagens e desvantagens. Somente com o tempo você descobrirá. Por exemplo o C trabalha com ponteiros, o que às vezes é extraordinariamente difícil de entender ou o que ocasiona erros, caso o programador cometa algum erro. Já no Java não existem ponteiros. Entretanto o Java (multiplataforma e não o nativo) é cerca de 20 vezes mais lento do que o C. Por sua vez o Java é Orientado a Objetos e o C não, etc... Tudo depende do uso.

Algumas linguagens e suas características:

Linguagem C (Padrão ANSI)*:

Linguagem procedural totalmente portável* para qualquer tipo de plataforma e sistema operacional. Grande parte do Gnome foi feita em C (além de outras linguagens). Com ela é possível programar tanto para console quanto para interfaces gráficos como o Gnome, KDE, etc... Porém a programação é feita utilizando API's. Trata-se de uma programação orientada a eventos e não Orientada a Objetos. Para programar em C no linux você pode usar o Glade (IDE) e criar as interfaces visualmente. Existe também o Qt Creator (antigo Qt Designer). O Glade usa a biblioteca gtk e o Qt Creator usa a qt.

Linguagem C++ (Padrão ANSI):

Variante do C Orientada a Objetos. Praticamente quase todos os SGBD (Sistema Gerenciadores de Bancos de Dados) foram feitas em C/C++. MySQL, SQL Server, etc... A maioria dos Sistemas Operacionais também foram feitas em C/C++: Windows, Linux, MacOS, Unix, etc...

Linguagem Java:

Linguagem Orientada a Objetos multiplataforma que roda em vários sistemas operacionais sem precisar ser recompilada (desde que o so tenha um JRE - Java Runtime Environment). É uma linguagem compilada e interpretada e por isso é bem mais lenta. É recomendável para aplicações que precisam ser multiplataformas e que não exijam muito em termos de processamento. Jogos para PC 3D no nível de Doom 3, Quake 4, FarCry, Half-Life, etc... é praticamente inviável de ser feita. Existe a possibilidade de compilar o Java para suporte nativo, porém, nesse caso você ganha velocidade e perde "portabilidade sem a necessidade de recompilar" pois terá que compilar o código para cada SO diferente. Ex.: Windows, Linux, MacOS, BeOS, OpenSolaris, etc... O Java é mais usado para aplicações comerciais para a Web. É o que está "bombando" hoje em termos de programação Web.

Linguagem Object Pascal:

Variante do Pascal porém Orientada a Objetos também. A mesma linguagem que o Delphi (Windows) usa. O similar para linux seria o Lazarus ou o Kylix. Muitas empresas, principalmente de pequeno e médio porte usam o Delphi (Object Pascal) para desenvolver aplicações Desktop cliente-servidor de pequeno e médio porte. Possui bastante bibliotecas e componentes.

Bom, acho melhor parar por aqui, você também pode procurar por: Python, Perl, Tcl/TK (todas elas usadas no linux também).

Orientação a Objetos X Linguagem Estruturada

Bom, são muitas as diferenças. Resumindo: com a o voce pode reutilizar o código de forma "inteligente" sem ter que criar bibliotecas enormes. Você pode usar "herança" ou "herança multipla" no caso do C++ por exemplo. Isso aumenta a produtividade do programador pois as tarefas mais difíceis ficam "encapsuladas" dentro das "classes". Quanto mais você se distancia das linguagens de máquina ou de baixo e médio nível (Assembly e C por exemplo) menos você se preocupa com tarefas difíceis como acessar uma determinada área no disco rígido ou gerenciar a memória de um SO.

A linguagem estruturada é bastante usada em microcontroladores, televisões, relógios digitais, equipamentos eletrônicos em geral pois são linguagens mais leves e rápidas.

Bom, acho que você terá que pesquisar e estudar mais para aprender as diferenças.

Quanto ao AutoCAD, com certeza grande parte deve ter sido feita em C/C++ por serem rápidas e eficiêntes.

Quanto ao software para Hóteis, você poderia usar, para começar a aprofundar, Object Pascal com Lazarus ou Kylix ou Java com o NetBeans ou Eclipse.

Bons estudos e boa sorte!


aoalves

Prezado gcclt,

Agradeço e muito pelas dicas!

Outra coisa, pelo que ouço falar, para contribuir com o Ubuntu, o pessoal usa python tbm né?

Essa linguagem você apenas citou. Vale a pena dar uma estudada nela tbm??
Att.

ubu4ever

Caso queira ajudar a comunidade linux, sim. Ele é bastante usado e já vem na maioria das distribuições. A muiiiiito tempo eu programei em Python, é leve, rápida, orientado a objetos, tem suporte a interface gráfica, bando de dados, etc...

Entretando, comercialmente falando, são poucas as empresas que usam ela. Eu devo ter vistou no máximo 1 ou 2 que usasse.

Para maiores informações:

http://www.guiaubuntupt.org/wiki/index.php?title=Programacao/Python
http://wiki.python.org/moin/BeginnersGuide
http://swaroopch.com/notes/Python

kunigas

Sobre a linguagem em que AutoCAD é feito, acho que é Lisp, que é chamada de linguagem funcional.

Pelo que tenho informações, a grande parte das empresas têm usado Java.

Pelo pouco que conheço de desenvolvimento de software livre, boa parte deles é feita em C, C++ e python. Fico na dúvida porque não vejo muito código Java em softwares livres. Seria apenas questão de desempenho ou rola algum tipo de politicagem?

ubu4ever

Acredito que seja pelo desempenho; pelo fato das linguagens C/C++ serem bem mais antigas (e bem mais rápidas) e portanto muito mais utilizadas a bem mais tempo do que o Java que ("relativamente") novo em comparação com elas. Além disso, fazer programadores C/C++ mudarem "radicalmente" para o Java é muito difícil!

Entretanto temos que entender que cada linguagem tem um "nicho" de mercado. O Java é mais usado para Web, para celulares, dispositivos móveis (como o GPS), projetos que exijam multiplataforma, etc...

Já imaginou todo o linux (com exceção do kernel) todo feito em Java? Incluindo todos os aplicativos e bibliotecas (Gnome, KDE, e todos os aplicativos incluídos)? Já imaginou a quantidade de chamadas e de processamento do JRE? Absurdo!!! Seria necessário um supercomputador com vários processadores! :P

HannibalGames

#6
Se você quer uma linguagem antiga e fod* va para o C++, se você prefere uma linguagem que da dinheiro recorra para o Java :) eu particularmente fiquei com python(mais estou tentando utilizar python para web :))...

vitor lima

Sabe, eu acho o Java uma ótima linguagem para o seu caso.

Já que já está indo bem com algoritmos.

Essa linguagem é um pouco trabalhosa, mas ela irá te ensinar várias "boas práticas de programação" e te dar uma boa noção de como se trabalha em projetos grandes.
E como já foi dito, é largamente utilizada no mercado, então, você possívelmente poderá consegir algum retorno financeiro.

Além disso, depois que estiver programando bem em Java, irá conseguir programar com facilidade em praticamnte todas as linguagens orientadas a objetos.


Dois ótimos livros de Java para quem está iniciando são:

"Java: Como programar - Deitel"
e
"Use a Cabeça! Java" (este é realmente diferente de qualquer livro de programação que você já tenha visto)

Eles são facilmente econtrados na web.

Darcamo

CitarEles são facilmente encontrados na web.
Cuidado com o incentivo a pirataria.

De fato é fácil encontrar PDFs de livros (especialmente na área de programação) na internet e não vou ser hipócrita dizendo para você não pegar nenhum PDF quando eu mesmo tenho alguns, mas as vezes é bom comprar um bom livro para ler e ter como referência. Fica até mais agradável de se estudar.

Não sei o de java, mas comprei o livro do Deitel de C++ faz tempo e é muito bom, além de ser bem agradável de ler. Foi uma excelente compra e provavelmente o de java deve ser tão bom quanto.

ubu4ever

Existe um livro gratuito para Java: "Thinking in Java" que é excelente!!! Existe também o "Thinking in C++" que também é gratuito.

Para baixá-los entre no site: http://www.mindviewinc.com/Books/ - Os livros são gratuitos e completamente legais!

Também recomendo os livros "Core Java 2: Fundamentos" e "Core Java 2: Avançado".

Lunik

Tem também um livro "opensource" do python, que acho até que já vem no linux, muuuito bom também.