quarta-feira, 18 de dezembro de 2013

18.05.01.03 Características de Seed7

 

Seed7 possue as seguintes características:

·         Usuário defini instruções e operadores.

·         "Types" são 'objetos de primeira classe', portanto, "templates" e "generics" podem ser definidos facilmente, sem usar uma sintaxe especial.

·         "Predefined construts" como matrizes ("arrays") ou laços ("for..loops") são declarados na própria linguagem.

·         'Orientação a objeto' é baseado em interface, suporta "multiple dispatch" e permite conectar métodos a objetos.

·         A verificação de tipo é estática e sem conversões automáticas.

·         Manipulação de exceções.

·         Sobrecarga de procedures, funções, operadores e instruções.

·         Vários tipos pré-definidos como 'vetores redimensionáveis'​​, hashes, bitsets, structs, etc.

 

Mas uma nova linguagem de programação não se diferencia somente por suas novas características.

A vantagem real vem do abandono de características antiquadas.

Muitos conceitos usados por outras linguagens não estão presentes.

 

·         Não existe declaração para a instrução "goto". "Hidden goto's like break- and continue-statements are also omitted."

·         Não existe declaração para a instrução "return". "Em vez disso uma variável de resultado pode ser declarada e o resultado da função, ser a ela atribuída."

·         Não existe conversões de tipo automática. "When a subprogram should be used for different types it must be overloaded."

·         Não existem listas de parâmetros de comprimento variável. Em vez disso, é possível usar array's como parâmetros.

·         Não existe parâmetros padrões. Mas é fácil definir dois subprogramas: Um com o parâmetro e outro sem.

·         Não existe 'parâmetro especial' comumente chamados de "self" ou "this". Em uma procedure o objeto é formalmente declarado e com o nome definido pelo usuário.

·         "There is no macro feature since this mechanism is too similar to the subprogram feature. Instead subprograms can be used in a more flexible way than in other languages."

·         Não existem palavras reservadas.

·         Não existe distinção conceitual entre funções, operadores, procedimentos e instruções.

 

·         O mecanismo para chamar "procedures" não é baseado no conceito "object-message pair" (um objeto recebe uma mensagem).

A correspondência é feita através de uma lista de objetos.

Este mecanismo genérico (e poderoso) é chamado "multiple dispatch" e inclui o mecanismo de "simple object-message" como caso especial.

 

Existem vários conceitos também utilizados por outras linguagens:

·         Comentários começam com (* e terminam com *) e podem ser aninhados.

·         Comentários começam com # e terminam com o final da linha.

 

Existem muitos conceitos novos:

·         Variáveis ​​e constantes devem ser inicializadas quando são declaradas.

·         Toda expressão tem exatamente um tipo.

Isso significa que "overloaded functions" são resolvidos com seus "actual parameters" e não "with the context of their call".

(Isto é diferente do mecanismo de sobrecarga usada pelo ADA)

·         Com um declarador de sintaxe, novos operadores e instruções podem ser definidos.

·         Não só símbolos de operadores pré-definidos podem ser sobrecarregados.

Além disso, é possível inventar símbolos para operadores completamente novos.

 

Várias restrições de outras linguagens são superadas

·         Não há limites no comprimento de um identificador e todos os caracteres do identificador são significativos.

·         Instruções e parênteses podem ser aninhados, sem limitação de profundidade.

·         O número de parâmetros e variáveis ​​locais não são limitados.

·         Strings podem conter quaisquer caracteres (mesmo o caracter NULL). Isto permite manter informações no formato binário dentro das strings.

·         Apesar de strings não possuirem o terminador NULL, não existe limitações de tamanho. A não ser que não exista mais memória disponível no sistema.

·         Strings literais podem possuir qualquer tamanho.

·         Não existe nenhuma limitação no comprimento de uma linha no código-fonte.

·         "There is no level limitation for nesting includes."

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Nenhum comentário:

Postar um comentário