Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

INTERCAL

Z Wikipedii, wolnej encyklopedii
Jimbo Lyon – jeden z twórców języka INTERCAL

INTERCAL – prawdopodobnie pierwszyezoterycznyjęzyk programowania. Jego oficjalna nazwa to CLWNPA, czyliCompiler Language With No Pronounceable Acronym (kompilowany język o niewymawialnym skrócie). Wyglądem przypominaasembler, lecz jego składnia jest tak skonstruowana, aby maksymalnie utrudnić pisanie programów i uczynić listingi jak najbardziej zagmatwanymi.

Charakterystyka

[edytuj |edytuj kod]

Cechy INTERCALA:

  • Uprzejmość – część instrukcji musimy poprzedzić słowem kluczowymPLEASE, gdyż inaczej program zostanie uznany za nieuprzejmy, a co za tym idzie – odrzucony. Nadużywanie tego słowa spowoduje natomiast zaklasyfikowanie programu jako zbyt lizusowskiego.
  • InstrukcjaCOME FROM będąca skokiemz, a niedo etykiety. Pojawiła się w późniejszych wersjach języka i stała się inspiracją do stworzenia wielowątkowego INTERCALA.
  • Grupowanie wyrażeń będące czymś w rodzaju nawiasów – zamiast nich używane są jednak znaki " i ', co pogarsza czytelność źródeł.
  • Brak jawnego mechanizmu wywoływania procedur. Dostępna jest wyłącznie instrukcjaNEXT, która wykonuje skok do etykiety i przypadkiem odrzuca adres nastos.
  • W Intercalu nie każda użyta komenda musi na 100% oznaczać jej wykonanie. Może to oznaczać jej wykonanie np. na 80%, jeśli rozpoczyna się od "%80".
  • Ignorowanie instrukcji. Przykładowo,ABSTAIN FROM STASHING spowoduje ignorowanie instrukcjiSTASH, natomiastREINSTATE STASHING z powrotem przywróci ją do działania.
  • Brakzmiennych lokalnych. Zamiast tego możemy korzystać z mechanizmu tworzenia ramek stosu.
  • Liczby są wypisywane na ekran w postacirzymskiej.

Oficjalna specyfikacja języka jest napisana w sposób humorystyczny. Zawiera dużo paradoksalnych, nielogicznych lub zabawnych w jakiś inny sposób zdań. Ponadto autorzy zastosowali autorskie nazewnictwo znakówASCII, np. apostrofy i cudzysłowy zwane są tam odpowiednio "iskrami" oraz "króliczymi uszkami".

Operatory

[edytuj |edytuj kod]

INTERCAL posiada kilka operatorów pracujących na słowach procesora, niespotykanych w innych językach programowania. Dwuargumentowe operatory to:

  • mingle (lubinterleave) ($) – przeplatanie bitów obu argumentów.
  • select (~) – wybiera z pierwszego argumentu te bity, których odpowiadające im w drugim argumencie są ustawione; pozostałe są usuwane, a całość jest "upychana w prawo".

Ponadto istnieją trzy jednoargumentowe operatory:AND,OR,EXOR. Wykonują one swą pracę na kolejnych parach bitów w argumencie.

Zupełność

[edytuj |edytuj kod]

Pomimo niespotykanych rozwiązań, INTERCAL jest językiem zupełnym w sensie Turinga. Oznacza to, iż posiadając odpowiednio dużą pamięć, można w nim rozwiązać każdy problem algorytmiczny, z jakim radzą sobiemaszyny Turinga (czyli m.in. komputery). Rozwiązywanie pochłania jednak znacznie więcej czasu. Wykonany benchmark pokazał, że znajdowanieliczb pierwszych mniejszych niż 65536, które programowi w C zabiera 0,5 sekundy, analogiczny program w INTERCALU rozwiązywał w 17 godzin.

Hello World

[edytuj |edytuj kod]

Klasyczny program „Hello, world!” wC wygląda tak:

        #include <stdio.h>        int main(void) {          printf("Hello, world!\n");          return 0;        }

zaś w INTERCALU można go zapisać następująco:

        DO ,1 <- #13        PLEASE DO ,1SUB#1 <- #234        DO ,1SUB#2 <- #112        DO ,1SUB#3 <- #112        DO ,1SUB#4 <- #0        DO ,1SUB#5 <- #64        DO ,1SUB#6 <- #194        DO ,1SUB#7 <- #48        PLEASE DO ,1SUB#8 <- #22        DO ,1SUB#9 <- #248        DO ,1SUB#10 <- #168        DO ,1SUB#11 <- #24        DO ,1SUB#12 <- #16        DO ,1SUB#13 <- #214        PLEASE READ OUT ,1        PLEASE GIVE UP

Linki zewnętrzne

[edytuj |edytuj kod]
Języki programowania
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
istrukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne
Źródło: „https://pl.wikipedia.org/w/index.php?title=INTERCAL&oldid=73881707
Kategoria:

[8]ページ先頭

©2009-2025 Movatter.jp