Euphoria (linguagem de programação)
Origem: Wikipédia, a enciclopédia livre.
Euphoria | |
---|---|
Clique aqui para ver o logotipo de Euphoria. | |
Demonstração da função Multitasking. |
|
Paradigma: | Abstração de dados, Orientação a objetos, Programação estruturada |
Surgido em: | Julho de 1993 |
Última versão: | 3.1.1 (22 de Agosto de 2007) |
Criado por: | Robert Craig |
Estilo de tipagem: | Dinâmica, Fraca |
Compiladores: | |
Dialetos: | |
Influenciada por: | BASIC, C, C++ |
Influenciou: | Py |
Licença: | Domínio público |
Website: | RapidEuphoria.com |
Euphoria é uma linguagem de programação interpretada de alto nível, abstrata, orientada a objetos e estruturada, e motor de jogo, simultaneamente, criada por Robert Craig, da Rapid Deployment Software[1], em Julho de 1993. O Euphoria está sob domínio público e tem seu código aberto. A linguagem possui suporte a programação multitarefa, que possibilita a execução de várias tarefas simultaneamente, com uma velocidade razoável, e que pode ser útil na criação de jogos que precisem executar múltiplas tarefas.
O Euphoria pode ser usado como aplicação CGI[2]. O File Archive Search[3] é uma aplicação CGI e é escrito em Euphoria, por exemplo. Ele também pode ser usado como linguagem embutível, assim como Python.
Também pode ser usado como RAD, programando-se rapidamente em Euphoria, e depois traduzindo o código para C, usando o tradutor automático.
Índice
|
[editar] História
O Euphoria teve sua primeira versão publicada em Julho de 1993, como sendo um projeto de código fechado. Porém, a partir da versão 3.0.0, lançada em 19 de Setembro de 2006, passou a ser totalmente código aberto (algumas partes do pacote já estavam em domínio público, desde a versão 2.5 Alpha). Sua última versão[4] foi a 3.1.1, e foi lançada em 22 de Agosto de 2007.
Desenvolvida inicialmente como um projeto pessoal, para inventar uma linguagem de programação do zero, Euphoria teve sua real primeira versão criada por Robert Craig, para um Atari ST. A versão original para Atari ST, nunca foi lançada. A primeira “encarnação” mundialmente visível da linguagem, foi para o sistema DOS de 32 bit. Versões atuais, além do DOS de 32 bit, suportam Microsoft Windows, Linux e FreeBSD. Com o lançamento da versão 2.5 Alpha, lançada em 15 de Novembro de 2004, o interpretador do Euphoria, foi dividido em três partes: o analisador sintático, o front-end, e o back-end. O tradutor “Euphoria-para-C”, o encadernador (binder), e o front-end, possuem 100% de seus códigos em Euphoria, e o back-end possui 100% de seu código em C. O interpretador possui 30% de seu código (front-end) em Euphoria e 70% (back-end) em C.
O Euphoria, foi primeiramente usada como passatempo para programação de jogos e para criação de inteligência artificial, mas provou ser útil para os mais diversos propósitos[5]. Já existem programas criados usando Euphoria, e programas que usam Euphoria, como script para seu programa. Um bom exemplo, é o SDK do 3DSTATE 3D Engine, o 3D Developer Studio[6].
[editar] Características
O Euphoria foi desenvolvido com as seguintes características em mente:
- Simplicidade - Para fácil aprendizado e uso, igualmente ao BASIC, com construções de alto nível, mais consistentes;
- Poder - Para fornecer capacidades de programação de baixo nível necessárias para acessar o sistema operacional e a BIOS para desenvolvimento profissional, como C++, porém mais estruturada e mais abstrata que uma linguagem de baixo nível, fazendo a mesma menos perigosa;
- Segurança - Extensivo suporte a depuração, checagem de subscrição, checagem de tipo, e gerência de memória automáticos;
- Flexibilidade - Suporte para tipos definidos pelo usuário, com variáveis livres ou rigorosas, de acordo com o desejado. Orientação a objetos pode ser efetuada usando objects como tipo de dado;
- Automatismo - Interpretado, com gerência de memória e coletor de lixo automáticos;
- Velocidade - Para ser veloz o bastante para rivalizar à altura com as linguagens compiladas, para ser útil e proveitosa, apesar de ser interpretada. A Rapid Deployment Software garante que o interpretador do Euphoria é 31 vezes mais rápido[7] do que Python, e 35 vezes mais rápido do que Perl.
O Euphoria suporta chamadas de rotinas de código de máquina e de funções de C.
O Euphoria não requer indentação (diferente de Python) e nem requer ponto-e-vírgula (;
) (diferente de C++) no final de cada comando. Ele pode conter mais de um comando em uma mesma linha. Ele também ignora os espaços entre comandos:
object r r = 1
O exemplo acima é o mesmo que:
object r
r = 1
[editar] Etimologia
O nome “Euphoria”, é um acrônimo para: “End User Programming with Hierarchical Objects for Robust Interpreted Applications” (em português: “Programação para Usuário Final com Objetos Hierárquicos para Aplicações Interpretadas Robustas”). Seu nome se pronuncia “Eufór-ia”.
[editar] Tipos de arquivo
Os arquivos de código de Euphoria são divididos em sete tipos de arquivo e, usam as seguintes extensões:
- .E (Biblioteca DOS);
- .EU (Biblioteca Linux/FreeBSD);
- .EW (Biblioteca Windows);
- .EX (Programa DOS);
- .EXU (Programa Linux/FreeBSD);
- .EXW (Programa Windows);
- .IL (Programa coberto, multiplataforma).
[editar] Tipos de dado
O Euphoria tem um tipo de dado básico[8]:
- object: Um tipo de dado genérico que pode conter qualquer tipo de elemento, e pode ser mudado durante a execução. Isso significa que se o programador tem um object chamado
X
que possui o valor3.172
, então depois o programador pode atribuir paraX
o valor"ABC"
. Um object pode ser classificado como um atom, integer ou sequence.
Adicionalmente, Euphoria tem três tipos de dado “especializados”:
- atom: Esses são números, implementados como inteiro ou fracionário de 32 bit ou 64 bit, dependendo do valor atual. Ele armazena os valores inteiros em 4 bytes. Quando um atom inteiro recebe um valor fracionário, ele o converte e armazena o mesmo para fracionário de 8 bytes;
- integer: Uma forma especial de atom, restrita a valores inteiros de 31 bit, numa faixa de -1073741824 até 1073741823. Esse tipo de dado é mais eficientes do que o atom, mas não pode conter a mesma extensão. Caracteres são armazenados como inteiros (exemplo: codificando
A
de ASCII é exatamente o mesmo que65
); - sequence: Vetor que pode conter zero ou mais elementos; cada elemento é um object. O número de elementos na sequence não é fixa; o codificador pode adicionar ou remover elementos quando requirido durante a execução. Euphoria automaticamente “manobra” a alocação e a desalocação de RAM, e automaticamente coleta lixo para o programador. Elementos individuais são referenciados usando um valor no índice fechado em colchetes. O primeiro elemento numa sequence tem um índice de 1. Elementos embutidos dentro de sequences são referenciados pelo colchete adicional, desde modo,
X[3][2]
, refere-se ao segundo elemento do terceiro elemento deX
. Exemplo: SeX = {"ABC","DEF","GHI"}
, entãoX[3][2] = "H"
.
Um exemplo de uma sequence:
object r r = {"A","B","C","D","E","F","G"}
O exemplo acima é o mesmo que:
object r r = {65,66,67,68,69,70,71}
Como isso pode ser complicado, sequences podem ser usados de forma mais simplificada:
object r
r = "ABCDEFG"
Os números podem ser colocados em hexadecimal:
object r,s,v,w,k r = #152 -- r é igual a "R" s = #FE -- s é igual a 254 v = #A000 -- v é igual a 40960 w = #FFFF00008 -- w é igual a 68718428168 k = -#10 -- k é igual a -16
[editar] Caso-sensibilidade
Euphoria é caso-sensitivo, isto é, faz diferenciação de maiúsculas e de minúsculas. Exemplo: A
é diferente de a
, já que em ASCII, A
equivale a 65
e, a
equivale a 97
. Outro exemplo:
object r
r = "abcABC"
É o mesmo que:
object r r = {97,98,99,65,66,67}
Que, por sua vez, é o mesmo que:
object r r = {"a","b","c","A","B","C"}
Essa regra se aplica a tudo em Euphoria, inclusive aos nomes de variáveis e os comandos:
OBJECT A A = "ABC" -- Forma incorreta PUTS(1,A) object B B = "ABC" -- Forma correta puts(1,B) object b b = "ABC" -- Forma correta puts(1,b)
A primeira declaração, no exemplo acima, está incorreta, pois todos os comandos de Euphoria devem estar em minúsculas.
[editar] Multitarefa
A linguagem possui suporte a programação multitarefa (do inglês: Multitasking), que possibilita a execução de várias tarefas simultaneamente[9], com uma velocidade razoável, que pode ser útil na criação de jogos que precisem executar múltiplas tarefas.
Junto dos exemplos do pacote padrão, existe um jogo chamado “Language War” (Guerra da linguagem), que demonstra o uso desta função. O jogo apresenta uma guerra entre times com nomes de linguagens famosas: EUPHORIA, Assembly, K&R C, ANSI C, C++, BASIC, Java, onde o jogador controla o time EUPHORIA, e o computador controla os demais times. Esse exemplo é baseado num jogo de guerra espacial, desenvolvido em 1979, para o TRS-80, por David A. Craig e Robert Craig. Funciona apenas no DOS e no Windows, em resolução de tela de 640x480 e em 16 cores.
Há também outro exemplo, que exibe vários “E”s girando independente e simultaneamente. Esse mesmo só pode ser executado no ambiente Windows, por estar em uma janela.
[editar] Gerência de memória automática
No Euphoria, a alocação de memória acontece automaticamente, e os tipos de dado são convertidos dinamicamente, não fazendo necessária a conversão, isto é, o tipo de dado é convertido assim que necessário e automaticamente. Exemplo: se há uma variável com um valor inteiro, e a essa variável for atribuído um valor fracionário, essa variável será automaticamente convertida para suportar o valor fracionário, diferentemente de C/C++.
[editar] Declarações e variáveis
Variáveis são palavras que recebem um determinado valor. Para se usar variáveis, é necessário que sejam declaradas primeiro. Para se declarar uma variável, se coloca o tipo de dado, seguido do nome da variável:
object a -- Declara a como object atom b -- Declara b como atom integer c -- Declara c como integer sequence d -- Declara d como sequence
[editar] Constantes
Além da variável comum, existem as variáveis constantes, que não recebem valores depois de terem recebido um valor inicial atribuído à mesma.
constant a = 1 -- Declara a como constant de valor 1
As constantes também devem ter um valor atribuído durante sua declaração, diferente das variáveis comuns. O tipo de dado de uma constante é object.
[editar] Global / Local
De todas as funções, processos e variáveis, existem dois tipos: as globais e as locais. As globais são acessíveis de todos os arquivos; as locais, só são acessíveis do arquivo de onde foram declaradas. Um arquivo só pode acessar uma função em uma biblioteca inclusa, porque ela é global. Se ele fosse local, a mesma não poderia ser usada, exceto pelas funções de dentro da biblioteca. Quando uma função/processo/variável é declarada como local/global, assim ela será até o fim da execução do programa. Exemplo:
global constant r = 1 -- Declara r como constant global de valor 1 global object s -- Declara s como object global integer v -- Declara v como integer local function w() end function -- Declara w como função local global procedure k() end procedure -- Declara k como processo global
Por padrão, todas as funções, processos e variáveis, são locais.
[editar] Operadores
Operadores são símbolos especiais, que servem para fazer ações matemáticas, ou comparações lógicas, dentro de estruturas de controle.
[editar] Caracteres especiais
O Euphoria, como em outras linguagens de programação, possui caracteres especiais, que servem como uma forma de formatação de texto básica. Eles são:
Caractere | Descrição |
---|---|
\n | Nova linha |
\r | Oculta o caracter à esquerda |
\t | Tabulação |
\\ | Permite passar barra (\) como um sequence |
\' | Permite passar aspas simples (') como um sequence |
\" | Permite passar aspas duplas (") como um sequence |
-- | Comentários não-multi-linha (não se propagam para outras linhas)[10], que são ignorados pelo Euphoria. |
[editar] Estruturas de controle
Estruturas de controle são comandos básicos que são usados para realizar comparações lógicas e repetições. Há três estruturas de controle em Euphoria: if, while, for.
[editar] Declarações Top-Level
Declarações Top-Level são comandos que afetam o código por inteiro. Esses comandos sempre são colocados no início do código. Não é obrigatório o uso de qualquer opção.
[editar] include
O Euphoria possui bibliotecas, como qualquer outra linguagem; para acessá-la, basta usar a estrutura include[11]. Para usá-la, basta seguir o modelo:
include biblioteca.extensão
Exemplo:
include machine.e -- Inclui a biblioteca machine.e
Para incluir uma biblioteca com êxito, deve-se incluir sua extensão (normalmente .e). Também deve-se incluí-las uma de cada vez, e o nome da biblioteca não pode conter espaços em branco.
Esta estrutura também serve para permitir que o programador divida seu código em mútiplas partes, para que o código fique mais organizado. Nisso, apenas as variáveis e funções globais serão inclusas.
Caso duas ou mais bibliotecas tenham uma função com o mesmo nome, deve-se usar um namespace identifier, para resolver o conflito. Os namespace identifiers são representados por as. Exemplo:
include biblioteca1.e as b1 -- Aplica o indentificador b1 à biblioteca include biblioteca2.e as b2 -- Aplica o indentificador b2 à biblioteca
Os identificadores só são aplicados durante a inclusão de uma biblioteca. Para acessar uma função ou variável dessas bibliotecas, usa-se o identificador seguido de dois pontos (:) e o nome da função ou variável. Exemplo:
b1:r = 1 -- Atribui a r (de b1) o valor 1 b2:r = 2 -- Atribui a r (de b2) o valor 2
[editar] with / without
O Euphoria também possui opções[12], para personalizar a forma como o código será iniciado. Para ativar uma opção, coloca-se with, seguida da opção e, para desativar uma opção, coloca-se without, seguida da opção. Exemplo:
with profile -- Ativa profile without profile -- Desativa profile without warning -- Desativa warning
Ao todo, são cinco opções: profile, profile_time, trace, type_check e warning. Inicialmente, type_check e warning estão ativadas e, profile, profile_time e trace, estão desativadas. É necessário que se ative/desative as opções uma de cada vez.
[editar] Pacote padrão
O Euphoria é distribuído num pacote, que inclui ferramentas básicas, que auxiliam a programação no mesmo. No Windows, ele vem com um instalador, que instala e configura o Euphoria rápida e automaticamente. O pacote inteiro gira em torno de 2 MB, permitindo ser baixado rapidamente. Ele inclui:
- Interpretador (front-end e back-end), Binder e Shrouder[13], e o tradutor Euphoria-para-C;
- Biblioteca padrão[14], com rotinas relativas ao desenvolvimento de jogos e programas diversos;
- Euphoria Editor (ED) - Um editor com suporte a realce colorido para palavras-chave[15];
- Euphoria Database System (EDS) - Um sistema de banco de dados para uso com programas Euphoria[16];
- Manual da linguagem e de suas ferramentas[17];
- Tutorial e exemplos de código para ajudar no aprendizado da linguagem;
- FAQ (Frequently Asked Questions - Questões Freqüentemente Perguntadas)[18] para os problemas mais conhecidos;
- Notas de lançamento[19] e um documento com 24 razões para mudar de C/C++ para Euphoria[20];
- Manual com dicas para melhorar o desempenho dos códigos[21] de programas Euphoria e, um manual com documentação das funções específicas de plataforma;
- Guia de como usar Euphoria como aplicação CGI;
- Código fonte do Euphoria, parcialmente em Euphoria e C;
- Dois ícones do Euphoria: um colorido e outro em escala de cinza.
Ele também contém partes do CauseWay[22] e da biblioteca Allegro, ambos sob domínio público.
[editar] Licença
Apesar de estar sob domínio público, o Euphoria possui uma licença, que é meramente explicativa[23]. Ela explica que o Euphoria não tem nenhuma garantia, e pede, mas não requer, que programadores coloquem algum reconhecimento da linguagem e da comunidade oficial de desenvolvimento do Euphoria, em programas criados no mesmo, e colocando também, uma ligação para a página oficial do Euphoria. Seu código fonte também está disponível para o público. A RDS encoraja[24] que pessoas modifiquem, sublicenciem, distribuem e vendam o Euphoria. Por este motivo, há diversas versões não-oficiais do Euphoria, espalhadas pela internet, com diferentes licenças de uso.
[editar] Distribuição de programas Euphoria
Há quatro formas de se distribuir[25] programas Euphoria:
- O código fonte em Euphoria pode ser distribuído da mesma forma que foi escrito. O usuário final precisará do interpretador para executar o código;
- O código pode ser “coberto”, usando o Shrouder, para proteger o código fonte, onde todos os códigos Euphoria são compilados para um único arquivo, numa linguagem intermediária bytecode de baixo nível, o Euphoria IL (Euphoria Intermediate Language), impedindo que outros possam ver, copiar, ou modificar o código fonte. O código IL pode ser interpretado pelo back-end, que é também uma máquina virtual;
- O código fonte em Euphoria pode ser “encadernado”, usando o Binder, onde todos os códigos Euphoria são embutidos em um único interpretador, para uma fácil distribuição. Opcionalmente, pode-se aplicar um ícone ao executável (Windows, somente). Como o Shrouder, o código estará protegido contra cópias. A desvantagem, em relação ao método anterior, é que o código terá alguns kilobytes a mais e, a vantagem é que o código não necessita do interpretador ou do back-end, para ser executado. Ao invés disso, ele se auto-interpreta, já que está embutido no interpretador;
- O usuário pode usar o tradutor de “Euphoria-para-C”, para converter o código fonte em Euphoria, num código fonte de C, e então compilar, usando um compilador de C, em um código de máquina. Usando essa técnica, além de poder criar um programa mais ágil, pode-se criar programas como bibliotecas dinâmicas. O tradutor e capaz de produzir código C, compatível com cinco compiladores: Borland C++, DJGPP, GCC, LCC e Watcom.
Quando o código passa pelo Binder ou pelo Shrouder, o código é revisado automaticamente, e as rotinas e as variáveis não usadas, são apagadas, para otimizar a velocidade do código e diminuir o tamanho do mesmo.
[editar] Exemplos
puts(1,"Olá Mundo!")
[editar] Livros
Existem alguns livros[26] comerciais que possuem conteúdo diretamente ligado à programação em Euphoria, que são muito úteis para o aprendizado no mesmo, já que o manual oficial[27] é muito direto, e não possui muitas partes teóricas. Abaixo segue-se uma lista:
- Euphoric Mysteries - Euphoric Mysteries tem como alvo principal, os recém-chegados a programação. Os programadores experienciados também irão achar ele interessante. Assuntos cobertos incluem: instalação e configuração, ambientes dirigidos a eventos, núcleo da linguagem Euphoria, banco de dados, gráficos do Windows;
- The OidZone Programmer's Reference - Este livro guia o leitor linha por linha sobre a teoria e o código atrás do rápido jogo de ação, o OidZone, que foi escrito em Euphoria.
Existem outros bons livros que são aconselhados a programadores de Euphoria, porém, esses não abordam diretamente à programação em Euphoria, mas podem ser adaptados facilmente. Abaixo, segue-se uma lista deles:
- The C Programming Language - Este é o livro padrão na programação em C. Já que Euphoria pode ser programado com C, de várias formas, este livro pode ser de boa ajuda para se conhecer um pouco sobre C. Este livro é breve, completo, bem estruturado e autoritativo;
- Programming Windows - Fifth Edition - Este livro ensina programação de baixo nível em Windows usando C e a Win32 API. O que for aprendido, pode ser facilmente adaptado a Euphoria.
Referências
- ↑ O que é o Euphoria.
- ↑ Euphoria como aplicação CGI.
- ↑ File Archive Search.
- ↑ Novas sobre Euphoria.
- ↑ Tarefas na qual o Euphoria é bom.
- ↑ 3D Developer Studio.
- ↑ Teste de velocidade feito no Great Computer Language Shootout, por Doug Bagley.
- ↑ Tipos de dado de Euphoria.
- ↑ Multitasking em Euphoria.
- ↑ Comentários de linha em Euphoria.
- ↑ Estrutura include.
- ↑ Estruturas with / without.
- ↑ Binder e Shrouder.
- ↑ Biblioteca do Euphoria.
- ↑ ED, o editor oficial.
- ↑ Euphoria Database System.
- ↑ Manual da linguagem e ferramentas.
- ↑ FAQ do Euphoria.
- ↑ Notas de lançamento.
- ↑ 24 razões para mudar de C/C++ para Euphoria.
- ↑ Manual para melhorar o desempenho de programas Euphoria.
- ↑ Michael Devore's CauseWay DOS extender.
- ↑ Licença do Euphoria.
- ↑ Encorajamento da RDS, para vender o Euphoria.
- ↑ Meios de distribuição de programas Euphoria.
- ↑ Livros sobre Euphoria.
- ↑ Manual on-line.
[editar] Ver também
- Linguagem de programação
- Lista de linguagens de programação
- Py (linguagem de programação)
- Rapid Deployment Software
- Robert Craig
[editar] Ligações externas
- Oficial
- (en) The Euphoria Programming Language - Página oficial
- (en) Euphoria Programming Language - Página do projeto no SourceForge
- (en) EUforum Message Board - Fórum oficial (apenas tópicos recentes)
- (en) EUforum - the Euphoria Message Board - Buscador do fórum oficial (todos os tópicos)
- (en) EuWiki - Wiki do Euphoria
- (en) The Archive - Contribuições de usuários
- (en) Other Euphoria Web Sites - Páginas relacionadas ao Euphoria
- Tutoriais
- (en) A Beginners Guide To Euphoria - Manual para iniciantes em Euphoria
- (en) Jubilation - Programming with Euphoria - Tutorial básico de Euphoria
- (en) GUIphoria - Programming GUI Applications with Euphoria - Tutorial básico de GUIs no Euphoria
- (en) EuGUI - Programming GUI Applications with Euphoria, Part 2 - Tutorial avançado de GUIs no Euphoria
- (en) My First wxEuphoria Game - Tutorial avançado de criação de um jogo 3D usando Euphoria
- Ferramentas
- (en) Enhanced IDE - Windows IDE for Euphoria Apps - IDEs para Euphoria, com editor visual e outras ferramentas
- (en) Edita - IDE para Euphoria
- (en) MEditor - IDE para Euphoria
- (en) wxEDB - Euphoria Database Browser - Programa para criar e editar bancos de dados de EDS e ODBC, usando uma GUI
- Bibliotecas
- (en) Win32Lib - Biblioteca para Euphoria, com funções extras para programação de GUIs no Windows
- (en) ARWEN WIN32 Library - Biblioteca para Euphoria, com funções extras para programação de GUIs no Windows
- (en) Dos32Lib - Biblioteca para Euphoria, com funções extras para programação de GUIs no DOS
- (en) wxEuphoria - Implementação do wxWidgets para Euphoria
- (en) EuAllegro - Implementação do Allegro para Euphoria
- (en) Euphoria / GTK Implementação do GTK para Euphoria
- (en) EuGL - OpenGL Wrapper - Implementação do OpenGL para Euphoria
- (en) Glue - GLUT Wrapper - Implementação do OpenGL Utility Toolkit (GLUT) para Euphoria
- (en) DirectE - DirectX Wrapper - Implementação do DirectX para Euphoria
- (en) EuSQL - Implementação do SQL para Euphoria
- (en) matheval - Biblioteca para avaliar e resolver expressões matemáticas
- Comunidades e outros
- (en) Euphoria Libraries and Toolkits - Página com bibliotecas, tutoriais e programas em Euphoria
- (en) Programming Euphoria with c.k.lester - Tutoriais e outros, sobre Euphoria
- (en) UBoard - Fórum não-oficial de Euphoria
- (en) Programming Euphoria - Grupo Yahoo! do Euphoria
- (en) Euphoria - Página no TopicCraze
- (en) Euphoria - Página no Open Directory Project
- (en) Euphoria projects - Categoria de projetos Euphoria no SourceForge
- (en) Euphoria Community Search Engine - Motor de busca do Google personalizado, para páginas sobre Euphoria
- (en) EuSearch - Motor de busca, que procura dentro de programas Euphoria, que estejam na página oficial
- (en) Tapsa's Programming Corner - Página com tutoriais e baixas
- (en) Pete Lomax's Euphoria page - Programas feitos em/para Euphoria, disponíveis para baixa
- (en) Pete's Euphoria Zone - Página com tutoriais e baixas
- (en) Cool World - Euphoria Programming - Página com baixas
- Usa Euphoria comercialmente
- (en) Nexus Radio - Free Internet Radio - Rádio via internet
- (en) 3DSTATE 3D Engine - Motor de jogo, cuja SDK suporta Euphoria
- (en) Forms On-A-Disk - Serviços de informática