Uploaded avatar of ErikSchierboom

É o Appy August!

@ErikSchierboom
Aproximadamente 3 anos atrás
Vídeo

Introdução

Olá. Bem-vindos. Espero que todos estejam bem. Espero que tenham se divertido explorando algumas linguagens antigas e influentes durante o Jurassic July. Agora vamos ao mês 8 de 2023 e ao nosso 7º mês temático: Appy August.

O que queremos dizer com apps?

Bem, pode significar várias coisas:

  • Aplicações web, o ganha-pão de grande parte dos nossos dias hoje
  • Apps nativos, como os que rodam no seu celular ou tablet
  • Apps de desktop que rodam diretamente no seu sistema operacional Windows, Mac ou Linux
  • Aplicações de domínio específico
  • Aplicações de negócios
  • E muito mais!

E quais são as linguagens?

Estamos falando de nada menos que 14 linguagens: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift e TypeScript.

Os selos

Ganhe o selo completando 5 exercícios em uma dessas linguagens este mês. E para o selo anual, você precisa completar:

  • Anagrama: dada uma palavra e uma lista de possíveis anagramas, encontre os anagramas dela
  • Número de Telefone: limpe um número de telefone
  • Triângulo: classifique um triângulo
  • Transcrição de RNA: transforme uma sequência de DNA em seu complemento de RNA
  • Pontuação de Scrabble: dada uma palavra, determine sua pontuação no Scrabble

Panorama

ABAP

  • Desenvolvido pela SAP SE na década de 1980, e seu objetivo de design fica claro quando vemos o que a sigla significava: Allgemeiner Berichts-Aufbereitungs-Prozessor, que em alemão quer dizer "processador geral de preparação de relatórios". Mais tarde, o ABAP passou a ser aplicável de forma mais geral, e a sigla foi atualizada para Advanced Business Application Programming para refletir isso
  • Linguagem fortemente e estaticamente tipada
  • Multiparadigma: dá suporte a programação imperativa e orientada a objetos
  • Compilado para bytecode. Curiosamente, o código-fonte fica armazenado dentro do banco de dados
  • Todo o código roda no contexto de um sistema SAP, que consiste em um banco de dados relacional e um ou mais servidores de aplicação
  • Tecnologia proprietária e de código fechado, embora um dos nossos mantenedores tenha criado uma fantástica reimplementação de código aberto
  • Usado em aplicações de negócios, como finanças, gestão de materiais, contabilidade e gestão. Tem clientes no mundo todo, com muitos nomes de peso como Apple, Amazon e Walmart

Por que é ótima

  • Em constante evolução, com novos recursos sendo adicionados regularmente
  • Confiável: funcionalidades estáveis com décadas de experiência por trás
  • Biblioteca padrão extensa

Recursos de destaque

  • Integração perfeita com o sistema e o banco de dados SAP, mas também com muitos outros sistemas
  • O ABAP Dictionary contém todos os metadados sobre os dados no sistema SAP, o que inclui tabelas, views e estruturas. Os tipos desse dicionário podem ser usados para tipar variáveis estaticamente, mesmo quando o tipo é uma tabela
  • O ABAP Workbench faz parte do sistema ABAP e contém um conjunto de ferramentas para editar programas. Inclui o design de telas

