domingo, 16 de febrero de 2020

Requerimientos

  • Ser creativo: Un buen programador debe ser capaz de pensar originalidad, para la construción de herramientas, funciones o aplicacionesque sean utiles, pero también para resolver problemas con dinamismo.
  • Poder trabajar en equipo: La interacción personal es básica para poder llevar en cualquier proyecto en el seno de una misma empresa con otros desarrolladores. Cada persona tiene unas habilidades más desarrolladas que otras y la complementariedad es la base de un buen producto o trabajo.
  • Ser flexible: La tecnologá cambia cada dia y evoluciona sin darse uno cuenta. Es por ello que cuando un nuevo lenguaje o biblioteca aparece debemos aprender sus principios básicos. Además, las características de los proyectos cambian a menudo, especialmente con el trabajo de los clientes. cuando eso sucude, debemos adaptarnos e incorporar esas peticiones.
  • Tener capacidad de análisis: es importante tener la capacidad de analizar  para poder aplicarla en el momento adecuado

martes, 11 de febrero de 2020

Aplicación


 Programación lógica
  1. Desarrollo de aplicaciones de inteligencia artificial
  2. Prueba de teoremas de forma automática, donde un programa genera nuevos teoremas sobre una teoría existente
  3. Construcción de sistemas expertos, donde un sistema de información mita las recomendaciones de un experto sobre algún dominio de conocimiento
  4. Procesamiento del lenguaje natural, donde un programa  es capaz de comprender (con imitación) la información  contenida en una expresión  lingüística 
  5. Consultas lógicas basadas en reglas como:  
  •  Búsquedas en base de datos
  •  Sistemas de control de voz 
  Programación orientada a objetos
Base de datos orientada a objetos
En las DB(Data Bases) la información es representada en forma de objetos. Una base de datos orientada a objetos  es una base de datos que incorpora los conceptos del paradigma de objetos: encapsulamiento, herencia y poliformismo. En estas bases de datos los usuarios definen operaciones sobre datos como parte de la definición de la base de datos.
Una operación llamada función se especifica en dos partes,  la interfaz o  signatura  de una operación incluye el nombre de la operación y los tipos de datos de sus argumentos o parámetros y la implementación o método, que hace referencia a la operación de descripción,  especificación y modificación sin afectar el interfaz. Los programas de aplicación  de los usuarios pueden operar sobre los datos invocando a dichas operaciones a través de sus nombres y argumentos, sea cual sea la forma en la que se han implementado.
Modelamiento y simulación de agentes
Los agentes son modelados  como objetos, es decir, estos están asociados    con unos atributos, un comportamiento y también interactuan con otros agentes.
Diseño de interfaz de usuario
 Cada elemento dentro de una interfaz de usuario  se puede considerar como un objeto, por ejemplo: un botón, el campo de texto, una etiqueta puesto que tienen atributos y funciones particulares para cada uno.
Serialización
Este consiste en un proceso de codificación de un objeto en un medio de almacenamiento con el fin de transmitirlo a través de un canal de comunicación o una conexión en red como una serie de bytes o en formato más legible (XML, JSON). Se realiza con el fin de que el objeto serializado pueda guardarse en un fichero o  para que pueda enviarse a través de red para reconstruirlo en otro lugar la característica de que el objeto copiado  o replicado tiene la estructura, atributos  y comportamientos del objeto original. Esta  aplicación permite trasladar y manipular los objetos en diferentes sistemas para que el objeto sea persistente y mantenga integridad en los datos
Videojuegos
MineCraft es un vídeo juego de construcción  de tipo <<mundo abierto>> o sandbox creado  por el sueco  por el sueco Markus <<Notch>> persson
Programación paralela
 Computación gráfica
Ciertas clases de problemas producen desequilibrios de carga incluso si los datos están distribuidos entre las tareas
Aproximación y cálculo de constantes y/o funciones numéricas
Worldwide LHC  Computing Grid (WLCG) es una colaboración global de centros de computación. Fue lanzado en 2002 para proporcionar un recurso para almacenar, distribuir  y analizar los 15 petabytes(15 millones de gygabytes) de datos generados cada año por el large Hadron Collider(LHC)
Predicción del clima y cambio climático 
La predicción del clima es uno de los primeros usos exitosos de la programación paralela. La predicción del clima durante más de 500  años ha utilizado y recolectado información, como la temperatura, la humedad y las precipitaciones. En 1904, el físico y meteorólogo noruego Vilhelm Bjerknes propuso un modelo de ecuaciones diferenciales para la predicción meteorológica que incluía siete variables, entre ellas temperatura, lluvia y humedad.
 Análisis de imágenes multiespectro
 Las imágenes satélites consiste en grandes cantidades de datos. Por ejemplo, las imágenes Landsat 7 consta de siete tablas de datos, donde cada entrada en una tabla representa una longitud de onda magnética diferente (azul, verde, rojo o infrarrojo térmico) para un piel de 30 metros cuadrados de las superficie de la tierra
Astronomía 
Hay muchas aplicaciones de los supercomputadores a la astronomía, incluyendo el uso de un supercomputador que simula un evento en el futuro, o pasado, para probar las teorías astronómicas. La Universidad de Minnesota Supercomputer Center hizo una simulación d e una explosión supernova originada en el borde de una gigantesca nube e gas molecular interestelar parecería 650 después de la explosión
 Programación estructurada
Algoritmos:
Los algoritmos son expresados de muchas maneras, entre ellos   el lenguaje natural, el pseudocódigo, diagramas de flujo y lenguajes de programación, etc. Las descripciones en lenguaje natural son ambiguas y extensas, pero al usar el pseudocódigo y diagramas de flujo este evita las ambigüedades del lenguaje natural. La descripción de un lenguaje natural se hace en tres niveles.
1. Descripción de alto nivel:  establecer el problema, seleccionar un modelo matemático y explicar el algoritmo de manera verbal, con posibilidad de ilustraciones y omitiendo detalles.

2. Descripción formal: usar pseudocódigo para describir la secuencia de pasos que encuentran la solución.

3. Implementación: mostrar el algoritmo expresado en un lenguaje de programación o algún objeto capaz de llevar a cabo instrucciones

 Diagrama de flujo:
Un diagrama de flujo es un tipo de esquema para representar ideas y conceptos en relación. Conocido también como gráficos representativos  utilizados para  esquematizar conceptos vinculados a la programación, la economía, los procesos técnicos y tecnológicos, la psicología, la educación y otras temáticas de análisis.
Estos son múltiples y diversos que pueden abordar distintos temas de manera diferente vinculados entre conceptos, enunciados y interrelación entre las ideas. También es utilizado para detallar el proceso de un algoritmo con distintos símbolos para trayectoria de operaciones precisas a través de flechas.  Cuando existe un diagrama de flujo existe un proceso o sistema. Para que este tipo de diagrama tenga sentido, debe existir un camino hacia una solución ,que parte de un único inicio llegando al punto final.
 Para desarrollar un diagrama de estos es recomendable definir el propósito y destinatario del gráfico, identificar las ideas principales, determinar los limites y alcance del proceso a detallar, establecer el nivel de detalle requerido, identificar las acciones, procesos y subprocesos, construir y titular el diagrama con exactitud. Al finalizar hay que  revisar el diagrama  para comprobar que cumple su objetivo con claridad y precisión.
 Los diagramas de flujo utilizan los símbolos, entre  los más utilizados están: la flecha(indica el sentido y trayectoria), el rectángulo(representa un evento o proceso), el rombo(una condición), el circulo(un punto de conexión). Además, existen diversos tipos de diagramas de flujo. El vertical, su secuencia es de arriba hacia abajo; el horizontal, de izquierda a derecha; el panorámico,  este debe apreciarse de una vez y de forma tanto vertical como horizontal; el arquitectónico, describe una ruta sobre un plano arquitectónico de trabajo.

