JavaRush /Blogue Java /Random-PT /Escolhendo uma linguagem de programação

Escolhendo uma linguagem de programação

Publicado no grupo Random-PT
Conheci a programação pela primeira vez na escola, nas aulas de ciência da computação. Estas foram algumas explicações tediosas dos princípios dos sistemas numéricos n-ários. Bem, como teste, tive que escrever meu próprio site. Então me pareceu que não havia atividade mais chata no mundo. Como eu estava errado! Infelizmente, o currículo escolar de ciência da computação não fornece uma visão completa do trabalho de TI e não está claro como escolher uma linguagem de programação. Selecionando uma linguagem de programação - 1Antes de fazer a pergunta “Qual linguagem de programação escolher para aprender”, um iniciante deve se familiarizar com quais linguagens existem e quais são suas diferenças.

Limite de entrada: alto, baixo, médio

Entre os programadores, muitas vezes você pode ouvir sobre o “limiar de entrada” - um conceito que reflete a quantidade de esforço necessária para um indivíduo “júnior” dominar uma linguagem de programação em um nível suficiente para escrever seu primeiro programa sério e encontrar um emprego. O “limiar de entrada” consiste em conhecimento:
  • características de sintaxe e nuances da linguagem;
  • bibliotecas;
  • algoritmos e estruturas de dados.
Na verdade, até trabalhar no Excel pode ser chamado de uma espécie de programação. A propósito, este programa de escritório familiar não é tão simples quanto parece. Por um lado, o limite de entrada será a capacidade de construir uma tabela, por outro - o conhecimento de fórmulas e macros complexas. De qualquer forma, este limite é pequeno. Em seguida vêm as quase-linguagens: por exemplo, programação 1C . Então - as linguagens mais fáceis de aprender: por exemplo, PHP . Em seguida estão as linguagens com sintaxe nativa (geralmente derivada do inglês) que não requerem interação manual com a memória: por exemplo, Java , JS . Depois, há linguagens que exigem um manuseio extremamente cuidadoso de memória, estruturas de dados e algoritmos: por exemplo, C , C++ . Linguagens multiparadigmáticas jovens têm, talvez, a maior barreira de entrada, porque para dominá-las é preciso comer mais de um cachorro em outras linguagens de programação: por exemplo, Scala . Mas antes de tudo, ao escolher uma linguagem, você deve decidir o que deseja fazer a seguir: desenvolver aplicativos web, corporativos, desktop ou móveis .

Web ou não Web?

Rede

Os programadores Web podem ser divididos em desenvolvedores Frontend e Backend . Vale a pena entender o que esses termos significam. Os desenvolvedores de “frontend” lidam com o chamado lado do cliente – o que o usuário verá. “Backend” é a parte de software e hardware do serviço – o que roda no servidor. Para um desenvolvedor Frontend decidir qual linguagem de programação escolher, o must-have é o JavaScript e seus frameworks: Angular JS, React e outros. Os dialetos JS não são tão populares quanto seus pais, mas também podem ser úteis: CoffeeScript, TypeScript. Também existe flash AS, antes de existir JScript e VBScript, mas só os dinossauros lembram disso =) Além disso, você precisa entender HTML e CSS .
Selecionando uma linguagem de programação - 2
Muitos iniciantes pensam que JavaScript e Java são quase a mesma coisa; essas linguagens não devem ser confundidas. JS costumava ser chamado de “LiveScript” e ganhou seu nome atual justamente devido à popularidade da palavra “Java”. PHP, Python, Ruby, Pearl, Java são adequados para back-end da web . Aqui gostaria de chamar a atenção para o PHP - falaremos de outras linguagens mais tarde - uma das linguagens mais fáceis de aprender, que possui um baixo limiar de entrada. Ruby, a julgar por uma pesquisa com desenvolvedores web conhecidos, está lenta mas seguramente ganhando popularidade: é amado por sua brevidade e beleza.

Não Web (empresarial, desktop, móvel)

