Que livro comprar para aprender C++?

38 respostas
L

Gostaria de saber a opinião de vocês, qual livro devo comprar para apreender C++, considerando que sou iniciante, sei um pouco de Ruby, e pouco de lógica de programação.

O livro deve ser em português, pois meu inglês não é forte o suficiente, a ponto de ler um livro inteiro em english.

Se possível, gostaria que o autor abordasse uma didática, em que não precise ficar toda a hora compilando, e testando os códigos, pois a minha intenção é le-lo quando estiver viajando, etc.

Estou querendo apreender C++, pois é uma linguagem, digamos de baixo nível, com performance boa, mas com código acessível e fácil, pelo menos é o que ouvi falar sobre.

Não tenho necessidade de saber “tudo” da linguagem, pois se faltar alguma coisa aqui, outra lá, me viro com o Google.

E outra coisa, tem muita diferença entre a 3ª e a 5ª edição do C++ Como Programar de Deitel? Por que a diferença de preço é grande!

3ª Edição do Livro:
http://www.relativa.com.br/livros_template.asp?Codigo_Produto=542&Livro=C++:%20Como%20Programar%20(3�%20Edi��o)&Autor=M.D.%20DEITEL,%20PAUL%20J.%20DEITEL

5ª Edição do Livro:
http://www.relativa.com.br/livros_template.asp?Codigo_Produto=49938&Livro=C++%20%20COMO%20PROGRAMAR%205�%20Edi��o%20-%20Acompanha%20CD&Autor=DEITEL

E se caso, alguem souber outra loja on line com preços acessiveis e/ou outras opções de livros, ficaria grato pela sugestão.

Obrigado pela atenção.

38 Respostas

S

A 3º edição é de 2001 e a 5º edição de 2006.

Desde 2001 até hoje, o C++ passou por 2 padronizações, uma em 2003 e outra em 2009.

Se eu fosse você com certeza compraria a última edição por ser mais atualizada.

Se bem que, eu acho que já está para ser traduzida a versão 2010 do livro (7º edição), levando em conta que o livro de Java 6º edição foi lançado praticamente junto com o de C++ 5º edição e esse ano já lançaram a 8º edição traduzida do livro de Java (parece que só traduzem o livro a cada 2 edições)

Quanto ao preço, nunca comprei nessa loja porém os preços dela parecem ser os mais baixos: http://www.ciadoslivros.com.br/produtos.asp?desc=C-COMO-PROGRAMAR&produtoid=209149

Gostaria da opininião de quem ja comprou nessa loja, se o livro chegou fechado direitinho, sem atraso e em perfeito estado.

Abraços.

J

Não se engane, c++ é uma linguagem de alto nível. A que é de médio nível é a c. A vantagem do uso do c++ vem de que ela não é limitada e seus compiladores geram código muito enxuto.

O deitel realmente é muito bom. Comprei esse livro em 2004, e não me arrependi não.

U

Ficaria com a 5ª edição por ser mais nova e ter atualizações!
Se desse ficaria com as duas!

vlw
abs

E

Fácil? Está de brincadeira. De qualquer maneira, apesar de trabalhar há quase 20 anos com C e C++, não me considero nenhum “master” - sempre acho alguma coisa esquisita que tenho de aprender. Uma coisa que tive de aprender faz uns 2 anos é como usar a biblioteca Boost.

V

Acho que ele quis dizer “mais fácil que o C”. Mas realmente, as duas linguagens não são fáceis. É programação orientada a cabelos no peito!

L

Então realmente vale a pena, pagar cerca de 110 reais a mais pela 5ª Edição do Deitel, em vez da 3ª?

E eu disse que C++ era fácil, no sentido da sintaxe dela ser mais acessível, menos complexa que outras, assim como a do Ruby é em geral mais fácil de ser memorizada que a do C++. Sei que C++ é uma linguagem com conteúdo enorme e com grande potencial.

E outra coisa, agora não relacionada diretamente ao livro, quantos livros, do porte do Deitel por exemplo, eu teria de ler e apreender, para poder fazer projetos ou programas de médio porte, ou seja, para já ter condições de ocupar uma vaga de programador numa empresa?

K

Luiz Niedermier Custodio:
Então realmente vale a pena, pagar cerca de 110 reais a mais pela 5ª Edição do Deitel, em vez da 3ª?

