New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
INTERCAL - Wikipédia

INTERCAL

Origem: Wikipédia, a enciclopédia livre.

INTERCAL, uma linguagem de programação paródia, é a linguagem de programação esotérica canônica, criada por Don Woods e James Lyon, dois estudantes da Universidade de Princeton, em 1972. Ela satiriza aspectos das linguagens de programação FORTRAN e COBOL, assim como a proliferação de construtores e notações de linguagem propostos nos anos 1960. Conseqüentemente, o humor pode aparecer um pouco ultrapassado para os programadores modernos acostumados a C ou Java.

A versão atual, C-INTERCAL, é mantida por Eric S. Raymond.

Os autores originais dizem que INTERCAL significa "Compiler Language With No Pronounceable Acronym" (Compilador de Linguagem Sem Acrônimo Pronunciável).

A INTERCAL é propositadamente diferente de todas as outras linguagens de computador. Operações comuns em outras linguagens são realizadas com sintaxe redundade e secreta. Do manual de referência da INTERCAL:

É um fato conhecido e freqüentemente demonstrado o de que a pessoa cujo trabalho é incompreensível é tida com grande admiração. Por exemplo, se alguém estivesse para definir que a maneira mais simples para se armazenar um valor de 65536 em uma variável de 32 bits da INTERCAL é:

DO :1 <- #0¢#256
Qualquer programador sensato diria que isto é um absurdo. Já que este certamente é o método mais simples, o programador pareceria bobo em frente ao chefe, que, claro, apareceria por acaso, como os chefes estão acostumados a fazer. O efeito seria não menos devastador para o programador tendo estado certo.

O manual de referência da INTERCAL é um trabalho de humor, contendo várias instruções paradoxais, absurdas ou então humorísticas:

Cuidado! Sob nenhuma circunstância confunda o operador mesh com o interleave, exceto sob circunstâncias confusas!

Ele possui uma "amígdala", como explicado nesta nota de rodapé: "4) Já que todos os outros manuais de referência possuem apêndices, foi decidido que o manual INTERCAL deve conter algum outro tipo de órgão removível."

A INTERCAL possui várias outras características projetadas para fazê-la ainda mais inestéticamente desagradável para o programador: ela usa instruções como "READ OUT", "IGNORE" (ignorar), "FORGET" (esquecer) e "PLEASE" (por favor). O manual da INTERCAL dá nomes incomuns para todos os caracteres ASCII não-alfanuméricos: aspas simples e duplas são "faíscas" e "orelhas de coelho" respectivamente. (A exceção é o ampersand (&): como o define o Arquivo de Jargão, "o que poderia ser mais estúpido?") O operador de atribuição, representado como "meia malha" ou sinal de igual em várias outras linguagens de programação, é na INTERCAL um "<-", referido como "pega" e feito por um "ângulo" e um "verme".

A implementação original de Princeton utilizava cartões perfurados e a codificação de caracteres EBCDIC. A fim de se permitir que a INTERCAL fosse executada em computadores usando ASCII, substituições para dois caracteres foram feitas: ¢ foi substituído por $ como operador mingle para "representar o crescente custo do software em relação ao do hardware", e ∀ foi substituído por ? como o operador unário ou-exclusivo para "expressar corretamente a reação comum de uma pessoa ao encontrar o ou-exclusivo pela primeira vez".

Apesar de ser intencionalmente obtusa e palavrosa, a INTERCAL é contudo Turing completa: dada memória suficiente, a INTERCAL pode resolver qualquer problema que uma máquina de Turing universal pode. Porém, o faz bem lentamente. Um modelo do Crivo de Eratóstenes, computando todos os números primos menores que 65536, foi testado em um Sun SPARCStation-1. Em C, demorou menos de 0,5 segundo. O mesmo programa em INTERCAL demorou mais de dezessete horas. (Stross, 1992)

Deve-se notar que quase nenhuma linguagem de programação permite horrores notacionais tanto quanto ou mais que a INTERCAL, como demonstrado em disputas como o International Obfuscated C Code Contest (Concurso Internacional de Código C Ofuscado). Porém, estes geralmente são esforços intencionais para se criar códigos ilegíveis, em contraste ao projeto da INTERCAL, que força praticamente todo código a ser ilegível.

De acordo com o manual da INTERCAL, "o objetivo ao se projetar a INTERCAL era não ter precedentes", supostamente nem em características de controle de fluxo, nem em operadores de manipulação de dados. Os projetistas foram parcialmente bem-sucedidos; o único precedente conhecido é uma instrução de máquina [1] em um computador mainframe soviético BESM-6, lançado em 1967, que é efetivamente equivalente ao operador SELECT da INTERCAL.

Índice

[editar] Dialetos

A INTERCAL original era muito limitada pelas suas capacidades de entrada/saída: a única entrada aceita era números, e a única saída era uma versão extendida dos numerais romanos.

A reimplementação C-INTERCAL, estando disponível na internet, tornou a linguagem mais popular entre os devotados a linguagens de programação esotéricas. O dialeto C-INTERCAL possui algumas diferenças em relação ao INTERCAL original e introduziu algumas características novas, como a instrução COME FROM e meios para se realizar operações de E/S com texto baseado no modelo de texto Turing.

Os autores da C-INTERCAL também criaram a variante TriINTERCAL, baseada no sistema ternário e generalizando o conjunto de operadores da INTERCAL.

Uma variante mais recente é a Threaded INTERCAL, que extende a funcionalidade do COME FROM para suportar multitarefa.

[editar] Olá, mundo

O tradicional programa olá mundo demonstra como a INTERCAL é diferente das linguagens de programação padrões. Em C, ele poderia ser lido como:

#include <stdio.h>

int main(void)
{
    printf("Ola mundo!\n");

    return 0;
}

Em outras linguagens pode ser até mais simples, como neste exemplo em PHP:

<?php echo "Olá, mundo!\n"; ?>

O programa equivalente em C-INTERCAL é maior e mais difícil para ler:

PLEASE DO ,1 <- #11
DO ,1 SUB #1 <- #14
DO ,1 SUB #2 <- #188
DO ,1 SUB #3 <- #175
DO ,1 SUB #4 <- #83
DO ,1 SUB #5 <- #48
DO ,1 SUB #6 <- #78
DO ,1 SUB #7 <- #8
DO ,1 SUB #8 <- #56
DO ,1 SUB #9 <- #80
DO ,1 SUB #10 <- #48
DO ,1 SUB #11 <- #114
PLEASE READ OUT ,1
PLEASE GIVE UP

[editar] Ver também

Linguagem de programação esotérica

[editar] Ligações externas

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu