Faz tempo que estou querendo inventar uma linguagem de programação. Isso aqui é um rascunho de algumas características fundamentais que ela vai ter.
Ela brota da forma como eu vejo qualquer programa: sempre apontando exatamente onde ocorrem os desvios e testes de quebra de laço... Podemos dizer que ela nasce como uma apologia ao goto! Mas não do jeito "tabu" que a instrução existe no FORTRAN e C, etc. A idéia é tornar natural escrever um "laço infinito" que possui pontos de interrupção.
Eu não gosto da forma as linguagens estruturadas fazem a gente considerar os diferentes tipos de laços como coisas muito distantes entre si, quero evidenciar as semelhanças, e como as diferenças são sutis.
E o mais importante: quantas e quantas vezes não vemos blocos do tipo "for(;;)" e "while True:" por aí? Isto não é natural. Digo, não é natural essa forma de representar isso, porque fazer esses laços é algo bem natural. Na minha linguagem o "laço infinito" será algo natural.
Um único goto no fim de um bloco pega mal porque não existe aquela sintaxe bonita marcando o ponto pra onde esse goto aponta... Eu não quaro ter "gotos selvagens", eu quero ter blocos sim.
Quero algo assim:
[
print x++
break if x>10
]
O que está dentro desses colchetes é um laço "infinito", "incondicional"... Se você não botar esse "break", não vai ter fim, e pronto.
Aquilo é um "do..while". Um "while.. do" é obtido simplesmente colocando esse teste no início...
[
break if x>10
print x++
]
Agora, podemos fazer coisas intermediárias tb.
[
x=x+y
break if x>10
y+=1
print y
]
Não sei dar agora um bom exemplo de quando isso é útil, mas já aconteceu mais de uma vez na minha vida deu ver laços com pedaços de programa repetido pra cima ou pra baixo dele, só porque o ponto de quebra do laço não podia ser no meio do bloco. Mas nessa minha linguagem isso pode acontecer naturalmente.
Em C dá pra programar assim, mas os "for(;;)" pra todo lado ficariam feio pra burro não?...
É muito comum também ver programas por aí com blocos que possuem "múltiplas terminações"... Um goto que aponta pra terminar a função de um jeito ou de outro. Isso economiza o trabalho de escrever uma funçãozinha adhoc. Quero achar um jeito bom de escrever isso tb...
Showing posts with label linguagens de programação. Show all posts
Showing posts with label linguagens de programação. Show all posts
2009/04/07
Rascunho da minha linguagem
Marcadores:
linguagens de programação
Subscribe to:
Posts (Atom)