SlideShare una empresa de Scribd logo
1 de 37
Universidad de Panamá
Facultad de Informática, Electrónica y Comunicación
Integrantes:
Oloninikinya Castro 10-711-1765
Melanie Castro 8-943-2211
Gloris Cedeño 9-754-699
Diego Cedeño 8-900-2261
Edwin Cueto 8-936-1200
Informe de Laboratorio N°4
Profesora: Marelisa Saldarriaga
Profesor de Laboratorio: Ariel Vernaza
Ingeniería Informática-Tercer Año
2020
1
Índice
Universidad de Panamá................................................................................................................ 0
Facultad de Informática, Electrónica y Comunicación............................................................. 0
Fortran........................................................................................................................................... 2
ALGOL .......................................................................................................................................... 6
Pascal.............................................................................................................................................. 8
C.................................................................................................................................................... 15
Ada................................................................................................................................................ 19
Java............................................................................................................................................... 26
C#...................................................................................................................................................31
2
Objetivos: Evaluar los lenguajes de programación según los criterios de evaluación
Metodología: realizar la evaluación de los siguientes lenguajes de programación deberán
revisar un fragmento de código y calificar del 0 al 3 el cumplimiento del criterio de
evaluación y sustentar con evidencia tomando en cuenta la lección su respuesta. Deberán
presentar sus resultados en el programa slideshire. Los criterios de calificación de los
lenguajes de programación serían así:
 0: No cumple
 1: Apenas cumple
 2: Cumple, pero con observaciones
 3: Cumple
