lunes, 19 de junio de 2017

unidad 1 "programacion logica y funcional


                                            

 Ingenieria en sistemascomputacionales
Departamento de sistemas y computacion
Nombre:
Samuel Vázquez Juárez
Jesús cruz Balcázar
NO. De control:
13510202
13510722
Nombre del curso:
Programación lógica y funcional
Nombre del profesor:
Manuel de Jesús matúz cruz
Periodo:
Verano jun - jul
Actividad:
Unidad 1
Fecha: 19 / junio / 2017


Unidad 1 


1.1  ESTILOS DE PROGRAMACIÓN
No existen reglas fijas para construir programas claros, comprensibles y comprobables. Hay, por supuesto, guías muy generales y muy buenas, además; pero el estilo individual del programador, la claridad de su pensamiento, su creatividad (o falta de ella), podrían contribuir significativamente al éxito de esa tarea.
El programador es el encargado de diseñar soluciones a los problemas y de escribirlos como programas de computadora. Es muy importante que un programador inexperto reconozca la importancia del estilo en la práctica de su oficio y que desarrolle hábitos de estilo que le permiten desenvolverse adecuadamente en su vida profesional, y exactamente lo mismo a nivel grupal en un equipo de desarrollo. Así como un buen estilo de escritura no se adquiere solo a partir del conocimiento de las reglas de la gramática, ningún buen estilo de programación puede adquirirse solamente a partir del conocimiento de la sintaxis de algún lenguaje de programación.
La idea de que el formato y la apariencia de los códigos fuentes de un programa no son un incidente en la calidad del programa, es errónea. Precisamente aquí es donde más puede hacerse para mejorar la legibilidad de las fuentes. Los manuales técnicos de la aplicación son solo complementos de esta documentación.
Al interior de los códigos fuentes de una rutina, se pueden distinguir dos partes documentales:  los comentarios y los párrafos. Los comentarios constituyen el principal componente de la documentación interna de los programas. estos sirven de ayuda al lector u otro programador para comprender las intenciones o los propósitos de las porciones del código, y también pueden servir para explicar las secciones lógicas o difíciles. Evidentemente la escritura de buenos comentarios es quizá tan importante, y tal vez tan difícil de aprender, como la escritura de buenos programas. Los buenos comentarios no pueden hacer mucho para mejorar una mala codificación, pero los malos comentarios pueden deteriorar muchísimo un buen código.
En general es relevante, declarar un comentario breve y descriptivo, previo a cualquier función, o conjunto de funciones que juegan un rol especifico, también poner la fecha de actualización.



 (Hristov, 1994 - 2007)







1.2 EVALUACIÓN DE EXPRESIONES

(López Ostenero & García Serrano, 2014)


1.3 DEFINICIÓN DE FUNCIONES

En programación, una función es una sección de un programa que calcula un valor de manera independiente al resto del programa.

 

Una función tiene tres componentes importantes:

 

 

·         Los parámetros, que son los valores que recibe la función como entrada;

·         El código de la función, que son las operaciones que hace la función; y el resultado (o valor de retorno), que es el valor final que entrega la función.

En esencia, una función es un mini-programa. Sus tres componentes son análogos a la entrada, el proceso y la salida de un programa. Las declaraciones de funciones generalmente son especificadas por:

Un nombre único en el ámbito: Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). 

 

Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución.

 

Una lista de parámetros: Especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea. 

 

El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la función.

 

Las declaraciones de funciones generalmente son especificadas por:

·                     Un nombre único en el ámbito: Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos).

·                     Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución.

·                     Una lista de parámetros: especificación del conjunto de argumentos que la función debe recibir para realizar su tarea.

·                     El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la función. 


(Casteleiro, 2006)


1.4 DISCIPLINA DE TIPOS
“Los tipos se infieren, es decir se comprueban, de forma estática, en tiempo de compilación.”
En los lenguajes de programación con disciplina de tipos, cada tipo representa una colección de valores o datos similares. El conocer los tipos de las funciones ayuda a documentar los programas y evitar errores en tiempo de ejecución.
Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre, es necesario determinar los tipos de todos los operandos, ya sea en tiempo de compilación o de ejecución.

Disciplinas y profesiones

Los anteriores planteamientos han puesto ya de presente la importancia que en la actualidad tienen las formas de producción de conocimiento que involucran, más allá de las comunidades académicas tradicionales, a profesionales cuya formación no es estrictamente disciplinaria y a personas no estrictamente académicas. No es extraño ni nuevo que egresados de disciplinas y de profesiones trabajen juntos en investigación. La investigación no es ya privativa de las disciplinas y es parte de la práctica de las profesiones. Pero es posible hacer una distinción inicial entre profesiones y disciplinas señalando el lugar prioritario de la investigación en las primeras por oposición a la vocación de servicio social que tienen las segundas. En esto nos distanciamos de Becher (2001), quien utiliza el término «disciplina» para referirse a profesiones como el derecho y la ingeniería mecánica.



Disciplinas e investigación

Partiremos de establecer una identidad entre la formación en disciplinas y la formación científica, asumiendo que entre los destinos posibles de los egresados el más exigente académicamente quizás es el de la investigación y que la formación debe capacitar a esos egresados para ejercer en cualquiera de los campos de acción de su disciplina. No desconocemos que la docencia y la participación en equipos de trabajo de diversa índole son también importantes, pero creemos que estos destinos no riñen con la preparación rigurosa que hace posible llegar a la frontera y trabajar en ella. Reconocemos, además, que las ciencias son también prácticas sociales complejas que implican diferencias internas y relaciones diversas con otras prácticas sociales. Sabemos que la noción de ciencia es problemática porque es utilizada en campos muy distintos entre sí (lo que hace que se insista con frecuencia en que se debe hablar de ciencias y no de ciencia) y admitimos, como se dijo, que las prácticas propias de las disciplinas no se agotan en la producción científica; pero utilizaremos, en distintas ocasiones, los términos disciplina y ciencia de una manera intercambiable y laxa, asumiendo que cabe afirmar que, incluso cuando la mayoría de los egresados de un programa en disciplinas vaya a dedicarse a la aplicación o la enseñanza de los conocimientos, el proceso de formación debe asumir como núcleo la relación intensa con el conocimiento que exige la creación.



Disciplinas y paradigmas

Existen distintos enfoques de la historia de las disciplinas. Hasta los años 70´s se separaba a los historiadores de las ciencias en internalistas y externalistas, según el énfasis que pusieran en la evolución de los conceptos y la contrastación de las teorías o en las condiciones históricas del contexto del desarrollo del conocimiento y las relaciones entre la práctica científica y otras prácticas sociales. Los trabajos de Th. Kuhn, de Y. Elkana y otros pusieron en evidencia lo arbitrario de esta división al reconocer la ciencia como una práctica social que vincula a una comunidad a través de creencias, lenguajes, ideas, valores y modos de trabajo compartidos.



Disciplinas y especialidades

Cuando se reconoce la existencia de grupos ocupados en problemas muy diferentes (problemas que eventualmente pueden agrupar diferentes disciplinas) es importante distinguir entre esos grupos. La distinción mencionada, cuya importancia se revelará más adelante, es la que puede establecerse entre las disciplinas y las especialidades. Esta distinción es importante. Por una parte, las especialidades no son siempre subdivisiones de las disciplinas (ramas que se desprenden del tronco principal en el árbol de la disciplina) que podrían englobarse en un campo disciplinario, sino que existen especialidades híbridas (que resultan del encuentro entre las disciplinas y luego adquieren su propia identidad). Por otra parte, se establecen redes, conexiones entre especialidades que comparten problemas o vecindades temáticas o establecen vínculos resultantes del uso de herramientas comunes, y los nexos entre especialidades no necesariamente corresponden a los que se dan o pueden darse entre las disciplinas.

Disciplinas y sistemas 

