Cflp

Laborator

 

Facultatea de Automatica şi Calculatoare

Departamentul de Calculatoare


 
  Lucrarea 8 Lucrarea 9 Lucrarea 10 Lucrarea 11 Lucrarea 12 Lucrarea 13 Proiect Orar


  Lucrarea 1
 

Subiecte

    

Introducere

LISP face parte din clasa limbajelor funcţionale.
LISP = LIStProgramming.

Scurtă introducere în istoria LISP

LISP a fost inventat de John McCarthy la sfârşitul anilor 1950, ca model formal pentru calulul ecuaţillor recursive. Singurul limbaj de programare mai vechi şi încă folosit este Fortranul.
McCarthy caracterizeaza limbajul în 1980 :"LISP a supravietuit 21 ani, pentru că apoape este un loc optim în spaţiul limbajelor de programare".
Reputaţia LISPului poate argumenta cu fundaţia teoretică mai puternică ca alte limbaje forma funcţională , lambda calculus şi utilizarea funcţiilor generalizate.

Primii paşi:

  • 1956 a McCarthy dezvoltat un limbaj de procesare algebrică a listelor, în scopul folosirii în domeniul inteligenţei artificială
  • între 1960-1965 dialectul principal a fost Lisp 1.5
  • la începutul anilor 1970 existau două dilecte: MacLisp şi Interlisp.
    Maclisp s-a dezvoltat din Lisp 1.5 prin adaugarea variabilor speciale, şi a tratării erorilor, precum conceptul funcţiilor cu număr de argument variabilă, macrodefiniţi, matrici, etc.
    Iterlisp a introdus mai multe concepte noi, ca contrucţia iterativa, preluate de MacLisp şi mai târziu de CommonLisp.
  • În 1981 bazat pe un proiect DARPA prin combinarea mai multor proiecte s-a obţinut Common Lisp ca descriere unei familii de limbaje
  • În 1986 ANSI Comon lisp a rezultat o nouă specificaţie de limbaj cu definiţia protabilităţi, programarea orientatăpe obiecte, system de condiţii, etc.

Emacs

Emacs este un editor adaptabil şi expandabil. Este bazat pe un interpretor de lisp, elisp, un dialect a limbajului Lisp.
Caracteristici:

  • moduri (major modes) de lucuru pentru o gamă variată de limbaje
  • documentie online
  • expandabil prin intermediul limbajului Emacs Lisp
  • suport pentru diferite limbaje (naturale şi de programare)

În cadrul laboratorului de CFLP vom folosi ca editor de programe Lisp şi interpretor de programe mediul Emacs şi pachetul XLisp-stat.

Pentu tastele de comandă Emacs citiţi sumarul tastelor. Detalii găsiti în GNU Emacs Manual.

Pornire emacs şi lisp

În sistemul de operare Linux

Acţiune Rezultat
Porniţi un terminal (iconul de monitor) Apare fereastra de terminal
Tastaţi emacs & Emacs porneşte
Apasaţi C-x 2 Fereastra curentă este imparţită în doua ferestre identice
Apasaţi C-x o Se activează cealaltă (a doua) fereastră
Apasaţi M-x run-xlispstat Porneşte XLISP-STAT
Apasaţi C-x o Se activează cealaltă (a prima) fereastră
Apasaţi M-x lisp-mode

Emacs intră în modul de inferior lisp

Introduceţi o linie lisp pentru testare De exemplu (+ 1 2)
Poziţionând cursorul pe un element dintre parantezele intorudese apăsaţi M-C-X În ferestra de lisp apare rezultatul 3

În sistemul de operare Windows

Acţiune Rezultat
Selectaţi iconul XLisp-Stat de pe Desktop XLisp-Stat porneşte
Minimizaţi XLisp-Stat Aplicatia se minimizrază (aplicatia server va fi apelat de Emacs)
Selectaţi iconul Emacs de pe Desktop Emacs porneşte
Apasaţi C-x 2 Fereastra curentă este imparţită în doua ferestre identice
Apasaţi C-x o Se activează cealaltă (a doua) fereastră
Apasaţi M-x run-xlispstat Porneşte XLISP-STAT
Apasaţi C-x o Se activează cealaltă (a prima) fereastră
Apasaţi M-x lisp-mode

Emacs intră în modul de inferior lisp

Introduceţi o linie lisp pentru testare De exemplu (+ 1 2)
Poziţionând cursorul pe un element dintre parantezele intorudese apăsaţi M-C-X În ferestra de lisp apare rezultatul 3

Taste importante în emacs

Tabelul următor face un sumar a celor mai utilizate combinaţi de taste asignate la diferite comezi emacs.

În tabel C semnifică tasta Control, iar M semnifică tasta Alt sau Meta. De exemplu C-x 2 indică apasarea concomitenta a tastelor Control şi 2, urmată de apasarea tastei 2 (fară Control!)

Combinaţie de tastă

Efect
C-_

Undo

