Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 14

Unidad Educativa Salesiana Maria Auxiliadora

TRABAJO DE SUPLETORIO
PROGRAMACIÓN

NOMBRE: Sammy Ballesteros


DOCENTE: Hugo Aguirre
CURSO: 3RO “A” de Informática

2021-2022
Proyecto de supletorio

Objetivo: Seleccionar las técnicas adecuadas para solucionar problemas


mediante la codificación y representación de algoritmos y programas.
Aplicar sentencias de control en la solución de problemas, empleando software de
programación privativo o libre.

Actividades

1. DESARROLLAR UN CUADRO COMPARATIVO DE LENGUAJES DE


PROGRAMACION DE ALTO Y BAJO NIVEL QUE MAS SE UTILICEN AL
PROGRAMAR.

Lenguaje ¿QUE ES? VENTAJAS DESVENTAJAS SISTEMA


OPERATIVO
C++ Lenguaje de Es potente en No es atractivo Sirve para
programación cuanto a lo que visualmente todos los
orientada a se refiere a sistemas
objetos creado creación de No soporta para operativos
por Bjarne sistemas creación de pero cada
Stroustrup complejos un páginas web uno con su
lenguaje muy respectiva
robusto versión para
dicho sistema
HTML Lenguaje Sencillo que Lenguaje Se pueden
utilizado para la permite estático. ver en todos
creación de describir los sistemas
páginas web. hipertexto. La operativos,
HTML significa interpretación pero la
“hypertext mark- Archivos de cada interpretación
up language”, pequeños. navegador varía según
que significa, puede ser el navegador
“lenguaje para diferente. que esté
el formato de Lenguaje de utilizando.
documentos de fácil
hipertexto”, es aprendizaje. Guarda muchas
decir, texto etiquetas que
presentado de Lo admiten pueden
forma todos los convertirse en
estructurada y exploradores “basura” y
agradable, con dificultan la
enlaces corrección.
(hyperlinks) que
conducen a Lento para
otros ejecutar
documentos o archivos
fuentes pesados

VISUAL Es un lenguaje Posee una Las críticas Sirve para


BASIC de curva de hechas en las hacer
programación aprendizaje ediciones de aplicaciones
dirigido por muy rápida. visual Basic de escritorio
eventos, anteriores a
desarrollado por Integra el vb.net son
el alemán Alan diseño e variadas, se
Cooper para implementació citan entre
Microsoft. n de ellas: Problema
formularios de de versionado
Windows. asociado con
varias librerías
DLL, conocido
Permite usar como DLL
con facilidad la HELL.
plataforma de Pobre soporte
los sistemas para
Windows, dado programación
que tiene orientada a
acceso objetos
prácticamente
total al api de
Windows, Incapacidad
incluidas para crear
librerías aplicaciones
actuales. multihilo, sin
tener que
recurrir a
Es uno de los llamadas del
lenguajes de api de
uso más Windows.
extendido, por
lo que resulta
fácil encontrar
información,
documentación
y fuentes para
los proyectos.
Fácilmente
extensible
mediante
librerías DLL y
componentes
ActiveX de
otros
lenguajes.

C# Es un lenguaje Declaraciones Se tiene que La plataforma


de en el espacio conseguir una .Net Sirve
programación de nombres: al versión reciente para hacer
orientado. empezar a de visual aplicaciones
programar studio .net, por de escritorio,
A objetos algo, se puede otra parte, se aplicaciones
desarrollado y definir una o tiene que tener web y
estandarizado más clases algunos móviles.
por Microsoft dentro de un requerimientos
como parte de mismo espacio mínimos del Sistema
su plataforma de nombres. sistema para operativo
net. poder trabajar Windows
Tipos de datos: adecuadamente
en c# existe un tales como
Los contar con
programadores rango más
Windows nt 4 o
le consideran el amplio y
superior, tener
primo hermano definido de
tipos de datos alrededor de 4
de JAVA gigas de
que los que se
encuentran en espacio libre
c, c++ o java. para la pura
instalación, etc.
Atributos: cada
miembro de
una clase tiene
un atributo de
acceso del tipo
público,
protegido,
interno, interno
protegido y
privado.

XML Es un estándar. Permite la El mayor informe Todos los


Crea sus propias estructuración que las Sistemas
etiquetas de la aplicaciones XML. Operativos
permitiendo la información Es que el
definición, navegador o el
transmisión, visualizador que el
Es la base de la
usuario utilice no
validación e nueva cuente con un
interpretación de generación de parecer capas de
datos entre aplicaciones visualizar el
aplicaciones y web– contenido del
entre intercambio de documento
organizaciones. datos

