A Linguagem Certa [Update: Escolher Livro C++ | HELP]

Qual a linguagem para começar ?

  • C++

    Votes: 8 38,1%
  • C#

    Votes: 6 28,6%
  • VB.NET

    Votes: 3 14,3%
  • Java

    Votes: 4 19,0%

  • Total voters
    21
Comecei há pouco tempo com C# de noto de facto grandes vantagens.

É muito simples fazer o que pretendo, é quase um VB com esteroides... se não precisas de nada que exiga muito poder de processamento (velocidade) então é sem duvida uma optima linguagem.

Escolher c++ tem obviamente outras vantagens que nao podem ser descuradas! A velocidade e poder sao sem duvida as principais. No entanto é muito mais complicado de programar.

Acho que se pudesse, tinha feito o projecto que tenho agora em maos em C++ devido a velocidade, mas tenho a plena consciencia que não tinha um 1/10 do que já tenho feito se tivesse a usar C++!
 
Comecei há pouco tempo com C# de noto de facto grandes vantagens.

É muito simples fazer o que pretendo, é quase um VB com esteroides... se não precisas de nada que exiga muito poder de processamento (velocidade) então é sem duvida uma optima linguagem.

Escolher c++ tem obviamente outras vantagens que nao podem ser descuradas! A velocidade e poder sao sem duvida as principais. No entanto é muito mais complicado de programar.

Acho que se pudesse, tinha feito o projecto que tenho agora em maos em C++ devido a velocidade, mas tenho a plena consciencia que não tinha um 1/10 do que já tenho feito se tivesse a usar C++!

E achas que com os conhecimentos que tens agora de C# consegues facilmente aprender C++ ? (se fosse o caso)
 
E achas que com os conhecimentos que tens agora de C# consegues facilmente aprender C++ ? (se fosse o caso)


Eu ja aprendi C++ (mas ja foi a alguns anitos e estou muito enferrujado).

Seria possivel aprender.. sim. As bases estao quase todas la, era so preciso um pouco de mais esforco.
 
Eu ja aprendi C++ (mas ja foi a alguns anitos e estou muito enferrujado).

Seria possivel aprender.. sim. As bases estao quase todas la, era so preciso um pouco de mais esforco.

Então começar com C# é mesmo o aconselhado ?? Quer dizer, achas(m) que C++ é assim tão dificil para começar ??
 
C++ não é assim tao dificil para comecar.

Como em todas as linguagems, começando com uns programas de consola, rapidamente se começa a perceber o esquema. Existem pequenas diferenças entre C# e C++ que mesmo a esse nivel se notam e servem para fazer uma base de conhecimento.

Não recomendo, é saltar logo para ambientes gráficos.

A minha opinião:
Se for para só fazer uns programas: C#. É muito mais intuitivo e serve perfeitamente sem queimar muitos neurónios.
Se for para aprender a programar: C++. Ficas com uma base de conhecimentos muito maior e posteriormente o salto para C# é trivial.
 
Então começar com C# é mesmo o aconselhado ?? Quer dizer, achas(m) que C++ é assim tão dificil para começar ??

o problema que encontrei no c++ foi mesmo a sintaxe para o OOP e a falta de funções que o java/C# nos oferecem logo à partida, quando ja sabia programar em java e parti para o C++ apanhei com cada erro jazus.

na minha opinião começar por C#/Java é aconselhado mas fica ciente que apesar de de saberes uma destas para aprender C++ vais ter que partir um bocado a cabeça, mas nada que não se faça
 
Em C++ é preciso aprender uma porrada de conceitos que em C# não é (tão) preciso.
C# é mais fácil. Geralmente, começa-se pelo mais fácil, certo? E vai-se progredindo à medida.

Nas universidades (pelo menos na minha), a primeira linguagem que se dá é sempre uma "que não tem nada a ver" (Haskell, geralmente), para por todos em pé de igualdade. Depois, dá-se Java. Finalmente, passa-se para C. Com os conhecimentos de Java, já não é preciso aprender tanta coisa para C. Seria uma carga bastante maior, acho eu, aprender logo C de estalo, sem saber o que é uma estrutura (ou Objecto), uma referência, uma String...
 
Se for para só fazer uns programas: C#. É muito mais intuitivo e serve perfeitamente sem queimar muitos neurónios.
Se for para aprender a programar: C++. Ficas com uma base de conhecimentos muito maior e posteriormente o salto para C# é trivial.

