Tipus i sistemes de tipus en programació
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en catalán con un tamaño de 5,99 KB
Tipus i sistemes de tipus
Llenguatges tipificats les variables tenen un tipus associat (C, C++, Haskell, Java)
Llenguatges no tipificats: no restringeixen el rang de valors de les variants (Lisp, Prolog)
Tipificació explícita: els tipus formen part de la sintaxi
Tipificació implícita los tipos no forman parte de la sintaxi.
Polimorfisme
Ad-Hoc
Coerció conversió Int->Double
Sobrecàrrega distintes funcions, mateix nom, es realitza canviant els tipus de paràmetres
Universal
Inclusió (Herència) mecanisme més utilitzat per la reutilització i extensibilitat, però té inconvenients (el fill pot ser inconscient del que faça el pare, canvis en pare tenen efectes en fill)
Paramètric (Genericitat) defineix una estructura comú a un nº infinit de tipus
Estàndards: No són inamovibles sinó que es revisen cada cert temps. Si tarda molt a definir-se dificulta la portabilitat, si tarda poc, l'evolució.
Classe abstracta
és la que no implementa algun dels seus mètodes. Els mètodes per als que no aporten una implementació són declarats abstractes. Una classe abstracta no pot instanciarse. Si una classe té un mètode abstract és obligatori que la classe siga abstracta. Totes les subclasses que hereden d'una classe abstracta tindran que redefinir els mètodes abstractes donant-los una implementació excepte que la classe es declare abstracta.
Interfícies
és pareguda a una classe abstracta pura on tots els mètodes són abstractes i públics (sense necessitat de declarar-los com a tal) i els seus atributs són estàtics i finals (constants). Una interfície no implementa ningún dels mètodes que declara. En Java, una classe pot implementar varies interfícies. Serveix per a dissimular certa herència múltiple. Els tipus abstractes de dades, es defineixen en Java com interfícies. Una interfície no pot implementar una interfície.
Reflexió -> metaprogramació
permet que un programa en execució observe (introspectivament) i modifique la seua estructura i comportament de forma dinàmica, durant la seua execució. Lisp ho va introduir, està present en alguns llenguatges de Script. Mal usat pot afectar el rendiment, seguretat i expondre detalls compromesos del còdig en cert context. Es pot descompondre en dos parts Introspecció capacitat d'autoexaminarse Intercessió capacitat de modificat l'estat/significat del programa. Els llenguatges es caracteritzen en que les instruccions són tractades com valors d'uin tipus de dades específiques.
Programació com ofici
s'estudia un paradigma únic, amb un únic llenguatge, és contraproduent.
Com rama de matemàtiques: o s'estudia un llenguatge ideal o resulta massa teòric.
Programació en terme de conceptes: estudiar un conjunt de conceptes semàntics i estructures de implementació en termes dels quals es descriuen de forma natural diferents llenguatges i les seues implementacions.
Paradigma Imperatiu
estableix el com procedir (algoritme). El concepte bàsic és l'estat de la màquina, el qual es defineix per els valors de les variables involucrades i que s'almacenen en la memòria. Les instruccions solen ser seqüencials i el programa consisteix en construir la seqüència d'estats de la màquina que condueix a la solució. Aquest model està molt vinculat a l'arquitectura de la màquina convencional (Von Neuman). Programa estructurat en blocs i mòduls. Eficient, difícil de modificar i verificar, amb efectes laterals.
Paradigma declaratiu
Programa = Lògica (què) + Control (Com). El programador es centra en aspectes lògics de la solució i deixa els aspectes de control al sistema. Fàcil de verificar i modificar, concís i clar. Dos tipus: Funcional basat en el n-èssim càlcul. Definició d'estructures de dades i funcions que manipulen les estructures mitjançant equacions. Poliformisme, ordre superior Lògic basat en la lògica de primer ordre. Definició de relacions mitjançant regles. Variables lògiques, indeterminisme.
Programació imperativa
transició d'un algoritme, instruccions ordres a la màquina, model de computació màquina d'estats, variables referències a memòries.
Característiques posa l'èmfasi en com resoldre el problema, s'executa en l'ordre que estan escrits, ordre seqüencial. Assignació, efectes laterals que oscureixen el còdig. El control és responsabilitat del programador. Complexa, difícil de paral·lelitzar, major velocitat d'execució.
Programació declarativa
lògica com llenguatge de programació, programa especificació d'un problema, instrucions fórmules lògiques, model de computació màquina de interferències, variables lògiques.
Caract expressa que és la solució a un problema. L'ordre de les sentències i expressions no afecten a la semàntica del programa. Una expressió denota un valor, transparència referencial. Nivell més alt de programació, semàntica més sencilla, major potència expressiva, menor tamany del còdig, major productivitat, millor manteniment. Eficiència comparable a la de llenguatges com Java. La curva d'aprenentatge és més lenta quan s'aprén en un altre paradigma. les impureses són difícils de manejar.