Software">
Nothing Special   »   [go: up one dir, main page]

Conceptos Generales v1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Ing.

Sergio Martinez
Ing. Muriel Cuccetti
Binario: dos valores posibles (0 y 1)

Decimal: diez valores posibles (0 al 9)

Hexadecimal: 16 valores posibles

Características:
Base del sistema: que se define como un convenio de agrupación de sus unidades.

Numerales del sistema, o cifras elementales que se utilizan, según la base.

Normas de combinación de los numerales para formar los números. Según ello, a cada
cifra se le asocian dos propiedades: su valor absoluto intrínseco y su valor posicional o
relativo, que depende de la posición que ocupa en la cantidad numérica.
Dónde se usan?
Lenguaje puro de máquina: binario
Direcciones de memoria: hexa (0xFF23)
Capacidad de almacenamiento: bytes
Transferencia de datos: bits por unidad de tiempo (Mbits/seg)
• Lenguaje de máquina (binario)  no es portable (es exclusivo para un hardware)

• Lenguaje ensamblador (mnemónicos) no es portable (es exclusivo para un hardware)

• Lenguaje de alto nivel  iniciado por FORTRAN (da origen a C y Pascal entre otros)

• Lenguaje de 4ta generación  SQL, Pynthon, Perl, Ruby, C++, Java, etc.

• Otros lenguajes híbridos como JavaScript , VB Script, PHP, JSP, ASP, etc.

COMPILADOS: se requiere el ejecutable para usarlo

Código fuente  compilación ejecutable  ejecución

INTERPRETADOS: se requiere el código fuente para su ejecución

Código fuente  interpretación  ejecución


Hoy en día la mayoría de los lenguajes integrados en páginas web son interpretados, la
razón es por que la descarga de Internet es relativamente lenta.

Ruby, Python, PHP(se interpreta del lado del servidor),JavaScript y otros como Perl,
Smalltalk

Ventajas
♦ Se tarda menos en crear el primer código máquina.
♦ No hace falta cargar todas las líneas para empezar a ver resultados
♦ Se debe compartir el código fuente (Fomenta Open Source)

Desventajas
♦ El código máquina producido es peor ya que no se optimiza.
♦ Todos los errores son errores en tiempo de ejecución.
♦ El código máquina resultante usa más espacio.
♦ Hay errores difícilmente detectables.
C++ que incluye a C, Objective C, C# y también otros como Fortran, Pascal, Cobol y
Visual Basic.

Ventajas
♦ Se detectan errores antes de ejecutar el programa (errores de compilación)
♦ El código máquina generado es más rápido (ya que se optimiza)
♦ Es más fácil hacer procesos de depuración de código

Desventajas
♦ El proceso de compilación del código es lento.
♦ No es útil para ejecutar programas desde Internet, lo que ralentiza mucho su uso.

HIBRIDOS:
Durante muchos años, los lenguajes potentes han sido compilados. El uso masivo de
Internet ha propiciado que esta técnica a veces no sea adecuada y haya lenguajes
modernos interpretados o semi interpretados, mitad se compila hacia un código
intermedio y luego se interpreta línea a línea (esta técnica la siguen Java y los lenguajes
de la plataforma .NET de Microsoft).
Apache/Nginx: escritos en C
MySQL: escrito en C y C++
PHP: basado en C y C++
Internet Explorer: escrito en C y C++
Chrome: escrito en C, C++, Java, JavaScript y phyton
Firefox: C++, JavaScript, C entre otros
Windows: en C, C++, C# y otros
Unix/Linux: en C, C++ y más recientemente phyton
MacOS: basado en Unix/Linux
Android: en Java, C y C++
Xbox/Playstation: C++
• Debe resolver el problema para el que fue formulado.
• Debe ser preciso.
• Conjunto finito de pasos. Debe finalizar en algún momento.
• Debe de poder repetirse. Permitir su ejecución las veces que haga falta.
• Validez: Un algoritmo es válido si carece de errores.
• Eficiencia: Obtiene la solución con menor uso de recursos (tiempo, mem, etc).
• Óptimo: Si es lo más eficiente posible y no contiene errores.
Error del usuario. Errores que se producen cuando el usuario realiza algo inesperado y
el programa no reacciona apropiadamente.

Error del programador. Son errores que ha cometido el programador al generar el


