Vale a pena aprender idiomas experimentais? [fechadas]

25

Sou um jovem programador que deseja trabalhar em campo algum dia como programador. Eu sei Java, VB.NET e C #. Quero aprender um novo idioma (como programador, sei que é valioso estender o que sei - aprender idiomas que fazem você pensar de maneira diferente). Dei uma olhada on-line para ver quais idiomas eram comuns. Todo mundo conhece C e C ++ (mesmo aqueles trouxas que sabem muito pouco sobre computadores em geral), então pensei, talvez eu devesse pressionar C.

C e C ++ são bons, mas são antigos. Coisas como Haskell e Forth (etc. etc. etc.) são antigas e perderam sua popularidade. Estou com medo de aprender C (ou mesmo C ++) pelo mesmo motivo. O Java também é bastante antigo e lento, porque é executado pela JVM e não é compilado no código nativo.

Sou desenvolvedor de Windows há um bom tempo. Recentemente, comecei a usar Java - mas apenas porque era mais versátil e passível de expansão para outros lugares. O problema é que não se parece com uma linguagem muito utilizável por estes motivos:

  • O objetivo mais usado é para aplicativos da web e aplicativos de celular (especificamente Android)
  • Quanto aos produtos reais criados com ele, as únicas coisas que vêm à mente são o Netbeans, Eclipse (viva para criar e IDE com o idioma para o IDE - é como criar uma página da Web para escrever HTML / CSS / Javascript) e Minecraft o que é divertido, mas lento e bipolar no que diz respeito às especificações do computador. Apoio, suporte.
  • Fora isso, é usado para servidores, mas heck - eu não quero apenas criar / configurar servidores .

As linguagens .NET são boas, no entanto:

  • As pessoas riem se eu mencionar VB.NET ou C # em uma conversa séria.
  • Não é multiplataforma, a menos que você use o MONO (que ainda está em desenvolvimento e tem algumas melhorias a serem feitas).
  • Falta material de baixo nível porque, como Java com a JVM, é executado / gerenciado pelo CLR.

Meu primeiro pensamento foi aprender algo como C e depois usá-lo como trampolim para C ++ (apenas para garantir que eu tivesse uma forte compreensão / base), mas, como eu disse anteriormente, está ficando cada vez mais velho a cada minuto.


O que eu olhei

Fantom parece legal. É como um bom intermediário entre meus dois idiomas favoritos e até me permite publicar entre os dois de forma intercambiável, mas, ao contrário do que eu quero, ele compila para o CLR ou JVM (dependendo do que você o publica) em vez de ser uma compilação completa .

D também parece bom. Parece que uma língua muito útil e demultiplefontes parece realmente ser melhor do que C / C ++. Eu daria certo, mas ainda não tenho certeza do seu sucesso, porque, obviamente, não é muito popular no momento.

Existem outros que pareciam bem legais, focados em outras coisas, como o Opa no desenvolvimento da Web e o Go by GOOGLE.


Minha pergunta

Vale a pena aprender essas línguas "experimentais"? Li outras perguntas que dizem que, se você não está aprendendo constantemente idiomas e aberto a todos os idiomas, não está na mentalidade certa para programação. Entendo isso e ainda posso não estar entendendo direito, mas, na verdade, se um idioma não se tornar popular, devo gastar meu tempo aprendendo outra coisa? Não quero aprender linguagens de programação antigas (ou que em breve serão antigas). Sei que muitas pessoas vêem isso como algo importante *, mas algum de vocês realmente consideraria (supondo que já não soubesse) o FORTRAN? Meu objetivo é permanecer atualizado para garantir que eu seja bem-sucedido no futuro.


aviso Legal

Sim, eu sou um jovem programador, então provavelmente fiz muitas declarações ingênuas na minha pergunta. Sinta-se à vontade para me corrigir em QUALQUER COISA! Tenho que começar a aprender em algum lugar, para ter certeza de que muito do meu conhecimento é superficial o suficiente para causar declarações ou falhas incorretas no meu pensamento. Por favor, deixe algum sentimento que você tenha nos comentários.