Agrupei especificamente essas linguagens de programação em uma categoria com um nome tão estranho. A maioria deles pode ser usada para escrever aplicativos empresariais, de desktop e até mesmo móveis. Python , um OOLP fácil de entender, tornou-se incrivelmente popular recentemente devido ao desenvolvimento do Machine Learning : seus adeptos usam amplamente o Python. ML é uma área bastante jovem em TI e, embora os primeiros frutos já tenham sido recebidos, não teria pressa em mergulhar nesse setor ao escolher uma linguagem de programação. Primeiro, você precisa ser MUITO bom em matemática. Em segundo lugar, a onda de popularidade pode seguir o mesmo caminho que com “blockchain” ou “nanotecnologia”. Além disso, como você lembra, Python é usado no desenvolvimento web. C++ : clássico, tudo é construído com base nas “vantagens”. Essa linguagem foi a progenitora de todos os OOLPs populares, e um iniciante definitivamente deveria prestar atenção a ela. Muitos aplicativos populares são baseados nele. Mas a alta probabilidade de “dar um tiro no pé” e a sintaxe difícil de entender anulam a probabilidade de um iniciante dominar esse mastodonte da programação. Kotlin - Java para descolados - uma mistura maluca de OOP e programação funcional. Recentemente popular devido ao fato de que um desenvolvedor experiente que muda de Java para Kotlin melhora significativamente sua produtividade. Um desenvolvedor experiente se acostumará rapidamente com essa linguagem. A propósito, o mesmo se aplica ao Scala, mas o Kotlin é popular no Android. Java é fácil para um iniciante aprender. Inclusive, graças ao JavaRush : foi aqui que entendi como escolher uma linguagem de programação =) A sintaxe do Java é clara, existe a possibilidade de “dar um tiro no pé”, mas não crítica.

POO ou POP?

Abordagem processual

A abordagem orientada a procedimentos envolve escrever um programa que consiste em instruções sequenciais que podem ser reunidas em um único todo para resolver com eficácia uma gama específica de problemas. Essas linguagens incluem: C , PureBasic e Pascal . Os mesmos que trazem desânimo aos alunos do ensino médio e do ensino fundamental. Há também um GO relativamente jovem . No entanto, a familiaridade com linguagens procedurais é muito útil para um potencial desenvolvedor. Para mim, a imersão em linguagens procedurais está associada ao sistema Mathematica (Wolfram) e às atividades de pesquisa universitária. Graças às abordagens algorítmicas corretas e procedimentos simples, movendo-se linearmente do início ao fim do programa, consegui calcular valores que são relevantes para a física teórica moderna. É graças a essas linguagens “sequenciais” que você começa a entender que às vezes é mais fácil escrever código do que contar sozinho. Estudar PPP proporciona um bom treinamento algorítmico, que um empregador quase sempre deseja ver em um candidato ao contratar. As bases de tudo e de todos em TI são construídas em linguagens procedurais, portanto, não as subestime. A propósito, iniciantes que decidem qual linguagem de programação escolher para aprender muitas vezes pensam que multithreading é prerrogativa exclusiva da OOP. Isto está errado. As linguagens de programação processual também permitem realizar cálculos paralelos.
Selecionando uma linguagem de programação - 3

Abordagem orientada a objetos

Quem começou com linguagens procedurais na maioria das vezes possui bons conhecimentos de matemática, algoritmos e estruturas de dados (isso se deve à ênfase nessas áreas do conhecimento nas universidades técnicas). No entanto, nas realidades modernas, os programadores de sucesso são frequentemente aqueles que dominam bem outra abordagem de programação - orientada a objetos. A ideologia OOP torna possível construir sistemas verdadeiramente globais. A peculiaridade desta abordagem é a sua semelhança com o mundo real:
  • vários objetos interagem entre si e existem independentemente uns dos outros.
  • os objetos possuem uma hierarquia e são capazes de adotar ou alterar o comportamento de seus ancestrais.
  • Você pode operar com conceitos abstratos, mas somente objetos realmente existentes podem interagir.

