Minha escola inicia o currículo de ciências da computação com cursos de programação C ++, o que significa que esta é a primeira língua que muitos alunos aprendem.
Vi que muitas pessoas não gostam de C ++ e li várias razões para isso. Quase parece ser opinião popular que C ++ não é uma linguagem muito boa. Tenho a impressão de que não é muito apreciado com base em algumas perguntas no StackExchange, bem como em publicações como:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
etc.
(Nota: não é minha opinião que o C ++ seja uma linguagem ruim. Na verdade, é a linguagem principal que eu uso. No entanto, a Internet e alguns professores me deram a impressão de que não é uma linguagem muito apreciada. , um dos meus professores constantemente se diverte em C ++, mas ainda é o idioma inicial na minha faculdade!)
Com isso em mente, por que essa é a primeira língua ensinada em muitas escolas? Quais são as razões para iniciar um currículo de programação com C ++?
Nota: Esta pergunta é semelhante a "O C ++ é adequado como primeira linguagem", mas é um pouco diferente, pois não estou interessado em saber se é adequado, mas por que foi escolhido.
Respostas:
Cada língua tem um culto de amantes e inimigos; isso vale para C ++, Java, C #, Haskell, Objective-C, qualquer que seja.
Existem muitos motivos válidos para gostar ou não de um idioma.
No final, existem algumas razões pelas quais o C ++ é predominantemente ensinado nas universidades:
Constrói em cima de C; portanto, a transição de C para C ++ não é muito dolorosa. Muitas universidades ensinam C antes do C ++ (o que faz muito sentido na IMO).
É uma das linguagens mais populares do setor (que está começando a mudar com Java, desenvolvimento móvel, desenvolvimento web, etc., mas ainda está lá em cima)
É uma linguagem que foi escrita por um acadêmico, para fins acadêmicos (ou seja, pesquisa) ; portanto, muitos professores o usam no dia a dia e estão muito familiarizados com ele, o que o torna uma escolha óbvia para o conteúdo de seu curso.
Não se apresse em descartá-lo como uma linguagem "ruim"; Eu recomendo que você mergulhe nele, realmente aprenda, construa alguns projetos de tamanho moderado a grande usando-o. Então faça o mesmo com outros idiomas; nesse ponto, você terá experiência e insight suficientes para dizer "Eu acho que C ++ é ruim porque X, Y, Z" ou "Eu acho que C ++ é bom porque A, B, C que Java não possui".
Você ainda tem muito a aprender, jovem gafanhoto.
fonte
Simplificando, é uma linguagem de ensino muito boa porque não segura sua mão. As pessoas que aprendem a dirigir em uma transmissão manual quase não têm problemas na primeira vez em uma automática, mas o contrário não é verdadeiro. Leva mais tempo para aprender, mas na faculdade você tem 4 anos de programas de brinquedos para praticar antes de precisar fazer algo útil.
fonte
O que está sendo ensinado na escola geralmente é impulsionado pelo que os professores sabem e pelo que estava sendo usado na indústria e popular na época.
Pense nas escolas como uma cápsula do tempo para o passado. :)
Eu realmente gostaria que fosse o contrário.
fonte
O inglês também foi descrito como uma linguagem realmente ruim, cortada em conjunto e inconsistente, mas como muitas pessoas por aqui sabem disso, meus pais e professores decidiram que era uma boa ideia ensiná-lo para mim.
Eu acho que é o mesmo com C ++. É uma linguagem que muitas pessoas conhecem, por isso vale a pena obter uma fluência básica.
Ele também tem a vantagem de ter um nível baixo o suficiente para realmente dar uma ideia do que está acontecendo no nível do hardware.
Por fim, ele não possui os problemas "comerciais" que algumas outras linguagens têm (como Java-Oracle ou .NET-MS). Sei que muitas universidades não gostariam de ser acusadas de ensinar o produto de uma empresa específica em detrimento de outra.
fonte
Se o C ++ é tão ruim, como você explica que a maioria dos produtos de software que você usa na sua vida diária é escrita em C ++?
Pode haver várias razões para aprender C ++ na faculdade desde o primeiro ano:
É amplamente utilizado. A base de código existente é enorme e, mesmo agora que existem linguagens como Ruby, Python ou C #, o C ++ ainda é muito utilizado, mesmo na criação de aplicativos do zero, inclusive para sites. Nesse caso, aprender C ++ é uma boa escolha. Pelo menos melhor do que passar dois anos aprendendo Ada, ou seja, algo que você nunca usará em sua vida, a menos que desenvolva aplicativos para espaçonaves.
Não é muito abstrato. Por exemplo, como você pode explicar aos alunos o que são indicadores se eles aprenderem apenas C # ou Java?
Já é bastante difícil comparado com, por exemplo, o PHP. Isso significa que os alunos que não são feitos para programação sairão em breve, o que não é tão ruim e evita que um aluno perca dois ou três anos antes de entender que o desenvolvimento de software não é para ele.
Isso torna o C ++ mais adequado que o Ada, Java ou PHP.
fonte
De um modo geral, se você pode aprender e dominar C ++, pode aprender e dominar praticamente qualquer outro idioma por aí. O motivo de não gostar é que, para ser proficiente nele e ter um tempo de lançamento rápido, você precisa estar muito familiarizado com o idioma e sua biblioteca padrão.
No entanto, em uma linguagem como Java, você pode ter um tempo de implementação rápido com apenas algum conhecimento avançado dos meandros da biblioteca de idiomas / padrão. Inferno, eu sei apenas cinco coisas da biblioteca padrão Java de cor (além do material básico, como coleções, é claro).
Dito isto, o C ++ ainda é uma linguagem amplamente usada devido à sua excelente combinação de velocidade e metodologias orientadas a objetos. Embora muitas pessoas acreditem que o POO não esteja completo, acredito que ele oferece a maior parte da flexibilidade do POO sem forçar você a ser um fanático total. A maioria dos compiladores permite que você escreva C. puro
Se eu tivesse escolha, eu aceitaria C ++ sobre Java a qualquer dia, mas sou apenas um fanboy. De um modo geral, o Java é útil porque será executado em praticamente qualquer arquitetura que tenha um interpretador Java criado para ele. Portanto, para aplicativos clientes que precisam ser suportados em várias plataformas, é considerada a melhor ferramenta para o trabalho e a maioria dos novos aplicativos gravados são baseados na Web de qualquer maneira.
fonte
Como alguns de meus professores me disseram, é mais fácil começar do fundo, ou de um nível baixo, e subir o seu caminho. Uma linguagem como o C ++ fornece uma ótima introdução ao que é realmente um cientista da computação. Pode não ser uma linguagem tão glamorosa quanto Java, Python, Ruby, etc ... mas permite que você obtenha uma compreensão central dos recursos importantes do programa, como ponteiros e gerenciamento de memória. Mesmo que não seja uma linguagem que você planeja ou deseja usar pelo resto da vida, você apreciará nos próximos anos quando começar a encontrar o caminho de programação desejado.
fonte
C ++ pode ser uma das linguagens mais simples para programas de console no nível iniciante. Claro que o idioma é complexo, mas você pode se concentrar em um subconjunto de procedimentos. Você pode ignorar a existência de ponteiros por um bom tempo. Você pode começar do simples e depois construir.
Há menos sintaxe "fluff" para colocar o programa inicial "olá mundo" em funcionamento, comparado com java ou C #. Um iniciante deve ver a palavra "estática" para um aplicativo hello world? Em java / C # eles fazem.
fonte
Quando estudei ciência da computação, o Java foi ensinado primeiro, mas minha universidade agora ensina duas linguagens para os linguistas da computação: primeiro o Prolog e depois o C ++.
O C ++ é ensinado (pelo menos) pelos seguintes motivos:
É uma linguagem de uso geral, você pode escrever um software para qualquer sistema operacional (porque existem muitos compiladores). Ele foi projetado para ser uma boa linguagem de produção, facilita a reutilização de peças de programas, interopera com hardware e software do mundo real, etc.
É muito rápido. Você não pode usar Python, Scheme ou Prolog para processar grandes conjuntos de dados, que são comuns atualmente. Pense em algoritmos gráficos com milhões de nós. (É também por isso que os jogos de computador geralmente são escritos em C ++.)
Os alunos podem aprender o que o compilador faz. Na verdade, desde que eu só aprendesse Java (começando no ensino médio), o trabalho do compilador sempre me pareceu mágico. Você simplesmente não aprende sobre pilha e pilha, toda a coisa estática versus dinâmica, etc. como iniciante em Java. C ++ desmistifica o computador inteiro.
Pelo que ele pode fazer, está tudo bem no tempo de aprendizado (embora seja provavelmente um dos idiomas mais complicados se você realmente se interessar por ele). Ele oferece uma boa biblioteca que ajuda com uma curva de aprendizado suave. (Porém, existem abordagens diferentes. Na minha universidade, fomos ensinados a escrever nossas próprias classes de strings e ponteiros inteligentes antes de podermos usar a biblioteca; Bjarne Stroustrup, inventora do C ++, incentiva a ordem oposta.)
fonte
O C / C ++ é realmente uma linguagem melhor que a maioria dos outros, primeiro porque não adiciona uma falsa sensação de segurança. Em segundo lugar, porque você já sabe o que está fazendo.
Na verdade, eu amo a linguagem e considero superior à maioria das alternativas.
Também é tão produtivo quanto a maioria dos outros idiomas, e não tão "travado" se você souber o que está fazendo, e pense antes de copiar o codez aleatório de massas.
Também uma boa leitura - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
No entanto, algumas coisas no C ++ são realmente ruins, por exemplo, exceções e sobrecarga não intuitiva em alguns casos. Acho que esse é o motivo pelo qual Linus é tão negativo quanto a isso no post que você citou.
Uma boa leitura para tocar em um dos tópicos relacionados - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
fonte
fonte
No início havia Pascal, anteriormente Pascal havia algo parecido com Basic. A parte interessante é - o que vem depois? Talvez nada. Eu tenho um pensamento sobre "por que c ++". Porque é difícil, mas não é muito difícil. Não, eu realmente entendo que o C ++ é uma boa linguagem para a programação do sistema, eu sei que existem muitos projetos codificados em C ++ e existem inúmeras bibliotecas para que os alunos possam criar tudo com ele. Mas estamos falando sobre os alunos e sua possibilidade de criar lógicas e entender o sistema. Você não pode ser um bom codificador de C ++ se não puder criar lógicas simples e entender como o sistema funciona e esse é o principal motivo em minha opinião. E sim, outro motivo simples é o início estável da carreira.
fonte