culturales En el texto La ciencia como sistema cultural: una aproximación antropológica (1983), Y. Elkana plantea que la ciencia puede ser vista como un sistema cultural. Siguiendo a Geertz, Elkana recoge la idea del sistema cultural para pensar la ciencia. El sistema cultural es historicamente construido y ... sometido a modelos de juicio históricamente construidos. Es posible cuestionarlo, discutirlo, afirmarlo, desarrollarlo, formalizarlo, contemplarlo, incluso enseñarlo, y puede variar extremadamente de una persona a otra (p. 67). Elkana piensa que la ciencia puede ser vista como un sistema cultural y, por tanto, puede ser examinada a través de un método como la descripción densa que se utiliza en la antropología. Esta descripción se aproxima a las prácticas que estudia examinando los modos como actúan y se relacionan las personas vinculadas a ese sistema cultural: las creencias, los ritos que se manejan, las costumbres y jerarquías, y va acercándose más y más a ser una descripción muy compleja de las relaciones sociales que investiga.

 *Las disciplinas terrenales 


Hasta ahora nos hemos referido a las disciplinas atendiendo a su naturaleza de campos de conocimiento. Pero si se examina la práctica de las disciplinas se encontrarán tensiones y compromisos de muy diferentes tipos. Las comunidades que se ocupan de la producción de conocimientos científicos se encuentran hoy muy desarrolladas y altamente organizadas y jerarquizadas. Las relaciones que esas comunidades establecen con otras esferas como la producción, el mercado o la política son muy complejas y más o menos intensas, dependiendo del desarrollo científico-técnico del sector o de las necesidades reconocidas de racionalizar los procesos; pero también internamente se establecen tensiones y relaciones de poder que es conveniente mencionar. Para aproximarnos a estos problemas resulta muy útil recordar la noción de campo científico desarrollada por Bourdieu (1997/2000).



1.5 TIPOS DE DATOS
Hay aplicaciones que usan datos muy grandes, en el sentido de que ocupan muchos octetos en su almacenamiento. Típicamente son datos multimedia, o sea los que representan sonido, imágenes o textos largos. Para abordar estos tipos de aplicaciones los SGBD han incorporado tipos de datos y nuevas maneras de almacenamiento y gestión. Estos datos se llaman objetos grandes o LOB (del ingles , Large Object).

Tipos de datos LOB

Son largas hileras de bits, de longitud variable, que pueden interpretarse como caracteres o simplemente como bits. En el primer caso se llama CLOB y en el segundo BLOB estos son los dos tipos de datos para almacenar objetos grandes. Los CLOB sirven para almacenar textos, y los BLOB para cualquier información que sea corresponsable por secuencia de bits(sonido, imágenes, o información digitalizarles en general). (RIVERO CORNELIO, GUARDIAS RIVAS, & REIG HERNANDEZ, 2004) 


















Referencias