E eu disse que C++ era fácil, no sentido da sintaxe dela ser mais acessível, menos complexa que outras, assim como a do Ruby é em geral mais fácil de ser memorizada que a do C++. Sei que C++ é uma linguagem com conteúdo enorme e com grande potencial.

E outra coisa, agora não relacionada diretamente ao livro, quantos livros, do porte do Deitel por exemplo, eu teria de ler e apreender, para poder fazer projetos ou programas de médio porte, ou seja, para já ter condições de ocupar uma vaga de programador numa empresa?

Brother, nem manjo muito de C++, mas só para deixar uma opinião pessoal:

Considero livros importantíssimos, mas mais importante ainda para aprender é fazendo mesmo.

Pense em um projeto e comece a faze-lo… use o Deitel para consulta somente…

Eu tenho o Deitel pra Java e acho um saco… principalmente quando vc já conhece alguma coisa de programação, como no seu caso…

Tenho certeza que você não vai ter paciencia para ler o Deitel todo, principalmente pq ele vai frizar 500 coisas que vc está cansado de fazer…

O jeito mais legal de aprender uma linguagem, principalmente quando já se tem uma base da lógica, é fazendo mesmo, use livros só para consulta, leia um capitulo ou outro…

Mesmo assim, se o Deitel de C++ for como o de Java, não recomendo, pq os capítulos têm uma certa dependencia (dos exemplos de código) um do outro…

Era isso, opinião pessoal, claro… eu não consigo parar pra sentar e ler um Deitel da vida do começo ao fim… aprendo fazendo e consultando…

Abraços!

J

Se eu li umas 200 páginas do meu deitel realmente foi muito. Consulto apenas tópicos que tenho dúvidas. Na é poca a última coisa que olhei foi templates, que foi traduzido como gabaritos.

Uso realmente como material de pesquisa e consulta.

V

Se você for estudar C++, é imprescindível fazer a leitura de livros como Effective C++ e More Effective C++. Mas isso, claro, depois de você já dominar a sintaxe básica da linguagem.

Cuidado. Por causa dessa filosofia tem muita gente que programa em C++ como se programa em C, ou como se programava em 1980. No caso de uma linguagem antiga, muitos padrões de codificação já foram adotados e o ideal mesmo é consultar um livro intermediário e avançado para aprende-los. Coisas como RAII, Smart Pointers, uso da boost e da STL não se aprende simplesmente usando. É bom ter algum material que, no mínimo, te diga onde procurar o que.

No C++ geralmente existe dezenas de maneiras de se fazer a mesma coisa, sendo que das várias, uma ou duas serão as certas e as outras serão armadilhas cruéis.

K

Sim, é verdade… mas ai é que mora a jogada, eu sempre to pesquisando as formas padrões de se resolver determinado problema…

Mas exemplificando, quando eu estava estudando JSF, li em uns três livros a respeito do ciclo de vida (JSF, Complete Reference e Mastering JSF), eu entendia a teoria, mas não entendia como aquilo se aplicava na prática…

Certa vez fui desenvolver um sistema que utilizava JSF, precisei desenvolver um sistema de login com o próprio JSF e lidar com PhaseListener, a partir dali que eu realmente entendi como funcionava o Ciclo de Vida do JSF, depois precisei validar campos sem setar o valor no bean, usando Bindings, enfim…

O que eu quero dizer é que, enquanto eu fiquei só lendo os livros, não consegui sacar o quanto importante era aprender tudo sobre o ciclo de vida do jsf… só fui me dar conta da necessidade de manipular esse ciclo quando comecei uma aplicação real em JSF.

Mas com certeza é bom ler os livros, só acho que o Deitel é desanimante… ele usa muita analogia, são capítulos enormes pra falar pouca coisa, enfim…

J

ViniGodoy:
Se você for estudar C++, é imprescindível fazer a leitura de livros como Effective C++ e More Effective C++. Mas isso, claro, depois de você já dominar a sintaxe básica da linguagem.

Cuidado. Por causa dessa filosofia tem muita gente que programa em C++ como se programa em C, ou como se programava em 1980. No caso de uma linguagem antiga, muitos padrões de codificação já foram adotados e o ideal mesmo é consultar um livro intermediário e avançado para aprende-los. Coisas como RAII, Smart Pointers, uso da boost e da STL não se aprende simplesmente usando. É bom ter algum material que, no mínimo, te diga onde procurar o que.

