Ir ao conteúdo
  • Cadastre-se

Porque C é ainda uma das mais utilizadas?


Master Yoda

Posts recomendados

Se C++ tem muitas coisas como orientação a objetos e templetes, Java então, nem se fala, com multi-treading, orientação a objetos e mais ''brinquedos''. Mas C não tem muitos recursos, certo? É muito limitada, mas ainda continua sendo a segunda linguagem mais usada em programação só perdendo pra Java!

Eu aprendi a programar em C mas estou sentindo que perdir tempo pois não tem orientação a objetos(nem sei o que é isto) e outros mais recusos.É como se tivesse aprendido uma linguagem velha!

Vocês se arrependeram de estudar C? :(

C ainda é utilizada no mercado de trabalho?

Link para o comentário
Compartilhar em outros sites

respondendo as perguntas..

Não, não estou me arrependendo de estudar C.

Sim, até onde sei é a linguagem que dá "vida" a maioria dos sistemas operacionais, como Windows e Mac, Linux não tenho certeza, por exemplo, e também e me parece ser muito usada para drivers, tanto de windows quanto de linux e mac..

ps: estou estudando por conta própria, então não sei como está, de fato, no mercado.. mas essa é a noção que eu tenho, depois de pesquisar e ler algumas coisas.. :D

Uma pergunta, porque esse desgosto com C? o que C te fez? :S

E como acha que a falta de Orientação a Objetos é uma falta, se ,como você disse, você não sabe o que é? :S (achei meio confuso o que disse... por isso as perguntas '-')

Link para o comentário
Compartilhar em outros sites

Obrigado anonimo1w por responder,

O quê queria dizer é se C não tem muitos recursos como Java e C++ não seria uma linguagem ultrapassada?

Eu não sei o que é orientação a objetos, mas se existe deve ser util, isto não faz falta na hora de programar? Multi-treading? Templates?

Tipo ainda que eu seja iniciante na area de programação, estou utilizando C faz mais de um ano e fazendo problemas complexos de algoritmos desenvolvido pelo Centro de Informatica-UFPE e Maratona de Programação. Fico em duvida se o mercado de trabalho ainda utiliza esta linguagem sem muitos recursos.

Link para o comentário
Compartilhar em outros sites

em estudar em C. uma coisa que me arrependo é ter começado a aprender C quando era Normal.

sem essas de Orientado a Objeto, quando ouvi fala disso pela primeira vez, achei que era um bixo de 7 cabeças. Orientado a Objeto, vai te que dizer da onde vem esse objeto, MEU DEUS QE QE É ISSO :o

mas quando começei a aprender FOO (Fundamentos de orientação a objetos) em Java. Cara falei pra mim mesmo... que coisa mais fácil. fácil MESMO, pois apenas um Ctrl + SPACE pode puxar TUDO, "Variaveis", funções, Comandos do Aplicativo para programar, tinha tudo que precisava em 2 clicks;

Link para o comentário
Compartilhar em outros sites

Hoje em dia C é só usado em microcontroladores. Não existem mais compiladores C para desktops. O que existe é compiladores C++, que aceitam os comandos do C. Tanto que quando se cria um projeto no Visual Studio por exemplo você seleciona (C/C++), o que significa que você pode usar comandos C ou C++ que da no mesmo.

Por exemplo pode escrever uma linha prinf("Olá mundo"); ou cout<<"Olá mundo";

que irá surtir o mesmo efeito

Link para o comentário
Compartilhar em outros sites

Não. C não é ultrapassado e, junto do Assembly, são linguagens praticamente impossíveis de serem extintas, pela utilidade destas.

É uma linguagem muito flexível, é possível fazer praticamente tudo nela. Só não se faz tudo porque há coisas que só o Assembly faz, pro resto, inclusive pra fazer outras linguagens, como C++, C serve.

É mais complicada, tem que ter um cuidado enorme, pois é bem fácil errar, mas é extremamente poderosa e eficiente.

Em C, se tem mais controle do sistema, sendo possível controlar até o 'talo' do computador, se tem controle manual da memória. Complica, mas dá mais poder e velocidade. Java controla automaticamente o uso de memória, mas perde na eficiência.

É muito usada pra efiência, quando se precisa de algo rápido, que fale mais perto do Hardware. Há muita discussao sobre o assunto, em relaçao a C++, mas voce pode no google achar uma explicação do Linus Torvalds, do motivo dele não usar C++ pra fazer o Linux. C já é velha conhecida, funciona, gente programa nela há décadas e vem funcionando muito bem.

A diferença é a fama. Não se vê muitos programadores de C simplesmente porque é mais complicada e o popular no momento é Java. Já houveram várias outras linguagens mais famosas, como o Java é hoje. Mas o C ainda permanece. E ainda é muito usado pra hardwares, pra fazer sistemas operacionais, sistemas embarcados e outros sistemas que exijam máxima eficiência, estabilidade e confiabilidade. Ou seja, tem um mercado pro programador de C. É pouco porque são poucos, mas há coisas que só servem se forem feitas em C.

No geral, os salários são melhores, por serem raros. Lei do Mercado né, infelizmente em Java já é mais complicado ganhar bem, pois há muita, mas muitas gente programando em Java.

Quanto a ter estudado, nao me arrependo nem um pouco, se notarem bem, depois que se aprende C se aprende as outras com muito mais facilidades. E você confundiu ter recursos com limitação. Não é isso, pelo contrário, é de longe a linguagem mais ilimitada, pois como eu disse, da pra fazer praticamente tudo nela.

Eu uso e continuo a estudar por ser essencial em eng. de telecomunicações e de eng. de computação.

O ponto forte do java, por exemplo, é a portabilidade. Porém, ele é um pouco pesado e lento. Não se usa java em hardwares, pra fazer programas de alto desempenho ou para projetos acadêmicos que exijam desempenho máximo. Ele está famoso por ter muitos recursos e ser beeeem mais simples de usar do que C e por ser possível fazer interfaces gráficas com facilidade. Mas fama não tem nada a ver com qualidade.

Link para o comentário
Compartilhar em outros sites

C é uma linguagem poderosíssima, além de elegante e eficiente. Tanto isso é verdade que ela é uma linguagem bastante utilizada no meio científico, no qual a eficiência é de suma importância.

Além do mais, não deve achar que perdeu tempo com ela, já que todo conhecimento é válido - ainda mais na computação, em que uma coisinha aqui pode ajudar outra acolá.

Eu só não gosto mais de C do que de C++, por esta permitir aquela e muito mais. Mas C sempre estará no meu coração, como uma mãe, haha. :D

Link para o comentário
Compartilhar em outros sites

jpsan, não. Há milhares de lugares em que C é usado.

Pra softs do Linux é corriqueiramente usado.

Uma grande amigo meu, trabalha no sistema de defesa da aeronáutica, só trabalha com C. Somente. Enfim, se tiver interesse posso te citar muitos campos.

E sobre o código de C e C++, sim, o efeito é o mesmo, mas o que ocorre no sistema no processo de compilação e linkagem são bem diferentes. A diferença do C é essa, o controle do sistema.

Ok, existe OO, multi-threading, templates...mas isso tem um cuto no sistema! Entendam isso! Não é porque se faz algo mais facilmente ou se vê o mesmo efeito, que é melhor. Estão esquecendo de levar em conta o que acontece dentro do sistema, no hardware.

Como foi dito, em java você dá uns cliques aqui e aperta umas teclas ali e pronto. Ok, é mais simples. Mas sabem o que acontece por dentro do computador?

Pra isso acontecer é necessário carregar uma quantidade enorme de memória e recursos do computador.

Se tiver um computador super moderno e vai fazer aplicações simples, principalmente se ainda for estudante, não vai notar quase nenhuma diferença.

Mas se for pra fazer aplicações mais complexas, faz total diferença e torna Java e outras linguagens limitadas.

E se você quiser manusear a memória do computador, em uma aplicaçao Java? Se não quiser usar OO ou Templates? Se multi-threading for totalmente desnecessario pra determinado projeto? O que faz? Nada.

Aí que mora a flexibilidade do C, você não é obrigado a 'comprar' nada que ja vem nessas outras linguagens.

Esses jogos bem modernos são todos feitos em C++, e onde há 'gargalos' (partes mais lentas), usam C. Usam uma ou outra linguagem de script, mas somente para coisas mais simples.

A moral da história é que esqueça essa coisa de fama da linguagem e de que há uma melhor que a outra, ou mais viva. Não existe isso, simplesmente existe linguagens mais adequadas para cada tipo de problema.

Na prática mesmo, se for trabalhar com texto, use Perl, awk, sed...se for fazer sistemas portáteis, use Java...se não quer perder tempo escrevendo código, quer algo simples e funcional, use Python...quer fazer um programa pra Windows, com janela, botões etc, use C# que arrastando e clicando se faz muita coisa.

As possibildadades sao muitas e não há regras pra isso. Mas há coisas que só o C faz. E há coisas que nem o C faz, só em Assembly.

Link para o comentário
Compartilhar em outros sites

Jarlisson, se possível, eu gostaria que colocasse em quais campos as linguagens C e Assembly são mais utilizados para saber se há algum que vá ser do meu interesse... Vou começar Engenharia Elétrica e estou estudando C e C++, para logo logo estudar Assembly, pois me parecem úteis para estudos acerca de como gerenciar e fazer melhor placas-mãe (talvez eu vá para campo de hardware, como trabalhar para Intel ou AMD. No caso seria como as instruções poderiam ser lidas mais rapidamente, talvez alterar o método de leitura/escrita de informações no processador que atualmente é usado) e questão de controle de energia, eficiência de gasto energético, entre outras coisas relacionadas a energia (outra área que me interessa muito é a de energia e eficiência energética, fazer um programa pra saber como é o gastro parece bom..)

Talvez as áreas que penso em seguir não sejam úteis ou esteja falando coisas desconexas, mas.. como disse, ainda vou começar e quero ter uma base.. :)

