Pergunta

Atualmente estou trabalhando com Java e seus aspectos de design orientado a objeto (Eu também trabalho com PHP / MySQL muito). Eu não implementá-lo na web; Eu só usá-lo para a concepção de programas para fins gerais. No entanto, agora eu preciso aprender C agora, e eu tenho um interesse em C ++. Eu tenho A Linguagem de Programação C , que algumas pessoas dizem que é o melhor livro sobre o assunto. Alguém pode me dizer quais serão os maiores desafios, com exceção do tratamento String, da maneira que eu penso sobre o projeto de programação, e como eu criar programas? Eu entendo que eu não posso ter aulas, mas como é que este impacto me especificamente (ou seja, eu terei que reformular métodos e sempre projetar tudo com a idéia de que é mais difícil de editar)? Além disso, é o salto para C ++ a partir dessas línguas duro? Todo mundo diz que é uma língua muito difícil, mas faria alguma experiência ajuda anterior? E com essa experiência iria Accelerated C ++ ser duro de um livro para começar com?

Graças um milhão.

Foi útil?

Solução

Não se preocupe um pouco. Comecei a programação com Java, em seguida, mudou-se para C ++. E então eu aprendi x86 montagem e agora estou em C e depois voltei a usar alguns recursos de C ++ como objetos. Eu até fiz um projeto Java não muito tempo atrás. A ordem não é importante, contanto que você colocar o trabalho em aprender línguas, você terá sucesso com eles.

Agora, você perguntou sobre design. Penso que esta é a parte que você vai gostar melhor. Em OOP, se você quisesse criar um simples wrapper sobre um banco de dados, você deve criar um objeto e, em seguida, você pode criar um sistema de herança com funções polimórficas etc.

Em C, você teria apenas que fazer um arquivo chamado sqlite_wrapper.c, incluem # sqlite3.h e você começar a escrever o código. Você vai fazer um par de funções, decidir sobre os parâmetros que você deseja enviar (estruturas e valores) e está feito.

Em C você não tem aulas, mas você tem FILES. Ter arquivos diferentes já separa a lógica. Em Java você tem arquivos aulas + dentro deles para separar a lógica e que também é muito bom.

Boa sorte, se divertir.

Outras dicas

Se você está acostumado a OOP, a parte mais difícil da transição para uma linguagem não-OO vai ser em se ajustado para a logística de "objetos que simulam" usando mecanismo existente. Em C, este tipicamente envolve ter uma estrutura, e, em seguida, tendo um grupo de funções que levam que struct como um parâmetro. Com C ++, você pode evitar isso.

No entanto, o maior desafio da transição para C ou C ++ vai ser em tempo para se acostumar ponteiros e alocação de memória. Você vai, sem dúvida, cometemos erros, inicialmente, em referência e dereferencing, e se confundem sobre referências C ++ quando você trabalhar com eles. Você também vai, sem dúvida, causar vazamentos de memória ou erros. E uma vez que você está trabalhando "no fio", as falhas não vai ser bonito. Eu não tenho certeza que há uma maneira de superar essas dores, mas prática.

Eu gostaria de dizer que seria mais fácil de aprender C ++ sobre as bases de Java, que nas bases de C.

Accelerated C ++ não seria mais difícil, o seu livro um nível iniciante. Existem muitos outros bons livros lá fora. Pensando em C ++ pode ser um bom começo, mas pode aborrecê-lo para baixo no início com um monte de coisas familiar. Então, gostaria de sugerir apenas passar por isso, e em seguida, pegue Series eficaz. Então excepcional, Modern C ++ vai ser bom para ir.

C ++ não é tão difícil, a única coisa é que você precisa fazer wuite algumas coisas em seu próprio país. A parte mais complicada pode ser o gerenciamento de memória, como Uri afirmou em seu post. Na verdade sua vasta e difícil de agarrar totalmente, e que pode ser a razão a sua difícil.

Esta discussão SO fornece uma boa e leituras importantes lista para C ++.

Existem diferenças substanciais entre C e C ++. O principal é o uso de concepção orientada por objectos em C ++. Há também pequenas diferenças que são mais de 'se acostumar' tipo de negócio do que qualquer coisa. Aqui está alguns deles apenas para pintar um quadro geral.

  1. As diferenças de alocação dinâmica de memória.
  2. Sem função sobrecarga no C
  3. Não protótipos de função em C
  4. Diferentes estilos de fundição
  5. A mais extensa biblioteca em C ++.

Uma vez que você está se movendo de Java, programação OO deve ser algo de um hábito para você e que seria mais fácil fazer a transição para C ++. Se você absolutamente tem que começar com C, não é nenhuma grande coisa. Você ainda vai ser capaz de compreender os mesmos conceitos gerais utilizados em ambas as línguas.

Eu fui de ser um 2º ano Uni programador -level em Java (com muita experiência em outros não-c como línguas) para um novato C ++ com cerca de 2 horas de tutoria de um amigo. Ao longo das linhas de "Isto é como você declarar uma classe, aqui é Olá mundo, etc".

A transição de lá para C é muito mais dolorosa, como C ++ tem a maioria dos recursos do Java (o maior deles faltando sendo a coleta de lixo). Eu sugiro que você olhar para Impulso (biblioteca de um C ++), especialmente os ponteiros inteligentes. Além disso, o tempo gasto dominar a Standard Template Library C ++ é tempo bem gasto!

Como muitos outros disseram. É possível, se você começa a conhecer as diferenças. Em alguns pontos que você tem que usar outras maneiras em alguns pontos que são capazes de tentar programa para a língua e não com a linguagem por exemplo, "Simulando" objetos com estruturas e um ponteiro para a struct como primeiro argumento. Se você tem experiência e são forçados a trabalhar com ele você vai aprender.

Duas coisas que eu quero recomendar-lhe:

  1. Depois de aprender noções básicas da chance linguagem para obter uma compreensão profunda de ponteiros e manipulação de memória, onde usar *, &,. , ->, há diferenças importantes e eu usei para tentar ao redor até que o programa parecia trabalho. Esta é uma idéia muito ruim.

  2. Pense em uma boa forma, você pode realmente testar seus programas usar um depurador, tanto quanto possível entender por que seu programa está sendo executado ou não eo que está acontecendo. Você pode fazer erros que nunca aparecem, mas quando ele é importante e você não tem o tempo eles vão comer você

Como todos disse, C não é muito difícil, e pode ser uma boa adição a seu arsenal de programação.

C Quando comparado com Java:

  • Há ponteiros, isso permite-lhe reduzir acessos de nível, e faz erros interessantes.
  • A linguagem é magra -. Há muito menos recursos
  • Não há JVM para protegê-lo com um lance legal que explica o erro e número da linha, há algum suporte OS, mas muito limitado, então você vai precisar usar ferramentas.
  • Sem coleta de lixo, a menos que você vai usar um , você vai ter que cuidar de sua memória a si mesmo.

Para resumir: A questão principal será depuração, você encontrará alguns novos bugs quando se trata de memória e uso de ponteiros, e você vai ter que usar ferramentas / pensar mais para resolvê-lo, pois há nenhuma JVM.

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