CoffeeScript

  • A linguagem recebeu seus primeiros commits lá em 2009, de Jeremy Ashkenas; a primeira mensagem de commit foi "initial commit of the mystery language."
  • Dinamicamente tipada e multiparadigma (orientada a objetos, imperativa, funcional, prototípica)
  • Compila para JavaScript (conhecido como transpiling). A regra de ouro do CoffeeScript é: "É só JavaScript". Uma das primeiras linguagens de "transpile para JS" bem-sucedidas
  • Ficou popular porque o CoffeeScript não tinha alguns dos problemas com que quem programava em JS penava naquela época (como o binding de "this" funcionar de forma diferente, ou classes não serem suportadas). Foi incluído no Ruby on Rails a partir da versão 3.1.
  • Em 2017, a linguagem recebeu sua versão 2.0, que tinha como objetivo deixá-la em pé de igualdade com o padrão JavaScript mais recente. A linguagem recebe uma atualização mais ou menos uma vez por ano.
  • O compilador da linguagem foi originalmente escrito em Ruby, mas substituído em 2010 por um compilador auto-hospedado escrito em CoffeeScript (o compilador não depende do NodeJS e pode rodar direto no navegador)
  • O CoffeeScript foi influente ao inspirar o JavaScript a adotar certos recursos (a sintaxe de seta das lambdas, classes)
  • Costumava ser usado pelo Dropbox e no Rails

Por que é ótima

  • Sintaxe limpa e concisa, inspirada em Python, Ruby e Haskell. Menos verbosa que o JavaScript, eliminando muitos parênteses e chaves, em parte por usar indentação significativa (o espaço em branco é importante)
  • Semântica simplificada, por exemplo: nada de confusão com let, var, const, já que eles não existem, e == é transpilado para === (igualdade estrita), e os bindings de função evitam erros comuns com "this"
  • Baseada em expressões, o que significa que você pode atribuir o resultado de uma expressão if a uma variável
  • Muito açúcar sintático, por exemplo: use @ no lugar de this, yes/on podem ser usados no lugar de true, // para divisão inteira, @ no lugar de this e muito mais

Recursos de destaque

  • Compila para JavaScript limpo e legível por humanos, com uma correspondência um para um entre o código-fonte e o código gerado.
  • Ótima interoperabilidade com JavaScript: você pode usar código escrito em JS a partir do CoffeeScript facilmente (e vice-versa). Use qualquer biblioteca JS já escrita
  • Adiciona recursos que faltam ou faltavam no JavaScript: compreensões de lista, interpolação de string, operador existencial (?), comparações encadeadas
  • Linguagem pequena, o compilador tem cerca de 500 kb (100 kb comprimido)

Dart

  • Projetado por Lars Bak e Kasper Lund no Google
  • Primeiro lançamento em 2011
  • O objetivo era criar uma linguagem rápida e produtiva, especialmente adequada para construir UIs
  • Estaticamente tipada
  • Multiparadigma: principalmente orientada a objetos, mas também funcional e imperativa
  • Pode ser interpretada e compilada em tempo de execução (JIT)
  • Usada principalmente para criar apps, mas também pode ser usada para criar backends

Por que é ótima

  • Fácil de aprender, graças a uma sintaxe familiar
  • Sistema de tipos moderno: inferência de tipos, pattern matching, async/await
  • Documentação excelente
  • Segurança por meio de um sistema de null safety sólido: chega de exceções de ponteiro nulo
  • Boas ferramentas, suporte em várias IDEs. Otimizada para um ciclo de feedback curto, por exemplo, com hot reload rápido
  • Ecossistema em crescimento, com muitas bibliotecas disponíveis

Recursos de destaque

  • Pode compilar para JS, código nativo, mas também para Swift e Kotlin, ótimo para apps mobile.
  • A biblioteca Flutter pode ser usada para criar rapidamente apps mobile, web, desktop ou embarcados. Escreva uma vez, rode em plataformas diferentes
  • Excelente suporte a concorrência, com async/await, isolates (constructos leves de concorrência), futures e mais

Delphi

  • O Delphi foi desenvolvido pela Borland e lançado em 1995.
  • É uma linguagem de programação Object Pascal e foi desenvolvida por Anders Hejlsberg, um dos principais arquitetos do C#
  • Fortemente e estaticamente tipada
  • Compila para código nativo
  • Multiparadigma: principalmente orientada a objetos, mas também imperativa, declarativa e orientada a eventos
  • Usada em aplicações de negócios, GUIs e escolas (para ensinar programação)

