Executando verificação de segurança...
2

Eu nunca tive tempo para analisar a fundo, e nem sei se tem informações para eu "validar" isso.

Quero dizer antes de mais nada que estudo não é prova. Muita gente não entende isso. Muitos estudos são falsos. Não que a pessoa teve má fé, mas ela adotou algo errado e obteve resultado errado. Claro que cabe a outra pessoa fazer um estudo que demonstre isso também. Mas mesmo sem um estudo, nunca confie que algo que está em um paper seja uma verdade absoluta. Ainda mais sem saber detalhes que podem nem estar nele.

Eu já vi isso há anos e me chamou a atenção por que TypeScript é tão pior que JavaScript. É para ser pior mesmo, não há dúvidas quanto a isso, mas é para ser bem pouco. E isso me levanta a sobrancelha e já considero que o estudo não foi bem conduzido. E pode ser que outros dados não sejam confiáveis. E Dart melhor que JavaScript?

Não consigo imaginar como Java pode ser mais eficiente que C#, e pior ainda que Swift ou Pascal.

O mesmo vale para Lisp (qual deles?) que parece estar super avaliada. Ocaml também.

Go parece que está abaixo do que poderia.

Pode ser que o teste pegue uma situação muito específica e nesse caso dá esse resultado. Ou até está comparando bananas com laranjas.

E claro, eu estou só especulando, o que eu falo aqui não tem base alguma, só estou postando que é preciso ter cuidado com esses estudos, é uma informação curiosa, serve para alguma coisa, mas não o use como uma informação definitiva.

E tenha em mente que ele tem 6 anos, eu sei que algumas "linguagens" melhoraram muito de lá pra cá especificamente nesse quesito.

Coloquei a palavra linguagem entre aspas, porque se avaliou uma implementação da linguagem em situação específica, a linguagem não pode ser reputada assim. Eu posso fazer um C que é bem pior que isso, e com esforço posso fazer algo melhor que deu aí. De fato, pega Lua, tem implementação que é absurdamente mais eficiente. Então usar o termo "linguagem" não é bem correto.

Faz sentido para você?

Espero ter ajudado.


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).

Carregando publicação patrocinada...
2

"Lies, Damn Lies and Benchmarks"

Guarda o link para perderes o final de semana
https://sites.google.com/view/energy-efficiency-languages

Qual o problema que eu vi olhando pidigts em https://github.com/greensoftwarelab/Energy-Languages ? A maioria das linguagens usam a GMP. Olhando o repositório da GMP, acho que é só C e Assembly. Então fica difícil dizer que determinada linguagem teve determinado comportamento já que é apenas uma parte. O resto é da biblioteca.

1

Obrigado pela indicação, vai ajudar.

Boa observação. Eu me lembro que um desses benchmarks alguém conseguiu colocar Java na frente em quase tudo. FOi até o motivo deles terem mudado as regras de como podiam mandar códigos para os testes. Porque o cara fez tudo em Assembly, chamou com o Java e e mostrou que Java era rápida.

Claro que observar a biblioteca tem seu valor também, mas em pontos muito específicos. Mas isso explica muito algumas discrepâncias.

Outro ponto importante é que esses testes não são o que realmenet cada linguagem é usada, então ficar o resultado teórico. E usar um critério diferente tem ressalvas a serem feitas, e aí pode ser que uma linguagem se saia mal e vão mostrar que o teste tem um viés.

Por isso sua citação é importante.

Tudo isso é um dado intweressante, mas não é confiável no sentido de usar para algo que exija um controle da eficiência, ou para tomar decisões importantes.

1

@maniero, pelos seus conhecimentos, você acha que possa existir uma tendência das pessoas de voltarem mais para a base das linguagens (C, C++ e etc)? Ou talvez elas prefiram "simplesmente" melhorar linguagens atuais para que possam ter uma eficiência melhor e mais ecológica?

Ou nenhuma das duas opções kkkk

Talvez uma terceira hipótese quem sabe, seria a de focar na construção de linguagens ecológicas, eficientes e fáceis de utilizar.

De todo jeito, nosso conhecimento em computação precisa estar mais avançado do que nunca, agora que a IA consegue nos trazer a facilidade para fazer certas coisas em computação, acho que daqui para frente a especialização é cada vez mais crescente e essencial.

1

Se eu entendi o que quer dizer, acho que não. Quem precisa vai continuar usando C, C++ ou vão para Rust ou vão aderir à Carbon, mas o grosso das pessoas não farão isso, e não tem porque fazer. Inclusive C# agora está se posicionando cada vez mais como uma opção mais fácil e simples para chegar perto dessas linguagens sem perder oque sempre foi. Go tem um pouco disso também, mas claro que o GC a complica estarem no mesmo nível. Atá Swift procura mais eficiência (pena que algo falha e não entrega tanto quanto parece que eles querem).