Isso é como dizer, para brincar C#, para levar a coisa a sério e ter mais conhecimentos C++ ...
Aproveito para dizer que vou estudar a linguagem em simultaneo com um colega da minha turma que, tal como eu, quer aprender mais ...
Mas , para me (nos) guiar estava a pensar em adquirir um livro ... O problema é decidir entre C# e C++ ... Apesar de ser mais dificil, não sei porquê estou mais inclinado para C++

Em C++ é preciso aprender uma porrada de conceitos que em C# não é (tão) preciso.
C# é mais fácil. Geralmente, começa-se pelo mais fácil, certo? E vai-se progredindo à medida.

Nas universidades (pelo menos na minha), a primeira linguagem que se dá é sempre uma "que não tem nada a ver" (Haskell, geralmente), para por todos em pé de igualdade. Depois, dá-se Java. Finalmente, passa-se para C. Com os conhecimentos de Java, já não é preciso aprender tanta coisa para C. Seria uma carga bastante maior, acho eu, aprender logo C de estalo, sem saber o que é uma estrutura (ou Objecto), uma referência, uma String...

Mas se seguirmos esse pensamento, vou estudar Jaba, depois C e depois C++ ??
Cada vez que vejo respostas e que pesquiso mais ainda fico mais baralhado .. Ás vezes até fico assustado com o que vocês dizem .. Cada filme com o C++ .. O problema é se o filme é mesmo assim (dificil) ...

Mas acho que no geral todos concordam com C# e depois C++ ?
Ou C++ pode ser aprendido logo, não tão bem como C#, mas com algum estudo, é possivel ?

o problema que encontrei no c++ foi mesmo a sintaxe para o OOP e a falta de funções que o java/C# nos oferecem logo à partida, quando ja sabia programar em java e parti para o C++ apanhei com cada erro jazus.

na minha opinião começar por C#/Java é aconselhado mas fica ciente que apesar de de saberes uma destas para aprender C++ vais ter que partir um bocado a cabeça, mas nada que não se faça

Então o facto de já saberes C# não adiantou grande coisa ?? Quer dizer achas que alguem que não sabe C# iria ter muita mais dificuldade a aprender C++ do que tu ?
 
Última edição:
Como já disseram, as vantagens do C++ são o máximo desempenho (indispensável para jogos, como deves imaginar), e a capacidade de interagir directamente com a memória e com o CPU (permite a escrita de instruções assembly), o que também acaba por melhorar a performance. Outra vantagem é que o código é multiplataforma, isto é, se for feito com cuidado e segundo umas certas regras, dá para compilar e executar em Linux e Windows sem problemas. Mas no Java é a mesma coisa, apenas requer que a máquina virtual esteja instalada.

Isso é como dizer, para brincar C#, para levar a coisa a sério e ter mais conhecimentos C++ ...
Depende do objectivo. Se quiseres programar um Crysis, obviamente vais optar por C++ porque queres o máximo de performance. Se for para qualquer outro programa em que o desempenho não é crucial, com C# ou Java poupas muito tempo no desenvolvimento em relação ao C++, e a aplicação provavelmente ficará muito mais robusta.

C#, tal como Java e VB .NET, é fácil no sentido em que já existe muita coisa feita nas bibliotecas, e abstrai completamente o uso de ponteiros e outros pormenores dispensáveis que no C++ és obrigado a conhecer e tê-los em conta regularmente.

Quanto à passagem de C# para C++, vou-te dar o meu exemplo. Comecei com VB .NET, e com ele aprendi grande parte dos conceitos e paradigmas de programação. Quando fui aprender C, adequei-me sem dificuldades relevantes. A parte mais difícil foi compreender a 100% as operações com ponteiros e memória, mas nem foi nada de especial, até porque, no VB, também tive que perceber o que é um ponteiro (utiliza-se em chamadas a APIs). C++ é um C com mais alguns extras, entre os quais programação com objectos (que é dominante em VB, Java e C#). Nunca aprendi C++ e, apesar disso, consigo compreender o código de um programa feito em C++ graças às bases que adquiri em VB .NET, C e C#. Também aprendi Scheme antes de C, mas serviu mais para consolidar o que já tinha adquirido, e para conhecer uma linguagem funcional.

Ou C++ pode ser aprendido logo, não tão bem como C#, mas com algum estudo, é possivel ?
Claro que é possível, muitos milhares de programadores escolheram C ou C++ como primeira linguagem. ;)
 
