Por que o C ++ geralmente é a primeira língua ensinada na faculdade? [fechadas]

12

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.

Casey Patton
fonte
6
Quais escolas e onde? Todos os que estão perto de mim (três na cidade e outros a poucas horas de carro) ensinam Java como primeira língua. O C ++ aparece no último ano ou dois (dependendo de quais cursos o aluno faz). Tem sido assim há pelo menos os últimos 10 anos.
FrustratedWithFormsDesigner
7
Os professores são como outros programadores, tendo apenas gostos e desgostos moderadamente racionais. Ao mesmo tempo, eles são como estudantes sendo privados de experiência.
Mike Dunlavey
@ Casey Provavelmente, você encontrará alguns atritos com outros usuários aqui, já que apenas forneceu uma alegação de que o C ++ não é apreciado, mas nenhuma justificativa para isso. Se o seu foco é apenas descobrir por que o C ++ é escolhido nas universidades, sugiro que você edite as referências de que ele goste ou não, pois isso é irrelevante para a sua pergunta real.
Adam Lear
4
No primeiro ano, trata-se de separar o joio do trigo.
Steven Evers
2
Ele iria ser interessante ter algumas estatísticas sobre quantas faculdades / universidades usar o que idiomas para os seus cursos introdutórios.
Jerry Coffin

Respostas:

25

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.

Bitgarden
fonte
2
Pode não ser uma linguagem "ruim" se você ascender à filosofia "ruim é subjetiva", mas para praticamente todas as combinações de preocupações técnicas, há uma linguagem mais produtiva e segura. Na minha opinião, a razão pela qual o C ++ é ensinado é porque é o que as pessoas usam, e é o que as pessoas usam porque é o que as pessoas sabem, e é o que as pessoas sabem porque é o que as universidades ensinam. Além da popularidade, o C ++ não possui méritos substanciais que eu possa ver, e eu programo com ele profissionalmente.
Weberc2
13

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.

Karl Bielefeldt
fonte
9
Estou preocupado com o fato de essa analogia falsa ter acumulado tantos votos positivos. Não é assim que funciona o aprendizado. Um dos muitos equívocos da didática.
Konrad Rudolph
12
C++ isn't that bad. 

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.

dustyprogrammer
fonte
um ponto muito sensato! Não recebi nenhum exercício sobre indicadores inteligentes, RTTI ou RAII na faculdade. WTF!
Chani
12

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.

Scott Whitlock
fonte
1
+1 para c ++ não sendo uma linguagem comercial. É bom aprender um idioma sem se preocupar com a política e as táticas de negócios. <instalando o Java7 no Linux, por exemplo>
Chani
5

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.

Arseni Mourzenko
fonte
1
Parece que C seria melhor para os seus segundos dois pontos. Existem escolas que ensinam Ada? Eu definitivamente aceitaria isso em C ++, mas, novamente, eu sou estranho!
Jetti 25/07
O C ++ é selecionado para produtos comerciais porque é o que mais as pessoas sabem, não por causa de suas preocupações técnicas. C ++ é uma linguagem insegura e difícil de usar, em comparação com muitas linguagens modernas. Os idiomas não são selecionados por seus méritos, mas porque são populares.
Weberc2
Além disso, não consigo pensar em muitas coisas que o Ada faz pior que o C ++, e prefiro usá-lo do que em C ++ (meu código seria mais simples e seguro, de qualquer maneira), e programa em C ++ profissionalmente! E para ensinar aos alunos sobre ponteiros, sempre há Ada, Go ou qualquer um dos vários idiomas sãos. E em relação ao seu último ponto, C ++ é desnecessariamente difícil. Muitos dos problemas que os programadores de C ++ enfrentam não têm nada a ver com programação, mas com a superação de C ++. A programação em qualquer nível é bastante direta em uma linguagem sã.
Weberc2
5

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.

user32288
fonte
Pode não ser o caso do código do objeto, mas a promessa das linguagens C, incluindo C ++, era a de que havia compiladores para praticamente todas as plataformas, para que o mesmo código-fonte pudesse ser usado para compilar aplicativos para uma grande variedade de plataformas.
31411 JohnFx
Isso é de fato verdade. A maioria das plataformas * NIX possui compiladores embutidos e isso tende a ter um efeito psicológico para a maioria das pessoas na forma de "Claro, eu poderia fazer o download desse compilador, mas este veio com o meu sistema operacional, com certeza ele deve ser o melhor".
Você deve tentar outras linguagens além do Java - existem alternativas que compõem o melhor dos dois mundos. O Go, por exemplo, oferece velocidade, portabilidade e simplicidade, além de facilitar a concorrência.
Weberc2
4

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.

Mike
fonte
Isso soa como um argumento para Ada, não C ++ ...
weberc2
3

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.

jojo
fonte
3

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.)

Felix Dombek
fonte
Isso não explica por que Ada, por exemplo, não é ensinado como a primeira língua.
Weberc2
2

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

Codificador
fonte
3
Esta resposta está completamente errada. Em primeiro lugar, porque não há linguagem chamada "C / C ++".
Konrad Rudolph
1
  1. Os professores não gostam de preparar um novo curso e há limites para o quanto você pode oferecer.
  2. Os idiomas vêm e vão, então eles desistiram de tentar permanecer na vanguarda (ver # 1)
  3. É uma universidade e não uma escola técnica. Mais foco em fornecer uma base do que treinamento profissional.
  4. Abrange uma ampla gama de programação: servidor, desktop, incorporado, UNIX, Windows.
  5. Eles o usam como um curso de eliminação de ervas daninhas. Todas as principais áreas de estudo possuem pelo menos uma.
JeffO
fonte
1

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.

cnd
fonte