Qual é a melhor maneira de ir a longo prazo: C, Objective C ou C ++? [fechadas]

StackOverflow https://stackoverflow.com/questions/109937

  •  02-07-2019
  •  | 
  •  

Pergunta

Uma coisa que eu tenho realmente significa para voltar ao é C ++ programação, mas não tenho certeza se eu deveria voltar para C ++ (que eu tenha algum conhecimento básico de programação console) ou devo olhar em C ou Objective C? Eu estou olhando para o longo prazo, bem como a facilidade de codificação, como bons editores, compiladores, etc, bem como o que seria a mais rápida de obter configurado e funcionando.

Para ir junto com isso, o software que você sugeriria para trabalhar com uma linguagem sugerida?

[EDIT]

Algumas pessoas mencionaram que é difícil sugerir algo quando não se sabe o que estou fazendo. Eu não tenho qualquer programa específico em mente no momento, estou apenas olhando para começar com um desses três idiomas para qualquer investimento a longo prazo e de trabalho ou como um ponto para outra coisa.

Foi útil?

Solução

Eu só pode realmente falar de C e C ++. Aprender ou não faria mal, se fosse a única razão que tanto código legado é em C e C ++.

Pure C é muitas vezes a única opção para os sistemas operacionais, desenvolvimento de drivers, ou ambientes de desenvolvimento embarcados. Outros usos incluem vezes quando o desempenho é muito critical-- onde você quer ser tão "perto" dos internos da máquina quanto possível. Ele nunca realmente dói saber C porque esses aplicativos de que não parecem estar indo embora tão cedo. C também é a "língua franca" para uma série de aplicações * nix. Então, se você quiser contribuir para um monte de projetos de código aberto (apache / SVN / CVS / etc), sabendo C seria um requisito.

C ++, na minha experiência, é usado quando você gostaria de ser "perto da máquina", como quando a codificação para C, mas você gostaria a opção de incluir níveis mais altos de abstração através de algum OOP. 'S principal força (e maior fraqueza) C ++ que é a sua multi-paradigma. Dá-lhe quase tudo o que você pode fazer em C mais lotes de recursos orientados a objetos. Por exemplo, você pode reutilizar um monte de código otimizado super-C, conforme necessário, enquanto a criação de classes, fazendo herança / polymorphism-- tanto "objeto-orientedness" como você quer. Há ainda maneiras de jogar em alguma programação funcional na mistura ...

C ++ é muitas vezes criticado por tentar ser muitas coisas para muitas pessoas. Como uma tentativa de fazer tudo, dizem os críticos, não é muito bom em qualquer coisa. C ++ costumava ser a "língua franca" para aplicações desktop, mas Java e .Net têm realmente tomado um monte de usuários corporativos de distância. Ainda assim, muitas aplicações que se importam tanto sobre o desempenho e usando a enorme quantidade de adicional, útil, normalmente suficientemente bom-para-seu-fins apenas os recursos disponíveis em C ++ vai escolher C ++.

Outras dicas

Se você está trabalhando principalmente no Windows, sugiro C ++. Microsoft está colocando um monte de trabalho por trás do novo C ++ / CLI eo compilador nativo C ++. Com as novas adições TR1 e C ++ 0x, muitos dos problemas que existiram no passado estão sendo tratados.

Eu diria - escolher qualquer linguagem que você gosta e ficar com ela por um tempo. No foco Entretanto em algoritmos. Estes são os blocos de construção de programas. A linguagem é apenas um idioma.

