Quase sempre essas coisas são subjetivas demais.
Existem alguns estudos sobre isso. Todos meio subjetivos também. O que significa ser pseudociência. A maioria dos estudos não provam nada e muitos estão errados. Mas tende ser melhor que um achismo total.
A linguagem não te dá tanta produtividade quanto pode pensar. E ferramentas podem ajudar até mais. Lembre-se que o grosso do tempo do desenvolvedor ele não está programando.
Eu nunca mais achei (dá vontade de falar que eu que inventei isso :D) um artigo interessante que fala que existem só 3 balas de prata na computação:
- Linguagem de alto nível - não programar em Assembly e sim em Fortran, Lisp e depois as várias outras que apareceram como C ou TypeScript.
- Modularização - Principalmente criar função em vez de ter um enorme linguição, então versões posteriores de Fortran, Lisp, COBOL e quase todas as outras (BASIC original e alguns simplificados não tinha, só um exemplo).
- Gerenciamento automático de memória - começando com Lisp, mas hoje está presente em quase todas as linguagens, assim como os itens anteriores, até mesmo em algumas que preferem falar em semi automático, como em C++ por exemplo. C puro não tem isso.
Essas coisas dão ganhos de produtividade incríveis. O resto nem tanto. Algumas coisas dão ilusões de produtividade para escrever, mas depois cobra o preço de dar manutenção. tem estudo que mostra que linguagens dinâmicas só são mais produtivas para escrever, não no longo prazo. Mas as pessoas gostam da ilusão do curto prazo.
Para escolher uma linguagem pode adotar critérios técnicos e políticos. O segundo não pode ser subestimado. A Popularidade, por exemplo, é político. E isso conta. Até já saber usar também.
Quando se fala em limitação de recursos pode já excluir quase todas as linguagens. Mas às vezes isso não é tão importante quanto pensa. Por que, mesmo muita gente jogando pedra, ainda é preferida por muita gente? Porque olhando para todos os aspectos não tem linguagem que permita ao bom programador economizar mais recursos. Vai dar trabalho, mas isso é outra questão.
Não sei se de fato precisa disso, mas não vou dizer o contrário. Eu gosto desse critério.
Exclui C#? Então tá: https://www.techempower.com/benchmarks/#hw=ph&test=plaintext§ion=data-r22.
Para fazer uma boa seleção precisa de informações corretas. Se pegar dados falsos, fofocas, fakes news, etc. sobre algo, a seleção será falha.
Curiosamente eu excluiria em alguns casos por outros motivos, mas não esse.
Macro é ilusão. Quem tem experiência sabe que isso gera muito problema no longo prazo e acaba destruindo a produtividade. Claro que tem casos bons. Tem casos que é menos necessário do que parece.
C# tem mecanismo mais simples e menos poderoso, mas que atende quando é muito necessário,que é a geração de código. Não é tão elegante e bonitinho, mas isso pode ser feature, mesmo que pareça um besourinho com terninho esfarrapado (não vou postar o meme).
Deploy simples anda ficando raro. Mas ok, quase todos os casos pelo menos disfarçam bem :)
Se depois de escolher uma linguagem adequada fizer código acidentalmente complexos, com arquiteturas desnecessariamente exageradas, pra que? A capacidade do programador conta mais que a linguagem.
Inferir tipo pode ser um fator de inelegibilidade em alguns, ou muitos, casos. E isso piora a manutenção, e pode até criar problemas de robustez em casos extremos.
Não consigo ver que o sistema de tempo de vida possa impedir abstrações, mas ele cria dificuldades. Algumas pessoas alegam que mesmo que seja improdutivo no primeiro momento, depois ganha muito. Claro que não tanto quanto o gerenciamento automático e simplificado de memória, mesmo a custo de consumo de recursos e pausas indeterminadas.
Se não precisa da performance de Rust, então C# deveria estar muito dentro. Java também. E outras.
Eu gosto e desgosto de Go, mas não sei se é massante. Ficou parecendo uma coisa bem de gosto mesmo, muito subjetivo, quase um motivo inventado.
É, pode ser uma pena Swift estar na mão da Apple.
Eu acho CLisp mosca branca demais, mais que Crystal. Eu até uso mosca branca, mas por motivos de legado ou pra algo pessoal.
OCaml é legal, mas cai quase no mesmo problema. Eu até adotaria F# que é Ocaml "melhorada" para .NET.
Conheço pouco de Crystal, mas já investiguei um pouco. Não sei se ela é tudo isso que acha que é. Eu acho que tem um verniz que esconde os problemas. Por quase não ser usada, não sabemos direito dos problemas. Eu só tenho percebido os erros de Python agora, e eu já usei a linguagem há quase 20 anos. Popularidade ajuda a perceber melhor os problemas.
Se o meu caso fosse o seu eu iria de C#, até porque eu não precisaria aprender outra coisa e tem várias vantagens. Se eu quisesse mais economia de recursos, eu pensaria em Rust, daria um esbarrão em Go, e não descartaria C ou C++ em alguns casos. E se tivesse tempo, ainda tentaria Carbon.
Curiosamente uma linguagem que já usei muito e hoje em dia quase ninguém ouviu falar, é muito mais economia de recursos em vários critérios (mas não todos). Poder entregar aplicação com KBs em vez de MBs é ótimo né? (acabei de lembrar do cara que entrou praticamente 4 CRUDs em Laravel e a aplicação tinha 1GB). Liberar a memória assim que não precisa mais sem se preocupar também, né? Não ter uma VM maluca que demora de algumas dezenas ou centenas de vezes mais que o nativo, é a cereja no bolo, mesmo que ainda não tenha toda vantagem do nativo.
Uma coisa que eu acho engraçado quando a pessoa fala em economia de recursos e faz aplicação para web :D
Mas eu sempre gosto de ouvir mais sobre linguagens que eu não conheço bem. Obviamente não algo raso, ou óbvio (que está no site dela, na Wikipedia, doc, etc.)
Uma coisa que eu sempre vejo é as pessoas acreditarem que passaram todo o cenário, contexto, requisitos. Quase 100% das pessoas falham nisso. Eu mesmo já falhei inúmeras vezes. E muitas vezes ela não passa porque ela não tem (ou acham que já tem todos). Então a escolha será falha.
Parece que criou os critérios/requisitos para Crystal ganhar, ou seja, eles foram criados depois de saber o que Crytal tem. Parece licitação pública.
Faz sentido para você?
Espero ter ajudado. Em geral estou à disposição (sem abusos :D)
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).