Grato..

ps: Master Yoda, apesar de tudo, está foi uma boa ideia para um tópico, acho que pode ajudar muita gente :D

Link para o comentário
Compartilhar em outros sites

jpsan, não. Há milhares de lugares em que C é usado.

Pra softs do Linux é corriqueiramente usado.

Uma grande amigo meu, trabalha no sistema de defesa da aeronáutica, só trabalha com C. Somente. Enfim, se tiver interesse posso te citar muitos campos.

Eu sei que o C é usado e muito. O que eu quis dizer é que quando se quer controle um maior controle do hardware usa-se o C. Por exemplo não existe um aplicativo para Pcs que se programe com C puro ou programa-se com o C++ (que é evolução do C) ou outra linguagem de mais alto nivel.

Eu particulamente sou fã do C/C++, exatamente pelo fato de ser robusta e eficiente, ainda mais quando se trabalha com microcontroladores.

Mas excelente a sua explicação muito melhor do que eu poderia dar.

Jarlisson, se possível, eu gostaria que colocasse em quais campos as linguagens C e Assembly são mais utilizados para saber se há algum que vá ser do meu interesse... Vou começar Engenharia Elétrica e estou estudando C e C++, para logo logo estudar Assembly, pois me parecem úteis para estudos acerca de como gerenciar e fazer melhor placas-mãe (talvez eu vá para campo de hardware, como trabalhar para Intel ou AMD. No caso seria como as instruções poderiam ser lidas mais rapidamente, talvez alterar o método de leitura/escrita de informações no processador que atualmente é usado) e questão de controle de energia, eficiência de gasto energético, entre outras coisas relacionadas a energia (outra área que me interessa muito é a de energia e eficiência energética, fazer um programa pra saber como é o gastro parece bom..)

Talvez as áreas que penso em seguir não sejam úteis ou esteja falando coisas desconexas, mas.. como disse, ainda vou começar e quero ter uma base..

Grato..

ps: Master Yoda, apesar de tudo, está foi uma boa ideia para um tópico, acho que pode ajudar muita gente

anonimo1 acho que é melhor C ou Assembly acho até melhor Assembly quando se vai mexer com o hardware de pcs (pura opinião), tanto que seu curso você não vai aprender outras linguagens né? (eu pelo menos na Eng. Eletrônica não vou aprender :()

Link para o comentário
Compartilhar em outros sites

Pois é jpsan, é porque você falou que só é usado em microcontroladores, e não é bem assim.

Se estudar Eng. Elétrica, vai ter que saber muito C e Assembly.

Você vai estudar microcontroladores, sistema microprocessados, vai aprender como funciona as partes básicas de um computador, e vai montar, ainda no começo do curso, como projeto, um computador. Pra mexer na memória, gerenciamento etc etc, vai usar somente Assembly e C.

Para pedaços de ferro muito pequenos, de 8 bits e 4k de memória, vai usar mais Assembly. A medida que tiverem mais recursos, só C.

Se quiser fazer um timer de microondas, por exemplo, que é limitadíssimo em recurso, vai usar Assembly ou C, pois não da pra fazer nem um 'hello world' nele em outra linguagem.

Se quiserem entrar nessa de hardware, de maneira simples e em casa mesmo, pesquisem sobre Arduino.

No seu curso você vai travar MUITO contato com Linux. Pra mim, é aí onde mora a maior genialidade do uso do C, no desenvolvimento do kernel do linux. Que tem um pouco de Assembly também.

Em segurança de informação, só se usa C e C++ praticamente, tanto na segurança dos computadores como de redes(que vai estudar também), pois elas vão na base.

Não se utiliza linguagens de alto nível pra segurança, como Java e C#, pois elas não tem acesso a tudo no sistema, então não é possível fazer muita coisa nelas, deixando os sistemas mais vulneráveis.

Pois no C, você controla a memória e os recursos direto da máquina. Em Java, por exemplo, é na Java Virtual Machine. Ou seja, ela não tem contato direto com a máquina, não sabe o que se passa no hardware, nem se foi conectado algo, pra onde as informações estão indo exatamente.

Bom, isso é o básico da sua formação. Depois, quando se especializar, vai ter muito mais opções, como Telecomunicações. Quando a gente usa equipamentos, hardwares, cria projetos em eletrônica etc, é só C. Até porque, pra isso, não se preocupa muito com interface gráfica e botões pra clicar, e sim com performance.

Você pode até usar Java pra criar um jogo pro seu celular, mas pra fabricar o firmware (uma espécie de SO do seu celular), é C.

Outras áreas na sua área: processamento digital de som, imagem, computação distribuída, servidores, redes, é usada para base de sistemas de automação, robótica e outros assuntos científicos, tipo, buscar números Primos, de Marsenne, análise de frequências, simulações em física, programas de engenharia civil, mecânica. Enfim, onde exigir muita conta e muito processamento, é C cara. Pode até ter uma linguagem de script pra funcionar, mas o miolo do sistema que faz cálculos, é feito em C.

C é muito usado também por não ter todos esses 'recursos' que o autor do tópico criou, mas isso facilita muito pra criar um compilador pra C. É bom pra embarcar e usar o C em tudo quanto é canto, principalmente os cantos que tem pouca memória e processamento.

Assembly 'corre mais rápdo' no metal sim, mas é bem chato e demorado pra programar nele. Se usa registros e outras coisas específicas de hardware, e pra fazer um simples programinha, leva dezenas de linhas. Só se usa mesmo quando é o jeito.

Em caixas eletrônicos e terminais de atendimento, se usa muito Java.

Mas no sistema interno dos bancos e grandes empresas, se usa C e C++ (e outras linguagens em antigas, como COBOL) pra oferecer mais segurança. No caso de empresas grandes, segurança é o mais importante. É mais complicado fazer sistemas seguros, mas só são realmente seguros com linguagens de mais baixo nível, como C e C++.

Note que eu te citei coisas mais específicas, que não temos contato no dia-a-dia, por isso é raro ver algum progamador em C. Na verdade, existem mais é engenheiros usando C. Por isso, não se sinta mal se na sua rua tiver 10 caras programando em Java, C# etc, e nenhum em C, pois não se usa C pra fazer sites, jogos online, nem pra fazer um sistema simples pra uma pequena empresa(se usa Delphi, C# etc).

Te passar aqui um site de um cara que é mestre em C++, e mostra porque vale a pena estudar C e C++. Tem muita coisa, mas leia os primeiros artigos e os FAQ sobre como e o que estudar pra começar em C/C++:

http://www.1bit.com.br/

Link para o comentário
Compartilhar em outros sites

Hm, o bom é que sei que essa resposta foi pra todo mundo que quer aprender/está confuso com C...

Por mim, brigadão :D e quanto a algumas das aplicações do C eu já tinha conhecimento do uso dele, principalmente do uso por conta de ser de "médio nível"? (sei que tem controles de baixo nível, mas tem de altos também certo?) mas a maior parte que colocou ai eu não fazia muita ideia sobre..

Vou procurar mais sobre Arduino e... um tipo de placa de circuitos, cujo nome esqueci, e você "programa" com fios e provavelmente com Assembly..

Link para o comentário
Compartilhar em outros sites

Arduino e Microcontroladores PIC.

No mercadolivre já tem vários kits, prontos pra começar, com material de estudo, compilador etc.

Você pode começar a estudar Assembly e usar neles, mas muitos deles já aceitam C, Pascal e até BASIC.

E uma dica pra quem é da área: Linux. Pra quem gosta/estuda/desenvolve é simplesmente perfeito. Da dor de cabeça no começo, mas com o tempo se acostuma e não se larga mais, além de possuir uma enorme comunidade pronta pra ajudar.

Boa sorte nos estudos.

Link para o comentário
Compartilhar em outros sites

Obrigado pelas respostas foram muito esclarecedoras.

O que ando observando é que sistemas operacionais usam C, certo? Enquanto Java tem muitas aplicações em jogos pra celulares e internet como no facebook.

Então quer dizer que programas em C/C++ são mais eficientes e temos mais controles dos sistemas do que Java?

Link para o comentário
Compartilhar em outros sites

Obrigado pelas respostas foram muito esclarecedoras.

O que ando observando é que sistemas operacionais usam C, certo? Enquanto Java tem muitas aplicações em jogos pra celulares e internet como no facebook.

Então quer dizer que programas em C/C++ são mais eficientes e temos mais controles dos sistemas do que Java?

Sim, C e C++ são perfeitos para fazer Sistemas Operacionais, Banco de Dados e TUDO que necessite EXTREMA PERFORMANCE, sabe a maquina virtual que roda o Java, é feita em C/C++

Link para o comentário
Compartilhar em outros sites

Bem, eu estava dando uma pesquisada na internet estes dias e percebi que muita gente aqui falou mal de Java, por causa da sua performance que roda mais lentamente e utiliza mais memória do que C\C++.

Acontece que esta desvantagem é ínfima se comparado a grande vantagem da utilização do Java.Os programas de Java podem ser utilizados em qualquer lugar seja no PC, smartfone, tablets, celulares, Smart TV e em qualquer sistemas operacional tudo isto por causa do Java Virtual Machine.

Não acham que isto é um grande trunfo de Java? Em que pessoas ao redor do mundo utilizam muitos outros aparelhos do que PC? A Web cresce rapidamente e utilização de programas integrados a ela é cada vez mais comum, então Java mais uma vez sai ganhado.

Vale lembrar que existe um tal de Just in Time, que melhora rapidamente a performance do JVM, na verdade o Java demora mais pra ser execudado no inicio de carregamento do programa. E só.

Link para o comentário
Compartilhar em outros sites

Acho que seria programado em Assembly, que é a "linguagem de maquinas".

Linguagem de maquina = sistema binário

Assembly é uma linguagem de baixo nível, mais ainda assim é uma linguagem de programação. Sim os elevadores poderiam ser programados com Assembly, porém C facilita muito o trabalho, por ser um linguagem de alto nível se comparado ao assembly, facilitando a compreensão do programador com relação ao código.

C é a linguagem mais usada para desenvolvimento de redes em geral, C é a mais usada para na instituições para aprendizagem da lógica de programação, C é a estrutura dos sistema operacionais que hoje existem, inclusive o Android que é baseado praticamente 100% em C, C pode ser usado em Mainframes (embora COBOL tenha uma perfomance melhor neste tipo de ambiente), e C também é amplamente usada na programação de microcontroladores, fazendo assim com que seja a linguagem mais popular na Eletrônica também.

Você ainda tem dúvidas se foi perda de tempo ou não aprender um pouco de C?

Link para o comentário
Compartilhar em outros sites

Também não se pode dizer que 'a desvantagem é ínfima se comparado as vantagens do Java'.

Dependendo de onde usar o Java, a desvantagem é tão absurda que é impossível de utilizar. Assim como em C, mas nesse caso devido a dificuldade dessa linguagem.

Dependendo de onde você usa, a diferença é total. É tão grande, que não se usa uma ou outra em determinadas situações.

Aí que está o pulo do gato. Tem que saber onde usar essa ou aquela vantagem.

Obviamente, se souber só Java ou só C# ou só C, será um programador bem limitado.

O ideal é estudar o máximo possível várias linguagens.

Dominar bem uma, bem mesmo.

E usar outra de script, pra automatizar suas tarefas, tipo Shell, Python, Perl etc.

Link para o comentário
Compartilhar em outros sites

  • Moderador

É verdade, não se pode ficar limitado apenas 1 linguagem, mas também não quer dizer que deves sair estudo tudo que é linguagem como um adoidado. Eu costumo utilizar o seguinte método: Estudo a base primeiro depois estudo as variantes... depois estudo outras linguagens diferentes.

Por exemplo se o indivíduo está estudando C, Não acho vantagem que ele estude python depois.. seria ideal ele estudar o C++ e aprender a orientação a objetos...

Se o cara estudou bem as bases de Java, é interessante ele estudar Java orientada a objetos.. e por aí vai.. porque senão aí vira carnaval.. e claro sempre buscando mais conhecimentos..

Link para o comentário
Compartilhar em outros sites

Por exemplo se o indivíduo está estudando C, Não acho vantagem que ele estude python depois.. seria ideal ele estudar o C++ e aprender a orientação a objetos...

Interessante que é exatamente o que eu estou fazendo, como colocado acima, C é mais voltado pra projetos de baixo nível (ao menos, continua me parecendo isso..) então para projetos públicos/programas pra venda ou até mesmo um freeware a C++, dos dois, me parece melhor. E um dos motivos foi exatamente o "foco"..

Bom, como uma das questões abordadas é a relação entre as linguagens, o que dizer de estudar C e dar um olhada/estudar Objective-C? pode ser um caminho alternativo para o estudo das linguagens derivadas do C ou é melhor ficar por C++?

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...