Por que é ótima

  • Fácil de aprender. O Object Pascal combina a simplicidade e a clareza do Pascal com recursos de programação orientada a objetos, o que facilita escrever e manter código
  • Ambiente de Desenvolvimento Integrado (IDE): a IDE do Delphi oferece um ambiente amigável e cheio de recursos que agiliza o processo de desenvolvimento. Ela fornece navegação de código, ferramentas de depuração, preenchimento automático de código e outros recursos de produtividade que tornam o desenvolvimento mais eficiente.
  • Estabilidade: existe desde o início dos anos 1990, com um histórico de ser uma ferramenta de desenvolvimento e uma linguagem confiáveis e estáveis, incluindo forte compatibilidade retroativa. Código escrito em versões anteriores do Delphi ainda pode ser compilado e executado em versões mais novas com ajustes mínimos.
  • Suporte multiplataforma: o Delphi expandiu suas capacidades para além do Windows e oferece suporte a desenvolvimento multiplataforma, permitindo que os desenvolvedores tenham como alvo vários sistemas operacionais, como macOS, iOS, Android e outros. Isso possibilita criar aplicações para um público mais amplo e aumenta o alcance dos projetos.
  • Comunidade e suporte fortes: o Delphi tem uma comunidade dedicada e ativa de desenvolvedores que contribuem com bibliotecas, ferramentas e recursos para o ecossistema.

Recursos de destaque

  • Executáveis de alto desempenho: as aplicações Delphi são conhecidas pela velocidade e pelo desempenho. O compilador do Delphi produz executáveis nativos altamente otimizados, o que pode ser crucial para certos tipos de aplicação, como as que exigem processamento em tempo real ou tarefas computacionais pesadas.
  • Ambiente de Desenvolvimento Rápido de Aplicações (RAD): ferramentas visuais de design com arrastar e soltar permitem que os desenvolvedores criem interfaces de usuário e as conectem à funcionalidade com o mínimo esforço, acelerando o processo de desenvolvimento.
  • Arquitetura baseada em components: conta com uma arquitetura baseada em components, em que components reutilizáveis são criados para construir aplicações. Facilita reutilizar código e reduz o tempo de desenvolvimento.
  • Tratamento de eventos: o Delphi usa um modelo de eventos integrado, permitindo que os desenvolvedores respondam facilmente às ações do usuário e a outros eventos. O tratamento de eventos simplifica o processo de capturar a entrada do usuário ou eventos do sistema e responder adequadamente.
  • Conectividade com bancos de dados: o Delphi fornece components nativos de acesso a banco de dados que permitem integração perfeita com vários sistemas de banco de dados. Esse suporte integrado simplifica o desenvolvimento de aplicações orientadas a banco de dados.

Elm

  • A linguagem foi criada por Evan Czaplicki para sua tese de conclusão de graduação e lançada em 2012
  • Inicialmente abordou o tema de Programação Reativa Funcional (FRP) para GUIs (FRP com signals), mas em 2017 o FRP foi abandonado em favor da TEA (The Elm Architecture)
  • Linguagem funcional, estaticamente e fortemente tipada
  • Sintaxe inspirada em Haskell
  • Linguagem de código aberto, mas muito opinativa, e o estilo de desenvolvimento envolve longos períodos de trabalho profundo do Evan antes de tornar as coisas públicas. Então os PRs podem ficar muito tempo sem ser mesclados, e o projeto pode parecer parado, mas é só o estilo de trabalho do Evan.
  • Usada em sites, por exemplo NoRedInk, Vendr, Rakuten, Brilliant

Por que é ótima

  • É uma linguagem muito pequena, uma das mais fáceis de aprender entre a família ML de linguagens funcionais estaticamente tipadas. Isso quase a torna ideal para ensinar programação funcional.
  • As mensagens de erro do compilador são as mais agradáveis e úteis que você vai encontrar por aí.
  • Linguagem estável: o último lançamento é de 2019
  • Os pacotes do ecossistema são poucos, mas de alta qualidade.
  • Um ecossistema de linting poderoso com o elm-review (que alimenta o analisador da trilha de Elm do Exercism).

Recursos de destaque

  • A The Elm Architecture (TEA) está por trás de todos os apps Elm, então é muito fácil revisar aplicações Elm desconhecidas.
  • Nada de exceções em tempo de execução! Exceto por apenas algumas coisinhas.
  • Nada de quebrar ao atualizar dependências, o versionamento semântico é imposto pelo compilador.
  • Quando compila, funciona (exceto erros de lógica). E, quando você se acostuma, é muito difícil voltar para outras linguagens.
    • O "elm-ui" de Matthew Griffith possibilita o "quando compila, funciona" para estilo e layout, você não precisa de CSS.
  • Apps web full-stack: o Lamdera é um spin-off que usa Elm para apps web full-stack, com zero cola entre frontend e backend.

Java

  • Desenvolvido por James Gosling na Sun Microsystems e lançado em 1995.
  • Cinco objetivos originais:
    • Simples, orientada a objetos e familiar.
    • Robusta e segura.
    • Neutra em relação à arquitetura e portável.
    • Alto desempenho.
    • Interpretada, com suporte a threads e dinâmica.
  • Fortemente e estaticamente tipada
  • Compilada para bytecode (código nativo está em desenvolvimento)
  • Multiparadigma: imperativa, orientada a objetos e funcional
  • A linguagem e a máquina virtual têm especificações oficiais e, portanto, também várias implementações (por exemplo, a JVM do OpenJDK e a Hotspot VM da Oracle)
  • Usada em uma quantidade enorme de softwares, de sites a sistemas embarcados, e de apps a bancos de dados

Por que é ótima

  • Roda em (quase) todo lugar (como o atualizador do Java vai te lembrar com prazer ;))
  • Propósito geral: pode ser usada para quase qualquer carga de trabalho, incluindo apps, sites e sistemas embarcados
  • Interoperabilidade com outras linguagens da JVM, como Kotlin, Groovy, Scala e Clojure
  • Ferramentas excelentes, tanto para IDEs quanto para outras ferramentas, como sistemas de build

Recursos de destaque

  • A JVM é uma máquina virtual madura, estável e de alto desempenho, que é continuamente aprimorada
  • Ecossistema enorme, com um número gigantesco de bibliotecas disponíveis. Essas bibliotecas são, como o Java, maduras, estáveis e repletas de recursos
  • Em evolução: a linguagem e o runtime continuam evoluindo, com atualizações regulares na linguagem para torná-la mais moderna e resolver reclamações das pessoas (como a redução de código repetitivo e de verbosidade). No lado do runtime, novos projetos são iniciados regularmente para evoluir ainda mais o runtime (por exemplo, o projeto Loom, para constructos leves de concorrência, e a compilação nativa via GraalVM)

JavaScript

  • Brendan Eich foi contratado pela Netscape em 1995 para criar uma linguagem que tornasse as páginas web dinâmicas. O primeiro protótipo, famosamente, foi criado em 10 dias
  • Padronizada como ECMAScript em 1997
  • Dinamicamente e fracamente tipada
  • Costumava ser apenas interpretada, mas hoje é frequentemente compilada em tempo de execução (JIT)
  • Multiparadigma: prototípica (bem raro), mas também orientada a objetos, imperativa e funcional
  • Extremamente influente para fazer da web o sucesso que ela é hoje. Por exemplo, o AJAX foi muito útil para adicionar interatividade. É o padrão de fato para desenvolvimento web, já que é a única linguagem de programação com suporte embutido no navegador
  • Provavelmente a linguagem mais usada hoje em dia
  • Usada para backends, frontend, scripts e ferramentas de linha de comando