Exemplo

Linguagens orientadas a procedimentos são ferramentas para resolver problemas específicos. E se sua tarefa sofreu uma alteração, mesmo que pequena, você provavelmente terá que gastar tempo e esforço reescrevendo todos os algoritmos.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    A mais ampla base de documentação: documentação oficial da Oracle, portais de treinamento, comunidade em constante desenvolvimento. As respostas para a maioria das dúvidas que surgem durante o desenvolvimento podem ser encontradas em poucos minutos, o principal é entender o que digitar no mecanismo de busca =)

  3. Popularidade.

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

    Todos os anos, os que odeiam prevêem a “morte do Java”, dizem: “ A Oracle vai parar de apoiá-lo e, em geral, você está fazendo bobagens ”. Isto está errado! Promete-se que novas versões do Java sejam lançadas a cada seis meses. As inovações e recursos mais importantes da versão mais recente podem ser lidas aqui .

    Para mim, lambdas no Java 8 foram uma revolução e uma descoberta, sem falar nas novas versões! Agora estou trabalhando em um projeto “retrógrado”, então não me aprofundo em inovações, mas o fato de o Java continuar vivo é um fato.

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

    O Android ocupou com confiança mais de 80% do mercado de telefonia móvel nos últimos 4 anos; TVs, reprodutores de mídia e até sistemas de mídia em carros operam sob este sistema operacional. E o desenvolvimento deste SO é feito principalmente em Java. Imagine quais perspectivas estão se abrindo. Quando consegui um emprego como desenvolvedor Android, fiquei interessado: quanto custa o produto que estou desenvolvendo? Descobriu-se que o preço por ano é de aproximadamente US$ 5. Surgiu uma pergunta razoável: de onde vieram os recursos para este escritório, para salários, biscoitos, mesa de tênis, robôs e outras “coisas bonitas”? É uma questão de quantidade: nosso aplicativo conta com 20 milhões de usuários.

  5. Salários.

    E de sobremesa: o salário de um desenvolvedor Java é um dos mais altos do setor. Você aprenderá programação com um propósito específico: conseguir um bom emprego.

Popularidade de uma linguagem de programação

Ao escolher uma linguagem de programação, você precisa pensar no objetivo final do aprendizado - conseguir seu primeiro emprego. Para avaliar a popularidade dos diferentes idiomas, acessei um portal de recrutamento popular e comecei a analisar o número de vagas para vários pedidos em Moscou. Você pode ver os resultados abaixo.
Java: 277
Pitão: 227
php: 188
c#: 147
c++: 131
rubi: 40
escala: 24
kotlin: 20
Mesmo o recentemente popular Python não conseguiu ultrapassar o Java. Mas estes são dados subjetivos: uma cidade específica, um dia específico. Existem fontes oficiais, vamos recorrer a elas. Em outubro de 2018, de acordo com a TIOBE, Java ocupava o primeiro lugar. No ranking PYPL , o Java fica em segundo lugar, muito à frente do JS e competindo com o “da moda” Python.

RESULTADOS

Aqui está o que um iniciante deve prestar atenção ao escolher uma linguagem de programação:
  • Popularidade (Java ocupa consistentemente uma posição de liderança);
  • Limite de entrada (para Java - média: a gama de competências exigidas pelo empregador é bastante ampla);
  • Materiais disponíveis (não existem portais semelhantes ao JavaRush em russo, portanto, a palma da mão vai adivinhar quem =));
  • Áreas de aplicação: quanto mais indústrias em que uma linguagem de programação pode ser utilizada, mais especialistas são necessários no mercado. Já falei sobre multiplataforma, mas não me canso de repetir.
É claro que existem armadilhas por toda parte, mas quem caminha dominará o caminho: só você pode decidir qual linguagem de programação escolher . Boa sorte em seus estudos!
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION