O que devo fazer para ser agnóstico de idioma?

52

Até agora eu trabalho com asp.net e C #. Eu fiz um trabalho decente em Java também. Estou planejando minha carreira de tal forma que eu seja um dia agnóstico em relação à linguagem. Quais são as coisas que preciso aprender?

Primeiro, os paradigmas da OOP falariam sobre o design da classe. Existem outros?

    
por Gopi 07.09.2010 / 11:54
fonte

4 respostas

67

Para agnóstico de idioma, você precisa ter experiência em todos os estilos e tipos comuns de idiomas.

  • Uma linguagem imperativa (Você diz o que fazer, passo a passo. Ex. - C)
  • Uma linguagem declarativa (Você diz qual é o seu objetivo, descobre o que fazer. Por exemplo: SQL / HTML / Prolog)

Além disso:

  • Uma linguagem funcional (As funções são fundamentais, evitando o estado e os efeitos colaterais são os objetivos. Ex. - Haskell / OCaml / Lisp / F #)
  • Uma linguagem orientada a objetos (Arquitetura na qual os objetos encapsulam dados relacionados e os métodos que atuam neles). Por exemplo - Java / C #)

Alguns estilos de digitação:

Alguns estilos de tempo de execução diferentes:

Material de nível inferior:

  • Algo relativamente baixo (eg - C)
  • Algum dialeto da montagem (por exemplo, NASM)

Além disso, eu diria que você precisa de experiência com alguma programação concorrente e algo event driven . Você provavelmente também deve ter certeza de que sabe algo sobre os vários domínios, como programação na Web (cliente e servidor), desenvolvimento de rich client / desktop, jogos. Talvez você também queira aprender sobre programação embarcada ou hardware dedicado (como consoles de jogos), e o desenvolvimento para dispositivos móveis está se tornando um domínio cada vez mais relevante.

Outros também mencionaram que vale a pena ter alguma experiência em Programação genérica e Meta programação se aproxima.

Quando você aprender esses paradigmas, evite apenas aprender a sintaxe e escrever em seu estilo antigo. Eu vi muitos desenvolvedores de C # escrever JavaScript como se ele fosse estaticamente digitado. Não faça isso, tente aprender os paradigmas da linguagem e abrace-os.

Se você fez tudo isso, as diferenças entre os idiomas se tornarão amplamente sintáticas, então a mudança se tornará um exercício relativamente simples de aprender alguma nova sintaxe.

Não esqueça que a programação moderna é quase sempre dependente de um framework, então se familiarizar com os frameworks comuns e populares para cada linguagem que você aprende também é crítico. Conhecer C # é irrelevante sem .net.

    
por 07.09.2010 / 13:19
fonte
4

Eu não acho que você possa se tornar verdadeiramente agnóstico em termos de linguagem. Eu acho que "penso" na minha linguagem atual (no momento C #).

No entanto, tendo dito isso, acho que você pode separar o design do código tentando pensar em pseudocódigo em vez de em um idioma específico e, na verdade, anotá-lo nesse formato. Isso pode ajudá-lo a se concentrar nas decisões de design e arquitetura, em vez da implementação em seu idioma atual. A desvantagem disso - como Simon aponta - é que a linguagem e a estrutura que você usa inevitavelmente influenciarão o design. Assim, à medida que seu design se desenvolve, ele se tornará cada vez mais vinculado à linguagem & framework.

    
por 07.09.2010 / 13:19
fonte
3

Ao ler sua pergunta e algumas das respostas, pode-se ter a impressão de que você é igual a "agnosticismo de linguagem" com "conhecer todos os paradigmas da Terra".

Não sei se conhecer todos os paradigmas existentes ou conhecer uma variedade de idiomas, abrangendo vários paradigmas e tipos de idiomas, faz com que você seja "agnóstico em termos de linguagem".

É como dizer que ter praticado todas as religiões torna-se religiosamente agnóstico.

Eu acho que uma pessoa agnóstica quanto às linguagens de programação deve ser alguém que não sabe programar em qualquer idioma ou não se importa com a linguagem com a qual ele / ela é solicitado a programar.

Dito isso, algumas pessoas dizem que um verdadeiro programador pode programar em qualquer idioma o acesso à documentação desse idioma.

Se é isso que você quer dizer com "agnóstico de idioma", então praticamente qualquer programador experiente pode programar em qualquer idioma com o qual ele / ela seja forçado a trabalhar, tendo acesso à documentação da linguagem.

Talvez você queira ser "politeísta de idiomas".

Eu mesmo sou competente em vários paradigmas de linguagem, mas prefiro a OOP quando é aplicada. Então eu acho que não sou agnóstico.

Você dificilmente encontrará alguém que não prefira um determinado paradigma ou linguagem, dada a liberdade de escolha.

    
por 20.11.2012 / 20:03
fonte
0

Não são apenas as linguagens, o Java em si tem tantos modos diferentes que você pode passar anos aprendendo tudo. Você poderia aprender:

  • Recursos do J2EE, como Messaging and Persistence e os vários servidores
  • jsp e kits de ferramentas orientados pelo Apache
  • ant, maven e outros sistemas de construção (os próprios idiomas).
  • Todo o mundo do Groovy / Grails
  • todas as APIs do apache commons
  • testando sistemas (Mocking, JUnit)
  • Construtores de GUI como o Swing, GWT ...

E uma centena de coisas que estou perdendo - APENAS dentro de java.

Se você passar anos cobrindo a amplitude (aprendendo todos os idiomas), terá dificuldade em obter a profundidade para trabalhar de forma eficaz em qualquer um deles.

Eu não estou dizendo que aprender uma nova língua é um problema, você deve estar ativamente fazendo isso! Eu tento escolher meu próximo trabalho com base no que eu posso aprender (o que eu ainda não fiz), mas eu não costumo escolher uma língua aleatória e aprender mais - Da última vez que eu tentei isso foi com Scala e eu deixou um pouco humilhado ...

    
por 20.11.2012 / 18:21
fonte