No C++ geralmente existe dezenas de maneiras de se fazer a mesma coisa, sendo que das várias, uma ou duas serão as certas e as outras serão armadilhas cruéis.

Rosangela hickson.
Esse foi o primeiro livro que comprei sobre c++. Vem com cd de exemplos.

http://www.livrariaresposta.com.br/v2/produto.php?id=10565&origem=1

O deitel, acabei comprando para pesquisa e base de referência, porque aborda praticamente boa parte do total.

Para leitura avançada Programming Principle and Pratice Using C++(Bjarne S.). Aborda biblioteca padrão completa e exemplos bem complexos.

L

Com os comentários de alguns de vocês, o Deitel não seria o mais adequado para apreender os conceitos sobre a linguagem, servindo somente como consulta?

K

Bom, eu não acho adequado nem pra consulta, pra ser sincero… Pra consulta, existem milhares de documentações na internet.

Só quero deixar claro o seguinte, o conteúdo do livro é ótimo! Extremamente completo!

O problema é que eu não conheço uma pessoa que tenha saco pra ler todo aquele livro. O cara faz muitas analogias, falando como se tu fosse alguém que nunca tivesse usado um computador na vida (Eu não acho isso ruim, mas pra quem já programa, se torna repetitivo e chato).

Eu iria pelos outros livros que o pessoal recomendou… hehe!

Abraços!

F

Deitel… mas tem que ser o do Deitel da editora Bookman se não me engano… ou em inglês mesmo…

Se for aquela editora AltaBooks caia fora o mais rápido possível…

V

O livro de C++ é muito melhor que o livro do Deitel para o Java. Sem comparação. Eu gosto muito de um livro que recomendo no meu Roadmap, do André Bueno.

O link para o livro (que é free) é esse aqui:
http://www.lenep.uenf.br/~bueno/ApostilaProgramacao/ApostilaProgramacaoCppv045.pdf

L

Bom, então pelo jeito, o Deitel é o mais adequado. Para mim não faz mal que tenha muito conteúdo, pois não tenho pressa de apreender. Mas me esclareçam uma coisa, qual é a diferença da 5ª para a 3ª Edição do Deitel?

Também dei uma olhada no livro que o ViniGodoy indicou, achei interessante e bem completo, só que no entanto, não quero ficar preso ao computador, quero também aproveitar outros momentos que dê para ler, não sendo no computador.

E falando de livro online, alguem sabe onde tem o C++ Como Programar do Deitel para dar uma olhada?

P

pois é cara: acho ‘estranhíssima’ essa editora… eles conseguem jogar nas prateleiras das livraria uma penca e um punhado de livros (mal) traduzidos! :shock: não seria melhor lançar menos títulos e contratar um bom tradutor?

V

Tem na livraria. Em pdf, talvez por aí pela web. Mas o link aqui no GUJ a gente não pode postar.

L

Bom, acho que finalmente, me decidi a ficar com o Deitel, pois acredito, que se ficar trocando de livro sem ter uma boa base, posso ficar meio perdido, confuso. Mas só gostaria de tirar uma última dúvida. Qual a diferença da 3ª para a 5ª Edição?
Também vi dizerem, que se o livro for de 1999 pra cá não faz diferença, pois a ultima “versão” do C++ é de 1998, é verdade?

P

Luiz Niedermier Custodio:
Bom, acho que finalmente, me decidi a ficar com o Deitel, pois acredito, que se ficar trocando de livro sem ter uma boa base, posso ficar meio perdido, confuso. Mas só gostaria de tirar uma última dúvida. Qual a diferença da 3ª para a 5ª Edição?
Também vi dizerem, que se o livro for de 1999 pra cá não faz diferença, pois a ultima “versão” do C++ é de 1998, é verdade?

Não…
Como o amigo respondeu: “Desde 2001 até hoje, o C++ passou por 2 padronizações, uma em 2003 e outra em 2009.”
E tem modificações sempre…

L

Mas essas modificações que ocorreram nestes últimos anos, alteram muita coisa na forma de programar?

V

Na linguagem básica, não. Ou seja, pode estudar com Deitel tranquilo.

Na forma de programar, sim. Mas isso vc só vai aprender em livros um pouco mais avançados, quando estudar os smart pointers, templates, raii e coisas do gênero.

