Linotte é uma linguagem de programação open source (licença GPL V3) criada em 2005 por Ronan Mounès. É uma linguagem interpretada pertencente ao paradigma imperativo e tem como peculiaridade a sua sintaxe, que possui comandos no idioma francês.
A principal ideia de Ronan Mounès ao criar a linguagem Linotte foi desenvolver uma linguagem que fosse simples e fácil de aprender por pessoas que estão começando a programar que têm pouco ou nenhum conhecimento em programação e estudantes em geral mas que desejam ter um primeiro contato com programação. A ideia é que um programa Linotte fosse tão fácil de ler quanto um livro, por isso os programas em Linotte não são chamados de programas e sim de "livro" e cada função do programa é chamada de "parágrafo". Como o próprio mote sugere: "Se você é capaz de ler um livro, então é capaz de escrever um programa de computador".
Em Linotte não existem sinais como parênteses, chaves, colchetes e outros tipos de sinais, salvo os que representam as quatro operações aritméticas básicas (adição, subtração, multiplicação e divisão). As variáveis são persistentes (exceto na versão applet), quando se declara uma variável em um livro Linotte, esta é alocada na memória e pode ser usada novamente em outro trecho do mesmo livro, na próxima execução do livro ou até em um livro diferente.
Não é possível acontecer erro durante a execução, uma vez que um livro escrito em Linotte não pode ser executado caso exista algum erro de sintaxe.
Linotte é uma linguagem que leva o programador a esenvolver a base de programação: os algoritmos. Não é uma linguagem desenvolvida para aplicações comerciais reais mas sim para começar a aprender os conceitos básicos de programação.
Estrutura Básica Estrutura básica de um programa Linotte:
("autor: Adolfo Eliazàt") Livre: [le nom du livre] Livre: [le nom du livre] Paragraphe: [le nombre du paragraphe] {Les} rôles: {article} Acteur est un nombre {article} Acteur est un nombre vide {article} Acteur est un nombre valant [valeur] {article} Acteur est un texte {article} Acteur est un texte vide {article} Acteur est un texte valant [valeur] {Les} actions: Tu [verbe] {article} [acteur] Tu [verbe]
[xxx]: obrigatório; {xxx}: facultativo
Linotte e outras linguagens de programação O intuito da linguagem de programação Linotte não é competir com o Basic ou outra linguagem, mas apenas fornecer uma introdução para estudantes à programação, para que depois possam evoluir para linguagens mais poderosas.
Mesmo que as atualizações e versões não sejam muito constante, devido a limitações de tempo, o projeto está na versão 0.7.0 (data de atualização janeiro 27, 2009), e já possui um grande número de funções: de cálculo à exibição de string de caracteres até a possibilidade de tocar música!
O interpretador (L'Atelier Linotte) Como mencionado acima, Linotte é uma linguagem interpretada. Até agora, existe apenas um interpretador disponível, mas ele permanece livre.
Ele é chamado de "Atelier" pois é nele onde é desenvolvido todo o trabalho pelo programador. É desenvolvido em Java e é distribuído sob a GNU-GPL.
O ateliêr linote vem no pacote do Linotte que está disponível no site oficial, assim como bibliotecas, um manual e alguns exemplos também estão no pacote que está em formato.zip.
Exemplo de um Hello World (Bonjour Tout Le Monde) Livre: HelloWorld Paragraphe: hello Les actions: "Bonjour Tout Le Monde!"
Os únicos requisitos são os conhecimentos dos comandos que são fáceis de se aprender pois estão muito próximos de um roteiro de um filme. Além disso, Linotte se difere da maioria das linguagens no que diz respeito à declaração das variáveis, aqui no lugar de variáveis são declarados "papéis" porém o princípio é o mesmo.
Integrar Linotte com uma página web É possível integrar uma applet em forma de botão para ler um livro (programa) linotte de uma página HTML.
Para isso é necessário acrescentar o seguinte código à sua página: <applet code="org.linotte.applet.PetiteTete2Linotte.class" width="110" height="110"> <param name="cache_archive" value="http://langagelinotte.free.fr/linotte/linotte_last/jinotte.zip"> <!-- valor à ser modificado: --> <param name="url" value="http://mon.site.a.moi.fr/mon_livre.liv"> </applet>
No lugar de "https://web.archive.org/web/20160303174719/http://mon.site.a.moi.fr/mon_livre.liv" vai a URL com o endereço do seu livro Linotte.
JINOTTE Jinotte é a interface que permite utilizar o Linotte através da linha de comando de um sistema operacional.
Para executar um comando utilizando o Jinotte é necessário seguir a estrutura:
jinotte [opção]* [livro_linotte.liv]
As opções disponíveis são:
-v: Exibe a versão do interpretador Linotte -b: Executa um livro Linotte -h: Exibe as optções disponíveis -t: Exibe o tempo de execução de cada livro -x: Autorisa a utilisação de tela em modo console -s: Exibe un ícone do systray no lugar da barra de tarefas
Exemplos:
jinotte -bt livre\bienvenue.liv jinotte -bt livre\bienvenue.liv livre\helloword.liv
Execução:
Windows
Abrir uma sessão DOS, ir até o diretório de instalação do Linotte e em seguida digitar o seguinte comando:
jinotte -bt livre\bienvenue.liv
Linux e MacOS
Abrir um shell, ir até o diretório de instalação do Linotte e em seguida digitar o seguinte comando:
java -cp jinotte.jar -b livre\bienvenue.liv
Le livre (O Livro) Linotte funciona com um interpretador. Um interpretador é um programa que irá receber uma a uma as ordens a serem executadas e irá parar nas seguintes situações: se chegar ao fim da lista de ordens, se o você ordenar atráves de um comando ou se encontrar um erro. No caso de encontrar um erro ele irá mostrar a causa a fim de poder corrigir o erro.
Podemos comparar o interpretador Linotte com um roteirista cinematográfico.
A fim de que possa criar um roteiro para um filme, ele cria um cenário, uma lista de atores, os papéis dos atores e as ações que deveram cumprir os atores. Se o filme é muito longo ele pode dividi-lo em várias cenas.
O interpretador Linotte necessita das mesmas informações, no entanto elas são reagrupadas em um "Livre" que podemos associar a um cenário. As ações são detalhadas não mais em cenas mas em "Paragraphes".
Les Paragraphes (Os parágrafos) Voltemos ao roteirista. Ele decidiu criar um roteiro para um filme em três cenas diferentes: uma na cozinha, uma no corredor e uma na rua. Dois atores. Em Linotte um "Paragraphe" tem a mesma função de uma cena. Pode-se ir de um parágrafo a outro, bem como voltar a um já percorrido.
Segue um exemplo da utilização de "Paragraphes" em Linotte:
Livre: capitale de la France Paragraphe: question Les rôles: question est un texte valant "Quelle est la capitale de la France?" capitale est un texte vide réponse est un texte valant "Paris" Les actions: Tu affiches la question Tu demandes la capitale Si capitale est égale à la réponse alors tu vas vers la réponse bonne Tu vas vers la réponse fausse Paragraphe: réponse bonne Les actions: Tu affiches "Bravo, tu es trop fort!" Tu joues le "Do" Tu termines Paragraphe: réponse fausse Les rôles: libelle est un texte valant "Faux! tu peux recommencer!" Les actions: Tu affiches le libelle Tu vas vers la question
Este "Livre" exibe um mensagem perguntando ao usuário qual é a capital da França no "Paragraphe" Question. Em seguida verifica a resposta: caso for falsa o interpretador vai até o "Paragraphe" Réponse Fausse e caso a resposta seja verdadeira ele vai até o "Paragraphe" Réponse Bonne(este "Paragraphe" termina a execução do "Livre"). O "Paragraphe" Réponse Fausse exibe uma mensagem e depois volta para o parágrafo Question que já foi percorrido. É criado um laço que pode se tornar infinito se o usuário nào digitar a capital da França corretamente.
Todo "Paragraphe" deve terminar ou pelo verbo "aller" ou pelo "terminer" (devidamente conjugados).
Les Acteurs et les Rôles (Os atores e os papéis) O computador possui uma memória onde pode-se gravar os dados que podem lidos, modificados ou suprimidos.
Os atores são a interface que vão permitir manipular essa memória pois eles são os mensageiros que contém as informações necessárias.
No início do "Paragraphe" define-se os atores que serão utilizados.
O interpretador Linotte vai reservar um espaço na memória para registrar os atores. Para um ator ele vai armazenar as informações que estão associadas a ele bem como o nome desse ator pois esse será o identificador que permitirá recuperar as informações sobre esse ator.
A declaração dos atores é realizada na seção "Rôles".
Existem três formas de criar um ator:
- Atribuindo um valor inicial: Le message est un texte de valeur "Bonjour" - Atribuindo um tipo: Le message est um texte - Atribuindo um valor inicial nulo(vazio): Le message est um texte vide
É obrigatório declarar os atores no início do "Paragraphe".
Les Rôles: texte e nombre (Os papéis: texte e nombre) Linotte é uma linguagem tipada. Cada ator tem um "Rôle" (papel), ou seja, cada ator tem um tipo e não é possível alterá-lo uma vez definido esse tipo.
Os tipos mais simples em Linotte são: "texte" e "nombre".
Segue abaixo um exemplo usando os dois tipos:
Livre: mon troisième exemple Paragraphe: afficher le message Les rôles: Question est un texte valant "Quel est ton âge?" Message est un texte valant "Vous paraissez nettement mois que vos " Âge est un nombre vide Les actions: Tu affiches la question Tu demandes l'âge Tu ajoutes l'âge dans le message Tu affiches le message Tu termines
O interpretador Linotte não faz diferenciação de maiúsculas e minúsculas. Em contrapartida a acentuação é muito importante pois caso não seja respeitada o interpretador não irá reconhecer os comandos. Esse exemplo mostra que o interpretador pode transformar um valor de um ator do tipo "nombre" para o tipo "texte" (Tu ajoutes l’ âge dans le message). O inverso não é possível. É possível utilizarò sinal de + no lugar de "Tu ajoutes…dans Le…": Tu affiches message + âge. Em linote o tamanho das Strings é limitado apenas pela capacidade de memória do computador. O tipo "nombre" em linotte é um número decimal. Deve-se utilizar o ponto e não virgula como separador decimal.
Impératif ou Présent? (Imperativo ou presente?) É possível utilizar imperativo no lugar de presente durante a conjugação de um verbo. Assim, em vez de escrever: Tu affiches le document, pode-se escrever: Affiche le document.
Les articles (Os artigos) Os artigos são uma curiosidade da linguagem linotte pois sua única utilidade é melhorar a visibilidade de um programa escrito em Linotte para que fique mais próximo de uma linguagem humana. Assim, é mais agradável ler: tu affiche le message do que tu affiche message.
Segue a lista dos artigos mais comuns utilizados em Linotte: le, la, l', les, des, du, un, une, mon, ma, ton, ta, tes
Les actions (As ações) Escrever uma ação em um "livre"
É nada mais do que dar uma ordem ao interpretador utilizando qualquer frase começando por "tu" seguida de um verbo no presente do indicativo.
Exemplo:
Livre: Pythagore Paragraphe: Pythagore Les rôles: AB est un nombre vide BC est un nombre vide AC est un nombre vide Réponse est un texte valant "Le carré de l'hypoténuse vaut: " Les actions: Tu demandes AB Tu demandes BC AB vaut carré AB BC vaut carré BC Tu ajoutes AB dans AC Tu ajoutes BC dans AC Tu ajoutes AC dans la réponse Tu affiches la réponse Tu termines
Deve-se escrever os comando todos na mesma linha por questões de melhor visibilidade, porém caso não de para colocar tudo na mesma linha são utilizados reticências para quebra de linha:
Livre: Bienvenue Paragraphe: Olé! Rôles: Prénom est un texte Actions: Efface le tableau Questionne le prénom sur… "Bonjour! Quel est ton prénom?" Affiche "Bravo " + prénom +… ", tu viens de lire ton premier livre Linotte!" Termine
Les casiers (As listas) Casiers são papéis que permitem a criação de listas de atores: