Io (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 |
Última versão | 20170906 (6 de setembro de 2017[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
editarA 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
editarO 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- Programação orientada a objetos pura e baseada em protótipos
- Código como dado, homoiconic
- Lazy evaluation
- higher-order functions
- Introspecção, Reflexão and Metaprogramação
- Concorrência baseada em atores
- Corrotinas
- Tratamento de exceções
- Perl-like regular expressions
- Garbage collection incremental suportando weak links
- Altamente portátil
- DLL/shared library dynamic loading on most platforms
- pequena máquina virtual
Sintaxe
editarA 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
- ↑ «Io Releases». GitHub. Consultado em 6 de fevereiro de 2020
- ↑ «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