Por que é ótima

  • Propósito geral: pode ser usada para muitas cargas de trabalho: backend, frontend, scripts, ferramentas de linha de comando. Muitas ferramentas usadas para a web são escritas em JavaScript (e rodam no nodejs)
  • Os runtimes (como o V8) são fortemente otimizados e podem ter ótimo desempenho, mesmo sendo a linguagem altamente dinâmica
  • Linguagem relativamente pequena, o que a torna relativamente fácil de aprender. Poder rodá-la em um navegador a torna especialmente ótima, pois você recebe feedback visual enquanto aprende
  • A especificação é atualizada com frequência para introduzir novos recursos, como async/await e interpolação de string. Há também muita inovação em ferramentas, com ferramentas mais novas como deno, esbuild e bun.js sendo desenvolvidas para ajudar a lidar com bases de código JavaScript
  • O suporte a JSON é de primeira, prova disso é que JSON significa JavaScript Object Notation
  • Projetada para ser boa para código orientado a eventos e não bloqueante

Recursos de destaque

  • Ecossistema enorme. Há uma quantidade gigantesca de bibliotecas disponíveis (2,1 milhões de pacotes em setembro de 2022), mas também muitas outras linguagens que têm o JavaScript como alvo
  • Roda na maioria das plataformas e hardwares, do Windows à Apple, de Raspberry Pis a celulares, de servidores web a plataformas serverless. Os navegadores têm suporte nativo embutido, então não é preciso instalar um runtime.
  • Ideal para desenvolvimento web, com muitos frameworks para escolher (React, Vue, Angular), além de muitas ferramentas para ajudar a criar aplicações web (por exemplo, eslint, parcel)
  • Pode ser usada de forma isomórfica, o que significa que a mesma linguagem (e base de código) pode ser usada tanto no backend quanto no frontend. Isso facilita a manutenção e permite reutilizar código entre frontend e backend
  • A enorme popularidade significa: muitos recursos para aprender (vídeos, blogs, cursos) e uma vasta comunidade com quem interagir

Kotlin

  • Desenvolvida pela JetBrains em 2010, famosa por suas IDEs (por exemplo, IntelliJ, CLion, GoLand e Rider)
  • A maioria dos produtos da JetBrains era escrita em Java, mas eles queriam uma linguagem de JVM que reduzisse código repetitivo, acelerasse o desenvolvimento e suportasse alguns recursos que lhes faltavam. O Scala tinha esses recursos, mas foi considerado lento demais para compilar. Assim, o Projeto Kotlin foi iniciado.
  • Fortemente e estaticamente tipada
  • Multiparadigma: imperativa, orientada a objetos, funcional, declarativa
  • Por padrão, compila para bytecode de JVM, mas também pode compilar para JS e código nativo (útil para plataformas em que máquinas virtuais não são possíveis ou desejáveis, como dispositivos iOS)
  • Em 2019, foi apontada pelo Google como a linguagem preferida para escrever apps Android
  • Usada para criar sites, apps (principalmente Android) e até IDEs inteiras (as IDEs mencionadas acima)

Por que é ótima

  • Propósito geral: pode ser usada para quase qualquer carga de trabalho, incluindo apps e sites. O Google considerou o Kotlin a linguagem preferida para desenvolver apps Android em 2019
  • Rodando na JVM, todos os seus benefícios se aplicam: máquina virtual madura e de alto desempenho e um número enorme de bibliotecas disponíveis
  • Alivia muitos dos problemas que as pessoas podem ter com o Java, como exceções verificadas, null safety e verbosidade
  • Linguagem moderna: inferência de tipos avançada, baseada em expressões, imutabilidade, pattern matching, corrotinas, channels
  • Ferramentas excelentes (o que dá para esperar quando a própria IDE é escrita na linguagem :)