Os resultados...

Estou verdadeiramente impressionado com as respostas surpreendentes, a maioria delas tão bem apontando meus mal-entendidos e equívocos. Eu aprendi bastante com isso e estou animado para utilizar tudo o que aprendi! Provavelmente vou começar a aprender Haskell a seguir (o idioma não tão antigo, embora com mais de 20 anos - hahaha ) e depois começarei a examinar algumas outras opções ao meu redor.

obrigado

Freesnöw
fonte
10
"aprender todos os cinco de Python, C / C ++, Java, Perl e LISP" (Eric Raymond, Como se tornar um Hacker -> habilidades de hacker Básicas -> 1. aprender a programar. )
mosquito
7
Observe que simplesmente ser "velho" não significa automaticamente "ruim" por padrão. Algumas das mais fantásticas programações feitas até agora foram feitas no C64 há 30 anos.
8
FWIW quase todas as linguagens têm utilidade - se alguém ri de você por usar quase qualquer linguagem (Java é lento, .Net é para cadelas M $, Haskell é impraticável, C ++ é muito antigo etc.) ri de volta para elas e fala sobre como usar a ferramenta certa para o trabalho;)
Martin
6
De onde você conseguiu "Haskell e ... perderam sua popularidade"?
precisa saber é o seguinte
13
Para um jovem programador, você tem muitas suposições. Livre-se deles, eles estão nublando sua mente.
Matthieu M.

Respostas:

29

A coisa com o aprendizado de idiomas drasticamente diferentes não é sobre o aprendizado de idiomas, é sobre a exposição a diferentes abordagens de problemas. Ferramentas para a caixa de ferramentas, por assim dizer.

Uma coisa a notar é que Haskell não é particularmente velho e é realmente um candidato muito bom para alguém familiarizado apenas com os idiomas comuns. Mesmo uma linguagem muito antiga como o Lisp é muito útil para aprender devido à sua influência nas coisas.

Além disso, Java e .Net não são interpretados e espero que você esteja fazendo algumas suposições incorretas com base nessa identificação incorreta.

Telastyn
fonte
Woops, desculpe pelo problema interpretado. Eu estava misturando duas declarações oximorônicas diferentes lá. Eu o corrigi na própria pergunta.
Freesnöw 01/07/12
19
Bem, Haskell é mais antigo que, por exemplo, Java. Mas, sim, isso não significa que está desatualizado. Na verdade, o sistema de tipos ainda está cerca de duas décadas à frente do Java.
Jörg W Mittag
5
@ JörgWMittag: Eu acho que isso diz mais sobre Java do que sobre Haskell.
Tikhon Jelvis
1
Eu programa apenas em Haskell e Java ... mas, para ser justo, nenhuma linguagem convencional possui um sistema de tipos tão bom quanto Haskell. (E eu tenho que dizer, OP ..._ lots_ mais coisas do que o que você menciona é executado em Java.)
Louis Wasserman
1
Haskell já tem mais de 20 anos e o Haskell padrão tem a mesma idade que o C ++ padrão (ambos são de 1998).
Fredoverflow
23

Fique em forma: pratique regularmente

A prática leva à perfeição.

Quanto mais código você escreve e , mais se aproxima da iluminação / domínio como programador / desenvolvedor / engenheiro de software / guru / ninja / artesão / hacker / palavra-chave de escolha. Não apenas codificando e lendo mais, mas também tentando nossas novas maneiras de escrever código, mais esperançosamente você permanece.

Leitura recomendada:

Aprendendo sobre novos paradigmas e recursos de idioma

Talvez você não consiga traduzir o que você usa no novo Super-Language-X para o seu Enterprise-Language-Y, mas talvez seja capaz de reconhecer quando poderia ter sido um bom ajuste. Talvez você saiba quando integrar uma tecnologia ou pilha diferente em seu projeto para atender a um propósito específico. Ou talvez você saiba como usar os recursos do idioma Y para emular o recurso interessante do idioma X e refatorar seu código para se beneficiar dele (e potencialmente esclarecer outros colegas de trabalho ao longo do caminho).