L

E novamente repetindo, provavelmente a ultima pergunta referente aos livros, qual a diferença da 3ª para a 5ª Edição do Deitel?

Sou meio indeciso no começo, mas geralmente, depois que tenho um maior conhecimento no assunto, me “solto” bem mais.

F

Luiz Niedermier Custodio:
Bom, acho que finalmente, me decidi a ficar com o Deitel, pois acredito, que se ficar trocando de livro sem ter uma boa base, posso ficar meio perdido, confuso. Mas só gostaria de tirar uma última dúvida. Qual a diferença da 3ª para a 5ª Edição?
Também vi dizerem, que se o livro for de 1999 pra cá não faz diferença, pois a ultima “versão” do C++ é de 1998, é verdade?

Sim a última padronização significativa foi de 1998 e estão para lançar o famoso padrão C++0X que fazem 10 anos que estão prevendo… mas agora deve ser C++XX…

Se não me engano, se for a versão do livro do Deitel a melhor é a da Terceira… pois deve ser a tradução da BookMan… agora se for comprar o livro em inglês, compre a última…

Lembre-se que a linguagem C++ é o de menos… e o que vale são os FrameWorks e bibliotecas e tecnologias atreladas… aí vem uma sopinha de letrinha… ATL/MFC/QT/STL/Boost/Posix/APIWin32/Corba/Pro*C/DCom/OCCI/VisualC++/gcc/g++/gdb/Motif/lint/yacc/OTL/Berkeley DB/C++ Builder/Dynamic Libraries/essas são as que eu me lembrei vagamente… mas com certeza é muito mais… e ainda isso são só as mais conhecidas… em toda empresa tem coisa nova(nova no sentido de alguém pegar uma biblioteca na Internet e resolver usar ou até mesmo fazer do zero, o mais comum)…

C++ é igual Java… a linguagem é o mais fácil… o difícil é escolher as N opções… só que em C/C++ essas N opções são multiplicadas por várias vezes em C/C++… pois como se sabe, C/C++ todo mundo gosta de reinventar as coisas, não documentar nada, e deixar o código com a cara do programador… Em Java pelo menos as coisas são bem mais padronizadas/documentadas/testadas…

F

Ah, esqueci dos famosos Makefiles também… :lol: :lol: :lol:

Deixaram o programador para fazer na mão a linkedição e compilação dos seus arquivos, mas na prática a preguiça mata e quando se compila algo, é melhor compilar tudo mesmo… :lol: :lol: :lol:… a não ser que você tenha uma IDE como o Visual C++…

D

Cara, eu comprei a terceira edição e achei ela bem completa. Não acho que vale a pena pagar a mais o preço de outro livro só para ter a edição mais nova. Eu não sei todas as diferenças entre elas, mas sei que na quinta edição ele começa em capítulos mais cedo a falar de orientação ao objeto, dá um estudo de caso diferente. Mas para tirar as dúvidas mesmo, olhe o conteúdo pelo índice e veja se há tantas diferenças assim e faça a sua escolha.
Abraços

V

Não acho o C++ muito diferente do Java nesse sentido. Você tem os bons frameworks (boost, Qt, havoc, STL, etc) que são extremamente bem documentados e mantidos por empresas. E você tem frameworks de amadores, ou de profissionais com boa intenção, onde a documentação é realmente péssima e a qualidade do código pode ser duvidosa.

Agora, pegue a documentação das libs padrão e da boost, por exemplo, e você vai ver que ela dá de 10 a 0 na documentação do Java da própria Sun.

Nas indústrias que eu trabalhei, o código C++ era limpo e bem documentado. A única vantagem do Java é que a Sun, logo que iniciou a linguagem, impôs uma code convention (que foi baseada, inclusive, numa das convenções mais comuns no C++).

Voltando a dúvida do autor do tópico, a quinta edição teve uma das maiores revisões dos livros. Acho o texto da quinta menos prolixo e mais coeso. Se fosse comprar, compraria definitivamente após a quinta edição (o livro está na sétima). Ele também é um pouco mais atualizado com algumas técnicas modernas de programação em C++ usando a STL.

F