XML define datos Poder etiquetar


portables al igual los datos con su
que java define significado
código portable
Un lenguaje
Lenguaje abierto, extendible
estándar
derivado de
SGML
optimizando
para su uso en la
web

JAVA Es un lenguaje Se pueden Esperar la Sirve para


orientado a
realizar actualización todos los
objetos, de unadistintos siguiente para sistemas
plataforma aplicativos, que sea más operativos y
independiente, como son rápido. si no es la
fue desarrollado
applets, que versión
por la compañíason adecuada
SUN aplicaciones para dicho
Microsystems especiales, que sistema, la
ahora es
se ejecutan misma
propietario dentro de un aplicación
ORACLE. navegador al java se
ser cargada encarga de
Maneja algunas una página descargas o
plataformas de HTML en un actualizar
desarrollo: servidor web, versión para
por lo general un excelente
los applets (Ya desempeño
Java Platform,
Standard son historia) en el pc.
Edition o Java son programas
SE pequeños y de Algunos de
propósitos los sistemas
Java Platform específicos. operativos
Enterprise más
Edition o Java Puede destacados
EE desarrollar en los que
aplicaciones de funciona la
Java Platform escritorio que aplicación:
Micro Edition o se ejecutan en
Java ME forma Unix, Linux,
independiente, Solaris,
es decir con la Windows,
programación mac.
java, se
pueden realizar
aplicaciones
como un
procesador de
palabras, una
hoja que sirva
para cálculos,
una aplicación
gráfica, etc.

Se puede
realizar
soluciones
empresariales
en un entorno
web

Soporta el
desarrollo de
aplicaciones
móviles
2.- INVESTICAR LAS CARATERISTICAS DE 3 LENGUAJES DE
PROGRAMACION PARA DESARROLLAR APP MOVIL

¿Qué lenguaje se utilizan para crear una app móvil?

 Para llevar adelante aplicaciones móviles, podemos utilizar diferentes lenguajes


de programación. Los siguientes 3 lenguajes de programación para móvil son los
más demandados en el mercado:

1. Java

En primer lugar, si estás pensando en un lenguaje de programación de


aplicaciones para dispositivos móviles, posiblemente estés pensando en Java. Y
es que, por ejemplo, Android fue diseñado con este lenguaje. 

Las características principales que nos ofrece Java respecto a cualquier otro
lenguaje de programación, son:

Es SIMPLE:

Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las


características menos usadas y más confusas de éstos. C++ es un lenguaje que
adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por
ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil
aprendizaje.

Java elimina muchas de las características de otros lenguajes como C++, para
mantener reducidas las especificaciones del lenguaje y añadir características muy
útiles como el garbage collector (reciclador de memoria dinámica). No es
necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como
es un thread de baja prioridad, cuando entra en acción, permite liberar bloques de
memoria muy grandes, lo que reduce la fragmentación de la memoria.

Java reduce en un 50% los errores más comunes de programación con lenguajes
como C y C++ al eliminar muchas de las características de éstos, entre las que
destacan:

 aritmética de punteros
 no existen referencias
 registros (struct)
 definición de tipos (typedef)
 macros (#define)
 necesidad de liberar memoria (free)

Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct,


typedef), ya que las clases son algo parecido.

Además, el intérprete completo de Java que hay en este momento es muy


pequeño, solamente ocupa 215 Kb de RAM.

Es SEGURO:

La seguridad en Java tiene dos facetas. En el lenguaje, características como los


punteros o el casting implícito que hacen los compiladores de C y C++ se eliminan
para prevenir el acceso ilegal a la memoria. Cuando se usa Java para crear un
navegador, se combinan las características del lenguaje con protecciones de
sentido común aplicadas al propio navegador.

El lenguaje C, por ejemplo, tiene lagunas de seguridad importantes, como son


los errores de alineación. Los programadores de C utilizan punteros en conjunción
con operaciones aritméticas. Esto le permite al programador que un puntero
referencie a un lugar conocido de la memoria y pueda sumar (o restar) algún valor,
para referirse a otro lugar de la memoria. Si otros programadores conocen
nuestras estructuras de datos pueden extraer información confidencial de nuestro
sistema. Con un lenguaje como C, se pueden tomar números enteros aleatorios y
convertirlos en punteros para luego acceder a la memoria:

printf( "Escribe un valor entero: " );


scanf( "%u",&puntero );
printf( "Cadena de memoria: %s\n",puntero );

Otra laguna de seguridad u otro tipo de ataque, es el Caballo de Troya. Se


presenta un programa como una utilidad, resultando tener una funcionalidad
destructiva. Por ejemplo, en UNIX se visualiza el contenido de un directorio con el
comando ls. Si un programador deja un comando destructivo bajo esta referencia,
se puede correr el riesgo de ejecutar código malicioso, aunque el comando siga
haciendo la funcionalidad que se le supone, después de lanzar su carga
destructiva. Por ejemplo, después de que el caballo de Troya haya enviado por
correo el /etc/shadow a su creador, ejecuta la funcionalidad de ls persentando el
contenido del directorio. Se notará un retardo, pero nada inusual.

El código Java pasa muchos tests antes de ejecutarse en una máquina. El código


se pasa a través de un verificador de byte-codes que comprueba el formato de los
fragmentos de código y aplica un probador de teoremas para detectar fragmentos
de código ilegal -código que falsea punteros, viola derechos de acceso sobre
objetos o intenta cambiar el tipo o clase de un objeto-.

Si los byte-codes pasan la verificación sin generar ningún mensaje de error,


entonces sabemos que:
 El código no produce desbordamiento de operandos en la pila
 El tipo de los parámetros de todos los códigos de operación son conocidos
y correctos
 No ha ocurrido ninguna conversión ilegal de datos, tal como convertir
enteros en punteros
 El acceso a los campos de un objeto se sabe que es legal: public, private,
protected
 No hay ningún intento de violar las reglas de acceso y seguridad
establecidas

El Cargador de Clases también ayuda a Java a mantener su seguridad, separando


el espacio de nombres del sistema de ficheros local, del de los recursos
procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya,
ya que las clases se buscan primero entre las locales y luego entre las
procedentes del exterior.

Las clases importadas de la red se almacenan en un espacio de nombres privado,


asociado con el origen. Cuando una clase del espacio de nombres privado accede
a otra clase, primero se busca en las clases predefinidas (del sistema local) y
luego en el espacio de nombres de la clase que hace la referencia. Esto
imposibilita que una clase suplante a una predefinida.

En resumen, las aplicaciones de Java resultan extremadamente seguras, ya que


no acceden a zonas delicadas de memoria o de sistema, con lo cual evitan la
interacción de ciertos virus. Java no posee una semántica específica para
modificar la pila de programa, la memoria libre o utilizar objetos y métodos de un
programa sin los privilegios del kernel del sistema operativo. Además, para evitar
modificaciones por parte de los crackers de la red, implementa un método
ultraseguro de autentificación por clave pública. El Cargador de Clases puede
verificar una firma digital antes de realizar una instancia de un objeto. Por tanto,
ningún objeto se crea y almacena en memoria, sin que se validen los privilegios de
acceso. Es decir, la seguridad se integra en el momento de compilación, con el
nivel de detalle y de privilegio que sea necesario.

Dada, pues la concepción del lenguaje y si todos los elementos se mantienen


dentro del estándar marcado por Sun, no hay peligro. Java imposibilita, también,
abrir ningún fichero de la máquina local (siempre que se realizan operaciones con
archivos, éstas trabajan sobre el disco duro de la máquina de donde partió el
applet), no permite ejecutar ninguna aplicación nativa de una plataforma e impide
que se utilicen otros ordenadores como puente, es decir, nadie puede utilizar
nuestra máquina para hacer peticiones o realizar operaciones con otra. Además,
los intérpretes que incorporan los navegadores de la Web son aún más
restrictivos. Bajo estas condiciones (y dentro de la filosofía de que el único
ordenador seguro es el que está apagado, desenchufado, dentro de una cámara
acorazada en un bunker y rodeado por mil soldados de los cuerpos especiales del
ejército), se puede considerar que Java es un lenguaje seguro y que los applets
están libres de virus.
Respecto a la seguridad del código fuente, no ya del lenguaje, JDK proporciona un
desemsamblador de byte-code, que permite que cualquier programa pueda ser
convertido a código fuente, lo que para el programador significa una vulnerabilidad
total a su código. Utilizando javap no se obtiene el código fuente original, pero sí
desmonta el programa mostrando el algoritmo que se utiliza, que es lo realmente
interesante. La protección de los programadores ante esto es utilizar llamadas a
programas nativos, externos (incluso en C o C++) de forma que no sea
descompilable todo el código; aunque así se pierda portabilidad. Esta es otra de
las cuestiones que Java tiene pendientes.

Es PORTABLE:

Más allá de la portabilidad básica por ser de arquitectura independiente, Java