Por exemplo, você pode ter descoberto princípios interessantes de FP e deseja adaptá-los ao Java, o que não é discutível por design .

Leitura recomendada:

Seja um Jack of All Trades ... Mestre de Alguns?

Você não sabe qual idioma se tornará principal quando estiver nesse estágio "experimental"; portanto, não se preocupe muito em apostar em um deles. As chances são de que outras pessoas façam a mesma aposta e ficarão intrigadas quando as virem aparecer no seu currículo. Adicione uma ferramenta ao seu cinto. No nosso caso, não há muito problema com o quanto isso pesa no final.

Claro, você não pode se tornar um mestre de todos os negócios. Mas você pode ser um mestre de um, e muito bom no resto. Você está aprendendo um ofício, e o nosso é multifacetado. Realizar exercícios regulares, participar de workshops, pegar um livro, escrever um novo projeto para animais de estimação e outras coisas semelhantes são a nossa maneira de acompanhar o ritmo cada vez maior de mudanças em nosso campo.

Leitura recomendada:

Permaneça Adaptável

Se você não aprender a se adaptar, é difícil fazê-lo quando precisar. Ao aprender constantemente coisas novas, você fica cada vez melhor escolhendo coisas novas (desde que não se limite a desafios muito semelhantes).

É como a música "Stay Young" do Oasis diz: Mantenha-se jovem e invencível .

Se você pode se adaptar, você pode sobreviver.

Leitura recomendada:

Mantenha-se visível: entenda o radar da agência de recrutamento

Eles usam palavras-chave e tecnologias como caixas de seleção. Nós os usamos como potes de mel para recrutadores irracionais.

Funciona nos dois sentidos. Contanto que você realmente saiba suas coisas, então ter muitas coisas em seu currículo é bom. Ele mostra sua adaptabilidade e amplitude de conhecimento. Além disso, se você realmente domina alguns deles e é decente em alguns outros, permite modular versões diferentes do seu currículo para diferentes posições e trabalhos.


Outros tópicos úteis da SE

haylem
fonte
Se você estiver lendo Beating the Average, de Paul Graham (ou qualquer outra coisa que ele escreva sobre o assunto de programação), leve-o com um pouco de sal. Muitas das coisas que ele tem a dizer sobre a prática de programação são 50% certas e 50% perigosamente erradas.
Mason Wheeler
@MasonWheeler: É controverso, como muitas coisas que você pode descobrir por "gigantes" conhecidos da indústria, auto-aclamados ou não. Muitas pessoas também desaprovariam os escritos de Zed Shaw, como outros de Norvig. Tudo deve ser abordado com uma mente crítica: eu aceito isso como algo dado e assumo (espero) o mesmo que as pessoas nesse nível. Muitos escritores apresentarão tópicos à luz de uma situação específica, não adequada para todos. De fato, você também vê isso aqui todos os dias em respostas, mas pela força "popular" elas serão reverenciadas como "melhores" respostas. Ainda assim, é informativo.
haylem
8

Para estender a resposta de Telastyn, trata-se de exposição a diferentes paradigmas de programação . Por exemplo, não se trata realmente de aprender programação lógica, mas para:

  • Aprender a aprender (praticar aprender novas habilidades)
  • treinando seu cérebro para pensar de maneiras novas
  • talvez obtendo algum conhecimento menos popular (ou mesmo esotérico) que poucas pessoas têm e podem ser úteis
    • ou pelo menos impressioná-los com seu conhecimento técnico :)
  • e, é claro, fornece informações técnicas valiosas. Por que o C # é mais popular que o D? C ++ pode fazer tudo o que D pode fazer? D pode fazer mais ou é mais como açúcar sintático?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Outra boa razão para aprender o cérebro é entender o quão básica pode ser uma linguagem de programação completa de Turing. Um argumento comum quando os programadores comparam idiomas é "bem, todos são completos para Turing", significando que qualquer coisa que você pode fazer em um idioma pode fazer em outro. Depois de aprender o cérebro, você entenderá o quão difícil pode ser o uso de uma linguagem completa de Turing e como esse argumento não afeta a água.

