Em quantas linguagens de programação se espera que um programador seja especialista? [fechadas]


21

A maioria dos programadores é especializada em uma única pilha, deixando outras coisas em prática, ou são especialistas em vários idiomas ao mesmo tempo? Se for mais de um, quantos são padrão?

Por especialista, quero dizer mais do que simplesmente conhecer a sintaxe de uma linguagem - um especialista conhece bibliotecas, ferramentas, ambientes e sintaxe padrão suficientes para poder escrever programas não triviais sem ter que procurar constantemente coisas ou ler livros / tutoriais.


2
Eu não acho que exista uma resposta objetiva (ou mesmo subjetiva) a essa pergunta. Quanto mais você é especialista, melhor é para você - maior a perspectiva que você tem. Você quis dizer "Em quantos paradigmas de linguagem de programação um idealizador deve ser um especialista?"
Talonx

6
Discordo da sua definição de especialista. Para mim, se você precisa ou não procurar funções da biblioteca é muito menos importante do que escrever ou não código idiomático nesse idioma. Se você consegue pensar em um idioma, pelo menos está perto de ser um especialista.
Chinmay Kanchi

1
Como você pensa em um idioma, se precisar procurar a maioria de suas palavras em um dicionário para saber o que elas significam?
blueberryfields

1
@blueberryfields: A fluência em um idioma é muito mais do que apenas vocabulário e, além do básico, o vocabulário é uma pequena parte dele. Não é bom saber que existe uma função se você não puder fazer algo inteligente com esse conhecimento. É muito mais fácil procurar a função do que descobrir como fazer algo inteligente com ela. Eu diria que conhecer os documentos suficientemente bem para saber rapidamente onde procurar uma determinada função, se ela existir, é suficiente conhecimento da biblioteca. Depois disso, você se lembrará precisamente daquelas que usa e vagamente das que não usa.
aaronasterling

2
@blueberryfields: Dependendo do idioma / plataforma , um pouco de conhecimento pode ser uma coisa perigosa . O que quero dizer é: se uma pessoa afirma conhecer muitas funções da biblioteca de cor e não precisa ler a documentação, esperaria que ela também conhecesse todos os valores de retorno, condições de exceção e armadilhas / advertências, à Raymond Chen de cor e poder escrever um livro e dar uma palestra para a Microsoft / Google etc. Além disso, a pessoa acaba cometendo muitos pequenos erros engraçados.
Rdong

Respostas:


33

O principal benefício de conhecer vários idiomas não é escrevê-los diretamente. Sendo todas as outras coisas iguais, prefiro trabalhar com um programador de C # que também conhece C, Python e Lisp (por exemplo) do que com um que só é hackeado em C #. Não é que conhecer mais idiomas seja melhor, é que ser capaz de pensar em problemas em vários níveis e de várias perspectivas é realmente útil.

Uma linguagem de programação que não muda a maneira como você pensa sobre programação não vale a pena conhecer. -Alan Perlis

Não se trata de marcar mais um idioma ou colocá-lo em seu currículo; você só precisa entender bem seus conceitos subjacentes para programar nele para obter todos os benefícios. Você não conseguirá isso com um entendimento básico da sintaxe.

A resposta mais direta é "depende".

Em empresas maiores, é esperado que você se especialize, mas como eu disse acima, acredito que ainda há benefícios em entender coisas além da sua ferramenta favorita.

Em lugares menores, você realmente não pode se safar disso. Se nada mais, você normalmente precisa manter seu aplicativo e compilá-lo, e provavelmente não deve usar os mesmos idiomas para executar os registros / intercalação de dados que faz para realmente criar seu aplicativo. Eu acho que tecnicamente você pode se dar bem com o conhecimento de um único idioma, mas o benefício de ter um idioma com bom desempenho, de tipo forte (ou pelo menos capaz de asserção), provavelmente compilado, faz o trabalho pesado e uma linguagem de script para manutenção / as tarefas de configuração / script parecem muito grandes. Eu não gostaria de passar sem isso, certamente.


3
sim, amplia meu horizonte também - pensar em muitas línguas para resolver um problema
maz3tt

3
+1 a tudo o que Inaimathi disse. Pense em uma linguagem de programação como uma ferramenta. Sim, precisamos conhecer muito bem nossa ferramenta, mas quando você sabe usar um martelo, tudo pode parecer uma unha
Liviu T.

14

Você tem uma pergunta muito interessante:

Eu não acho que qualquer programador deva ser um "especialista" em uma linguagem específica. Acredito que, como programadores, devemos ser especialistas em programação, projetar algoritmos, pensar em etapas claras, mas uma linguagem de programação é algo que você acabou de aprender.

Um programador "bom", por bom, quero dizer, que lida com projetos de desenvolvimento sem deixar de lado o clássico "nunca trabalhei com isso antes", deve aprender um idioma em menos de 5 dias úteis. Você aprende as melhores práticas, ferramentas e bibliotecas principalmente de 2 maneiras, 1: leitura e 2: trabalhando. Ou você balança a cabeça contra o código ou lê vários livros.