Recursos de destaque

  • Produtiva: o Kotlin adota as melhores partes de outras linguagens, moldando-as em uma linguagem única, consistente e produtiva, e em alguns casos até melhorando o original (por exemplo, com métodos de extensão locais)
  • Corrotinas: enquanto em muitas linguagens o async/await está embutido na própria linguagem, no Kotlin isso é implementado como uma biblioteca que usa o recurso de corrotinas da linguagem. As corrotinas são uma forma de lidar com funções suspensas, que oferecem uma abstração mais segura e menos propensa a erros para operações assíncronas do que futures e promises.
  • Ótima concorrência: async/await, channels e imutabilidade ajudam a alcançar uma concorrência excelente
  • O Compose Multiplatform permite construir UIs compartilhadas a partir da mesma base de código usando uma sintaxe declarativa

Objective-C

  • Originalmente desenvolvida por Brad Cox e Tom Love no início da década de 1980, foi escolhida pela NeXT para seu sistema operacional NeXTSTEP. Devido à linhagem direta do macOS, da Apple, a partir do NeXTSTEP, tornou-se a linguagem preferida para o software da Apple
  • Projetada para combinar as ideias orientadas a objetos do SmallTalk com o C, usando passagem de mensagens como constructo central da orientação a objetos
  • Superconjunto do C, então qualquer código C é código Objective-C válido, e ambos podem ser combinados na mesma base de código
  • Tipagem estática e dinâmica
  • Compilada
  • A linguagem padrão para escrever aplicações para macOS e iOS até a chegada do Swift, em 2014
  • Usada para apps de macOS e iOS

Por que é ótima

  • A mistura do C com recursos orientados a objetos pode ser muito poderosa
  • Runtime enxuto, o que a torna eficiente em recursos
  • Sintaxe de classe leve
  • A enumeração rápida permite laços for mais fáceis do que em C
  • Forte compatibilidade retroativa

Recursos de destaque

  • Dá suporte a Automatic Reference Counting (ARC), que libera a memória automaticamente quando um objeto não é mais referenciado, facilitando o gerenciamento de memória
  • O runtime dinâmico permite method swizzling (mudar dinamicamente o comportamento de um seletor, como monkey patching), reflexão e encaminhamento de mensagens (ótimo para o padrão observer ou proxy)
  • Protocolos e interfaces trazem recursos de interface para o C, com interfaces de categoria permitindo até estender tipos existentes

PHP

  • Desenvolvida e implementada por Rasmus Lerdorf em 1993 e lançada pela primeira vez em 1995
  • O nome é uma sigla recursiva: PHP: Hypertext Preprocessor
  • Dinamicamente e fracamente tipada, com a opção de adicionar gradualmente asserções de tipo fortes em tempo de execução
  • Multiparadigma: imperativa, funcional, orientada a objetos, procedural, reflexiva
  • Interpretada ou compilada em tempo de execução (JIT)
  • A plataforma original de renderização no lado do servidor
  • Usada em sites (Facebook, Wikipedia e muitos outros) e também em muitos sistemas de gerenciamento de conteúdo (Wordpress, JOOMLA).

Por que é ótima

  • É onipresente: o PHP está em uso em 77,4% de todos os sites^1, independentemente de plataformas específicas
  • Sintaxe simples, semelhante a outras linguagens de programação consolidadas (Java, JavaScript, C), o que a torna fácil de aprender
  • Propósito geral. Use-a para muitas coisas: de criar pequenos scripts web a criar grandes aplicações do lado do servidor usadas por empresas.
  • Muito consolidada e amplamente adotada. Existem muitos recursos de aprendizado, frameworks e bibliotecas.
  • Suporte forte a bancos de dados
  • Ainda em desenvolvimento ativo, lançando recursos modernos
  • Multiplataforma. Roda em tudo: Windows, Mac, Linux, Unix
  • Código aberto e gratuita