Criterio de
Evaluación
Fortran
Expresividad, Puntuación: 1
Sustentación:
ocultan los detalles del procesador, ofreciendo primitivas de control
de flujo (bucles, condicionales, …), declaración de variables y
vectores, etc.
Bien definido Puntuación 3:
Es un lenguaje que está bien definido y cada línea del programa
forma parte de una sentencia que describe una instrucción a ser
llevada a cabo y tales sentencias se siguen en el orden que están
escritas. E
Tipos de estructura
de datos
Puntuación 3:
Sustentación:
3
El lenguaje fue ampliamente adoptado por los científicos para
escribir programas numéricamente intensivos, que incentivó a los
escritores de compiladores a producir compiladores que pudieran
generar un código más rápido y más eficiente. La inclusión en el
lenguaje de un tipo de datos y de la aritmética de números
complejos amplió la gama de aplicaciones para las cuales el
lenguaje se adaptaba especialmente e hizo al FORTRAN
especialmente adecuado para aplicaciones técnicas tales como la
ingeniería eléctrica.
Modularidad Puntuación 3:
Sustentación:
impone una disciplina a la construcción de programas, que tiene
como pilar la descomposición del programa en módulos: porciones
de código que cumplen funciones diferenciadas.
Facilidades de
entrada y salida
Puntuación: 2
Sustentación:
En Fortran, hay dos maneras de realizar entradas/salidas: •
entrada/salida dirigida por lista. En este caso, el formato de los datos
depende de sus tipos (enteros, reales, etc.) y del computador. Se dice
que es una entrada/salida con formato libre. • entrada/salida con
formatos. El programador define la manera exacta en que quiere
leer/escribir los datos.
https://ocw.unican.es/pluginfile.php/1904/course/section/2188/Curs
o-Fortran-7.pdf
Eficiencia Puntuación: 3
Sustentación:
Es un lenguaje muy eficiente para un tipo de problemas en concreto
para el cálculo matemático.
4
Transportabilidad Puntuación 3:
Sustentación:
Uno de los mayores beneficios potenciales de FORTRAN 90
era la transportabilidad entre SIMD y las supercomputadoras
paralelas/vectoriales. Conforme ambas arquitecturas fueron
reemplazadas con multiprocesadores con memoria uniforme
compartida, FORTRAN 77 se convirtió en el lenguaje que
ofrecía la máxima transportabilidad entre las computadoras
usadas típicamente por los programadores de cómputo de
alto rendimiento.
Generalidades Puntuación 3:
es un lenguaje de programación de alto nivel de propósito general,2
procedimental3 e imperativo, que está especialmente adaptado al
cálculo numérico y a la computación científica.
Imperativo Puntuación: 3
Sustentación:
contiene los comandos a ser ejecutados en el momento en que corre
un programa. A las instrucciones imperativas de FORTRAN se les
denomina “sentencias ejecutables”.
5
Lógicos
(Declarativos)
Puntuación 3:
Sustentación:
describe las áreas de datos, sus longitudes (tipos) y sus valores
iniciales. Las instrucciones declarativas existen en la mayor parte de
los lenguajes estructurados, aunque se les llama de maneras
distintas. En FORTRAN se les denomina “sentencias no
ejecutables”.
Cáceres, Abdiel, 2004, Monterrey Ciudad de México, México.
http://profesores.fi-
b.unam.mx/ing_gpemn/cpi/basica/pdfs/Fortran4.pdf
Funcionales Puntuación 3
Sustentación:
Ha estado en uso continuo por más de medio siglo en áreas de
cómputo intensivo tales como la predicción numérica del tiempo,
análisis de elementos finitos, dinámica de fluidos computacional
(CFD), física computacional y química computacional.
6
ALGOL
Fragmento del código a evaluar (ALGOL 68)
proc absmax=(ref[]real a)real:
begin
int i, k; real y:=0;
comment De la matriz a se toma el elemento con el valor absoluto mayor y se coloca en y. x
Los subíndices del elemento se colocan en i y k;peme comment
i:= k:= 1⌊a;
for p from 1⌊a by 1 to 1⌈a do
for q from 2⌊a by 1 to 2⌈a do
if abs a[p, q] > y then
y:= abs a[p, q];
i:= p; k:= q
fi
od
od;
y
end
7
IMPERATIVO
Está bien programado sin embargo se necesitaba mejorar la forma de la secuencia de la
programación.
Criterio de Evaluación ALGOL
Expresividad Puntuación: 0
Bien definido Puntuación: 1
transportabilidad Puntuación: 1
tipos de estructuras de datos Puntuación: 0
modularidad Puntuación: 3
facilidades de entrada y salida Puntuación: 1
eficiencia Puntuación: 0
generalidades Puntuación: 1
imperativo Puntuación: 2
lógicos (declarativos) Puntuación: 1
funcionales Puntuación: 1
8
Criterio de
Evaluación
Pascal
Expresividad Puntuación:3
Sustentación: Pascal se caracteriza por ser un lenguaje de
programación estructurado fuertemente tipificado. Esto implica
que: El código esta dividido en porciones fácilmente legibles
llamadas funciones o procedimientos. De esta forma Pascal
facilita la utilización de la programación estructurada en
oposición al antiguo estilo de programación monolítica. El tipo
de dato de todas las variables debe ser declarado previamente
para que su uso quede habilitado.
Bien definido Puntuación: 3
Sustentación: Object Pascal (Embarcadero Delphi) todavía se
utiliza para el desarrollo de aplicaciones Windows, pero también
tiene la capacidad de compilación cruzada del mismo código
para Mac, iOS y Android. Otra versión multiplataforma llamada
Free Pascal, con el IDE Lazarus, es popular entre los usuarios de
Linux, ya que también ofrece desarrollo escribe una vez,
compila para todos (write once, compile anywhere).
CodeTyphon es una distribución de Lazarus con más paquetes
preinstalados y compiladores cruzados.
9
Tipos de estructura
de datos
Puntuación:
Sustentación: consiste en dotar al programa de un cierto orden
dividiéndolo en bloques independiente uno de otros y, que se
encarga de cada una de las tareas necesarias. Esto hace un
programa fácil de leer y modificar.
10
Modularidad Puntuación: 2
Sustentación: Programación modular
– Es una técnica para escribir programas grandes y complejos
– Se basa en subdividir el programa en secciones más simples.
Cada sección se llama módulo y realiza una única tarea
• Módulos
– Cada módulo tiene un nombre (identificador) y consiste en un
conjunto de sentencias agrupadas mediante un begin y un end
– El módulo (grupo de sentencias) se ejecuta cuando se escribe
su
nombre en el programa
– Pascal utiliza dos tipos de módulos: procedimientos y
funciones
• Procedimientos: Agrupación de sentencias que efectúan una
tarea
específica a partir de una serie opcional de datos de entrada
(parámetros).
– Ejemplo: writeln (valor_entrada);
• Funciones: Agrupación de sentencias que efectúan una tarea
que da
como resultado un valor específico a partir de una serie de datos
de
entrada (parámetros)
– Ejemplo: valor_salida:=sqrt(valor_entrada);
11
Facilidades de
entrada y salida
Puntuación: 3
Sustentación: Una sentencia de entrada en PASCAL toma una de
las siguientes dos formas: Read (lista-de-variables) Read
(imput, lista-de-variables)
Y La sentencia básica de salida en PASCAL toma una de las dos
formas Write (lista-de-salida) Write (output, lista-de-
salida)Donde la lista de salida es una lista de valores a ser
producidos.
12
Eficiencia Puntuación:
Sustentación:
Se trata de un lenguaje de propósito general, esto quiere decir
que se puede emplear para construir todo tipo de aplicaciones.
En la práctica también quiere decir que se trata de un lenguaje no
diseñado para desarrollar ningún tipo específico de aplicaciones.
Pero el PASCAL es especialmente útil para algo: para la
enseñanza de buenos modos de programación. El PASCAL es
hoy en día el lenguaje más usado para la enseñanza de la
programación por varios motivos:
• Posee unas reglas sencillas de sintaxis.
• Es un lenguaje muy estructurado.
• Realiza una comprobación exhaustiva de tipos de datos.
13
Transportabilidad Puntuación: 3
Sustentación: Object Pascal (Embarcadero Delphi) todavía se
utiliza para el desarrollo de aplicaciones Windows, pero también
tiene la capacidad de compilación cruzada del mismo código
para Mac, iOS y Android. Otra versión multiplataforma llamada
Free Pascal, con el IDE Lazarus, es popular entre los usuarios de
Linux, ya que también ofrece desarrollo escribe una vez,
compila para todos (write once, compile anywhere).
CodeTyphon es una distribución de Lazarus con más paquetes
preinstalados y compiladores cruzados.
Generalidades Puntuación: 3
Sustentación:
El código está dividido en porciones fácilmente legibles
llamadas funciones o procedimientos.
Imperativo Puntuación: 3
Sustentación:
El paradigma imperativo debe su nombre al papel dominante que
desempeñan las sentencias imperativas, es decir aquellas que
indican realizar una determinada operación que modifica los
datos guardados en memoria.
14
Lógicos
(Declarativos)
Puntuación: 3
Sustentación: es la técnica utilizada para desarrollar
instrucciones en una secuencia para lograr determinado objetivo.
Es la organización y planificación de instrucciones en un
algoritmo, con el objetivo de tornar visible la implementación de
un programa o software.
Funcionales Puntuación: 3
Sustentación:
Los lenguajes funcionales priorizan el uso de recursividad y
aplicación de funciones de orden superior para resolver
problemas que en otros lenguajes se resolverán mediante
estructuras de control (por ejemplo, ciclos). Muchos lenguajes de
programación funcionales pueden ser vistos como elaboraciones
del cálculo lambda.
15
Criterio de
Evaluación
C
Expresividad Puntuación: 2
Sustentación:
siempre fue distinguido como altamente expresivo y
potencialmente muy económico dada su reducida cantidad de
palabras clave y el poder de algunos de sus operadores (por
ejemplo, de los punteros.) En la actualidad, sin embargo, es
frecuente el deseo de soportar estructuras de programación cada
vez más complejas (aunque con frecuencia con los mismos
algoritmos) con lo cual las implementaciones en lenguaje C
tienden a tornarse oscuras (e inseguras) frente a equivalentes en
otros lenguajes.
Bien definido Puntuación: 2
Sustentación:
el principal problema radica en la gran cantidad de aspectos que
son dejados a criterio del implementador, entre los cuales
destaca el tamaño de los tipos de datos.
16
Tipos de estructura
de datos
Puntuación: 2
Sustentación:
proporciona mecanismos que actualmente se consideran
rudimentarios para proporcionar tipos de datos estructurados.
Las estructuras (y uniones) se suelen utilizar para definir tipos
complejos constituidos a partir de otros más simples (que a la
vez pueden ser estructuras y/o uniones) con la posibilidad de
crear identificadores auxiliares que simplifican la notación
(typedef.)
Modularidad Puntuación: 2
Sustentación:
proporciona sólo dos niveles: componentes visibles dentro del
archivo de código fuente, y componentes visibles globalmente
(concretamente, funciones y variables.)
Facilidades de
entrada y salida
Puntuación: 2,
Sustentación:
no proporciona instrucciones de I/O salvo mediante funciones
de su "librería estándar", la cual fue diseñada en gran medida
para aprovechar las facilidades del sistema de archivos Unix.
En ese sentido, las funciones de I/O proporcionan acceso
secuencial byte a byte o bloque a bloque, así como
desplazamientos arbitrarios en la posición de lectura/escritura;
esto en realidad depende de las facilidades inherentes al sistema
operativo, pero están presentes en prácticamente todo sistema
comercial moderno.
17
Eficiencia Puntuación: 3
Es un lenguaje potente y eficiente, permitiendo obtener
programas rápidos y compactos.
Transportabilidad Puntuación: 3
Sustentación:
ha proporcionado como parte de la distribución del sistema
operativo Unix (aunque en ocasiones, con un costo adicional)
siempre siguiendo los lineamientos de sus creadores (K&R) por
lo que es reconocido como uno de los lenguajes más difundidos
y portables de la historia, al menos, hasta los años 80.
Generalidades Puntuación: 2
Sustentación:
suele ser utilizado para construir componentes básicos o de bajo
nivel (notablemente, el kernel de muchos sistemas operativos).
Imperativo Puntuación: 3
Sustentación:
C es muy concretos y trabaja cerca del sistema, de esta forma,
el código es, por un lado, fácilmente comprensible, pero, por el
otro, requiere muchas líneas de texto fuente para describir lo
que en los lenguajes de la programación declarativa se consigue
con solo una parte de las instrucciones.
18
Lógicos
(Declarativos)
Puntuación: 1
Sustentación:
Este lenguaje es más imperativo, porque los lenguajes
declarativos no dicen cómo hacer una cosa, sino, más bien qué
cosa hacer, a diferencia del lenguaje imperativo.
Funcionales Puntuación 3:
Sustentación:
Un programa funcional está constituido enteramente por
funciones; el programa principal es una función que toma como
argumento la entrada al programa y genera la salida del
programa como su resultado.
Gonzales, Fabio, Colombia, Colombia
file:///C:/Users/nilke/Desktop/21044-71292-1-PB.pdf
19
Criterio de
Evaluación
Ada
Expresividad Puntuación: 3
Sentencia:
Es bastante legible incluso para personas que no conocen el
lenguaje. Es un lenguaje que no escatima en la longitud de las
palabras clave, en la filosofía de que un programa se escribe
una vez, se modifica decenas de veces y se lee miles de veces
(legibilidad es más importante que rapidez de escritura).
Bien definido Puntuación: 3
Sustentación: Es un lenguaje multipropósito, orientado a
objetos y concurrente, pudiendo llegar desde la facilidad de
Pascal hasta la flexibilidad de C++.
20
Tipos de estructura
de datos
Puntuación: 3
Sustentación: La parte declarativa incluye las declaraciones de
cualquier objeto. Puede contener definiciones de variables y
procedimientos.
· Tipo integer: Representa una secuencia de uno o más
dígitos. Ada permite que cualquiera de los dígitos (excepto
el primero) esté precedido por el carácter “_” para dar
legibilidad al programa.
· Tipo flotante: se distinguen por la presencia de un
punto decimal. Pueden incluir un exponente.
· Tipo Boolean: Los valores booleanos están denotados
por unos de dos literales predefinidos: true y false.
· Tipo Character: Los valores de este tipo representan
valores ASCII. Son caracteres encerrados entre comillas
simples.
· Tipo string: todos los tipos anteriores son tipos
escalares, esto es, que tiene valores que no
pueden ser divididos en partes más pequeñas. Ada tiene un tipo
predefinido que es un tipo
compuesto, el tipo String, que consiste de una secuencia de
valores character.
Un literal string es una secuencia de cero, o más caracteres
encerrados entre comillas dobles.
21
Modularidad Puntuación: 2
Sustentación:
El objetivo anterior se puede conseguir dividendo un programa
en partes, cada una de ellas siendo un grupo de elementos, de
forma que:
I Cada elemento de un grupo esta fuertemente relacionado con
otros elementos de dicho grupo.
I Las dependencias entre elementos de grupos distintos son las
menores posibles, y en cualquier caso están bien documentadas.
I Cada parte puede ser reutilizable en mas de un programa
22
Facilidades de
entrada y salida
Puntuación: 3
Sentencia:
Las operaciones básicas de entrada/salida de Ada se encuentran
definidas en la librería estándar Text_IO que habrá que incluir
en la cláusula de contexto de una unidad de programa que
pretenda usarlas:
With Text_Io;
Use Text_Io;
También se puede realizar entrada/salida de valores del tipo
predefinido Integer y sus subtipos usando el paquete no
génerico Ada.Integer_Text_Io; y del tipo predefinido Float y
sus subtipos usando el paquete no genérico Ada.Float_Text_Io.
with Ada.Integer_Text_Io, Ada.Float_Text_Io;
use Ada.Integer_Text_Io, Ada.Float_Text_Io;
23
Eficiencia Puntuación:
Sentencia:
Es bastante legible incluso para personas que no conocen el
lenguaje. Es un lenguaje que no escatima en la longitud de las
palabras clave, en la filosofía de que un programa se escribe
una vez, se modifica decenas de veces y se lee miles de veces
(legibilidad es más importante que rapidez de escritura).
Transportabilidad Puntuación: 3
Sustentación: Se puede obtener mayor transportabilidad y
mejor mantenimiento si se pueden separar los detalles de la
representación de los datos y las especificaciones de las
operaciones lógicas sobre los mismos.
Generalidades Puntuación: 3
Sustentación: es un lenguaje de programación orientado a
objetos y fuertemente tipado de forma estática que fue diseñado
por Jean Ichbiah de CII Honeywell Bull por encargo del
Departamento de Defensa de los Estados Unidos. Es un
lenguaje multipropósito, orientado a objetos y concurrente,
pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad
de C++.
24
Imperativo Puntuación: 3
Sustentación:
Los lenguajes de programación imperativa son como unas
instrucciones paso a paso (cómo) redactadas para el ordenador.
Describen de forma explícita qué pasos deben llevarse a cabo y
en qué secuencia para alcanzar finalmente la solución deseada.
Lógicos
(Declarativos)
Puntuación:
Sustentación: En Ada, todo el programa es un único
procedimiento, que puede contener subprogramas
(procedimientos o funciones). Cada sentencia se cierra con end
qué_cerramos. Es un modo de evitar errores y facilitar la
lectura. No es necesario hacerlo en el caso de subprogramas,
aunque todos los manuales lo aconsejan y casi todos los
programadores de Ada lo hacen.
Funcionales Puntuación: 2
Sustentación:
Un programa en estos lenguajes consiste en una especificación
de la función recursiva que queremos calcular, junto con los
argumentos sobre los que se aplica.
25
LÓGICOS
Le falta pulir un poco lo que sería la programación funcional, programación con restricciones,
programas DSL e híbridos.
Criterio de Evaluación C++
Expresividad Puntuación: 3
Bien definido Puntuación: 3
transportabilidad Puntuación: 3
tipos de estructuras de datos Puntuación: 1
modularidad Puntuación: 3
facilidades de entrada y salida Puntuación: 3
eficiencia Puntuación: 3
generalidades Puntuación: 3
imperativo Puntuación: 3
lógicos (declarativos) Puntuación: 2
funcionales Puntuación: 3
26
Criterio de
Evaluación
Java
Expresividad
Puntuación: 3
Sustentación:
El lenguaje de programación expresivo permite expresar con
facilidad procesos o estructuras complejas.
Por lo tanto, la expresividad se define como la capacidad de
decir ideas en cómputo, ayudado a través de las estructuras de
datos que el lenguaje que uses tiene.
http://la-morsa.blogspot.com/2011/02/sobre-la-expresividad-
de-los-lenguajes.html
Bien definido
Puntuación: 3
Sustentación:
Desde el punto de vista bien definido quiere decir que el
lenguaje cumple con lo necesario a lo que está orientado a
objetos e imperativo.
27
Tipos de estructura de
datos
Puntuación: 3
Sustentación:
Los tipos de datos como Double, Float, Boolean, entre otros.
Se caracterizan por poder almacenar un único valor. Salvo este
reducido conjunto de tipos de datos primitivos, que facilitan el
trabajo con números, caracteres y valores booleanos, todos los
demás tipos de Java son objetos, también llamados tipos
estructurados o Clases.
https://www.campusmvp.es/recursos/post/variables-y-tipos-de-
datos-en-java-tipos-simples-clases-y-tipos-envoltorio-o-
wrapper.aspx
Modularidad
Puntuación: 3
Sustentación:
En los lenguajes orientados a objetos, como Java, el concepto
esencial es el de clase, y los programas consisten básicamente
en conjuntos de declaraciones de clases. En la mayoría de los
lenguajes OO, existen,
sin embargo, mecanismos para agrupar las clases relacionadas
en conjuntos de clases, asimilables a los módulos de los
lenguajes no OO. https://lsi.ugr.es/curena/doce/lp/tr-11-12/lp-
c08-impr.pdf
28
Facilidades de entrada
y salida
Puntuación: 3
Sustentación:
Los programas necesitan comunicarse con su entorno, tanto
para recoger datos e información que deben procesar, como
para devolver los resultados obtenidos.
http://www.euskalnet.net/jaoprogramador/j2ee/java/java25.htm
Eficiencia
Puntuación: 3
Sustentación:
Depender de parámetros cómo cuál es la plataforma sobre la
que se ejecuta, la versión de las librerías, la versión del
compilador/intérprete/máquina virtual y los parámetros de
optimización que se le suministran.
Transportabilidad
Puntuación: 2
Sustentación:
La Transportabilidad/portabilidad de Java le permite estar en
dispositivos desde celulares Android, Ordenadores, entre otros.
Java no se compila habitualmente en código nativo, sino en
bytecode.
https://medium.com/techwomenc/como-elegir-el-lenguaje-de-
programaci%C3%B3n-adecuado-402503a6a230
Observación:
29
En cuanto a Java para utilizarlo en Celulares es algo
complicado con respecto a leer y guardar archivos.
Generalidades
Puntuación: 3
Sustentación:
Java es un lenguaje de programación sencillo y a la vez
potente, que permite crear cualquier tipo de aplicación de
propósito general.
Imperativo
Puntuación: 3
Sustentación:
En la programación se considera imperativo a los lenguajes
que calculan un conjunto de instrucciones que establecen
explícitamente como se debe manipular la información digital
presente en memoria o como se debe recoger/ enviar la
información desde/hacia los dispositivos.
30
Lógicos (Declarativos)
Puntuación: 2
Sustentación:
Calcula el proceso de encontrar qué elementos de un dominio
cumple determinada relación definida
sobre dicho dominio, o bien determinar si un determinado
elemento cumple o no dicha relación.
Observación:
Dependiendo del punto de vista en el que se utilice, Java está
perfectamente equilibrado.
Funcionales
Puntuación: 2
Sustentación:
Un cálculo es el proceso de aplicar una función recursiva a un
valor de su dominio para obtener el correspondiente valor del
rango (el resultado).
Observación:
Desde mi punto de vista Java tiene un buen soporte para ello.
Sin embargo, muchas veces no se tiene muy claro cómo
aplicarlo.
31
Criterio de
Evaluación
C#
Expresividad, Puntuación: 3, cumple con los requerimientos de esta característica.
Sustentación:
Un lenguaje se considera expresivo cuando:
Es bastante fácil aprender, la gran mayoría de los desarrolladores que lo utilizan
pueden ser muy productivos; e igualmente expresivo en casi todo su dominio de
utilidad. Esto concuerda con la definición de expresividad trabajada en clase, la cuál
citamos “expresividad es la facilidad con la cual un lenguaje puede expresar
procesos y estructuras complejas”. Características que promueven su rápido
aprendizaje e implementación al utilizar expresiones cortas y claras para representar
ideas.
Para medir eso, tomamos en cuenta el rango Inter cuartil (IQR; la distancia entre los
percentiles 25 y 75) como un acercamiento para estos dos criterios, y clasifiquemos
los lenguajes a través del mismo. Adjuntamos una imagen obtenida de los
benchmarks de expresividad de diversos lenguajes de programación, donde se
observa a C# clasificado como uno de los lenguajes más expresivos, contando con
esta información aseguramos que ambos criterios anteriormente mencionados se
cumplen.
http://dberkholz-
media.redmonk.com/dberkholz/files/2013/03/expressiveness_by_iqr_weighted2.png
Por lo tanto, comprobamos mediante esta clasificación que C# cumple con las
características evaluadas de expresividad y por consecuente se considera un
lenguaje altamente expresivo.
Bien definido El siguiente criterio de evaluación es “Bien definido”, y trata sobre que el flujo del
programa lleve a un resultado. Los lenguajes de programación que cuentan con este
criterio manejan paradigmas como: imperativos, declarativos y orientación a objetos.
Puntuación: 3, cumple con los requerimientos de la característica
Sustentación:
En el caso de C# el paradigma implementado es orientado a objetos, al tener un
paradigma que define al lenguaje se considera “bien definido”. C# es un lenguaje de
programación que se ha diseñado para generar diversas aplicaciones que se
ejecutan en .NET Framework. C# proporciona compatibilidad completa para la
programación orientada a objetos incluida la abstracción, la encapsulación, la
herencia y el polimorfismo. Todas estas características validan que C# cumple con
los criterios evaluados en el paradigma de programación orientado a objetos.
Tipos de
estructura de
datos
En Informática, una estructura de datos es una forma particular de organizar datos
en una computadora para que puedan ser utilizados de manera eficiente. Diferentes
tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones,
y algunos son altamente especializados para tareas específicas.
Puntuación: 2, cumple, pero con observaciones
32
Sustentación:
Los tipos de estructura tienen semántica de valores. Es decir, una variable de un tipo
de estructura contiene una instancia del tipo. De forma predeterminada, los valores
de variable se copian al asignar, pasar un argumento a un método o devolver el
resultado de un método. En el caso de una variable de tipo de estructura, se copia
una instancia del tipo. Para más información, vea Tipos de valor.
Normalmente, los tipos de estructura se usan para diseñar tipos de pequeño tamaño
centrados en datos que proporcionan poco o ningún comportamiento. Por ejemplo,
en .NET se usan los tipos de estructura para representar un número (entero y real),
un valor booleano, un carácter Unicode, una instancia de tiempo. Si le interesa el
comportamiento de un tipo, considere la posibilidad de definir una clase. Los tipos
de clase tienen semántica de referencias. Es decir, una variable de un tipo de clase
contiene una referencia a una instancia del tipo, no la propia instancia.
Dado que los tipos de estructura tienen semántica del valor, le recomendamos que
defina tipos de estructura inmutables.
Al diseñar un tipo de estructura, tiene las mismas funciones que con un tipo de clase,
con las siguientes excepciones:
 No se puede declarar un constructor sin parámetros. Cada tipo de