http://norvig.com/21-days.html (Peter Norvig)

Aprenda pelo menos meia dúzia de linguagens de programação. Inclua uma linguagem que suporte abstrações de classe (como Java ou C ++), uma que suporte abstração funcional (como Lisp ou ML), uma que suporte abstração sintática (como Lisp), uma que suporte especificações declarativas (como modelos Prolog ou C ++), uma que suporta corotinas (como ícone ou esquema) e uma que suporta paralelismo (como sisal).

Astyanax
fonte
7

Meu primeiro pensamento foi aprender algo como C e depois usá-lo como trampolim para C ++ (apenas para garantir que eu tivesse uma forte compreensão / base), mas, como eu disse anteriormente, está ficando cada vez mais velho a cada minuto.

Bem, esta é uma pilha gigante de falácia. As pessoas que conhecem C têm mais dificuldade em aprender C ++, porque praticamente tudo o que pensam saber sobre como usar a linguagem é uma pilha gigante de erros. Não há praticamente nenhum C idiomático que seja remotamente bom em C ++. É melhor você simplesmente aprender C ++ do zero. Pessoas como eu, que voluntariamente dedicam seu tempo para ajudar outras pessoas a aprender C ++, gastam uma proporção enorme tentando ensinar as pessoas a abandonar seus hábitos de C.

Quanto à popularidade, bem, o C ++ está passando por um ressurgimento recentemente. As pessoas notaram que, na verdade, o desempenho faz matéria, muito, e você não pode fugir com o funcionamento de cada componente como um conseguiu um, e Modern C ++ (especialmente com C ++ 11) é absolutamente nada como o lixo C eles pensaram que era , e realmente não é tão ruim assim. Não está realmente ficando mais velho. Está ficando mais novo. O novo padrão é uma grande atualização - e não há idiomas de substituição adequados, atuais ou em andamento, para muitas das áreas em que o C ++ é usado agora. Isso não é menos importante, porque não há linguagens com interoperabilidade decente em C ++ (até mesmo em C ++), dificultando a migração para longe das bases de código C ++ existentes.

As pessoas riem se eu mencionar VB.NET ou C # em uma conversa séria.

Receba novas pessoas. AFAIK, VB.NET realmente não existe por nenhum motivo, exceto para ajudar a migrar para longe do VB6 e não é realmente uma meta digna, por si só, mas o C # é uma linguagem real. É como o Java, exceto que eles adicionaram recursos reais de linguagem e algumas boas bibliotecas. O C # é uma linguagem muito popular e bem suportada, com ferramentas muito boas no VS, que não é tão ruim assim e é uma coisa sólida, se não excepcional, a ser aprendida.

Não é multiplataforma, a menos que você use o MONO (que ainda está em desenvolvimento e tem algumas melhorias a serem feitas).

MONO é bastante estável. Além disso, 90% dos consumidores de desktop (ou 80%?) Executam o Windows agora. Se você desenvolver um aplicativo de desktop, é uma questão aberta se os usuários que não são do Windows valem o tempo de suporte, mesmo se você usar uma linguagem multiplataforma.

Por fim, você pode aprender muito com uma linguagem como C ++ ou Haskell, que se concentra na forte tecnologia de compilador, e não em um tempo de execução maciço.

Só não escolha PHP. A única coisa que você pode aprender com isso é como não criar um idioma.