Então parece que vai ser mais melhoria do que existe para atender mais demandas de eficiência.

O que mais acho é que as pessoas cada vez mais terão poucas preocupações com eficiência, o que é um erro, mas entrega o resultado, o que já é o que as pessoas querem e não vejo isso mudando.

Não é muito fácil criar algo que atenda a todos esses requisitos. Para ser mais eficiente precisamos criar um fardo para o programador. E por enquanto nem IA pode ajudar muito (um pouco sim, se alguém construir uma ferramenta específica - existem algumas que não são IA mas ajudam).

Uma das ideias que eu tenho para gerenciamento de memória em uma linguagem é algo que nunca vi em linguagem alguma e é muito bom. Mas não é perfeito. E claro que consegue a mesma eficiência com C. Rust ou C++, mas com muito trabalho e que não conversa bem com outros códigos que não adotem a mesma técnica. O problema é que o mecanismo que eu bolei não atende 100% dos cenários, e os raros que não atende, terá que ser ineficiente e dará uma dor de cabeça enorme para o programador (pode ser mais fácil quando abre mão da robustez, como ocorre em Rust, boa parte do tempo em C++ e 100% em C). No normal o programador terá alguma facilidade, mas não é tanto quanto alocar objetos em linguagem de script. Terá eficiência de processamento, mas desperdiçará um pouco de memória. Não tenho uma avaliação boa ainda da complexidade que seria o compilador, mas não seria simples. Boa parte da eficiência está ligada ao gerenciamento de memória.

Se ler tudo o que eu posto, cuidado com IA. Ela não é o que as pessoas acham que é.

1

O que mais acho é que as pessoas cada vez mais terão poucas preocupações com eficiência, o que é um erro, mas entrega o resultado, o que já é o que as pessoas querem e não vejo isso mudando.

Isso está relacionado também a questão de que as linguagens mais "fáceis" de aprender também são as que são menos eficientes? E por conta da popularidade, e talvez a falta de aprofundamento, pode levar pessoas a não se importarem com conhecimentos mais complexos como eficiência energética?

Além é claro da nossa capacidade tecnológica atual que já produz celulares e computadores milhares de vezes mais potentes do que o de décadas atrás, quando foram criadas as linguagens como Assembly e C.

Não é muito fácil criar algo que atenda a todos esses requisitos. Para ser mais eficiente precisamos criar um fardo para o programador.

Aqui mencionasse sobre o fardo sobre o programador, e é por isso que mencionei a questão da IA.

Ela me parecer estar quebrando um pouco essa visão de "O que é ser um programador?", porque com tantas tecnologias hoje e acesso a conhecimento, é muito fácil uma pessoa criar um código, conseguir a explicação de como ele funciona e como fazer ele ir para o ar.

Agora, coisas mais complexas, vão demandar mais tempo e um melhor uso da tecnologia, mas não apenas isso, é necessário que existam pessoas capazes de manter as tecnologias atuais e desenvolver tecnologias ainda mais avançadas, o que acredito que a maioria dos programadores atuais não está preparada, eu inclusive.

Por isso menciono que talvez esse "fardo", seja algo que irá ser necessário para que consigamos progredir ainda mais na área de computação e tecnologia.

Acredito que a IA hoje, apesar de ser incrível em muitos aspectos, não é atualmente algo tão "milagroso" como o Surgimento da Internet, porém, acredito que ela está servindo muito mais para anunciar um novo futuro e presente e trazendo um choque de realidade.

É quase como o prelúdio de uma nova Revolução Industrial, que vem claro com diversos outros conflitos sociais.

E daí podemos até ter outra perspectiva, mais sociológica, será que o nosso entendimento da Inteligência Artificial no Capitalismo é o que ela deveria ser? Esse é o máximo da Inteligência Artificial? Acredito que ainda vamos estar sempre voltando a assuntos ainda mais filosóficos para também entender onde a tecnologia precisa avançar, e as motivaçõe para isso, além de Quem irá fazer isso?

Uma das ideias que eu tenho para gerenciamento de memória em uma linguagem é algo que nunca vi em linguagem alguma e é muito bom. Mas não é perfeito. [...] O problema é que o mecanismo que eu bolei não atende 100% dos cenários, e os raros que não atende, terá que ser ineficiente e dará uma dor de cabeça enorme para o programador [...] Não tenho uma avaliação boa ainda da complexidade que seria o compilador, mas não seria simples.

