Com quantas linguagens de programação você trabalha diariamente e como gerencia efetivamente tarefas específicas da linguagem [fechado]

22

Editar:

Como você gerencia tarefas individuais ao trabalhar em vários idiomas

No manuseio diário das tarefas, com quantas linguagens de programação diferentes você trabalha?

  • Você faz uma mudança mental ao trabalhar em cada idioma?
  • Você as prioriza e mantém cada tarefa por idioma separadamente.
  • Você codifica em estágios com base no progresso de cada tarefa alternando perfeitamente entre idiomas / IDE / Ambiente
  • Você aplica o mesmo estilo / convenções de codificação em todos os idiomas (não na sintaxe)?

Relacionado:

É normal que o programador trabalhe em vários projetos simultaneamente

Aditya P
fonte
1
Fazer a mudança mental é bem fácil. O principal lapso mental que geralmente tenho é quando tento comparar Strings com .equalsem javascript. Pelo menos eu sempre erro dessa maneira ao invés de usar ==em java.
WuHoUnited
Eu escrevo 3/4 idiomas em um determinado dia para o mesmo projeto. Como gerencio? Conheça os idiomas. Mantenha as referências à mão. Siga as convenções de idiomas.
Rig
Pagar o custo da alternância entre JavaScript e alguma linguagem de programação do servidor não vale a pena hoje em dia, quando o Node.js tem o maior ecossistema de bibliotecas do mundo e quando você pode escrever código síncrono usando async / waitit . O paradigma "Um idioma em todos os lugares" também é usado pelo Meteor (mais de 35.000 estrelas do GitHub).
Dan Dascalescu

Respostas:

25

Hoje eu escrevi Java, Python, C ++ e SQL (se conta). E estou no trabalho há menos de 2 horas.

Se você fizer isso regularmente, a mudança mental se tornará insignificante. Não tem nada a ver com multitarefa. É como andar um pouco, dirigir um carro, dirigir uma bicicleta e depois nadar. Não tem problema, porque são coisas sequenciais.

Independentemente disso, o objetivo é concluir uma tarefa antes de passar para a próxima. Costumo definir tarefas em termos de uma funcionalidade concreta, correção ou algo assim. Frequentemente, essa tarefa é realizada com apenas um idioma, mas pode exigir vários deles. Por exemplo, ao trabalhar com JNI , você normalmente fará alterações nos lados Java e nativo em paralelo.

Algumas respostas:

Você codifica em estágios com base no progresso de cada tarefa, alternando perfeitamente entre idiomas / IDE / Ambiente

É importante poder alternar perfeitamente entre IDEs, editores e ambientes. Normalmente eu mantenho todos abertos o tempo todo.

Você aplica o mesmo estilo / convenções de codificação em todos os idiomas (sem sintaxe)?

Se for uma interface sobre a qual dois idiomas estão falando, então sim - nomes de variáveis ​​e outros devem ser semelhantes. Caso contrário, tento aplicar o estilo de codificação típico desse idioma.

Joonas Pulakka
fonte
8
sons como raça incrível
setzamora
Normalmente, tento concluir uma tarefa antes de passar para a próxima, mas uma única tarefa pode exigir o uso de mais de um idioma. Usar um IDE poliglota como o NetBeans e / ou manter todos os editores e ambientes necessários abertos o tempo todo é uma obrigação. Então você não precisa se preocupar muito com a linguagem (que é apenas um "detalhe de implementação") e pode se concentrar na tarefa (que faz parte do que você realmente deveria realizar - um programa de trabalho).
Joonas Pulakka #
Seria bom se você pudesse adicionar o item acima à sua resposta e adicionar um pouco sobre como você lida com os estilos de programação de codificação / convenções.
Aditya P
@AdityaGameProgrammer: Adicionados alguns pontos.
Joonas Pulakka #
18

Há um padrão se formando aqui:

  • Front-end: o que for executado em um navegador (javascript, html e css)
  • Lógica de negócios: qualquer uma das inúmeras linguagens de uso geral
  • Back-end: SQL
  • Build Script: Alguma linguagem de script

Então, para mim, é: javascript, HTML e CSS, C #, Transact-SQL e Windows Powershell.


Você aplica o mesmo estilo / convenções de codificação em todos os idiomas (sem sintaxe)?

Não, faço questão de programar de acordo com a convenção da linguagem. Um exemplo simples:

   // C#
   int MyFunction() 
   {
       return 0;
   }

   // Javascript
   function myFunction() {
      return 0;
   }

