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

Aqui estou eu, fazendo malabarismo pra enfiar Lua ou até o JS nas aplicações C++ pra rodar scripts, enquanto a galera tá aí escrevendo script em... C++? Interessante.

Pois é, o C++ moderno tem seus brinquedinhos, mas, sinceramente, esses dois primeiros motivos – STL rica e estar disponível em todo lugar – o Python já faz tudo isso, e sem drama, né?

E essa do binário isolado pra "facilitar a virtualização"? Sei lá, não faz muito sentido. Eu quero que meus scripts rodem dentro de um ambiente específico, com tudo configurado, não de forma isolada.

Pra ser sincero, usar uma linguagem compilada pra fazer scripts me parece mais coisa de quem quer bancar o espertão do que uma vantagem real. As linguagen dinâmicas existem justamente para isso???

Se você realmente precisa que seus scripts sejam rápidos — o que, convenhamos, já indica que talvez nem devesse ser um script — aí sim, manda ver, com Go ou D que entregam performance quase total com muitos menos complicação e boiler plate que C++.

Carregando publicação patrocinada...
1

Estou sem tempo pra comentar decentemente e o seu também nem explorou tudo o que poderia, mas quero reforçar que isso faz pouco sentido real. Claro que dá pra usar e se a pessoa só sabe C++, isso é algo muito raro, até faria algum sentido mais prático do que necessidade. Várias argumentações da PO não fazem sentido, pelo menos para quem é experiente.

E sim, Lua é ótima pra isso, e dá até pra gerar exe fácil se for muito necessário, resolve todas as questões que tenham alguma relevância (velocidade pra script...).

0

ai que tá qual versão do python você vai usar? pois o python tem atualizações frequentes pode cair na problematica de usar uma versão mais atualizada que outro.

no C++ as mudanças levam tempo, nunca são breakchanges e novas features são adicionadas somente 1 vez por decada.


STL do C++ é muito grande, equiparavel ao java.. muito maior que o Python, sem contar que você ainda tem beneficios de execução em comptime e muito mais polimorfismo maior que JS, Ruby ou Python.


Binário isolado faz total sentido, pois você não fica dependente de shell script para fazer coisas mais complexas ao usar containers, vamos supor que tu usa um gerador de documentação como doxygen, se usa-se python ou js teria que buildar uma imagem apenas para usar um pequeno script de filtro. já fazendo um binário estatico você pode usar imagens prontas do docker hub.

1

Cara, última breaking change do Python foi há mais de uma década, e ainda tenho uns scripts rodando em Python 2 sem estresse.

E sobre Docker, porque alguém vai criar uma imagem só pra rodar script? Qual a lógica? O script roda na mesma imagem que o source!!!

Enfim cada um com seu malabarismo. Mas eu acho que rodar uma linguagem de script dentro do C++, faz muito mais sentido do que fazer scripts em C++. Mas claro, devo ser só mais um espertão

1

mano, ta dificil de tu entender esse bagui. casos que você não passou ou não sabe dizer uma solução mais eficiente chama de "malabarismo", isso é atitude pequena.

se tu escreveu um código em Java, C, Python ou JS.. e ira gerar docs com doxygen, a imagem de doxygen (ex, da greenbone) não vem nenhuma linguagem de script além do shell original. (e nem deveria vir para manter a imagem limpa)

se usar o proprio python do projeto para fazer um script de filtro você vai precisar criar um dockerfile só para geração de documentação.

agora, se fazer um script de filtro escrito em uma linguagem compilada e montada dentro do volume sem precisar fazer nenhum docker build.

docker run --rm -v $(pwd):/app -w /app greenbone/doxygen:latest doxygen

dentro do Doxyfile

INPUT_FILTER 		   = ./doxfilter

e denovo, se fez um script em python com features de 3.10 e a pessoa tem python 3.9 não ira rodar. agora além de existir pouca atualizações de features em C++ é padrão fazer checkagem se o recurso existe e é muito mais facil porque você verifica muitos de uma vez só.

2

Calma aí, amigo, só tô tentando ter uma conversa agradável. Entendi o ponto, mas acho que você é que não pegou o meu. Se já tem um ambiente de desenvolvimento, o Python faz parte dele, então nem precisa de Docker pra isso, certo? Ou você já vai ter uma imagem de build, então não precisa de outra só pra um script.

Mas, olha, vai em frente se você acha que faz sentido. Já dei minha opinião. E, se ainda quiser insistir nessa ideia maluca, considere Go ou D, que permitem esse seu binário independente, seja lá o motivo, mas de forma muito mais ágil. D usa a STL de forma nativa, e a standard library do Go é uma delícia de usar.

E de novo: a questão da portabilidade nem é tão robusta quanto parece quando há dependências dinâmicas.

Escrever scripts em C++? Pra mim, é como fazer em Java ou C#.