implementa otros estándares de portabilidad para facilitar el desarrollo. Los
enteros son siempre enteros y además, enteros de 32 bits en complemento a 2.
Además, Java construye sus interfaces de usuario a través de un sistema
abstracto de ventanas de forma que las ventanas puedan ser implantadas en
entornos Unix, Pc o Mac.

Es INTERPRETADO:

El intérprete Java (sistema run-time) puede ejecutar directamente el código objeto.


Enlazar (linkar) un programa, normalmente, consume menos recursos que
compilarlo, por lo que los desarrolladores con Java pasarán más tiempo
desarrollando y menos esperando por el ordenador. No obstante, el compilador
actual del JDK es bastante lento. Por ahora, que todavía no hay compiladores
específicos de Java para las diversas plataformas, Java es más lento que otros
lenguajes de programación, como C++, ya que debe ser interpretado y no
ejecutado como sucede en cualquier programa tradicional.

Se dice que Java es de 10 a 30 veces más lento que C, y que tampoco existen en
Java proyectos de gran envergadura como en otros lenguajes. La verdad es que
ya hay comparaciones ventajosas entre Java y el resto de los lenguajes de
programación, y una ingente cantidad de folletos electrónicos que supuran
fanatismo en favor y en contra de los distintos lenguajes contendientes con Java.
Lo que se suele dejar de lado en todo esto, es que primero habría que decidir
hasta que punto Java, un lenguaje en pleno desarrollo y todavía sin definición
definitiva, está maduro como lenguaje de programación para ser comparado con
otros; como por ejemplo con Smalltalk, que lleva más de 20 años en cancha.

La verdad es que Java para conseguir ser un lenguaje independiente del sistema
operativo y del procesador que incorpore la máquina utilizada, es tanto
interpretado como compilado. Y esto no es ningún contrasentido, me explico, el
código fuente escrito con cualquier editor se compila generando el byte-code. Este
código intermedio es de muy bajo nivel, pero sin alcanzar las instrucciones
máquina propias de cada plataforma y no tiene nada que ver con el p-code de
Visual Basic. El byte-code corresponde al 80% de las instrucciones de la
aplicación. Ese mismo código es el que se puede ejecutar sobre cualquier
plataforma. Para ello hace falta el run-time, que sí es completamente dependiente
de la máquina y del sistema operativo, que interpreta dinámicamente el byte-code
y añade el 20% de instrucciones que faltaban para su ejecución. Con este sistema
es fácil crear aplicaciones multiplataforma, pero para ejecutarlas es necesario que
exista el run-time correspondiente al sistema operativo utilizado.

2. Kotlin

Por otro lado, uno de los lenguajes de programación para dispositivos móviles
Android más empleados es, sin duda, Kotlin. ¿Por qué? Muy sencillo: Kotlin
dispone de un código muy intuitivo, sencillo y eficaz. 

Fue diseñado para operar conjuntamente con Java; no obstante, desde hace unos
años, Google lo recomienda para el desarrollo de aplicaciones para Android. Sí, es
su preferido.

Kotlin es moderno y despunta también por su escalabilidad. Por eso, no podía


faltar en esta lista de lenguajes de programación para móvil.

Las características principales que nos ofrece Kotlin respecto a cualquier otro
lenguaje de programación, son:

Tipo estático

Kotlin es un lenguaje de programación estáticamente tipado como Java. Esto


significa que los tipos de todas las expresiones se determinan en tiempo de
compilación, y el compilador puede verificar que el objeto contiene el método o
campo al que desea acceder.
Esto está en marcado contraste con un lenguaje de programación de tipo
dinámico, que Groovy y JRuby representan en la JVM. Estos lenguajes le permiten
definir variables que pueden almacenar cualquier tipo de datos, o funciones que
devuelven cualquier tipo de datos, y resolver referencias de métodos y campos
solo en tiempo de ejecución. Esto reducirá la cantidad de código y aumentará la
flexibilidad de crear estructuras de datos. Sin embargo, su desventaja es que
problemas como la falta de ortografía de los nombres no se pueden encontrar en
tiempo de compilación, lo que a su vez conduce a errores de tiempo de ejecución.
Por otro lado, a diferencia de Java, Kotlin no requiere que declares explícitamente
el tipo de cada variable en el código fuente. En muchos casos, el tipo de variable
se puede determinar automáticamente según el contexto, de modo que se puede
omitir la declaración de tipo. Este es quizás el ejemplo más simple:

val x = 1

Al declarar esta variable, debido a que la variable se inicializa a un valor entero,


Kotlin determina automáticamente que su tipo es Int. La capacidad del compilador
para inferir tipos de variables del contexto se denomina inferencia de tipos.
Estos son algunos de los beneficios de la escritura estática:

 La invocación del método de rendimiento es más rápida porque no es


