CodeGym /Blogue Java /Random-PT /Escolhendo uma linguagem de programação
John Squirrels
Nível 41
San Francisco

Escolhendo uma linguagem de programação

Publicado no grupo Random-PT
Conheci a programação pela primeira vez na escola, em aulas de ciência da computação. Estes consistiam em algumas explicações tediosas de como os sistemas numéricos n-ários funcionam. E, claro, havia um teste que exigia que você escrevesse seu próprio site. Na altura, pareceu-me que não podia haver ocupação mais aborrecida. Como eu estava errado! Infelizmente, um programa de ciência da computação do ensino médio não fornece uma imagem completa do trabalho de TI e não explica como escolher uma linguagem de programação. Antes de perguntar "Qual linguagem de programação devo aprender?", um iniciante deve se familiarizar com quais linguagens existem e como elas diferem umas das outras. Escolhendo uma linguagem de programação - 1

Limiar de entrada: alto, baixo, médio

Os programadores costumam falar sobre o "limiar de entrada" - um conceito que reflete a quantidade de esforço necessária para qualquer "desenvolvedor júnior" dominar uma linguagem de programação suficientemente bem para escrever seu primeiro programa sério e encontrar um emprego. O "limiar de entrada" consiste no conhecimento de:
  • peculiaridades e nuances da sintaxe da linguagem
  • bibliotecas
  • algoritmos e estruturas de dados.
Trabalhar no Excel poderia até ser chamado de uma espécie de programação. A propósito, este familiar programa de escritório não é tão simples quanto parece. Para um usuário, o limite de entrada pode ser a capacidade de criar uma tabela. Por outro, pode ser o conhecimento de fórmulas e macros complexas. Em ambos os casos, esse limite é pequeno. Em seguida, vêm as quase-linguagens, como a programação 1C . Depois, há as linguagens mais simples de aprender, por exemplo, PHP . Além disso, temos linguagens com sintaxe nativa (geralmente derivada do inglês) que não exigem que você lide com o gerenciamento de memória, por exemplo, Java e JS . Depois, há linguagens que requerem um manuseio extremamente cuidadoso de memória, estruturas de dados e algoritmos, por exemplo, C eC++ . Jovens linguagens multiparadigmáticas, por exemplo, Scala , talvez tenham o limite de entrada mais alto, porque dominá-las exige que você mergulhe fundo em muitos paradigmas de programação. Mas antes de escolher um idioma, você deve decidir o que deseja fazer a seguir: desenvolver para a Web, empresa, desktop ou dispositivos móveis .

Web ou não Web?

Rede

Os programadores da Web podem ser divididos em desenvolvedores front-end e back-end . Você deve entender o que esses termos significam. Os desenvolvedores frontend estão envolvidos no lado do cliente, ou seja, o que o usuário vê. O "back-end" trata da manipulação e armazenamento de dados — a parte de um serviço que é executado em um servidor. Para um desenvolvedor Frontend decidir qual linguagem de programação aprender, JavaScript e frameworks JavaScript (Angular JS, React e outros) são essenciais. Os dialetos JS, como CoffeeScript e TypeScript, não são tão populares quanto seus pais, mas também podem ser úteis. Existe também um Flash AS, e costumava haver JScript e VBScript, mas só os dinossauros se lembram disso =) Além de tudo isso, você precisa entender HTMLe CSS . Escolhendo uma linguagem de programação - 2Muitos iniciantes pensam que JavaScript e Java são quase a mesma coisa. Não confunda essas linguagens. JS era anteriormente chamado de "LiveScript" e recebeu seu nome atual apenas por causa da popularidade da palavra "Java". Para um desenvolvedor web back-end , PHP, Python, Ruby, Perl e Java são adequados. Aqui quero focar no PHP (falaremos sobre as outras linguagens mais tarde). O PHP é uma das linguagens mais fáceis de aprender, tendo um baixo limite de entrada. De acordo com uma pesquisa com desenvolvedores da Web conhecidos, Ruby está ganhando popularidade lenta mas seguramente - é amado por sua concisão e beleza.

Não web (corporativo, desktop, móvel)

