Ir para conteúdo

Explicando a discussão sobre o desempenho do Script [Completo] [Debate]


!Afonso

Posts Recomendados

Olá, sou o Afonso e hoje vim para explicar algumas coisas do Skript.

 

Comparar uma linguagem de programação padrão que é usado em várias plataformas para construir qualquer pedaço de software para uma linguagem de script para um jogo particular. Se você quer saber qual o mais poderoso, sem dúvidas é o Java sem discussão, se skript é prático, é de se debater.

 

Agora, se tudo que você quer fazer são scripts que ficam completamente no âmbito do Minecraft e não precisam implementar qualquer coisa fora do que as ferramentas atuais fornece com Skript, use-o. Um script poderá muito bem substituir um plugin, porém se você sabe java é bem melhor usar um plugin, mas não há nada de errado em usar script.

Minha única queixa com script é a implementação real. A documentação e a própria linguagem é escorregadia, mas quando você olha pra fonte em Java é interpretada. Usar um script grande ou pequeno não faz a mínima diferença se estiver programado certo, mas tenha em mente que:
- Seu código será difícil de organizar devido à linguagem não ter nenhum modelo OOP
- Seu código será radicalmente mais lento do que escrever com a mesma funcionalidade em Java.

Se você quer usar script para nada intensivo, e que não precisem de uma estrutura OOP vá em frente e use Script, caso contrário é melhor olhar para o Java (ou Lua através Lukkit ou Python através de um dos vários carregadores Python plug-in).

Para qualquer um que argumenta que skript não tem sérios problemas de desempenho, o melhor que tem para melhorar sua situação está a serialização de código skript em expressões representadas por objetos em Java (então tecnicamente há uma certa quantidade de processamento que acontece de antemão, mas está longe de ser ideal.) Após este processo, você está executando um script que se traduz em toneladas e toneladas de chamadas para estas expressões, cada uma representada por seus próprios objetos. Isso é ridículo quando comparado com a sobrecarga de opcodes em bytecode Java.

Vamos comparar isso a um nível muito baixo. Trabalhando com variáveis primitivas no nível de bytecode em Java é quase (se não tão rápido) como o código nativo C/C++.

bipush 5
istore_0

 

Duas instruções que são tratadas muito rapidamente pela JVM e o compilador JIT.

Apenas para criar alguma medida sobre esta lacuna, eu vou mostrar como LuaJ (que compila fonte Lua para bytecode Java) faria isso:

 

aload_0

new #2; //class org/luaj/vm2/LuaValue

invokespecial #3; //Method LuaValue."<init>"

Este é apenas para instanciar um objeto, e faz um monte no fundo (alocar uma quantia de memória para a classe, usando invokespecial, etc.)

Há mais depois desta se a variável é global: o valor é então adicionado à tabela de globals (ou a mesa para o escopo atual se é uma variável local) o que geraria 40 linhas de bytecode, lotes de hashing e outras coisas acontecendo.

Esta é uma enorme quantidade de processamento para declarar uma única variável . Este é com uma biblioteca comumente usado, poderoso chamado LuaJ. 

 
Skript vai uma magnitude pior do que isso. Uma vez que não instrumento ou gerar qualquer coisa no nível de bytecode, cada operação em si vai se traduzir em uma chamada de uma das expressões no contexto atual que skript-lo funcionando em - assim instanciar algo teria que ser feito através de um objeto de expressão , no topo de instanciar uma classe para o tipo skript abstrato. 
 
Ele não pára por aí. Coisas ridículas como laços que se possam traduzir em um único Goto opcode em LuaJ ou Java está realmente envolvido em suas próprias expressões e são executadas por eles também, que referenciar uma lista de execuções que têm de ser iterado, chamando aquelas subjacentes expressões bem - uma quantidade ridícula de sobrecarga para programação simples, fundamental. 

Se você quer aprender programação também recomendo java antes de script. Ajuda no longo prazo, ganhar experiência de uma linguagem de programação. Acostume-se a sintaxe de praticamente todas as línguas. O que quero dizer é quando você aprender uma linguagem de programação (como Java) não é difícil de aprender outra.