Última edição:
Em C++ é preciso aprender uma porrada de conceitos que em C# não é (tão) preciso.
C# é mais fácil. Geralmente, começa-se pelo mais fácil, certo? E vai-se progredindo à medida.

Nas universidades (pelo menos na minha), a primeira linguagem que se dá é sempre uma "que não tem nada a ver" (Haskell, geralmente), para por todos em pé de igualdade. Depois, dá-se Java. Finalmente, passa-se para C. Com os conhecimentos de Java, já não é preciso aprender tanta coisa para C. Seria uma carga bastante maior, acho eu, aprender logo C de estalo, sem saber o que é uma estrutura (ou Objecto), uma referência, uma String...

Na minha opinião é um erro começar por algo high level. É muito mais interessante e produtivo começar por algo de mais baixo nivel (não falo de Assembly, obviamente) e depois ir subindo.

Em relação às universidades, não são quase todas que começam por Haskell. Eu comecei com Scheme, depois fui para C++ e depois para Java, e actualmente uso OpenGL (com C++), C (estou a usar, mas não aprendi. Aprendi C++) e Prolog.


Em relação aos jogos, dependendo do tipo de jogos a fazer pode-se também usar Prolog para o motor, e C++ com OpenGL para a parte gráfica.
 
Então o facto de já saberes C# não adiantou grande coisa ?? Quer dizer achas que alguem que não sabe C# iria ter muita mais dificuldade a aprender C++ do que tu ?

claro que facilitou, nem que seja aprenderes o paradigma OOP, se bem que uma pessoa que salte de C++ para C# é será mais facil que o inverso, pois existe muitas funções ou apoios que o C# possui que o C++ não

mas se ja souberes uma, a outra será mais facil
 
Bem, algum dia vou ter de tomar a decisão de escolher entre C++ e C# e não vale a pena estar a arrastar essa questão durante muito tempo por isso hoje vou ver uns livros sobre C# e C++ e, a partir dai, decido.

Em principio devo ir para C++, só se for muito dificil e eu não conseguir perceber bem aquilo é que vou para C# ...





cumps,
tuniq
:kfold:

EDIT:
Bem, já comprei um livro para me auxiliar no estudo da linguagem C++ e espero que corra tudo bem e que consiga perceber tudo :001:

Obrigado a todos pela ajuda nesta decisão, por me mostrarem os contras e os prós de diversas linguagens e por descreverem as vossas escolhas profissionais/pessoais a nível da Programação.



cumps,
tuniq
:kfold:
 
Última edição:
Ainda agora começei a ler o livro, exprimentei 2 códigos e não funcionam .. Pelo que percebi o livro está desactualizado ..

Por exempo, um exemplo que tem como objectivo mostrar numeros em decimal, hexadecimal e octal:

PELO LIVRO:

Código:
#include <iostream.h>
#include <iomanip.h>

void main () {

    int lastNumber, inc, number;
    lastNumber = 16;
    inc = 1;
    cout << "dec\thex\toctal" << end1;
    for (number = 0;
        number <= lastNumber;
        number = number + inc )
    cout << dec << number << '\t' << hex << number << '\t' << oct << number << end1;
}

Como podem ver existem aqui erros diversos:

- As bibliotecas nao usam .h
- a "funçao" cout não está definida, tal como hex, number ...

Ora bem, uso o Dev C++ e/ou o Microsoft Visual C++ Express e em nenhum isto funciona sendo que os erros são mostrados em ambos ...

Agora pregunto-vos o livro está desactualizado não está ? Quer dizer a linguaguem C++ foi modificada à pouco tempo ??

O livro é "Programação em C++: Conceitos Básicos e Algoritmos" de Pimenta Rodrigues, Pedro Pereira, Manuela Sousa .. Editora: FCA
9ª Edição (edição original de 1998)

Como é obvio vou devolver o livro e já agora podem aconselhar algum livro de C++ em português ??


cumps,
tuniq
:kfold:
 
As libs de C++ não são <*.h>. Ex: <iostream>.
Para o cout, falta-te definir o namespace std.

O problema é que no livro está assim ..

Ou seja, comprei um livro que me mostra exemplos errados ??
É que o Hello World também está errado no livro ...

Retirado do livro:

#include <iostream.h>
#include <iomanip.h>