Eu intencionalmente combinei as seguintes linguagens de programação nesta categoria com um nome estranho. Você pode usar a maioria deles para escrever aplicativos corporativos, de desktop e até móveis. O Python é uma linguagem de programação orientada a objetos fácil de entender e tornou-se incrivelmente popular recentemente devido ao crescimento do aprendizado de máquina (ML): os desenvolvedores de ML fazem uso extensivo do Python. MLé uma área relativamente nova em TI e, embora já tenhamos visto que ela deu frutos, eu não entraria com pressa nessa indústria ao escolher uma linguagem de programação. Primeiro, você precisará de um EXCELENTE entendimento de matemática. Em segundo lugar, a onda de popularidade pode passar da mesma forma que passou para "blockchain" ou "nanotecnologia". Dito isso, você deve se lembrar que o Python é usado no desenvolvimento da web. C++: uma linguagem clássica onde tudo é construído no operador "mais-mais". Essa linguagem é a ancestral de todas as linguagens populares de programação orientada a objetos, e um iniciante definitivamente deve prestar atenção nela. Muitos aplicativos populares foram escritos usando-o. Mas a excelente chance de "dar um tiro no pé" e a sintaxe de difícil compreensão reduzem a zero a probabilidade de um iniciante dominar esse mastodonte da programação. KotlinGenericName, que é como Java para hipsters, é uma mistura maluca de OOP e programação funcional. Tornou-se popular recentemente devido ao fato de que um desenvolvedor experiente que muda de Java para Kotlin pode melhorar seriamente sua produtividade. Um desenvolvedor experiente rapidamente se sentirá confortável com essa linguagem de programação. A propósito, o mesmo se aplica ao Scala, mas o Kotlin é popular no mundo Android. Java é fácil para iniciantes aprenderem. Especialmente com a ajuda do CodeGym =) A sintaxe do Java é compreensível e, embora haja o risco de "tiro no próprio pé", não é crítico.

OOP ou POP?

A abordagem processual

A abordagem orientada a procedimentos envolve escrever um programa que consiste em instruções sequenciais que podem ser reunidas em um todo unificado para resolver efetivamente um conjunto específico de problemas. Essas linguagens incluem C , PureBasic e Pascal . Ou seja, as línguas que trazem desespero aos alunos do ensino médio e universitários. Há também o relativamente jovem GOlinguagem. Dito isso, estar familiarizado com linguagens procedurais é muito útil para um desenvolvedor em potencial. Minha imersão em linguagens processuais veio com o sistema Wolfram Mathematica e pesquisas universitárias. Algoritmos adequados e procedimentos simples, movendo-se linearmente do início ao fim do programa, permitiram-me calcular valores relevantes para a física teórica moderna. Essa linguagem de programação "sequencial" é a coisa certa para ajudá-lo a entender que às vezes é mais fácil escrever códigos que executam cálculos manualmente. A programação orientada a procedimentos de aprendizagem (POP) fornece um bom treinamento algorítmico, que um empregador quase sempre deseja ver em um candidato a emprego. Absolutamente tudo em TI é construído com base em linguagens procedurais, portanto, não as subestime. Por falar nisso, os iniciantes que decidem qual linguagem de programação aprender geralmente pensam que apenas as linguagens OOP suportam multithreading. Isso não é verdade. As linguagens de programação procedural também permitem cálculos paralelos. Escolhendo uma linguagem de programação - 3

A Abordagem Orientada a Objetos

Aqueles que começaram com linguagens procedurais geralmente são bem versados ​​em matemática, algoritmos e estruturas de dados (devido à ênfase das universidades técnicas nessas áreas). Ainda assim, a realidade hoje é que os programadores de sucesso geralmente são aqueles que dominam uma abordagem diferente da programação: o paradigma orientado a objetos. A ideologia OOP permite construir sistemas verdadeiramente globais. Uma característica dessa abordagem é sua semelhança com o mundo real:
  • Diferentes objetos interagem uns com os outros e existem independentemente uns dos outros.
  • Os objetos têm uma hierarquia e podem adotar ou alterar o comportamento de seus ancestrais.
  • Você pode usar conceitos abstratos, mas apenas objetos que realmente existem podem interagir.

Exemplo

Linguagens orientadas a procedimentos são ferramentas para resolver problemas específicos. Se sua tarefa mudar, mesmo que ligeiramente, você provavelmente terá que gastar tempo e esforço reescrevendo todos os algoritmos.

Imagine um programa que descreve uma concessionária de carros que vende carros e caminhões, novos e usados. Em uma linguagem procedural, você precisa definir funções que processam a entrada ou saída de dados para cada entidade: um carro novo, um caminhão novo, um carro usado e um caminhão usado. O que a POO oferece? Com uma abordagem orientada a objetos, precisamos apenas definir uma classe base Vehicle que armazene as características compartilhadas por todos os tipos de veículos:

  • Fazer
  • Deslocamento do motor
  • Cavalos de força
  • Ano
  • Novo ou usado
  • Preço

E métodos para receber e enviar informações. Em seguida, criamos objetos que herdam as características da classe Veículo: Carro e Caminhão. Eles contêm informações que pertencem especificamente a esses tipos de veículos, bem como métodos de entrada/saída.

De repente, a direção da concessionária decide ampliar a linha oferecendo também motocicletas. Sob a abordagem processual, teríamos que recriar toda a lógica para motocicletas novas e usadas, enquanto uma linguagem OOP nos permite simplesmente criar uma nova classe Motocicleta que herda todas as características da superclasse Veículo e contém refinamentos específicos da motocicleta.

