Herramientas de usuario

Herramientas del sitio


introduccion2

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
introduccion2 [2020/03/09 22:19] – [Introducción] lmateuintroduccion2 [2020/03/09 23:44] (actual) lmateu
Línea 1: Línea 1:
 ===== Introducción ===== ===== Introducción =====
  
-¿Qué es la programación de //software de sistemas//? (fuente: [[http://www.dcc.uchile.cl/docs/2010/CC3301_2009-2-ADD_2010.pdf|wikipedia]])+¿Qué es la //programación de software de sistemas//? (fuente: [[http://www.dcc.uchile.cl/docs/2010/CC3301_2009-2-ADD_2010.pdf|wikipedia]])
  
-La alternativa es el //software de aplicaciones// que busca producir programas que proveen servicios al usuario directamente.  Por ejemplo un procesador de texto como word, un navegador para la web como chrome, un editor de fotografías como photoshop, etc.  En cambio el software de sistemas busca producir programas o plataformas que: +La alternativa es la //programación de software de aplicaciones// que busca producir programas que proveen servicios al usuario directamente.  Por ejemplo un procesador de texto como word, un navegador para la web como chrome, un editor de fotografías como photoshop, etc.  En cambio el software de sistemas busca producir programas o plataformas que: 
-  * Proveen servicios a otro software: un motor para juegos de video, un administrador de bases de datos, un intérprete de Python, etc.+  * Proveen servicios a otro software: un motor para juegos de video, un administrador de bases de datos, el intérprete de Python, etc.
   * Poseen requisitos especiales en cuanto a desempeño: el sistema operativo, resolución numérica de ecuaciones diferenciales, sistemas de control de maquinarias, etc.   * Poseen requisitos especiales en cuanto a desempeño: el sistema operativo, resolución numérica de ecuaciones diferenciales, sistemas de control de maquinarias, etc.
   * Usualmente ambas.   * Usualmente ambas.
- 
- 
  
 Programa de curso: Programa de curso:
Línea 16: Línea 14:
 ¿Por qué estudiar el lenguaje C? ¿Por qué estudiar el lenguaje C?
  
-Cuando se requiere alto desempeño el mejor lenguaje es C o su sucesor C++.  Por eso hay una enorme cantidad de software escrito en C y es probable que Ud. tenga que hacer mejoras a programas en C cuando se desempeñe como profesional.+Cuando se requiere alto desempeño el mejor lenguaje es C o su sucesor C++.  Por eso hay una enorme cantidad de software escrito en C y es probable que Ud. tenga que hacer mejoras a programas en C cuando se desempeñe como profesional.  También podría requerir programar en C si los requisitos de desempeño son elevados, por ejemplo los decodificadores de video se programan en C. 
 + 
 +Por esta razón el sitio //stackify.com// señala a C entre [[https://stackify.com/popular-programming-languages-2018|los lenguajes más populares]] entre los programadores.
  
 ¿Cual es la principal desventaja de C? ¿Cual es la principal desventaja de C?
  
-Ud. ya sabe programar en Python y aprenderá Java en Metodologías de Diseño y Programación.  Estos lenguajes son robustos: verifican que cada operación realizada sea válida en tiempo de ejecución.  En cambio C //no es robusto// Por razones de eficiencia no se verifica la validez de las operaciones.  Por ejemplo no se chequea que el índice sea válido al acceder a un arreglo, lo que desencadena frecuentemente una sucesión de errores que lleva al programa a acceder a memoria que no fue atribuida por el sistema operativo, arrojando el mensaje //segmentation fault// Prácticamente es el único mensaje de error que se entrega durante la ejecución.  Ud. va a tener pesadillas con este mensaje de error.  Esto se traduce también en que es mucho más difícil depurar un programa en C que su contraparte en Python o Java y por lo tanto la productividad en C es inferior a la de Java, la que ya es inferior a la de Python.  Por eso el uso de C se reserva solo a la programación de software de sistemas.+Ud. ya sabe programar en Python y aprenderá el lenguaje Java en Metodologías de Diseño y Programación.  Estos lenguajes son robustos: verifican que cada operación realizada sea válida en tiempo de ejecución.  En cambio C //no es robusto// Por razones de eficiencia no se verifica la validez de las operaciones.  Por ejemplo no se chequea que el índice sea válido al acceder a un arreglo, lo que desencadena frecuentemente una sucesión de errores que lleva al programa a acceder a memoria que no fue atribuida por el sistema operativo, arrojando el mensaje //segmentation fault// Prácticamente es el único mensaje de error que se entrega durante la ejecución.  Ud. va a tener pesadillas con este mensaje de error.  Esto se traduce también en que es mucho más difícil depurar un programa en C que su contraparte en Python o Java y por lo tanto la productividad en C es inferior a la de Java, la que ya es inferior a la de Python.  Por eso el uso de C se reserva solo a la programación de software de sistemas.
  
 ¿Por qué estudiar los threads? ¿Por qué estudiar los threads?
Línea 32: Línea 32:
 ¿Por qué estudiar los sockets? ¿Por qué estudiar los sockets?
  
-Muchos sistemas hoy son del tipo cliente/servidor.  En estos una parte del problema se resuelve con un programa que se ejecuta en el computador del usuario (el cliente) y otro programa que corre en un computador lejano (el servidor) que almacena los datos requeridos.  Por ejemplo la web funciona de esta forma: el cliente es el navegador (como firefox) y el servidor es el programa que accede a las páginas web (usualmente apache).  Los sockets son la herramienta que usan cliente y servidor para comunicarse y constituyen la base de la internet.  En este curso aprenderá a usar los sockets para programar aplicaciones cliente/servidor.+Muchos sistemas son del tipo cliente/servidor.  En estos una parte del problema se resuelve con un programa que se ejecuta en el computador del usuario (el cliente) y otro programa que corre en un computador lejano (el servidor) que almacena los datos requeridos.  Por ejemplo la web funciona de esta forma: el cliente es el navegador (como firefox) y el servidor es el programa que accede a las páginas web (usualmente apache).  Los sockets son la herramienta que usan cliente y servidor para comunicarse y constituyen la base de la internet.  En este curso aprenderá a usar los sockets para programar aplicaciones cliente/servidor
 + 
 +También usaremos los sockets como herramienta de paralelización: para lograr que un problema sea resuelto en paralelo usando múltiples computadores conectados a la internet.
  
 ¿Por qué no se enseña C++? ¿Por qué no se enseña C++?
introduccion2.1583792344.txt.gz · Última modificación: 2020/03/09 22:19 por lmateu