LENGUAJES FORMALES
Enviado por Gina Paola Pérez Anajar • 12 de Noviembre de 2021 • Trabajo • 1.410 Palabras (6 Páginas) • 97 Visitas
LENGUAJES FORMALES
Gina Paola Pérez Anajar
INTRODUCCIÓN
En este documento se presentan conceptos referentes a temas relacionados con lenguajes de programación o programación en sí. Para ello, es necesario conocer a que hace referencia la palabra programación. La programación es un proceso el cual a través de un lenguaje de programación se crean series de instrucciones con el fin de resolver un problema, estas instrucciones son codificadas y compiladas para que puedan ser entendidas y ejecutadas por un sistema computacional [1]. Teniendo en cuenta la definición anterior, se puede interpretar que a través de un lenguaje de programación se pueden desarrollar diferentes funcionalidades a través de una máquina como un computador para poder resolver problemas sencillos o complejos, pero basándose en ciertos principios que se van a ver a continuación.
DESARROLLO
Paradigma de programación: un paradigma es una manera de realizar algo, pero basándose en modelos que tienen algunos patrones o estándares ya definidos que permiten resolver problemas en particular, y estos paradigmas para este caso se resuelven a través de software y se puede ver su aplicación en los lenguajes de programación. Entre los distintos tipos de paradigmas encontrados en programación, se pueden clasificar de la siguiente manera:
- Paradigmas procedimentales: Este tipo de paradigmas indican el modo de construir una solución, es decir, detallan paso a paso el mecanismo para obtenerla [2].
- Estructurado secuencial: Es aquel en el que se desarrolla o se codifica línea por línea hasta obtener la solución esperada, un ejemplo de este es BASIC, el cual es un lenguaje inventado en 1964, donde se indica cómo se va ejecutar el código, lo primero que se hace es crear las variables, luego los métodos indicar las instrucciones línea a línea, como ya se había expresado.
Ejemplo: Cuando se crea una instancia de una lista la cual contiene números y queremos que se sumen, entonces se indicaría a través de un método que itere n veces hasta llegar al último valor contenido en la lista y que al finalizar la iteración me imprima ese resultado. En este ejemplo se puede evidenciar que es un proceso secuencial y que está estructurado, ya que si por ejemplo no se creará la lista no se podría realizar un ciclo, o si la lista no tuviera valores al iterar no se podría obtener el resultado esperado y es estructurado evidenciar que lo primero a realizar es crear la lista y asignarle valores para luego sumarlos y mostrarlos.
- Orientado a objetos: En este caso se puede ver este paradigma como la agrupación de código que representa una realidad, esta agrupación se da a través de clases, las cuales tienen características que son conocidas como atributos y acciones que en programación son llamados métodos, además de poder hacer una reutilización de código.
Ejemplo: cuando se crea una clase Persona es como crear un molde para crear n cantidad de personas y poder generar información, para ello se buscan atributos que puedan tener en común como: que posean un nombre, un número de identificación, que tengan una fecha de nacimiento, y que puedan desarrollar alguna acción que están determinadas según para la finalidad del software, algunas acciones pueden ser comprar, pagar, entre otras. Además, este tipo de paradigma es compartido por distintos lenguajes de programación como java, PHP, phyton, etc. Lo único que varía es la forma en que estas se crean.
- Paradigmas declarativos: Describen las características que debe tener la solución. Es decir, especifican “qué” se desea obtener, pero no requieren indicar “cómo” obtenerla.
Ejemplo: se puede ver con mayor facilidad cuando se trabaja en lenguajes como SQL donde se requiere obtener la información que está en una tabla, y al ejecutar una línea como select * from va a traer la información, pero no se está analizando como hace para obtener esa data sino que nos está devolviendo esa sentencia.
Lógico: hace referencia al uso de la lógica booleana para programar, en esta las instrucciones que se codifican se basan en hechos, de cierta manera usando las tablas de verdad,
- por ejemplo, se puede ver su funcionamiento en la electrónica digital en el uso de compuertas, las cuales se basan en la lógica binaria, y a través de la unión de compuertas se pueda variar el estado lógico y poder manejar dispositivos electrónicos.
También se puede ver en lenguajes como prolog, donde se le a través de diferentes casos se verifica el estado o valor de hechos y según el valor que se obtenga se va a determinar la salida. Prolog es utilizado en ámbitos como la inteligencia artificial y aspectos relacionados con la misma como el machine learning, procesamiento de lenguaje natural [3].
Funcional: se trabaja bajo funciones, bajo un conjunto de reglas a las que se le aplican un proceso.
- por ejemplo: poder enviar entre los parámetros otras funciones como pasa con los callback en JavaScript, donde se espera un resultado y con ese resultado realice otra acción, este paradigma lo que permite es hacer más fácil el trabajo al desarrollador.
Reactivo: consiste en poder trabajar con eventos asíncronos.
- Ejemplo: cuando se lleva a cabo un servicio rest en JavaScript se hace de forma asíncrona, donde se devuelve una respuesta que se devuelve en formato json, y se pueden aplicar los operadores reactivos los cuales trabajan sobre un flujo de datos hasta obtener un resultado, este es declarativo por que no se le indica línea a línea que se debe hacer, sino que se trabaja bajo la data obtenida y a través de otras funciones se pueda hacer una transformación como aplicar un map y a ese map aplicarle un filter pero en una sola línea.
Propiedades asociadas a los lenguajes de programación
Concepto | Ejemplo | Lenguaje de programación | |
Eficiencia | se puede decir que la eficiencia es cuando el software alcanza el objetivo fijado, con el tiempo marcado y sin mal gastar los recursos con los que se cuenta; refiriéndose a como es la respuesta del sistema cuando se realizan ciertas acciones durante un periodo de tiempo dado incluyendo la cantidad de recursos que están disponibles para realizar esa función o tarea, tratando de optimizar lo más que se pueda. | con la eficiencia se puede analizar cuál es la capacidad máxima de transacciones, el número máximo de operaciones concurrentes, el tiempo máximo de carga y esto también teniendo en cuenta otros factores como el volumen de data. | C, Go, C++, java, PHP. |
Expresividad | es la manera de hacer legible y entendible el código que se escribe tanto para la máquina como para el desarrollador, teniendo en cuenta por ejemplo la identación, los espacios entre líneas, el orden que tiene el código y las buenas prácticas de programación. | En el caso de los lenguajes de programación la expresividad se puede ver expresada como cuando se hace uso de herramientas que brinda el lenguaje se puede hacer de manera más sencilla y legible una función. | JavaScript, java, PHP |
Capacidad de mantenimiento | es la capacidad con la que cuenta el sistema para realizar cambios de una manera sencilla localizando y corrigiendo los errores, funciones obsoletas, o poder añadir nuevas funcionalidades. | Para validar que el código esté libre de errores se puede hacer a través de pruebas unitarias, o para agregar nuevas funcionalidades java permite ubicar fácilmente los archivos. | Java, C# |
Legibilidad | consiste en si el lenguaje tiene una sintaxis sencilla, fáciles de leer y fáciles de compilar. | Java, Phyton | |
confiabilidad | Probabilidad de que un sistema, aparato o dispositivo cumpla una determinada función bajo ciertas condiciones y durante un tiempo determinado. | Java, C | |
Seguridad | Es la propiedad en cargada de reducir acciones maliciosas como robo o pérdida de información, por ejemplo, se pueden utilizar la autenticación, cifrado, entre otras. | Cuando se quiere acceder a un sitio web y se pide factores de autenticación como tokens, reCAPTCHA, autenticación. | C, Python, JavaScript, SQL, liferay |
Simplicidad | Hace referencia al grado de dificultad para el programador para escribir programas y leer programas de otros. | El entorno de Java borrará los objetos cuando determine que no se van a utilizar más. Este proceso es conocido como recolección de basura. El entorno de Java borrará los objetos cuando determine que no se van a utilizar más. Este proceso es conocido como recolección de basura. | Java, Python |
Productividad | Relación entre el producto obtenido y los recursos que han sido necesarios para obtenerlo. Utilizando técnicas brindadas por los lenguajes se puede hacer referencia a la rapidez con la que se puede resolver algo. | C, Java, C++, Lisp, Python, Ruby |
...