Não existe um ideal: como eu procurei uma linguagem de programação para mim



De um tradutor: Esta postagem é uma tradução ligeiramente abreviada do artigo original de Gal Schlesinger, um desenvolvedor front-end experiente. Ele realmente gosta de programação, e seu hobby é estudar várias linguagens de programação (e às vezes muito inesperadas) para fins de trabalho e para seus próprios projetos de estimação. Gal também fala sobre as vantagens e desvantagens de vários deles neste material.

Apesar do trabalho que geralmente trabalho com Java, JS e Ruby, gosto de aprender novas linguagens e estruturas. Parece-me que o treinamento contínuo ajuda a formar novas idéias interessantes que podem ser usadas, se necessário, para resolver um problema específico. Além disso, a programação funcional ajuda a entender mais sobre programação orientada a objetos, e o trabalho constante com o Rails permite que você aprenda muitas das nuances dos testes (é claro, se você praticar). O problema é que, mais cedo ou mais tarde, no processo de aprender outras línguas, você começa a se perguntar: existe um ideal entre elas, onde todas as funções úteis que você encontrou em outras pessoas seriam coletadas?

A Skillbox recomenda: Curso prático "Mobile Developer PRO" .
Lembramos que: para todos os leitores de "Habr" - um desconto de 10.000 rublos ao se inscrever em qualquer curso Skillbox usando o código promocional "Habr".

Quero acrescentar: minhas preferências em linguagens de programação podem não corresponder às suas. Neste artigo, descrevo minha experiência adquirida nos últimos meses no trabalho de grandes projetos e aqueles que crio no meu tempo livre.

Ruby


Comecei a aprender Ruby apenas porque a comunidade dele repete constantemente a ideia de que tudo aqui é diferente do Java, com o qual trabalhei anteriormente. Eu realmente gosto de Ruby. Essa é uma ótima linguagem com um grande número de bibliotecas prontas (nós as chamamos de gemas, gemas), que permite desenvolver rapidamente e colocar em uso um novo aplicativo. Trilhos - o que pode ser chamado de "sentou-se e foi".

Ruby é uma linguagem orientada a objetos, de modo que todo o código terá aproximadamente o mesmo estilo, independentemente da biblioteca que você escolher. A comunidade aqui é muito poderosa: os programadores preferem modificar as bibliotecas existentes em vez de criar uma nova a cada vez (ActiveRecord e Sequel como exemplo). Esse recurso permite que você facilite sua vida.

É verdade que Ruby não é rápido o suficiente quando se trata de desempenho. Os componentes geralmente são "pesados" e levam muito tempo para carregar. Praticar com o Rails é divertido, mas executar aplicativos significa gastar tempo e dinheiro. Heroku e AWS ECS são exemplos disso: você terá que pagar por RAM, espaço no arquivo, tráfego e tempo de atividade. Além disso, deve-se ter em mente que a hora de início estimada para um aplicativo de tamanho médio é de 5 a 10 segundos.

Javascript


Eu amo JavaScript. A maioria dos meus projetos de front-end é para a Web, já que agora alguém tem acesso ao navegador. Esta é uma linguagem relativamente fácil de aprender, é muito comum, o limiar de entrada é baixo. As ferramentas do desenvolvedor são muito boas, implementar a prototipagem usando JavaScript é apenas um sonho. A comunidade também tem muitos membros que prestam muita atenção na melhoria dos componentes.

JS tem muitas falhas. Uma das principais é a divisão da comunidade em várias áreas do desenvolvimento da linguagem, de acordo com suas preferências. Portanto, a principal diferenciação é em torno dos sistemas de tipos (Flow vs. TS), e as abordagens para o uso de bibliotecas e tudo mais. Como resultado, muitos desenvolvimentos, os módulos são simplesmente "brutos".

Swift


Depois de trabalhar com os dois idiomas anteriores, comecei a aprender Swift. Eu precisava da linguagem para avançar no meu "jogo do desenvolvedor". Inicialmente, eu estava no nível zero, porque só sabia criar aplicativos com o Native React. Em princípio, isso bastava, mas eu queria aprender mais.

Swift é uma linguagem de tipo estaticamente. Inicialmente, ele foi criado para desenvolver aplicativos no ecossistema da Apple, mas tornou-se de código aberto, e agora eles trabalham com ele para criar aplicativos para Linux. As vantagens da linguagem são que os aplicativos escritos nela são carregados rapidamente e o processo de compilação é claro, para que o número de erros de tempo de execução seja gradualmente minimizado.

A sintaxe da linguagem é interessante e não é muito difícil de aprender, algumas funções ajudam a evitar erros e problemas. Por exemplo, se parte do código "espera" uma string, a transmissão incorreta de um número inteiro não é permitida. Isso permite capturar e corrigir erros no estágio inicial do processo de desenvolvimento.