Recursos de destaque

  • Simples de rodar e publicar. Sem cadeia de build. Sem compiladores.
  • Sistema de tipos gradual. Adicione tipos onde precisar, use tipagem dinâmica para simplificar partes do seu desenvolvimento.
  • Prototipagem rápida. Crie uma página web para testar sua ideia e rode na sua própria máquina.

PureScript

  • Projetada por Phil Freeman, com a primeira versão lançada em 2013
  • Ele começou a trabalhar no PureScript porque não estava satisfeito com outras tentativas de transpilar Haskell para JavaScript
  • Fortemente e estaticamente tipada
  • Compila para JS
  • Linguagem puramente funcional
  • Sintaxe e recursos inspirados em Haskell
  • Usada para criar aplicações web, mas também pode ser usada para criar apps do lado do servidor ou aplicações de desktop via Electron

Por que é ótima

  • Compartilha muito do que torna o Haskell ótimo:
    • Sistema de tipos forte e poderoso: tipos de dados algébricos, classes de tipos, tipos de ordem superior
    • Expressiva: pattern matching, inferência de tipos
    • Segurança: sem nulls, tipos imutáveis
    • Puramente funcional: os efeitos colaterais são codificados no sistema de tipos
  • Decodificação/codificação de JSON para tipos fácil e com segurança de tipos
  • Compila para JavaScript legível por humanos
  • Boas ferramentas

Recursos de destaque

  • O núcleo funcional é perfeito para aplicações web com segurança de tipos e sem erros em tempo de execução
  • Excelente interoperabilidade com JS
  • Compila para JS eficiente

ReasonML

  • Criada por Jordan Walke no Facebook, com a primeira versão lançada em 2016
  • Baseada em OCaml, mas com as idiossincrasias removidas e projetada para interoperar com JS
  • Linguagem funcional e estaticamente tipada
  • Compilada
  • Usada para criar sites (por exemplo, no Facebook)

Por que é ótima

  • Todas as qualidades do OCaml, mas em um ambiente web:
    • Sistema de tipos poderoso: todos os valores são tipados com tipos mais simples (como records, variants e options), que são preferidos em relação a tipos complexos. Chega de erros de undefined, o que melhora a confiabilidade
    • Expressiva: pattern matching, inferência de tipos, desestruturação
    • Segurança: sem nulls, imutabilidade por padrão
  • Compila para JavaScript legível por humanos
  • Pode ser compilada para OCaml (e vice-versa), o que significa que pode usar todo o ecossistema OCaml (por exemplo, para compilar para um binário nativo)

Recursos de destaque

  • Os tempos de compilação do ReasonML são super rápidos, o que significa ciclos de iteração rápidos.
  • Excelente interoperabilidade com JS, tanto para usar JS a partir de código ReasonML quanto para exportar ReasonML para JS. Pode até gerar tipos TS. Também pode interoperar com C. Chega a suportar uma sintaxe parecida com JSX

Swift

  • O desenvolvimento do Swift foi iniciado por Chris Lattner em 2010 e anunciado mundialmente no evento WWDC de 2014.
  • O objetivo era substituir a antiga linguagem de programação da Apple, o Objective-C, que não recebia grandes mudanças desde o início dos anos 80, por uma linguagem nova e moderna. Projetada para interoperar com grandes partes do Objective-C.
  • Fortemente e estaticamente tipada
  • Compilada, usando o LLVM para cuidar da compilação para código de máquina (como o Rust, por exemplo)
  • Multiparadigma: funcional, orientada a objetos, imperativa, declarativa
  • Originalmente software proprietário, mas aberto como código aberto em 2015
  • Usada principalmente para apps mobile e desktop, mas também é usada para backends e em cenários serverless