Se você sabe como usar Skript, você pode conseguir muito semelhantes, se não exatamente os mesmos resultados a partir de quando você desenvolver um plugin em java. Skript vem com algumas limitações óbvias, no entanto, eu imagino que essas limitações sendo questões bastante complexas. E se eles são complexos, eles vão ser complexa em java, bem como, o que significa que você provavelmente não vai usar esse tipo de funções por alguns anos de qualquer maneira. Assim, apesar de tudo, eu acredito que se você não está disposto a dedicar tempo para aprender uma linguagem como java ou você só vai estar usando suas habilidades para criação de plugins para o seu servidor, acredito que skript será o ajuste perfeito para você(não pra tudo). Claro que seus projetos não estão indo para ser perfeito na primeira vez e aqueles projetos são provavelmente a vez que você encontrou ser de baixa qualidade e inútil.

Skript é basicamente um DSL interpretado. Skript não é apenas para tarefas simples. Você pode fazer pleno direito modos de jogo, minigames e toda uma série de características diferentes. 
Skript - Extremamente fácil de usar e desenvolvimento é rápido, mas seus usos são limitados; completa API torneira / bukkit não pode ser acessado significado há certas coisas que não pode fazer. 
 
Java: Útil no 'mundo real', mais apoio e ajuda disponível, mais APIs, mas muito, o desenvolvimento muito mais lento.  Eu acredito que é uma linguagem de script fortemente subestimado com grande potencial para aqueles que são novos para a programação. 
Skript é certamente uma forma legal e simples de ir sobre a implementação de novas funcionalidades, mas é longe de ser tão poderoso como Java. Em Java, você pode escrever muito bem o que você quer (única limitação é o que a linguagem não pode fazer). Criando, por exemplo, uma representação estilo REST do seu servidor é muito menos trabalho em Java do que em Skript (provavelmente?) - tudo que você precisa são algumas bibliotecas e você está pronto para ir! Em Skript, você está limitado a tudo o que vem com Skript ou um add-on. Deseja estender o conjunto de recursos de Skript com um add-on? You'l precisa saber Java para fazer isso! 

Java Prós:
rico em recursos
Muito poderoso
documentação Superb (a maioria das bibliotecas e os javadocs núcleo API)
IDEs são extremamente úteis
gerenciamento de dependência (Maven / Gradle)
Java Contras:
Pode demorar um pouco para se acostumar com
Compilar, correção de bug, recompilar ...
Skript Prós:
design simples que não impõe muitos limites (em relevância para Minecraft jogo)
documentação de alta qualidade
On-the-fly roteiro recarregando
Crescente número de add-ons
Skript Contras:
Precisa de add-ons para ir além do escopo do mecanismo de script principal. não existem add-ons para suas necessidades? Acho que eu deveria usar Java para fazer um ...
Não há IDEs (que eu sei de um plugin Texto Sublime, mas eu não chamaria isso de um IDE)

Também não devemos esquecer os outros motores de script, como Denizen e CommandHelper! : 3
 
Conclusão: Quer usar script? Use-o sem problemas, porém use os scripts certos. Uma pessoa que começou com essa discussão toda (MrPower) reclamou que os scripts ferraram o servidor dele, eu sigo comigo "parece que o jogo virou não é mesmo?", porque eu dizia que os scripts dele de evento estavam programados de uma forma que lagaria e ninguém nem sabia que eu existia. Cara, se você quer aprender uma linguagem vá aprender Java, script é muito bom para ser usado, tem os add-ons para muitas precisões.. Eu mesmo já tive servidores com scripts e deram muito certo, o bom é mesclar.

Quem for comentar algo abaixo/quiser implementar algo aqui me mande um MP vou colocar com o devido crédito, porém vou analisar antes. Também pode ser um debate,  diga seus questionamentos abaixo. Se vocês gostaram do tópico deixem um
curtir e é isso.

 

Link para o comentário
Compartilhar em outros sites

Comecei fazer skript a uns tempos, e nao me arrependo. Considero o skript uma forma de se preparar para fazer plugins, já que e bem parecido em algumas coisas

 

:D é diferente... Mas aprender script é essencial.

Link para o comentário
Compartilhar em outros sites

lag mais lag mais lag final de tudo CAI O SV 

 

Sério mesmo que você em sã consciência tem que vir em um tópico informativo e estudado com intuito de ajudar/informar as pessoas pra comentar asneira, pra falar merda, pra falar bosta, pra ser babaca?

Link para o comentário
Compartilhar em outros sites

@@!Afonso Não babaca esta sendo voce cara... apenas falei mais lag lag lag e cai o servidor apenas foi oque eu ja vi acontecer entao se voce acha isso bosta guarda pra voce lek... essa for a opinião que voce pediu eu dei verme pede as coisa e nao aguenta a verdade vsfd blz...

