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