Matemática
En matemática, definición, en términos generales, es delimitar, o sea, indicar, expresar el límite que separa un objeto de todos los demás.[1] Los pilares estructurales de la matemática son: la definición, el teorema y la demostración matemática. Las definiciones señalan con precisión los conceptos de importancia en la teoría. Los teoremas ( o proposiciones) expresan exactamente lo que hay de verdadero en esos conceptos y las demostraciones revelan, en forma contundente, la verdad de esas afirmaciones [2] .
Los objetos matemáticos existen mediante definiciones. Por ejemplo, un número puede ser un natural y se llama número compuesto o número primo, par o impar, siempre que cumpla condiciones precisas y específicas. Estas condiciones específicas son la definición del concepto.
Las definiciones al igual que las conjeturas, axiomas, postulados y teoremas entre otros conceptos matemáticos pueden enunciarse en un lenguaje formalizado o en un lenguaje formal propio de los sistemas formales de la lógica matemática.
Ramas de estudio de las matemáticas
La Sociedad Estadounidense de Matemática distingue unas 5000 ramas distintas de matemáticas.[26] En una subdivisión amplia de las matemáticas se distinguen cuatro objetos de estudio básicos: la cantidad, la estructura, el espacio y el cambio[cita requerida] que se corresponden a la aritmética, álgebra, geometría y cálculo.[cita requerida] Además, hay ramas de las matemáticas conectadas a otros campos como la lógica y teoría de conjuntos, y las matemáticas aplicadas.
Programación
La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones
Programas y algoritmos [editar]
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) uno o más algoritmos. Un algoritmo puede expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.
Los programas suelen subdividirse en partes menores, llamadas módulos, de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una práctica muy utilizada y se conoce como "refino progresivo".
Según Niklaus Wirth, un programa está formado por los algoritmos y la estructura de datos.
Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden mencionar las siguientes:
programación declarativa
programación estructurada
programación modular
programación orientada a objetos
programación declarativa
La Programación Declarativa, en contraposición a la programación imperativa es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando). No existen asignaciones destructivas, y las variables son utilizadas con Transparencia referencial
Programación estructurada
La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.
Surgió en la década de 1960, particularmente del trabajo Böhm y Jacopini,[1] y una famosa carta, La sentencia goto considerada perjudicial, de Edsger Dijkstra en 1968[2] — y fue reforzado teóricamente por el teorema del programa estructurado, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control.
Programación modular
Diagrama del funcionamiento de un subprograma.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.
Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido en varios sub problemas más simples, y estos a su vez en otros sub problemas más simples. Esto debe hacerse hasta obtener sub problemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás o análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa que resuelve uno de los sub problemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida.
Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de procedimientos y funciones. Pero no necesaria ni estrictamente un módulo es una función o un procedimiento, ya que el mismo puede contener muchos de ellos. No debe confundirse el término "módulo" (en el sentido de programación modular) con términos como "función" o "procedimiento", propios del lenguaje que lo soporte.
Programación orientada a objetos
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

