Io (linguagem de programação)

linguagem de programação

Io é uma linguagem de programação puramente orientada a objetos inspirada por Smalltalk, Self, Lua, Lisp, Act1, e NewtonScript[2]. Io tem um modelo de objetos baseada em protótipos similar aos de Self e NewtonScript, eliminando a distinção entre instância e classe. Como em Smalltalk, tudo é um objeto, e usa tipagem dinâmica. Como Lisp, os programas são só uma árvore de dados. Io usa atores para concorrência, uma técnica raramente utilizada em linguagem de programação modernas.

Io
Paradigma orientada a objetos baseada em protótipos
Surgido em 2002; há 23 anos
Última versão 20170906 (6 de setembro de 2017; há 7 anos[1])
Criado por Steve Dekorte
Estilo de tipagem dinâmica, forte
Influenciada por Smalltalk, NewtonScript, Self, Lua, Lisp, Act1
Influenciou Ioke, Potion
Plataforma IA-32, x86-64; ARM; .NET CLR
Sistema operacional Windows, macOS
Licença BSD 3-clause

Características marcantes de Io são seu pequeno tamanho e abertura para usar recursos externos. [carece de fontes?] Io é executada por uma pequena, máquina virtual portátil.

História

editar

A linguagem foi criada por Steve Dekorte por volta de 7 Março de 2002, depois de tentar ajudar um amigo, Dru Nelson, com sua linguagem, Cel. Ele descobriu que não sabia muita coisa sobre como as linguagens funcionavam, e começou a escrever uma pequena linguagem para entender melhor o problema.

Filosofia

editar

O objetivo de Io é explorar a unificação conceitual e linguagens dinâmicas, para que o os tradeoffs tendam em favorecer simplicidade e flexibilidade ao invés de performance.

Características

editar

Sintaxe

editar

A sintaxe de Io e quase não existente. Em sua forma mais simples, ela é composta de um único identificador:

 doStuff

Assumindo que acima doStuff é um método, ele é chamado com zero argumentos e como resultado parêntesis explícitos não são necessários.

Se doStuff tivesse argumentos, se pareceria com isso:

 doStuff(42)

Io é uma linguagem de troca de mensagens, e já que tudo em Io é uma mensagem (excluindo comentários), cada mensagem é enviada para um destinatário. O exemplo acima demonstra isso bem, mas não em completo. Para descrever esse ponto melhor, vamos olhar o próximo exemplo:

 System version

O exemplo acima demonstra a troca de mensagens em Io a mensagem "version" é enviada para o objeto "System".

Operadores são um caso especial onde a sintaxe não é tão simples como no exemplo acima. O parser de Io intercepta um conjunto de operadores definidos pelo interpretador, e os traduz para chamadas de método. Por exemplo, o seguinte:

 1 + 5 * 8 + 1

é traduzido para:

 1 +(5 *(8)) +(1)

Como você pode ver, há também um pouco de ordem de operações acontecendo aqui, e os níveis de precedência são os mesmos que dos níveis de precedência de C.

Os operadores também foram transformados em chamadas de métodos. De fato, todos os operadores em Io são métodos, o fato de que eles não requerem um parêntesis explicito é uma conveniência.

Referências

  1. «Io Releases». GitHub. Consultado em 6 de fevereiro de 2020 
  2. «Guia de Programação Io» (em inglês). io. Consultado em 9 de dezembro de 2014. Arquivado do original em 6 de agosto de 2013 

Ligações externas

editar