DeadMG
fonte
1
Uma porcentagem significativa das adições recentes ao padrão C ++ existe apenas - como uma porcentagem significativa de adições em tempos passados ​​- para corrigir falhas existentes em C ++. As referências de valor, por exemplo, adicionam um monte de complexidade extra para solucionar vários problemas de desempenho e complexidade relacionados aos construtores de cópia, que existem apenas porque o C ++ permite que objetos sejam usados ​​como tipos de valor, o que é 100% completamente errado e existe uma boa razão pela qual nenhuma outra linguagem OO faz isso.
Mason Wheeler
@MasonWheeler Pelo menos C #, D e Eiffel permitem objetos como tipos de valor. E o RAII é muito bom para a programação de sistemas!
Fredoverflow
@MasonWheeler: as referências de valor também permitem o encaminhamento perfeito e os tipos somente de movimentação. O desempenho foi apenas uma das três principais causas de sua introdução. Objetos de valor digitado estão bem. Além disso, é claro, você pode escrever seus próprios objetos do tipo referência em C ++ tudo o que quiser.
58580 DeadMG #
Além disso, é engraçado como, mesmo com todos esses problemas de desempenho, o C ++ ainda era a linguagem mais rápida.
DeadMG
1
@FredOverflow: em C #, todos os objetos são tipos de referência. Estruturas podem ser tipos de valor, mas objetos não, e isso é por uma boa razão: se os objetos são usados ​​como tipos de valor, você lança uma enorme chave de macaco na herança e no polimorfismo e acaba tendo que usar todo tipo de hackers feios como construtores de cópia, em que atribuir (ou passar) um objeto descendente a uma variável do tipo pai não atribui esse objeto. Estraga completamente a substituição de Liskov, que é o objetivo de usar o OOP em primeiro lugar. É uma ideia horrível e fico feliz por nunca ter entendido.
Mason Wheeler
6

Alguns comentários sobre o que você disse ...

1) Todo programador deve aprender C, mesmo que seja antigo. É uma ótima linguagem para se aproximar da máquina. Dos conselhos de Joel aos estudantes de CS ....

Aprenda C antes de se formar

Parte dois: C. Observe que eu não disse C ++. Embora C esteja se tornando cada vez mais raro, ainda é a língua franca dos programadores que trabalham. É a linguagem que eles usam para se comunicar, e, mais importante, é muito mais próximo da máquina do que as linguagens "modernas" que você aprenderá na faculdade como ML, Java, Python, qualquer que seja o lixo moderno que eles ensinam a essas pessoas. dias. Você precisa passar pelo menos um semestre se aproximando da máquina ou nunca poderá criar código eficiente em idiomas de nível superior. Você nunca poderá trabalhar em compiladores e sistemas operacionais, que são alguns dos melhores trabalhos de programação existentes. Você nunca será confiável para criar arquiteturas para projetos de grande escala. Não me importo com o quanto você sabe sobre continuações, fechamentos e tratamento de exceções: se você não pode explicar o porquê while (* s ++ = * t ++); copia uma sequência, ou se isso não é a coisa mais natural do mundo para você, bem, você está programando com base em superstições, no que me diz respeito: um médico que não conhece anatomia básica, prescrições baseadas no que o bebê de vendas farmacêuticas disse que funcionaria.

2) Os idiomas podem ser bons para aprender mentalidades, mesmo que não sejam comumente usados. Aprenda o Scheme (ou LISP) para entender a programação funcional, mesmo que não esteja na moda. De outro post neste fórum .

Parabéns, parece (para mim) que você pode estar freqüentando uma das poucas escolas que realmente tentam ensinar ciência da computação. O esquema de aprendizagem como primeira língua é (IMO) uma coisa muito boa. Não, não é tão comercial quanto muitos outros, mas é uma linguagem excelente para aprender a verdadeira essência da ciência da computação. O que você precisa saber é o seguinte:

C, C ++ e Java são subprodutos da indústria da ciência da computação. As raízes inteiras do esquema estão na ciência da computação. As línguas em uso comercial têm tanto a ver com ciência da computação quanto o McDonalds tem a ver com culinária. - JasonTrue 20 / out / 11 às 5:30

