Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Lisp - Programowalny Język Programowania

Nieco dłużej o tym, dlaczego Lisp jest wart zainteresowania, czego może nauczyć i jak się w nim programuje.
by

Jacek Złydach

on 31 May 2011

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Lisp - Programowalny Język Programowania

(Lisp) Programowalny Język Programowania O Lispie Lisp w praktyce Co dalej? Lisp Rodzina języków ogólnego przeznaczenia. 1957 - FORTRAN 1958 - LISP 1964 - BASIC 1972 - C 1972 - Prolog 1975 - Scheme 1980 - C++ 1983 - Ada 1983 - Objective C 1984 - Common Lisp 1991 - Python 1993 - Ruby 1994 - CLOS 1995 - Java 2001 - C# 2007 - Clojure 1984 - Emacs Lisp 1986 AutoLISP 1978 - Franz Lisp 1967 - Interlisp 1973 - ZetaLisp Siła wyrazu (AKA. moc języka) ASM C C++ Java PHP Lisp Prolog Python Ruby Haskell Erlang C# Scala ML F# OCaml ICON JavaScript Po co nam tyle języków? Opanowanie
Złożoności MAKRA FUNKCJE Lisp 101 CLOS Hardcore OOP LISP, będąc najpotężniejszym i najczystszym z języków, jest językiem, który projekt GNU zawsze preferuje. Richard M. Stallman Istnieje mit, że Lisp (i Prolog) są językami 'specjalnego przeznaczenia', a języki takie jak Pascal i C są 'ogólnego przeznaczenia'. W zasadzie jest dokładnie na odwrót. Pascal i C są językami specjalnego przeznaczenia, do manipulowania rejestrami i pamięcią komputera w architekturze von Neumanna. Peter Norvig,
Paradigms of Artificial Intelligence Programming Inkrementalna kompilacja Read - Eval - Print Loop Minimalna składnia Domknięcia leksykalne Funkcje first-class Uogólnione settery Keyword parameters lambda list cond Dynamiczne typowanie call-with-current-continuation Garbage collector conditions / restarts code = data Rozmyte pojęcie runtime / compile time Makra syntaktyczne Makra kompilacji Programowalny reader Programowalny printer format macro loop macro destructuring-bind Image-based persistency Pakiety first-class Obliczenia symboliczne Bardzo dobra dokumentacja cons Funkcje wyższego rzędu S-Expressions 42 bunny +venti-white-mocha+ "hello world" (min 1 (max 2 3)) wartość bunny wartość +venti-white-mocha+ "hello world" min(1, max(2, 3)) => 1 42 + wartość + eval (lerp 0 100 time) operator operandy Google: SICP #lisp
#lispgames #lisp-pl irc://chat.freenode.net http://lispgames.org http://landoflisp.com http://www.gigamonkeys.com/book/ http://mitpress.mit.edu/sicp/ Java Duże aplikacje Skrypty iPhone Clojure Common Lisp Scheme Scheme Clojure Common Lisp Obliczenia symboliczne Domknięcia Programy, które piszą programy Cały Lisp jest dostępny dla kodu w trakcie
makroekspansji. Funkcje wyższego rzędu Cytowanie Starship Game Object Space Station Asteroid (http://all-things-andy-gavin.com/2011/03/12/making-crash-bandicoot-gool-part-9/) Jacek "TeMPOraL" Złydach
http://temporal.pr0.pl/devblog
temporal.pl@gmail.com Dziękuję za uwagę :) Eseje Paula Grahama Beating the Averages Revenge of the Nerds What Made Lisp Different? Dygresja 1 o składni, kodzie i danych Prolog w Lispie Pattern matcher -> Unifikator
+
Kontynuacje -> Programowanie niedeterministyczne
=
Prolog (full) Pattern matcher -> Unifikator
+
Lazy evaluation -> Strumienie
=
Prolog (część logiczna) (http://www.loper-os.org/?p=295) (Blub) Lisp wprowadził Garbage collecting
Struktury drzewiaste w języku
Self-hosting compiler (eval)
if-then-else (cond)
Programowanie funkcyjne
Funkcje first-class
Referencje
XML (sort of, czytelniejszy)
Makra syntaktyczne
Aspect-Oriented Programming
Homoikoniczność
(...) chromatic Czasem się zastanawia czy Lisp istnieje tylko po to, żeby Lispersi mogli twierdzić, że wymyślili wszystko pierwsi (nie, żeby nie wymyślili) Chromatic,
http://identi.ca/notice/41830931 Lisp... NIE jest owsianką z obciętymi paznokciami
NIE jest językiem funkcyjnym
NIE jest interpretowany
NIE wymaga liczenia nawiasów
NIE zapisujemy "LISP"
NIE jest martwy
NIE jest (tylko) do AI Blub Paradox Co do kreatywności języka - PHP tak samo jak Ruby ma dynamiczną typizację, closures, funkcje lambda i wszystkie te zabawne rzeczy których brakuje w C/Javie. - A I chwała za to C/Javie :!: - B Niektóre z rzeczy, o których wspomniałeś A są natomiast w C# :) Osobiście nie wyobrażam sobie znowu przesiadki na Javę bez wyrażeń lambda, składni linq itp. - C Dlaczego Lisp? Lisp jest potężny Lisp poszerza horyzonty Metaobject Protocol Kod = Dane

Homoikoniczność http://paulgraham.com http://lisp.pl Optymalizacja kodu Memoizacja Lazy Evaluation Deklaracje Każdy wystarczająco zaawansowany program w C lub Fortranie zawiera ad-hoc, nieformalnie zdefiniowaną, pełną błędów, wolną implementację połowy Common Lispu. 10 Reguła Programowania Greenspuna
Full transcript