Apunts Conceptes Bàsics (Introducció)

Anuncio
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
1.
Sistema de processament de la informació....................................................................... 2
2.
Concepte d’ algorisme ....................................................................................................... 3
3.
Concepte de programa : Dues definicions........................................................................ 4
4.
llenguatge de programació : Tipus de ll. De programació. ............................................. 5
5.
Traductors de llenguatge................................................................................................... 7
6.
Exemples de Llenguatges ................................................................................................ 10
7.
Microsoft.NET ................................................................................................................. 12
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 1 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
1.
Sistema de processament de la
informació
Un sistema de processament de informació ens transforma unes
dades d’ entrada en brut, en informació organitzada i útil per a l’
usuari.
En el nostre sistema hi distingim 3 element bàsics:
Entrades
Sortides
Procés
Entrades : Informació d’ entrada necessària per al nostre sistema, necessària
per al procés posterior de la informació.
Sortides : Resultats obtinguts del processament de la informació d’ entrada.
Procés : :Transformació de les entrades a sortides.
Exemples :
1.- SPI per a fer un truita a la francesa :
Entrades : Oli , sal, ou ,paella petita , forquilla, 2 plats, llumins , càmping gas.
Sortides : La truita (poc feta a ser possible)
Procés : batre l ‘ou en un plat amb la forquilla, afegir-hi la sal, encendre el
càmping gas i posar-hi la paella amb un mica d’ oli . Esperar que l’ oli sigui
calent i desprès posar-hi l’ ou batut. Ajudar-se de la forquilla per donar la forma
a la truita i quan agafi consistència posar-la en 1 plat net. Bona cuina !
2.- SPI per calcular l’ àrea d’ un triangle : Tindrem identificades
Entrades : Base i alçada
Sortides : Àrea
Procés : Realitzar el càlcul
Àrea = Base * Alçada / 2
3.- SPI per a ordenar 1000 nombres :
Entrades : 1000 nombres desordenats procedents de teclat/ fitxer
Sortides : 1000 nombres ordenats visualitzats en pantalla
Procés : Algorisme d’ ordenació
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 2 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
2.
Concepte d’ algorisme
Bàsicament durant tot el curs ens dedicarem a resoldre problemes
mitjançant la elaboració acurada de programes. Per arribar a
escriure un bons programes necessitem seguir una metodologia de
forma rigorosa i sistemàtica : Aquesta metodologia l’ anomenem
metodologia de la programació. La metodologia de la programació
es basa en la elaboració d’ algorismes per resoldre problemes. El
disseny d’ aquests algorismes serà l’ objectiu principal del nostre
curs. Podrem afirmar que a partir del correcte disseny del nostre
algorisme obtindrem de forma quasi bé immediata un programa que
resolgui el problema plantejat.
Com podríem definir un algorisme ? Podem dir de forma simple que
un algorisme és un mètode per resoldre un problema.
PROBLEMA
DISSENY
DE
ALGORISME
L’
PROGRAMA
Per tant, per a resoldre un problema concret , caldrà
0.- Fase d’ anàlisis del problema.
1.- Fase de disseny :Dissenyar un algorisme que descriu la
seqüència ordenada de passes a realitzar (Sense ambigüitats) que
ens conduiran a la solució d’ un problema donat.
2.- Fase de codificació :Expressar l’ algorisme en un ll. de
programació adient.
3.- Fase d’ Execució i verificació del programa .
La definició d’ algorisme anterior resulta incompleta si no adjuntem
les característiques que ha de complir un algorisme . Aquestes són :
a)Ha de ser precís i i indicar l´ordre de realització de cada pas
b)Ha d´estar definit de forma única : Si el seguim 2 vegades, hem
d´obtenir sempre el mateix resultat.
c)Ha de ser finit : Num. Finit de passes per aconseguir l´objectiu
A més, la definició d’ un algorisme implicarà definir 3 parts : Procés,
entrades i sortides.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 3 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
3. Concepte de programa : Dues definicions.
En l’ apartat anterior hem comentat que per a solventar un
determinat problema, cal un algorisme que el resolgui. Qui processa
l’ algorisme ha de ser capaç de
comprendre les instruccions que conté l’ algorisme
Dur a terme la seva execució
Doncs bé, quan el processador de l’ algorisme és un computadora, l’
algorisme cal expressar-lo en un format que anomenem programa.
Aquest programa s’ escriu en un determinat llenguatge de
programació, , per tant definim llenguatge de programació com els
llenguatges utilitzats per a escriure els programes.
Per tant ara ja sabem que :
Els programes són la implementació d’ un algorisme en un llenguatge de
programació.
Que un ll. de programació és una eina que s’ usa per escriure (crear) els
nostres programes).
Qui escriu aquest programes són els programadors.
Donarem dues definicions de programa :
D1: Seqüència de passos (accions) d’ un algorisme, anomenades
habitualment instruccions que ens permeten resoldre un problema
donat mitjançant el computador. L elaboració d’ un programa cal un
coneixement del repertori d’ instruccions del llenguatge. Aquestes
instruccions es classifiques en :
a)
Instruccions d’ Entrada / Sortida : Necessàries per alimentar el procés
amb entrades i per mostrar els resultats (sortides)
b)
Instruccions aritmètic lògiques : Executaran operacions aritmètiques
(suma, resta, potenciació ....) i lògiques (and, or, not)
c)
Instruccions selectives : Ens permetran executar instruccions en funció
de determinades condicions.
d)
Instruccions repetitives : Permeten la execució d’ un mateix conjunt d’
instruccions un nombre determinat de vegades repetidament .
D2: Definició de Niklaus Wirth
Algoritmos + Estructuras de datos = Programas.
Ens aquesta definició hem de parar atenció en que per tenir un programa hem d’
elaborar l’ algorisme adequat i pensar quines dades manipula el nostre algorisme i quina
estructura tenen les nostres dades.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 4 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
4.
llenguatge de programació : Tipus
de ll. De programació.
Els éssers humans ens expressem en un llenguatge natural ,
intel—ligible pels humans . Quin és el llenguatge que entén el
computador : El llenguatge màquina o codi màquina . És l’ únic
llenguatge que entén i que per tant pot executar . El llenguatge
màquina és un llenguatge que es caracteritza per
És l’ únic que entén el computador
És de molt difícil interpretació i manipulació per part de l’ home
S’ expressa mitjançant llargues seqüències binàries (0’ s I 1’s )
És particular i depèn de cada tipus de màquina concret (Portabilitat nul·la).
Donat l’ inconvenient de treballar amb ll. màquina donada la
dificultat que això comporta per al programador, existeixen
programes, anomenats ll. d’ alt nivell que proporcionen una sintaxi
molt propera a la sintaxi humana, de forma que així facilitem la
tasca al programador que decideix programar amb ll. d’ alt nivell.
Les característiques d’ aquests llenguatges són :
Sintaxi similar a la sintaxi del ll. natural .
Facilitat de creació de programes amb aquest tipus de llenguatge.
Portabilitat : Els llenguatges d’ alt nivell s’ escriuen en un llenguatge, que és
independent de la màquina .
El manteniment del programes, modificacions ... són molt més tractables que en
el cas de ll. màquina.
No poden aprofitar els recursos de la màquina , ja que són independents de la
mateixa.
Alguns exemples de ll. d’ alt nivell : Pascal, Java, Basic, Cobol ,
Visual Basic ...
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 5 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
Llenguatges de baix nivell : Són aquells que són més fàcils d’
utilitzar que el ll. màquina , tot i que continuen depenent de la
màquina en concret. El ll. de baix nivell per excel—lència és el
llenguatge ensamblador, que és quasi bé el mateix que el ll. .
màquina, però canviant seqüències binàries per mnemotècnics que
es corresponen amb instruccions :
Ex: ADD M,N,P
Equivalent en C. Màquina per exemple a
0101 1100 1111 0001
En qualsevol cas, tot i que la escriptura de programes en ll. de baix
nivell és més fàcil que en ll. màquina, encara és molt distant de la
facilitat d’ escriptura de programes en ll. d’ alt nivell.
Ll. de nig nivell : Són aquells que intentant usar sintaxi
corresponent a ll. d’ alt nivell, poden també accedir als recursos de
la màquina, com un ll. de baix nivell.
Ex : Llenguatge C.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 6 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
5.
Traductors de llenguatge
Donats els diferents tipus de llenguatges de programació ens pot
surgir la qüestió següent : Si nosaltres programem en ll. d’ alt nivell,
donat que és el llenguatge més proper al ll. humà i el computador
treballa amb ll. màquina únicament, com podem executar els
nostres programes escrits en ll. d’ alt nivell ?
Doncs bé, la resposta és que han d’ haver uns programes que facin
un procés de traducció de ll. d’ alt nivell a ll. màquina, que
anomenem traductors de llenguatge.
Tipus de traductors :
a) Compiladors: A partir del programa escrit en llenguatge d’ alt nivell ( programa
font o codi font) , un compilador fa el seguent :
a. Anàlisi sintàctic en busca d’ errors en temps de compilació . Si existeixen
errors hem de rectificar-los i tornar a compilar. Si no hi ha errors s’ obté un
programa intermig anomenat programa objecte.i es passa al punt b) . El
programa objecte ja és codi maquina consistent en la traducció de totes
les instruccions del nostre programa excepte les llibreries .
b. Muntatge (link) del programa objecte per obtenir l’ executable: En aquest
procés s’ incorporen al nostre programa les llibreries del propi llenguatge
de programació o be llibreries fetes per nosaltres previament que les
reutilitzem. Un cop s’ han incorporat les llibreries al programa objecte s’
obté el resultat final : el programa executable en codi màquina.
c. Execució del fitxer executable: Aquest programa executable físicament és
un fitxer (p. Ex en MSDOS és un fitxer amb un nom i una extensió .EXE,
p. Exemple CALCULS.EXE) . Aquest fitxer forma el nostre programa
executable, i es pot executar desde el sistema operatiu independentment
de l’ entorn de programació al que havia estat creat.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 7 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
Programa Font
(Ll. Alt nivell)
COMPILADOR
Correcció dels errors
Si
Existiesen
errors
sintàctics ?
No
Programa Objecte
LINKADOR
Programa Executable
Execució desde el sistema operatiu
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 8 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
b) Intèrprets : També a partir del nostre programa escrit en ll. d’ alt nivell ens
proposem executar el codi màquina que s’ obté a partir d’ ell, però desde un punt
de vista molt diferent: Es preten amb un intèrpret el fet de dur a terme la tasca de
traducció d’ un programa en ll. d’ alt nivell linia a linia , de forma que per a cada
linia de codi font, un intèrpret analitza sintàcticament la linia, si hi ha errors els
reporta i s’ atura a la espera de la coerció dels mateixos, i si no hi ha errors
tradueix a codi màquina aquella linia i la executa. Aquest procés es repeteix per a
cada linia de programa.
L’ algorisme que seguéis un intèrpret a grans trets seria :
a) Hi ha 1 linia de codi font per procesar ?
b) Si hi ha linies pendents, aleshores agafar una linia i passar a d)
c) Si no hi ha linies pendents fi d’ algorisme
d) Analitzem sintàcticament la linia
e) Si hi ha errors els corregim i tornem a d)
f)
Si no hi ha errors en la linia traduim a codi màquina la linia i la
executem
g) Tornem al punt a)
h)
Comparativa compilador / intèrpret :
a) Un compilador trata el codi fornt en conjunt, obtenint un resultat final consistent en
un programa executable en un fitxer. Un intèrpret tracta el codi font linia a linia
arribant-la a executar si aquesta no conté errades sintàctiques (un compilador no
executa no mes obté l’ executable, i despres l’ usuari final decideix quan l’ executa
desde el sistema operatiu., un intèrpret si executa cada linia de codi fornt que
precessa).
b) Com a conseqüència de a) la execució d’ un executable generat amb un compilador
sempre serà més rápida que la del mateix programa interpretat, la que l’ executable
ja està traduit (amb el que tot això comporta) i la interpretació tradueix linia a linia el
codi fornt cada cop que executem.
c) També com a conseqüència de a) , el compilador genera un executable i apartir d’
aquí no es necesita l’ entorn de programació per utilitzar el pr. Executable. En canvi
en el cas de l’ intèrpret si que cal l’ entor per tal de procesar les intruccions cada cop
que calgui executar el programa.
d) El treball amb codi font interpretat és portable entre diferents maquines en canvi un
executable és específic de la plataforma en la que treballem.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 9 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
6.
Exemples de Llenguatges
BASIC : Llenguatge en el seu origen interpretat.
Visual Basic : Interpretat quan desenvolupem , però es pot generar executables quan el
programa ja és estable.
C: Llenguatge compilat, tot i que alguns entorns admeten interpretació (Borland C)
Cas Especial : JAVA
El cas del Java el considerem una mica especial , ja que per arribar a executar una aplicació
java , passem per les dues fases.
Per explicar això cal remuntar-nos als llenguatges d’ alt nivell de tercera generació que
lluitaven per arribar a standaritzar-se amb l’ objectiu d’ aconseguir portabilitat entre diferents
plataformes hardware. Ara bé, la compatibilitat esmentada només era a nivell de codi font (ll.
alt nivell). Java va més enlla i aconsegueix compatibilitat a nivell d’ executable (codi
màquina) .
Com ?
Procediment per arribar a executar un programa fet amb java a partir del codi font:
Partim del codi font en Java (calculs.java)
Compilem el .java i obtenim el nostre executable. Aquest executable té extensió .class
Aquest executable és intelligible per un tipus de màquina molt concret que s’ anomena
JAVA VIRTUAL MACHINE (JVM) . Aquesta màquina és genèricai entent un codi màquina
molt concret també que s’ anomena bytecodes , és a dir el executable .class està format
per bytecodes. La clau és generar emuladors software per sobre del S.O. , per cada
plataforma hardware del mercat, és a dir implementar la JVM per a cada plataforma. La
JVM en aquest cas si que es depenent de la platforma. En realitat la JVM actua com a
intèrpret dels bytecodes que li arriben d’ un executable java.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 10 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 11 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
7.
Microsoft.NET
Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado
trabajando durante los últimos años con el objetivo de obtener una plataforma sencilla y
potente para distribuir el software en forma de servicios que puedan ser suministrados
remotamente y que puedan comunicarse y combinarse unos con otros de manera
totalmente independiente de la plataforma, lenguaje de programación y modelo de
componentes con los que hayan sido desarrollados. Ésta es la llamada plataforma .NET,
y a los servicios antes comentados se les denomina servicios Web.
Para crear aplicaciones para la plataforma .NET, tanto servicios Web como aplicaciones
tradicionales (aplicaciones de consola, aplicaciones de ventanas, servicios de Windows
NT, etc.), Microsoft ha publicado el denominado kit de desarrollo de software conocido
como .NET Framework SDK, que incluye las herramientas necesarias tanto para su
desarrollo como para su distribución y ejecución y Visual Studio.NET, que permite
hacer todo la anterior desde una interfaz visual basada en ventanas. Ambas
herramientas puede descargarse gratuitamente desde
http://www.msdn.microsoft.com/net, aunque la última sólo está disponible para
subscriptores MSDN Universal (los no subscriptores pueden pedirlo desde dicha dirección
y se les enviará gratis por correo ordinario)
El concepto de Microsoft.NET también incluye al conjunto de nuevas aplicaciones que
Microsoft y terceros han (o están) desarrollando para ser utilizadas en la plataforma
.NET. Entre ellas podemos destacar aplicaciones desarrolladas por Microsoft tales como
Windows.NET, Hailstorm, Visual Studio.NET, MSN.NET, Office.NET, y los nuevos
servidores para empresas de Microsoft (SQL Server.NET, Exchange.NET, etc.)
Common Language Runtime (CLR)
El Common Language Runtime (CLR) es el núcleo de la plataforma .NET. Es el motor
encargado de gestionar la ejecución de las aplicaciones para ella desarrolladas y a las
que ofrece numerosos servicios que simplifican su desarrollo y favorecen su fiabilidad y
seguridad. Las principales características y servicios que ofrece el CLR son:
•
Modelo de programación consistente: A todos los servicios y facilidades ofrecidos
por el CLR se accede de la misma forma: a través de un modelo de programación
orientado a objetos. Esto es una diferencia importante respecto al modo de acceso a
los servicios ofrecidos por los algunos sistemas operativos actuales (por ejemplo, los
de la familia Windows), en los que a algunos servicios se les accede a través de
llamadas a funciones globales definidas en DLLs y a otros a través de objetos
(objetos COM en el caso de la familia Windows)
•
Modelo de programación sencillo: Con el CLR desaparecen muchos elementos
complejos incluidos en los sistemas operativos actuales (registro de Windows,
GUIDs, HRESULTS, IUnknown, etc.) El CLR no es que abstraiga al programador de
estos conceptos, sino que son conceptos que no existen en la plataforma .NET
•
Eliminación del "infierno de las DLLs": En la plataforma .NET desaparece el
problema conocido como "infierno de las DLLs" que se da en los sistemas operativos
actuales de la familia Windows, problema que consiste en que al sustituirse
versiones viejas de DLLs compartidas por versiones nuevas puede que aplicaciones
que fueron diseñadas para ser ejecutadas usando las viejas dejen de funcionar si las
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 12 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
nuevas no son 100% compatibles con las anteriores. En la plataforma .NET las
versiones nuevas de las DLLs pueden coexistir con las viejas, de modo que las
aplicaciones diseñadas para ejecutarse usando las viejas podrán seguir usándolas
tras instalación de las nuevas. Esto, obviamente, simplifica mucho la instalación y
desinstalación de software.
•
Ejecución multiplataforma: El CLR actúa como una máquina virtual, encargándose
de ejecutar las aplicaciones diseñadas para la plataforma .NET. Es decir, cualquier
plataforma para la que exista una versión del CLR podrá ejecutar cualquier
aplicación .NET. Microsoft ha desarrollado versiones del CLR para la mayoría de las
versiones de Windows: Windows 95, Windows 98, Windows ME, Windows NT 4.0,
Windows 2000, Windows XP y Windows CE (que puede ser usado en CPUs que no
sean de la familia x86) Por otro lado Microsoft ha firmado un acuerdo con Corel para
portar el CLR a Linux y también hay terceros que están desarrollando de manera
independiente versiones de libre distribución del CLR para Linux. Asímismo, dado
que la arquitectura del CLR está totalmente abierta, es posible que en el futuro se
diseñen versiones del mismo para otros sistemas operativos.
•
Integración de lenguajes: Desde cualquier lenguaje para el que exista un
compilador que genere código para la plataforma .NET es posible utilizar código
generado para la misma usando cualquier otro lenguaje tal y como si de código
escrito usando el primero se tratase. Microsoft ha desarrollado un compilador de C#
que genera código de este tipo, así como versiones de sus compiladores de Visual
Basic (Visual Basic.NET) y C++ (C++ con extensiones gestionadas) que también lo
generan y una versión del intérprete de JScript (JScript.NET) que puede interpretarlo.
La integración de lenguajes esta que es posible escribir una clase en C# que herede
de otra escrita en Visual Basic.NET que, a su vez, herede de otra escrita en C++ con
extensiones gestionadas.
•
Gestión de memoria: El CLR incluye un recolector de basura que evita que el
programador tenga que tener en cuenta cuándo ha de destruir los objetos que dejen
de serle útiles. Este recolector es una aplicación que se activa cuando se quiere
crear algún objeto nuevo y se detecta que no queda memoria libre para hacerlo, caso
en que el recolector recorre la memoria dinámica asociada a la aplicación, detecta
qué objetos hay en ella que no puedan ser accedidos por el código de la aplicación, y
los elimina para limpiar la memoria de "objetos basura" y permitir la creación de otros
nuevos. Gracias a este recolector se evitan errores de programación muy comunes
como intentos de borrado de objetos ya borrados, agotamiento de memoria por
olvido de eliminación de objetos inútiles o solicitud de acceso a miembros de objetos
ya destruidos.
•
Seguridad de tipos: El CLR facilita la detección de errores de programación difíciles
de localizar comprobando que toda conversión de tipos que se realice durante la
ejecución de una aplicación .NET se haga de modo que los tipos origen y destino
sean compatibles.
•
Aislamiento de procesos: El CLR asegura que desde código perteneciente a un
determinado proceso no se pueda acceder a código o datos pertenecientes a otro, lo
que evita errores de programación muy frecuentes e impide que unos procesos
puedan atacar a otros. Esto se consigue gracias al sistema de seguridad de tipos
antes comentado, pues evita que se pueda convertir un objeto a un tipo de mayor
tamaño que el suyo propio, ya que al tratarlo como un objeto de mayor tamaño
podría accederse a espacios en memoria ajenos a él que podrían pertenecer a otro
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 13 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
proceso. También se consigue gracias a que no se permite acceder a posiciones
arbitrarias de memoria.
•
Tratamiento de excepciones: En el CLR todo los errores que se puedan producir
durante la ejecución de una aplicación se propagan de igual manera: mediante
excepciones. Esto es muy diferente a como se venía haciendo en los sistemas
Windows hasta la aparición de la plataforma .NET, donde ciertos errores se
transmitían mediante códigos de error en formato Win32, otros mediante HRESULTs
y otros mediante excepciones.
El CLR permite que excepciones lanzadas desde código para .NET escrito en un
cierto lenguaje se puedan capturar en código escrito usando otro lenguaje, e
incluye mecanismos de depuración que pueden saltar desde código escrito para
.NET en un determinado lenguaje a código escrito en cualquier otro. Por ejemplo,
se puede recorrer la pila de llamadas de una excepción aunque ésta incluya
métodos definidos en otros módulos usando otros lenguajes.
•
Soporte multihilo: El CLR es capaz de trabajar con aplicaciones divididas en
múltiples hilos de ejecución que pueden ir evolucionando por separado en paralelo o
intercalándose, según el número de procesadores de la máquina sobre la que se
ejecuten. Las aplicaciones pueden lanzar nuevos hilos, destruirlos, suspenderlos por
un tiempo o hasta que les llegue una notificación, enviarles notificaciones,
sincronizarlos, etc.
Como se puede deducir de las características comentadas, el CLR lo que hace es
gestionar la ejecución de las aplicaciones diseñadas para la plataforma .NET. Por esta
razón, al código de estas aplicaciones se le suele llamar código gestionado, y al código
no escrito para ser ejecutado directamente en la plataforma .NET se le suele llamar
código no gestionado.
Microsoft Intermediate Language (MSIL)
Todos los compiladores que generan código para la plataforma .NET no generan código
máquina para CPUs x86 ni para ningún otro tipo de CPU concreta, sino que generan
código escrito en el lenguaje intermedio conocido como Microsoft Intermediate Lenguage
(MSIL) El CLR da a las aplicaciones las sensación de que se están ejecutando sobre una
máquina virtual, y precisamente MSIL es el código máquina de esa máquina virtual. Es
decir, MSIL es el único código que es capaz de interpretar el CLR, y por tanto cuando se
dice que un compilador genera código para la plataforma .NET lo que se está diciendo es
que genera MSIL.
MSIL ha sido creado por Microsoft tras consultar a numerosos especialistas en la
escritura de compiladores y lenguajes tanto del mundo académico como empresarial. Es
un lenguaje de un nivel de abstracción mucho más alto que el de la mayoría de los
códigos máquina de las CPUs existentes, e incluye instrucciones que permiten trabajar
directamente con objetos (crearlos, destruirlos, inicializarlos, llamar a métodos virtuales,
etc.), tablas y excepciones (lanzarlas, capturarlas y tratarlas)
Ya se comentó que el compilador de C# compila directamente el código fuente a MSIL,
que Microsoft ha desarrollado nuevas versiones de sus lenguajes Visual Basic (Visual
Basic.NET) y C++ (C++ con extensiones gestionadas) cuyos compiladores generan MSIL,
y que ha desarrollado un intérprete de JScript (JScript.NET) que genera código MSIL.
Pues bien, también hay numerosos terceros que han anunciado estar realizando
versiones para la plataforma .NET de otros lenguajes como APL, CAML, Cobol, Eiffel,
Fortran, Haskell, Java (J#), Mercury, ML, Mondrian, Oberon, Oz, Pascal, Perl, Python,
RPG, Scheme y Smalltalk.
La principal ventaja del MSIL es que facilita la ejecución multiplataforma y la integración
entre lenguajes al ser independiente de la CPU y proporcionar un formato común para el
código máquina generado por todos los compiladores que generen código para .NET. Sin
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 14 de 15
Versió: 1.1
Data: 24/9/2009
DAI 1er. C5-PEM
UNITAT DIDACTICA 1: CONCEPTES BASICS (AP5-1-01)
embargo, dado que las CPUs no pueden ejecutar directamente MSIL, antes de ejecutarlo
habrá que convertirlo al código nativo de la CPU sobre la que se vaya a ejecutar. De esto
se encarga un componente del CLR conocido como compilador JIT (Just-In-Time) o jitter
que va convirtiendo dinámicamente el código MSIL a ejecutar en código nativo según sea
necesario.
Arxiu: UD1-NA1-Intro
Elaborat per: Ferran Chic
Pàgina 15 de 15
Versió: 1.1
Data: 24/9/2009
Descargar