● Paradigmas de programación
Un paradigma de programación es un estilo de desarrollo de programas, lo que viene siendo un modelo para resolver problemas. Cada lenguaje de programación se encuadra en uno o varios tipos de paradigmas a partir del tipo de órdenes que permiten implementar.
Dentro de los paradigmas de programación destacan:
-Imperativo : Es el más usado, se basa en dar instrucciones de como hacer la cosas mediante algoritmos. En este tipo destaca: Lenguaje de máquina, C, Basic, Pascal, Smalltalk.
-Orientada a objetos: Los objetos manipulan los datos de entrada para la obtención de datos de salidas específico, donde cada objeto ofrece una funcionalidad. Destaca C++ , C# , Java y Phyton.
-Declarativa: Los programas describen los resultados esperados sin listar explícitamente los pasos a llevar a cabo. Destaca Prolog, Haskel , Curry...
-Lógico: El problema se modela con enunciados de lógica de primer orden. Destaca Prolog
-Funcional: Se componen de implementaciones de comportamiento que reciben un conjunto de datos de entrada y devuelven un valor de salida. Destaca Haskell y Miranda.
También hay dirigida por eventos y orientada a aspectos, pero no forman parte del grupo principal. Cada paradigma se utiliza para problemas concretos, por lo que uno puede ser mejor que otro dependiendo para que.
● Sistema de tipos
Un sistema de tipo se encarga de cómo un lenguaje de programación clasifica los valores y las expresiones en tipos, es decir, como se manipulan e interactuan. Los sistemas varían según el lenguaje y su tipo. Los tipos de datos normalmente tienen asociaciones tanto con valores en la memoria o con objetos como con variables.
Las principales funciones son:
Las principales funciones son:
-Seguridad: El uso de tipos de datos puede permitir a un compilador detectar incoherencias en el significado o código probablemente inválido. Un sistema de tipado fuerte ofrece más seguridad, pero no garantiza, necesariamente una seguridad completa.
-Optimización: un sistema de tipado estático puede dar información muy útil al compilador.
-Documentación: En sistemas de tipificación más expresivos, los tipos de datos pueden servir como una forma de documentación, porque pueden ilustrar la intención del programador.
-Abstracción: Los tipos de datos permiten a los programadores pensar en los programas a un alto nivel, sin tener que preocuparse con el bajo nivel de la implementación.
También podemos distinguir dos tipos: estático y dinamico.
-Estático: El tipado estático nos obliga a definir desde el principio el tipo de una variable, ejemplos de lenguajes con tipado estatico son C, C++, Pascal, Java, Objetive-C, C#...
-Dinámico: El tipado dinamico nos da la facilidad de no definir los tipos al declarar una variable, algunos ejemplos son PHP, JavaScript, Grooby, Phyton..
Un ejemplo de diferencia entre ambos lo podemos ver en la Conversión de tipos, mientras en los lenguajes estáticos, muchas de las conversiones entre tipos tendrás que hacerlas a mano (cast) y las que no tengas que hacer, te arrojaran Warnings de perdida de datos, obligándote a también hacerlas a mano. En cambio los lenguajes tipados dinamicamente intentan hacer las conversiones ellos mismo, ahorrándote mucho código