Se você aprendeu / domina um é apenas uma questão de algumas semanas para mudar para algo diferente, especialmente se você ficar na mesma família de línguas (por exemplo, C, C ++, Objective C, Java, C #, etc ..)

Se você acha que a Apple vai governar o dia mundo, Objective C.

Agora eu acho que o desenvolvimento do iPhone cacau é onde ele se encontra. Então, Obj-C, pessoalmente.

Você pode desconsiderar qualquer resposta que não primeiro perguntar o que você realmente estar fazendo. Sem essa informação, a resposta é errada, enganosa ou simplesmente irrelevante.

A minha opinião:

Das três escolhas que você exibida, a sua melhor aposta inicial é provavelmente C. Depois de saber C, tem uma alça sobre suas peculiaridades e são proficientes em-lo, aprendendo C ++ ou Objective-C provavelmente será bastante trivial. (Seus pontos mais difíceis haverá no lado da orientação a objetos do mundo.)

No momento, Objective-C é usado com mais frequência em Macs, mas há alguns que se esqueça que existem ferramentas GNU para Objective-C, e que é suportado no GNUStep também. (. A atual Mac OS X é baseado fortemente no velho NeXTSTEP, dos quais GNUStep é mais ou menos um clone) A coisa sobre Objective-C, no entanto, é que ele não é amplamente usado fora desses dois ambientes - tornando-se uma espécie de um ambiente de estreita. (E com Obj-C, como quase qualquer outra linguagem OO moderna, você vai gastar muito mais tempo aprendendo as classes do framework que a sintaxe / regras lexicais subjacentes reais.)

Eu sou essencialmente um desenvolvedor C #. Que paga minhas contas, e faz isso muito bem. C # não estava na sua lista, e eu suspeito que eu sei porquê: Parece que você está olhando para estar mais perto do metal, menos abstraída. Eu entendo isso - e eu acho que é a escolha certa para o crescimento na carreira a longo prazo. Comecei com umpteen abstrações entre meu código ea caixa (primeira profissionalmente com Java, então VB6, então NET), e, como resultado, agora eu estou trabalhando duro no meu tempo livre para jogar "catch up" com o resto do mundo - estou actualmente a atravessar a K & R livro . Evidentemente, eu não tenho nenhuma necessidade profissional para chegar tão perto do metal -. Mas eu sinto uma necessidade pessoal para entender a máquina da melhor maneira possível

(Além disso, ironicamente, eu estou olhando para voltar para o desenvolvimento Cacau via Objective-C. Eu costumava putter ao redor nele anos atrás, e eu acho que estou em melhor posição para "pegar" ela agora ... pessoalmente, sinto que presciência de C fará mover-se em Objective-C muito mais fácil, mais suave, e me faz menos propensos a apresentar erros de memória relacionada com desastrosas no meu código!)

No final do dia, eu acho que ter o conhecimento pré-existente de C (enquanto ele não era, obviamente, necessário para mim!) É uma boa coisa muito, e provavelmente faz mover-se para outras línguas ao longo do tempo ( que você irá fazer, a menos que você faça OS, motorista ou de trabalho incorporado) mais fácil e suave. Não estou dizendo que "você não pode passar sem isso", eu estou dizendo que, com base na forma como a sua pergunta foi formulada ... Eu acho que é a resposta certa para esse cenário.

Eu olho para a sua pergunta de forma ligeiramente diferente e acabaria por sugerir que você aprender Objective-C. Eu tenho um par de razões para isso.

One, Obj-C tem uma maneira muito diferente de olhar para o modelo OO como geralmente implementada em linguagens como C ++. Obj-C é baseado em Smalltalk e, como tal, todas as "chamadas de método" são implementados como mensagens enviadas para o objeto apropriado. Devido a isso programador de ter sido capaz de estender isso em algumas técnicas muito interessantes, e muito poderosos,. Parte da razão de aprender uma nova língua deve ser sempre para estender a sua visão de como as coisas podem funcionar -. Obj-C tem muito mais potencial do que qualquer C ou C ++ a este respeito

Dois, Obj-C, no Mac, pelo menos, tem uma estrutura extremamente poderoso por trás dele com um excelente conjunto de ferramentas. C e C ++ realmente não têm a mesma estrutura coesa em qualquer plataforma, embora a Microsoft provavelmente chega perto em sua implementação. Apenas trabalhando com Cacau foi o suficiente para me convencer de que Obj-C é uma grande linguagem. A biblioteca é muito bem pensado e me faz inveja daqueles que começar a trabalhar com ele em uma base dia-a-dia.

Três, Obj-C é um superconjunto de C, assim aprendendo que você já estará familiarizado com a sintaxe de C. Além disso, a biblioteca C padrão é bastante anêmico e pode ser aprendido muito rapidamente. C ++ é um pouco melhor, o que com impulso de estar disponível, mas impulso é nem de longe tão coesa como Cacau.

Em última análise, você precisa decidir quais são suas prioridades. Se você está olhando apenas para aprender algo novo ir com Obj-C.

Depende do que você está fazendo. Se eu tivesse que escolher um, eu diria C ++. É mais multi-plataforma de Obj-C e menos de uma dor de C. Mas se você está fazendo programação Mac, você iria querer saber Objective-C. Se você estiver fazendo qualquer tipo de programação incorporado ou qualquer núcleo de hackers, você provavelmente vai querer usar C.

Existe uma razão por que não ir com C ++ e ir com C ou Objective C em vez disso? C ++ tem hoje em dia, de longe, a maior comunidade, a maior base de código existente, e é melhor destaque de todos os três. Se você não acha que isso é verdade, por favor, esclareça (sério, eu estou realmente interessado).

Além disso, C ++ é o único a ser suportado pelo MS em termos de .NET (se você planeja migrar para .NET, um dia, é claro).

Comece com C, então talvez estender o seu conhecimento para C ++ se você precisar de orientação a objetos. Objective C é uma coisa obscura como como a Apple Script que apenas desenvolvedores da Apple já ouviu falar (se houver), você não vai chegar longe com essa linguagem (sem ofensa para os fãs de que a linguagem).

C é muito fácil de aprender (em comparação com C ++) e você tem um conhecimento boa base para qualquer outra língua que você pode querer aprender mais tarde (especialmente C ++).

Em relação à resposta de Loren Segal, o que você quer fazer, não importa quando você quiser escolher entre C e C ++. É apenas uma questão de preferência. Ambos têm as bibliotecas para tudo (desde bibliotecas C ++ são muitas vezes objeto invólucros orientados em torno de bibliotecas C), ambos têm uma comunidade enorme, IDEs estáveis ??e compiladores.

Intel está investindo muito em bibliotecas C ++ para correr contra os seus processadores. Desde que a Intel parece estar dominando o mundo do processador PC ultimamente, parece uma escolha razoável.

Pure C é uma boa básico para ter não importa o que outra linguagem de programação que você se concentrar em. Objective-C, em particular, é apenas código básico C com idéias Smalltalk acentuado por no topo. Mesmo que ventures C ++ longe de C ainda é, na minha opinião, claro que C é a língua mais útil saber. Em Objective-C muitas vezes você cair para C. Em Ruby, Python, Erlang e inúmeros outros idiomas que também muitas vezes entrar em modo C. É também uma língua que você pode sempre contar com a possibilidade de usar em todos os computadores que você toca.

Por isso, é minha opinião pessoal que cada programador realmente deve saber C. Pelo menos um pouco.

Eu aprendi recentemente objective-C (porque eu comecei a brincar com cacau) depois de ter sido um desenvolvedor C ++ para 10 anos ou mais.

Eu achei a experiência de aprender Objective-C, além de C ++ extremamente instrutiva, embora eu provavelmente não vai usar Objective-C para qualquer projeto real.

Ambos Objective-C e C ++ adicionar uma camada de programação orientada a objetos em cima do C. Mas eles fazem isso de maneira quase completamente opostos. Parece que cada vez que C ++ fez uma decisão de projeto, objetiva-C fez a escolha oposta. Por exemplo, C ++ utiliza tipagem estática, enquanto que o objectivo-C utiliza tipagem dinâmica. Ou, (recente) objective-C usa coleta de lixo que C ++ não.

Isso realmente me fez entender os conceitos de programação orientada a objetos e as escolhas de design envolvidas com isso de uma maneira muito melhor.

Se você quiser se concentrar apenas no sistema operacional Windows, então eu sugiro que comece diretamente com C # (.Net Framework)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top