Esses caras estão corretos; você está confundindo programação de computadores com ciência da computação - como Dijkstra disse, isso é como confundir construção de telescópio com astronomia. O esquema é sobre a melhor linguagem que existe para aprender conceitos básicos em ciência da computação. Se você espera que se formar em ciência da computação seja sobre como escrever aplicativos de linha de negócios em Java, você pode estar inscrito no programa errado. - Eric Lippert Out 20 '11 às 7:40

Quase todos os desenvolvedores que conheço aprenderam C / C ++ sozinhos. Você não precisa de universidade para isso. # Mouviciel 20/10/11 às 7:48

Pela mesma razão que os cursos de zoologia ensinam biologia evolutiva, anatomia e comportamento animal, em vez de estragar uma barraca de elefantes - jk. 20/10 '11 às 7:58

Agora, apesar de atacar sua premissa original, acho que você deve ser elogiado por sua curiosidade. Muitas pessoas se tornam obsoletas devido à falta de curiosidade. Aproveitar o seu desenvolvimento pessoal é um grande sinal de que você se desenvolverá bem. As pessoas que aprendem mais são as que desejam perguntar como as coisas funcionam.

MathAttack
fonte
1
"Quase todos os desenvolvedores que conheço aprenderam C / C ++ sozinhos. Você não precisa de universidade para isso.": O mesmo aqui. Na minha universidade, eles nos deram tarefas em C, mas não nos deram um curso em C. Eles só esperavam que nós, estudantes de Ciência da Computação, comprássemos um livro e o aprendêssemos.
Giorgio
1
Ter que aprender C é uma grande tortura. Minhas condolências.
DeadMG
2
Na verdade, aprender C foi a parte mais fácil, a verdadeira tortura começou quando tivemos que mudar para C ++. ;-)
Giorgio
3

QUALQUER idioma que você aprender vai mudar nos próximos 5 anos. Não se trata de aprender um idioma que você acha que pode demorar um pouco, mas sim de aprender a aprender. Quanto maior a exposição ao aprendizado do idioma, e o processo de aprendizado desse idioma o ajudará tremendamente a longo prazo!

A última empresa em que trabalhei usou sua própria linguagem interna. Era semelhante ao visual basic, mas não era o mesmo. Só pelo fato de conhecer outros idiomas, pude entender o idioma deles muito mais rapidamente do que os outros funcionários.

Eu aprendi japonês depois de aprender C ++, BASIC, Pascal e posso dizer que aprender uma língua de computador e uma língua estrangeira tem as mesmas habilidades. Essas habilidades podem ser perdidas ou afiadas. Se você possui a unidade, continue e aprenda novos idiomas!

(por exemplo, quanto ao aprendizado de FORTRAN ou assembly, acho que é valioso pelo menos um semestre dos idiomas mais antigos. Isso faz você pensar em coisas que você não reconhece nos idiomas mais novos, coisas como sinalizadores, alocação de memória e outras coisas. .)

BillyNair
fonte
3

É melhor você aprender o maior número possível de linguagens "antigas", se quiser ser um programador. Comece com Lisp, conheça Forth, preste muita atenção à evolução de todas as linguagens Wirth, evolução de Fortran, ascensão e queda de Prolog, entre furtivamente no ecossistema Ada secreto, pegue sua arma secreta aprendendo Occam. Perseguir o "mainstream" é a coisa mais estúpida que um aspirante a programador poderia fazer.

SK-logic
fonte
+1: eu concordo totalmente. Muitas idéias interessantes que eu tive ao experimentar linguagens menos populares, como Haskell, Scheme, Scala, SML etc.
Giorgio
2

Eu concordo com você na parte da exposição das coisas. Embora eu conheça Java, C, C ++, Javascript, Python, Ruby e um pouco de .NET (principalmente porque odeio qualquer coisa M $ <- opinião pessoal), devo dizer que adoro programar em D.