void main() {
// Primeira linha (declarações e definições).
int lastNumber, inc, number;
// Segunda linha (afectação de lastNumber).
lastNumber = 16;
// Terceira linha (afectação de inc).
inc = 1;
// Quarta linha (cabeçalho da tabela a mostrar).
cout << "dec\thex\toctal" << endl; //'\t' carácter tab.
// Quinta linha (instrução de repetição for).
for ( number = 0;
number <= lastNumber;
number = number + inc )
cout << dec << number << '\t' << hex << number
<<'\t'<< oct << number << endl;
}
Outro problema é o CD que veio com o livro.. Executo os programas que estão de exemplo no livro. Alguns dao +/- (abrem e fecham logo), outros nem abrem ..
 
Última edição:
Provavelmente devem ser programas em DOS que requerem argumentos.

Vê a descrição deles se tiver.

Sim, eles mencionam DOS no capitulo introdutorio que fala de hardware, sistemas operativos e esse tipo de coisas ...

Mas eu queria um livro que tivesse as coisas "normais" .. E actualizadas ... Além disso, com o projecto posto para MSDOS (consola), os programas também não funcionam ...

Recomendam algum em particular ? (em pt de preferencia)
 
Última edição:
O problema de eles fecharem logo é, de facto, bom sinal. É sinal que está bem (pelo menos compila). Experimenta colocar um getchar() antes do return 0; (se tiver o return 0;, se não tiver coloca antes da chaveta que fecha o main).

Esse livro é fraco, está muito desactualizado. Em primeiro lugar já não se usa <iostream.h> mas sim <iostream>, falta definir o namespace std;, e depois a função main não deve ser void, embora possa ser. Mas não deve.

Assim rapidamente, e sem ter compilado, fica assim:

Código:
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    // Primeira linha (declarações e definições).
    int lastNumber, inc, number; 
    // Segunda linha (afectação de lastNumber).
    lastNumber = 16;
    // Terceira linha (afectação de inc).
    inc = 1;
    // Quarta linha (cabeçalho da tabela a mostrar).
    cout << "dec\thex\toctal" << endl; //'\t' carácter tab.
    // Quinta linha (instrução de repetição for).
    for ( number = 0; number <= lastNumber; number += inc ) // numerber+=inc significa number = numer+inc
        cout << dec << number << '\t' << hex << number
              <<'\t'<< oct << number << endl;

return 0;
}
 
O problema de eles fecharem logo é, de facto, bom sinal. É sinal que está bem (pelo menos compila). Experimenta colocar um getchar() antes do return 0; (se tiver o return 0;, se não tiver coloca antes da chaveta que fecha o main).

Esse livro é fraco, está muito desactualizado. Em primeiro lugar já não se usa <iostream.h> mas sim <iostream>, falta definir o namespace std;, e depois a função main não deve ser void, embora possa ser. Mas não deve.

Assim rapidamente, e sem ter compilado, fica assim:

Código:
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    // Primeira linha (declarações e definições).
    int lastNumber, inc, number; 
    // Segunda linha (afectação de lastNumber).
    lastNumber = 16;
    // Terceira linha (afectação de inc).
    inc = 1;
    // Quarta linha (cabeçalho da tabela a mostrar).
    cout << "dec\thex\toctal" << endl; //'\t' carácter tab.
    // Quinta linha (instrução de repetição for).
    for ( number = 0; number <= lastNumber; number += inc ) // numerber+=inc significa number = numer+inc
        cout << dec << number << '\t' << hex << number
              <<'\t'<< oct << number << endl;

return 0;
}

Ta mal .. Multiple definitions of main()..

O meu problema não é solucionar este exemplo em questão .. É que no livro TODO, usam livrarias com .h e void's que dão erro e mais coisas diversas ... Os programas que eu falei que abrem e fecham são de capitulos mais avançados por isso não sei ver o que está mal ou bem ... Mal deve estar muita coisa como tem acontecido nos 2 primeiros exercicios/exemplos...

Até exercicio do Hello World está mal no livro .. Acho que estudar por um livro assim, não vou a lado nenhum .. Porque estar a prenguntar o que está mal em todos os exercicios não funciona e não me server de método de estudo ...

Aguardo suguestões de livros (pt) ...


cumps,
tuniq
 
Esqueci-me de fechar as chavetas no main. Deve ser isso. Livros em PT não aconselho nenhum, pelo menos dos que conheço (também não sao muitos).
 
Back
Topo