E o que aconteceria se adicionássemos vários veículos? Uma implementação processual exigiria mais trabalho do que OOP. Além do mais, quanto maior o alinhamento, menos operações envolvendo objetos serão necessárias.

Portanto, OOP é um estilo de programação que permite combinar dados e métodos em uma única entidade e trabalhar com eles como um objeto unificado. As entidades podem ser organizadas em uma hierarquia e interagir umas com as outras sem se aprofundar nos detalhes de implementação interna umas das outras. Vou apontar três razões pelas quais OOP é a abordagem mais progressiva para mim:
  1. OOP envolve o desenvolvimento independente de módulos individuais, permitindo que um programador ou equipe escolha o método e os limites de contato e troca de informações.
  2. Código particionado em pequenos módulos é muito mais fácil de ler do que procedimentos monolíticos. Como resultado, um estranho pode entender rapidamente seu código e, da mesma forma, você pode ingressar em um novo projeto, se necessário.
  3. Uma classe pode ser alterada sem afetar a interação de outra, mas essa alteração pode afetar a hierarquia dos objetos filho. Depois de dominar essa abordagem, expandir e modificar um programa torna-se trivial.
Lembre-se de que uma abordagem não está em conflito com a outra, mas OOP ainda é mais alto na hierarquia. Então, por que eu recomendo Java? Destaco os seguintes motivos:
  1. Plataforma cruzada.

    Java funciona em qualquer lugar graças à máquina virtual Java (JVM). Uma das principais vantagens dessa linguagem é sua natureza multiplataforma: não há necessidade de pensar em qual biblioteca adicionar ou na arquitetura de um determinado processador. "Escreva uma vez, corra em qualquer lugar."

  2. Documentação.

    Existe uma enorme base de documentação: documentação oficial da Oracle, portais de treinamento e uma comunidade em constante evolução. As respostas para a maioria das perguntas que surgem durante o desenvolvimento podem ser encontradas em poucos minutos. O principal é entender o que entrar no buscador =)

  3. Popularidade.

    Java é a linguagem de programação mais popular do mundo: além dos já mencionados desenvolvedores Android e web, quase todos os desenvolvedores corporativos escrevem em Java. Enterprise refere-se ao desenvolvimento corporativo interno necessário para as necessidades das grandes corporações.

    Todos os anos, os odiadores prevêem "a morte de Java". Eles dizem: " A Oracle vai parar de dar suporte a isso. Você está perdendo totalmente o seu tempo. " Isso não é verdade! Eles prometem lançar novas versões do Java a cada seis meses.

    Para mim, as expressões lambda no Java 8 foram revolucionárias e uma revelação, para não falar das novas versões! Atualmente, estou trabalhando em um projeto "legado", então não me aprofundo nas últimas inovações, mas é fato que o Java está vivo.

    Escolhendo uma linguagem de programação - 4
  4. Android.

    Nos últimos 4 anos, o Android deteve consistentemente mais de 80% do mercado de telefonia móvel . TVs, reprodutores de mídia e até mesmo sistemas de infoentretenimento automotivos são executados neste sistema operacional. E o desenvolvimento de aplicativos para este sistema operacional ocorre principalmente em Java. Imagine as perspectivas que estão se abrindo. Quando consegui um emprego como desenvolvedor Android, me perguntei quanto valia o produto que estava desenvolvendo. Como se viu, o preço era de cerca de US $ 5 por ano. Isso levanta a questão: "então de onde vem o dinheiro para este escritório, os salários, lanchonete, mesa de ping-pong, robôs e outras regalias? A resposta está no volume: nosso aplicativo tem 20 milhões de usuários.

  5. Salários.

    E agora a cereja do bolo: o salário de um desenvolvedor Java está entre os mais altos do setor. Afinal, você está planejando estudar programação com um objetivo específico: conseguir um bom emprego.

A popularidade da linguagem de programação

Existem fontes oficiais de informação, então vamos recorrer a elas. De acordo com o TIOBE , o Java ocupa o primeiro lugar em outubro de 2019. No ranking PYPL , o Java ocupa o segundo lugar, muito à frente do JS e rivalizando com o moderno Python.

Conclusão

Como um iniciante contempla a escolha de uma linguagem de programação, é nisso que ele deve prestar atenção:
  • Popularidade (Java ocupa consistentemente uma posição de liderança)
  • Limite de entrada (para Java, é médio: os empregadores exigem uma gama bastante ampla de habilidades)
  • Materiais disponíveis (bem-vindo ao CodeGym =))
  • Campos de aplicação: quanto mais campos onde uma linguagem de programação é utilizada, mais especialistas são necessários no mercado. Já mencionei como o Java oferece suporte ao desenvolvimento multiplataforma, mas nunca me canso de repetir.
É claro que existem armadilhas por toda parte, mas quem dá um passo avança: só você pode decidir qual linguagem de programação escolher. Boa sorte no aprendizado!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION