paulo1205
(usa Ubuntu)
Enviado em 30/07/2018 - 04:47h
hrcerq escreveu:
Porém, se tivesse que indicar por qual começar sem conhecimento de algum critério específico (isto é, no chute) eu indicaria C++. Afinal, C++ é uma linguagem que induz o programador a um conhecimento mais amplo sobre os programas que cria. Afinal, ele deverá trabalhar com ponteiros e gerenciamento de memória, o que em Java ele não é obrigado a fazer diretamente (afinal a JVM já faz isso para ele).
Eu também gosto muito de C++ (diria até que ela é minha linguagem favorita, se isso me fosse perguntado), e indico fortemente que todo mundo procure conhecê-la, sem preconceitos e “pés-atrás”.
Mas eu não sei se é a forma mais fácil de começar. Assim como nossos filhos (tal como nós, antes deles) não aprendem a falar com uma abordagem
bottom-up, mas sim pela imitação daquilo que veem seus pais e irmãos falando em níveis variados (e geralmente mais altos), eu não estou certo de que requerer conhecimento de ponteiros, e tipos de dados e operações nativas do hardware desde o início é uma necessariamente coisa boa.
Mas também não sei se seria necessariamente ruim. Não sou teórico de linguagens, quer naturais, quer computacionais; somente um usuário relativamente curioso de ambas, e que começou a programar usando BASIC, que é, e já era nos anos de 1980, considerado de mais alto nível que C ou Assembly (e também, já nos anos de 1980, tida como linguagem que induzia à produção de código confuso).
C também é uma boa opção, claro, mas C++, sendo um superconjunto de C, facilita o estudo posterior da linguagem C, além de já oferecer recursos de programação genérica e orientação a objetos. Inclusive, isto também facilita o posterior aprendizado de Java (afinal aprender Java sem antes conhecer a orientação a objeto é nadar contra a correnteza).
Essa última parte é um pouco estranha. Por que motivo aprender Java sem antes conhecer orientação a objetos é pior do que aprender C++ sem antes conhecer orientação a objetos? Só porque em C++ você não é obrigado a encaixar todo e qualquer programa no modelo de OO, enquanto em Java o é? Se for por isso, alguém poderia argumentar — como eu já vi várias vezes, e possivelmente você também — que essa “leniência” de C++ seria uma fraqueza, que acabaria atrasando a plena adoção de OO.
(Seria um mau argumento, na minha palpiteira opinião. Não apenas porque eu não acho que tudo deva ser feito via OO, mas também porque acho que a forma de Java de “forçar a usar OO” é tosca — além de contraproducente.)
No meu entender, C é como latim: deu origem a outras linguagens e portanto conhecê-lo facilita o entendimento de outras linguagens.
Isso dá pano pra manga... Sob muitos aspectos, os sucessores do Latim são mais simples do que a língua mãe (perda de declinações, modos e formas verbais, redução da quantidade de gêneros, mais analíticas do que sintéticas etc.). As sucessoras de C tendem a ser mais ricas do que a língua original.
Seria um bom debate, mas para o qual não estou devidamente preparado.
Java está longe de ser minha linguagem favorita, mas devo admitir que é a que tem maior demanda no mercado de trabalho dentre essas 3, principalmente no desenvolvimento Web.
Já trabalhei com suporte de infraestrutura a ambiente JavaEE. Como aquilo dá problema, que até os consultores da Oracle pastavam para entender e resolver (muitas vezes resolvendo — ou contornando — sem entender, mesmo)! Nessas horas a gente vê como essa conversa fiada de
garbage collection é falsa.
Três vivas para o C++! Se o programador for bom, o programa funciona melhor do que funcionaria sem Java. Se for ruim, ferra o programador, não o pobre analista de infraestrutura (que sempre tem de provar que o que dá pau é a aplicação, não o ambiente).