1 / 46

Tema 1: Introducció als llenguatges de programació i als seus paradigmes

Tema 1: Introducció als llenguatges de programació i als seus paradigmes. Seccions. Llenguatge de Programació Història i Evolució Paradigmes i models de còmput subjacents. Llenguatge de Programació. Llenguatge de Programació.

sine
Download Presentation

Tema 1: Introducció als llenguatges de programació i als seus paradigmes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tema 1:Introduccióalsllenguatges de programació i alsseusparadigmes

  2. Seccions • Llenguatge de Programació • Història i Evolució • Paradigmes i models de còmputsubjacents

  3. Llenguatge de Programació

  4. Llenguatge de Programació • Un llenguatge de programacióés una notació per a escriure programes. (Sethi, 89) • Un programa és una especificaciód’uncòmput. • Per còmputentenemallò que potfer una màquina de Turing.

  5. Tesis de Church-Turing • Church’s Thesis: “Every effectively calculable function (effectively decidable predicate) is general recursive”. • Turing’s Thesis: “Every function which would be naturally regarded as computable is computable by a Turing machine”.

  6. Formalismes de còmput • Lògica de Predicats • GottlöbFrege (1848-1925) • Base formal de la teoria de la demostraciói la demostracióautomàtica de teoremes • Programaciólògica • Un còmputésunadeducciólògica • Màquines de Turing • Alan Turing (1912-1954) • Programacióimperativa • Un còmputésl’evolucióseqüenciald’estatsmitjançantassignacions slide 6

  7. Formalismes de còmput • Lambda calculus • Alonzo Church (1903-1995) • Base formal per alsllenguatgesfuncionals, la semàntica, la teoria de tipus, etc. • ProgramacióFuncional • Un còmputés la reescripturad’unaexpressió fins a una forma normal. No hi ha assignacions. • Funcionsrecursives & automates • Stephen Kleene (1909-1994) • Expressions regulars, màquinesd’estatsfinits, PDAs slide 7

  8. Sobre la Tesis de Church-Turing • Turing-completesa: tenir la mateixacapacitat de còmput que les màquines de Turing. Per exemple: Lambda-càlcul, funcionsrecursives, lògica de predicats,… • No serien Turing-complets: autòmatesfinits (DFAs), gramàtiquesincontextuals, etc. • No es coneixcap sistema Turing-complet que no siguiTuring-equivalent => reforça Tesis C-T

  9. Llenguatge de Programació • Notació formal per a especificar còmputs: • Lèxic (paraulespermeses…) • Sintaxis (regles de formació de programes…) • Semàntica (significat i efecte de les diferentsconstruccions…) • Implementacions concretes… • Normalments’espera que el sistema notacionalsiguiintel·ligible per l’humài fàcilmenttraduïble per a que la màquina l’“entengui”.

  10. Perquè estudiar LP i Paradigmes? • L’estructurad’unllenguatge de programació acota el procésintel·lectual del programador al programar. • Aprendremconceptesbàsics i de vegadesignorats les llenguatges: pas per valor, pas per paràmetre, tipusestàtics, funcionsd’ordre superior, etc. • Faràmésfàcilaprendrenousllenguatges • Faràmésfàcildissenyarnousllenguatges

  11. Història i evolució

  12. Primeresmàquinesamb “llenguatge” • Teler de Jaquard, 1801. • Permetiafer diferente tipus de teles en funció de les targetesperforadesque contenienelspatronsdesitjats.

  13. Primeresmàquinesamb “llenguatge” • Màquina analítica de Charles Babbage per a càlcul (1816+-) • Motor a vapor, programes ambtargetesperforades, … • No es va arribar a fabricar. • Ada Lovelance, primera programadora.

  14. Primers “ordinadors” • ENIAC: Electronic Numerical Integrator And Computer. (1946 … 1955) • Primer ordinador electronic de propòsit general. • Dim: 2,4m x 0,9m x 30m, 167m^2, 27 Tonelades, 17468 vàlvules, 150kW, … • Programar era complicat… per “passar al programa dins d’ENIAC”, s’havia de tocarinterruptorsi cables… • Encara no haviaimplementat la idea de tenirmemoria per al programaimemòria per a les dades

  15. Altresordinadorscohetanisdurant WWII: • Z3 (1941): targetesperforades • Colossus (1943): criptoanàlisis • … ENIAC:

  16. CodisMàquina • 40’s • Elscodis eren numèrics. • Pocllegibles • Poc modificables • Programar era moltcomplicat • Problemesinherents al hardware com falta d’indexació, no existènciad’aritmètica real, … • Llenguatge de Programació?

  17. Llenguatgesensambladors • Principisdels 50: per no haver de escriure/perforar directamentcodisbinariscom a operacions del càlcul de les màquines, es va recorrer al mnemotècnics: • Llenguatge ensamblador: pushebp movebp, esp sub esp, 4 pushedi • Introduiagestio de macros i subrutines.

  18. Primer llenguatgealgorísmic • PlanKalkul per ConradZuse (dissenyador de Z3), 1948. • No es va implementar… • Permetiacoherència de tipusint/bool, estructures condicionals, iteracions, assignacions, etc. • Va dissenyar un programa per jugar a escacs.

  19. FORTRAN (Formula Tranlator) • 1954-57 per John Backus. • Orientat al càlculmatemàtic. • Característiques: • Variables de fins a 6 caràcters • Les que comencen per i, j, k, l, m o n eren enteres • Les altresfloats • Assignacionsambexpressionsaritm. • do … while • Subrutines i funcions • Formatsd’entradasortida • Independència de la màquina (idea de compilar/interpretar)

  20. Exemple de Fortran

  21. Èxit de Fortran • Dubtesd’eficiènciadegut al Altnivell, cosa que implicavatraduir… però, molt bon traductor. • Facilitaval’aprenentatge (vs. Assemblador) • IBM • Eficiència al desenvolupar • Moltesseqüeles i avui en diaencarutilitzat en certàmbitscientífics… (Fortran 2003, OO)

  22. ALGOL (ALGOrithmic Language) • 1958 • Desenvolupat per comitè per a ser standard (acadèmic) per descriurecàlculs en publicacions. • Inclurenotaciómatemàticallegigle • Fàcil de traduir a codimàquina • Descripciógramàticaamb BNF, facilitatcompiladors.

  23. ALGOL (ALGOrithmicLanguage) (2) • Aportacions: • Variables ambnomqualsevol • Estructurat. Blocks i visibilitat • Arraysambmultiplesdimensions • Estructures de control riques: • Seqüències, if-then-else, For-step-until-do, … • Procedimentsrecursius • Modes al pas de parametres (e/s)

  24. Exempled’Algol

  25. Èxit Algol? • Tres anysdesprés de Fortran. • Era mésric i per tantméscomplicatd’aprendre. • Elscompiladors de Fortran eren méssenzills de fer i méseficients. • … • D’altra banda: influència tota la programació estructurada: Pascal, C, JAVA, …

  26. Working space for Procedure P1 Reference to procedure P2 Indirect pointer to elements of A1 Pointer to variable T1 Memory for variable X Working space for Procedure P0, the main program Reference to procedure P1 Pointer to elements of A1 Memory for variable T1 Memory for variable R1 Program Stack program P0; var R1, T1: real; A1: array[0:5,0:20] of real; procedure P1( X: real; var T: real; Y: array[0:5,0:20] of real;) procedure P2; var R2, T2: real; A2: array[0:5,0:20] of real; begin R2 := 5; T2 := 25; P1(R2, T2, A2); /* calls P1 */ end;(* P2 *) begin P2; /* calls P2 */ end; (* P1 *) begin P1(R1, T1, A1); /* calls P1 */ end;(* program *) Working space for Procedure P2 Activation record for P2 Pointer to the elements of A2 Memory for the variable T2 Memory for the variable R2 Activation record for P1 Activation record for P0

  27. COBOL (Common Business Oriented Language) • 1957 • Ésbàsicament un llenguatgeprocessador de dades, orientat a negoci. • Aportacions: • Dades i programes separats • Llenguatgeproper al natural (ops. en anglès) • Fàcilimplementació • Noms de dades 30 caràcters • Tipus registre • Autodocumentat • …

  28. Exemple de COBOL 000100 ID DIVISION. 000200 PROGRAM-ID. ACCEPT1. 000300 DATA DIVISION. 000400 WORKING-STORAGE SECTION. 000500 01 WS-FIRST-NUMBER PIC 9(3). 000600 01 WS-SECOND-NUMBER PIC 9(3). 000700 01 WS-TOTAL PIC ZZZ9. 000800* 000900 PROCEDURE DIVISION. 001000 0000-MAINLINE. 001100 DISPLAY 'ENTER A NUMBER: '. 001200 ACCEPT WS-FIRST-NUMBER. 001300* 001400 DISPLAY 'ANOTHER NUMBER: '. 001500 ACCEPT WS-SECOND-NUMBER. 001600* 001700 COMPUTE WS-TOTAL = WS-FIRST-NUMBER + WS-SECOND-NUMBER. 001800 DISPLAY 'THE TOTAL IS: ', WS-TOTAL. 001900 STOP RUN.

  29. Èxit de COBOL • Llenguatge simple • Moltarrelat en l’entornfinancer, e.g. Bancs i Caixes. • Entornsmoltgransonelscanvissónmolt costosos…. (ex. cas de l’any 2000) • Avui en dia… OO

  30. LISP (ListProcessingLanguage) • 1959, MIT, McCarthy (T. Aw.) • Basat en lambda-càlcul • Aportacions • Garbaggecollector • Tipatgedinàmic • Identificació de manipulació entre codi i dades • Pare de la programació funcional…

  31. Frases sobre LISP • “LISP being the most powerful and cleanest of languages, that's the language that the GNU project always prefer” -- Richard Stallman • “Anyone could learn Lisp in one day, except that if they already knew FORTRAN, it would take three days” -- Marvin Minsky

  32. Exemple LISP (defun list-nth (N L) "Return the N'th member of a list L." (if (null L) nil (if (zerop N) (first L) (list-nth (1- N) (rest L)) ) ) )

  33. PL/1 • 1964 • Desenvolupat per un comiteed’IBM • Millorar el rendimentdelsprogramadors de propòsit general (vs. Fortran i Cobol) • Eclèctic: • Pas de paràmetres, estructurat, registres, processament de llistes, excepcions, multi-tasca, punters, … • Però: massa gran i complexe

  34. Exemple de PL/1

  35. BASIC(Beginner’s All-purpose Symbolic Instruction Code) • 1966 • Característiques: • Variables no es declaren. Elsnomssónlletres simples. S’inicialitzen a 0. • Fàcil de fer servir i aprendre. • GOTO…

  36. Exemple de BASIC 10 REM THIS IS A BASIC PROGRAM FOR FINDING THE MEAN 20 DIM A(99) 30 INPUT N 40 FOR I = 1 TO N 50 INPUT A(I) 60 LET S = S + A(I) 70 NEXT I 80 LET M = S/N 90 LET K = 0 100 FOR I = 1 TO N 110 IF A(I) < M THEN 130 120 LET K = K + 1 130 NEXT I 140 PRINT “MEAN IS”, M 150 PRINT “NUMBER GREATER THAN MEAN IS”, K 160 STOP 170 END

  37. PASCAL • 71, Wirth (T. Aw.) • Llenguatgeeducatiu. • El mésusatdels 70. • Inclou “rut-time environment”: (Codi, dadesestàtiques, pila -> … <- Heap) • Permet definir noustipus a l’usuari. • Continua amb C, ADA, Java, …

  38. Frases de Wirth • “Power of a language lies in its regularity and not in its abundant of Features” • “Character of a language is defined by what it prevents more than by what it allows to be expressed”

  39. Exemple de Codi PASCAL (*Pascal program for finding the mean*) Program main (input, output); type intlist = array [1 . . 99] of integer; var a : intlist; i, n, number : integer; sum, mean : real; (*main program starts here *) begin number := 0; sum := 0; readln (n); for I := 1 to n do begin readln(a[i]); sum := sum + a[i] end; mean := sum/n; for I := 1 to n do if (a[i] > mean) then number := number + 1; writeln (‘the number over mean is: ‘, number) end.

  40. C • 72, Dennis Ritchie (T. Aw.) • Mésbaixnivell que PASCAL • Fortamentlligat a Unix • Descomposició de mòduls i linkatge • Sistema de tipusméspermissiu. • Clarcondicionador de C++ i JAVA (sintaxi)

  41. 80s • ADA: TAD, taskes, excepcions, paquets, … • Smalltalk: OOP (Simula 67), entorn de desenvolupament visual • Funcionals: ML, Miranda, … Fortamenttipats, lazyness, … primes =sieve[2..] sieve(p:x)= p : sieve[n | n <- x; n mod p ~=0] • Prolog: Primer en programaciólògica • C++: C + classes, i herència múltiple, Templates/genèrics, excepcions, … Té moltèxit.

  42. 90’s • JAVA: interfaces explítics, herència simple, garbaggecollection (s’amaga la gestió de memòria), … • Èxit per la conexióambl’explosió WWW • Compile once, runeverywhere • Màquina virtual • +lent que C++ • Sintaxi similar al C++ -> fàciltrànsit.

  43. 90’s • Scripting: Perl, python, AWK,… • senzills, dinàmics, estructures de tipusd’altnivell, no fortamenttipats, etc. • Haskell: fortamenttipat, lazy, pur, … • ConstraintProgramming: SICSTUS Prolog, …

  44. 2000’s • SCALA • Web, Concurrencia, Funcional (altnivell i modularitat) + JAVA • MiniZinc • Constraintprogrammingdeclaratiu • Model once solveeverywhere

  45. Quèvolemd’un bon llenguatge? • Claritat, simplictat i unicitat • Pocsconceptesfàcils de combinar (integritat) • Llegibilitat • Suport a l’abstracció • Tipus • Funcions • Facilitat de raonar-ne la correctesa i de testejar • Eficiència • Portabilitat • Entorna de desenvolupament • Documentació • …

  46. Biblio • Capítol: 1,2: “Conceptsin programminglanguages” • Capítol 1,2: “Lenguajes de programación: principios y prácticas” • Wikipedia (fotos i demés…)

More Related