necesario determinar qué método se llama en tiempo de ejecución.
 Fiabilidad: el compilador verifica la corrección del programa, por lo que
la probabilidad de un bloqueo en tiempo de ejecución es menor.
 Mantenimiento: el código desconocido es más fácil de mantener
porque puede ver los tipos de objetos utilizados en el código.
 Compatibilidad con herramientas: la escritura estática permite al IDE
proporcionar una refactorización confiable, una finalización precisa del
código y otras características.
Gracias al soporte de Kotlin para la deducción de tipos, ya no necesita declarar
tipos explícitamente, por lo que la mayor parte del código extra largo sobre tipos
estáticos ya no existirá.
Cuando examine los detalles del sistema de tipos Kotlin, encontrará muchos
conceptos familiares. Las clases, las interfaces y los genéricos están muy cerca de
Java, por lo que la mayor parte del conocimiento de Java se puede transferir
fácilmente a Kotlin. Sin embargo, surgirán algunos conceptos nuevos.
Uno de los conceptos más importantes es el soporte de Kotlin para tipos
anulables. Al detectar posibles excepciones de puntero nulo en tiempo de
compilación, le permite escribir programas más confiables.
Otro concepto nuevo del sistema de tipos Kotlin es el soporte para tipos de
funciones. Para entender esto, primero debemos entender las ideas principales de
la programación funcional y cómo Kotlin apoya este estilo de programación.
Funcional y orientado a objetos.

Como desarrollador de Java, debe estar familiarizado con los conceptos centrales
de la programación orientada a objetos, pero la programación funcional puede ser
nueva para usted. Los conceptos centrales de la programación funcional son los
siguientes:

 Funciones de primera clase: use una función (un pequeño


comportamiento) como valor, puede guardarla con una variable,
pasarla como parámetro o como el valor de retorno de otras funciones.
 Inmutabilidad: mediante el uso de objetos inmutables, esto garantiza
que su estado no pueda cambiar después de su creación.
 No se utilizan efectos secundarios: se utilizan funciones puras. Dichas
funciones producirán el mismo resultado cuando la entrada sea la
misma, y no modificarán el estado de otros objetos, ni interactuarán
con el mundo exterior.

3. Python

Las aplicaciones móviles con Python destacan por su código. Python facilita el
trabajo a los programadores o ingenieros informáticos, ya que se utilizan menos
líneas de código que en el caso de Java, por ejemplo.

De este modo, si queremos utilizar este lenguaje para hacer apps; es necesario
utilizar Kivy o un kit de desarrollo de aplicaciones multiplataforma que usa Python.

Las características principales que nos ofrece Python respecto a cualquier otro
lenguaje de programación, son:

Lenguaje de propósito general

Eso significa que no está orientado a un fin concreto, como puede ser PHP,
pensado sobretodo para hacer páginas de internet.

Con Python podrás crear páginas sin tener un alto conocimiento (con Javascript
como un poderoso aliado), pero también hacer scripts o software para el sistema
operativo Windows.

Aún no hay nada destacado para dispositivos móviles, pero se puede


usar Kivy para este propósito.
Es multiparadigma
¿Y qué significa eso? ¿Multiparadigma?

Pues, aunque su fuerte sea la programación orientada a objetos (es un lenguaje


de alto nivel), existen otros paradigmas o estilos de programación para sus
usuarios, como es la programación imperativa (con sentencias de bucle) o la
programación funcional (con módulos y funciones).

Así que, si no sabes nada de objetos y sólo sabes escribir código mediante
métodos, puedes usar Python perfectamente, cosa que en otros
lenguajes hacer eso es imposible.
Python es un lenguaje interpretado

Cuando programamos en Python, no compilamos el código fuente a código


máquina, sino que hay un intérprete que es el que ejecutará el programa
basándose en el código directamente.

Aunque esta propiedad hace pensar que los programas puedan ser más lentos,
que en lenguaje Python no suele ser así, eso facilita el desarrollo para la siguiente
característica.

Es multiplataforma
Al contrario que muchos lenguajes como visual basic, que principalmente solo
puedes hacer cosas para Windows, con Python tienes la posibilidad de usarlo en
muchos dispositivos y sistemas operativos, ya que se han creado intérpretes para
Unix, Linux, Windows y sistemas Mac Os.

Link de la exposición:
 https://drive.google.com/file/d/1JtjB_P-AEhshIie4tkkOScf7c2z8TKIj/view?
usp=sharing

También podría gustarte