C-x 2 Clonare fereastră
C-x C-n Zona de lucru (buffer) nouă
C-x o Schimbare fereastră activă ("o" este litera "o" şi nu zero!)
C-x k Inchidere (kill) zone de lucru (buffer)
C-x b Selectarea zonei curente de lucru
C-x C-s Salvarea zonei de curente de lucru
C-x C-w Salvarea zonei de lucru cu alt nume
C-x C-f Deschidere unui fisier intr-o zonă de lucru
C-x C-c Înhidere emacs (cu salvare)
C-SPC sau C-@

Pozitionarea punctului de selecţie

C-x C-x Interschimbare punct de selecţie
M-w Copy
C-w Cut
C-y Paste (yank)
C-s

Cautare(search) în zona de lucru

C-M-x Evaluare cu interpretorul Lisp intern, in caz ca xlisp-stat nu este pornit
C-M-x Evaluare cu xlisp-stat (Numai în dacă xlisp-stat e pornit şi în modul lisp e activ)
C-u-n Repetarea de n ori unei comenzi simple
C-x z Repetarea ultimei comezi
C-g Renunţare o comanda neterminată (care astaptă alţi parametri)
M-x Comenzi extinse care nu au asignate combinaţii de taste
M-x lisp-mode Trece zona de lucru (buffer) curent în modul lisp, necesar pentru interpretarea combinaţiei C-M-x
M-x inferior-lisp-mode Trece zona de lucru (buffer) curent în modul inferior-lisp, necesar în caz că din greşeală a fost schimbată modul lui
Problema

Exersaţi:

  •  Crearea unei zone de lucru
  •  Introducerea unui text
  •  Operaţiune de selectare şi de copy-paste
  •  Salvarea unui zone de lucru
  •  Reincărcarea unei zone de lucur
  •  Evaluarea unei expresi lisp (+ 1 2 3)prin intermediul interpretorului încorporat
  •  Pornirea mediului emacs şi xlisp-stat
  •  Evaluarea unei expresi lisp cu xlisp-stat

Notă: Activitatea la acestă ora de laborator nu se va finaliza printr-o notă, ca activităţile urmatoare, Îincepând cu laboratorul 3 necunoaşterea operaţiilor de bază emacs şi xlispstat implică nota 4 la toate lucrările de laborator în termen şi încă nepredate!

Instalare emacs şi xlispstat

Sub Linux

Redhat 6.2

  1. Instalaţi (la instalarea sistemului Linux) pachetele emacs şi xlispstat
  2. Copiaţi fisierul .emacs în directorul home a ultilizatorului folosit
  3. Configuraţi în .emacs directorul unde se află xlispstat

Redhat 7.3

  1. Instalaţi Linux
  2. Salvaţi versiunea precompilată xlispstat de aici.
  3. Dezarhivaţi ca root .tar-ul obtinut în directorul radacină.
  4. Trebuie să relocati /home/student/.emacs. În directorul home a utilizatorului cu care vreţi să lucraţi, în caz că vreţi sa folosiţi xlispstat cu alt utilizator decât student.

Instalare sub alte versiuni

  1. Obtineţi codul surslă de la ftp://ftp.stat.umn.edu/pub/xlispstat/3-52/xlispstat-3-52-20.tar.gz,
  2. Desfaceţi arhiva.
  3. Urmăriţi instrucţiunile de instalare din fişierul Install:
    • executaţi: configure
    • executaţi: make
    • executaţi: make install
  4. Copiaţi fisierul .emacs în directorul home a ultilizatorului folosit
  5. Copiaţi fisierul xlispstat.el în directorul /usr/local/etc

Sub Windows

  1. Salvaţi ultima distribuţie de emacs. Arhivele se găsesc la adresa http://ftp.gnu.org/gnu/windows/emacs/, versiunile precompilate pentru sistemul de operare Windows conţin în numele fişierului i386. La momentul curent cea mai recentă versiune precompilată se gaseste aici sau pe siteul local.
  2. Desfaceţi arhiva tar în directorul c:\cflp (se va crea directorul c:\cflp\emacs)
  3. Creaţi un link pe desktop spre c:\cflp\emacs\bin\emacs.exe
  4. Salvaţi xlisp-stat pentru Windows de la ftp://ftp.stat.umn.edu/pub/xlispstat/. Versiunea cea mai recentă (3.53.17 ) de la ftp.stat.umn.edu sau versiunea locală.
  5. Copiaţi executabilul Wxls32zp.exe în directorul c:\cflp\xlispstat i porniţi depachetarea.
  6. Creaţi un link pe desktop spre c:\cflp\xlispstat\Wxls32.exe
  7. Setaţi variabila de environement HOME la valoarea c:/cflp/
  8. Copiaţi fisierul .emacs în directorul c:\cflp
  9. Copiaţi fisierul xlispstat.el în directorul c:\cflp
  10. Gata! Puteti să testaţi lispul!

Linkuri utile

GNU Emacs Manual - o bună descriere a comenzilor lisp

The XLISP-PLUS Home Page

Istorie Lisp - lisp.org

Istorie Lisp şi famili de limbaje lisp

GNU Emacs Lisp Reference Manual - Unix

GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000

Implementă ri Lisp

Implementă ri comerciale

Probleme

Problema 1. Familializarea cu emacs şi xlisp-stat

Problema 2. Instalare emacs şi xlisp-stat (opţional, ca temă de casă)