estructura ya proporciona un constructor sin parámetros implícito que
genera el valor predeterminado del tipo.
 No se puede inicializar una propiedad o un campo de instancia en su
declaración. Pero se puede inicializar un campo static o const, o una
propiedad estática en su declaración.
 Un constructor de un tipo de estructura debe inicializar todos los campos
de instancia del tipo.
 Un tipo de estructura no puede heredar de otro tipo de estructura o clase
ni puede ser la base de una clase. Pero un tipo de estructura puede
implementar interfaces.
 No se puede declarar un finalizador dentro de un tipo de estructura.
Modularidad, La modularidad es la capacidad que tiene un sistema de ser estudiado, visto
o entendido como la unión de varias partes que interactúan entre sí y que
trabajan para alcanzar un objetivo común, realizando cada una de ellas una tarea
necesaria para la consecución de dicho objetivo. Esta es la definición estudiada en
clase.
Puntuación: 3, cumple con los requisitos de la característica
Sustentación:
33
Presentamos la definición de los subprogramas o funciones aplicables para C y todos
sus derivados:
 Cada "trozo de programa" independiente será más fácil de programar, al
realizar una función breve y concreta.
 El "programa principal" será más fácil de leer, porque no necesitará contener
todos los detalles de cómo se hace cada cosa.
 Evitaremos mucho código repetitivo.
 Podremos repartir el trabajo, para que cada persona se encargue de realizar
un "trozo de programa", y finalmente se integrará el trabajo individual de cada
persona (aunque para proyectos realmente grandes, pronto veremos una
alternativa que hace que el reparto y la integración sean más sencillos).
Esos "trozos" de programa son lo que suele llamar "subrutinas", "procedimientos" o
"funciones". En el lenguaje C y sus derivados (entre los que está C#), el nombre que
más se usa es el de funciones. Conociendo estas características podemos concluir
que cumple con el objetivo de la modularidad, por lo tanto el programa tiene esta
propiedad.
Adjuntamos video donde se utiliza la modularidad en C#:
https://videosinformaticablog.wordpress.com/tutorial-curso-c-7-modularidad-y-
encapsulamiento/
Facilidades de
entrada y salida,
Puntuación: 3, cumple con los requisitos de la característica.
Sustentación:
En C#, la entrada y la salida de datos se pueden manejar a través de los métodos
de la clase Console.
Entrada de datos desde el teclado.
Para la entrada de datos por medio del teclado se pueden utilizar los métodos Read()
y ReadLine() de la clase Console.
Ejemplos:
System.Console.Read( ) ; // Lee el siguiente carácter desde el flujo de la entrada
estándar.
System.Console.ReadLine( ) ; // Lee la siguiente línea de caracteres desde el flujo
de la entrada estándar.
Salida de datos hacia la pantalla.
La salida de datos hacia la pantalla se puede realizar utilizando los métodos Write y
WriteLine( ) de la clase Console.
34
Estas funcionalidades nos demuestran que existe la facilidad de entrada y salida de
datos en C#.
Eficiencia El criterio de evaluación eficiencia, se refiere a que tan rápido se ejecuta un
programa.
Puntuación: 3, cumple con los requerimientos de la característica
Sustentación:
C# mantiene una velocidad de ejecución bastante buena con respecto a otros
lenguajes que son considerados eficientes. Como prueba adjuntamos este
benchmark:
Es destacable como C# es el más rápido con 2.01, no tengo ni idea de si eso es así
por la implementación de Mono, del lenguaje en sí, o si es que no he hecho bien el
benchmark en C# pero lo cierto es que estoy gratamente impresionado. Le sigue
muy de cerca C con 2.19s, después la implementación PyPy de Python 2.7 con 2.70,
tras él le toca el turno a Go con 2.93, la implementación de CPython 2.7 le sigue con
3.86 y muy tristemente el último lugar lo ocupa C++ con un 4.24
https://www.genbeta.com/desarrollo/benchmark-entre-c-c-c-python-y-go
Transportabilidad Se define como la característica que posee un software para ejecutarse en diferentes
plataformas es decir la portabilidad que se refiere exclusivamente a la propiedad
que posee un software que le permite ser ejecutado en diferentes plataformas y/o
sistemas operativos.
Puntuación: 3, cumple con los requerimientos de la propiedad.
Sustentación:
Para facilitar la migración de programadores, C# no sólo mantiene una sintaxis muy
similar a C, C++ o Java que permite incluir directamente en código escrito en C#
fragmentos de código escrito en estos lenguajes, sino que el CLR también ofrece, a
través de los llamados Platform Invocation Services (PInvoke), la posibilidad de
acceder a código nativo escrito como funciones sueltas no orientadas a objetos
tales como las DLLs de la API Win32. Nótese que la capacidad de usar punteros
en código inseguro permite que se pueda acceder con facilidad a este tipo de
funciones, ya que éstas muchas veces esperan recibir o devuelven punteros.
También es posible acceder desde código escrito en C# a objetos COM. Para
facilitar esto, el .NET Framework SDK incluye una herramientas
llamadas tlbimp y regasm mediante las que es posible generar automáticamente
clases proxy que permitan, respectivamente, usar objetos COM desde .NET como
si de objetos .NET se tratase y registrar objetos .NET para su uso desde COM.
35
Finalmente, también se da la posibilidad de usar controles ActiveX desde código
.NET y viceversa. Para lo primero se utiliza la utilidad aximp, mientras que para lo
segundo se usa la ya mencionada regasm.
Generalidades Este criterio hace alusión a las características o construcciones propias del lenguaje
y deben ser aplicables uniformemente y con las mínimas restricciones en todos los
contextos posibles.
Puntuación: 3, cumple con los requerimientos de la propiedad.
Sustentación:
C# incorpora en el propio lenguaje elementos que a lo largo de los años ha ido
demostrándose son muy útiles para el desarrollo de aplicaciones y que en otros
lenguajes como Java o C++ hay que simular, como un tipo básico decimal que permita
realizar operaciones de alta precisión con reales de 128 bits (muy útil en el mundo
financiero), la inclusión de una instrucción foreach que permita recorrer colecciones
con facilidad y es ampliable a tipos definidos por el usuario, la inclusión de un tipo
básico string para representar cadenas o la distinción de un tipo bool específico para
representar valores lógicos.
En este aspecto, es importante señalar que C# incorpora muchos elementos de los
que Java carece (sistema de tipos homogéneo, propiedades, indexadores, tablas
multidimensionales, operadores redefinibles, etc.) y que según los benchmarks
pruebas de velocidad de ejecución del código escrito en C# es ligeramente superior
a su respectiva versión en Java.
Imperativo Puntuación: 3, cumple.
Sustentación:
En la programación imperativa se describen sentencias que modifican el estado
de un programa. En muchos sentidos la programación imperativa es la
programación natural para las CPUs que se basan en ese paradigma al nivel más
básico.
En este paradigma se expresa como debe solucionarse un problema
especificando una secuencia de acciones a realizar a través de uno o más
procedimientos denominados subrutinas o funciones.
Dentro de esta categoría se engloban la programación estructurada que
restringe el uso de la instrucción goto, la programación modular y
la programación orientada a objetos. Cada una de estas extensiones o
evoluciones han permitido mejorar la mantenibilidad y la calidad de los
programas imperativos.
Lógicos
(Declarativos)
Puntuación: 0, no cumple con los requisitos de la característica.
Sustentación:
36
A la programación imperativa se le contrapone la programación declarativa en la que
se describe la lógica de computación necesaria para resolver un problema sin
describir un flujo de control de ningún tipo. Esta característica no la cumple el
lenguaje C#.
Funcionales La programación funcional puede ayudarnos a crear software más robusto,
mantenible y fácil de testear.
Puntuación: 3, cumple con los requerimientos de la característica.
Sustentación:
La programación funcional se centra en las funciones. En un programa funcional,
todos los elementos pueden entenderse como funciones y el código puede
ejecutarse mediante llamadas de función secuenciales. Por el contrario, no se
asignan valores de forma independiente. Una función se imagina mejor como
una variante especial de un subprograma. Esta es reutilizable y, a diferencia de
un procedimiento, devuelve directamente un resultado. Como ya hemos mencionado
anteriormente en la característica de modularidad, C# permite el desarrollo de esta
mediante el uso de funciones o subprogramas, por tanto, comprobamos el
cumplimiento de las características de funcionalidad.

Más contenido relacionado

La actualidad más candente (20)

Correa correa juan_felipe
Correa correa juan_felipeCorrea correa juan_felipe
Correa correa juan_felipe
 
01 alp u2
01 alp u201 alp u2
01 alp u2
 
Software1
Software1Software1
Software1
 
Introduccion a haskell
Introduccion a haskellIntroduccion a haskell
Introduccion a haskell
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2
 
Lenguajes De Bajo Nivel
Lenguajes De Bajo NivelLenguajes De Bajo Nivel
Lenguajes De Bajo Nivel
 
LENGUAJE en C
LENGUAJE en CLENGUAJE en C
LENGUAJE en C
 
Introducccion programacion
Introducccion programacionIntroducccion programacion
Introducccion programacion
 
Danelly
DanellyDanelly
Danelly
 
Taller paola
Taller paolaTaller paola
Taller paola
 
Jasmin andrea aguilar h..
Jasmin  andrea  aguilar h..Jasmin  andrea  aguilar h..
Jasmin andrea aguilar h..
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de Programación
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lenguaje de Alto Nivel
Lenguaje de Alto NivelLenguaje de Alto Nivel
Lenguaje de Alto Nivel
 
Java
JavaJava
Java
 
Trabajo de programacion 1
Trabajo de programacion 1 Trabajo de programacion 1
Trabajo de programacion 1
 
LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN LENGUAJES DE PROGRAMACIÓN
LENGUAJES DE PROGRAMACIÓN
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Passage
PassagePassage
Passage
 

Similar a Laboratorio 4

Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdfamacias7983
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07adrianpro
 
Entrada y salida de información - Grupo # 5
Entrada y salida de información - Grupo # 5Entrada y salida de información - Grupo # 5
Entrada y salida de información - Grupo # 5Darwin Hurtado
 
3ra Evaluación de Programación.docx
3ra Evaluación de Programación.docx3ra Evaluación de Programación.docx
3ra Evaluación de Programación.docxJulioRodolfodeJessHe
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte Yelixa Araque Angulo
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte Yelixa Araque Angulo
 
2.2. algoritmos definicion - metodología - ejemplos ing comp
2.2. algoritmos  definicion - metodología - ejemplos ing comp2.2. algoritmos  definicion - metodología - ejemplos ing comp
2.2. algoritmos definicion - metodología - ejemplos ing compMaría Sofía Molina Molina
 
Capa aplicacion Modelo OSI
Capa aplicacion Modelo OSICapa aplicacion Modelo OSI
Capa aplicacion Modelo OSIivon_jaque
 
Tema1
Tema1Tema1
Tema1UH
 
Tema1
Tema1Tema1
Tema1UH
 
Tema1
Tema1Tema1
Tema1UH
 
Ici opc-unidad v-tema 6
Ici opc-unidad v-tema 6Ici opc-unidad v-tema 6
Ici opc-unidad v-tema 6Nelson Gimon
 
Opc tema 5- unidad v
Opc tema 5- unidad vOpc tema 5- unidad v
Opc tema 5- unidad vOpc Udo
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y cLeonardo Lopez
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionBoris Salleg
 

Similar a Laboratorio 4 (20)

Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdf
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
Entrada y salida de información - Grupo # 5
Entrada y salida de información - Grupo # 5Entrada y salida de información - Grupo # 5
Entrada y salida de información - Grupo # 5
 
3ra Evaluación de Programación.docx
3ra Evaluación de Programación.docx3ra Evaluación de Programación.docx
3ra Evaluación de Programación.docx
 
Tema5-u5-ici-equipo-cad
Tema5-u5-ici-equipo-cadTema5-u5-ici-equipo-cad
Tema5-u5-ici-equipo-cad
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte
 
2.2. algoritmos definicion - metodología - ejemplos ing comp
2.2. algoritmos  definicion - metodología - ejemplos ing comp2.2. algoritmos  definicion - metodología - ejemplos ing comp
2.2. algoritmos definicion - metodología - ejemplos ing comp
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Fortran Alcubierre.pdf
Fortran Alcubierre.pdfFortran Alcubierre.pdf
Fortran Alcubierre.pdf
 
Capa aplicacion Modelo OSI
Capa aplicacion Modelo OSICapa aplicacion Modelo OSI
Capa aplicacion Modelo OSI
 
Tema1
Tema1Tema1
Tema1
 
Tema1
Tema1Tema1
Tema1
 
Tema1
Tema1Tema1
Tema1
 
Ici opc-unidad v-tema 6
Ici opc-unidad v-tema 6Ici opc-unidad v-tema 6
Ici opc-unidad v-tema 6
 
Opc tema 5- unidad v
Opc tema 5- unidad vOpc tema 5- unidad v
Opc tema 5- unidad v
 
TRABAJO FINAL PROGRAMACIÓN.pdf
TRABAJO FINAL PROGRAMACIÓN.pdfTRABAJO FINAL PROGRAMACIÓN.pdf
TRABAJO FINAL PROGRAMACIÓN.pdf
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
 
Algoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacionAlgoritmos, programas, compiladores y lenguajes de programacion
Algoritmos, programas, compiladores y lenguajes de programacion
 

Último

HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...jhoecabanillas12
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptxSergiothaine2
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docxmarthaarroyo16
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)estebancitoherrera
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfluisccollana
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitariachayananazcosimeon
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria deCalet Cáceres Vergara
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptxccordovato
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,juberrodasflores
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresamerca6
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosssuser948499
 

Último (17)

HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...CAPACITACION_higiene_industrial (1).ppt...
CAPACITACION_higiene_industrial (1).ppt...
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptx
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)El Teatro musical (qué es, cuál es su historia y trayectoria...)
El Teatro musical (qué es, cuál es su historia y trayectoria...)
 
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdfPREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
PREGRADO-PRESENCIAL-FASE-C-202401 (1).pdf
 
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior UniversitariaSUNEDU - Superintendencia Nacional de Educación superior Universitaria
SUNEDU - Superintendencia Nacional de Educación superior Universitaria
 
bases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria debases-cye-2024(2) una sola descarga en base de feria de
bases-cye-2024(2) una sola descarga en base de feria de
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
Ivu- taller de diseño arquitectonico l , adicion y sustraccion de cubos,
 
La importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresaLa importancia de las pruebas de producto para tu empresa
La importancia de las pruebas de producto para tu empresa
 
Data Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datosData Warehouse.gestion de bases de datos
Data Warehouse.gestion de bases de datos
 

Laboratorio 4

  • 1. Universidad de Panamá Facultad de Informática, Electrónica y Comunicación Integrantes: Oloninikinya Castro 10-711-1765 Melanie Castro 8-943-2211 Gloris Cedeño 9-754-699 Diego Cedeño 8-900-2261 Edwin Cueto 8-936-1200 Informe de Laboratorio N°4 Profesora: Marelisa Saldarriaga Profesor de Laboratorio: Ariel Vernaza Ingeniería Informática-Tercer Año 2020
  • 2. 1 Índice Universidad de Panamá................................................................................................................ 0 Facultad de Informática, Electrónica y Comunicación............................................................. 0 Fortran........................................................................................................................................... 2 ALGOL .......................................................................................................................................... 6 Pascal.............................................................................................................................................. 8 C.................................................................................................................................................... 15 Ada................................................................................................................................................ 19 Java............................................................................................................................................... 26 C#...................................................................................................................................................31
  • 3. 2 Objetivos: Evaluar los lenguajes de programación según los criterios de evaluación Metodología: realizar la evaluación de los siguientes lenguajes de programación deberán revisar un fragmento de código y calificar del 0 al 3 el cumplimiento del criterio de evaluación y sustentar con evidencia tomando en cuenta la lección su respuesta. Deberán presentar sus resultados en el programa slideshire. Los criterios de calificación de los lenguajes de programación serían así:  0: No cumple  1: Apenas cumple  2: Cumple, pero con observaciones  3: Cumple Criterio de Evaluación Fortran Expresividad, Puntuación: 1 Sustentación: ocultan los detalles del procesador, ofreciendo primitivas de control de flujo (bucles, condicionales, …), declaración de variables y vectores, etc. Bien definido Puntuación 3: Es un lenguaje que está bien definido y cada línea del programa forma parte de una sentencia que describe una instrucción a ser llevada a cabo y tales sentencias se siguen en el orden que están escritas. E Tipos de estructura de datos Puntuación 3: Sustentación:
  • 4. 3 El lenguaje fue ampliamente adoptado por los científicos para escribir programas numéricamente intensivos, que incentivó a los escritores de compiladores a producir compiladores que pudieran generar un código más rápido y más eficiente. La inclusión en el lenguaje de un tipo de datos y de la aritmética de números complejos amplió la gama de aplicaciones para las cuales el lenguaje se adaptaba especialmente e hizo al FORTRAN especialmente adecuado para aplicaciones técnicas tales como la ingeniería eléctrica. Modularidad Puntuación 3: Sustentación: impone una disciplina a la construcción de programas, que tiene como pilar la descomposición del programa en módulos: porciones de código que cumplen funciones diferenciadas. Facilidades de entrada y salida Puntuación: 2 Sustentación: En Fortran, hay dos maneras de realizar entradas/salidas: • entrada/salida dirigida por lista. En este caso, el formato de los datos depende de sus tipos (enteros, reales, etc.) y del computador. Se dice que es una entrada/salida con formato libre. • entrada/salida con formatos. El programador define la manera exacta en que quiere leer/escribir los datos. https://ocw.unican.es/pluginfile.php/1904/course/section/2188/Curs o-Fortran-7.pdf Eficiencia Puntuación: 3 Sustentación: Es un lenguaje muy eficiente para un tipo de problemas en concreto para el cálculo matemático.
  • 5. 4 Transportabilidad Puntuación 3: Sustentación: Uno de los mayores beneficios potenciales de FORTRAN 90 era la transportabilidad entre SIMD y las supercomputadoras paralelas/vectoriales. Conforme ambas arquitecturas fueron reemplazadas con multiprocesadores con memoria uniforme compartida, FORTRAN 77 se convirtió en el lenguaje que ofrecía la máxima transportabilidad entre las computadoras usadas típicamente por los programadores de cómputo de alto rendimiento. Generalidades Puntuación 3: es un lenguaje de programación de alto nivel de propósito general,2 procedimental3 e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica. Imperativo Puntuación: 3 Sustentación: contiene los comandos a ser ejecutados en el momento en que corre un programa. A las instrucciones imperativas de FORTRAN se les denomina “sentencias ejecutables”.
  • 6. 5 Lógicos (Declarativos) Puntuación 3: Sustentación: describe las áreas de datos, sus longitudes (tipos) y sus valores iniciales. Las instrucciones declarativas existen en la mayor parte de los lenguajes estructurados, aunque se les llama de maneras distintas. En FORTRAN se les denomina “sentencias no ejecutables”. Cáceres, Abdiel, 2004, Monterrey Ciudad de México, México. http://profesores.fi- b.unam.mx/ing_gpemn/cpi/basica/pdfs/Fortran4.pdf Funcionales Puntuación 3 Sustentación: Ha estado en uso continuo por más de medio siglo en áreas de cómputo intensivo tales como la predicción numérica del tiempo, análisis de elementos finitos, dinámica de fluidos computacional (CFD), física computacional y química computacional.
  • 7. 6 ALGOL Fragmento del código a evaluar (ALGOL 68) proc absmax=(ref[]real a)real: begin int i, k; real y:=0; comment De la matriz a se toma el elemento con el valor absoluto mayor y se coloca en y. x Los subíndices del elemento se colocan en i y k;peme comment i:= k:= 1⌊a; for p from 1⌊a by 1 to 1⌈a do for q from 2⌊a by 1 to 2⌈a do if abs a[p, q] > y then y:= abs a[p, q]; i:= p; k:= q fi od od; y end
  • 8. 7 IMPERATIVO Está bien programado sin embargo se necesitaba mejorar la forma de la secuencia de la programación. Criterio de Evaluación ALGOL Expresividad Puntuación: 0 Bien definido Puntuación: 1 transportabilidad Puntuación: 1 tipos de estructuras de datos Puntuación: 0 modularidad Puntuación: 3 facilidades de entrada y salida Puntuación: 1 eficiencia Puntuación: 0 generalidades Puntuación: 1 imperativo Puntuación: 2 lógicos (declarativos) Puntuación: 1 funcionales Puntuación: 1
  • 9. 8 Criterio de Evaluación Pascal Expresividad Puntuación:3 Sustentación: Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipificado. Esto implica que: El código esta dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado. Bien definido Puntuación: 3 Sustentación: Object Pascal (Embarcadero Delphi) todavía se utiliza para el desarrollo de aplicaciones Windows, pero también tiene la capacidad de compilación cruzada del mismo código para Mac, iOS y Android. Otra versión multiplataforma llamada Free Pascal, con el IDE Lazarus, es popular entre los usuarios de Linux, ya que también ofrece desarrollo escribe una vez, compila para todos (write once, compile anywhere). CodeTyphon es una distribución de Lazarus con más paquetes preinstalados y compiladores cruzados.
  • 10. 9 Tipos de estructura de datos Puntuación: Sustentación: consiste en dotar al programa de un cierto orden dividiéndolo en bloques independiente uno de otros y, que se encarga de cada una de las tareas necesarias. Esto hace un programa fácil de leer y modificar.
  • 11. 10 Modularidad Puntuación: 2 Sustentación: Programación modular – Es una técnica para escribir programas grandes y complejos – Se basa en subdividir el programa en secciones más simples. Cada sección se llama módulo y realiza una única tarea • Módulos – Cada módulo tiene un nombre (identificador) y consiste en un conjunto de sentencias agrupadas mediante un begin y un end – El módulo (grupo de sentencias) se ejecuta cuando se escribe su nombre en el programa – Pascal utiliza dos tipos de módulos: procedimientos y funciones • Procedimientos: Agrupación de sentencias que efectúan una tarea específica a partir de una serie opcional de datos de entrada (parámetros). – Ejemplo: writeln (valor_entrada); • Funciones: Agrupación de sentencias que efectúan una tarea que da como resultado un valor específico a partir de una serie de datos de entrada (parámetros) – Ejemplo: valor_salida:=sqrt(valor_entrada);
  • 12. 11 Facilidades de entrada y salida Puntuación: 3 Sustentación: Una sentencia de entrada en PASCAL toma una de las siguientes dos formas: Read (lista-de-variables) Read (imput, lista-de-variables) Y La sentencia básica de salida en PASCAL toma una de las dos formas Write (lista-de-salida) Write (output, lista-de- salida)Donde la lista de salida es una lista de valores a ser producidos.
  • 13. 12 Eficiencia Puntuación: Sustentación: Se trata de un lenguaje de propósito general, esto quiere decir que se puede emplear para construir todo tipo de aplicaciones. En la práctica también quiere decir que se trata de un lenguaje no diseñado para desarrollar ningún tipo específico de aplicaciones. Pero el PASCAL es especialmente útil para algo: para la enseñanza de buenos modos de programación. El PASCAL es hoy en día el lenguaje más usado para la enseñanza de la programación por varios motivos: • Posee unas reglas sencillas de sintaxis. • Es un lenguaje muy estructurado. • Realiza una comprobación exhaustiva de tipos de datos.
  • 14. 13 Transportabilidad Puntuación: 3 Sustentación: Object Pascal (Embarcadero Delphi) todavía se utiliza para el desarrollo de aplicaciones Windows, pero también tiene la capacidad de compilación cruzada del mismo código para Mac, iOS y Android. Otra versión multiplataforma llamada Free Pascal, con el IDE Lazarus, es popular entre los usuarios de Linux, ya que también ofrece desarrollo escribe una vez, compila para todos (write once, compile anywhere). CodeTyphon es una distribución de Lazarus con más paquetes preinstalados y compiladores cruzados. Generalidades Puntuación: 3 Sustentación: El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. Imperativo Puntuación: 3 Sustentación: El paradigma imperativo debe su nombre al papel dominante que desempeñan las sentencias imperativas, es decir aquellas que indican realizar una determinada operación que modifica los datos guardados en memoria.
  • 15. 14 Lógicos (Declarativos) Puntuación: 3 Sustentación: es la técnica utilizada para desarrollar instrucciones en una secuencia para lograr determinado objetivo. Es la organización y planificación de instrucciones en un algoritmo, con el objetivo de tornar visible la implementación de un programa o software. Funcionales Puntuación: 3 Sustentación: Los lenguajes funcionales priorizan el uso de recursividad y aplicación de funciones de orden superior para resolver problemas que en otros lenguajes se resolverán mediante estructuras de control (por ejemplo, ciclos). Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda.
  • 16. 15 Criterio de Evaluación C Expresividad Puntuación: 2 Sustentación: siempre fue distinguido como altamente expresivo y potencialmente muy económico dada su reducida cantidad de palabras clave y el poder de algunos de sus operadores (por ejemplo, de los punteros.) En la actualidad, sin embargo, es frecuente el deseo de soportar estructuras de programación cada vez más complejas (aunque con frecuencia con los mismos algoritmos) con lo cual las implementaciones en lenguaje C tienden a tornarse oscuras (e inseguras) frente a equivalentes en otros lenguajes. Bien definido Puntuación: 2 Sustentación: el principal problema radica en la gran cantidad de aspectos que son dejados a criterio del implementador, entre los cuales destaca el tamaño de los tipos de datos.
  • 17. 16 Tipos de estructura de datos Puntuación: 2 Sustentación: proporciona mecanismos que actualmente se consideran rudimentarios para proporcionar tipos de datos estructurados. Las estructuras (y uniones) se suelen utilizar para definir tipos complejos constituidos a partir de otros más simples (que a la vez pueden ser estructuras y/o uniones) con la posibilidad de crear identificadores auxiliares que simplifican la notación (typedef.) Modularidad Puntuación: 2 Sustentación: proporciona sólo dos niveles: componentes visibles dentro del archivo de código fuente, y componentes visibles globalmente (concretamente, funciones y variables.) Facilidades de entrada y salida Puntuación: 2, Sustentación: no proporciona instrucciones de I/O salvo mediante funciones de su "librería estándar", la cual fue diseñada en gran medida para aprovechar las facilidades del sistema de archivos Unix. En ese sentido, las funciones de I/O proporcionan acceso secuencial byte a byte o bloque a bloque, así como desplazamientos arbitrarios en la posición de lectura/escritura; esto en realidad depende de las facilidades inherentes al sistema operativo, pero están presentes en prácticamente todo sistema comercial moderno.
  • 18. 17 Eficiencia Puntuación: 3 Es un lenguaje potente y eficiente, permitiendo obtener programas rápidos y compactos. Transportabilidad Puntuación: 3 Sustentación: ha proporcionado como parte de la distribución del sistema operativo Unix (aunque en ocasiones, con un costo adicional) siempre siguiendo los lineamientos de sus creadores (K&R) por lo que es reconocido como uno de los lenguajes más difundidos y portables de la historia, al menos, hasta los años 80. Generalidades Puntuación: 2 Sustentación: suele ser utilizado para construir componentes básicos o de bajo nivel (notablemente, el kernel de muchos sistemas operativos). Imperativo Puntuación: 3 Sustentación: C es muy concretos y trabaja cerca del sistema, de esta forma, el código es, por un lado, fácilmente comprensible, pero, por el otro, requiere muchas líneas de texto fuente para describir lo que en los lenguajes de la programación declarativa se consigue con solo una parte de las instrucciones.
  • 19. 18 Lógicos (Declarativos) Puntuación: 1 Sustentación: Este lenguaje es más imperativo, porque los lenguajes declarativos no dicen cómo hacer una cosa, sino, más bien qué cosa hacer, a diferencia del lenguaje imperativo. Funcionales Puntuación 3: Sustentación: Un programa funcional está constituido enteramente por funciones; el programa principal es una función que toma como argumento la entrada al programa y genera la salida del programa como su resultado. Gonzales, Fabio, Colombia, Colombia file:///C:/Users/nilke/Desktop/21044-71292-1-PB.pdf
  • 20. 19 Criterio de Evaluación Ada Expresividad Puntuación: 3 Sentencia: Es bastante legible incluso para personas que no conocen el lenguaje. Es un lenguaje que no escatima en la longitud de las palabras clave, en la filosofía de que un programa se escribe una vez, se modifica decenas de veces y se lee miles de veces (legibilidad es más importante que rapidez de escritura). Bien definido Puntuación: 3 Sustentación: Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad de C++.
  • 21. 20 Tipos de estructura de datos Puntuación: 3 Sustentación: La parte declarativa incluye las declaraciones de cualquier objeto. Puede contener definiciones de variables y procedimientos. · Tipo integer: Representa una secuencia de uno o más dígitos. Ada permite que cualquiera de los dígitos (excepto el primero) esté precedido por el carácter “_” para dar legibilidad al programa. · Tipo flotante: se distinguen por la presencia de un punto decimal. Pueden incluir un exponente. · Tipo Boolean: Los valores booleanos están denotados por unos de dos literales predefinidos: true y false. · Tipo Character: Los valores de este tipo representan valores ASCII. Son caracteres encerrados entre comillas simples. · Tipo string: todos los tipos anteriores son tipos escalares, esto es, que tiene valores que no pueden ser divididos en partes más pequeñas. Ada tiene un tipo predefinido que es un tipo compuesto, el tipo String, que consiste de una secuencia de valores character. Un literal string es una secuencia de cero, o más caracteres encerrados entre comillas dobles.
  • 22. 21 Modularidad Puntuación: 2 Sustentación: El objetivo anterior se puede conseguir dividendo un programa en partes, cada una de ellas siendo un grupo de elementos, de forma que: I Cada elemento de un grupo esta fuertemente relacionado con otros elementos de dicho grupo. I Las dependencias entre elementos de grupos distintos son las menores posibles, y en cualquier caso están bien documentadas. I Cada parte puede ser reutilizable en mas de un programa
  • 23. 22 Facilidades de entrada y salida Puntuación: 3 Sentencia: Las operaciones básicas de entrada/salida de Ada se encuentran definidas en la librería estándar Text_IO que habrá que incluir en la cláusula de contexto de una unidad de programa que pretenda usarlas: With Text_Io; Use Text_Io; También se puede realizar entrada/salida de valores del tipo predefinido Integer y sus subtipos usando el paquete no génerico Ada.Integer_Text_Io; y del tipo predefinido Float y sus subtipos usando el paquete no genérico Ada.Float_Text_Io. with Ada.Integer_Text_Io, Ada.Float_Text_Io; use Ada.Integer_Text_Io, Ada.Float_Text_Io;
  • 24. 23 Eficiencia Puntuación: Sentencia: Es bastante legible incluso para personas que no conocen el lenguaje. Es un lenguaje que no escatima en la longitud de las palabras clave, en la filosofía de que un programa se escribe una vez, se modifica decenas de veces y se lee miles de veces (legibilidad es más importante que rapidez de escritura). Transportabilidad Puntuación: 3 Sustentación: Se puede obtener mayor transportabilidad y mejor mantenimiento si se pueden separar los detalles de la representación de los datos y las especificaciones de las operaciones lógicas sobre los mismos. Generalidades Puntuación: 3 Sustentación: es un lenguaje de programación orientado a objetos y fuertemente tipado de forma estática que fue diseñado por Jean Ichbiah de CII Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje multipropósito, orientado a objetos y concurrente, pudiendo llegar desde la facilidad de Pascal hasta la flexibilidad de C++.
  • 25. 24 Imperativo Puntuación: 3 Sustentación: Los lenguajes de programación imperativa son como unas instrucciones paso a paso (cómo) redactadas para el ordenador. Describen de forma explícita qué pasos deben llevarse a cabo y en qué secuencia para alcanzar finalmente la solución deseada. Lógicos (Declarativos) Puntuación: Sustentación: En Ada, todo el programa es un único procedimiento, que puede contener subprogramas (procedimientos o funciones). Cada sentencia se cierra con end qué_cerramos. Es un modo de evitar errores y facilitar la lectura. No es necesario hacerlo en el caso de subprogramas, aunque todos los manuales lo aconsejan y casi todos los programadores de Ada lo hacen. Funcionales Puntuación: 2 Sustentación: Un programa en estos lenguajes consiste en una especificación de la función recursiva que queremos calcular, junto con los argumentos sobre los que se aplica.
  • 26. 25 LÓGICOS Le falta pulir un poco lo que sería la programación funcional, programación con restricciones, programas DSL e híbridos. Criterio de Evaluación C++ Expresividad Puntuación: 3 Bien definido Puntuación: 3 transportabilidad Puntuación: 3 tipos de estructuras de datos Puntuación: 1 modularidad Puntuación: 3 facilidades de entrada y salida Puntuación: 3 eficiencia Puntuación: 3 generalidades Puntuación: 3 imperativo Puntuación: 3 lógicos (declarativos) Puntuación: 2 funcionales Puntuación: 3
  • 27. 26 Criterio de Evaluación Java Expresividad Puntuación: 3 Sustentación: El lenguaje de programación expresivo permite expresar con facilidad procesos o estructuras complejas. Por lo tanto, la expresividad se define como la capacidad de decir ideas en cómputo, ayudado a través de las estructuras de datos que el lenguaje que uses tiene. http://la-morsa.blogspot.com/2011/02/sobre-la-expresividad- de-los-lenguajes.html Bien definido Puntuación: 3 Sustentación: Desde el punto de vista bien definido quiere decir que el lenguaje cumple con lo necesario a lo que está orientado a objetos e imperativo.
  • 28. 27 Tipos de estructura de datos Puntuación: 3 Sustentación: Los tipos de datos como Double, Float, Boolean, entre otros. Se caracterizan por poder almacenar un único valor. Salvo este reducido conjunto de tipos de datos primitivos, que facilitan el trabajo con números, caracteres y valores booleanos, todos los demás tipos de Java son objetos, también llamados tipos estructurados o Clases. https://www.campusmvp.es/recursos/post/variables-y-tipos-de- datos-en-java-tipos-simples-clases-y-tipos-envoltorio-o- wrapper.aspx Modularidad Puntuación: 3 Sustentación: En los lenguajes orientados a objetos, como Java, el concepto esencial es el de clase, y los programas consisten básicamente en conjuntos de declaraciones de clases. En la mayoría de los lenguajes OO, existen, sin embargo, mecanismos para agrupar las clases relacionadas en conjuntos de clases, asimilables a los módulos de los lenguajes no OO. https://lsi.ugr.es/curena/doce/lp/tr-11-12/lp- c08-impr.pdf
  • 29. 28 Facilidades de entrada y salida Puntuación: 3 Sustentación: Los programas necesitan comunicarse con su entorno, tanto para recoger datos e información que deben procesar, como para devolver los resultados obtenidos. http://www.euskalnet.net/jaoprogramador/j2ee/java/java25.htm Eficiencia Puntuación: 3 Sustentación: Depender de parámetros cómo cuál es la plataforma sobre la que se ejecuta, la versión de las librerías, la versión del compilador/intérprete/máquina virtual y los parámetros de optimización que se le suministran. Transportabilidad Puntuación: 2 Sustentación: La Transportabilidad/portabilidad de Java le permite estar en dispositivos desde celulares Android, Ordenadores, entre otros. Java no se compila habitualmente en código nativo, sino en bytecode. https://medium.com/techwomenc/como-elegir-el-lenguaje-de- programaci%C3%B3n-adecuado-402503a6a230 Observación:
  • 30. 29 En cuanto a Java para utilizarlo en Celulares es algo complicado con respecto a leer y guardar archivos. Generalidades Puntuación: 3 Sustentación: Java es un lenguaje de programación sencillo y a la vez potente, que permite crear cualquier tipo de aplicación de propósito general. Imperativo Puntuación: 3 Sustentación: En la programación se considera imperativo a los lenguajes que calculan un conjunto de instrucciones que establecen explícitamente como se debe manipular la información digital presente en memoria o como se debe recoger/ enviar la información desde/hacia los dispositivos.
  • 31. 30 Lógicos (Declarativos) Puntuación: 2 Sustentación: Calcula el proceso de encontrar qué elementos de un dominio cumple determinada relación definida sobre dicho dominio, o bien determinar si un determinado elemento cumple o no dicha relación. Observación: Dependiendo del punto de vista en el que se utilice, Java está perfectamente equilibrado. Funcionales Puntuación: 2 Sustentación: Un cálculo es el proceso de aplicar una función recursiva a un valor de su dominio para obtener el correspondiente valor del rango (el resultado). Observación: Desde mi punto de vista Java tiene un buen soporte para ello. Sin embargo, muchas veces no se tiene muy claro cómo aplicarlo.
  • 32. 31 Criterio de Evaluación C# Expresividad, Puntuación: 3, cumple con los requerimientos de esta característica. Sustentación: Un lenguaje se considera expresivo cuando: Es bastante fácil aprender, la gran mayoría de los desarrolladores que lo utilizan pueden ser muy productivos; e igualmente expresivo en casi todo su dominio de utilidad. Esto concuerda con la definición de expresividad trabajada en clase, la cuál citamos “expresividad es la facilidad con la cual un lenguaje puede expresar procesos y estructuras complejas”. Características que promueven su rápido aprendizaje e implementación al utilizar expresiones cortas y claras para representar ideas. Para medir eso, tomamos en cuenta el rango Inter cuartil (IQR; la distancia entre los percentiles 25 y 75) como un acercamiento para estos dos criterios, y clasifiquemos los lenguajes a través del mismo. Adjuntamos una imagen obtenida de los benchmarks de expresividad de diversos lenguajes de programación, donde se observa a C# clasificado como uno de los lenguajes más expresivos, contando con esta información aseguramos que ambos criterios anteriormente mencionados se cumplen. http://dberkholz- media.redmonk.com/dberkholz/files/2013/03/expressiveness_by_iqr_weighted2.png Por lo tanto, comprobamos mediante esta clasificación que C# cumple con las características evaluadas de expresividad y por consecuente se considera un lenguaje altamente expresivo. Bien definido El siguiente criterio de evaluación es “Bien definido”, y trata sobre que el flujo del programa lleve a un resultado. Los lenguajes de programación que cuentan con este criterio manejan paradigmas como: imperativos, declarativos y orientación a objetos. Puntuación: 3, cumple con los requerimientos de la característica Sustentación: En el caso de C# el paradigma implementado es orientado a objetos, al tener un paradigma que define al lenguaje se considera “bien definido”. C# es un lenguaje de programación que se ha diseñado para generar diversas aplicaciones que se ejecutan en .NET Framework. C# proporciona compatibilidad completa para la programación orientada a objetos incluida la abstracción, la encapsulación, la herencia y el polimorfismo. Todas estas características validan que C# cumple con los criterios evaluados en el paradigma de programación orientado a objetos. Tipos de estructura de datos En Informática, una estructura de datos es una forma particular de organizar datos en una computadora para que puedan ser utilizados de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas. Puntuación: 2, cumple, pero con observaciones
  • 33. 32 Sustentación: Los tipos de estructura tienen semántica de valores. Es decir, una variable de un tipo de estructura contiene una instancia del tipo. De forma predeterminada, los valores de variable se copian al asignar, pasar un argumento a un método o devolver el resultado de un método. En el caso de una variable de tipo de estructura, se copia una instancia del tipo. Para más información, vea Tipos de valor. Normalmente, los tipos de estructura se usan para diseñar tipos de pequeño tamaño centrados en datos que proporcionan poco o ningún comportamiento. Por ejemplo, en .NET se usan los tipos de estructura para representar un número (entero y real), un valor booleano, un carácter Unicode, una instancia de tiempo. Si le interesa el comportamiento de un tipo, considere la posibilidad de definir una clase. Los tipos de clase tienen semántica de referencias. Es decir, una variable de un tipo de clase contiene una referencia a una instancia del tipo, no la propia instancia. Dado que los tipos de estructura tienen semántica del valor, le recomendamos que defina tipos de estructura inmutables. Al diseñar un tipo de estructura, tiene las mismas funciones que con un tipo de clase, con las siguientes excepciones:  No se puede declarar un constructor sin parámetros. Cada tipo de estructura ya proporciona un constructor sin parámetros implícito que genera el valor predeterminado del tipo.  No se puede inicializar una propiedad o un campo de instancia en su declaración. Pero se puede inicializar un campo static o const, o una propiedad estática en su declaración.  Un constructor de un tipo de estructura debe inicializar todos los campos de instancia del tipo.  Un tipo de estructura no puede heredar de otro tipo de estructura o clase ni puede ser la base de una clase. Pero un tipo de estructura puede implementar interfaces.  No se puede declarar un finalizador dentro de un tipo de estructura. Modularidad, La modularidad es la capacidad que tiene un sistema de ser estudiado, visto o entendido como la unión de varias partes que interactúan entre sí y que trabajan para alcanzar un objetivo común, realizando cada una de ellas una tarea necesaria para la consecución de dicho objetivo. Esta es la definición estudiada en clase. Puntuación: 3, cumple con los requisitos de la característica Sustentación:
  • 34. 33 Presentamos la definición de los subprogramas o funciones aplicables para C y todos sus derivados:  Cada "trozo de programa" independiente será más fácil de programar, al realizar una función breve y concreta.  El "programa principal" será más fácil de leer, porque no necesitará contener todos los detalles de cómo se hace cada cosa.  Evitaremos mucho código repetitivo.  Podremos repartir el trabajo, para que cada persona se encargue de realizar un "trozo de programa", y finalmente se integrará el trabajo individual de cada persona (aunque para proyectos realmente grandes, pronto veremos una alternativa que hace que el reparto y la integración sean más sencillos). Esos "trozos" de programa son lo que suele llamar "subrutinas", "procedimientos" o "funciones". En el lenguaje C y sus derivados (entre los que está C#), el nombre que más se usa es el de funciones. Conociendo estas características podemos concluir que cumple con el objetivo de la modularidad, por lo tanto el programa tiene esta propiedad. Adjuntamos video donde se utiliza la modularidad en C#: https://videosinformaticablog.wordpress.com/tutorial-curso-c-7-modularidad-y- encapsulamiento/ Facilidades de entrada y salida, Puntuación: 3, cumple con los requisitos de la característica. Sustentación: En C#, la entrada y la salida de datos se pueden manejar a través de los métodos de la clase Console. Entrada de datos desde el teclado. Para la entrada de datos por medio del teclado se pueden utilizar los métodos Read() y ReadLine() de la clase Console. Ejemplos: System.Console.Read( ) ; // Lee el siguiente carácter desde el flujo de la entrada estándar. System.Console.ReadLine( ) ; // Lee la siguiente línea de caracteres desde el flujo de la entrada estándar. Salida de datos hacia la pantalla. La salida de datos hacia la pantalla se puede realizar utilizando los métodos Write y WriteLine( ) de la clase Console.
  • 35. 34 Estas funcionalidades nos demuestran que existe la facilidad de entrada y salida de datos en C#. Eficiencia El criterio de evaluación eficiencia, se refiere a que tan rápido se ejecuta un programa. Puntuación: 3, cumple con los requerimientos de la característica Sustentación: C# mantiene una velocidad de ejecución bastante buena con respecto a otros lenguajes que son considerados eficientes. Como prueba adjuntamos este benchmark: Es destacable como C# es el más rápido con 2.01, no tengo ni idea de si eso es así por la implementación de Mono, del lenguaje en sí, o si es que no he hecho bien el benchmark en C# pero lo cierto es que estoy gratamente impresionado. Le sigue muy de cerca C con 2.19s, después la implementación PyPy de Python 2.7 con 2.70, tras él le toca el turno a Go con 2.93, la implementación de CPython 2.7 le sigue con 3.86 y muy tristemente el último lugar lo ocupa C++ con un 4.24 https://www.genbeta.com/desarrollo/benchmark-entre-c-c-c-python-y-go Transportabilidad Se define como la característica que posee un software para ejecutarse en diferentes plataformas es decir la portabilidad que se refiere exclusivamente a la propiedad que posee un software que le permite ser ejecutado en diferentes plataformas y/o sistemas operativos. Puntuación: 3, cumple con los requerimientos de la propiedad. Sustentación: Para facilitar la migración de programadores, C# no sólo mantiene una sintaxis muy similar a C, C++ o Java que permite incluir directamente en código escrito en C# fragmentos de código escrito en estos lenguajes, sino que el CLR también ofrece, a través de los llamados Platform Invocation Services (PInvoke), la posibilidad de acceder a código nativo escrito como funciones sueltas no orientadas a objetos tales como las DLLs de la API Win32. Nótese que la capacidad de usar punteros en código inseguro permite que se pueda acceder con facilidad a este tipo de funciones, ya que éstas muchas veces esperan recibir o devuelven punteros. También es posible acceder desde código escrito en C# a objetos COM. Para facilitar esto, el .NET Framework SDK incluye una herramientas llamadas tlbimp y regasm mediante las que es posible generar automáticamente clases proxy que permitan, respectivamente, usar objetos COM desde .NET como si de objetos .NET se tratase y registrar objetos .NET para su uso desde COM.
  • 36. 35 Finalmente, también se da la posibilidad de usar controles ActiveX desde código .NET y viceversa. Para lo primero se utiliza la utilidad aximp, mientras que para lo segundo se usa la ya mencionada regasm. Generalidades Este criterio hace alusión a las características o construcciones propias del lenguaje y deben ser aplicables uniformemente y con las mínimas restricciones en todos los contextos posibles. Puntuación: 3, cumple con los requerimientos de la propiedad. Sustentación: C# incorpora en el propio lenguaje elementos que a lo largo de los años ha ido demostrándose son muy útiles para el desarrollo de aplicaciones y que en otros lenguajes como Java o C++ hay que simular, como un tipo básico decimal que permita realizar operaciones de alta precisión con reales de 128 bits (muy útil en el mundo financiero), la inclusión de una instrucción foreach que permita recorrer colecciones con facilidad y es ampliable a tipos definidos por el usuario, la inclusión de un tipo básico string para representar cadenas o la distinción de un tipo bool específico para representar valores lógicos. En este aspecto, es importante señalar que C# incorpora muchos elementos de los que Java carece (sistema de tipos homogéneo, propiedades, indexadores, tablas multidimensionales, operadores redefinibles, etc.) y que según los benchmarks pruebas de velocidad de ejecución del código escrito en C# es ligeramente superior a su respectiva versión en Java. Imperativo Puntuación: 3, cumple. Sustentación: En la programación imperativa se describen sentencias que modifican el estado de un programa. En muchos sentidos la programación imperativa es la programación natural para las CPUs que se basan en ese paradigma al nivel más básico. En este paradigma se expresa como debe solucionarse un problema especificando una secuencia de acciones a realizar a través de uno o más procedimientos denominados subrutinas o funciones. Dentro de esta categoría se engloban la programación estructurada que restringe el uso de la instrucción goto, la programación modular y la programación orientada a objetos. Cada una de estas extensiones o evoluciones han permitido mejorar la mantenibilidad y la calidad de los programas imperativos. Lógicos (Declarativos) Puntuación: 0, no cumple con los requisitos de la característica. Sustentación:
  • 37. 36 A la programación imperativa se le contrapone la programación declarativa en la que se describe la lógica de computación necesaria para resolver un problema sin describir un flujo de control de ningún tipo. Esta característica no la cumple el lenguaje C#. Funcionales La programación funcional puede ayudarnos a crear software más robusto, mantenible y fácil de testear. Puntuación: 3, cumple con los requerimientos de la característica. Sustentación: La programación funcional se centra en las funciones. En un programa funcional, todos los elementos pueden entenderse como funciones y el código puede ejecutarse mediante llamadas de función secuenciales. Por el contrario, no se asignan valores de forma independiente. Una función se imagina mejor como una variante especial de un subprograma. Esta es reutilizable y, a diferencia de un procedimiento, devuelve directamente un resultado. Como ya hemos mencionado anteriormente en la característica de modularidad, C# permite el desarrollo de esta mediante el uso de funciones o subprogramas, por tanto, comprobamos el cumplimiento de las características de funcionalidad.