Na verdade boost, stl não seria um framework… por isso que em C/C++ cada um inventa seu próprio framework… Um Framework seria o QT, o próprio C++ Builder que embute um framework… a MFC… e etc… até o arquiteto da Microsoft inventou um framework padronizado(talvez umas das primeiras coisas que usaram OOP… com conceitos de Encapsulamento e Objetos… no caso o termo Handle seria um ponteiro para um objeto)… a famosa API Win32… que precisa de umas 50 linhas de código para se escrever um HelloWorld… e isso motivou cada um inventar o seu framework… MFC/QT/Borland/Etc…

No caso do Java sempre existe o framework padrão… nos diversos frameworks(para Web, Desktop, Embed, etc) para Java o EJB2 não ficou bom e resolveram praticamente fazer outra especificação… o EJB3…

No caso do C++… não existe um Framework padrão… por isso que cada um gosta de inventar a sua idéia… veja que em qualquer fórum de C/C++ cada um acha melhor de um jeito… e no final ninguém chega a nenhuma conclusão… pois existe tantas opções, que no final fica aquela guerra de… o meu jeito é melhor porque é assim assim assado, aí chega outro e fala… o meu é melhor porque assim assim assado… e fica em loop infinito…

O C/C++ deixa aberto até o tamanho de um simples inteiro… pois sabe que forçar algo vai prejudicar o desempenho… até um simples caractere no C/C++ é motivo de confusão… pois existem milhares de classes string por exemplo… e no Java já resolveram deixar o overhead de 2 bytes(no C/C++ seria 1 byte se não usar unicode) por caracter na String e já implementaram tudo na classe String… fica lento mas pelo menos todo mundo sabe usar e é padrão…

O pior é que se procurar no Google por C++ string… até o Google coloca em primeiro um site não oficial da STL… até o Google já percebeu como C++ é diversificado… :lol: :lol: :lol:… no Java tudo aponta para o site da Sun… :lol: agora tenta procurar um simples ltrim/rtrim/trim no C++ padrão… :lol: :lol: :lol: agora imagine quantos ltrim ou rtrim existem por aí… agora imagine isso multiplicado por cada coisinha que você precise… :lol:

No Java já tem tudo pronto… por isso que gosto de Java… reinvenção de roda é duro…

F

Ah… no C/C++ eles nem especificam o tamanho do unicode… não sei se no Java também… mas isso não tem a mínima importância em Java… já no C/C++ tem e muita… talvez seja por isso que ninguém usa unicode…

V

Ah não? E o que são então?

A STL é um framework. E é padrão da linguagem. Na verdade, ele é tão padrão que é regulamentado pelo mesmo comitê, e normatizado pela ISO, por isso tanta demora entre duas versões de C++. Vem com qualquer compilador C++, inclusive o da Microsoft. STL é a sigla de “Standard Template Library”.

A boost não é exatamente padrão, mas é feita pelo mesmo comitê. A diferença é que ela é mais como a lib da sun, possui um board menos rigoroso que uma ISO da vida, e então permite adição de conteúdo mais rapidamente que o padrão rigoroso do C++ exige. E claro, coisas boas da boost vão sendo gradualmente incorporadas ao padrão oficial, como o caso dos smarts pointers da boost, que já fazem parte da tr1.

Os frameworks possuem classes para diversas funcionalidades como listas, sockets, threads, comunicação entre processos, etc.

O java também tem diversos frameworks, mesmo para a mesma coisa. Por exemplo, para interface gráfica temos a AWT e o Swing (só na própria Sun), além do SWT. No caso de frameworks 3D, temos o Java 3D, JOGL, LWJGL. Se incluirmos engines, JMonkeyEngine, Xyth3D. Mobile? A google recentemente reinventou a roda com o Android, sendo que já existia o framework padrão. Todos fazem a mesma coisa. API de persistência temos o Hibernate, o JPA e o Toplink, etc, etc, etc…

Variedade de frameworks é um ponto positivo, na minha opinião. Pois cada fabricante de framework oferecerá um conjunto novo de vantagens. Mas claro, como o C++ existe ha muito mais tempo, e tem muito mais empresas grandes dando suporte, haverá mais opções disponíveis no mercado.

A classe String do Java é mais “ajeitada” porque o Java veio depois do C++. A maior parte das bibliotecas (incluindo a MFC) estão abandonando suas próprias classes string em prol da std::string e a std::wstring. Ambas são a implementação da classe string na API padrão do C++, a STL. O C++ te dá a escolha de suportar ou não unicode, por isso a existência de duas classes. Claro que dá mais confusão caso você decida interoperar as duas coisas, mas enfim, é o que se paga por ter escolha.