Por que é ótima

  • Linguagem moderna: inferência de tipos, pattern matching, tipos de dados algébricos, strings Unicode
  • Produtiva: o Swift adota as melhores partes de outras linguagens (como Rust, Python, C# e Ruby), moldando-as em uma linguagem única, consistente e produtiva
  • Segura: os ponteiros não são expostos, um tipo opcional que evita exceções de ponteiro nulo, tratamento explícito de erros e gerenciamento automático de memória via ARC (Automatic Reference Counting)
  • Atualizada regularmente. No início, a Apple não tinha medo de introduzir mudanças que quebram compatibilidade para coisas que se mostraram ruins. Isso evita que "bagagem" se acumule. Normalmente, é disponibilizada uma ferramenta para ajudar a migrar o código. Desde o Swift 5, a Application Binary Interface (ABI) é estável
  • Ao contrário do Objective-C, o Swift roda em todas as principais plataformas: macOS, Windows e Linux

Recursos de destaque

  • Rápida. Compila para código de máquina eficiente, o que a faz rodar rápido
  • Interoperabilidade perfeita com Objective-C, e também interopera bem com C e C++
  • Comunidade grande, com muitos recursos excelentes disponíveis

TypeScript

  • Criada na Microsoft em resposta à frustração de desenvolver aplicações de grande escala em JS. Um dos projetistas foi Anders Hejlsberg, o principal arquiteto do C# e criador do Delphi e do Turbo Pascal
  • A primeira versão foi lançada em 2012
  • Multiparadigma: funcional, prototípica, imperativa, orientada a objetos e genérica
  • Usa tipagem gradual e duck typing
  • Compilada (para JS)
  • Usada para sites, tanto frontend quanto backend, scripts e ferramentas de linha de comando

Por que é ótima

  • Sistema de tipos poderoso e flexível: tipos de união, tipos literais, tuplas. Basicamente qualquer padrão que pode ser usado em código JS pode ser descrito de forma segura em termos de tipos no TS. O sistema de tipos é tão poderoso que é até Turing Complete
  • Ser um superconjunto do JS permite uma introdução gradual em uma base de código JS
  • Combina o melhor dos dois mundos: tipagem dinâmica e estática
  • Crescendo rapidamente em popularidade, com muitas ferramentas fornecendo tipos TypeScript ou sendo convertidas para TypeScript. Muitos recursos disponíveis
  • A linguagem é atualizada regularmente, com adoção antecipada de recursos futuros do ECMAScript

Recursos de destaque

  • Segurança e correção aprimoradas: a tipagem estática pode eliminar muitas classes de erros que normalmente se cometem com JS
  • Interoperabilidade perfeita com JS. Definições de tipo personalizadas podem ser adicionadas para trabalhar com código JS de forma segura em termos de tipos. Há definições de tipo personalizadas disponíveis para um grande número
  • Ótimas ferramentas/suporte de IDE. Anotações de tipo, preenchimento automático de código e até refatoração segura em grande escala estão disponíveis em muitas IDEs
  • Tenha todos os benefícios de rodar no ecossistema JS: um número enorme de pacotes, muitas ferramentas, uma comunidade grande etc.

Qual experimentar?

  1. Se você quer criar apps nativos, Dart, Delphi, Java, Kotlin e Swift são ótimas escolhas. Dito isso, qualquer uma das outras linguagens que compilam para JS também pode ser usada para criar apps nativos. Vale destacar que a linguagem oficial para criar apps de iOS/macOS é o Swift, e para apps Android é o Kotlin
  2. Se você quer criar apps web, CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML e TypeScript são ótimas
  3. Se você se interessa por programação funcional, Elm, PureScript e ReasonML são escolhas naturais, e CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift e TypeScript também dão suporte a programação funcional
  4. Para programação orientada a objetos, ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP e Swift são candidatas lógicas, e CoffeeScript, JavaScript e TypeScript também dão suporte a esse paradigma
  5. Se você se interessa por escrever aplicações de negócios, ABAP e Delphi são perfeitas para isso
Translation missing: pt-BR.number.nth.ordinalized Aug 2023 · Achou útil?