Notícias:

SMF - Just Installed!

Main Menu

Algo sobre a Linguagem

Iniciado por adalberto, Agosto 05, 2015, 03:55:45 PM

tópico anterior - próximo tópico

adalberto



Sejam bem vindos, aqui vou falar um pouco sobre a linguagem, de modo livre, informal e resumido, em forma de perguntas e respostas:

O que é Prisma?

É uma modificação do programa interpretador Lua 5.2 em que os nomes dos comandos são na maior parte traduzidos do inglês (original Lua) para o português (característico do Brasil, pois sou brasileiro); uma pequena parte é acrescida ao código principal, e bibliotecas não existentes em Lua são adicionadas, com comandos também em pt-BR.

Para que serve Prisma?

Seu objetivo é possibilitar a criação de programas de computador. Programas de computador são aplicativos que executam funções aritméticas, processamento de dados, acesso à rede, manuseio de multimídia, entre outros. O bloco de notas ou o Gedit são exemplos de aplicativos que processam texto. O Firefox é um exemplo de programa que processa vários tipos de dados com acesso à rede.

Logicamente prisma não possui recursos atuais para construção de um navegador web, ou programa ERP avançado, no entanto, como é um projeto em fase inicial, permite a criação de pequenos editores de texto, leitura e gravação em arquivos, acesso às funções de sistema operacional, processamento de dados etc.

Enfim, seu recurso, embora limitado, é muito poderoso. Para ver a lista de materiais e posts sobre a linguagem veja:  http://linguagemprisma.br4.biz/blog/documentacao/

Quanto custa para adquirir o editor Prismacod + interpretador, bibliotecas e arquivos padrão?

Não custa nada. São gratuitos esses itens. A licença permite um amplo acesso para construir programas tanto de código livre e aberto como da maneira que bem entender, a exemplo, um programa comercial para vender. Prisma pode ser modificada em seu código fonte sem custo, apenas manter em alguma parte da modificação a licença Lua e Prisma originais.

Por que escolher Prisma?

1 - Ela é totalmente gratuita.
2-  Ela é uma linguagem com comandos em português ótima para iniciantes em programação.
3 - Ela é leve e poderosa, características herdadas do original Lua.
4 - Se comparada à Python, Java, C++, C, ela é extremamente fácil e rápida para aprender.
5 - Permite uma programação estruturada ou orientada a objetos.
6 - Sua performance é excelente, tanto em desempenho quanto em relação ao uso de memória.
7 - Linguagem de script, dentre as quais, mais veloz. Executa o código fonte sem precisar estar compilado.
8 - Tem um mecanismo simples para lidar com dados: as tabelas.
9 - versão para windows e linux. Podendo ser adaptada facilmente para outras plataformas.
10 - Possui recursos para modularizar o programa. (quebrar um programa em módulos menores e um principal);
11 - simplicidade de dados, fácil para dominar.

Prisma possui desvantagens?

Claro que sim.

Está em fases de testes apenas. É mais limitadas em recursos (bibliotecas) que Python ou ruby, ou mesmo Lua.
Não possui um manual completo ainda, mas um básico que expõe a parte não gráfica da linguagem e bibliotecas principais (não todas).

Possui recurso bem básico, ainda, para acesso à banco de dados.
Não possui um recurso para acesso à rede. (tem um em fase de construção no linux);
Não possui um recurso para processamento de áudio, vídeo, imagens. ( vídeo e áudio em fase de construção no windows);
Entre outros.

Existe apenas um programa exemplo grande e útil funcionando, o Prismacod, editor da própria linguagem.
Possui recursos para interface gráfica bem básicos ainda. (o igbr.pris )

Prisma não é indicado para projetos gigantes, mesmo em modo texto,  em que o uso de memória seja primordial importância e foco único.

Qual o limite de linhas de comandos que posso usar em um arquivo fonte prisma?

Sabemos que tudo tem um limite. Fiz um teste com Prisma usando um programa com 1000000 (um milhão) de linhas de comando imprima("teste")

ao abrir no Prismacod (em Linux Ubuntu) a memória foi para 380MB e ao executar saltou para 500MB~
o programa de um milhão de linhas começou a execução imediatamente, ocupando 23MB do interpretador Prisma, demorando 34 segundos para terminar os comandos. (Notebook core i3, 4gb de ram).

Poderão ser executados tranquilamente programas com até mais de 100 mil linhas de comando.


Prisma é uma linguagem visual?

Não. Ela é concebida na sua origem, em Lua, para ser uma extensão de um programa principal em C, portanto tem funções puras em modo texto.
Logo para um programa em terminal é excelente e completa. Para interface gráfica está sendo construída uma biblioteca baseada em Gtk+2
que supre funções gráficas simples para botões, janelas, entradas de texto, lista etc.

Exemplo de atribuição e uso de variáveis:


//comentário
//tipo número
x = 1;
y = 2;
resultado = x + y;
imprima( resultado);

//strings
imprima('digite seu nome');
nome = leia(); //recebe o nome digitado pelo usuário e armazena em nome;
imprima( "Ola " .. nome ); //os dois pontos seguidos unem strings ;

//tabela (matriz)
tab = {};

tab[1] = 'ola'
tab[2] = 'mundo'
tab.algo = "em Prisma";
imprima( tab[1] , tab[2] , tab.algo );

//fim programa




Exemplo do uso de bloco de controle "se / senão":


imprima'digite um numero entre 1 e 100' ;

num = leia(); //pega o numero digitado e coloca na variável num

num = convnumero(num); //converte string para número

se num < 50 entao
   imprima("seu número é menor que 50 = " , num );
senaose num > 50 entao
  imprima("seu número é igual ou maior que 50" );
fim



Exemplo do bloco enquanto



x = 1;
enquanto x <= 100 inicio  //enquanto x for menor ou igual a 100
  imprima(x);
  x = x + 1;
fim

//quebrando por dentro de laço enquanto indefinido
x = 1;
enquanto verdadeiro inicio
  se x > 100 entao quebre fim //para imediatamente quando chega a 100
  imprima (x);
  x = x+1;
fim




Exemplo do bloco repita:



x = 1;
repita
  imprima(x)
  x = x + 1;
ate x > 100   //até chegar a 100




Exemplo do bloco *para*:



para x = 1 , 100 inicio //para o valor de x adicione 1 até chegar a 100
  imprima ( x )
fim

//diminuindo
para x = 100 , 1 ,  -1  inicio // para o valor de 100 até chegar ao numero 1 tire -1 a cada repetição.
   imprima(x)
fim

//para se de dois em dois basta usar -2 ou 2 para somar.
para x = 100 , 1 , -2 inicio
imprima(x)
fim

para x = 0 , 100 , 2 inicio //para o valor 0 adicione 2 até chegar a 100.
  imprima(x)
fim




Fórmula de Bhaskara


//programa para calcular equações quadráticas

imprima"digite o valor de a depois de b e c:\n(na ausência de 'c' coloque zero ou dê ENTER apenas)\n"

es.escreva'a: ';
a = convnumero(leia());
es.escreva'b: ';
b = convnumero(leia());
es.escreva'c: ';
c = convnumero(leia());

a = a ou 1;
b = b ou 1;
c = c ou 0;


funcao Bhaskara(a,b,c)
  local delta = b^2 - (4*a*c);
  se delta < 0 entao
    imprima('Delta Negativo, não possui resolução\nEnter para sair...');
    leia();
    sis.saia(1);
  senaose delta == 0 entao
    imprima('Delta = 0, apenas uma solução:');
  fim

  local res_delta = mat.raizquad(delta);
  local xa1 = ( -1 * b + res_delta )
  local xa2 =  2 * a;
  se xa2 == 0 entao erro'Divisao por zero' fim
  local x1 = xa1 / xa2;
  //imprima( "valor b + =" , xa1 .. ' / ' .. xa2 .. ' = ' .. x1);
 
  local xb1 = ( -1 * b - res_delta );
  local xb2 = (2 * a );
  se xb2 == 0 entao erro'Divisao por zero' fim
  local x2 = xb1 / xb2;
  //imprima( "valor b - =", xb1 .. ' / ' .. xb2 ..' = ' .. x2);
  retorne {x1, xa1,xa2} , {x2,xb1,xb2};
fim

b1 , b2 = Bhaskara(a,b,c);

imprima( "\nvalor b + =" , b1[2] .. ' / ' .. b1[3] .. ' = ' .. b1[1]);
imprima( "valor b - =" , b2[2] .. ' / ' .. b2[3] .. ' = ' .. b2[1]);

/**
  b[1] = resultado final +/-
  b[2] = parte de cima da fração
  b[3] = parte de baixo da fração
 
**///


Bom, é isso por enquanto. Vocês podem deixar mais perguntas abaixo;

Recomeçarei os trabalhos com a linguagem em breve,  visite o blog: http://linguagemprisma.br4.biz/blog/