Se procurar por C++ string, o google coloca em primeiro lugar o site http://www.cplusplus.com/reference/string/string/, que traz uma documentação sobre a STL oficial. A documentação desse site é tirada do doxygen da própria STL e o site é considerado uma das principais referências da linguagem (assim como uma das principais referências sobre Java é o site da IBM).

“Felipe kan”:
Ah, esqueci dos famosos Makefiles também…

Deixaram o programador para fazer na mão a linkedição e compilação dos seus arquivos, mas na prática a preguiça mata e quando se compila algo, é melhor compilar tudo mesmo… … a não ser que você tenha uma IDE como o Visual C++…

Já tentou compilar na mão um programa com libs no Java? É tão complicado quanto escrever um makefile. E que tal escrever manifest para .jars ou aqueles arquivos .xml para o JNLP?

F

Framework é bem diferente de Library… :lol: :lol:

E C/C++ nunca foi e está muito longe de ser compatível… quem tem bastante experiência com C/C++ sabe que existem várias incompatibilidades de compiladores… até úm dos criadores do STL o Herb Sutter sempre dedica páginas e páginas falando de problemas de compatibilidade… ou seja, funciona em um compilador e não funciona em outro… e o criador do C/C++ sempre tem 2 ou 3 máquinas com sistemas diferentes para ficar testando código em plataformas distintas…

Até hoje em dia o padrão de C++ de 1998 ainda tem problemas de compatibilidade… a Microsoft nos últimos compiladores até criou uma opção para forçar o código padrão… mas aposto que ninguém habilita essa opção… assim como no g++ quase ninguém compila com ANSI e sim sempre com -03…

V

Qual é a diferença de framework e library para você?

Alguns autores defendem que é porque framework é baseado em extensão, enquanto library não. No caso, a STL começou com muito uso e pouca extensão, mas hoje já não é assim. Você pode estender iterators, collections, etc. A boost é um framework, indiscutivelmente.

Na verdade, existe incompatibilidade de compiladores porque no C++ você pode escolher entre vários compiladores, enquanto no caso do Java o compilador da Sun é praticamente monopolista. O que também significa que se a Oracle resolver abandonar a construção desse compilador, o java estará em maus lençóis. Obviamente, alguns fabricantes de compiladores C++, na pressa de inserir recursos mais avançados, não são tão fiéis a especificação assim. Atualmente, entretanto, o compilador da MS tem ficado cada vez mais fiel ao standard, e alguns compiladores são famosos por serem bastante fieis como o GNU.

No Java, também temos alguns problemas de compatibilidade com compiladores fora dos da Sun. Ou problemas de execução em VMs diferentes da padrão: eu mesmo tive alguns problemas com a VM da IBM, que simplesmente não retornava os tipos de classes via reflexão - sem falar é claro na guerra que ocorreu entre a Sun e a Microsoft por causa da MSVM não ser lá tão padrão.

Todas as últimas aplicações que fiz compilavam perfeitamente bem em diversos compiladores. O código da boost mesmo é homologado em diversas versões, assim como o da STL. Mas já enfrentei sim alguns problemas de compatibilidade, geralmente corrigíveis. Agora, nunca fiz um código de uma lib, em que fosse necessário compilar em dezenas de compiladores diferentes e não sei o quanto complexo é essa tarefa.

Mas claro, no C++ é um pouco mais complexo porque a linguagem não é multi-plataforma. Os compiladores geram código para um SO específico e não para uma VM padrão. Isso, entretanto, é uma característica da linguagem, não necessariamente uma desvantagem. Até porque código específico também tem vantagens, como o aproveitamento de instruções específicas, menor consumo de memória, não ser necessário instalar uma VM, entre outras coisas.

F

ViniGodoy:
Qual é a diferença de framework e library para você?

FrameWork seria um Struts por exemplo… e um strcpy uma biblioteca padrão… apesa de preferir um strncpy…

O boost foi feito para ser algo para resolver um propósito genérico… e não um específico… como no caso do Struts…

J

Felipe Kan:
Framework é bem diferente de Library… :lol: :lol:

