É aconselhável ir e voltar entre duas linguagens de programação? [fechadas]


28

Escrevo bastante PHP há quase dois anos. Agora estou desenvolvendo .NET (principalmente c #). No entanto, às vezes eu volto e faço php.

Minha principal pergunta é: é aconselhável continuar fazendo isso ou devo continuar o desenvolvimento em c #? Isso me prejudicaria a longo prazo (lembre-se de que meu principal objetivo não é ser o melhor de todos os negócios) ou é uma boa prática fazer isso?


30
melhor ser um pau para toda obra do que um pônei de um truque
scrwtp

27
Certamente o prejudicará se você se limitar a apenas dois idiomas. Obtenha mais ferramentas diferentes na sua caixa de ferramentas.
SK-logic

4
Você faz essa pergunta como se estivesse totalmente livre para escolher entre C # e PHP - esse é realmente o caso?
Doc Brown

10
Conhecer todos os detalhes sujos de um idioma é sem dúvida muito útil. Porém, quando você trabalha com vários idiomas, em algum momento no caminho se vê criando partes do programa de uma certa maneira, independentemente do idioma em que está trabalhando atualmente. Este é um tipo de nirvana para programadores, em que o idioma se torna secundário e a aplicação é o que importa. Esse é um ótimo lugar para se estar, porque significa que você tem potencial como programador mesmo no futuro, quando as pessoas estão trabalhando em alguma nova linguagem Z ++ sofisticada.

2
Só dois? Muitos programadores trabalham regularmente em vários idiomas. Conhecer várias fornece um conjunto maior de ferramentas para você usar.
Caleb

Respostas:


75

Usar dois idiomas ao mesmo tempo não é nada. Não é incomum os programadores usarem vários idiomas diferentes todos os dias. Tarefas diferentes e tecnologias diferentes requerem idiomas diferentes.

Só hoje, eu já usei quatro ou cinco línguas diferentes, e isso é interessante porque eu haven'd feito qualquer programação até agora. Tudo o que fiz foi trabalhar em uma apresentação.

Como um bom programador é essencialmente necessário que você sabe o caminho de volta em várias línguas, ea única maneira de alcançar (e, em seguida, preservando) fluência razoável é por usando esses idiomas.


4
Não sei como alguém poderia ser um programador eficaz sem usar pelo menos três idiomas regularmente.
Brian Knoblauch

11
@Brian - essas três línguas são sua principal linguagem falada / escrita, sua principal linguagem de programação e SQL e / ou HTML?
Keiths

2
@KeithS Somente se você estiver criando páginas super simples no lado do cliente e nunca tocar em registros XML no lado do servidor. CSS e Javascript contam como seus próprios idiomas, assim como XPath, XSLT e XQuery.
Tacroy

2
Qualquer coisa que contenha "A maioria das pessoas" ou "a maioria dos desenvolvedores" deve ser seguida com uma citação das sortes. Caso contrário, é subjetivo. Quase todos os desenvolvedores que conheci (incluindo eu) consideram o SQL uma linguagem de programação, e a completude de Turing não é um fator necessário para uma linguagem de programação (pense em DSLs, que geralmente são projetadas para NÃO ficarem completas.) HTML e XML são obviamente não linguagens de programação (embora você possa ter linguagens específicas de domínio baseadas em XML). Regexs não são linguagens de programação, mas autômatos programáveis ​​/ configuráveis.
Luis.espinal

2
Isso não é uma fonte. Esse é um link para uma discussão (as discussões não são, por si só, fontes) e é focado apenas em CSS e HTML. Ele não trata do teste "completo" (sugiro que você leia o trabalho de Martin Fowler sobre o assunto das DSLs), nem se o SQL é uma linguagem de programação (que é, aqui está uma fonte real: en.wikipedia.org/ wiki / SQL ou este site amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Ou você não está lendo o meu post totalmente, ou você acha que um link para Stackexchange é uma fonte (que não é.)
luis.espinal

37

é uma boa prática estar fazendo?

É uma excelente prática. Além disso, eu recomendaria expandir sua lista de idiomas regularmente, experimentando um novo.

Idiomas e tecnologias entram e saem de graça muito rapidamente, em questão de alguns anos. Por exemplo, o Objetivo C decolou com uma força incrível depois de estar quase morto por duas décadas e meia - uma eternidade para os padrões dessa indústria!

Não importa muito que você esteja planejando "não ser o melhor de todos os negócios": se você planeja permanecer no setor por tempo suficiente, é muito seguro assumir que você precisaria mudar sua pilha de tecnologia pelo menos uma vez ao longo de sua carreira. Agora, o uso de vários idiomas mantém você preparado para ativar um aviso razoavelmente curto.


14

Isso me prejudicaria a longo prazo (lembre-se de que meu principal objetivo não é ser o melhor de todos os negócios) ou é uma boa prática fazer isso?

Conhecer dois ou mais idiomas nunca faria mal a você. Conhecer seus idiomas muito superficialmente (sem entender o funcionamento interno) pode prejudicá-lo.

Minha preferência pessoal sempre foi dominar primeiro uma linguagem de programação orientada a objetos . Isso forneceria um aprendizado aprofundado de todos os conceitos de programação, além de facilitar a aprendizagem do próximo, quando houver necessidade.

é uma boa prática estar fazendo?

Absolutamente sim!

Eu sugeriria definitivamente aprender mais de um e praticá-los criando alguns aplicativos. Enquanto isso, você também pode planejar aprender algumas linguagens de script (jQuery, KnockoutJs etc.) e bibliotecas, se estiver fazendo ou planejando fazer desenvolvimento na Web.


11
Não acho que, aprender OOP ensinará muitos conceitos de programação funcional; por um lado, as regras de escopo do JavaScripts são muito diferentes das outras linguagens populares de OOP, como C #, etc. existem muitos outros conceitos por aí.
Phant0m

Concordo plenamente. No entanto, jQuery e KnockoutJs NÃO são linguagens de script. E eu não recomendaria "aprender jQuery" sem conhecimentos básicos de JavaScript.
Bruno Schäpper

você não pode aprender jQuery sem aprender JavaScript no processo porque o jQuery não é uma linguagem, é uma biblioteca escrita em uma linguagem.
ILikeTacos

5

Não deve prejudicá-lo a longo prazo, ser proficiente em vários idiomas o torna um desenvolvedor completo. Usar "a ferramenta certa para fazer o trabalho certo" é o objetivo final e ser versado em diferentes idiomas ajuda a alcançar isso, pois você sabe o que mais existe e pode tomar uma decisão bem informada sobre qual plataforma / estrutura / idioma usar para faça algo.


Obrigado pela resposta, mas eu queria saber se a mudança frequente não irá prejudicar o meu processo de aprendizagem ou prolongá-lo ou isso depende apenas da capacidade da pessoa?
Lamin Sanneh

@LaminSanneh Aprender outro idioma não o torna pior no primeiro. Não é um RPG e você não tem um número definido de pontos de "habilidade de programação" que podem ser atribuídos a cada idioma. Na pior das hipóteses, leva tempo que você teria dedicado a outro idioma. Mas os idiomas são apenas uma maneira de expressar suas idéias, e o aprendizado de novos idiomas oferece novas e novas perspectivas e idéias que você pode aplicar aos que você já conhece. Claro, você não conhecerá a sintaxe de todos os idiomas imediatamente, mas quem se importa com isso? É uma rápida pesquisa no Google
Jay Jay

5

Ao longo de sua carreira, você terá que aprender novos idiomas e novas tecnologias; a indústria simplesmente exige isso. Na minha primeira tarefa profissional, tive que entregar o código escrito em Ada, C e Fortran, juntamente com alguns scripts SQL e shell. Eu tive que mudar de C ++ para Java e voltar nos últimos dois anos. Eu escrevi scripts shell em csh, bash e perl.

Dedicar tempo para aprender idiomas diferentes, especialmente se eles estiverem em domínios diferentes (OO, funcional, lógico etc.), ajudarão você de várias maneiras. Isso manterá seu cérebro afiado. Isso o ajudará a separar conceitos da implementação (por exemplo, hashes e mapas não são apenas tipos de dados em um idioma específico). Isso lhe dará uma idéia melhor de quais ferramentas são apropriadas para um determinado problema (por exemplo, eu não criaria um site em C nem escreveria um driver de dispositivo em Haskell). Pode ser mais fácil encontrar um emprego ("Ei, ele já conhece o Intercal 1 , não precisamos treiná-lo!"). Isso lhe dará uma idéia de quais desafios os designers de linguagem enfrentam. Isso pode inspirar você a criar sua própria linguagem de programação.

No mínimo, evitará que você fique entediado.


1. Piada. Não tente aprender Intercal.


4

As pessoas que se aposentaram este ano começaram suas carreiras antes que o C fosse criado. É seguro dizer que você pode mudar as linguagens de programação uma ou duas vezes na sua carreira. Você não quer trabalhar para empregadores que não entendem isso.

Quando você é novo, a alternância de contexto entre dois idiomas é muito mais difícil, portanto você será mais produtivo se trabalhar pelo menos 4-8 horas em um idioma antes de alternar. Mais tarde, você poderá alternar instantaneamente sem perda de produtividade. Em outras palavras, o uso de dois idiomas acabará se tornando uma força, em vez de torná-lo mais lento.


2

Há uma vantagem e uma desvantagem nisso.

Aqui está a vantagem ...

Como outros mencionaram, ser capaz de aprender novos e trabalhar com muitas linguagens e ferramentas de programação é quase essencial para ter uma longa carreira em programação. As coisas mudam ao longo dos anos, as ferramentas / idiomas vêm e vão. Claro, existem algumas pessoas que se contentam em programar no mesmo COBOL de mainframe usado nos anos 80, mas essa é uma situação relativamente rara. A maioria dos programadores acaba trocando ferramentas / idiomas várias vezes ao longo de sua carreira. Às vezes, você pode ser contratado porque conhece alguma tecnologia mais antiga ou conhece todos os idiomas com os quais a empresa está trabalhando.

A desvantagem é ...

Alguns empregadores o verão como um "valete de todos os negócios, mestre de nenhum" e rejeitarão sua inscrição sem lhe dar uma chance. Eles estão procurando por um especialista restrito em uma área específica, e não apenas um bom programador, bem-arredondado. Às vezes, você pode ser cortado pelo RH porque não possui "5 anos de experiência contínua em [X]". Você pode evitar isso adaptando seu currículo de acordo com o trabalho, mas isso pode não ajudá-lo em uma entrevista técnica.

Para mim, a vantagem é muito melhor, mas você precisa estar ciente de que uma minoria de organizações vê isso como negativo.


+1, além disso, tenho certeza de que há uma correlação entre essa minoria de organizações e uma programação ruim e ineficácia.
precisa saber é o seguinte

2
Esse negativo é cancelado pelos empregadores que pensam exatamente o oposto. Eu tenho uma palavra a dizer nas decisões de contratação onde trabalho, e seria muito difícil convencer a aprovação de alguém que tivesse apenas uma linguagem de programação. Talvez para uma posição júnior, mas certamente não para um desenvolvedor sênior.
Jon Hanna

@ JonHanna - O principal problema é que a equipe de desenvolvimento pode nem sequer entrevistar o desenvolvedor em potencial, uma vez que eles são rastreados pelo RH, às vezes por um programa automatizado. É claro que esse é um problema mais comum em organizações maiores. É importante garantir que seu pessoal de RH não esteja selecionando os melhores candidatos com base em critérios arbitrários.
precisa saber é o seguinte

+1 por apontar os contras . De onde eu sou, o número de empresas que mantêm essa visão de "pau para toda obra, mestre de ninguém" não é tão pequeno.
Lsoliveira

Sim, mas podemos mudar isso para qualquer boa qualidade; sempre pode haver um idiota no RH que acha que é uma qualidade ruim. No final das contas, se o RH de uma organização for idiota, eles estarão fazendo contratações ruins e, embora sejam contratados, pode ser melhor do que a linha do desemprego, você procurará um novo emprego imediatamente e encontrará trabalho em outro lugar .
Jon Hanna

2

Quando você estava desenvolvendo PHP, você escreveu javascript ou SQL? No seu desenvolvimento em C #, você ainda pode estar usando os dois. Não é tão fácil de cortar e secar como usar uma linguagem de programação.

Se você está feliz fazendo isso, não se preocupe. Se você não quer fazer as duas coisas (ou qualquer), então você tem um problema.


2

Aprender uma nova linguagem de programação ensinará coisas sobre programação que você pode aplicar às linguagens que você já conhece. Definitivamente, você deve considerar pelo menos brincar com alguns outros idiomas, mesmo que não os use profissionalmente, em vez de apenas ter poucos.

Idealmente, uma abordagem muito diferente das que você já conhece.


2

Não, não há nada errado em aprender vários idiomas e usá-los com bastante frequência. No meu dia-a-dia, posso encontrar Ruby, PHP, JavaScript, CoffeeScript, Python e, ocasionalmente, C. Conheço todas essas linguagens razoavelmente bem, e ir de uma para outra apenas liga um interruptor no meu cérebro. Claro que sinto falta de recursos de alguns idiomas quando vou para outro, mas você superará isso.

Eu tento sempre ter um idioma que estou aprendendo em profundidade e depois outro como um "pronto para o futuro". Dessa forma, você sempre tem um objetivo educacional claro e depois algo no horizonte. No momento, Ruby é minha língua principal e estou experimentando o Go. Provavelmente nunca vou conseguir um emprego como desenvolvedor Go, mas aprender um novo idioma tornou um desenvolvedor melhor.

Quando entrevisto um desenvolvedor, sempre gosto de ver alguns idiomas diferentes em seu currículo. Se um desenvolvedor tiver "C / C ++" ou "PHP e Javascript" em seu currículo, parecerá muito menos interessante do que alguém com uma compreensão firme de 4 ou 5 idiomas. Certifique-se de se sentir confortável em qualquer idioma listado, qualquer coisa no seu currículo é um jogo justo na entrevista!

Resumindo: o uso de vários idiomas regularmente é um sinal de um bom desenvolvedor que se preocupa com seu ofício. Continue codificando!


Eu diria que, se o desenvolvedor disser "C / C ++" em um currículo, gostaria que esse fosse o único idioma existente. Mas com outras linguagens infalíveis, quanto mais, melhor.
Coder

2

Ao analisar currículos, geralmente procuramos alguém que conheça vários idiomas. Além disso, à medida que a experiência de uma pessoa aumenta, o número de idiomas usados ​​também deve aumentar.

Em nosso ambiente, muitas vezes precisamos enfrentar problemas novos e interessantes e estamos procurando pessoas que estejam dispostas a entrar e resolver esses problemas, independentemente de precisarem aprender um novo idioma ou não. O problema pode estar no código em execução em uma área de trabalho do Windows, em um servidor Windows, em um servidor Linux ou em um navegador.

Conhecer vários idiomas é um sinal de alguém com uma boa atitude em relação ao seu ofício. Eles querem sempre aprender coisas novas, assim o fazem. A falta de conhecimento de vários idiomas é um sinal para mim de que uma pessoa apenas faz o mínimo necessário e não está interessada em aprender.


2

Sempre foi o caso das pessoas programarem usando mais de um idioma. Quando as pessoas usavam o Assembly, elas tinham que usar uma nova linguagem Assembly toda vez que mudavam de arquitetura.

Quando as pessoas fazem COBOL ou Fortran, elas também fazem RPG e / ou JCL.

No Unix, as pessoas trabalhavam com scripts C, sed, awk, shell e praticamente tudo na pia da cozinha do Unix (quase todas as ferramentas de linha de comando do Unix são próprias, com DSL especial).

No DOS, as pessoas estariam programando no Turbo Pascal ou C, além de scripts em lote. Mais tarde, quando o Windows chegou, era o VB ou algo parecido com o PowerBuilder, juntamente com o SQL e, possivelmente, scripts de instalação em lote.

Hoje em dia, é de fato que as pessoas "trabalham" com mais de dois idiomas em um determinado dia (e por "trabalho" quero dizer codificação cotidiana real ou conhecimento de trabalho). Java ou C # ou VB misturado com JavaScript e SQL, no mínimo. Em seguida, outros idiomas entram em cena para scripts de lote / trabalho e similares. Então, para cada idioma, você tem uma estrutura que implementa uma DSL interna, uma mini-linguagem por si só.

Portanto, não é apenas benéfico trabalhar com mais de um idioma, mas é necessário. Não há como construir um sistema moderno e complexo com uma única linguagem (e por "construir" não quero apenas codificar algumas porcarias que são compiladas, mas construir algo com um design decente.)

Heck, eu vou sair do galho e dizer que espero que as crianças na faculdade sejam proficientes em dois ou mais idiomas, se levarem a sério essa profissão.

Então, com relação à sua pergunta:

Minha principal pergunta é: é prudente continuar fazendo isso ou devo continuar o desenvolvimento em c #? Isso me prejudicaria a longo prazo (lembre-se de que meu principal objetivo não é ser o melhor de todos os negócios) ou é uma boa prática fazer isso?

Portanto, resposta curta, não, usar ou alternar entre idiomas não fornecerá as informações necessárias. Conhecer mais de um idioma não fará de você um homem de negócios, e não há como um desenvolvedor se tornar um especialista por não conseguir usar mais de um idioma.


1

Quanto mais você comparar com referência ao (s) idioma (s) principal (s), melhor entenderá as vantagens e desvantagens do design, tornando-o particularmente forte ou fraco em certas coisas e aproveite / compense essas coisas. Domine pelo menos um, mas não se preocupe em ser um valete de muitos outros. Isso só parece bom.

É melhor perguntar como é o currículo com apenas um idioma listado pelos desenvolvedores "seniores". A resposta para essa pergunta é: "Não estou muito interessado no que eles fazem da vida".


0

Dois idiomas podem ajudá-lo ou não - isso depende. Não vai prejudicá-lo, isso é certo. Muitos desenvolvedores tendem a pensar que usar algo diferente da 'linguagem principal' é pura perda de tempo, mas eu discordo totalmente. Aprender outro idioma (e usá-lo) é um benefício puro: oferece uma perspectiva diferente de como resolver problemas. Pode acontecer que você comece a usar um dos idiomas para tarefas específicas o tempo todo (como aconteceu comigo depois que tive a chance de aprender e usar o Python).


0

Nesta situação, você não está perguntando sobre a mudança de JAVA para C # e vice-versa o tempo todo. Em vez disso, você usa C # e PHP, o que realmente não é grande coisa.

Suponha que você queira fazer algumas coisas baseadas na WEB em que esteja usando uma pilha WAMP (Windows / Apache / MySQL / PHP) e C #. Você usa o C # para escrever alguns serviços baseados em SOAP e, em seguida, usa o PHP para consumi-los.

Isso parece totalmente aceitável para mim.

Enfim, é bom conhecer mais de um idioma. Quanto mais você souber, melhor. Bibliotecas PHP / C # / Java / Python / javascript [JQuery por exemplo]. Seja útil para o maior número possível de pessoas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.