Link para o comentário
Compartilhar em outros sites

Script é legal até, porém vale lembrar que Java é um investimento a longo prazo ou seja se um dia você falar @%&#036;#~&amp;I Minecraft e nunca mais quiser jogar, 

você ainda sabe um linguagem de progamação que pode usar em diversas coisas não só no Minecraft.

Editado por Luccas
Link para o comentário
Compartilhar em outros sites

@@!Afonso Não babaca esta sendo voce cara... apenas falei mais lag lag lag e cai o servidor apenas foi oque eu ja vi acontecer entao se voce acha isso bosta guarda pra voce lek... essa for a opinião que voce pediu eu dei verme pede as coisa e nao aguenta a verdade vsfd blz...

não dou continuidade, só olhe seu comentário e repense.

 

fica a dica, se você teve empenho aprender skript se esforce e aprenda java q vale mais a pena

 

é minha opinião é melhor logo aprender um java e fazer tudo certo do que usar skript e ter perigo de causar algo 

eu sei java, já faço alguns plugins. sempre to vendo tutorial.. Só acho que os plugins que eu faço free já tem no google e os que ficam bons eu privatizo. Mas obrigado.

 

Script é legal até, porém vale lembrar que Java é um investimento a longo prazo ou seja se um dia você falar @%&#036;#~&amp;I Minecraft e nunca mais quiser jogar, 

você ainda sabe um linguagem de progamação que pode usar em diversas coisas não só no Minecraft.

Exato.

Link para o comentário
Compartilhar em outros sites

Bom, eu desde que entrei no fórum conheci o skript e sempre utilizei sem problemas. O problema é que nao é tudo que se deve fazer no skript...

 

Eu nunca tive problemas de lags, tem gente que acha que o povo que usava skript começou a aprender java por que skript laga, só que nao é bem assim... Eu por exemplo aprendi por que acho que é bem melhor e da pra fzr diversas coisas que nao tem no skript, pois skript é limitado.

Link para o comentário
Compartilhar em outros sites

Bom, eu desde que entrei no fórum conheci o skript e sempre utilizei sem problemas. O problema é que nao é tudo que se deve fazer no skript...

 

Eu nunca tive problemas de lags, tem gente que acha que o povo que usava skript começou a aprender java por que skript laga, só que nao é bem assim... Eu por exemplo aprendi por que acho que é bem melhor e da pra fzr diversas coisas que nao tem no skript, pois skript é limitado.

exatamente eu tbm parei com skript por este motivo e tbm por ser orgulhoso e tenta sempre fazer tudo proprio kk meu servidor era inteiro em skript e agr n tem mais fiz tudo em plugin

Link para o comentário
Compartilhar em outros sites

Bom, eu desde que entrei no fórum conheci o skript e sempre utilizei sem problemas. O problema é que nao é tudo que se deve fazer no skript...

 

Eu nunca tive problemas de lags, tem gente que acha que o povo que usava skript começou a aprender java por que skript laga, só que nao é bem assim... Eu por exemplo aprendi por que acho que é bem melhor e da pra fzr diversas coisas que nao tem no skript, pois skript é limitado.

 

 

exatamente eu tbm parei com skript por este motivo e tbm por ser orgulhoso e tenta sempre fazer tudo proprio kk meu servidor era inteiro em skript e agr n tem mais fiz tudo em plugin

Exatamente, a discussão não é o melhor e sim que o skript não é ruim como falam, pois java é melhor.

Link para o comentário
Compartilhar em outros sites

Muito bom o tópico, Acredito que o Skript é pra complementar, tipo criar um comando ou até mesmo implementar alguma coisa a um plugin, eu uso skript a bastante tempo não tive sérios problemas, mas como a maioria disse, Se Você aprendeu a criar Skript, Agora Força e tenta criar Plugins.

Link para o comentário
Compartilhar em outros sites

Muito bom o tópico, Acredito que o Skript é pra complementar, tipo criar um comando ou até mesmo implementar alguma coisa a um plugin, eu uso skript a bastante tempo não tive sérios problemas, mas como a maioria disse, Se Você aprendeu a criar Skript, Agora Força e tenta criar Plugins.

Obrigado, sim... sempre é bom aprender a fazer plugins

 

Muito bom este tópico, me esclareceu algumas dúvidas e ajudou a entender um pouco mais.

Parabéns c:

Obrigado ;)

 

 

Belo tópico, parabéns.

 