Não sei se já estás colocando em prática essa ideia de projeto, mas acredito que conseguiria diversas pessoas para apoiarem, e talvez até investimentos de empresas para produzir algo do tipo.

Acredito que para onde estamos indo no momento, ideias cada vez mais complexas serão necessárias para resolver problemas ainda mais complexos.

2

Acho que as pessoas procuram o que é mais fácil de usar. Até mesmo os melhores programadores, e até porque faz sentido. Os piores procuram as mais fáceis de aprender, e isso não faz sentido, a não ser que a pessoa use programação pontualmente, mas eu falo de engenheiros, o resto tanto faz. Nenhum problema em usar o mais fácil, eu faço isso, é o correto, desde que atenda bem. E a maioria dos problemas são bem atendidos para linguagens mais fáceis.

Ainda que esse fácil muitas vezes é ilusão. Tem caso que começa fácil mas em projetos grandes, que duram, o fácil pode se tornar difícil. Eu tenho bastante experiência nisso. A maioria das pessoas não trabalham em projetos grandes por anos, quase todo mundo pula de um projeto para o outro. Quase todos os projetos que eu peguei eram alguns que começaram bem e foram deteriorando com o tempo por usar algo que parecia fácil. Tentar entregar o mais rápido possível não vale a pena no longo prazo. Tem gente que trabalha em um 1 ano, em mais projetos que eu trabalhei na vida, obviamente que esses projetos são pequenos e simples ou são largados no meio do caminho.

Mas isso pouco importa quando falamos das linguagens de nível um pouco mais baixo. A questão do gerenciamento de memória é que pega. è o que mais faz diferença e muda completamente o panorama. Há quem diga que só existem 3 balas de prata na computação: a linguagem de alto nível (qualquer uma que não é Assembly e binário), a modularização (principalmente funções), e o gerenciamento automático de memória. Ninguém deve optar por uma linguagem que não tenha essas 3 coisas (no caso é mais o gerenciamento que falta em algumas) sem ter um motivo muito forte.

Eu acho que a questão energética não é tão importante mesmo, mas deveria ser mais. E claro que em alguns casos faz mais sentido que outros. Não é para economizar em tudo. Mas todo engenheiro deveria saber fazer e ter consciência disso. Se a pessoa nem pensa na questão e sabe como fazer se for necessário, no mínimo ela não é sênior. Para alguns trabalhos é importante. Curiosamente muitas vezes quando se coloca na nuvem, algo que eu tendo a evitar, mas se colocar, então faça direito, para o bem do projeto em todos os aspectos.

Só porque tem não quer dizer que devemos desperdiçar. É melhor o celular ter a bateria durando mais sempre. É melhor pagarmos menos por servidores. É melhor certas aplicações rodarem mais rápido e serem mais econômicas. Porque a eficiência de energia sempre entrega mais velocidade de execução, em alguns casos mais que outros.

E é o que eu falo sempre, a IA não vai programar para você, ela não é inteligente (nem artificial), ela não é capaz de resolver quaisquer problemas, principalmente os não computacionais. E em alguns casos, mesmo que faça, custa caro. A IA é muito falha para confiar nele. Vai melhorar, mas não fará os milagres que as pessoas estão esperando. E até onde eu sei ninguém está pesquisando uma IA para achar erros de gerenciamento de memória em código. A IA que usam hoje é um gerador de lero lero avançado. Ela ajuda no que é mais bobo, e só porque brilha a pessoa acha que é algo mágico

O gerenciamento de memória é muito complexo, para um ser humano, e pode ser para uma máquina. A IA ajuda muito em achar positivos, que podem ser falsos, e um humano precisa verificar, mas ela deixa passar negativos, e se um humano não verificar é um enorme problema, e o trabalho para verificar isso é tão grande quanto não usar a IA. Até pode dar algum ganho, mas também a falsa impressão de segurança. Não quero transformar isso em discussão da IA, já está bom até aqui.

O fardo existe onde precisa mesmo, não tem como escapar, no máximo dá para minimizar.

Não devo colocar em prática, realmente é um investimento alto e meu momento na área é outro. Na verdade eu não acho que haverá interesse. O ganho é interessante, mas tem um custo alto. Quem está acostumado com performance, não vai embarcar nisso, quem não liga para ela não verá vantagens, só as desvantagens. Algumas pessoas podem até gostar, Rust está aí pra provar isso. E justamente está aí mostrando que ela não resolve tudo e muita gente que usa C ou C++ nem cogita ir para Rust. Algumas pessoas sabem que ela não é tudo o que as pessoas dizem, apesar de ser bem boa.

Para algo se tornar popular não poderá ser complexo. Por isso a ideia de chat é muito boa... para a popularidade.