E C/C++ nunca foi e está muito longe de ser compatível… quem tem bastante experiência com C/C++ sabe que existem várias incompatibilidades de compiladores… até úm dos criadores do STL o Herb Sutter sempre dedica páginas e páginas falando de problemas de compatibilidade… ou seja, funciona em um compilador e não funciona em outro… e o criador do C/C++ sempre tem 2 ou 3 máquinas com sistemas diferentes para ficar testando código em plataformas distintas…

Até hoje em dia o padrão de C++ de 1998 ainda tem problemas de compatibilidade… a Microsoft nos últimos compiladores até criou uma opção para forçar o código padrão… mas aposto que ninguém habilita essa opção… assim como no g++ quase ninguém compila com ANSI e sim sempre com -03…

O único compilador de c++ que não segue iso no mercado é o da MS. Todos o outros compiladores são 100% compatíveis, senão não existiriam frameworks como
wxwidgets, gtk e o qt, que são multiplataformas. Isso falando de c++.

O formato de executáveis muda entre o borland c++ e o msc++ também, sendo o primeiro a usar omf e o segundo coff. No mundo, o único problema de incompatibilidade existia por causa da briga dessas empresas.

http://www.metagraphics.com/metawindow/faq/mwfaq030.htm

Não sei onde você tirou o “funciona em um compilador e não funciona em outro”. Existem centenas de compiladores que implementam perfeitamente o padrão iso.

J

Felipe Kan:
ViniGodoy:
Qual é a diferença de framework e library para você?

FrameWork seria um Struts por exemplo… e um strcpy uma biblioteca padrão… apesa de preferir um strncpy…

O boost foi feito para ser algo para resolver um propósito genérico… e não um específico… como no caso do Struts…

Não existe diferença entre biblioteca padrão e framework. Diz-se biblioteca padrão porque simplesmente foi adotada a especificação, assim como em breve, a boost será padrão também.

O borland c++ já usa a boost como padrão a muito tempo. É uma questão de tempo a iso engolir ela também.

L

Bom, eu acabei por comprar a 3ª edição do Livro do Deitel usado, do usuário Schuenemann aqui do fórum.

Depositei ontem o valor combinado, acho que ele já deve ter despachado, e deve chegar quarta ou quinta da semana que vem aqui.

Portanto, por mim, pode fechar o tópico (não sei se os moderadores aqui costumam fazer isso).

E

juliocbq:
Todos o outros compiladores são 100% compatíveis, senão não existiriam frameworks como
wxwidgets, gtk e o qt, que são multiplataformas.

Hum… isso é porque você não usou aqueles compiladores C/C++ de sistemas não-Unix (ou mesmo de sistemas Unix mais antigos). 100% de compatibilidade é um mito.

De qualquer maneira, nada que um monte de #ifdefs (e o famoso script “configure”) não possam fazer por você. Só dá um bocadinho de trabalho, e obviamente o “write once, test anywhere” que é um lema do Java* mas é mais ainda para o C++.

*OK, o lema na verdade é “write once, run anywhere”, mas é claro que isso é também um mito. Na realidade você precisa é testar em todos os ambientes em que você quer que o tal programa rode.

J

entanglement:
juliocbq:
Todos o outros compiladores são 100% compatíveis, senão não existiriam frameworks como
wxwidgets, gtk e o qt, que são multiplataformas.

Hum… isso é porque você não usou aqueles compiladores C/C++ de sistemas não-Unix (ou mesmo de sistemas Unix mais antigos). 100% de compatibilidade é um mito.

De qualquer maneira, nada que um monte de #ifdefs (e o famoso script “configure”) não possam fazer por você. Só dá um bocadinho de trabalho, e obviamente o “write once, test anywhere” que é um lema do Java* mas é mais ainda para o C++.

*OK, o lema na verdade é “write once, run anywhere”, mas é claro que isso é também um mito. Na realidade você precisa é testar em todos os ambientes em que você quer que o tal programa rode.


Pelo menos os que eu usei, o ms, o intel, o borland, o gnu, e o digitalmars hoje seguem perfeitamente iso. Somente tive problemas para compilar com o msc++ 6, a 5 anos.
Até hoje nenhum me deu problema(no quesito linguagem), Formato de executável é outra história(COFF OMF).

Criado 30 de março de 2010
Ultima resposta 7 de abr. de 2010
Respostas 38
Participantes 11