Espero que tenha calado a boca desses babacas que tem/tinham um "preconceito" com skript.

 

 

Obrigado, duvido que cale, ve lá os primeiros comentários

Link para o comentário
Compartilhar em outros sites

Topico Intuitivo, Uso Bastantes Skripts Bem Organizados 50% do meu server e feito de Skripts e nao vejo lag algum o cara coloca um skript todo desgra$%#@ e que que nao fique lag 

mas agora estou passando todos skripts pra plugins basicamente meu server agora tem 10% de skripts estou passando a usa mais plugins por que mecho mais nessa area 

Skript Não da Lag 

Editado por Smith_S
Link para o comentário
Compartilhar em outros sites

Eu não confiaria em por no servidor alguns skripts que seriam a base do servidor, existem muitos players mal intencionados, mas não é por isso que deixo de utilizar. Faço skripts unicamente com utilidades para a STAFF, nada publico aos membros.

Link para o comentário
Compartilhar em outros sites

 

Olá, sou o Afonso e hoje vim para explicar algumas coisas do Skript.

 

Comparar uma linguagem de programação padrão que é usado em várias plataformas para construir qualquer pedaço de software para uma linguagem de script para um jogo particular. Se você quer saber qual o mais poderoso, sem dúvidas é o Java sem discussão, se skript é prático, é de se debater.

 

Agora, se tudo que você quer fazer são scripts que ficam completamente no âmbito do Minecraft e não precisam implementar qualquer coisa fora do que as ferramentas atuais fornece com Skript, use-o. Um script poderá muito bem substituir um plugin, porém se você sabe java é bem melhor usar um plugin, mas não há nada de errado em usar script.

 

Minha única queixa com script é a implementação real. A documentação e a própria linguagem é escorregadia, mas quando você olha pra fonte em Java é interpretada. Usar um script grande ou pequeno não faz a mínima diferença se estiver programado certo, mas tenha em mente que:

- Seu código será difícil de organizar devido à linguagem não ter nenhum modelo OOP

- Seu código será radicalmente mais lento do que escrever com a mesma funcionalidade em Java.

Se você quer usar script para nada intensivo, e que não precisem de uma estrutura OOP vá em frente e use Script, caso contrário é melhor olhar para o Java (ou Lua através Lukkit ou Python através de um dos vários carregadores Python plug-in).

Para qualquer um que argumenta que skript não tem sérios problemas de desempenho, o melhor que tem para melhorar sua situação está a serialização de código skript em expressões representadas por objetos em Java (então tecnicamente há uma certa quantidade de processamento que acontece de antemão, mas está longe de ser ideal.) Após este processo, você está executando um script que se traduz em toneladas e toneladas de chamadas para estas expressões, cada uma representada por seus próprios objetos. Isso é ridículo quando comparado com a sobrecarga de opcodes em bytecode Java.

 

Vamos comparar isso a um nível muito baixo. Trabalhando com variáveis primitivas no nível de bytecode em Java é quase (se não tão rápido) como o código nativo C/C++.

 

bipush 5

istore_0

 

Duas instruções que são tratadas muito rapidamente pela JVM e o compilador JIT.

Apenas para criar alguma medida sobre esta lacuna, eu vou mostrar como LuaJ (que compila fonte Lua para bytecode Java) faria isso:

 

aload_0

new #2; //class org/luaj/vm2/LuaValue

invokespecial #3; //Method LuaValue."<init>"

 

Este é apenas para instanciar um objeto, e faz um monte no fundo (alocar uma quantia de memória para a classe, usando invokespecial, etc.)

Há mais depois desta se a variável é global: o valor é então adicionado à tabela de globals (ou a mesa para o escopo atual se é uma variável local) o que geraria 40 linhas de bytecode, lotes de hashing e outras coisas acontecendo.

Esta é uma enorme quantidade de processamento para declarar uma única variável . Este é com uma biblioteca comumente usado, poderoso chamado LuaJ. 

 
Skript vai uma magnitude pior do que isso. Uma vez que não instrumento ou gerar qualquer coisa no nível de bytecode, cada operação em si vai se traduzir em uma chamada de uma das expressões no contexto atual que skript-lo funcionando em - assim instanciar algo teria que ser feito através de um objeto de expressão , no topo de instanciar uma classe para o tipo skript abstrato. 
 
