Está en la página 1de 21

PROGRAMACION C# - .

NET – 14-03-2023

MARCELO DIAZ: Profe teoría

JUAN FERNANDEO DESAGES: Auxiliar

1
LENGUAJE INTERPRETADO: tiene un intérprete, no se compila el código, el intérprete ejecuta el código y devuelve el
resultado (Ej. una página web) no son dependientes de una máquina destino, (cuando nos referimos a una maquina
destino, nos referimos a una arquitectura) por que una aplicación en PHP puede correr en LINUX, WINDOWS o en
cualquier arquitectura, no así los lenguajes compilados.

El intérprete ejecuta 1 por 1 las instrucciones (la secuencia de instrucciones) y la convierte a código máquina y después
ese código se termina ejecutando, “on the fly” (significa en el momento), se compila y se ejecuta en el momento. El
lenguaje cuando se interpreta lo traduce internamente al código objeto y en el momento se ejecuta.

Tenemos el LENGUAJE (php, python, javascript, etc), se interpreta READY TO RUN listo para arrancar, se interpreta lo
traduce internamente a una máquina virtual VIRTUAL MACHINE, y genera el código maquina MACHIN CODE y muestra.

2
Cuando nosotros ejecutamos JAVASCRIPT en el CRHOME internamente eso tiene un intérprete este interprete se llama
V8 que es el MOTOR, lo que hace es que lo pasa por un PARSER, ese parser es quien lo analiza AST, ese parser ve si puede
optimizar el código OPTIMIZED MACHINE CODE, y termina generando el BYTECODE que es ARCHIVO BINARIO que termina
ejecutando el motor.

Lo mismo sucede en PHP que es un lenguaje interpretado, el cliente hace un pedido al servidor, busca el código fuente
el PHP o los archivos PHP, el intérprete de PHP (one server o servidor instalado), busca información en la base de datos,
busca información en otros archivos, puede que el contenido se encuentre en varios archivos, una vez que los interpreta
genera el HTML, lo envía al SERVIDOR y el servidor lo muestra en la página, todo este circuito es el que hace el intérprete
cuando solicitamos una página que está en PHP. En el caso de los lenguajes interpretados no existe la ejecución de un
“.exe”.

3
LENGUAJES COMPILADOS: en un lenguaje compilado, cuando uno compila el programa se traduce en un archivo binario
(código binario) para luego ejecutarse en la maquina destino (donde queremos que se ejecute la aplicación), ese archivo
binario (o código objeto) no lo podemos abrir (no se puede leer), una vez que se compila no se puede volver a reciclar si
nosotros no tenemos el código fuente. Vamos a necesitar el código fuente para realizar todas las modificaciones que
queramos, y luego debemos volver a compilarlo. Implica 2 pasos primero compilarlo y luego ejecutarlo. De esta rama
vienen C, C++, C#, COBOL, etc.

El programador realiza el código fuente y luego distribuye el “.exe” y si queremos modificar algo debemos modificar el
código fuente luego compilarlo en un nuevo ejecutable “.exe” y distribuirlo.

Los lenguajes compilado dependerán de la estructura de la maquina destino (Si tiene Linux, Si tiene Windows, Si tiene
IOS, etc).

Entonces en los lenguajes compilados tenemos 1 paso menos, primero se compila Machine Code y luego se Ejecuta
Ready to run, listo para correr o ejecutarse.

4
Veamos un ejemplo con el compilador de C que se llama GCC. Este es el circuito hasta que finaliza ejecutándose el
programa. Primero tenemos un archivo en C un programa, pasa por un preprocesador eso termina ejecutando un archivo
“.i “ luego se termina compilando y pasa a ser un archivo en Assembly code, (código maquina), luego el ensablador termina
generando un archivo objeto code “.obj”, se linkea (significa que al archivo “.obj” se le podrá adjuntar o anexar otros
archivos Ej. una librería externa que necesitaremos para hacer otra funcionalidad, eso se realiza en ese paso Linker) y se
termina generando el ejecutable “.exe” el cual es el archivo final que tiene todos los archivos necesarios (el mío y todos
los del grupo de trabajo).

El LENGUAJE COMPILADO ES PRIVADO: porque tenemos el código fuente y una vez que nosotros lo compilamos en un
ejecutable .exe, el cliente solo podrá ejecutarlo pero nunca podrá ver el código.

El LENGUAJE INTERPRETADO ES PUBLICO: si nosotros hacemos un archivo PHP para ser ejecutado, el mismo se sube a un
servido: hosting (directamente el código fuente y no un ejecutable .exe como en el caso del lenguaje compilado.)

5
El LENGUAJE COMPILADO DEPENDED DE LA ESTRUCTURA DESTINO / MAQUINA DESTINO: una vez que se compila en un
ejecutable, esta ejecución estará limitada por la arquitectura de la maquina destino, si lo compilamos para WINDOWS no
va a poder ejecutarse en IOS o LINUX.

