LCS 0 Denunciar post Postado Abril 6, 2011 Bom galera eu estava aqui pensando com minha cachola, e eu não faço isso muito hein,rss. mais quanto faço saem essas dúvidas cabeludas que somente o pessoal do Imasters podem me ajudar a resolver. Vamos lá! Se temos opções de peso como java, C#,Visual Basic,etc; Porque então gastar tempo aprendendo C e suas variantes? Pelo que entendo C é uma linguagem dita de baixo nível, porém não é possível e talvez mais fácil fazer as mesmas coisas com as linguagens que citei no parágrafo anterior? A curva de aprendizagem de um VB para um C apresenta uma discrepância muito grande. Fico imaginando também o que dá na cabeça de professores universitários para eles desprezarem uma matéria tão importante como lógica de programação para passar C,Pascal,etc. Espero ver as diversas opiniões do pessoal do fórum, descarto porém grosserias e respostas mal educadas. Cada um tem sua opinião e devemos respeitar as mesmas bem como respeitar quem as emitiu. Abcx, LCS Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Abril 6, 2011 Olá! A C (e C++ - Tudo o que eu falar C aqui estarei me refirindo a C++ também) não é uma linguagem baixo nível. Ela é consideradas de médio nível, o que lhe dá o poder que possui. A C reúne elementos de linguagem de baixo e alto nível, sendo então intermediária entre as duas, proporcionando enorme flexibilidade. Além dessa flexibilidade, o principal ganho no uso da C é a velocidade de execução. Você sabe o que acontece nos bastidores da Java e da C#? Quando você compila um programa em Java ou C#, ele não é transformado em código objeto (ou binário, de máquina) de uma vez. Ele é transformado em uma linguagem chamada bytecode no caso da da Java e Microsoft Intermediate Language (MSIL) no caso da C#. É uma linguagem intermediária, um pseudocódigo, que é processado no tempo de execução. Mas o que é essa linguagem intermediária? Quando você executa um programa em Java ou C#, o Java Virtual Machine (JVM) (em Java) ou o Common Language Runtime (CLR) (C#) é chamado, e o JVM ou o CLR então interpretam o código compilado no pseudocódigo no tempo de execução. O que acontece é uma perda enorme de velocidade, pois é necessário chamar o JVM ou o CLR e ainda interpretar o código (o que é bem diferente de compilar em C, que gera um código que a máquina executa diretamente, e não por meio de um intermediário). Outra desvantagem do uso de um sistema de tempo de execução (no caso, JVM ou CLR) é que tornam os programas compilados na linguagem intermediária extremamente fáceis de decompilar. Por isso a maioria dos programas em Java e C# (especialmente C#) são open-source. Programas de código fechado não valem a pena serem criados nessas 2 linguagens pois seu código fonte fica aberto a qualquer um com algumas pesquisas no google. Agora, em C, a compilação transforma o código em código binário, ou seja, 011010 101001 101001 110010 etc, o que é quase impossível de decompilar, e ainda que fosse, o nome das variáveis, das funções, das structs, todas as denominações seriam perdidas, se ainda fosse capaz de recuperar as structs, funções etc, pois o código decompilado é em assembly, não C, o que torna a C uma linguagem muito segura para uso de código fechado. Mas então porque usam esse sistema de tempo de execução? O ganho é um código portável, pois qualquer programa que for feito em Java ou C# rodará igualmente em qualquer computador que tenha uma distribuição desse sistema de tempo de execução instalado. Agora, se você olhar para todos os programas de alto nível, todos são em C ou C++: a grande maioria dos jogos, a grande maioria dos programas grandes, complexos e sérios, como até o navegador que você está usando agora (existem programas sérios em Java, mas C# não... C# é para brincar, não desenvolvimento sério :P). O ganho de desempenho (lembrei a palavra! Estava usando velocidade, quero dizer desempenho...) importa MUITO para qualquer programa que deseja ter um nome na internet. Agora, a escolha é sua: Java para portabilidade ou C/C++ para desempenho -> Não me fale de C#, ainda é uma linguagem muito nova para ser chamada de séria - e ainda é da Microsoft, o que quer dizer que NUNCA (eu disse NUNCA) vai ser portável, pois a Microsoft tem uma política de fechamento no seu sistema, e de exclusão dos outros. Também não me fale de Visual Basic. Nunca vai ser um concorrente de peso com Java, C ou C++. Basic foi inventado na década de 60, não é estruturado, é uma porcaria bagunçada. Todas suas variações continuam sendo. Não importa se o Visual Basic tenta adicionar elementos de programação estruturada, o BASIC nunca foi feito para ser estruturado, e não importa quanto tentem, não será. Bom, está aê, tudo o que eu falei foram fatos, excluindo alguns comentários meus. Eu ia escrever alguns mais, mas acabei esquecendo enquanto escrevia xD Se eu lembrar eu posto... Então, concluindo: Java x C/C++ - As 2,5 linguagens mais poderosas do mundo atual (C está deixando de ser usada, por isso 0,5 - hoje em dia é praticamente só C++). Bom, é isso aê pessoal! Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Abril 6, 2011 Entendi. Então C/C++ são linguagens mais voltadas para aplicações grandes,pesadas e que exigem grande segurança e performance, Certo? e para aquelas aplicações pequenas? Não é o caso de se usar VB? uma linguagem mais fácil, mais simples e mais rápida? Abcx, LCS Compartilhar este post Link para o post Compartilhar em outros sites
Asskiller 4 Denunciar post Postado Abril 6, 2011 VB muito facil de ser aprender a mecher , porem particularmente nao gosto da sua IDE , nao acho muito dinamica. Particularmente falando , eu me relaciono muito com Delphi e e uma linguagem poderosa , assim como C , C e na maioria dos lugares dada para ensinar logica da programacao , vejo muito Pascal e C , assim nao e uma linguagem que voce deixaria de lado. Agora se voce procurar entender como o computador funciona a fundo , te indico pesquisar sobre Assembly , para mim e a linguagem mais poderosa dentre todas , se voce tiver certo conhecimento pode fazer magicas e alguns estragos grande. Assembly nao e muito usado na questao de mercado hoje em dia , porem e a mais velha das linguagens , por ser usada para MicroProcessadores. Assembly ou linguagem de montagem é uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bits, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemónicos. Como o Lord Evil falo , Java ira dominar o mundo em breve , e a linguagem mais completa e usada atualmente. Abracos Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Abril 6, 2011 Olá! VB é podre. É fácil de aprender mas complica-se facilmente virando aquele "macarrão" de gotos. C/C++ ou Java, ou qualquer outra linguagem estruturada ou orientada a objetos permite a criação tanto de programas muito simples ou de programas muito complexos. Aí é que vem: se você quer que a aplicação funcione em multiplataforma, é MUITO mais fácil fazer isso em Java, embora também seja possível em C/C++ (eu uso o máximo que eu puder bibliotecas 100% portáveis em C/C++, só quando tipo, baixar um arquivo da internet, que é de implementação do SO e que por isso a C/C++ não dá suporte que eu uso bibliotecas específicas, como a API do windows), e C/C++ tem ganho por cima da velocidade. Um programa em Assembly, que é a linguagem com melhor desempenho já criada, já que é escrito em código binário de uma vez, pode chegar a programas 5x~10x mais rápidos que em C/C++. Agora, a complexidade de aprendizado e utilização da linguagem é algo que não se compara. Assembly, pelo que dizem, é a linguagem mais complicada de aprender que existe também. Eu faria e fiz assim (é a única aplicação real que vejo para VB): começar aprendendo uma linguagem não-estruturada fácil, como VB (no meu caso foi Batch =P), depois uma de fácil aprendizado OOP (como Java e C# - No meu caso foi C#, e por isso posso afirmar tudo o que afirmei sobre C#) e depois migrar pra uma mais complexa, que seria a C++. Se quiser, pode aprender depois uma estruturada, como C. Aí se tem um conhecimento muito grande sobre programação, pois conhece linguagens não-estruturadas, estruturadas e orientadas a objetos, permitindo que você entenda todos os tipos atualmente usados de lógica. Aí, se quer ainda mais, passa a aprender uma linguagem de low-level, como Assembly, que na verdade permite que qualquer programa que você desenvolva em outras linguagens seja mais rápido, pois você irá entender como o compilador funciona, e então saber como escrever seu código do melhor jeito, em qualquer outra linguagem, para alcançar os melhores resultados. Lembrei de outras coisas que eu ia escrever a favor da C/C++, mas depois eu escrevo... Estou com preguiça. Acho que deveriam linkar esse tópico para um tópico fantasma em cada seção de tal programação (.NET, Java, BASIC, outras linguagens, etc) pois senão não vamos ter discussão de verdade, já que grande parte dos que visitam e usam, por exemplo, BASIC, não acessam essa área... Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
LCS 0 Denunciar post Postado Abril 6, 2011 Eu vi um video no site do msdn e achei um trabalho enorme para se escrever um hello world e uma cor vermelha de fundo.. O VB pode ser engessado sim, mas eu acho que se economiza um grande tempo para programação. Abcx, LCS Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Abril 6, 2011 Olá! Sim, o VB é direcionado a novatos em programação, por isso, consistentemente ele é mais simples. Agora, o que acontece é que C/C++ permite mais controle sobre o que acontece, e por isso é mais complexo. Agora, o resultado de aprender essa complexidade é muito superior ao de aprender o VB simples, pois você pode ter real controle sobre o que acontece no seu programa, e não o SO. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites