software
software y hardware juntos y separados
¿Qué es el software?
El término «software» fue usado por primera vez en este sentido por John W. Tukey en 1957.
En la ingeniería de software y las ciencias de la computación, el software es toda la información procesada por los sistemas informáticos: programas y datos.
Software de sistemas y de aplicaciones
El software de sistemas denominado también software de base, consiste en software que sirve para controlar e interactuar con el sistema operativo, proporcionando control sobre el hardware y dando soporte a otros programas; en contraste del llamado software de aplicación. Como ejemplos cabe mencionar a las bibliotecas como por ejemplo OpenGL para la aceleración gráfica, PNG para el sistema gráfico o demonios que controlan la temperatura, la velocidad del disco duro, como hdparm, o la frecuencia del cpudyn.
El software de aplicación son todos aquellos programas de computo cuya finalidad o utilidad esta dirigida a el usuario final, es decir el que nos permite realizar una tarea en especifico con la ayuda de dicho programa, como bajar música itunes, ver vídeos you tobe, etc.
Software libre
El software libre es la denominación del software que respeta la libertad de todos los usuarios que adquirieron el producto y, por tanto, una vez obtenido el mismo puede ser usado, copiado, estudiado, modificado, y redistribuido libremente de varias formas. Según la free software foundations, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, y estudiar el mismo, e incluso modificar el software y distribuirlo modificado.
Tampoco debe confundirse software libre con "software de dominio publico". Éste último es aquel software que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquel cuyo autor lo dona a la humanidad o cuyos derecho de autor han expirado, tras un plazo contado desde la muerte de éste, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es del dominio público.
Ventajas
- Existen aplicaciones para todas las plataformas (Linux, Windows, Mac Os ).
- El precio de las aplicaciones es mucho menor, la mayoria de las veces son gratuitas.
- Libertad de copia.
- Libertad de modificación y mejora.
- Libertad de uso con cualquier fin.
- Libertad de redistribución.
- Facilidad a la hora de traducir una aplicacion en varios idiomas.
- Mayor seguridad y fiabilidad.
- El usuario no depende del autor del software.
Desventajas
- Algunas aplicaciones ( bajo Linux ) pueden llegar a ser algo complicadas de instalar.
- Inexistencia de garantía por parte del autor.
- Interfaces gráficas menos amigables.
- Poca estabilidad y flexibilidad en el campo de multimedia y juegos.
- Menor compatibilidad con el hardware.
Software de propietario
Este concepto es sin embargo una traducción errónea del Propietary Software, teniéndose en este caso el erróneo ejemplo de que no podría ser propiedad o dueño de nada, sino que se trata de un error Semántico, considerándose como propietario más bien a quien pueda ejercer un Derecho de Propiedad sobre el mismo.
En contraposición a este concepto encontramos entonces al Software Libre, que es básicamente aquel que no está sujeto a las leyes, normativas y restricciones relativas al Derecho de Autor, comprendiéndose en este género no solo a las aplicaciones de libre distribución (conocidas como Freeware) sino también a aquellas de Código Abierto, que permiten la lectura, distribución y modificación de su Código Fuente, siendo inclusive desarrolladas en conjunto por una comunidad determinada.
Para poder solucionar las posibles confusiones respecto a este término es que se suele llamar entonces al Software con Propietario, como una de las formas de diferenciar a que justamente todo Software puede hacer uso de los derechos acerca de su distribución y utilización, definiéndose entonces a un “Software No Libre” que solamente puede ser distribuido, reutilizado o modificado bajo explícita expresión de quien tiene Derechos de Autor sobre el mismo.
En contraposición a lo que es el Software Libre, podemos definir entonces al Software Propietario como una especie de contraposición o antítesis, que permite diferenciarlo, y a veces hasta desacreditando su eficacia, considerándose de que éste estaría desligado de derechos en lo que es su uso y distribución, por lo que no tendría un Sustento Legal en su desarrollo y utilización, sino su sola aceptación dentro de una comunidad determinada.
Ventajas
- Facilidad de adquisición ( puede venir preinstalado con la compra del pc, o encontrarlo fácilmente en las tiendas ).
- Existencia de programas diseñados especificamente 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.
Desventajas
- No existen aplicaciones para todas las plataformas ( Windows y Mac OS ).
- Imposibilidad de copia.
- Imposibilidad de modifació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.
El sistema operativo
Un Sistema Operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios. Es un administrador de los recursos de hardware del sistema.
Es un sistema que consiste en ofrecer una distribución ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten por ellos.
Los sistemas operativos realizan dos funciones diferentes.
El sistema operativo como maquina virtual.
Un computador se compone de uno o más procesadores o CPUs, memoria principal o RAM, memoria secundaria (discos), tarjetas de expansión (tarjetas de red, modems y otros), monitor, teclado, mouse y otros dispositivos. O sea, es un sistema complejo. Escribir programas que hagan uso correcto de todas estas componentes no es una tarea trivial. Peor aún si hablamos de uso óptimo. Si cada programador tuviera que preocuparse de, por ejemplo, como funciona el disco duro del computador, teniendo además siempre presentes todas las posibles cosas que podrían fallar, entonces a la fecha se habría escrito una cantidad bastante reducida de programas.
Es mucho más fácil decir `escriba "Chao" al final del archivo "datos"', que
1-Poner en determinados registros del controlador de disco la dirección que se quiere escribir, el número de bytes que se desea escribir, la posición de memoria donde está la información a escribir, el sentido de la operación (lectura o escritura), amén de otros parámetros;
2-Decir al controlador que efectué la operación.
3-Esperar. Decidir qué hacer si el controlador se demora más de lo esperado (¿cuánto es "lo esperado"?).
4-Interpretar el resultado de la operación (una serie de bits).
5-Reintentar si algo anduvo mal.
6-etc.
Además, habría que reescribir el programa si se instala un disco diferente o se desea ejecutar el programa en otra máquina.
Hace muchos años que quedó claro que era necesario encontrar algún medio para aislar a los programadores de las complejidades del hardware. Esa es precisamente una de las tareas del sistema operativo, que puede verse como una capa de software que maneja todas las partes del sistema, y hace de intermediario entre el hardware y los programas del usuario. El sistema operativo presenta, de esta manera, una interfaz o máquina virtual que es más fácil de entender y de programar que la máquina "pura". Además, para una misma familia de máquinas, aunque tengan componentes diferentes (por ejemplo, monitores de distinta resolución o discos duros de diversos fabricantes), la máquina virtual puede ser idéntica: el programador ve exactamente la misma interfaz.
El sistema operativo como administrador de recursos.
La otra tarea de un sistema operativo consiste en administrar los recursos de un computador cuando hay dos o más programas que ejecutan simultáneamente y requieren usar el mismo recurso (como tiempo de CPU, memoria o impresora).
Además, en un sistema multiusuario, suele ser necesario o conveniente compartir, además de dispositivos físicos, información. Al mismo tiempo, debe tenerse en cuenta consideraciones de seguridad: por ejemplo, la información confidencial sólo debe ser accesada por usuarios autorizados, un usuario cualquiera no debiera ser capaz de sobreescribir áreas críticas del sistema, etc. (En este caso, un usuario puede ser una persona, un programa, u otro computador). En resumen, el sistema operativo debe llevar la cuenta acerca de quién está usando qué recursos; otorgar recursos a quienes los solicitan (siempre que el solicitante tenga derechos adecuados sobre el recurso); y arbitrar en caso de solicitudes conflictivas.
Algunas de las tareas que generalmente realiza un sistema operativo son:
-Realizar el interfaz sistema-usuario.
-Compartir los recursos de Hardware entre los usuarios.
-Permitir a los usuarios compartir sus datos entre ellos.
-Prevenir que las actividades de un usuario no interfieran en las de los demás usuarios.
-Calendarizar los recursos de los usuarios.
-Facilitar el acceso a los dispositivos de E/S.
-Recuperarse de fallas o errores.
-Llevar el control sobre el uso de los recursos.
entre otras...
Linux GNU
Linux
Se trata de un sistema operativo de 32 bits de libre distribución, desarrollado originalmente por Linus Torvalds, un estudiante de la universidad finlandesa de Helsinki, quien, en 1991, se abocó a la tarea de reemplazar a Minix, un clon de Unix de pequeñas proporciones y finalidad académica desarrollado años antes por Andrew Tannenbaun.Actualmente, Linux posee todas las características que pueden encontrarse en cualquier sistema Unix moderno, incluyendo direccionamiento lineal de 32 bits, memoria virtual, multitarea real, shared libraries, módulos de kernel cargables on-demand, soporte TCP/IP (incluyendo SLIP, PPP, NFS, etc.), y sistema X-Windows (incluyendo servidores X para los adaptadores de video más populares, y clones de Motif, OpenLook, NextStep y Windows95 como window managers).
GNU.
El proyecto GNU se inició en 1984 con el objetivo de crear un sistema operativo completo tipo Unix de software libre: el sistema GNU.
El núcleo de GNU no está finalizado, así que se usa GNU con el núcleo Linux. La combinación de GNU y Linux es el sistema operativo GNU/Linux; actualmente se usa en millones de ordenadores.
En ocasiones, esta combinación se denomina incorrectamente Linux. Hay muchas variantes o «distribuciones» de GNU/Linux.
Recomendamos las distribuciones de GNU/Linux que están completamente formadas por software libre. En otras palabras, que respetan completamente la libertad.
GNU, que significa «ñu» en inglés,es un acrónimo recursivo de «GNU No es Unix» y en español se pronuncia fonéticamente.
Intefaz gráfica de usuario e Interfaz de linea de comandos.
La interfaz gráfica de usuario
Conocida también como GUI (del inglés graphical user interface) es un programa informático que actúa de interfaz de usuario, utilizando un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz. Su principal uso, consiste en proporcionar un entorno visual sencillo para permitir la comunicación con el sistema operativo de una máquina o computador.
Habitualmente las acciones se realizan mediante manipulación directa, para facilitar la interacción del usuario con la computadora. Surge como evolución de las interfaces de línea de comandos que se usaban para operar los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplos de interfaz gráfica de usuario, cabe citar los entornos de escritorio Windows, el X-Window de GNU/Linux o el de Mac OS X,Aqua.
En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático.
La Interfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinónimos.
Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (archivo batch), leyendo comandos desde un archivo de scripts.
Esta interfaz existe casi desde los comienzos de la computación, superada en antigüedad solo por las tarjetas perforadas y mecanismos similares. Existen, para diversos programas y sistemas operativos, para diversos hardware, y con diferente funcionalidad.
Por ejemplo, las CLI son parte fundamental de los Shells o Emuladores de Terminal. Aparecen en todos los desktops (Gnome, KDE, Windows) como un método para ejecutar aplicaciones rápidamente. Aparecen como interfaz de lenguajes interpretados tales como Java, Python, Ruby o Perl. También se utilizan en aplicaciones cliente-servidor, en DBs (Postgres, MySQL, Oracle), en clientes FTP, etc. Las CLI son un elemento fundamental de aplicaciones de ingeniería tan importantes como Matlab y Autocad.
La contraparte de CLI es la interfaz gráfica de usuario (GUI) que ofrece una estética mejorada y una mayor simplificación, a costa de un mayor consumo de recursos computacionales, y, en general, de una reducción de la funcionalidad alcanzable. Asimismo aparece el problema de una mayorvulnerabilidad por complejidad.
Las CLI son usadas por muchos programadores y administradores de sistemas como herramienta primaria de trabajo, especialmente en sistemas operativos basados en Unix; en entornos científicos y de ingeniería, y un subconjunto más pequeño de usuarios domésticos avanzados.
En dispositivos portables y PDAs (como el iPhone), las CLI no se utilizan, debido a lo complejo que resulta ingresar datos de texto, o por la ausencia total de teclados.
La linea de comandos permite que un programa sea ejecutado por otros programas. Esto se relaciona con la filosofía de Unix, donde cada pequeño programa efectúa una o muy pocas tareas, pero los programas se pueden intercomunicar entre sí para realizar tareas complejas, utilizando las interfaces provistas por el sistema (linea de comando, redirección, pipes, etc.)