El LENGUAJE INTERPRETADO SE INTERPRETAN EN LA MAQUINA DESTINO: quiere decir que al no compilarse el código
fuente directamente se interpreta en la maquina destino independientemente de la arquitectura de la maquina destino.

Los LENGUAJES COMPILADOS SE PUEDEN OPTIMIZAR PARA UNA ESTRUCTURA ESPECÍFICA: significa que para lograr eso
se debe limitar lo máximo posible a la estructura de la maquina destino para lograr la máxima eficiencia y optimización
de esa estructura. (Ej. Videos juegos)

Los LENGUAJES INTERPRETADOS BUSCAN PODER EJECUTARSE EN LA MAYOR CANTIDAD DE ESTRUCTURAS POSIBLES:
no busca limitarse a una estructura para ser más eficiente sino que por el contrario buscan abarcar o ser interpretados
por la máxima cantidad de estructuras, es un paradigma totalmente diferente.

Los LENGUAJES COMPILADOS NO PERMITEN SER COMPILADOS SI EXISTEN ERRORES: significa que si el código fuente
contiene errores no podremos compilarlo en un ejecutable si no se solucionan los mismos previamente. Si tenemos
errores el compilador no compila, tira error.

Los LENGUAJES INTERPRETADOS LOS ERRORES NO SE CONOCEN HASTA QUE NO SE EJECUTA: significa que los errores
del código no serán conocidos hasta que no ejecutemos el código, por lo tanto la depuración de errores ocurre en tiempo
de ejecución por que hasta ese momento no conocemos los errores.

6
Un LENGUAJE COMPILADO NO ES MULTIPLATAFORMA: en general no es multiplataforma debido a la limitación a la
estructura de la maquina destino.

Un LENGUAJE INTERPRETADO ES MULTIPLATAFORMA: ya que se ejecuta en el servidor y se puede ver en cualquier


sistema operativo o es el objetivo del paradigma. Ej. una página web se podrá ver desde Linux, Windows, ios, etc. esto es
porque la ejecución no se limita a una maquina destino sino que se ejecuta en un servidor.

También tenemos un concepto que son los LENGUAJES HIBIRODOS:

LENGUAJES HIBIRDOS son un compromiso entre los lenguajes compilados e interpretados Puros, esto nace en principio
con el lenguaje JAVA (La máquina virtual de JAVA: es la que ejecuta los bytecode: binarios), el código se podría tirar en
diferentes estructuras y la maquina virtual de JAVA los levanta sin problemas.

Con este concepto nace .NET que tiene una especie de maquina virtual que permite cargar compilados de diferentes
lenguajes, ejemplo una DLL - librelibreríaa en Visual Básica, nosotros la podremos utilizar en C# y esta máquina virtual de
.NET cuando se ejecuta termina generando código para que se puedan utilizar las 2.

7
JIT COMPILACION: es just in time (se hace en el momento), tenemos los bytecode: binarios que se compilaron y luego
se interpretan por esta máquina virtual en un código máquina. Los Framework .NET implementa este sistema de
compilación en el momento (just in time: justo a tiempo).

Como trabaja el compilador, nosotros vamos a tener Código en C# que tiene su propio compilador, código en visual basic
que tiene su propio compilador, javascript también tiene su propio compilador, F# (lenguaje que ya no se usa, está dentro
del framework .net) también tiene su propio compilador.

Cada uno de esos genera un código binario bytecode, cuando se compila se traduce a un lenguaje intermedio, que luego
terminara generando los .exe (son los ejecutables) o . dll (son las librerías), pero esto se termina generando en un
lenguaje intermedio de Microsoft. Luego la MAQUINA VIRTUAL EN TIEMPO DE EJECUCION (JIT), lo traduce en la maquina
nativa y lo ejecuta, es un paso intermedio que tiene, que copia algunas cosas del concepto de JAVA, quien hacia este
mismo proceso para diferentes arquitecturas de la maquina destino, la diferencia que JAVA tiene 1 solo lenguaje, y en
8
este caso de .NET tiene muchos lenguajes. Tiene un concepto similar a JAVA pero termina siendo diferente. Esto fue
pensado para arquitecturas WINDOWS principalmente / UNIX.

9
10
.NET es la plataforma de desarrolladores GRATUITA, es MULTIPLATAFORMA y de CODIGO ABIERTO para diferentes tipos
de aplicaciones. Se puede usar para hacer aplicaciones WEB, MOVIL Y DE ESCRITORIO, SERVICIOS EN LA NUBE,
MICROSERVICIOS, APRENDIZAJE AUTOMATIZADO, DESARROLLO DE JUEGOS, INTERNETA DE LAS COSAS, APLICACIONES
DE ESCRITORIO, WEB DED FRONTEND, API DE BACK END, entre tantos otros.

CLI: es la infraestructura interna de .NET.

https://dotnet.microsoft.com/es-es/download

https://visualstudio.microsoft.com/es/

https://dotnetfoundation.org/

https://github.com/dotnet/core/blob/main/Documentation/core-repos.md

11
https://dotnet.microsoft.com/es-es/apps/desktop

https://www.youtube.com/watch?v=Hh279ES_FNQ