Ele não pára por aí. Coisas ridículas como laços que se possam traduzir em um único Goto opcode em LuaJ ou Java está realmente envolvido em suas próprias expressões e são executadas por eles também, que referenciar uma lista de execuções que têm de ser iterado, chamando aquelas subjacentes expressões bem - uma quantidade ridícula de sobrecarga para programação simples, fundamental. 

Se você quer aprender programação também recomendo java antes de script. Ajuda no longo prazo, ganhar experiência de uma linguagem de programação. Acostume-se a sintaxe de praticamente todas as línguas. O que quero dizer é quando você aprender uma linguagem de programação (como Java) não é difícil de aprender outra.

Se você sabe como usar Skript, você pode conseguir muito semelhantes, se não exatamente os mesmos resultados a partir de quando você desenvolver um plugin em java. Skript vem com algumas limitações óbvias, no entanto, eu imagino que essas limitações sendo questões bastante complexas. E se eles são complexos, eles vão ser complexa em java, bem como, o que significa que você provavelmente não vai usar esse tipo de funções por alguns anos de qualquer maneira. Assim, apesar de tudo, eu acredito que se você não está disposto a dedicar tempo para aprender uma linguagem como java ou você só vai estar usando suas habilidades para criação de plugins para o seu servidor, acredito que skript será o ajuste perfeito para você(não pra tudo). Claro que seus projetos não estão indo para ser perfeito na primeira vez e aqueles projetos são provavelmente a vez que você encontrou ser de baixa qualidade e inútil.

 

Skript é basicamente um DSL interpretado. Skript não é apenas para tarefas simples. Você pode fazer pleno direito modos de jogo, minigames e toda uma série de características diferentes. 
Skript - Extremamente fácil de usar e desenvolvimento é rápido, mas seus usos são limitados; completa API torneira / bukkit não pode ser acessado significado há certas coisas que não pode fazer. 
 
Java: Útil no 'mundo real', mais apoio e ajuda disponível, mais APIs, mas muito, o desenvolvimento muito mais lento.  Eu acredito que é uma linguagem de script fortemente subestimado com grande potencial para aqueles que são novos para a programação. 
Skript é certamente uma forma legal e simples de ir sobre a implementação de novas funcionalidades, mas é longe de ser tão poderoso como Java. Em Java, você pode escrever muito bem o que você quer (única limitação é o que a linguagem não pode fazer). Criando, por exemplo, uma representação estilo REST do seu servidor é muito menos trabalho em Java do que em Skript (provavelmente?) - tudo que você precisa são algumas bibliotecas e você está pronto para ir! Em Skript, você está limitado a tudo o que vem com Skript ou um add-on. Deseja estender o conjunto de recursos de Skript com um add-on? You'l precisa saber Java para fazer isso! 

 

Java Prós:
rico em recursos
Muito poderoso
documentação Superb (a maioria das bibliotecas e os javadocs núcleo API)
IDEs são extremamente úteis
gerenciamento de dependência (Maven / Gradle)
Java Contras:
Pode demorar um pouco para se acostumar com
Compilar, correção de bug, recompilar ...
Skript Prós:
design simples que não impõe muitos limites (em relevância para Minecraft jogo)
documentação de alta qualidade
On-the-fly roteiro recarregando
Crescente número de add-ons
Skript Contras:
Precisa de add-ons para ir além do escopo do mecanismo de script principal. não existem add-ons para suas necessidades? Acho que eu deveria usar Java para fazer um ...
Não há IDEs (que eu sei de um plugin Texto Sublime, mas eu não chamaria isso de um IDE)

 

Também não devemos esquecer os outros motores de script, como Denizen e CommandHelper! : 3

 
Conclusão: Quer usar script? Use-o sem problemas, porém use os scripts certos. Uma pessoa que começou com essa discussão toda (MrPower) reclamou que os scripts ferraram o servidor dele, eu sigo comigo "parece que o jogo virou não é mesmo?", porque eu dizia que os scripts dele de evento estavam programados de uma forma que lagaria e ninguém nem sabia que eu existia. Cara, se você quer aprender uma linguagem vá aprender Java, script é muito bom para ser usado, tem os add-ons para muitas precisões.. Eu mesmo já tive servidores com scripts e deram muito certo, o bom é mesclar.

 

Quem for comentar algo abaixo/quiser implementar algo aqui me mande um MP vou colocar com o devido crédito, porém vou analisar antes. Também pode ser um debate,  diga seus questionamentos abaixo. Se vocês gostaram do tópico deixem um

curtir e é isso.

 

Bela explicação!!

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...