Por que Swift não é meu herói? O fato é que não é tão fácil escrever no Swift em editores que não sejam o Xcode. Eu costumo usar o Vim, outros editores são mais lentos. De alguma forma, tentei o VSCode e o Atom, mas não gostei muito deles. Talvez no final eu me concentre na CLI Swift, que permitirá criar plugins para o editor, mas não agora. O Swift também não possui compilação estática; portanto, para usar a CLI, você precisará configurar seu ambiente com o Swift. Isso é normal para aplicativos Mac, mas os servidores são Linux.

ReasonML


Estou muito satisfeito com esta nova sintaxe e kit de ferramentas para Ocaml, desenvolvida pelo Facebook. O tulkit é bastante maduro, oferece muitas funções. Os bons são o OPAM, o gerenciador de pacotes, assim como o Merlin e o OCaml / Reason. Tudo isso funciona bem com o Vim. E mesmo se você não mencionar o mecanismo de preenchimento automático e outras funções. As ferramentas de desenvolvedor aqui são muito boas.

O motivo pode ser compilado em JS usando o BuckleScript, que gera JS executável a partir do código Reason / OCaml. Isso é incrível, porque, neste caso, temos sistemas totalmente tipificados com excelente interação JS, e também podemos usar as bibliotecas necessárias.

A única coisa que não gosto é que tenho que criar muitas definições de tipo apenas para uso de dependência. Mas isso não é nada, porque não precisamos montar o módulo inteiro, mas apenas a entrada / saída da função / classe / método específico que usamos. Tudo isso funciona muito rapidamente e sem problemas.


A dificuldade em criar um aplicativo Reason nativo acabou sendo o uso de algumas bibliotecas. Isso é principalmente OCaml, mas como OCaml e Reason são intercambiáveis, usei a extensão do Chrome para trabalhar com o código Reason. O problema acabou sendo o fato de existir um código OCaml que não pode ser convertido para o Reason, possivelmente devido à falta de PPX na extensão do Chrome. PPX, pelo que entendi, uma extensão de sintaxe é uma macro que converte código. Este é um plugin do Babel.

A propósito, o Reason / Ocaml não suporta multi-core, existe Lwt para isso. Mas para esta biblioteca ainda não há manuais inteligíveis!

O limite de entrada para OCaml / Reason é muito alto, o que é um pouco frustrante. A comunidade não é muito desenvolvida e poucas pessoas explicam bem coisas estranhas. Talvez isso mude com o tempo.

Golang


Apenas uma linguagem fantástica. É fácil de aprender, o código é compilado e executado sem problemas. Há suporte para sistemas com vários núcleos e muitos outros recursos úteis. A comunidade é bastante desenvolvida, com um grande número de especialistas.

O fato de existirem muitos módulos e aplicativos poderosos escritos no Go, como Docker, Kubernetes, CockroachDB, significa que você pode criar um binário de infraestrutura para, por exemplo, Raspberry pi dentro do seu aplicativo.

A falta de genéricos (que pode ser adicionada em uma das próximas versões) é estranha porque existem dificuldades "estruturais" ao usar gráficos, árvores e algoritmos. Eu preferiria que o compilador fizesse tudo por mim.

Além disso, o problema para mim não é um sistema VGO modular muito claro. Com o tempo, aprenderemos mais sobre isso, à medida que a comunidade estiver se desenvolvendo gradualmente, mas até agora há pouca informação. A linguagem em si é bastante complexa. Este não é um motivo para não usá-lo, mas por enquanto estou evitando o trabalho em tempo integral com a Golang. Ele é, por assim dizer, entediante. Talvez com o tempo eu reconsidere minhas opiniões.

Cristal


Começamos com Ruby, então sugiro terminar Crystal.

Esta é uma das novas linguagens, ainda não chegando à versão 1.0, que parece quase com Ruby, mas é tipicamente estática e rápida! Oferece aos desenvolvedores um grande número de funções, incluindo tipos opcionais, CSP e muito mais. Existem algumas novas estruturas da web do Crystal, como Lucky e Amber. Há Kemal, que é como Sinatra, mas para Crystal, além de ORMs.

Mas, como o idioma ainda é jovem, ainda não está pronto para o uso ativo. Por exemplo, eu gostaria que o Crystal usasse todos os núcleos, como o Go. Um editor com preenchimento automático e dicas de tipos durante o foco também não seria supérfluo. Estou um pouco preocupado com a ideia de que o Crystal pode não chegar à versão 1.0. Espero sinceramente que ele tenha sucesso.

Qual é a sua linguagem de programação favorita e por quê?

A Skillbox recomenda:

Source: https://habr.com/ru/post/pt424591/


All Articles