INTERCAL
Z Wikipedii
INTERCAL – prawdopodobnie pierwszy ezoteryczny język programowania. Jego oficjalna nazwa to CLWNPA, czyli Compiler Language With No Pronounceable Acronym (kompilowany język o niewymawialnym skrócie). Wyglądem przypomina asembler, lecz jego składnia jest tak skonstruowana, aby maksymalnie utrudnić pisanie programów i uczynić listingi jak najbardziej zagmatwanymi.
Spis treści |
[edytuj] Charakterystyka
Cechy INTERCALA:
- Uprzejmość - część instrukcji musimy poprzedzić słowem kluczowym PLEASE, 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.
- Instrukcja COME FROM będąca skokiem z, a nie do 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 instrukcja NEXT, która wykonuje skok do etykiety i przypadkiem odrzuca adres na stos.
- 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 instrukcji STASH, natomiast REINSTATE STASHING z powrotem przywróci ją do działania.
- Brak zmiennych lokalnych. Zamiast tego możemy korzystać z mechanizmu tworzenia ramek stosu.
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ów ASCII, np. apostrofy i cudzysłowy zwane są tam odpowiednio "iskrami" oraz "króliczymi uszkami".
[edytuj] Operatory
INTERCAL posiada kilka operatorów pracujących na słowach procesora, niespotykanych w innych językach programowania. Dwuargumentowe operatory to:
- mingle (lub interleave) ($) - 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.
[edytuj] Zupełność
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ą sobie maszyny Turinga (czyli m.in. komputery). Rozwiązywanie pochłania jednak znacznie więcej czasu. Wykonany benchmark pokazał, że znajdowanie liczb pierwszych mniejszych niż 65536, które programowi w C zabiera 0,5 sekundy, analogiczny program w INTERCALU rozwiązywał w 17 godzin.
[edytuj] Hello World
Klasyczny program „Hello, world!” w C 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
[edytuj] Linki zewnętrzne
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • Common Lisp • D • F# • Forth • Fortran • GAUSS • Icon • Java • JavaScript • Lisp • Lustre• Modula 2 • Ocaml • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • SAS 4GL • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET • XUL
Akademickie: Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme • Rey
Historyczne: ALGOL • APL • BASIC • Clipper • JAS • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula
Ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook
| "Rekordy złotego efektem gry spekulantów" |
|
Silne umocnienie złotego w ostatnich dniach jest efektem gry spekulacyjnej - powiedziała w piątkowym wywiadzie Halina Wasilewska - Trenkner, członkini Rady Polityki Pieniężnej - donosi sobotni "Parkiet".
|
| Milion Polaków zalega ze spłatą kredytów |
|
Ponad milion Polaków zalega ze spłatą 7 mld zł za czynsz, prąd czy rat kredytów! Bankowców te sygnały na razie nie przestraszyły. Wielu z nich chętnie udzieli kredytu na mieszkanie z ratą przekraczającą połowę domowego budżetu klienta - czytamy w dzisiejszym wydaniu "Gazety Wyborczej".
|
| Amerykańska firma wygrała spór z polskim rządem |
|
Amerykanie wygrali spór z polskim rządem – dowiedziała się "Rzeczpospolita". Polska ma zapłacić 20 mln dol. odszkodowania, choć inwestor zza oceanu chciał prawie 100 mln dol.
|
| Bessa zatacza szerokie kręgi |
|
41 procent - tyle od rekordu wszech czasów z 6 lipca 2007 roku stracił indeks WIG. W tym czasie o ponad 56 proc. spadł mWIG40, a WIG - Deweloperzy stracił ponad 58 proc. - informuje Gazeta Giełdy "Parkiet".
|
| Polacy szybko wycofują pieniądze z funduszy |
|
Giełdowa bessa odstrasza od funduszy inwestycyjnych. Według szacunków "Rzeczpospolitej" w pierwszym półroczu wycofaliśmy z nich o 18,4 mld zł więcej niż wpłaciliśmy - czytamy w gazecie.
|