Hristov, A. (1994 - 2007). MANUAL DE ESTILO DE PROGRAMACIÓN. PLANETARIA. Formación y consultorio, 85.
López Ostenero, F., & García Serrano, A. M. (2014). Teoría de lenguajes de programación. España: CEBTRI DE ESTUDIOS RAMÓN ARECES, S.A
Rivero Cornelio, E., Guardias Rivas, C., & Reig Hernandez, J. (2004). Base De Datos Relacionales: Diseño Fisico . Madrid: Comillas.
Casteleiro, J. M. (2006). Introduccion al analisis matematico II. Madrid: ESIC EDITORIAL.
Peter J. Denning, ACM Computing Surveys, vol. 6, December 1974 (http://www.docirs.com/acerca_del_estilo_programacion.htm)

miércoles, 27 de mayo de 2015

Características del Software Propietario

 
Taller de sistemas operativos
Tema: Características del Software Propietario

DEFINICIÓN:
Es cualquier programa informático en el que el usuario tiene limitaciones para usarlo, modificarlo o redistribuirlo (esto último con o sin modificaciones). (También llamado código cerrado o software no libre, privado o privativo)
Para la Fundación para el Software Libre (FSF) este concepto se aplica a cualquier software que no es libre o que sólo lo es parcialmente ( semi-libre ), sea porque su uso, redistribución o modificación está prohibida, o requiere permiso expreso del titular del software.

CARACTERÍSTICAS DEL SOFTWARE PROPIETARIO:
§  Este software no te pertenece no puedes hacerle ningún tipo de modificación al código fuente.
§  No puedes distribuirlo sin el permiso del propietario.
§  El usuario debe realizar cursos para el manejo del sistema como tal debido a su alta capacidad de uso.
§  Este posee accesos para que el usuario implemente otro tipo de sistema en el.
§  Cualquier ayuda en cuanto a los antivirus.
§  5. VENTAJAS DEL SOFTWARE PROPIETARIO:
§  Propiedad y decisión de uso del software por parte de la empresa.
§  Soporte para todo tipo de hardware.
§  Mejor acabado de la mayoría de aplicaciones.
§  Las aplicaciones número uno son propietarias.
§  Menor necesidad de técnicos especializados.
§  El ocio para ordenadores personales está destinado al mercado propietario.
§  Mayor mercado laboral actual.
§  Mejor protección de las obras con copyright.
§  Unificación de productos.
§  Facilidad de adquisición (puede venir pre-instalado con la compra del PC, o encontrarlo fácilmente en las tiendas).
§  Existencia de programas diseñados específicamente para desarrollar una tarea.
§  Las empresas que desarrollan este tipo de software son por lo general grandes y pueden dedicar muchos recursos, sobretodo económicos, en el desarrollo e investigación.
§  Interfaces gráficas mejor diseñadas.
§  Más compatibilidad en el terreno de multimedia y juegos.
§  Mayor compatibilidad con el hardware.
§  6. DESVENTAJAS DEL SOFTWARE PROPIETARIO:
§  No existen aplicaciones para todas las plataformas (Windows y Mac OS).
§  Imposibilidad de copia.
§  Imposibilidad de modificación.
§  Restricciones en el uso (marcadas por la licencia).
§  Imposibilidad de redistribución.
§  Por lo general suelen ser menos seguras.
§  El coste de las aplicaciones es mayor.
§  El soporte de la aplicación es exclusivo del propietario.
§   El usuario que adquiere software propietario depende al 100% de la empresa propietaria.

Requerimientos de  Instalación para Servidores en software propietario 


Requisitos:
Procesador
Mínimo: 1GHZ en 32bits(x86), 1.4GHZ en 64bits(x64)
Recomendado: 2GHZ o más
Memoria
Mínimo: 512MB (si en Core se instala y corre con ese chin). 
Recomendado: 2 GB o más
Máximo (porque todo tiene tope): en 32bit de 4 a 64GB, en 64 bit de 32gb a 2 TB.
Disco Duro
Mínimo: 10GB
Recomendado: 40GB o más


1) Revisar si las aplicaciones a correr en el servidor son compatibles
Para hacer esta revision puede usar el Microsoft ApplicationCompatibilityToolkit.
2) Desconectar los UPS de la administración
Esto es en casi de que tenga UPS conectados al servidor por puerto serial. Si es así, desconectarlos antes de iniciar la instalación.
3) Hacer BackUp
El BackUp debe incluir toda los documentos, bases de datos, etc, así como las configuraciones necesarias para que el servidor funcione una vez instalado. Estas informaciones de configuracion son importantes, especialmente la de aquellos servidores que proveen infraestructura de red, como DHCP. Cuando haga el backup, asegurese de incluir las particiones de booteo y de sistema, ademas del SystemState.
4) Deshabilitar el antivirus
El software antivirus puede interferir con la instalación. Por ejemplo, al antivirus escanear cada archivo que está copiando la instalación, esta se hace más lenta.
5) Ejecute el Windows Memory Diagnostic Tool
Este se ejecute para revisar y probar la memoria RAM del servidor.
6) Tener disponible los drivers de los discos
Si está usando unidades de discos de alta capacidad, probablemente necesitara durante la instalación proveer los drivers de estos equipos. Ponga estos drivers en un CD, DVD o USB para insertarlos en la instalación y ubíquelos en la forma siguiente: amd64 para computadoras 64bits, i386 para computadoras de 32 bits, o ia64 para computadoras de procesadores Itanium. 
7) Asegúrate de que tu Windows Firewall está encendido por defecto
Debido a que las aplicaciones del servidor pueden recibir solicitudes de conexiones no deseadas, es mejor activar el Firewall y así se evita que se interrumpa la instalación, además de que solo las aplicaciones que se desean se conecten lo harán. Para ello, verifique antes de la instalación que puertos usan tales aplicaciones para que las especifique en las excepciones del firewall.

8) Prepare su ambiente de Active Directory para la actualización de Windows Server 2008
Antes de añadir un controlador de dominio que corra en Windows Server 2008 en un ambiente de Active Directory que corra en Windows 2000 Server o Windows Server 2003, necesita actualizar el ambiente. Para ello debe seguir los siguientes pasos:
Para preparar una Foresta:
a) Inicie sesión con un usuario administrador de dominio o Enterprise Admin.
b) Desde el DVD de instalación de Windows Server 2008 copie el folder\sources\adprep a $\sysvol\
c) Abra una ventana de CommandPrompt, vaya al directorio$\sysvol\adrep\ y ejecute "adrep /forestprep"
d) Si está instalando un Controlador de Dominio "ReadOnly" (RODC), ejecute "adprep /rodcprep"
e) Deje que se apliquen todos los cambios antes de pasar a la instalación.
Para preparar un Dominio
a) Inicie sesión con un usuario administrador de dominio.
b) Desde el DVD de instalación de Windows Server 2008 copie el folder\sources\adprep a $\sysvol\
c) Abra una ventana de CommandPrompt, vaya al directorio$\sysvol\adprep\ y ejecute "adrep /domainprep /gpprep"
d) Deje que se apliquen todos los cambios antes de pasar a la instalación.
Después de estos pasos, se pueden añadir más controladores de dominio que corran WS2008 a los dominios que ya se han preparar.

mapa conceptual



Herramientas de medición

Herramientas de medición:


El Monitor de confiabilidad y rendimiento de Windows es un complemento de Microsoft Management Console (MMC) que combina la funcionalidad de herramientas independientes anteriores, incluidos Registros y alertas de rendimiento, Server Performance Advisor y Monitor de sistema. Proporciona una interfaz gráfica para personalizar la recopilación de datos de rendimiento y sesiones de seguimiento de eventos.

También incluye el Monitor de confiabilidad, un complemento de MMC que lleva un seguimiento de los cambios producidos en el sistema y los compara con los cambios de estabilidad del sistema, proporcionando una vista gráfica de su relación.

Indicadores de desempeño:


Indicadores del Rendimiento de un Computador

Los indicadores del rendimiento de un computador son una serie de parámetros que conforma una modelo simplificado de la medida del rendimiento de un sistema y son utilizados por los arquitectos de sistemas, los programadores y los constructores de compiladores, para la optimización del código y obtención de una ejecución más eficiente. Dentro de este modelo, estos son los indicadores de rendimiento más utilizados:

4.1 Turnaround Time

El tiempo de respuesta. Desde la entrada hasta la salida, por lo que incluye accesos a disco y memoria, compilación, sobrecargas y tiempos de CPU. Es la medida más simple del rendimiento.

En sistemas multiprogramados no nos vale la medida del rendimiento anterior, ya que la máquina comparte el tiempo, se produce solapamiento E/S del programa con tiempo de CPU de otros programas. Necesitamos otra medida como es el TIEMPO CPU USUARIO.

4.2 Tiempo de cada ciclo ( )

El tiempo empleado por cada ciclo. Es la constante de reloj del procesador. Medida en nanosegundos.

4.3 Frecuencia de reloj (f) 

Es la inversa del tiempo de ciclo. f = 1/ . Medida en Megahertz.

4.4 Total de Instrucciones (Ic) 

Es el número de instrucciones objeto a ejecutar en un programa.

4.5 Ciclos por instrucción (CPI) 

Es el número de ciclos que requiere cada instrucción. Normalmente, CPI = CPI medio.

Roadmap



Un RoadMap (que podría traducirse como hoja de ruta) es una planificación del desarrollo de un software con los objetivos a corto y largo plazo, y posiblemente incluyendo unos plazos aproximados de consecución de cada uno de estos objetivos. Se suele organizar en hitos o "milestones", que son fechas en las que supuestamente estará finalizado un paquete de nuevas funcionalidades.

Para los desarrolladores de software, se convierte en una muy buena práctica generar un Roadmap, ya que de esta forma documentan el estado actual y posible futuro de su software, dando una visión general o específica de hacia adónde apunta a llegar el software.

La expresión Roadmap se utiliza para dar a conocer el "trazado del camino" por medio del cual vamos a llegar del estado actual al estado futuro. Es decir, la secuencia de actividades o camino de evolución que nos llevará al estado futuro.