[Jogo] JavaScript |
Hydroper « Citoyen » 1610022960000
| 0 | ||
O servidor/VPN do Transformice é implementado no Java, qual em torno suporta módulos Lua criados pelos jogadores utilizando a VM LuaJ. Seria muito mais flexível poder usar JavaScript (ES2015) no lugar do Lua, sem usar transpilador, e poder utilizar pacotes do Node.js. Atualmente isso parece ser possível invocando o V8 no Java. Prós: a dit : Dernière modification le 1610023500000 |
Gamedroit « Citoyen » 1610270640000
| 0 | ||
Ainda com essas idéias? Entenda o seguinte, o Lua é utilizado porque sua API para Java não oferece brechas de segurança e você pode modificar a vontade suas variáveis globais. Mesmo que você pudesse utilizar uma API Javascript, a implementação de bibliotecas NodeJS poderia criar brechas de segurança no servidor. Eu também gostaria de JavaScript mas os contras são piores que os prós além disso: 1. Lua é feito para ser uma linguagem simples e portável, apesar de não ter uma built-in class, justamente por sua flexibilidade você pode desenvolver uma função/tabela que se comporta como classe. 2. Também há bibliotecas no Lua (Eu mesmo por hobby desenvolvo algumas utilizando a Lua C API), a função require foi desativada justamente por motivos de segurança. 3. Implementar uma nova API demandaria muito tempo já que eles teriam que portar todas as funções para o Javascript, além disso teriam que lidar com suas built-ins que poderiam expor o servidor. 4. O Transformice não usa VPN (Virtual Private Network, Rede Virtual Privada) mas sim VPS (Virtual Private Server, Servidor Virtual Privado), isso claro se não estiverem utilizando um Servidor Dedicado. 5. O servidor do Transformice não é "implementado" em Java, ele é feito/construído em Java. Dernière modification le 1610271300000 |
Hydroper « Citoyen » 1610282280000
| 0 | ||
Essa sugestão não tem nada haver com o uso de Node.js. Acontece que V8 suporta módulos introduzidos no ES2015 (import e export), e a resolução dos scripts importados vai de acordo com o que embute o script parente (o servidor Java). Edit: pelo jeito módulos não são suportados pelo J2V8. Referência. Mas dá para suportar source maps e utilizar um source bundler (coisa que não se vê em Lua). Edit²: Não faço ideia se source maps são suportados. Dernière modification le 1610282700000 |
Gamedroit « Citoyen » 1610348820000
| 0 | ||
Hydroper a dit : Ou seja, coisa que não tem utilidade em uma simples API para desenvolvimento de minigames. Cara, tudo pode ser adaptado ao Lua, é uma linguagem simples com uma API em C simples que permite criar qualquer biblioteca necessária para alcançar seus objetivos. Eu já fiz webview para Lua, minha própria versão do SDL para Lua, uma biblioteca socket (only windows) para Lua, uma biblioteca SQLite3 para Lua. Ainda por cima a linguagem Lua é recheada de surpresas, você sabia que, por exemplo, com debug.setmetatable você pode alterar o comportamento dos números? (Não sei se funciona com LuaJIT, a versão atual da API do Mice, mas no Lua original ele funciona). E se você precisa de uma classe em Lua, bem, você tem 2 jeitos de se fazer que é com metatable e function. Um exemplo com metatable Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 local player = {} e agora um exemplo com função Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 local function player(pname) Qual você vai usar depende do gosto. Aliás, Lua tem potencial para ser uma linguagem poderosa, ela só não te dá tudo de mão beijada. Os anos que passei aprendendo Lua eu também juntei diversos módulos e até criei alguns, no final eu tenho uma biblioteca de módulos Lua que dá suporte a zlib, arquivos ini, json, iteração com strings, extensão para math (contêm uma função extra que ajuda a melhorar a randomização do math.random), string e table, struct e xml, também não poderia deixar de lado sql, sockets, bitwise (versão modificada do Lua 5.1 que eu fiz com um parceiro), webview, sdl, tem até uma biblioteca que eu mesmo fiz antigamente para importar os tipos comuns do C no Lua, podendo usar C.Float, C.Double, C.Long, C.Int, C.Int64, C.Int32, C.Char, C.setval, C.getval. Enfim, os prós do Lua é sua incrível flexibilidade e portabilidade, é muito fácil fazer qualquer coisa com Lua e é uma linguagem com um bom collectgarbage, dificilmente um programa Lua vai pesar sua memória para processar os dados. Também gosto do conceito de "stack" por trás de como a linguagem funciona, todas as informações da linguagem são empilhadas. E se isso não é suficiente para você, acesse o site original que detalha mais alguns prós da linguagem: https://www.lua.org/portugues.html PS: Não julgue a linguagem através do TFM, se você nunca baixou um binário para rodar Lua no windows ou ao menos tentou compilar através do gcc não pode dizer que a linguagem não é boa. O TFM utiliza uma versão não oficial do Lua chamada Lua Just-In-Time (JIT) que mixa as versões 5.1 e 5.2 do Lua além de trazer algumas ferramentas poderosas porém é uma versão desatualizada, o Lua hoje em dia está na versão 5.4 que já contêm até mesmo operadores bitwise, melhorias de algoritmo... Dernière modification le 1610349780000 |
Hydroper « Citoyen » 1610372880000
| 0 | ||
Já baixei sim binário e até já experimentei com C/C++ em 2016. Já criei uma hierarquia de UI pro TFM: TextAreaShop. Eu sei mais do que você diz. Já fiz parte de editores de mapas (esses aí são de 2015 e outros de 2016, mas enviei em 2018 no MediaFire; inclusive tenho esse tópico de 2015). Já testei HTML5 em 2015-2016. Outra coisa aqui, experimento com PHP e AS3 enviado em 2015 no Youtube. Já mexi com XMLHttpRequest e URLRequest de AS3 em 2015-2016, criando meu próprio wrapper. Já fiz um fórum scratch usando PHP e MySQL no final de 2014, utilizando XAMPP para execução local e hospedagem do Hostinger. Agora, nunca quis usar WebKit através Lua/C. Já experimentei com SFML no C++ e já vi Love2D no Lua. JavaScript é muito mais prático e é simples, e ao invés do C++ eu prefiro Rust (experimentei, mas nunca usei). Porém ultimamente, desde 2017, trabalhei no ShockScript (ft. exemplo), meu própria variante de JS, que infelizmente não vai gerar código ainda, já que não tenho certeza de que trabalharei em finalizar o compilador, pois acabei deletando o streaming de WASM. Mesmo assim WebAssembly ainda não suporta reference types, então prefiro esperar o W3C resolver algumas coisas. Se estiver curioso, essas são as sources do compilador. Ele só não gera código, mas reporta errors/warnings. Essa linguagem adota poucas coisas do inexistente ECMAScript 4 (pouco mesmo), e os únicos tipos numéricos são Number, BigInt e Char. sxc --includeSources Exemplo.sx --includeSources pastaComSources. Como se vê, a linguagem ganhou um symbol solver, com inferência básica de tipo nos variable bindings. O primeiro symbol solver foi feito em 2019, teve que passar por bug fixing, mudança e simplificação de features. I a dit : Dernière modification le 1610377800000 |
Gamedroit « Citoyen » 1610382780000
| 0 | ||
Hydroper a dit : Hm, eu e meu team mate estamos desenvolvendo uma linguagem em Go, ela adota 19 tipos(apesar disso não será fortemente tipada, você vai poder escolher entre definir uma variável multi-type ou uma variável tipada), spread operator, bitwise operator, arrow functions... Em vez de usar uma linguagem como base para interpretar nós criamos nosso Lexer, Parser e AST Dernière modification le 1610386740000 |
Hydroper « Citoyen » 1610384280000
| 0 | ||
Contistente3 a dit : ShockScript também suporta any, no qual toda propriedade é resolvida no runtime. Um pouco antes ShockScript iria ter tipo estrutural de funções: Porém quando eu estava nessa ideia eu estava querendo que, como dialeto do ECMAScript, a linguagem não tivesse reflexão, mas agora vai ter, e por mim tornou inútil esse tipo estrutural de funções. Agora seria apenas um desses: Como demonstrado aqui, undefined, String ou Array literal automaticamente converte para enumeração, usando limitação de tipo. O único tipo estrutural que vai ter são tuples: Sobre a síntaxe, semicolons é a mesma coisa do ECMAScript: opcionais. E no geral não tem problema omitir semicolons no ShockScript, comparado ao ECMAScript: eles são automaticamente inseridos conforme a indentação do código. Tipos nuláveis (incluem undefined e null num tipo existente): A linguagem também suporta uma classe Observable.<T>, cuja referência é utilizada como se fosse T e, quando assignada com um novo valor, dispara os listeners do Observable. Classes primitivas e classes uniões são imutáveis e representadas diretamente na memória (unboxed, binding o:C) ou indiretamente (boxed como referência any ou Object, binding o:* ou o:Object). Eu também gosto da aparência do VBScript, mas VBScript é uma linguagem em que falta coisa. No momento vou mais usar JavaScript e deixar ShockScript sem codegen (a coisa não tem Language Specification, está tudo comigo). Dernière modification le 1610405520000 |
Gamedroit « Citoyen » 1610407080000
| 0 | ||
Bom, parece que esta sugestão acabou virando uma discussão, se quiser conversar é só chamar. Mesmo assim essas são as ideias utilizadas para formar minha linguagem de programação que estou fazendo com meu amigo: Nossas ideias veio de diversas linguagens que estudamos juntos e tem muito mais ainda, nos inspiramos no Lua para a nossa linguagem então também usamos um sistema de empilhamento e terá uma API para desenvolvimento de bibliotecas. A ideia da nossa linguagem é ter um ambiente poderoso de desenvolvimento que permite flexibilidade assim como o Lua mas que também é voltado para Ciência dos Dados. Dernière modification le 1610415780000 |
1 | ||
Sou contra diante das informações que o Contistente3 apresentou. São mais pontos negativos do que positivos |