Em alguns anos após a premissa de "Bons programadores escrevem apenas código" sem código C # ou código C ++ ou código Java, você perceberá que depois de aprender a desenvolver programas, a linguagem e as tecnologias não são tão importantes. Claro, você saberá como se mover em C # melhor que o PHP, mas se você aprendeu bem, encontrará o caminho do Python, se for necessário.

Espero que minhas idéias como você!


+1 "bons programadores escrevem apenas código ... a linguagem e as tecnologias não são tão importantes" - é verdade, é preciso muita exposição para chegar a essa conclusão.
Orbling

Thks, e você tem razão: 11 anos e contando ... :)
David Conde

3

Um, mas isso não significa que você pode negligenciar os outros. Você precisa saber o suficiente para justificar por que não os está usando ou conhecer suas limitações, para poder pedir ajuda quando apropriado.


3

Eu acho que provavelmente depende da sua personalidade, há pessoas que se divertem cavando nos cantos e recantos de um assunto, e outras que gostam de ter uma visão ampla das coisas. Você provavelmente precisará descobrir que tipo de personalidade você é. Eu não estou colocando um acima do outro, cada um tem seus usos.

Como o primeiro você será o especialista, o guru, o especialista. Como este último, você será de uso mais geral e possível em várias situações, mas possivelmente não se aprofundará ou demorará muito no assunto.



2

1

Aquele na sua frente.


1
+1 O número de idiomas em que você precisa ser especialista é no mínimo o número que você precisa usar. ;-)
Orbling

1

Como Joel disse no podcast da SO, é melhor conhecer muitos idiomas e saber / quando usar o idioma certo para a tarefa. Há coisas que você pode fazer muito mais rápido em um idioma do que em outro. Eu acho que seria bom conhecer uma linguagem imperativa e uma linguagem funcional, por exemplo. Muitas vezes, aprender uma linguagem mais esotérica ou mais difícil treina seu cérebro para ser um programador melhor em geral.


1

Nenhum, pois provavelmente existem alguns programadores que não serão especialistas em nenhum idioma, mas que desfrutam do ambiente diversificado que possuem e usarão vários idiomas, dependendo das circunstâncias, pois alguns podem conhecer algumas tecnologias do lado do servidor, como PHP, ASP.Net em C # .Net ou VB.Net ou Java, algumas linguagens de script do lado do cliente, como JavaScript ou Flash, e isso sem entrar em nenhum hardware usado para colocar aqui as coisas da Web.

Ao mesmo tempo, pode haver alguns programadores que são especialistas em uma dúzia de idiomas ou mais, pois é isso que eles estudam com bastante fidelidade na maioria das vezes, para manter o controle de tudo dentro de cada idioma.


1

Um, mas deve ser capaz de ler programas do mundo real não triviais que são escritos em alguns outros idiomas de tempos em tempos. De alguma forma, aquele em que o programador é um especialista é como a língua materna, eles pensam nele, mas aprender e falar outros idiomas é muito bom, pois mostra que o programador pode apreciar outras maneiras de pensar. Se eles conseguem pensar em mais de um idioma tão fluente quanto a língua materna, isso é incrível.


1

Esta é uma boa pergunta, mas não acho que exista um padrão. Normalmente, pelo que eu vi, as pessoas são especialistas em uma linguagem de alto nível (C ++, Java etc.) em um ambiente (windows / linux, mac, solaris). Eles conhecem aproximadamente outra linguagem de alto nível, mas não a entendem completamente. (por exemplo, C ++, pessoas de Java se conhecem aproximadamente). Por grosso, quero dizer que eles podem comparar o desempenho de uma tarefa no idioma em que são especialistas e no outro idioma. E então eles são moderados em algumas das linguagens de script. (por exemplo, o pessoal do Linux conhece bash, o Windows conhece VBA, o web conhece PHP).
Para mim, o que importa é o conhecimento básico do algoritmo, além da linguagem. Se seu básico for bom, há menos chances de errar em qualquer idioma.
Mas sim, às vezes pode ser útil saber qual idioma poderia ser melhor para qual tarefa. por exemplo, o código a seguir é muito mais rápido em pascal do que em C.

strcat (A, "Olá"); strcat (A, "Palavra"); strcat (A, "eu digo oi!");

Isso ocorre porque Pascal salva o comprimento da string no primeiro local e, portanto, é fácil pular para o último local. Em C, a terminação da string é '\ 0' e, portanto, você precisará atravessar a string inteira para a operação strcat.


0

Depende do ambiente em que você está programando. Em um trabalho anterior, a maior parte do meu trabalho foi em Perl; durante o meu tempo lá, fiquei bastante proficiente nisso. Agora trabalho em um local que possui programas herdados em três idiomas que mal conheço a sintaxe; É esperado que eu os mantenha além do meu trabalho em novos projetos. Agora sou menos mestre em qualquer linguagem, mas acho que senti melhor a programação . Aprendi a pensar de maneira mais abstrata, ver primeiro o quadro geral e depois procurar a sintaxe e as bibliotecas para preencher os detalhes.

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.