código. La mayoría de errores son de este tipo.

Errores de documentación. Ocurren cuando la documentación del programa no es


correcta y provoca fallos en el manejo.

Error de interfaz. Ocurre si la interfaz de usuario de la aplicación es compleja para el


usuario, impidiendo su manejo normal.

Error de entrada / salida o de comunicaciones. Ocurre cuando falla la comunicación


entre el programa y un dispositivo hardware (se desea imprimir y no hay papel).

Error fatal. Ocurre cuando el hardware produce una situación inesperado que el
software no puede controlar (el sistema se cuelga).

Error de ejecución. Ocurren por ejemplo cuando la ejecución del programa es más
lenta de lo previsto.
La labor del programador es predecir, encontrar y subsanar (si es posible) o al
menos controlar los errores.

Una mala gestión de errores causa experiencias poco gratas al usuario de la


aplicación.

Para resolver/evitar estos problemas:

- Pruebas y Testeos
- Estándares de programación
- Buenas prácticas
- Mejorar análisis de los requerimientos
- Reuniones con los usuarios de la aplicación
- Código Autodocumentado
- Técnicas de «smoke test» (exigencias máximas)
- Protocolos de testeo (no realizado por el programador)
- Lanzamiento de versiones beta
- Colaboración de la comunidad de programadores (open source)
- etc
• Análisis. Se determinan los requisitos que tiene que cumplir la aplicación.
• Diseño. Se especifican los esquemas de diseño de la aplicación. Estos
esquemas forman los planos del programador.
• Codificación. En esta fase se pasa el diseño a código escrito en algún
lenguaje de programación.
• Pruebas. Se trata de comprobar que el funcionamiento de la aplicación es
la adecuada.
• Mantenimiento. Tiene lugar una vez que la aplicación ha sido ya
distribuida.
El desarrollo de software no se detiene en la primera entrega y puesta en
producción del producto o del servicio, sino que continúa durante la vida útil
del sistema, hasta que éste sea retirado (posiblemente sustituido por un
sistema de software más moderno o potente).

Inevitablemente deberá ser modificado para continuar siendo útil: sea porque
hay nuevos requerimientos de los usuarios o del negocio, porque el entorno
regulatorio ha cambiado, porque es forzoso corregir defectos que no fueron
detectados antes de ponerlo en operación, porque es necesario ajustarlo a
cambios en la plataforma operativa, integrarlo con otras aplicaciones o
moverlo a nuevos ambientes.

Quizás sea requerido mejorar su rendimiento, crearle nuevas interfaces de


usuario para canales móviles o web, o hasta cambiar su apariencia, sensación y
usabilidad.
Si… es la degradación del sistema informático a causa de su uso. Acumulación
de errores y mayor degradación, hace que pueda comenzar a fallar (inestable).

En una computadora de empleo cotidiano, este fenómeno se mitiga en un acto


tan ingenuo e intuitivo como reiniciar la máquina. Pero en un sistema más
complejos, como el de un Banco, que afecta a millones de usuarios y funciona
los 365 días del año, la historia es muy diferente.

Por esta razón, es de suma importancia dedicarle tiempo a los requerimientos


previos y establecer testeos serios durante todas las fases de desarrollo del
software, respetar las buenas prácticas y normas establecidas. Esto marca la
diferencia entre un software de calidad y otro mediocre.

Existen también métodos de "rejuvenecimiento" del software desarrolladas


por Ing Kishor Trivedi (por ejemplo) que detectan los errores y permiten el
mantenimiento del sistema. Estas técnicas han sido implementadas en los
servidores "X series" de IBM y más recientemente en Huawei.
Software a utilizar:

- mingw (compilador C/C++ open source Windows): http://www.mingw.org/


- code::blocks (IDE open source para Windows): http://www.codeblocks.org/

Todo en uno portable para windows:

Code::Blocks EDU-Portable: http://codeblocks.codecutter.org/

Para los usuarios de Linux:

- Se puede utilizar también code::blocks.


- Utilizar el compilador nativo gcc y un editor de texto (gedit, nano, etc).

Ejemplos:
https://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm
https://maslinux.es/como-compilar-y-ejecutar-programas-c-c-en-gnu-linux/
Ing. Sergio Martinez
Ing. Muriel Cuccetti

También podría gustarte