O emprego de convenções de codificação visualmente diferentes me ajuda a mudar mentalmente os idiomas. Por outro lado, se meu código tivesse a mesma aparência em cada idioma, cometerei erros sintáticos ao esquecer em qual idioma estou codificando.

Andrew Shepherd
fonte
1
+1 Boa resposta. É ótimo que você consiga manter as convenções e o estilo de codificação específicos do idioma.
Aditya P
Bem ... em alguns casos, o Javascript força você a trabalhar dessa maneira devido ao desagradável ponto e vírgula implícita. Mas por outro lado eu não vejo nenhuma razão para fazer isso ...
Billy ONeal
Além do estilo de codificação, outra maneira de facilitar a mudança mental entre os idiomas é configurar esquemas de cores diferentes para cada idioma nos seus editores / IDE.
Spoike
5

Conforme indicado pela SK-logic, a mudança mental não deve ser um problema se você usar idiomas específicos de domínio bem escolhidos. Mas muitas vezes você não pode escolher o idioma, portanto, às vezes, leva um momento para mudar. Na minha experiência, a dificuldade está mais na mudança de sintaxe do que na mudança do estilo de programação. A única mudança irritante que eu sempre experimentei é a mudança de estilo de comentário : se eu abrir um arquivo para alterar rapidamente uma linha de código, geralmente será:

#  what
// the
;  f***
%  is
-- the one-line comment character or sequence?
Jakob
fonte
4

No meu último trabalho: Java, C ++, C #, JavaScript e VBScript.

Mas, felizmente, todos os itens acima estavam em contextos muito diferentes (e em alguns produtos) - então, quando você conhecia cada base de código suficientemente bem, a mudança mental para diferentes contextos era realmente muito fácil e lógica.

Na verdade, o que mais me incomodou foi a interrupção por problemas de suporte ao cliente. Mudar internamente para uma tarefa em outro idioma nunca foi um problema em si.

Bobby Tables
fonte
2

Eu trabalho com 2 idiomas: c # e python.

Eu uso os dois no mesmo projeto, mas obviamente para tarefas diferentes.

Quando estou trabalhando em uma tarefa, trabalho nessa tarefa até que esteja em um estado completo ou até que não consiga mais me concentrar nela. Isso significa que, se eu tiver que alternar entre idiomas, há pouca ou nenhuma dissonância cognitiva, pois já vou pensar em um desses idiomas quando terminar a última tarefa.

É certo que farei uma pequena pausa quando sair de uma tarefa, o que provavelmente ajuda muito.

Matt Ellen
fonte
2

O mínimo possível. Geralmente envolve 1. Python, mais 2. modelagem de HTML, 3. HTML + CSS e às vezes 4. Javascript. Mudar de Python para JS definitivamente requer uma mudança mental, também porque eu preciso usar ferramentas diferentes.

Eu adiciono HTML + CSS como separado do modelo de HTML, mesmo que os idiomas não sejam propriamente ditos (ou podem depender da sua religião), porque também requer uma mudança mental e o uso de outras ferramentas, embora não seja tão ruim quanto mudar para Javascript. Brincar com HTML + CSS da perspectiva do design, para fazer a página parecer com a maquete requer, é uma mentalidade diferente da criação de modelos HTML. Mas é mais ortogonal para Python do que Javascript, o que significa que preciso mudar minha mentalidade de programação para outra. :)

Lennart Regebro
fonte
2

Diariamente eu uso:

  1. HTML / CSS
  2. Javascript / JQuery
  3. VBScript / JScript
  4. PHP
  5. SQL
  6. C # / Asp.Net

Eu também uso Python, Java e XML (isso conta?) Ocasionalmente. Meu trabalho envolve editar vários sites, que podem ser construídos em qualquer idioma da Web (que até já teve um Perl) e usar paradigmas / modelos totalmente diferentes (procedural, MVC, OOP etc.).

Para responder à pergunta - eu uso principalmente o Notepad ++ como meu IDE para os 5 primeiros listados, depois o Visual Studio para Asp.Net.

Pode ser difícil mudar rapidamente entre cada idioma - lembrando se você precisa ou não de ponto e vírgula no final das linhas ou se os loops têm chaves ou não. Mudar de VBScript para JScript é o pior para isso - os arquivos terminam em .asp e parecem bastante semelhantes à primeira vista, por isso leva um tempo para descobrir por que estou recebendo erros.

