<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: JLScript</title>
    <description>The latest articles on DEV Community by JLScript (@eoh_lczinn).</description>
    <link>https://dev.to/eoh_lczinn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4059515%2F174a79f4-8ff1-4754-bf1e-1e77abf116ff.png</url>
      <title>DEV Community: JLScript</title>
      <link>https://dev.to/eoh_lczinn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eoh_lczinn"/>
    <language>en</language>
    <item>
      <title>JLScript e open source?</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Fri, 16 Oct 2026 01:26:08 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/jlscript-e-open-source-dbn</link>
      <guid>https://dev.to/eoh_lczinn/jlscript-e-open-source-dbn</guid>
      <description>&lt;h2&gt;
  
  
  JLScript não é Open Source porque
&lt;/h2&gt;

&lt;p&gt;O &lt;strong&gt;JLScript não é um projeto open source&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Isso significa que o código-fonte principal da linguagem, incluindo partes internas do interpretador, runtime, compilador, ferramentas centrais e outros componentes responsáveis pelo funcionamento interno do projeto, &lt;strong&gt;não é disponibilizado publicamente para livre acesso, modificação ou redistribuição&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A decisão de manter o núcleo do JLScript fechado faz parte da forma como o projeto está sendo desenvolvido e organizado.&lt;/p&gt;

&lt;p&gt;O objetivo não é impedir que pessoas utilizem a linguagem, criem projetos, estudem sua sintaxe ou desenvolvam bibliotecas para o ecossistema. A proposta é proteger a implementação interna do projeto e manter um controle maior sobre sua evolução.&lt;/p&gt;

&lt;p&gt;Usuários podem utilizar o JLScript através das ferramentas oficiais, documentação, bibliotecas e recursos disponibilizados publicamente.&lt;/p&gt;

&lt;p&gt;O que permanece restrito é a implementação interna da linguagem.&lt;/p&gt;

&lt;h3&gt;
  
  
  O que isso significa na prática
&lt;/h3&gt;

&lt;p&gt;O fato de o JLScript não ser open source não significa que a linguagem seja fechada para uso.&lt;/p&gt;

&lt;p&gt;Desenvolvedores podem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;escrever programas em JLScript;&lt;/li&gt;
&lt;li&gt;utilizar bibliotecas oficiais;&lt;/li&gt;
&lt;li&gt;criar aplicações;&lt;/li&gt;
&lt;li&gt;estudar a documentação;&lt;/li&gt;
&lt;li&gt;aprender a sintaxe;&lt;/li&gt;
&lt;li&gt;utilizar ferramentas do ecossistema;&lt;/li&gt;
&lt;li&gt;criar bibliotecas próprias;&lt;/li&gt;
&lt;li&gt;desenvolver projetos que utilizem JLScript;&lt;/li&gt;
&lt;li&gt;compartilhar código escrito em &lt;code&gt;.jls&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;participar da comunidade;&lt;/li&gt;
&lt;li&gt;enviar sugestões e relatar problemas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O que não é disponibilizado publicamente é o código-fonte interno responsável pela implementação principal da linguagem.&lt;/p&gt;

&lt;p&gt;Isso inclui partes responsáveis pelo funcionamento interno, execução e desenvolvimento do núcleo do projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Código escrito em JLScript
&lt;/h2&gt;

&lt;p&gt;Existe uma diferença importante entre o &lt;strong&gt;código-fonte da linguagem&lt;/strong&gt; e o &lt;strong&gt;código criado pelos usuários utilizando JLScript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Um desenvolvedor pode criar um programa como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "JLScript"

