Software">
Conceptos Generales v1
Conceptos Generales v1
Conceptos Generales v1
Sergio Martinez
Ing. Muriel Cuccetti
Binario: dos valores posibles (0 y 1)
Características:
Base del sistema: que se define como un convenio de agrupación de sus unidades.
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 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.
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 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.
- 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.
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