Pseudocódigo 
 es una forma de expresar los distintos pasos que un programa va a  realizar, de la forma más parecida a un lenguaje de programación, es decir, un lenguaje de programación requiere de una maquina para el código, mientras que, el pseudocódigo no requiere de una maquina, puesto que, el código es escrito,  para que lo entienda el ser humano y no la maquina. El pseudocódigo representa un método que facilita la programación y la solución del algoritmo del programa, siendo una   forma de representar,  facilitar el uso y la manipulación simplificando el paso del programa,al lenguaje de programación, independencia al código en el que se va a escribir el programa.
Lenguajes de programación
Programa destinado a la construcción de programas informáticos diseñado para organizar algoritmos y procesos lógicos para luego  llevados a cabo en un ordenador o sistema informático. Dicho lenguaje está compuesto por símbolos, reglas sintácticas y semánticas, expresadas en forma de instrucciones y relaciones lógicas, mediante los cuales se construye el código fuente de una aplicación o determinada pieza de programación. Su implementación permite el trabajo conjunto y coordinado.
Tipos de lenguaje de programación
Lenguajes de bajo nivel:

Se trata de lenguajes de programación diseñados para un hardware específico y que por lo tanto no pueden migrar o exportarse a otros computadores. Sacan el mayor provecho posible al sistema para el que fueron diseñados, pero no aplican para ningún otro.

Lenguajes de alto nivel:

Se trata de lenguajes de programación  aspirantes a ser un lenguaje más universal, por lo que pueden emplearse indistintamente de la arquitectura del hardware, es decir, en diversos tipos de sistemas. Los hay de propósito general y de propósito específico.

Lenguajes de  nivel medio:

Este término no siempre es aceptado, que propone lenguajes de programación  ubicados en un punto medio entre los dos anteriores: pues permite operaciones de alto nivel y a la vez la gestión local de la arquitectura del sistema.
Lenguajes imperativos:

Menos flexibles, dada la secuencialidad en que construyen sus instrucciones, estos lenguajes programan mediante órdenes condicionales y un bloque de comandos al que retornan una vez llevada a cabo la función.


Lenguajes funcionales:

También llamados procedimentales, estos lenguajes programación mediante funciones que son invocadas conforme a la entrada recibida, que a su vez son resultado de otras funciones.


                                    
     Programación concurrente

Aplicaciones clásicas:  

  • Programación de sistemas multicomputadoras.
  • Sistemas operativos.
  • Control y monitorización de sistemas físicos reales.
Aplicaciones actuales:

  • Servicios WEB.
  • Sistemas multimedia.
  • Cálculo numérico.
  • Procesamientos entrada/salida.
  • Simulación de sistemas dinámicos.
  • Interacción operador/máquina (GUIs)
  • Tecnologías de componentes.
  • Código móvil.
  • Sistemas embebidos.
    Programacion funcional 
    • Implementación de lenguajes de programación: estos, están divididos en varias partes, algunos de ellos toman estructuras tipo árbol, lo procesan y retornan a una nueva estructura tipo árbol. Este tipo de procesos son explicados de forma clara en los lenguajes funcionales(características como 'pattern-matching y buen soporte para recursión eficiente), permitiendo desarrollar compiladores consistentes.
    • Concurrencia y sistemas paralelos: las retricciones de no mutación en lenguajes funcionales que muchos procesos accedan y compartan los mismos datos  alentando un diseño 'embarrassingly parallel' donde diferentes hilos no necesitan comunicarse entre si para  el proceso de información.
    • Sistemas altamente seguros: los lenguajes funcionales tipados, particularmente Haskell, son claras  en las garantías  de lo que el programa puede y no puede hacer. 
    •  



Requerimientos

Ser creativo: Un buen programador debe ser capaz de pensar originalidad, para la construción de herramientas, funciones o aplicacionesque ...