D tem um conjunto de recursos muito bom (a maioria deles é implementada em C ++ / Java (linguagens que possuem abstrações de classe) etc.), mas a única coisa que eu mais amo são os genéricos e delegados (facilita a implementação de retornos de chamada). Além disso, você tem uma sintaxe muito mais simples de lidar em comparação com o C ++. D tem um coletor de lixo realmente eficiente, embora você possa optar por lidar com a memória (especialmente ao fazer interface com os módulos C / C ++). Embora D não tenha muitos módulos contribuídos pelo usuário, isso não deve ser uma barreira para entrada. Você pode interagir facilmente com as bibliotecas C / C ++ existentes (que são bastante flexíveis), tornando-o redundante por necessidade de módulos.

D tem sua própria biblioteca padrão (Phobos), que serve a necessidade de todos os problemas de programação comuns. Há também uma biblioteca alternativa ( Tango-D2 ) que você pode usar com o Phobos ou por si só. Se você é um desenvolvedor web e precisa escrever um servidor baseado em eventos, o Tango possui uma boa abstração de Seletor (tango.io.Selector apenas para select (), poll (), epoll ()). Eu achei que ele tinha um desempenho ainda melhor que o libev.

Shripad Krishna
fonte
Não que eu desaprovasse o aprendizado de D, mas para alguém que já conhece linguagens de tipo estatístico, OO e processual e de nível não baixo, certamente vale mais a pena aprender uma linguagem que enfatize um paradigma diferente ou esteja um pouco mais próxima do metal. Também não há muito experimental sobre D.
precisa saber é o seguinte
1
Acordado. Eu pensei que a questão dos OPs estava centrada em torno de "experimental" ser algo ainda não estável / apoiar o suporte corporativo / um que não é mainstream. E mesmo se você optar pela implementação "experimental" de diferentes paradigmas, acho que existem poucos paradigmas por aí. E a maioria das linguagens implementa uma ou outra. Chegamos então a qual idioma é melhor / mais rápido / mais fácil de usar / melhor para o trabalho em questão. Esses fatores diferem de programador para programador.
Shripad Krishna
1

Os idiomas são desenvolvidos para resolver problemas em algum tipo de domínio (pelo menos no início). Se você não enfrentou problemas com os quais suas ferramentas não podem resolver de uma maneira que você se sinta confortável, estará martelando uma prancha de madeira esperando se tornar um carpinteiro. Tente entender o tipo de problemas que os idiomas estão tentando resolver. A única diferença entre uma linguagem "experimental" e uma nova linguagem / cara legal é o dinheiro que a apoia, por exemplo, Go from google e Dart. Se eles foram desenvolvidos no meu quintal, provavelmente morrerão em algum fórum e é isso. Eles só sobrevivem se são bons em explicar os problemas que estão tentando resolver. Ou o contrário, como Perl e C ++, que são bons em absorver maneiras de resolver problemas para continuarem vivos. E eu sugiro aprender Lua, é ' Como uma linguagem criada para incorporar dentro de programas, é muito rápida e leve, que oferece ferramentas para solucionar grandes ou pequenos problemas que algumas linguagens como Java não conseguem resolver de maneira direta. Tomando o exemplo do japonês, se você apenas aprender a sintaxe, a gramática e os alfabetos, ignorando a cultura, nunca entenderá por que é tão complicado e, eventualmente, esquecerá tudo. Não está resolvendo nada para você.

alfa64
fonte
1

Aprender vários idiomas diferentes fornecerá uma visão mais ampla da programação. Ênfase em "diferente" - por exemplo, aprender C # e Java não lhe ensinará muito mais do que aprender apenas um deles. Mas aprender C # ou Java e uma linguagem funcional (por exemplo) serão.

Dito isto, como um jovem programador, acho que você obteria muito mais valor ao conhecer um idioma de maneira realmente sólida, antes de começar a olhar para diferentes tipos de idioma. Não está totalmente claro em sua pergunta quão bem você conhece Java, VB.NET e C #. Você tem certeza de que, se você atacou um projeto usando um dos idiomas acima, seu gargalo seria o projeto em si, não seu conhecimento do idioma? Se você passasse mais tempo se perguntando "como faço isso no idioma ?" do que você pensaria no problema real, provavelmente precisará de mais foco em um dos idiomas atuais.