se (nome == "JLScript") {
    mostrar("Olá!")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse código pertence ao projeto ou ao desenvolvedor que o criou, de acordo com a licença e os termos definidos por ele.&lt;/p&gt;

&lt;p&gt;O fato de a implementação do JLScript ser fechada não significa que todo programa escrito utilizando a linguagem também seja fechado.&lt;/p&gt;

&lt;p&gt;Um desenvolvedor pode, por exemplo, criar uma biblioteca em JLScript e decidir publicá-la como open source.&lt;/p&gt;

&lt;p&gt;Outro desenvolvedor pode criar um sistema privado.&lt;/p&gt;

&lt;p&gt;Outro pode desenvolver uma ferramenta gratuita.&lt;/p&gt;

&lt;p&gt;Essas decisões pertencem ao autor de cada projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bibliotecas da comunidade
&lt;/h2&gt;

&lt;p&gt;O ecossistema JLScript foi pensado para permitir que desenvolvedores criem suas próprias bibliotecas e recursos.&lt;/p&gt;

&lt;p&gt;Essas bibliotecas podem possuir licenças diferentes da linguagem principal.&lt;/p&gt;

&lt;p&gt;Por exemplo, um desenvolvedor pode criar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;minha-biblioteca.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e publicar essa biblioteca no GitHub utilizando uma licença open source.&lt;/p&gt;

&lt;p&gt;Isso não altera a licença do núcleo do JLScript.&lt;/p&gt;

&lt;p&gt;Dessa forma, o ecossistema pode possuir projetos abertos mesmo que a implementação principal da linguagem permaneça privada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por que o núcleo é fechado
&lt;/h2&gt;

&lt;p&gt;A decisão de manter o código-fonte principal fechado está relacionada principalmente à proteção e ao controle do desenvolvimento da linguagem.&lt;/p&gt;

&lt;p&gt;O JLScript ainda está em evolução.&lt;/p&gt;

&lt;p&gt;Sua arquitetura, ferramentas, bibliotecas e sistemas internos continuam recebendo alterações.&lt;/p&gt;

&lt;p&gt;Manter o núcleo privado permite que mudanças estruturais sejam realizadas de maneira controlada, sem que versões internas incompletas ou experimentais sejam tratadas como implementações oficiais.&lt;/p&gt;

&lt;p&gt;Também permite manter uma única direção para o desenvolvimento do projeto.&lt;/p&gt;

&lt;p&gt;A linguagem possui uma identidade própria, uma arquitetura própria e uma visão de desenvolvimento definida.&lt;/p&gt;

&lt;p&gt;O código interno representa uma parte importante dessa identidade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segurança e integridade
&lt;/h2&gt;

&lt;p&gt;Outro objetivo é proteger a integridade das distribuições oficiais.&lt;/p&gt;

&lt;p&gt;Quando um usuário instala uma versão oficial do JLScript, a intenção é que exista uma origem clara para essa versão.&lt;/p&gt;

&lt;p&gt;Distribuições oficiais devem ser identificáveis e separadas de versões modificadas por terceiros.&lt;/p&gt;

&lt;p&gt;Isso ajuda a evitar situações em que uma versão modificada possa ser apresentada como se fosse uma versão oficial da linguagem.&lt;/p&gt;

&lt;p&gt;O projeto busca manter uma diferença clara entre:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JLScript oficial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;software de terceiros baseado ou integrado ao JLScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso também facilita a manutenção, correção de erros e distribuição de atualizações.&lt;/p&gt;

&lt;h2&gt;
  
  
  Controle de versões
&lt;/h2&gt;

&lt;p&gt;As versões oficiais do JLScript são definidas pelo projeto.&lt;/p&gt;

&lt;p&gt;Atualizações podem incluir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;alterações na sintaxe;&lt;/li&gt;
&lt;li&gt;novos recursos;&lt;/li&gt;
&lt;li&gt;novas bibliotecas;&lt;/li&gt;
&lt;li&gt;correções;&lt;/li&gt;
&lt;li&gt;melhorias de desempenho;&lt;/li&gt;
&lt;li&gt;ferramentas adicionais;&lt;/li&gt;
&lt;li&gt;mudanças no runtime;&lt;/li&gt;
&lt;li&gt;melhorias no compilador;&lt;/li&gt;
&lt;li&gt;integrações com o ecossistema.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Manter o código principal fechado permite que essas mudanças sejam desenvolvidas e testadas antes de serem distribuídas oficialmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Documentação pública
&lt;/h2&gt;

&lt;p&gt;Mesmo com o código-fonte fechado, a documentação da linguagem pode ser pública.&lt;/p&gt;

&lt;p&gt;A documentação existe para explicar como utilizar o JLScript.&lt;/p&gt;

&lt;p&gt;Ela pode incluir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sintaxe;&lt;/li&gt;
&lt;li&gt;funções;&lt;/li&gt;
&lt;li&gt;operadores;&lt;/li&gt;
&lt;li&gt;estruturas condicionais;&lt;/li&gt;
&lt;li&gt;laços;&lt;/li&gt;
&lt;li&gt;módulos;&lt;/li&gt;
&lt;li&gt;bibliotecas;&lt;/li&gt;
&lt;li&gt;comandos;&lt;/li&gt;
&lt;li&gt;exemplos;&lt;/li&gt;
&lt;li&gt;ferramentas;&lt;/li&gt;
&lt;li&gt;APIs públicas;&lt;/li&gt;
&lt;li&gt;comportamento esperado da linguagem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso permite que desenvolvedores utilizem e aprendam JLScript sem precisar acessar sua implementação interna.&lt;/p&gt;

&lt;p&gt;O objetivo é documentar &lt;strong&gt;como utilizar a linguagem&lt;/strong&gt;, e não necessariamente &lt;strong&gt;como cada componente interno foi construído&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Transparência de uso
&lt;/h2&gt;

&lt;p&gt;Ser um projeto de código fechado não significa esconder o funcionamento público da linguagem.&lt;/p&gt;

&lt;p&gt;O comportamento da linguagem pode ser documentado.&lt;/p&gt;

&lt;p&gt;Se uma função recebe determinados parâmetros e retorna determinado resultado, isso pode ser explicado normalmente.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;não exige que o usuário conheça o código interno responsável por implementar &lt;code&gt;mostrar()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;O desenvolvedor precisa conhecer sua função, comportamento e forma correta de utilização.&lt;/p&gt;

&lt;p&gt;Esse é o mesmo princípio utilizado em diversos softwares proprietários.&lt;/p&gt;

&lt;h2&gt;
  
  
  JLScript e software proprietário
&lt;/h2&gt;

&lt;p&gt;O JLScript pode ser classificado como um projeto de &lt;strong&gt;código-fonte fechado&lt;/strong&gt; ou &lt;strong&gt;software proprietário&lt;/strong&gt;, dependendo da licença adotada oficialmente para sua distribuição.&lt;/p&gt;

&lt;p&gt;Isso significa que a utilização do software é permitida conforme os termos definidos pelo projeto, mas o código-fonte principal não é disponibilizado sob uma licença de software livre ou open source.&lt;/p&gt;

&lt;p&gt;É importante não confundir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gratuito
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;open source
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Um software pode ser gratuito para uso e continuar sendo proprietário.&lt;/p&gt;

&lt;p&gt;Da mesma forma, um software open source pode possuir serviços pagos.&lt;/p&gt;

&lt;p&gt;São conceitos diferentes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Distribuição
&lt;/h2&gt;

&lt;p&gt;As versões oficiais devem ser disponibilizadas pelos canais definidos pelo projeto JLScript.&lt;/p&gt;

&lt;p&gt;Esses canais podem incluir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;site oficial;&lt;/li&gt;
&lt;li&gt;documentação oficial;&lt;/li&gt;
&lt;li&gt;repositórios públicos de documentação;&lt;/li&gt;
&lt;li&gt;ferramentas de instalação;&lt;/li&gt;
&lt;li&gt;extensões oficiais;&lt;/li&gt;
&lt;li&gt;páginas oficiais do projeto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O uso de canais oficiais ajuda o usuário a identificar a versão legítima do JLScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensão para VS Code
&lt;/h2&gt;

&lt;p&gt;A extensão do JLScript para o Visual Studio Code faz parte do ecossistema da linguagem.&lt;/p&gt;

&lt;p&gt;Dependendo da forma como cada componente for distribuído, ferramentas auxiliares podem ter regras de licenciamento diferentes do núcleo principal.&lt;/p&gt;

&lt;p&gt;Isso significa que o projeto pode decidir, por exemplo, tornar determinada ferramenta aberta no futuro sem necessariamente abrir toda a implementação da linguagem.&lt;/p&gt;

&lt;p&gt;Cada componente pode possuir sua própria política de distribuição.&lt;/p&gt;

&lt;h2&gt;
  
  
  JLShell
&lt;/h2&gt;

&lt;p&gt;O JLShell é uma das ferramentas relacionadas ao ambiente JLScript.&lt;/p&gt;

&lt;p&gt;Ele fornece acesso a comandos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls run
jls build
jls &lt;span class="nb"&gt;test
&lt;/span&gt;jls &lt;span class="nb"&gt;fmt
&lt;/span&gt;jls lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mesmo que o usuário possa executar esses comandos e conhecer seu comportamento, isso não exige que a implementação interna dessas ferramentas seja pública.&lt;/p&gt;

&lt;h2&gt;
  
  
  JLS AI
&lt;/h2&gt;

&lt;p&gt;O mesmo princípio pode ser aplicado ao &lt;strong&gt;JLS AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O projeto pode disponibilizar funcionalidades para usuários sem necessariamente disponibilizar publicamente todo o código responsável por sua implementação.&lt;/p&gt;

&lt;p&gt;A documentação pode explicar como utilizar a ferramenta, seus recursos e limitações sem revelar sua estrutura interna completa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contribuições
&lt;/h2&gt;

&lt;p&gt;A ausência de código-fonte público não impede necessariamente a participação da comunidade.&lt;/p&gt;

&lt;p&gt;Usuários ainda podem contribuir através de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sugestões;&lt;/li&gt;
&lt;li&gt;relatórios de erros;&lt;/li&gt;
&lt;li&gt;documentação;&lt;/li&gt;
&lt;li&gt;exemplos;&lt;/li&gt;
&lt;li&gt;bibliotecas;&lt;/li&gt;
&lt;li&gt;projetos;&lt;/li&gt;
&lt;li&gt;discussões;&lt;/li&gt;
&lt;li&gt;testes;&lt;/li&gt;
&lt;li&gt;feedback sobre novas funcionalidades.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A forma como essas contribuições serão aceitas depende das regras estabelecidas pelo projeto.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que não é permitido
&lt;/h2&gt;

&lt;p&gt;Sem autorização expressa ou uma licença que permita determinada ação, o fato de alguém conseguir utilizar ou acessar partes do software não significa que essa pessoa possui autorização para redistribuir, modificar ou publicar a implementação interna.&lt;/p&gt;

&lt;p&gt;As permissões devem seguir a licença e os termos oficiais do JLScript.&lt;/p&gt;

&lt;p&gt;Por isso, qualquer uso envolvendo redistribuição, engenharia reversa, modificação de componentes internos ou criação de versões derivadas deve respeitar os termos definidos pelo projeto e a legislação aplicável.&lt;/p&gt;

&lt;h2&gt;
  
  
  Possíveis mudanças futuras
&lt;/h2&gt;

&lt;p&gt;A política de código-fonte do JLScript pode evoluir no futuro.&lt;/p&gt;

&lt;p&gt;O projeto pode decidir abrir componentes específicos sem tornar todo o sistema open source.&lt;/p&gt;

&lt;p&gt;Por exemplo, futuramente podem existir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;bibliotecas oficiais abertas;&lt;/li&gt;
&lt;li&gt;SDKs públicos;&lt;/li&gt;
&lt;li&gt;ferramentas auxiliares open source;&lt;/li&gt;
&lt;li&gt;exemplos;&lt;/li&gt;
&lt;li&gt;extensões;&lt;/li&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;projetos comunitários.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso não significa que o núcleo da linguagem precise seguir a mesma política.&lt;/p&gt;

&lt;p&gt;O modelo pode ser híbrido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Uma linguagem aberta para criar, não necessariamente aberta por dentro
&lt;/h2&gt;

&lt;p&gt;A ideia principal é simples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;o JLScript pode ser aberto para uso, aprendizado, criação e expansão do ecossistema sem que sua implementação principal seja open source.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Desenvolvedores podem aprender a linguagem, criar aplicações, desenvolver bibliotecas e participar da comunidade.&lt;/p&gt;

&lt;p&gt;Enquanto isso, o núcleo permanece sob controle do projeto.&lt;/p&gt;

&lt;p&gt;Essa separação permite proteger a implementação principal sem impedir o crescimento da linguagem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resumo
&lt;/h2&gt;

&lt;p&gt;O JLScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;não é open source;&lt;/li&gt;
&lt;li&gt;possui código-fonte principal privado;&lt;/li&gt;
&lt;li&gt;pode ter documentação pública;&lt;/li&gt;
&lt;li&gt;pode ser utilizado por desenvolvedores;&lt;/li&gt;
&lt;li&gt;permite a criação de projetos em &lt;code&gt;.jls&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;pode permitir bibliotecas da comunidade;&lt;/li&gt;
&lt;li&gt;pode possuir componentes públicos no futuro;&lt;/li&gt;
&lt;li&gt;mantém o núcleo oficial sob controle do projeto.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A intenção é manter uma estrutura clara entre a linguagem oficial, suas ferramentas internas e os projetos criados pelos usuários.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;JLScript é uma linguagem disponível para criar, aprender e desenvolver, enquanto sua implementação principal permanece protegida e controlada pelo projeto.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>SINTAXE DA JLSCRIPTER</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Fri, 16 Oct 2026 01:24:38 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/sintaxe-da-jlscripter-4h4i</link>
      <guid>https://dev.to/eoh_lczinn/sintaxe-da-jlscripter-4h4i</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg94nxfdz8godh4nua95q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg94nxfdz8godh4nua95q.png" alt=" " width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Sintaxe do JLScript
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Primeiro programa
&lt;/h2&gt;

&lt;p&gt;O comando mais básico do JLScript é &lt;code&gt;mostrar()&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá, mundo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existe o alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;show("Hello, world!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. Variáveis
&lt;/h1&gt;

&lt;p&gt;O JLScript possui diferentes formas de declaração.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"
va idade = 20
va ativo = true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também pode ser utilizado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let nome = "Lucas"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ins valor = 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va linguagem = "JLScript"
va versao = 2.3
va publicado = true

mostrar(linguagem)
mostrar(versao)
mostrar(publicado)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  3. Tipos de valores
&lt;/h1&gt;

&lt;p&gt;O JLScript trabalha com valores como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va texto = "JLScript"
va numero = 10
va decimal = 10.5
va ativo = true
va desligado = false
va vazio = null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Os principais valores básicos incluem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;string
number
boolean
null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existem conversões:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;int("10")
float("10.5")
str(100)
bool(1)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  4. Strings
&lt;/h1&gt;

&lt;p&gt;Strings podem armazenar texto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"
va linguagem = "JLScript"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá")
mostrar("Bem-vindo ao JLScript")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  5. Números
&lt;/h1&gt;

&lt;p&gt;Inteiros:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decimais:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va preco = 19.90
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. Booleanos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va ligado = true
va desligado = false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va servidorAtivo = true

se (servidorAtivo) {
    mostrar("Servidor ativo")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Null
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va usuario = null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode ser utilizado para representar ausência de valor.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Operadores matemáticos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va soma = 10 + 5
va subtracao = 10 - 5
va multiplicacao = 10 * 5
va divisao = 10 / 5
va resto = 10 % 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va a = 10
va b = 5

mostrar(a + b)
mostrar(a - b)
mostrar(a * b)
mostrar(a / b)
mostrar(a % b)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  9. Operadores de comparação
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 == 10
10 != 5

10 &amp;gt; 5
10 &amp;lt; 20

10 &amp;gt;= 10
10 &amp;lt;= 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20

mostrar(idade &amp;gt;= 18)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  10. Operadores lógicos
&lt;/h1&gt;

&lt;p&gt;AND:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;amp;&amp;amp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;||
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOT:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20
va ativo = true

se (idade &amp;gt;= 18 &amp;amp;&amp;amp; ativo) {
    mostrar("Acesso permitido")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outro exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;lt; 18 || !ativo) {
    mostrar("Acesso bloqueado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. Incremento e decremento
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 0

numero++
numero--
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va contador = 0

contador++
contador++

mostrar(contador)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. Condições
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Português
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (condicao) {
    mostrar("Verdadeiro")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com &lt;code&gt;senao&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20

se (idade &amp;gt;= 18) {
    mostrar("Maior de idade")
} senao {
    mostrar("Menor de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Inglês
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (idade &amp;gt;= 18) {
    mostrar("Maior de idade")
} else {
    mostrar("Menor de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O ideal é manter o mesmo idioma dentro da estrutura:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (...) {
} senao {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (...) {
} else {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  13. While / Enquanto
&lt;/h1&gt;

&lt;p&gt;Português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 0

enquanto (numero &amp;lt; 5) {
    mostrar(numero)

    numero++
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 0

while (numero &amp;lt; 5) {
    mostrar(numero)

    numero++
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  14. For / Para
&lt;/h1&gt;

&lt;p&gt;Português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 5; i++) {
    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (va i = 0; i &amp;lt; 5; i++) {
    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  15. Break / Pare
&lt;/h1&gt;

&lt;p&gt;Português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 10; i++) {

    se (i == 5) {
        pare
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (va i = 0; i &amp;lt; 10; i++) {

    if (i == 5) {
        break
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Continue / Continuar
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 5; i++) {

    se (i == 2) {
        continuar
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (va i = 0; i &amp;lt; 5; i++) {

    if (i == 2) {
        continue
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  17. Funções
&lt;/h1&gt;

&lt;p&gt;Forma padrão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func ola() {
    mostrar("Olá")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chamando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ola()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  18. Funções com parâmetros
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func apresentar(nome) {
    mostrar(nome)
}

apresentar("Lucas")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  19. Return / Retorne
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func soma(a, b) {
    retorne a + b
}

va resultado = soma(10, 5)

mostrar(resultado)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  20. Forma curta de função
&lt;/h1&gt;

&lt;p&gt;JLScript também possui a forma curta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;soma(a, b) {
    retorne a + b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(soma(5, 10))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  21. Parâmetros padrão
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func apresentar(nome = "Visitante") {
    mostrar(nome)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apresentar()
apresentar("Lucas")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  22. Argumentos nomeados
&lt;/h1&gt;

&lt;p&gt;JLScript também suporta argumentos nomeados.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func usuario(nome, idade) {
    mostrar(nome)
    mostrar(idade)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Chamada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usuario(
    nome = "Lucas",
    idade = 20
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também podem existir chamadas utilizando &lt;code&gt;:&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;usuario(
    nome: "Lucas",
    idade: 20
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois que argumentos nomeados começam a ser utilizados, o ideal é não misturar posicionais depois deles.&lt;/p&gt;




&lt;h1&gt;
  
  
  23. Funções anônimas
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va saudacao = func(nome) {
    mostrar("Olá")
    mostrar(nome)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;saudacao("Lucas")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  24. Listas
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va linguagens = [
    "JLScript",
    "JavaScript",
    "Python"
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acesso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(linguagens[0])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também pode ser usado em variáveis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numeros = [10, 20, 30, 40]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  25. Objetos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va usuario = {
    nome: "Lucas",
    idade: 20,
    linguagem: "JLScript"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acesso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(usuario.nome)
mostrar(usuario.idade)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  26. Objetos dentro de objetos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va usuario = {

    nome: "Lucas",

    endereco: {
        cidade: "Águas Lindas",
        estado: "GO"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acesso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(usuario.endereco.cidade)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  27. Listas dentro de objetos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va projeto = {

    nome: "JLScript",

    tecnologias: [
        "C++",
        "Python",
        "JavaScript"
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  28. Switch / Escolha
&lt;/h1&gt;

&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va opcao = 2

switch (opcao) {

    case 1 {
        mostrar("Opção 1")
    }

    case 2 {
        mostrar("Opção 2")
    }

    default {
        mostrar("Outra opção")
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va opcao = 2

escolha (opcao) {

    caso 1 {
        mostrar("Opção 1")
    }

    caso 2 {
        mostrar("Opção 2")
    }

    padrao {
        mostrar("Outra opção")
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  29. Tratamento de erros
&lt;/h1&gt;

&lt;p&gt;Português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tente {

    mostrar("Executando")

} capture (erro) {

    mostrar(erro)

} finalmente {

    mostrar("Finalizado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;try {

    mostrar("Executando")

} catch (erro) {

    mostrar(erro)

} finally {

    mostrar("Finalizado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  30. Importação de módulos
&lt;/h1&gt;

&lt;p&gt;Forma simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #math
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Outro exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  31. Importação de vários módulos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #api,
    #json,
    #database
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  32. Alias de módulos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database como db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;representa o módulo importado.&lt;/p&gt;




&lt;h1&gt;
  
  
  33. Algumas bibliotecas do JLScript
&lt;/h1&gt;

&lt;p&gt;Exemplos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
import #math
import #json
import #database
import #file
import #system
import #connector
import #mobile
import #ui
import #style
import #net
import #crypto
import #process
import #thread
import #image
import #audio
import #email
import #test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  34. Tempo
&lt;/h1&gt;

&lt;p&gt;JLScript possui suporte a durações legíveis.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esperar(2 segundos)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esperar(500 ms)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unidades podem incluir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ms
segundo
segundos
minuto
minutos
hora
horas
dia
dias
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  35. Tempo atual
&lt;/h1&gt;

&lt;p&gt;Português:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(tempo.agora())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(time.now())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  36. Executar depois de um tempo
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tempo.depois(2 segundos, func() {

    mostrar("Executado depois")

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;time.after(2 segundos, func() {

    mostrar("Executado depois")

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  37. Executar repetidamente
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tempo.cada(5 segundos, func() {

    mostrar("Executando")

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;time.every(5 segundos, func() {

    mostrar("Executando")

})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  38. Entrada de dados
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = ler("Digite seu nome: ")

mostrar(nome)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  39. Espera
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esperar(1 segundo)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wait(1 segundo)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  40. Confirmação
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va resposta = confirmar("Deseja continuar?")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va resposta = confirm("Continuar?")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  41. Limpar terminal
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;limpar()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  42. Título
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;titulo("Meu programa")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  43. Avisos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrarAviso("Atenção")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Erro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrarErro("Erro encontrado")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sucesso:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrarSucesso("Operação concluída")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  44. API
&lt;/h1&gt;

&lt;p&gt;Importação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A biblioteca &lt;code&gt;#api&lt;/code&gt; é voltada para comunicação HTTP e criação de serviços.&lt;/p&gt;

&lt;p&gt;Um projeto normalmente começa com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e utiliza os recursos públicos disponíveis no módulo para criar servidor, realizar requisições e trabalhar com respostas HTTP.&lt;/p&gt;




&lt;h1&gt;
  
  
  45. JSON
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode ser utilizado para trabalhar com dados JSON dentro do projeto.&lt;/p&gt;




&lt;h1&gt;
  
  
  46. Banco de dados
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com alias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database como db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  47. Arquivos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A biblioteca é destinada à manipulação de arquivos e diretórios.&lt;/p&gt;




&lt;h1&gt;
  
  
  48. Sistema
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existem objetos globais relacionados ao ambiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;system
tempo
time
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  49. Matemática
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #math
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplos de operações disponíveis no módulo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;math.raiz(25)
math.absoluto(-10)
math.arredondar(10.6)
math.teto(10.1)
math.piso(10.9)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existem constantes matemáticas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;math.PI
math.E
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  50. Interface gráfica
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #ui,
    #style
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essas bibliotecas são utilizadas para criação e estilização de interfaces.&lt;/p&gt;

&lt;p&gt;Exemplo conceitual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #ui,
    #style
]

va app = ui.janela()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A interface pode ser construída utilizando elementos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;div
section
main
header
footer
nav
h1
h2
p
span
input
textarea
select
button
form
table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  51. Estilos
&lt;/h1&gt;

&lt;p&gt;A biblioteca:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #style
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;trabalha com propriedades de estilo, como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;background
color
width
height
margin
padding
border
borderRadius
fontSize
fontWeight
display
gap
position
opacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também existem efeitos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shadow
blur
brightness
scale
rotate
translate
transition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  52. Dispositivos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #connector
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A biblioteca permite trabalhar com conexões.&lt;/p&gt;

&lt;p&gt;Exemplos de recursos públicos incluem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connector.ip(...)
connector.adb(...)
connector.usb(...)
connector.bluetooth(...)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  53. Mobile
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #mobile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilizado para integração com dispositivos móveis suportados pelo ecossistema.&lt;/p&gt;




&lt;h1&gt;
  
  
  54. Rede
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voltado para funcionalidades como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DNS
hostname
IP local
ping
TCP
UDP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  55. Processos
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #process
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Funções relacionadas a processos incluem operações como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;executar
iniciar
listar
existe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  56. Thread
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #thread
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode ser utilizado para operações relacionadas a execução concorrente.&lt;/p&gt;




&lt;h1&gt;
  
  
  57. Criptografia
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #crypto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pode fornecer recursos relacionados a:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UUID
random
Base64
HMAC
AES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  58. Testes
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A biblioteca possui recursos para testar valores.&lt;/p&gt;

&lt;p&gt;Exemplos de operações:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;igual
diferente
verdadeiro
falso
maior
menor
nulo
naoNulo
contem
erro
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  59. Exemplo maior
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #math,
    #json
]

va usuario = {
    nome: "Lucas",
    idade: 20,
    ativo: true
}

func verificarUsuario(usuario) {

    se (usuario.ativo &amp;amp;&amp;amp; usuario.idade &amp;gt;= 18) {

        mostrar("Usuário autorizado")

        retorne true

    } senao {

        mostrar("Usuário não autorizado")

        retorne false
    }
}

va autorizado = verificarUsuario(usuario)

se (autorizado) {

    va numero = 25
    va resultado = math.raiz(numero)

    mostrar(resultado)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  60. Estrutura de projeto
&lt;/h1&gt;

&lt;p&gt;Um projeto JLScript pode ser organizado assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;meu-projeto/
│
├── main.jls
│
├── src/
│   ├── usuario.jls
│   ├── servidor.jls
│   └── database.jls
│
├── modules/
│
└── assets/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O arquivo principal normalmente possui extensão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  61. Executando
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls run main.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  62. Build
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  63. Compilação
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls compile arquivo.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O compilador também pode gerar formato próprio utilizado pelo ecossistema JLScript.&lt;/p&gt;




&lt;h1&gt;
  
  
  64. Testes
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  65. Formatação
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls &lt;span class="nb"&gt;fmt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  66. Lint
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  67. Doctor
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Serve para verificar o ambiente e possíveis problemas de configuração.&lt;/p&gt;




&lt;h1&gt;
  
  
  68. Atualização
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  69. REPL
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls repl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Permite trabalhar com a linguagem de forma interativa.&lt;/p&gt;




&lt;h1&gt;
  
  
  70. Regra importante do JLScript
&lt;/h1&gt;

&lt;p&gt;Um dos conceitos mais importantes da linguagem é a consistência da estrutura.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (...) {
} senao {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (...) {
} else {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em vez de misturar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (...) {
} else {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia é manter a estrutura visual e linguística previsível.&lt;/p&gt;




&lt;h1&gt;
  
  
  Exemplo final
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #math,
    #json,
    #file
]

va programa = {
    nome: "JLScript",
    versao: 2.3,
    ativo: true
}

func status(programa) {

    se (!programa.ativo) {
        retorne "desativado"
    }

    retorne "ativo"
}

func calcular(a, b = 10) {
    retorne a + b
}

va resultado = calcular(
    a = 20,
    b = 30
)

mostrar(programa.nome)
mostrar(status(programa))
mostrar(resultado)

para (va i = 0; i &amp;lt; 5; i++) {

    se (i == 3) {
        continuar
    }

    mostrar(i)
}

tente {

    mostrar("Executando JLScript")

} capture (erro) {

    mostrarErro(erro)

} finalmente {

    mostrar("Programa finalizado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>jlscript</category>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Historia do Criador da JSLcript</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Fri, 16 Oct 2026 01:21:29 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/historia-do-criador-da-jslcript-3ia3</link>
      <guid>https://dev.to/eoh_lczinn/historia-do-criador-da-jslcript-3ia3</guid>
      <description>&lt;h2&gt;
  
  
  A história por trás do JLScript
&lt;/h2&gt;

&lt;p&gt;O JLScript nasceu de uma ideia pessoal.&lt;/p&gt;

&lt;p&gt;Antes de existir como linguagem, existia apenas a vontade de entender programação de um jeito mais profundo. Lucas Aguiel começou estudando outras linguagens, criando projetos, testando possibilidades e tentando compreender não apenas como escrever código, mas também como uma linguagem funciona por trás de tudo aquilo que aparece na tela.&lt;/p&gt;

&lt;p&gt;Durante esse processo, algumas dificuldades começaram a ficar claras. Muitas vezes, a sintaxe parecia mais complicada do que a ideia que ele queria expressar. Algumas tarefas simples exigiam estruturas maiores do que deveriam, e isso despertou uma pergunta que acabou se tornando o ponto de partida do projeto:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“E se eu criasse minha própria linguagem?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No início, a ideia era pequena. Não existia a intenção de criar um ecossistema inteiro, ferramentas próprias, bibliotecas ou uma identidade completa. A proposta era apenas desenvolver uma sintaxe que fosse mais natural, simples de ler e mais próxima da forma como Lucas gostaria de programar.&lt;/p&gt;

&lt;p&gt;Foi assim que começaram os primeiros experimentos.&lt;/p&gt;

&lt;p&gt;Variáveis, condições, funções e laços foram sendo criados aos poucos. A linguagem começou a receber estruturas em português e inglês, permitindo que o programador pudesse escolher uma forma mais confortável de escrever.&lt;/p&gt;

&lt;p&gt;Exemplos simples passaram a representar bem essa ideia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"

se (nome == "Lucas") {
    mostrar("Olá")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aos poucos, aquilo deixou de ser apenas uma experiência.&lt;/p&gt;

&lt;p&gt;O projeto começou a ganhar organização, regras próprias e novos recursos. A sintaxe foi evoluindo, novas estruturas foram adicionadas e o JLScript começou a se transformar em uma linguagem com identidade própria.&lt;/p&gt;

&lt;h3&gt;
  
  
  A origem do nome
&lt;/h3&gt;

&lt;p&gt;O nome JLScript também nasceu de algo pessoal.&lt;/p&gt;

&lt;p&gt;As letras representam:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;J&lt;/strong&gt;, de Joicy Costa;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L&lt;/strong&gt;, de Lucas Aguiel;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;S&lt;/strong&gt;, de Script.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Joicy, namorada de Lucas, passou a fazer parte da identidade da linguagem através do próprio nome.&lt;/p&gt;

&lt;p&gt;Dessa forma, JLScript não representa apenas um projeto técnico. O nome carrega também uma parte da história pessoal de quem criou a linguagem e de alguém importante durante esse período de desenvolvimento.&lt;/p&gt;

&lt;p&gt;O nome acabou se tornando uma marca para tudo que viria depois.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quando o projeto começou a crescer
&lt;/h3&gt;

&lt;p&gt;Com o avanço do desenvolvimento, Lucas começou a perceber que, para o JLScript funcionar de verdade, não bastava apenas inventar palavras-chave.&lt;/p&gt;

&lt;p&gt;Uma linguagem precisava entender o código.&lt;/p&gt;

&lt;p&gt;Precisava ler o que foi escrito, reconhecer cada estrutura, interpretar expressões, executar instruções, lidar com erros e permitir que diferentes partes do programa trabalhassem juntas.&lt;/p&gt;

&lt;p&gt;Foi nesse momento que o projeto começou a ficar muito maior.&lt;/p&gt;

&lt;p&gt;O JLScript passou a desenvolver componentes responsáveis pela análise e execução do código. Aos poucos, foram surgindo sistemas de interpretação, módulos, bibliotecas e ferramentas para trabalhar com arquivos &lt;code&gt;.jls&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;O que antes era:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“quero criar uma sintaxe mais simples”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;começou a se transformar em:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“quero construir uma linguagem de programação completa”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;E, como costuma acontecer em programação, a frase “é só fazer uma coisinha” resolveu criar uma família inteira de problemas.&lt;/p&gt;

&lt;h3&gt;
  
  
  As bibliotecas
&lt;/h3&gt;

&lt;p&gt;Uma das etapas mais importantes foi a expansão da linguagem através de bibliotecas.&lt;/p&gt;

&lt;p&gt;O objetivo era permitir que o JLScript não ficasse limitado apenas a cálculos ou exemplos básicos.&lt;/p&gt;

&lt;p&gt;Começaram a surgir módulos para diferentes áreas, incluindo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;matemática;&lt;/li&gt;
&lt;li&gt;arquivos;&lt;/li&gt;
&lt;li&gt;banco de dados;&lt;/li&gt;
&lt;li&gt;interfaces;&lt;/li&gt;
&lt;li&gt;rede;&lt;/li&gt;
&lt;li&gt;processos;&lt;/li&gt;
&lt;li&gt;dispositivos;&lt;/li&gt;
&lt;li&gt;imagens;&lt;/li&gt;
&lt;li&gt;áudio;&lt;/li&gt;
&lt;li&gt;criptografia;&lt;/li&gt;
&lt;li&gt;testes;&lt;/li&gt;
&lt;li&gt;ferramentas do sistema.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Isso permitiu que a linguagem começasse a caminhar para um objetivo maior: ser utilizada em diferentes tipos de projetos.&lt;/p&gt;

&lt;p&gt;O sistema de módulos passou a fazer parte da identidade da linguagem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
import #database
import #ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia era manter tudo simples visualmente, mesmo quando o projeto por trás fosse ficando mais complexo.&lt;/p&gt;

&lt;h3&gt;
  
  
  O nascimento do JLShell
&lt;/h3&gt;

&lt;p&gt;Com a evolução do JLScript, surgiu também a necessidade de uma ferramenta própria para executar e gerenciar projetos.&lt;/p&gt;

&lt;p&gt;Foi assim que nasceu o &lt;strong&gt;JLShell&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A linha de comando passou a oferecer formas de executar arquivos, testar projetos, formatar código, verificar problemas e construir aplicações.&lt;/p&gt;

&lt;p&gt;Comandos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls run arquivo.jls
jls build
jls &lt;span class="nb"&gt;test
&lt;/span&gt;jls &lt;span class="nb"&gt;fmt
&lt;/span&gt;jls lint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;passaram a fazer parte do fluxo de desenvolvimento.&lt;/p&gt;

&lt;p&gt;O JLScript começava, então, a deixar de ser apenas uma linguagem e começava a formar um ecossistema.&lt;/p&gt;

&lt;h3&gt;
  
  
  O JLS AI
&lt;/h3&gt;

&lt;p&gt;Outra ideia que surgiu durante a evolução do projeto foi o &lt;strong&gt;JLS AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A proposta era criar uma ferramenta de inteligência artificial integrada ao próprio ecossistema da linguagem.&lt;/p&gt;

&lt;p&gt;A ideia não era apenas responder perguntas, mas entender o JLScript, compreender código, auxiliar o programador, identificar problemas e, futuramente, trabalhar de forma cada vez mais integrada às ferramentas de desenvolvimento.&lt;/p&gt;

&lt;p&gt;O JLS AI representa uma das partes mais ambiciosas do projeto, porque aproxima a linguagem de uma visão maior de desenvolvimento assistido.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uma linguagem em português e inglês
&lt;/h3&gt;

&lt;p&gt;Desde cedo, uma das ideias centrais do JLScript foi permitir que o código pudesse ser escrito de maneira natural.&lt;/p&gt;

&lt;p&gt;Por isso, várias estruturas possuem versões em português e inglês.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;gt;= 18) {
    mostrar("Maior de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (idade &amp;gt;= 18) {
    mostrar("Maior de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A intenção nunca foi simplesmente traduzir outra linguagem.&lt;/p&gt;

&lt;p&gt;O objetivo era criar uma linguagem própria, mas que permitisse ao programador escolher uma forma mais confortável de escrever.&lt;/p&gt;

&lt;p&gt;Essa característica acabou se tornando uma das marcas do projeto.&lt;/p&gt;

&lt;h3&gt;
  
  
  O objetivo
&lt;/h3&gt;

&lt;p&gt;Desde o início, o objetivo do JLScript foi se tornando cada vez mais claro:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;tornar a programação mais simples de ler e escrever sem impedir que o programador crie projetos maiores.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A ideia é permitir que alguém comece com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá, mundo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e, com o tempo, possa trabalhar com APIs, bancos de dados, interfaces, sistemas, dispositivos e outras áreas.&lt;/p&gt;

&lt;p&gt;O projeto busca crescer junto com quem programa.&lt;/p&gt;

&lt;h3&gt;
  
  
  O que começou como curiosidade
&lt;/h3&gt;

&lt;p&gt;O JLScript começou como uma curiosidade pessoal.&lt;/p&gt;

&lt;p&gt;Uma tentativa de entender melhor programação.&lt;/p&gt;

&lt;p&gt;Uma vontade de criar algo próprio.&lt;/p&gt;

&lt;p&gt;Uma ideia que poderia ter terminado em alguns arquivos de teste.&lt;/p&gt;

&lt;p&gt;Mas continuou crescendo.&lt;/p&gt;

&lt;p&gt;Vieram a sintaxe, o interpretador, as bibliotecas, as ferramentas, a documentação, a extensão para o VS Code, o JLShell, o JLS AI e uma identidade visual própria.&lt;/p&gt;

&lt;p&gt;O projeto passou a ter site, documentação pública e ferramentas voltadas para quem quiser aprender ou experimentar a linguagem.&lt;/p&gt;

&lt;p&gt;E, no centro de tudo, continua existindo a mesma ideia que deu origem ao projeto:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;programar deveria ser mais simples de entender.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lucas, Joicy e JLScript
&lt;/h3&gt;

&lt;p&gt;A história do JLScript também carrega uma parte da vida de Lucas.&lt;/p&gt;

&lt;p&gt;O próprio nome da linguagem une Lucas e Joicy.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;J&lt;/strong&gt; representa Joicy Costa.&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;L&lt;/strong&gt; representa Lucas Aguiel.&lt;/p&gt;

&lt;p&gt;E o &lt;strong&gt;S&lt;/strong&gt; representa Script.&lt;/p&gt;

&lt;p&gt;Por isso, o nome acabou se tornando mais do que apenas uma sigla técnica.&lt;/p&gt;

&lt;p&gt;Ele representa uma fase da vida do criador, uma relação importante e um projeto que foi crescendo durante esse período.&lt;/p&gt;

&lt;p&gt;Joicy não aparece apenas como uma referência externa ao projeto.&lt;/p&gt;

&lt;p&gt;Ela faz parte da própria origem do nome que identifica a linguagem.&lt;/p&gt;

&lt;h3&gt;
  
  
  O futuro
&lt;/h3&gt;

&lt;p&gt;O JLScript continua em desenvolvimento.&lt;/p&gt;

&lt;p&gt;A intenção é ampliar o número de bibliotecas, melhorar as ferramentas existentes, expandir o suporte a diferentes plataformas e permitir que a linguagem seja utilizada em cada vez mais áreas.&lt;/p&gt;

&lt;p&gt;O objetivo de longo prazo é que o JLScript possa ser utilizado em diferentes tipos de aplicações e por diferentes tipos de desenvolvedores.&lt;/p&gt;

&lt;p&gt;O projeto ainda está evoluindo, e muita coisa pode mudar.&lt;/p&gt;

&lt;p&gt;Mas a essência continua a mesma.&lt;/p&gt;

&lt;p&gt;Uma linguagem criada a partir de uma dificuldade pessoal, transformada em projeto, e construída com a intenção de tornar o código mais simples, mais legível e mais próximo de quem programa.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;JLScript: código que fala a sua língua.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>JLScript: Guia Completo da Sintaxe, do Básico ao Avançado</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Sat, 03 Oct 2026 22:41:07 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/jlscript-guia-completo-da-sintaxe-do-basico-ao-avancado-28hb</link>
      <guid>https://dev.to/eoh_lczinn/jlscript-guia-completo-da-sintaxe-do-basico-ao-avancado-28hb</guid>
      <description>&lt;h1&gt;
  
  
  🧛 JLScript — Do Básico ao Avançado
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aprenda JLScript do primeiro &lt;code&gt;mostrar()&lt;/code&gt; até APIs, banco de dados, dispositivos e interfaces.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;JLScript, também chamado de &lt;strong&gt;JLS&lt;/strong&gt;, é uma linguagem de programação criada com o objetivo de possuir uma sintaxe simples, legível e agradável para quem está começando, sem impedir a criação de projetos maiores.&lt;/p&gt;

&lt;p&gt;Os arquivos da linguagem utilizam a extensão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste guia vamos começar absolutamente do zero.&lt;/p&gt;

&lt;p&gt;No final, você já terá visto:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;variáveis;&lt;/li&gt;
&lt;li&gt;valores;&lt;/li&gt;
&lt;li&gt;operadores;&lt;/li&gt;
&lt;li&gt;condições;&lt;/li&gt;
&lt;li&gt;loops;&lt;/li&gt;
&lt;li&gt;funções;&lt;/li&gt;
&lt;li&gt;listas;&lt;/li&gt;
&lt;li&gt;objetos;&lt;/li&gt;
&lt;li&gt;tratamento de erros;&lt;/li&gt;
&lt;li&gt;módulos;&lt;/li&gt;
&lt;li&gt;aliases;&lt;/li&gt;
&lt;li&gt;tempo;&lt;/li&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;banco de dados;&lt;/li&gt;
&lt;li&gt;dispositivos;&lt;/li&gt;
&lt;li&gt;interfaces gráficas;&lt;/li&gt;
&lt;li&gt;organização de projetos.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  1. Seu primeiro programa
&lt;/h1&gt;

&lt;p&gt;Todo programador começa inevitavelmente imprimindo texto no terminal. A humanidade construiu compiladores, sistemas operacionais e inteligência artificial para, no fim, escrever &lt;code&gt;"Olá, mundo!"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Em JLScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá, mundo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A função &lt;code&gt;mostrar()&lt;/code&gt; envia um valor para a saída do programa.&lt;/p&gt;

&lt;p&gt;Podemos executar várias instruções:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá!")
mostrar("Estou aprendendo JLScript")
mostrar("Meu primeiro programa está funcionando")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  2. Variáveis
&lt;/h1&gt;

&lt;p&gt;Variáveis são espaços usados para guardar informações.&lt;/p&gt;

&lt;p&gt;No JLScript existem três formas principais de declaração:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"
let idade = 20
ins ativo = true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois podemos utilizar os valores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va linguagem = "JLScript"

mostrar(linguagem)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Valores básicos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Texto
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "JLScript"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Número inteiro
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Número decimal
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va preco = 19.90
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Booleano
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va online = true
va bloqueado = false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Valor vazio
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va resultado = null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos juntar tudo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"
va idade = 20
va programador = true
va projeto = "JLScript"

mostrar(nome)
mostrar(idade)
mostrar(programador)
mostrar(projeto)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  3. Operadores matemáticos
&lt;/h1&gt;

&lt;p&gt;JLScript suporta operações matemáticas comuns.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va soma = 10 + 5
va subtracao = 10 - 5
va multiplicacao = 10 * 5
va divisao = 10 / 5
va resto = 10 % 3

mostrar(soma)
mostrar(subtracao)
mostrar(multiplicacao)
mostrar(divisao)
mostrar(resto)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Incremento
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 1

numero++

mostrar(numero)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Decremento
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 10

numero--

mostrar(numero)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  4. Comparações
&lt;/h1&gt;

&lt;p&gt;Comparações produzem normalmente um resultado verdadeiro ou falso.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20

mostrar(idade &amp;gt; 18)
mostrar(idade &amp;lt; 18)
mostrar(idade &amp;gt;= 18)
mostrar(idade &amp;lt;= 18)
mostrar(idade == 20)
mostrar(idade != 20)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alguns operadores importantes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operador&lt;/th&gt;
&lt;th&gt;Significado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;==&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;igual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;diferente&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;maior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;menor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;gt;=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;maior ou igual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;menor ou igual&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  5. Operadores lógicos
&lt;/h1&gt;

&lt;p&gt;Também podemos juntar várias condições.&lt;/p&gt;

&lt;h2&gt;
  
  
  E
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20
va autorizado = true

se (idade &amp;gt;= 18 &amp;amp;&amp;amp; autorizado) {
    mostrar("Entrada permitida")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  OU
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va admin = false
va moderador = true

se (admin || moderador) {
    mostrar("Acesso permitido")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  NÃO
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va bloqueado = false

se (!bloqueado) {
    mostrar("Usuário liberado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  6. Condições
&lt;/h1&gt;

&lt;p&gt;Condições permitem executar diferentes partes do programa.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;se&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20

se (idade &amp;gt;= 18) {
    mostrar("Você é maior de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;code&gt;se&lt;/code&gt; e &lt;code&gt;senao&lt;/code&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 16

se (idade &amp;gt;= 18) {
    mostrar("Maior de idade")
} senao {
    mostrar("Menor de idade")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Condições em inglês
&lt;/h1&gt;

&lt;p&gt;JLScript também possui estruturas equivalentes em inglês.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va idade = 20

if (idade &amp;gt;= 18) {
    mostrar("Adulto")
} else {
    mostrar("Menor")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Importante:&lt;/strong&gt; mantenha o idioma da estrutura consistente.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Evite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;gt;= 18) {
    mostrar("Ok")
} else {
    mostrar("Não")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prefira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;gt;= 18) {
    mostrar("Ok")
} senao {
    mostrar("Não")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (idade &amp;gt;= 18) {
    mostrar("Ok")
} else {
    mostrar("Não")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. Várias condições
&lt;/h1&gt;

&lt;p&gt;Podemos verificar mais de uma possibilidade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nota = 8

se (nota &amp;gt;= 9) {
    mostrar("Excelente")
} senao se (nota &amp;gt;= 7) {
    mostrar("Aprovado")
} senao se (nota &amp;gt;= 5) {
    mostrar("Recuperação")
} senao {
    mostrar("Reprovado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  9. Enquanto
&lt;/h1&gt;

&lt;p&gt;Quando queremos repetir algo enquanto uma condição for verdadeira:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 1

enquanto (numero &amp;lt;= 5) {
    mostrar(numero)

    numero++
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado esperado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1
2
3
4
5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numero = 1

while (numero &amp;lt;= 5) {
    mostrar(numero)

    numero++
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  10. Para
&lt;/h1&gt;

&lt;p&gt;Quando já sabemos como a repetição deve avançar, podemos utilizar &lt;code&gt;para&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 10; i++) {
    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (va i = 0; i &amp;lt; 10; i++) {
    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  11. Pare
&lt;/h1&gt;

&lt;p&gt;Podemos interromper um loop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 10; i++) {

    se (i == 5) {
        pare
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quando &lt;code&gt;i&lt;/code&gt; chegar a &lt;code&gt;5&lt;/code&gt;, o loop será interrompido.&lt;/p&gt;

&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;break
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  12. Continuar
&lt;/h1&gt;

&lt;p&gt;Podemos ignorar uma iteração específica.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;para (va i = 0; i &amp;lt; 10; i++) {

    se (i == 5) {
        continuar
    }

    mostrar(i)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo, o número &lt;code&gt;5&lt;/code&gt; não será mostrado.&lt;/p&gt;

&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;continue
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  13. Funções
&lt;/h1&gt;

&lt;p&gt;Funções permitem criar blocos reutilizáveis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func saudacao() {
    mostrar("Olá!")
}

saudacao()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos receber parâmetros:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func saudacao(nome) {
    mostrar("Olá " + nome)
}

saudacao("Lucas")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  14. Retornando valores
&lt;/h1&gt;

&lt;p&gt;Uma função também pode devolver um resultado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func soma(a, b) {
    retorne a + b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora podemos utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va resultado = soma(10, 5)

mostrar(resultado)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  15. Forma curta de função
&lt;/h1&gt;

&lt;p&gt;JLScript também suporta uma forma curta de declaração.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;soma(a, b) {
    retorne a + b
}

mostrar(soma(10, 5))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  16. Parâmetros padrão
&lt;/h1&gt;

&lt;p&gt;Podemos definir valores que serão usados caso nenhum argumento seja informado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func saudacao(nome = "Mundo") {
    mostrar("Olá " + nome)
}

saudacao()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Olá Mundo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;saudacao("Lucas")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Olá Lucas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  17. Argumentos nomeados
&lt;/h1&gt;

&lt;p&gt;JLScript permite deixar chamadas maiores mais legíveis.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func criarUsuario(nome, idade, ativo = true) {
    mostrar(nome)
    mostrar(idade)
    mostrar(ativo)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos chamar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;criarUsuario(
    nome = "Lucas",
    idade = 20,
    ativo = true
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim fica muito mais fácil descobrir o significado de cada valor.&lt;/p&gt;

&lt;p&gt;Compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;criarUsuario("Lucas", 20, true)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;criarUsuario(
    nome = "Lucas",
    idade = 20,
    ativo = true
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em chamadas grandes, a segunda forma normalmente é muito mais clara.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. Funções anônimas
&lt;/h1&gt;

&lt;p&gt;Também podemos criar uma função sem nome.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va dobro = func(numero) {
    retorne numero * 2
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utilizando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(dobro(10))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Resultado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Funções anônimas ficam especialmente importantes quando começamos a trabalhar com callbacks.&lt;/p&gt;




&lt;h1&gt;
  
  
  19. Listas
&lt;/h1&gt;

&lt;p&gt;Uma lista permite armazenar vários valores.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va linguagens = [
    "JLScript",
    "Python",
    "JavaScript"
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos acessar um elemento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(linguagens[0])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também podemos guardar números:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va numeros = [
    10,
    20,
    30,
    40
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  20. Objetos
&lt;/h1&gt;

&lt;p&gt;Objetos agrupam informações relacionadas.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va usuario = {
    nome: "Lucas",
    idade: 20,
    programador: true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acessando propriedades:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(usuario.nome)
mostrar(usuario.idade)
mostrar(usuario.programador)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso é muito melhor do que criar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va usuarioNome = "Lucas"
va usuarioIdade = 20
va usuarioProgramador = true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;principalmente quando o programa começa a crescer.&lt;/p&gt;




&lt;h1&gt;
  
  
  21. Escolha
&lt;/h1&gt;

&lt;p&gt;Quando temos várias opções bem definidas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va opcao = 2

escolha (opcao) {

    caso 1 {
        mostrar("Cadastrar")
    }

    caso 2 {
        mostrar("Entrar")
    }

    caso 3 {
        mostrar("Sair")
    }

    padrao {
        mostrar("Opção inválida")
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A forma inglesa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch (opcao) {

    case 1 {
        mostrar("Cadastrar")
    }

    case 2 {
        mostrar("Entrar")
    }

    default {
        mostrar("Opção inválida")
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  22. Tratamento de erros
&lt;/h1&gt;

&lt;p&gt;Programas reais falham.&lt;/p&gt;

&lt;p&gt;Arquivo não existe, conexão cai, servidor some, usuário faz coisa inexplicável. Normal.&lt;/p&gt;

&lt;p&gt;JLScript possui estruturas para tratamento de erros.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tente {

    mostrar("Executando operação")

} capture (erro) {

    mostrar("Ocorreu um erro")
    mostrar(erro)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  23. Finalmente
&lt;/h1&gt;

&lt;p&gt;Podemos executar um bloco independentemente de ocorrer erro.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tente {

    mostrar("Executando")

} capture (erro) {

    mostrar("Erro encontrado")

} finalmente {

    mostrar("Processo finalizado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em inglês:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;try {

    mostrar("Executando")

} catch (error) {

    mostrar(error)

} finally {

    mostrar("Finalizado")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  24. Bibliotecas
&lt;/h1&gt;

&lt;p&gt;Até agora usamos principalmente recursos básicos da linguagem.&lt;/p&gt;

&lt;p&gt;Para funcionalidades maiores, JLScript possui módulos.&lt;/p&gt;

&lt;p&gt;Importando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #math
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  25. Vários imports
&lt;/h1&gt;

&lt;p&gt;Podemos importar mais de um módulo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #math,
    #json,
    #file
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  26. Alias de biblioteca
&lt;/h1&gt;

&lt;p&gt;Também podemos mudar o nome utilizado dentro do código.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database como db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;representa o módulo &lt;code&gt;#database&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Um IntelliSense correto deve entender isso.&lt;/p&gt;

&lt;p&gt;Depois de:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ele deve mostrar &lt;strong&gt;somente recursos pertencentes ao módulo &lt;code&gt;#database&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  27. Tempo
&lt;/h1&gt;

&lt;p&gt;JLScript possui suporte para trabalhar com durações de maneira legível.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esperar(2 segundos)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Dois segundos passaram")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos utilizar outras unidades:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esperar(500 ms)

esperar(1 segundo)

esperar(2 minutos)

esperar(1 hora)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  28. Tempo atual
&lt;/h1&gt;

&lt;p&gt;JLScript possui um objeto global relacionado ao tempo.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va agora = tempo.agora()

mostrar(agora)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  29. Executar algo depois
&lt;/h1&gt;

&lt;p&gt;Podemos agendar uma função.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tempo.depois(2 segundos, func() {

    mostrar("Executado depois de 2 segundos")
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui aparece um conceito importante:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func() {
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;é uma função anônima usada como callback.&lt;/p&gt;




&lt;h1&gt;
  
  
  30. Repetir automaticamente
&lt;/h1&gt;

&lt;p&gt;Também podemos executar uma função em intervalos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va timer = tempo.cada(1 segundo, func() {

    mostrar("tick")
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  31. Criando uma API
&lt;/h1&gt;

&lt;p&gt;Agora começamos a entrar em recursos mais avançados.&lt;/p&gt;

&lt;p&gt;Importamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criamos o servidor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va app = api.criar(3000)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora criamos uma rota:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.get("/", func(req, res) {

    res.enviar("Olá pelo JLScript!")
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E iniciamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.iniciar()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Programa completo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api

va app = api.criar(3000)

app.get("/", func(req, res) {

    res.enviar("Olá pelo JLScript!")
})

app.iniciar()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  32. Retornando objetos em uma API
&lt;/h1&gt;

&lt;p&gt;Podemos trabalhar com dados estruturados.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.get("/usuario", func(req, res) {

    va usuario = {
        nome: "Lucas",
        linguagem: "JLScript",
        online: true
    }

    res.enviar(usuario)
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui usamos juntos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;módulo;&lt;/li&gt;
&lt;li&gt;rota;&lt;/li&gt;
&lt;li&gt;callback;&lt;/li&gt;
&lt;li&gt;objeto;&lt;/li&gt;
&lt;li&gt;variável;&lt;/li&gt;
&lt;li&gt;resposta HTTP.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  33. Consumindo uma API
&lt;/h1&gt;

&lt;p&gt;O módulo também pode ser usado para requisições HTTP.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api

va resposta = api.obter(
    "https://api.exemplo.com/usuarios"
)

mostrar(resposta)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  34. Banco de dados
&lt;/h1&gt;

&lt;p&gt;Importamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database como db
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora abrimos SQLite:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va banco = db.sqlite("app.db")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos executar uma instrução:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;banco.executar(
    "CREATE TABLE usuarios (id INTEGER PRIMARY KEY, nome TEXT)"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Programa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #database como db

va banco = db.sqlite("app.db")

banco.executar(
    "CREATE TABLE usuarios (id INTEGER PRIMARY KEY, nome TEXT)"
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  35. Dispositivos
&lt;/h1&gt;

&lt;p&gt;JLScript também possui recursos voltados a conexões e dispositivos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #connector
import #mobile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uma conexão ADB pode ser criada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va conexao = connector.adb(
    "192.168.1.2",
    5555,
    timeout = 20 segundos
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repare em:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;timeout = 20 segundos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui utilizamos ao mesmo tempo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;argumento nomeado;&lt;/li&gt;
&lt;li&gt;valor numérico;&lt;/li&gt;
&lt;li&gt;unidade de tempo.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  36. Mobile
&lt;/h1&gt;

&lt;p&gt;Depois de obter a conexão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va celular = mobile.conectar(conexao)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos trabalhar com o objeto retornado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar(celular.estatisticas())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #connector
import #mobile

va conexao = connector.adb(
    "192.168.1.2",
    5555,
    timeout = 20 segundos
)

va celular = mobile.conectar(conexao)

mostrar(celular.estatisticas())
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  37. Criando interfaces
&lt;/h1&gt;

&lt;p&gt;Agora podemos entrar em uma área diferente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #ui,
    #style
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criamos uma janela:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va app = ui.janela()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionamos um título:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.titulo("Meu aplicativo")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  38. Estrutura da interface
&lt;/h1&gt;

&lt;p&gt;Podemos definir elementos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.ui({

    main(class="app") {

        h1("Bem-vindo")

        p("Aplicação criada com JLScript")

        button(class="acao") {
            text = "Entrar"
        }
    }
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aqui começamos a trabalhar com uma sintaxe especializada para interfaces.&lt;/p&gt;




&lt;h1&gt;
  
  
  39. Estilo
&lt;/h1&gt;

&lt;p&gt;Depois podemos aplicar estilo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.style({

    background("#101010"),

    color("#ffffff")
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  40. Abrindo a janela
&lt;/h1&gt;

&lt;p&gt;Por fim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.abrir()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aplicação completa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #ui,
    #style
]

va app = ui.janela()

app.titulo("JLScript App")

app.ui({

    main(class="app") {

        h1("Bem-vindo")

        p("Aplicação criada com JLScript")

        button(class="acao") {
            text = "Entrar"
        }
    }
})

app.style({

    background("#101010"),

    color("#ffffff")
})

app.abrir()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  41. Organizando funções
&lt;/h1&gt;

&lt;p&gt;Programação avançada não significa escrever código mais complicado.&lt;/p&gt;

&lt;p&gt;Na maioria das vezes significa dividir melhor o problema.&lt;/p&gt;

&lt;p&gt;Ruim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va preco = 30
va quantidade = 4
va subtotal = preco * quantidade

se (subtotal &amp;gt; 100) {
    subtotal = subtotal * 0.9
}

mostrar(subtotal)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Podemos transformar essa lógica em função:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func calcularTotal(preco, quantidade) {

    va subtotal = preco * quantidade

    se (subtotal &amp;gt; 100) {
        retorne subtotal * 0.9
    }

    retorne subtotal
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va total = calcularTotal(30, 4)

mostrar(total)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A lógica ficou reutilizável.&lt;/p&gt;




&lt;h1&gt;
  
  
  42. Escopo
&lt;/h1&gt;

&lt;p&gt;Variáveis criadas dentro de uma função pertencem àquele contexto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func calcular() {

    va resultado = 10 + 5

    mostrar(resultado)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;resultado&lt;/code&gt; existe dentro da função.&lt;/p&gt;

&lt;p&gt;Esse conceito fica cada vez mais importante conforme o projeto cresce.&lt;/p&gt;




&lt;h1&gt;
  
  
  43. Juntando módulos
&lt;/h1&gt;

&lt;p&gt;Podemos importar vários sistemas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #api,
    #database,
    #json
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora o programa pode ter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;servidor;&lt;/li&gt;
&lt;li&gt;banco;&lt;/li&gt;
&lt;li&gt;processamento de dados.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  44. Projeto maior
&lt;/h1&gt;

&lt;p&gt;Vamos juntar vários conceitos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #api,
    #database
]

va banco = database.sqlite("usuarios.db")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criamos uma função:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func criarUsuario(nome, idade) {

    se (nome == null) {
        retorne false
    }

    banco.executar(
        "INSERT INTO usuarios (nome, idade) VALUES (?, ?)"
    )

    retorne true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora criamos a API:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va app = api.criar(3000)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criamos uma rota:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.get("/", func(req, res) {

    res.enviar({
        linguagem: "JLScript",
        status: "online"
    })
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E iniciamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app.iniciar()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  45. Projeto completo
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [
    #api,
    #database
]

va banco = database.sqlite("usuarios.db")

func criarUsuario(nome, idade) {

    se (nome == null) {
        retorne false
    }

    banco.executar(
        "INSERT INTO usuarios (nome, idade) VALUES (?, ?)"
    )

    retorne true
}

va app = api.criar(3000)

app.get("/", func(req, res) {

    res.enviar({
        linguagem: "JLScript",
        status: "online"
    })
})

app.iniciar()

mostrar("Servidor iniciado")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo utilizamos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;imports;&lt;/li&gt;
&lt;li&gt;módulos;&lt;/li&gt;
&lt;li&gt;banco de dados;&lt;/li&gt;
&lt;li&gt;variáveis;&lt;/li&gt;
&lt;li&gt;funções;&lt;/li&gt;
&lt;li&gt;parâmetros;&lt;/li&gt;
&lt;li&gt;condições;&lt;/li&gt;
&lt;li&gt;retorno;&lt;/li&gt;
&lt;li&gt;callbacks;&lt;/li&gt;
&lt;li&gt;objetos;&lt;/li&gt;
&lt;li&gt;API HTTP.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  46. Do básico ao avançado
&lt;/h1&gt;

&lt;p&gt;Você começou aqui:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá, mundo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois aprendeu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = "Lucas"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Passou para:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;gt;= 18) {
    mostrar("Maior")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func soma(a, b) {
    retorne a + b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Até chegar em:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e construir aplicações que podem trabalhar com:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs;&lt;/li&gt;
&lt;li&gt;HTTP;&lt;/li&gt;
&lt;li&gt;banco de dados;&lt;/li&gt;
&lt;li&gt;arquivos;&lt;/li&gt;
&lt;li&gt;JSON;&lt;/li&gt;
&lt;li&gt;tempo;&lt;/li&gt;
&lt;li&gt;rede;&lt;/li&gt;
&lt;li&gt;dispositivos;&lt;/li&gt;
&lt;li&gt;interfaces;&lt;/li&gt;
&lt;li&gt;testes;&lt;/li&gt;
&lt;li&gt;compilação.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧛 Cores Dracula para JLScript
&lt;/h1&gt;

&lt;p&gt;Para documentação e editores, uma identidade visual inspirada no &lt;strong&gt;Dracula Theme&lt;/strong&gt; pode utilizar aproximadamente estas categorias:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Elemento JLScript&lt;/th&gt;
&lt;th&gt;Cor Dracula&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;se&lt;/code&gt;, &lt;code&gt;senao&lt;/code&gt;, &lt;code&gt;func&lt;/code&gt;, &lt;code&gt;retorne&lt;/code&gt;, &lt;code&gt;import&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Pink &lt;code&gt;#ff79c6&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strings&lt;/td&gt;
&lt;td&gt;Yellow &lt;code&gt;#f1fa8c&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Números&lt;/td&gt;
&lt;td&gt;Purple &lt;code&gt;#bd93f9&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;#api&lt;/code&gt;, &lt;code&gt;#ui&lt;/code&gt;, &lt;code&gt;#database&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Cyan &lt;code&gt;#8be9fd&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Funções nativas&lt;/td&gt;
&lt;td&gt;Green &lt;code&gt;#50fa7b&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unidades de tempo&lt;/td&gt;
&lt;td&gt;Orange &lt;code&gt;#ffb86c&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comentários&lt;/td&gt;
&lt;td&gt;Comment &lt;code&gt;#6272a4&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Texto normal&lt;/td&gt;
&lt;td&gt;Foreground &lt;code&gt;#f8f8f2&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fundo&lt;/td&gt;
&lt;td&gt;Background &lt;code&gt;#282a36&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;O arquivo Markdown não controla essas cores sozinho. O syntax highlighter do site/editor precisa possuir uma gramática JLScript e um tema Dracula.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  📚 Ordem recomendada de estudo
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;mostrar()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;valores&lt;/li&gt;
&lt;li&gt;variáveis&lt;/li&gt;
&lt;li&gt;operadores&lt;/li&gt;
&lt;li&gt;condições&lt;/li&gt;
&lt;li&gt;loops&lt;/li&gt;
&lt;li&gt;funções&lt;/li&gt;
&lt;li&gt;listas&lt;/li&gt;
&lt;li&gt;objetos&lt;/li&gt;
&lt;li&gt;tratamento de erros&lt;/li&gt;
&lt;li&gt;imports&lt;/li&gt;
&lt;li&gt;módulos&lt;/li&gt;
&lt;li&gt;tempo&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;banco de dados&lt;/li&gt;
&lt;li&gt;dispositivos&lt;/li&gt;
&lt;li&gt;UI&lt;/li&gt;
&lt;li&gt;organização de projetos&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Conclusão
&lt;/h1&gt;

&lt;p&gt;JLScript foi criada para permitir que alguém comece com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mostrar("Olá")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;sem exigir uma quantidade absurda de conhecimento inicial.&lt;/p&gt;

&lt;p&gt;Mas a mesma linguagem pode continuar acompanhando o programador quando ele começa a trabalhar com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #api
import #database
import #connector
import #ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia não é apenas possuir uma sintaxe simples.&lt;/p&gt;

&lt;p&gt;A ideia é criar um ecossistema no qual seja possível começar aprendendo programação e continuar evoluindo até construir aplicações maiores.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;JLScript: simples para começar, poderosa para continuar.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>jlscript</category>
      <category>ai</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
    <item>
      <title>JLScript — Identidade Visual Oficial</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Sat, 03 Oct 2026 00:58:33 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/jlscript-identidade-visual-oficial-5eih</link>
      <guid>https://dev.to/eoh_lczinn/jlscript-identidade-visual-oficial-5eih</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ieppeoseo7fdom383op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ieppeoseo7fdom383op.png" alt=" " width="461" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feita para aprender. Criada para evoluir.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>jlscript</category>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>JLScript: criando uma linguagem de programação brasileira do zero</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Tue, 29 Sep 2026 15:32:39 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/jlscript-criando-uma-linguagem-de-programacao-brasileira-do-zero-3nha</link>
      <guid>https://dev.to/eoh_lczinn/jlscript-criando-uma-linguagem-de-programacao-brasileira-do-zero-3nha</guid>
      <description>&lt;h1&gt;
  
  
  🇧🇷 JLScript: criando uma linguagem de programação brasileira do zero
&lt;/h1&gt;

&lt;p&gt;Em 2026 comecei um projeto que inicialmente parecia relativamente simples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;criar minha própria linguagem de programação.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O nome dela é &lt;strong&gt;JLScript&lt;/strong&gt;, ou simplesmente &lt;strong&gt;JLS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Os arquivos utilizam a extensão:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No começo eu queria principalmente experimentar uma sintaxe que fosse simples para mim.&lt;/p&gt;

&lt;p&gt;Só que existe um pequeno problema quando você decide criar uma linguagem:&lt;/p&gt;

&lt;p&gt;você começa querendo interpretar algumas linhas de código e, quando percebe, está estudando lexer, parser, AST, runtime, escopos, compiladores, bytecode, concorrência, módulos e sabe-se lá mais o quê.&lt;/p&gt;

&lt;p&gt;Foi exatamente o que aconteceu.&lt;/p&gt;




&lt;h1&gt;
  
  
  O que é JLScript?
&lt;/h1&gt;

&lt;p&gt;JLScript é uma linguagem de programação brasileira que estou desenvolvendo principalmente em &lt;strong&gt;C++&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Minha ideia é combinar três coisas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;simplicidade
     +
produtividade
     +
capacidade de crescer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não quero criar simplesmente outro Python ou outro JavaScript.&lt;/p&gt;

&lt;p&gt;Naturalmente existem ideias inspiradas em linguagens que já utilizamos, mas também estou experimentando decisões próprias.&lt;/p&gt;

&lt;p&gt;Hoje a arquitetura do projeto já envolve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Código .jls
    │
    ▼
  Lexer
    │
    ▼
  Parser
    │
    ▼
   AST
    │
    ├──────────────┐
    ▼              ▼
Interpreter     Compiler
    │              │
    ▼              ▼
 Runtime        C++ / Bytecode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Português e inglês
&lt;/h1&gt;

&lt;p&gt;Uma das ideias do JLScript é permitir construções em português e inglês.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;se (idade &amp;gt;= 18) {
    mostrar('Maior de idade')
} senao {
    mostrar('Menor de idade')
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Também posso escrever:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (idade &amp;gt;= 18) {
    mostrar('Maior de idade')
} else {
    mostrar('Menor de idade')
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não quero que o português limite a linguagem ao Brasil.&lt;/p&gt;

&lt;p&gt;Quero justamente que ela possa ter uma identidade brasileira e ainda permitir uma escrita familiar para desenvolvedores de outros lugares.&lt;/p&gt;




&lt;h1&gt;
  
  
  Variáveis
&lt;/h1&gt;

&lt;p&gt;Atualmente a linguagem trabalha com formas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;va nome = 'Lucas'
let linguagem = 'JLScript'
ins ativo = true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O runtime possui valores fundamentais como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STRING
NUMBER
BOOLEAN
NULL
LIST
OBJECT
FUNCTION
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Funções
&lt;/h1&gt;

&lt;p&gt;Uma função pode ser declarada explicitamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func saudacao(nome) {
    mostrar('Olá, ' + nome)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas também criei uma forma curta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;soma(a, b) {
    retorne a + b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia é simples:&lt;/p&gt;

&lt;p&gt;se a estrutura já deixa claro que aquilo é uma função, por que obrigatoriamente adicionar outra palavra?&lt;/p&gt;




&lt;h1&gt;
  
  
  Uma decisão diferente no switch
&lt;/h1&gt;

&lt;p&gt;Outra coisa que quis experimentar foi o &lt;code&gt;switch&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Em várias linguagens encontramos algo parecido com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;case:
    ...
    break
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No JLScript posso fazer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch (opcao) {

    case 1 {
        mostrar('Iniciar')
    }

    case 2 {
        mostrar('Configurações')
    }

    default {
        mostrar('Sair')
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cada &lt;code&gt;case&lt;/code&gt; possui seu próprio bloco.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;}&lt;/code&gt; já deixa claro onde aquele caso termina.&lt;/p&gt;

&lt;p&gt;Então não preciso escrever &lt;code&gt;break&lt;/code&gt; apenas para repetir essa informação.&lt;/p&gt;

&lt;p&gt;Essa acabou se tornando uma das filosofias que tento seguir:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se a própria estrutura do código já expressa claramente uma intenção, não quero adicionar sintaxe apenas porque outra linguagem faz assim.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  O projeto cresceu bastante
&lt;/h1&gt;

&lt;p&gt;A primeira versão oficial, &lt;strong&gt;JLScript 1.0.0&lt;/strong&gt;, era muito menor.&lt;/p&gt;

&lt;p&gt;Ela possuía principalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if / else
funções
switch
for
loops
execução básica
CLI inicial
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O terminal também era extremamente simples.&lt;/p&gt;

&lt;p&gt;Um dos comandos era basicamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas aquela versão provou a coisa mais importante:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;a linguagem funcionava.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Depois disso comecei a expandir o projeto.&lt;/p&gt;

&lt;p&gt;Hoje sua estrutura envolve áreas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JLScript
│
├── Lexer
├── Parser
├── AST
├── Interpreter
├── Runtime
├── Execution Engine
├── Modules
├── Compiler
├── C++ Generator
├── Bytecode Compiler
├── CLI
└── Standard Library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  CLI própria
&lt;/h1&gt;

&lt;p&gt;A linguagem também ganhou uma CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com o crescimento do projeto começaram a surgir comandos como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;jls run programa.jls
jls repl
jls build programa.jls
jls compile programa.jls
jls &lt;span class="nb"&gt;test
&lt;/span&gt;jls &lt;span class="nb"&gt;fmt
&lt;/span&gt;jls lint
jls fix
jls doctor
jls update
jls dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minha intenção é que o terminal seja parte importante da experiência da linguagem, e não simplesmente um executável que recebe um arquivo.&lt;/p&gt;




&lt;h1&gt;
  
  
  Compilação
&lt;/h1&gt;

&lt;p&gt;Também comecei a experimentar compilação.&lt;/p&gt;

&lt;p&gt;Um dos caminhos atuais utiliza geração de C++:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;programa.jls
     │
     ▼
   Lexer
     │
     ▼
   Parser
     │
     ▼
    AST
     │
     ▼
Gerador C++
     │
     ▼
Compilador C++
     │
     ▼
 Executável
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou seja, o código continua sendo escrito em JLScript, mas pode passar por uma etapa de geração e compilação nativa.&lt;/p&gt;




&lt;h1&gt;
  
  
  Bytecode
&lt;/h1&gt;

&lt;p&gt;Existe também um compilador de bytecode.&lt;/p&gt;

&lt;p&gt;Arquivos compilados podem utilizar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.jlb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O fluxo é aproximadamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;programa.jls
     │
     ▼
Bytecode Compiler
     │
     ▼
 programa.jlb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa parte ainda faz parte da evolução da arquitetura da linguagem.&lt;/p&gt;




&lt;h1&gt;
  
  
  Bibliotecas
&lt;/h1&gt;

&lt;p&gt;Outra área que cresceu bastante foi o sistema de bibliotecas.&lt;/p&gt;

&lt;p&gt;Uma biblioteca pode ser importada assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import #json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou várias:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [#api, #database, #json]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O projeto já explora diferentes áreas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#api
#database
#json
#ui
#style
#mobile
#connector
#compiler
#thread
#time
#file
#process
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minha ideia é manter funcionalidades especializadas fora do núcleo sempre que fizer sentido.&lt;/p&gt;




&lt;h1&gt;
  
  
  Interface gráfica usando JLScript
&lt;/h1&gt;

&lt;p&gt;Uma das partes que mais estou experimentando atualmente é permitir construir interfaces utilizando a própria linguagem.&lt;/p&gt;

&lt;p&gt;Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import [#ui, #style]

va app = ui.janela()

app.titulo('Login')

app.ui({

    div {
        text = 'Bem-vindo'
        button = 'Entrar'
    }

})

app.style({
    fundo: '#101010',
    cor: '#ffffff',
    largura: 800,
    altura: 600
})

app.abrir()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia é aproximar algumas facilidades encontradas no desenvolvimento web da criação de aplicações usando JLScript.&lt;/p&gt;

&lt;p&gt;Ainda existe bastante trabalho nessa área, mas é uma das partes que pretendo continuar desenvolvendo.&lt;/p&gt;




&lt;h1&gt;
  
  
  Criar uma linguagem me obrigou a aprender muita coisa
&lt;/h1&gt;

&lt;p&gt;Essa provavelmente foi a parte mais interessante do projeto.&lt;/p&gt;

&lt;p&gt;Quando comecei, eu não precisava conhecer profundamente todas as peças de uma linguagem.&lt;/p&gt;

&lt;p&gt;Só que cada funcionalidade nova apresentava outro problema.&lt;/p&gt;

&lt;p&gt;O processo acabou ficando parecido com isto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ideia
  ↓
Implementação
  ↓
Erro
  ↓
"por que isso aconteceu?"
  ↓
Pesquisa
  ↓
entender uma parte nova
  ↓
corrigir
  ↓
ter outra ideia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Criar funções me fez estudar escopos.&lt;/p&gt;

&lt;p&gt;Criar sintaxe me fez estudar lexer e parser.&lt;/p&gt;

&lt;p&gt;Criar execução me levou ao runtime.&lt;/p&gt;

&lt;p&gt;Criar build me levou a compiladores.&lt;/p&gt;

&lt;p&gt;Criar bibliotecas me levou a APIs nativas.&lt;/p&gt;

&lt;p&gt;Criar servidores me levou a sockets e concorrência.&lt;/p&gt;

&lt;p&gt;Uma coisa vai puxando outra.&lt;/p&gt;




&lt;h1&gt;
  
  
  Por que o nome JLScript?
&lt;/h1&gt;

&lt;p&gt;O nome também tem uma história.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;J       = Joicy
L       = Lucas
Script  = Programação
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portanto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;J + L + Script
      ↓
   JLScript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O &lt;code&gt;J&lt;/code&gt; não significa Java nem JavaScript.&lt;/p&gt;

&lt;p&gt;Ele representa &lt;strong&gt;Joicy Costa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;O &lt;code&gt;L&lt;/code&gt; representa &lt;strong&gt;Lucas Aguiel Dos Santos De Oliveira&lt;/strong&gt;, criador da linguagem.&lt;/p&gt;

&lt;p&gt;Joicy não participa tecnicamente do desenvolvimento. A presença dela no nome é uma homenagem e registra uma parte da minha história pessoal dentro do projeto.&lt;/p&gt;




&lt;h1&gt;
  
  
  JLScript e JLScripter
&lt;/h1&gt;

&lt;p&gt;Também existe uma diferença entre alguns nomes que utilizo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JLScript
    ↓
a linguagem

JLS
    ↓
abreviação

.jls
    ↓
extensão dos arquivos

JLScripter
    ↓
o ecossistema ao redor da linguagem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Então penso no JLScripter aproximadamente assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;JLScripter
│
├── JLScript
├── Interpreter
├── Runtime
├── Compiler
├── Bytecode
├── CLI
├── Libraries
├── Developer Tools
└── Documentation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Ainda está em desenvolvimento
&lt;/h1&gt;

&lt;p&gt;JLScript não é um projeto que considero terminado.&lt;/p&gt;

&lt;p&gt;Ainda existem partes experimentais, coisas que quero redesenhar, bibliotecas que precisam amadurecer e bastante trabalho no runtime e nas ferramentas.&lt;/p&gt;

&lt;p&gt;Mas comparar a primeira versão com o projeto atual é uma das coisas que mais me motiva a continuar.&lt;/p&gt;

&lt;p&gt;Começou assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;condições
funções
loops
switch
CLI simples
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E está caminhando para:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;linguagem
+
runtime
+
compilação
+
bytecode
+
bibliotecas
+
interfaces
+
ferramentas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ainda tenho bastante coisa para construir.&lt;/p&gt;

&lt;p&gt;E provavelmente bastante coisa para quebrar também. Faz parte de criar uma linguagem do zero. 😅&lt;/p&gt;




&lt;h1&gt;
  
  
  🇧🇷 JLScript
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Uma linguagem brasileira em desenvolvimento.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simples para começar. Estruturada para crescer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Criada por &lt;strong&gt;Lucas Aguiel Dos Santos De Oliveira&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>cpp</category>
      <category>compilers</category>
      <category>opensource</category>
    </item>
    <item>
      <title>JLScript: A Programming Language Designed to Make Coding Simpler</title>
      <dc:creator>JLScript</dc:creator>
      <pubDate>Sun, 02 Aug 2026 20:12:29 +0000</pubDate>
      <link>https://dev.to/eoh_lczinn/jlscript-a-programming-language-designed-to-make-coding-simpler-2ml3</link>
      <guid>https://dev.to/eoh_lczinn/jlscript-a-programming-language-designed-to-make-coding-simpler-2ml3</guid>
      <description>&lt;p&gt;&lt;em&gt;Programming should be accessible to everyone, not just people who already speak English fluently.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;JLScript is a programming language under development with the goal of making programming simpler, more intuitive, and more accessible, especially for beginners and Portuguese-speaking developers.&lt;/p&gt;

&lt;p&gt;The language uses clear and readable syntax while keeping modern programming concepts such as variables, functions, conditions, loops, arrays, objects, modules, and API integration.&lt;/p&gt;

&lt;p&gt;Main Goals&lt;br&gt;
Simple and clean syntax&lt;br&gt;
Easy to learn&lt;br&gt;
High readability&lt;br&gt;
Modern language features&lt;br&gt;
Open-source project&lt;br&gt;
Community-driven development&lt;br&gt;
Example&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;va&lt;/span&gt; &lt;span class="nx"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lucas&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="nx"&gt;func&lt;/span&gt; &lt;span class="nf"&gt;cumprimentar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;mostrar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Olá, &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;cumprimentar(nome)&lt;/li&gt;
&lt;li&gt;Planned Features&lt;/li&gt;
&lt;li&gt;Native HTTP API consumption&lt;/li&gt;
&lt;li&gt;Package manager&lt;/li&gt;
&lt;li&gt;Cross-platform compiler&lt;/li&gt;
&lt;li&gt;VS Code extension&lt;/li&gt;
&lt;li&gt;Modules and libraries&lt;/li&gt;
&lt;li&gt;Object-Oriented Programming&lt;/li&gt;
&lt;li&gt;Error handling&lt;/li&gt;
&lt;li&gt;Arrays and dictionaries&lt;/li&gt;
&lt;li&gt;File system support&lt;/li&gt;
&lt;li&gt;JSON support&lt;/li&gt;
&lt;li&gt;CLI tools&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;JLScript is still under active development, and many features are being improved continuously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback, ideas, and contributions are always welcome.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://github.com/eohlczinn/jlscript.dev" rel="noopener noreferrer"&gt;https://github.com/eohlczinn/jlscript.dev&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Official Website:&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://jlscript-dev.vercel.app/#/docs" rel="noopener noreferrer"&gt;https://jlscript-dev.vercel.app/#/docs&lt;/a&gt;)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>news</category>
    </item>
  </channel>
</rss>
