ti-enxame.com

O que devo fazer para ser independente da linguagem?

Até agora eu trabalho com asp.net e C #. Fiz um trabalho decente em Java também. Estou planejando minha carreira de tal maneira que um dia seja independente da linguagem algum dia. Quais são as coisas que preciso aprender?

Primeiro seria OOP paradigmas enquanto fala sobre o design da classe. Existem outros?

52
Gopi

Para ser independente de idioma, você precisa ter experiência em todos os estilos e tipos de idiomas comuns.

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

Além disso:

  • Uma linguagem funcional (as funções são essenciais, evitar efeitos colaterais e de estado são os objetivos. Por exemplo - Haskell/OCaml/LISP/F #)
  • Uma linguagem orientada a objetos (arquitetura em que os objetos encapsulam dados relacionados e os métodos que atuam sobre eles). Por exemplo - Java/C #)

Alguns estilos de digitação:

  • Uma linguagem digitada estaticamente (os tipos de dados são definidos e verificados em tempo de compilação. Por exemplo - C #)
  • Uma linguagem digitada dinamicamente (os tipos de dados são verificados em tempo de execução. Por exemplo - Python/Javascript)
    A experiência de digitação forte vs. fraca também é útil.

Alguns estilos de tempo de execução diferentes:

Material de nível inferior:

  • Algo razoavelmente baixo nível (por exemplo - C)
  • Algum dialeto de Assembly (Por exemplo - NASM)

Além disso, eu diria que você precisa ter experiência com programação simultânea e algo orientado a eventos . 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. Você também pode querer aprender sobre programação incorporada ou hardware dedicado (como consoles de jogos), e o desenvolvimento móvel está se tornando um domínio cada vez mais relevante.

Outros também mencionaram que vale a pena obter alguma experiência nas abordagens Programação genérica e Meta programação .

Ao aprender esses paradigmas, evite apenas aprender a sintaxe e escrever no seu estilo antigo. Eu já vi muitos desenvolvedores de C # escreverem JavaScript como se fossem estaticamente digitados. Não faça isso, tente aprender os paradigmas da linguagem e os adote.

Se você tiver feito tudo isso, as diferenças entre os idiomas se tornarão amplamente sintáticas, portanto, a troca se tornará um exercício bastante simples de aprender alguma nova sintaxe.

Não se esqueça, porém, de que a programação moderna quase sempre depende de uma estrutura, portanto, familiarizar-se com as estruturas comuns e populares de cada idioma que você aprende também é fundamental. Saber C # é irrelevante sem .net.

67
Simon P Stevens

Eu não acho que você pode se tornar verdadeiramente independente de linguagem. Acho que "penso" no meu idioma atual (no momento, C #).

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

4
ChrisF

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

Não tenho certeza se conhecer todos os paradigmas que existem ou conhecer uma variedade de idiomas, abrangendo vários paradigmas e tipos de idiomas, faz com que você seja "independente de idioma".

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

Eu acho que uma pessoa independente de linguagem em relação a linguagens de programação deve ser alguém que não sabe programar em nenhum idioma ou que não se importa com qual idioma ele/ela é solicitado a programar.

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

Se é isso que você quer dizer com "independente de idioma", quase todo programador experiente pode programar em qualquer idioma com o qual é obrigado a trabalhar, com acesso à documentação do idioma.

Talvez você queira ser "politeísta da linguagem".

Eu próprio sou competente em vários paradigmas de linguagem, mas eu preferiria OOP quando aplicável. Então acho que não sou agnóstico).

Você dificilmente encontrará alguém que não prefira um certo paradigma ou idioma, com a liberdade de escolher.

3
Tulains Córdova

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

  • Recursos J2EE como Messaging and Persistence e os vários servidores
  • kits de ferramentas orientados a jsp e Apache
  • ant, maven e outros sistemas de construção (os próprios idiomas).
  • Todo o mundo Groovy/Grails
  • todas as APIs comuns do Apache
  • sistemas de teste (Mocking, JUnit)
  • Construtores de GUI como 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á problemas para ganhar profundidade para trabalhar de maneira eficaz em qualquer um deles.

Não estou dizendo que aprender um novo idioma SEMPRE é um problema, você deve estar ativamente fazendo isso! Tento escolher meu próximo emprego com base no que posso aprender (o que ainda não fiz), mas não costumo escolher um idioma aleatório e o aprendo mais - a última vez que tentei isso foi com Scala e eu deixei um pouco humilhado ...

0
Bill K