E, pessoalmente, acho que você deve adotar uma abordagem pragmática para decidir qual é. Java é usado para aplicativos Android? Ótimo, se você está interessado em criar aplicativos para Android. Irrelevante se não estiver. C # não é uma boa opção para desenvolvimento que não seja o Windows? Más notícias se você estiver interessado em desenvolver para Linux. Irrelevante se você não é. E assim por diante.

E as linguagens "experimentais" que você mencionou? Pragmaticamente, eles serão pouco adequados quando se trata de trabalhar com outras pessoas - você provavelmente encontrará milhares de pessoas que conhecem C # ou Java para todos que conhecem a Fantom. Para projetos pessoais, isso não é necessariamente um problema. Se seu objetivo é aumentar sua empregabilidade, é.

Carson63000
fonte
1

Você poderia dizer que aprender a programar em um idioma como Postscript ou APL é sem dúvida um desperdício de tempo, principalmente porque as chances de você usar esse conhecimento se aproximam de zero. Mas da mesma maneira, você poderia argumentar que Ruby e Python são uma perda de tempo, se você nunca pretende usá-los para nada.

Mas poucas pessoas diriam que aprender Lisp é um desperdício, mesmo que você tenha a probabilidade de escrever Lisp como Postscript; mas aprender Lisp ensina você a pensar de maneira diferente sobre o seu problema (espero), e é por isso que a maioria dos programadores lhe diz que vale a pena.

Ainda assim, nunca evito aprender um novo idioma, já que o investimento necessário em tempo é de apenas uma ou quatro horas. E usos para uma linguagem como Lua aparecem nos lugares mais incomuns , e você nunca os reconheceria se não tivesse passado algumas horas analisando os exemplos.

Quando vir um novo idioma, leia um pouco sobre o que é útil. Se é um nicho que os seus idiomas favoritos não cobrem muito bem, reserve um dia para aprender o básico. Certamente é um tempo melhor gasto do que assistir a temporada 17 de The Bachelor, ou então você pode perder tempo. Dessa forma, se você tiver um uso para ele, ele poderá aparecer e você saberá onde descobrir mais.

Eu pessoalmente recomendo procurar no Go. Eu usei para escrever programas de página única com desempenho melhor do que o que levaria três dias e 13 bibliotecas de terceiros em C ou C ++, e nem seria possível em Python, C #, Ruby etc. por pessoas que realmente sabem realmente suas coisas.

tylerl
fonte
-1

Escolha aqueles com tipos diferentes. Agrupe-os por recursos e escolha um em cada grupo. Se você quiser fazer isso profissionalmente, escolha uma que seja usada (então C ++ sobre D para linguagem compilada estaticamente tipada com metaprogramação de modelos).

Pobre D, é uma linguagem boa, mas não possui o aplicativo matador que o C ++ possuía: compatibilidade com versões anteriores quase completa com a linguagem nº 1 da época (C para o caso de C ++). É bom, mas esse pequeno fato importante provavelmente relegará D a mostrar status nos livros de história.

anon
fonte
-2

C pode ser antigo, mas ainda é muito poderoso e interessante, aprender C ajudará muito em seu futuro de "programação".

O Java não é lento, quem lhe disse que não sabe do que está falando, o Java aprenderá muito sobre OOP

Por que você não começa com Python e depois escolhe C ou outra coisa,

just_a_dude
fonte
C também é a língua franca dos microcontroladores (quando você tem apenas 4K, não pode pagar um tempo de execução de 8K). Somente nesse espaço, C tem outra boa década de uso ativo pela frente.
TMN
O Java costumava ser lento - eu lembro que era menos que um demônio da velocidade nos primeiros dois anos. Algumas pessoas pensam que o desempenho nunca foi melhorado.
MetalMikester