https://dotnet.microsoft.com/es-es/apps/games

https://dotnet.microsoft.com/es-es/apps/desktop

https://learn.microsoft.com/es-es/dotnet/desktop/winforms/?view=netdesktop-7.0

https://learn.microsoft.com/es-es/dotnet/desktop/wpf/?view=netdesktop-7.0

https://learn.microsoft.com/es-es/visualstudio/get-started/csharp/tutorial-wpf?view=vs-2022

https://learn.microsoft.com/es-es/windows/uwp/get-started/create-a-hello-world-app-xaml-universal

https://learn.microsoft.com/es-es/visualstudio/get-started/csharp/tutorial-uwp?view=vs-2022

12
https://learn.microsoft.com/es-es/dotnet/machine-learning/

https://learn.microsoft.com/es-es/dotnet/iot/

https://learn.microsoft.com/es-es/dotnet/architecture/cloud-native/

CLI: COMMON LANGUAJE INFRAESTRUCTURE (Lenguaje común de infraestructura), es lo que permite que el Framework
permita que diferentes programas en distintos lenguajes se ejecuten en la maquina destino, Ej. Podemos tener una librería
en C# una librería en visual basic y al compilarlo lo podemos ejecutar todo junto gracias al interprete.

Independientemente del lenguaje de programación con el que fue desarrollado el programa / funcionalidad, este se
traduce a un lenguaje intermedio que luego con el CLR: COMMON LANGUAJE RUNTIEME termina traduciendo al lenguaje
maquina independiente de la arquitectura.

13
https://en.wikipedia.org/wiki/Common_Intermediate_Language

El .NET tiene 2 compilaciones el AOT: Ahead Of Time (se usa normalmente para Mac: IOS) y el JIT: Just in time (es el que
se usa generalmente).

VENTAJA – JIT: es que se compila de acuerdo a la arquitectura, es más genérico y no tan dependiente de la arquitectura
o limitada por la misma.

VENTAKA – AOT: es más dependiente de la arquitectura y se encuentra más limitada por la misma. Eso lo hace mas
rápido y eficiente.

14
https://github.com/dotnet/runtime/blob/main/docs/design/coreclr/botr/intro-to-clr.md

CLR: es lo que va a permitir ejecutar las aplicaciones.

Garbage Collector: permite recoger todos los punteros nulos que quedaron, uno va creando objetos y clases y cuando
detecta que no se están utilizando por que quedan los punteros nulos, las variables sin asignar, internamente te va
liberando memoria, este mismo concepto es el que utiliza el CLR del FrameWork .NET.

Seguridad de memoria y seguridad de tipos: porque te reserva, no te deja acceder o reservar memoria para algo
específico, no tenemos acceso directo a la memoria del sistema operativo, se trabaja en un nivel más alto, accedes
únicamente a los recursos operativos que te deja el FrameWork. Por esto es que es un lenguaje de Alto Nivel.

15
https://dotnet.microsoft.com/es-es/learn/aspnet/what-is-aspnet-core

https://learn.microsoft.com/es-es/dotnet/desktop/winforms/overview/?view=netdesktop-7.0

16
https://learn.microsoft.com/es-es/dotnet/desktop/wpf/?view=netdesktop-7.0

https://learn.microsoft.com/es-es/dotnet/core/introduction

https://learn.microsoft.com/es-es/dotnet/standard/choosing-core-framework-server

https://learn.microsoft.com/es-es/dotnet/standard/net-standard?tabs=net-standard-1-0#net-5-and-net-standard

.NET 5 (.NET CORE): es lo nuevo, multiplataforma, pensado para trabajos en el servidor – en la nube, también se pueden
hacer implementaciones .NET Standard: Aplicaciones de Escritorio, Windows Forms, WPS.

17
https://www.mono-project.com/

https://learn.microsoft.com/es-es/windows/uwp/get-started/universal-application-platform-guide

18
https://en.wikipedia.org/wiki/Library_%28computing%29#Shared_libraries

Las DLL son las bibliotecas de clase, son funcionalidades que ya están hechas. DLL: Dinamic Linked Library que son
librerías que se agregan a tu código cuando se linkean, el .exe podrá ejecutar y hacer cosas con las .dll que no hicimos
pero podrán ser ejecutadas. Es el concepto de bibliotecas compartidas (la idea es reutilizar código ya hecho). Si creamos
una aplicación que resuelva un problema en vez de generar un .exe generamos una .dll para que cualquiera pueda
ejecutarlo con el .exe. El proyecto se inicia desde el principio como una biblioteca de clases .dll y no como un ejecutable
.exe. Nosotros en principio vamos a ver como se usan pero no como se hacen.

19
20
https://www.youtube.com/watch?v=WW3bO1lNDmo

https://learn.microsoft.com/es-es/nuget/what-is-nuget

COMPILADOR EN LINEA DE VISUAL STUDIO:

https://try.dot.net/

LINK DESCARGA VISUAL STUDIO:

https://visualstudio.microsoft.com/es/

21

También podría gustarte