• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Common Lisp



    Podstrony: 1 [2] [3] [4] [5]
    Przeczytaj także...
    Perl – interpretowany język programowania autorstwa Larry’ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.Rekurencja ogonowa, zwana też Tail call lub prawostronną jest rodzajem rekurencji, w której ostatnia operacja wykonywana przez funkcję to rekurencyjne wywołanie samej siebie lub zwrócenie końcowego wyniku. Taka funkcja może zostać łatwo zamieniona na iterację, zarówno ręcznie, jak i automatycznie, co redukuje wielkość stosu oraz zwiększa wydajność. Ta technika iteracyjnego wykonywania obliczeń jest powszechna w programowaniu funkcyjnym promującym używanie rekurencji, która w przeciwnym wypadku zajęłaby cały dostępny stos.

    Common Lisp (często skracane do CL) – dialekt języka programowania Lisp, stworzony przez ANSI (X3.226-1994) jako specyfikacja, nie implementacja. Istnieje kilka implementacji, zarówno zamkniętych, jak i dostępnych jako FOSS. Common Lisp jest wieloparadygmatowym językiem programowania ogólnego przeznaczenia, skupiającym się na programowaniu funkcyjnym, pozwalając jednak stosować obiektowość, co daje programiście dużą swobodę.

    Kod bajtowy (ang. bytecode) – nazwa reprezentacji kodu używanej przez maszyny wirtualne oraz przez niektóre kompilatory. Kod składa się z ciągu instrukcji (których kody operacji mają zwykle długość jednego bajta, stąd nazwa), które nie odpowiadają bezpośrednio instrukcjom procesora i mogą zawierać instrukcje wysokiego poziomu (takie jak np. stwórz obiekt klasy X, połącz dwa łańcuchy itd.), jednak w przeciwieństwie do kodu źródłowego wymagają analizy tylko pojedynczych poszczególnych operacji.Emacs – rodzina edytorów tekstu, znana ze swojej rozszerzalności. Podręcznik najpopularniejszego wariantu GNU Emacs opisuje go jako „rozszerzalny, dostosowywalny, samodokumentujący się, edytor wyświetlany w czasie rzeczywistym”. Rozwój pierwszych Emacsów rozpoczął się w połowie lat siedemdziesiątych, a prace nad GNU Emacsem, kontynuowane są aktywnie do chwili obecnej (2020).

    Składnia[ | edytuj kod]

    Common Lisp jest dialektem Lispu. Używa S-wyrażeń do opisywania kodu i struktur danych. Funkcje i wywołania makr zapisuje się w postaci list z nazwą funkcji (lub makra) jako pierwszym elementem.

    Rachunek lambda – system formalny używany do badania zagadnień związanych z podstawami matematyki jak rekurencja, definiowalność funkcji, obliczalność, podstawy matematyki np. definicja liczb naturalnych, wartości logicznych itd. Rachunek lambda został wprowadzony przez Alonzo Churcha i Stephena Cole’a Kleene’ego w 1930 roku. Common Lisp Object System (CLOS) - zorientowane obiektowo rozszerzenie do Common Lisp, oparte na funkcjach ogólnych, dziedziczeniu wielokrotnym, kombinacji metod deklaracyjnych i protokole metaobiektowym. Pochodna CommonLoops, oparta na opracowanym przez Symbolics języku FLAVORS (Lisp z funkcjami obiektowymi) i LOOPS (Lisp Object-Oriented Programming System) firmy Xerox.
    (+ 2 2)           ; sumuje 2 i 2, zwraca 4
    
    (setf p 3.1415)   ; ustawia wartość zmiennej p na 3.1415, zwraca 3.1415
    
    #+(or) 37 42 ; komentowanie wyrażeń; wynik to 42
    
    ; tworzy funkcję podnoszącą liczbę do kwadratu
    (defun kwadrat (x)
      (* x x))
    
    ; wywołuje powyższą funkcję
    (kwadrat 3)        ; zwraca 9
    ; specjalna forma let tworzy nowe zmienne lokalne, których zasięg ogranicza się do końca bloku.
    (let ((a 6) (b 4))
      (+ a b)) ; zwraca 10
    

    Typy danych[ | edytuj kod]

    Typy skalarne[ | edytuj kod]

    Do typów liczbowych należą liczby całkowite, zmiennoprzecinkowe i zespolone oraz ułamki zwykłe. Common Lisp korzysta z dużych liczb do reprezentowania wartości liczbowych o dowolnym rozmiarze i precyzji. Typ ułamkowy nie jest dostępny w większości innych języków. Przy zwracaniu liczby CL automatycznie nadaje jej właściwy typ.

    AutoLISP - język programowania, odmiana języka Lisp, która jest dołączana do programu komputerowego AutoCAD, służącego do komputerowego wspomagania projektowania. Ma on na celu ułatwić użytkownikowi rozszerzenie funkcji tego programu (np. wielokrotne powtarzanie rysowania danych elementów).Liczby całkowite – liczby naturalne dodatnie N + = { 1 , 2 , 3 , … } {displaystyle mathbb {N} _{+}={1,2,3,dots }} oraz liczby przeciwne do nich { − 1 , − 2 , − 3 , … } {displaystyle {-1,-2,-3,dots }} , a także liczba zero. Uogólnieniem liczb całkowitych są liczby wymierne i tym samym liczby rzeczywiste, szczególnym przypadkiem liczb całkowitych są: liczby naturalne.

    Znaki w CL nie muszą się koniecznie zawierać w standardzie ASCII. Wynika to z faktu, że Lisp został stworzony przed standardem. Niektóre implementacje dopuszczają znaki ze standardu Unicode.

    Typ symboliczny jest wspólny dla Lispów, ale raczej nieznany poza nimi. Symbol to unikatowy, nazwany obiekt z kilkoma slotami na dane. Symbole w Lispie są często używane podobnie do nazw w innych językach (przechowywanie wartości zmiennej, nazywanie funkcji), jednakże istnieje wiele innych sposobów użycia. W CL w zależności od miejsca użycia symbol zwraca powiązaną z nim funkcję lub wartość. Część symboli przy użyciu zwraca same siebie, na przykład T, NIL czy wszystkie symbole z pakietu KEYWORDS.

    BSD (ang. Berkeley Software Distribution, czasami nazywany Berkeley Unix) – odmiana systemu operacyjnego Unix wywodząca się ze stworzonych na Uniwersytecie Kalifornijskim Berkeley rozszerzeń dla systemu rozwijanego przez firmę AT&T. Także potoczna nazwa licencji BSD, na której te systemy są wydawane oraz pokrewnych licencji tego typu (np. licencja MIT).Duże liczby całkowite – typ danych występujący w niektórych językach programowania, który pozwala na operowanie na liczbach całkowitych dowolnej wielkości, o ile tylko zmieszczą się one w pamięci.

    Wartości logiczne w Common Lispie reprezentowane są przez symbole T oraz NIL, każda wartość, która nie jest NIL, jest automatycznie uznawana za prawdę.

    Struktury danych[ | edytuj kod]

    Do typów sekwencyjnych w CL zaliczają się listy i wektory. Wiele funkcji może pracować na różnych typach sekwencyjnych, na przykład map.

    Listy w CL są tworzone za pomocą funkcji cons, czasami skracane do tej nazwy są także komórki cons (ang. cons cell, czasami też używa się nazwy para, ang. pair). Cons jest strukturą danych z dwoma slotami zwanymi car i cdr. Lista to łańcuch połączonych komórek cons. W liście slot car komórki cons zawiera element listy (na przykład liczbę, znak czy inną listę), a slot cdr wskazuje na następny element listy, lub na symbol NIL, gdy dany dana komórka jest ostatnia w liście. Listy mogą być wykorzystywane do implementacji drzew, grafów i innych struktur danych.

    W informatyce tablica mieszająca lub tablica z haszowaniem (ang. hash table, niekiedy błędnie tłumaczone jako "tablica haszująca") to struktura danych, która jest jednym ze sposobów realizacji tablicy asocjacyjnej, tj. abstrakcyjnego typu danych służącego do przechowywania informacji, w taki sposób aby możliwy był do nich szybki dostęp. Tablica mieszająca umożliwia również szybkie porównywanie danych, np. fragmentów tekstów, plików.Znakowy typ danych (ang.) character data type – typ danych stosowany w wielu językach programowania, reprezentujący jeden znak tekstu.

    Common Lisp obsługuje wielowymiarowe tablice (array) i potrafi w razie potrzeby dynamicznie zmieniać ich rozmiar. Wielowymiarowe tablice mogą być używane na przykład do implementacji macierzy. Wektor (vector) to jednowymiarowa tablica. W tablicy można przechowywać wszystkie typy danych (nawet różne typy w jednej tablicy) lub można mieć tablice specjalizowane do przechowywania określonego typu, na przykład wektor liczb zmiennoprzecinkowych. W standardzie określone są dwie wyspecjalizowane tablice – string to wektor znaków, a wektor bitowy (bit-vector) to wektor zawierający bity.

    Unix Time-Sharing System (pisane również jako UNIX, choć nie jest to skrót – nazwa „UNIX” jest kalamburem określenia Multics, który był wzorem dla Uniksa) – system operacyjny rozwijany od 1969 r. w Bell Labs (UNIX System Laboratories, USL) przez Dennisa Ritchie i Kena Thompsona. W latach 70. i 80. zdobył bardzo dużą popularność, co zaowocowało powstaniem wielu odmian i implementacji. Część z nich, w szczególności Linux oraz OS X, jest w użyciu do dziś. UNIX jest zarejestrowanym znakiem towarowym The Open Group.Pascal – dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego poziomu, ogólnego zastosowania, oparty na języku Algol. Został opracowany przez Niklausa Wirtha w 1970 roku. Nazwa języka pochodzi od nazwiska francuskiego fizyka, matematyka i filozofa Blaise Pascala.

    Hashe przechowują zależności między kluczami a wartościami tak, by wydajne było pobranie wartości na podstawie klucza.

    Przestrzenie nazw (package, znane w niektórych językach jako namespace) są realizowane jedynie dla symboli; parsing niekwalifikowanych ciągów znaków na symbole w przestrzeni nazw odbywa się zwykle podczas kompilacji, ale jeszcze przed semantyczną analizą grafu wyrażeń symbolicznych. Przestrzeń nazw może eksportować symbole, oznaczając je jako zewnętrzny interfejs, jednak ścisła enkapsulacja nie jest w żaden sposób zapewniona. Zawsze możliwe jest odwoływanie się do prywatnych symboli, jak i redefinicja cudzych klas, zmiennych czy we wzorcowych implementacjach samego kompilatora. Jest to filozofia tworzenia oprogramowania wewnątrz maszyny wirtualnej obecna również w Smalltalku wedle której używane biblioteki, aplikacja, kompilator tworzą organiczną całość.

    Programowanie obiektowe (ang. object-oriented programming) — paradygmat programowania, w którym programy definiuje się za pomocą obiektów — elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli procedury, tu: metody). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań.Arkusz kalkulacyjny to program komputerowy przedstawiający dane, głównie liczbowe, w postaci zestawu dużych tabel dwuwymiarowych, pozwalający na automatyczną obróbkę tych danych oraz na prezentację ich w różny sposób.

    Struktury, podobnie do struktur C i pascalowych rekordów, reprezentują złożone struktury danych z dowolną liczbą i typem pól (zwanych slotami). Struktury różnią się od zwykłych obiektów z metaklasą standard-class złożonością obliczeniową dostępu do slotu. Przy optymalnej implementacji pobranie wartości zapisanej w strukturze będzie zawsze O(1), niezależnie od ilości slotów, jednak za cenę niemożności redefinicji struktur, tudzież konieczności ponownej kompilacji kodu po redefinicji struktury.

    Unicode – komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma używane na świecie. Definiują go dwa standardy – Unicode oraz ISO 10646. Znaki obu standardów są identyczne. Standardy te różnią się w drobnych kwestiach, m.in. Unicode określa sposób składu.Scheme – funkcyjny język programowania, dialekt (wariant) Lispu, który został zaprojektowany na MIT przez Guy L. Steele-a i Geralda Jay Sussmana w latach 70. Jego główną ideą jest minimalizm, co oznacza, że sam język zawiera jedynie podstawowe mechanizmy, a na ich bazie, już z użyciem Scheme, tworzone są bardziej zaawansowane rozwiązania. Scheme nie jest czysto funkcyjnym językiem programowania, co oznacza, że dopuszczalne są efekty uboczne obliczeń. Scheme umożliwia również tworzenie programów w stylu proceduralnym i obiektowym. Jest to język o dynamicznym systemie typów. Zarządzanie pamięcią jest w pełni automatyczne. Scheme był pierwszym dialektem Lispu, który używał zmiennych leksykalnych i pierwszym który wymagał od implementacji optymalizacji wywołań z rekurencją ogonową. Scheme jest ustandaryzowany przez organizację IEEE oraz przez dokumenty Revised Report on the Algorithmic Language Scheme (RnRS), z których najczęściej implementowane są R5RS z 1998 roku oraz R6RS z 2007 roku.

    CLOS[ | edytuj kod]

    Klasy w Common Lisp Object System posiadają możliwość modyfikacji zachowania obiektów poprzez metaklasy i użycie „protokołu metaobiektowego”, pozwalając na zachowania nie planowane przez twórców, jak np. obiekty automatycznie dodające i uzupełniające się w bazie danych SQL czy korzystające z modelu propagacji więzów przypominającego w działaniu arkusz kalkulacyjny.

    Przestrzeń nazw (ang. namespace) – abstrakcyjne uniwersum, którego elementami mogą być nazwy, terminy techniczne lub słowa. W obrębie dowolnej przestrzeni nazw każda nazwa musi być niepowtarzalna. Przestrzeń nazw jest kontekstem, w którym słowo może być jednoznacznie przypisane do reprezentowanego przez nie pojęcia ze świata rzeczywistego.Standard ML (SML) - język programowania funkcyjnego powstały w 1990 roku jako pierwszy standard języka ML (ang. Meta Language). Twórcami SML-a byli Robin Milner, Mads Tofte i Robert Harper.

    Protokół metaobiektowy (MOP) nie został zawarty w standardzie ANSI, jednak książka opisująca jego działanie i przykładową implementację stała się de-facto standardem wśród implementacji Lispu.

    W przeciwieństwie do języków takich jak Smalltalk czy C++, metody nie należą do przestrzeni nazw klas; należą one do generic function znajdującej się w przestrzeni nazw pakietu (lub modułu, namespace). Możliwa jest specjalizacja typu nie tylko pierwszego argumentu (self, this) ale każdego z wymaganych argumentów. Określanie pasującej metody jest względnie wydajne dzięki sprytnej memoizacji opisanej w AMOP.

    System plików – metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu; także: wolumin.Emacs Lisp (czasami nazywany Elisp) - dialekt języka programowania Lisp wykorzystywany przez edytory tekstu GNU Emacs i XEmacs, używany do pisania programów, które wspomagają pisanie tekstu oraz rozszerzają możliwości edytora Emacs. Większość funkcji edytora Emacs została napisana w Emacs Lisp-ie, oprócz między innymi niskopoziomowych funkcji wyświetlających oraz interpretera i kompilatora Emacs Lisp, które zostały napisane w języku C.

    Funkcje[ | edytuj kod]

    W CL funkcje są traktowane jako typ danych. Umożliwia to na przykład pisanie funkcji, które pobierają inne funkcje jako argument albo zwracających inne funkcje. Standardowa biblioteka CL szeroko wykorzystuje tę możliwość, na przykład funkcja sort pobiera funkcję porównującą jako argument. Pozwala to na sortowanie nie tylko każdego typu danych, ale także umożliwia sortowanie złożonych struktur danych zależnie od klucza.

    FreeBSD — system operacyjny z rodziny Unix. Do wersji 2.0 wywodził się z systemu 4.3BSD, kolejne wersje wywodziły się z 4.4BSD Lite2; obu stworzonych przez Computer Systems Research Group (CSRG) na Uniwersytecie Kalifornijskim w Berkeley. Podobnie jak NetBSD, jest bezpośrednią pochodną 386BSD – systemu będącego pierwszą próbą przeportowania systemu Unix z gałęzi BSD na architekturę IA-32.Początkowo znany pod nazwą Unofficial 386BSD Patchkit.Smalltalk jest w pełni obiektowym, reflektywnym językiem programowania z dynamicznym typowaniem. Umożliwia to w praktyce zupełnie inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający współczesnych języków obiektowych (np. Java), które rozwinęły się z wcześniejszych języków proceduralnych takich jak C, czy Pascal.
     (sort (list 5 2 6 3 1 4) #'>)
     ; Sortuje listę używając > jako operatora porównującego.
     ; Zwraca (6 5 4 3 2 1).
    
     (sort (list '(9 a) '(3 b) '(4 c))
           (lambda (x y) (< (car x) (car y))))
     ; Sortuje listę zależnie od pierwszego elementu podlisty.
     ; Zwraca ((3 b) (4 c) (9 a)).
     ; Lub: (sort (copy-seq '((9 a) (3 b) (4 c))) #'< :key #'car)
     ; korzystając z ''keyword parameters'.
    

    Model wartościowania dla funkcji jest bardzo prosty. Gdy parser napotyka na formę (F A1 A2 A3 ...), zakłada, że symbol F jest albo:

    Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje.Programowanie funkcyjne (lub programowanie funkcjonalne) – filozofia i metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń.
    1. Specjalnym operatorem (z ustalonej listy)
    2. Zdefiniowanym wcześniej makrem
    3. Nazwą funkcji

    Jeżeli F jest nazwą funkcji, argumenty A1, A2, A3 itd. są wartościowane w porządku od lewej do prawej oraz, o ile funkcja istnieje, jest wywoływana z wartościami zwróconymi przez argumenty. Jeśli zaś F desygnuje makro, zostanie ono rozszerzone rekursywnie aż zostaną jedynie specjalne formy i wywołania funkcji.

    macOS (wymowa: mækoʊɛs, dawniej OS X, a także Mac OS X) – rodzina uniksowych systemów operacyjnych produkowanych i rozprowadzanych przez Apple Inc. Dostępny oficjalnie jedynie dla komputerów Macintosh, instalowany fabrycznie w nich od 2002 roku. 13 czerwca 2016 roku na WWDC została ogłoszona zmiana nazwy na macOS w związku z potrzebą unifikacji nazw używanych przez Apple dla swoich systemów operacyjnych (iOS, watchOS, tvOS). Maxima – program komputerowy typu CAS (systemów algebry komputerowej), które mają wspomagać wykonywanie obliczeń symbolicznych. Głównym składnikiem programu jest interpreter.

    Definiowanie funkcji[ | edytuj kod]

    Makro defun służy do definiowania funkcji. Definicja zawiera nazwę funkcji, nazwy jej argumentów oraz wyrażenia stanowiące zawartość funkcji (ang. body).

     (defun square (x)
        (* x x))
    

    Definicja funkcji może zawierać deklaracje, które dostarczają kompilatorowi informacji o ustawieniach optymalizacji lub typach danych argumentów. Może także zawierać dane do dokumentacji, z których Lisp może generować interaktywną dokumentację:

     (defun square (x)
        (declare (integer x) (optimize (speed 3) (debug 0) (safety 1)))
        "Oblicza kwadrat liczby podanej w argumencie x"
        (* x x))
    

    Anonimowe funkcje są definiowane przy użyciu lambda-wyrażeń. Styl programowania w Lispie często wykorzystuje anonimowe funkcje jako argumenty do innych funkcji.

    Paradygmat programowania (ang. programming paradigm) — wzorzec programowania komputerów przedkładany w danym okresie rozwoju informatyki ponad inne lub szczególnie ceniony w pewnych okolicznościach lub zastosowaniach.C – imperatywny, strukturalny język programowania wysokiego poziomu stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.

    Jest wiele operatorów związanych z definiowaniem i manipulowaniem funkcjami. Na przykład funkcja może zostać skompilowana za pomocą funkcji compile. Część implementacji CL uruchamia funkcje w interpreterze, jeżeli nie wydano instrukcji kompilacji, inne domyślnie kompilują w locie.

    Przestrzeń nazw funkcji[ | edytuj kod]

    Przestrzeń nazw funkcji jest oddzielona od przestrzeni zmiennych, co jest główną różnicą między CL a Scheme. Do operatorów definiujących nazwy w przestrzeni funkcji należą m.in. defun, flet i labels.

    Wolne i otwarte oprogramowanie (ang. free and open-source software, także FOSS, FLOSS, po polsku również WiOO) – nazwa obejmująca zarówno wolne oprogramowanie (ang. free software) jak i otwarte oprogramowanie (ang. open source), używana najczęściej w dokumentach urzędowych i oficjalnych analizach.Wolne Oprogramowanie (ang. free software) – termin określający oprogramowanie, które może być uruchamiane, kopiowane, rozpowszechniane, analizowane oraz zmieniane i poprawiane przez użytkowników. Oprogramowanie, aby można je było nazwać wolnym, musi spełniać kilka podstawowych założeń, które zostały zawarte w definicji Wolnego Oprogramowania opublikowanej przez Free Software Foundation. Przysługujące użytkownikowi wolności to:.

    Aby poprzez nazwę przekazać funkcję jako argument do innej funkcji należy użyć specjalnego operatora function, zwykle skracanego do #'. Pierwszy przykład użycia funkcji sort (powyżej) odwołuje się do funkcji poprzez symbol > za pomocą #'>.

    Model wartościowania Scheme jest prostszy – jest tylko jedna przestrzeń nazw i wszystkie elementy formy są wartościowane w dowolnej kolejności – nie tylko argumenty. Przez to kod napisany w jednym dialekcie może być mylący dla programisty bardziej doświadczonego w innym. Na przykład wielu programistów CL używa nazw opisujących zmienną (np. list czy string), co może powodować problemy poprzez lokalne przysłanianie nazw funkcji. By wywołać funkcję znajdującą się w przestrzeni wartości, konieczne jest użycie funkcji funcall czy apply - złożone formy jako pierwszy element ewaluowanej listy są bezwarunkowo niedozwolone. Pociągnęło to za sobą również pozornie nie związane odmienności w kulturach Scheme i Common Lispu - przykładowo, w CL-u klasy znajdują się w osobnej "przestrzeni nazw" z interfejsem find-class, zaś w Scheme dodawane do globalnego środowiska jak np. w systemie obiektowym Meroon.

    Ada to strukturalny, kompilowany, imperatywny, statycznie typowany i obiektowy język programowania opracowany przez Jean Ichbiaha i zespół z CII Honeywell Bull w latach 70. XX wieku. Język ten wygrał konkurs zorganizowany przez Departament Obrony USA (U.S. Department of Defense – DoD), pokonując 19 innych projektów. Nazwa języka, nadana przez DoD, pochodzi od imienia lady Augusty Ady Lovelace, uważanej za pierwszą programistkę w historii.Kod bajtowy Javy – lista instrukcji do wykonania przez wirtualną maszynę Javy (JVM). Każdy kod operacji kodu bajtowego ma jeden bajt długości, chociaż niektóre kody operacji wymagają parametrów, co sprawia, że mamy dużo wielobajtowych instrukcji. Nigdy nie użyto wszystkich możliwych 256 kodów operacyjnych.

    Pytanie, czy oddzielna przestrzeń nazw dla funkcji jest zaletą, czy nie, jest źródłem sporów w społeczności Lispu. Jest to zwykle nazywane debatą Lisp-1 vs. Lisp-2. Nazwy te zostały wymyślone w artykule z 1988 r. przez Richarda Gabriela i Kenta Pitmana, którzy porównują w nim obydwa podejścia.

    Inne typy danych[ | edytuj kod]

    Do pozostałych typów w CL zaliczają się:

    Lisp – rodzina języków programowania z długą historią i charakterystyczną składnią. Zaprojektowany przez Johna McCarthy’ego na MIT w 1958 roku. Pierwszym interpreterem języka Lisp była implementacja funkcji eval wykonana przez studenta McCarthy’ego – Steve’a Russella. Lisp jest drugim z kolei pod względem wieku językiem programowania wysokiego poziomu pozostającym w użyciu (starszy jest tylko Fortran). Podobnie jak Fortran, Lisp ulegał na przestrzeni czasu licznym zmianom. Powstało również wiele jego dialektów. Dziś do najpopularniejszych należą trzy: Common Lisp, Scheme i Clojure. Definicja intuicyjna: Java (wym. „dżawa”) to język programowania. Programy napisane w Javie można uruchamiać na wielu urządzeniach, takich jak telefony komórkowe lub komputery oraz pod różnymi systemami operacyjnymi, przy użyciu Wirtualnej maszyny Javy, która musi być w danym środowisku zainstalowana.
  • Ścieżki (pathnames) reprezentują pliki w systemie plików. Ścieżki w CL są bardziej ogólne niż zasady nazewnictwa w większości systemów plików, co sprawia że dostęp do plików w różnych systemach operacyjnych z poziomu Lispu jest zwykle identyczny.
  • Strumienie (streams) wejścia i wyjścia reprezentują źródła danych binarnych lub tekstowych, takich jak np. terminal czy otwarte pliki.
  • Condition to typ reprezentujący błąd, wyjątek czy inne zdarzenie, na które program może odpowiedzieć.
  • Carnegie Mellon University (Uniwersytet Carnegiego i Mellonów) – amerykański uniwersytet niepubliczny w Pittsburghu. Liczba zmiennoprzecinkowa – reprezentacja liczby rzeczywistej zapisanej za pomocą notacji naukowej. Ze względu na wygodę operowania na takich liczbach, przyjmuje się ograniczony zakres na mantysę i cechę – nazwy te mają w matematyce znaczenie podane w artykule podłoga i sufit, a w niniejszym artykule inne, powszechne w informatyce. Powoduje to, że reprezentacja liczby rzeczywistej jest tylko przybliżona, a jedna liczba zmiennoprzecinkowa może reprezentować różne liczby rzeczywiste z pewnego zakresu.


    Podstrony: 1 [2] [3] [4] [5]




    Warto wiedzieć że... beta

    Bit (w ang. kawałek, skrót od binary digit, czyli cyfra dwójkowa) – najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych stanów przyjął układ. Jednostka logiczna.
    Prolog (od francuskiego Programmation en Logique) jest to jeden z najpopularniejszych języków programowania logicznego. Prolog powstał jako język programowania służący do automatycznej analizy języków naturalnych, jest jednak językiem ogólnego zastosowania, szczególnie dobrze sprawdzającym się w programach związanych ze sztuczną inteligencją. Prolog w przeciwieństwie do większości popularnych języków jest językiem deklaratywnym.
    Implementacja (wdrożenie, przystosowanie, realizacja, łac.ang. implementation) – w informatyce – proces przekształcania abstrakcyjnego opisu systemu lub programu na obiekt fizyczny: komputer lub działający program zapisany w konkretnym języku programowania; także obiekt fizyczny będący efektem takiego przekształcenia, np. implementacja systemu operacyjnego (wdrożenie systemu) lub kompilatora dla konkretnego typu komputera.
    Język maszynowy (kod maszynowy) – język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program.
    Standardowe strumienie – standardowe kanały komunikacji między komputerem a otoczeniem (zwykle terminalem). Występują w Uniksie i systemach uniksopodobnych, w środowisku uruchomieniowym C, C++ i ich pochodnych. Trzy podstawowe połączenia I/O noszą nazwy: standard input (stdin, standardowy strumień wejścia), standard output (stdout, standardowy strumień wyjścia) i standard error (stderr, standardowy strumień błędów).
    x86 – rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC, zapoczątkowana przez i wstecznie zgodna z 16-bitowym procesorem 8086, który z kolei wywodził się z 8-bitowego układu 8085. Nazwa architektury wywodzi się od nazw pierwszych modeli z tej rodziny, których numery kończyły się liczbą 86.
    CLISP – wolna implementacja Common Lispu, pierwotnie rozwijana przez Bruna Haiblego oraz Michaela Stolla dla Atari ST. Obecnie obsługuje systemy Unix oraz Microsoft Windows.

    Reklama

    Czas generowania strony: 0.03 sek.