whostolemyhat
fonte
Ei, você deve trabalhar aqui também! (j / k) Estamos reescrevendo a base de código ASP e .NET em PHP, expondo-nos à mesma seleção de idiomas.
greyfade
2

No momento, estou escrevendo Ruby, PHP, Java, C e JavaScript e vou escrever por um período mínimo de 1 hora em cada uma delas a cada dia. O principal problema é realmente uma questão de encontrar o tempo, pois todos eles são para projetos não relacionados.

Mudança mental

Meu estilo de trabalho é tal que gosto de trabalhar por longos períodos de tempo. Infelizmente, isso significa que, se eu tiver apenas uma coisa, quando encontro um bloqueio mental com um pedaço de código, levarei um longo tempo para superá-lo. Também não acho que fazer uma pausa. Ao ter outros projetos e, em particular, outros idiomas, para alternar para sempre que eu ficar travado, quando voltar ao idioma original, eu imediatamente tenho uma solução.

Portanto, sim, há uma mudança mental e acho que me torna muito mais produtivo.

Priorizando tarefas

Eu uso um gerenciador de tarefas (gTasks para Android) e tenho uma lista de tarefas separada para cada projeto. Se um projeto requer vários idiomas, não os separo. Isso geralmente ocorre porque eles estarão fortemente relacionados de alguma forma. Por exemplo, JavaScript e Ruby para fazer algumas coisas de AJAX. Se os idiomas são tecnicamente para o mesmo projeto, mas o projeto é tão grande que eles são essencialmente independentes, provavelmente os contarei como projetos separados.

Geralmente, minha prioridade é "a lista que tiver mais tarefas", mas sempre mudarei se ficar presa a um problema.

Convenções de codificação

É um pouco de uma mistura:

  • Se o projeto for desenvolvido com outras pessoas, então obviamente obedecerei às convenções que foram decididas para esse projeto.
  • Se o projeto for pessoal, eu gostaria que meu código parecesse consistente com o estilo dominante na comunidade / biblioteca padrão para um determinado idioma. Acho difícil ler o código Java se todas as funções dos usuários estiverem em snake_case, por exemplo. Da mesma forma, os métodos camelCase no Ruby parecem estranhos e deslocados.
  • Para convenções que não são óbvias pelo simples uso de um idioma, como o recuo, tenderei a adotar meus próprios padrões e usá-los em todos os idiomas que uso. No caso de recuo, eu sempre uso 2 espaços. Para o estilo entre chaves, eu sempre uso o que a Wikipedia está atualmente decidindo chamar de Estilo de legibilidade do controle compacto .

Além: O maior desafio para mim é realmente alternar entre linguagens de estilo. É muito difícil competir ao codificar SASS ao lado de Ruby e depois ter que voltar ao CSS para todo o resto. Em menor grau, tenho o mesmo problema com HAML / HTML e JSON / XML.

Rupert Madden-Abbott
fonte
2

Eu escrevo aplicativos para o lado ISP, há também uma cultura de "faça o que você se sentir confortável", geralmente escrita por muitos engenheiros de rede que se interessam por programação. Eu tenho que lidar semanalmente, com programas bem escritos, para realmente horríveis. O que frequentemente encontro e trabalharei ...

  • Perl , geralmente scripts rápidos e rápidos, ou geralmente usados ​​por pessoas que apenas conhecem (ou gostam) de Perl. Mais do legado está escrito em Perl que eu acho. Algumas das piores coisas são escritas em Perl, não porque a linguagem é ruim, mas porque é facilmente mal utilizada pelos programadores iniciantes. Eu ainda uso isso para certos tipos de programas únicos. Eu raramente o uso para algo maior.
  • PHP , muito disso, muitas vezes uma linguagem de iniciação para os dabblers. Alguns programas muito bem escritos, alguns schlock. Para certos tipos de aplicativos da web, escolherei o PHP porque posso obtê-lo mais rapidamente.
  • Script de shell , use-o principalmente para executar outros programas ou tarefas como ler logs.
  • Espere , ainda encontre isso (e fanáticos que insistem que é nirvana para executar comandos em dispositivos de rede). Eu trabalho nisso quando preciso, mas um filhote de gatinho é morto em algum lugar do mundo quando encontro um daqueles programas de milhares de linhas sem uma única função à vista, apenas uma fazenda de massas interativa.
  • C , Raramente usado devido a problemas de portabilidade, mas vou usá-lo para executar tarefas específicas.
  • Java , eu uso isso frequentemente devido ao amplo suporte de biblioteca e fácil implantação. Temos uma rede muito heterogênea e uma equipe de TI com uma agenda diferente da minha. Com o Java, posso incluir bibliotecas e não me preocupar com o fato de que a TI precise "atualizar" algo no sistema necessário para implantar o programa. Na maioria das vezes, essa é a minha linguagem de programação preferida.

Também existem outros idiomas (.net, VB, Phyton, Rails, etc) por aí na empresa, mas ainda não precisei trabalhar neles ...

Editar, para a edição ...

Você precisa mudar mentalmente quando trabalha entre idiomas. Na maioria das vezes o que vou perder de vista é a sintaxe. Eu mantenho uma coleção de livros de referência prontos. Descobrirei que leva cerca de meia hora para voltar à mentalidade do outro idioma. Quanto mais obtusa a sintaxe do idioma, maior a mudança. Acho que mudar de Java para Perl provavelmente leva mais tempo se eu não tocar em Perl há algum tempo. Quanto mais você faz isso, mais fácil fica.

Bill
fonte
1

Costumo usar seis ou mais idiomas em um projeto. A maioria deles geralmente é específica apenas para esse projeto.

A mudança mental só é necessária se você estiver usando um idioma que não é apropriado para uma tarefa. Caso contrário, é natural usar o melhor ajuste. Diferentes conjuntos de idiomas são usados ​​para diferentes estágios de um projeto.

SK-logic
fonte
Você é gerente de projeto ou codifica neles?
Aditya P
@AdityaGameProgrammer, eu codifico neles.
SK-logic
Se importa em explicar um voto negativo?
SK-logic
1

Uso C (incorporado), C ++ (desktop), Python, Matlab e VHDL (uma espécie de linguagem de programação de hardware) com frequência, geralmente todos no mesmo dia. No meu ambiente, esse tipo de destreza linguística é essencial em minha opinião.

Geralmente, não consigo obter tudo o que preciso em um projeto específico, feito em um idioma de forma eficiente. Por exemplo, C e VHDL incorporados são de nível bastante baixo, então eu frequentemente uso o Python para analisar seus resultados (ou até gerar código).

Alternar rapidamente entre eles não é um problema depois de um tempo, é como mudar de um martelo para uma chave de fenda - a ferramenta certa para o trabalho.

Martin Thompson
fonte
1

Realmente depende de como o trabalho é definido ... Uso C # para desenvolver aplicativos Microsoft Surface todos os dias. Java Eu também uso todos os dias para meus aplicativos Android. Mas tento me educar e comecei a usar R, Ruby e Objective-C. Às vezes, também preciso de um pouco de SQL e, se você incluir linguagens de script e outras linguagens na sua pergunta, também JavaScipt, SPARQL e BeanShell.

Você aplica o mesmo estilo / convenções de codificação em todos os idiomas (sem sintaxe)?

Eu tento seguir as convenções de codificação de cada linguagem, mas especialmente entre Java e C #, tenho algumas dificuldades por causa das chaves e do método de letras maiúsculas em C #:

public void test() {
   ...
}

vs.

public void Test()
{
   ...
}
RoflcoptrException
fonte
Qualquer estilo de chaveta é aceitável em C #. Não gaste muito tempo sobrecarregando seu cérebro com isso. :-)
Cody Gray
0

Eu construo aplicativos da web. Então atualmente é:

  • XHTML
  • Javascript
  • C # como parte do
  • ASP.Net Framework (esse tipo de também é uma linguagem)
  • T-SQL para comunicação com o banco de dados
  • Inglês para se comunicar com humanos.

Editores: Texto sublime (fora de opção), Visual Studio 2010 (nenhuma outra opção viável no ASP.Net)

5arx
fonte
0

No meu trabalho, uso Java, C, Python, Django e pequenos pedaços de PHP. Também trabalhei em um projeto muito pequeno em C ++ da Microsoft.

Eu não uso todos eles todos os dias, mas alguns dias eu os uso sem problemas. Em um dia típico, eu uso apenas um ou dois. A programação que faço em casa geralmente envolve trabalhar com tecnologias diferentes das que uso no trabalho como Qt ou Ruby on Rails.

jonescb
fonte