Que es software libre
Si usas alguna version de linux o recomiendas a alguien a usarlo por
ahi saldrá el termino software libre, a mi me a pasado que siempre me
preguntan ¿Qué es software libre? y la verdad que definirlo no es mi fuerte asi que mejor un video :P o sino si deseas más informacion de wikipedia
Software
From Wikipedia, the free encyclopedia
For other uses, see Software (disambiguation).
|
This article needs additional citations for verification. (September 2013) |
Computer software, or just software, is any set of machine-readable instructions that directs a computer's processor to perform specific operations. The term is used to contrast with computer hardware, the physical objects (processor
and related devices) that carry out the instructions. Computer hardware
and software require each other and neither can be realistically used
without the other.
Software is a general term. It can refer to all computer instructions
in general, or to any specific set of computer instructions. It is
inclusive of both machine instructions (the binary code that the processor "understands") and source code (more human-understandable instructions that must be rendered into machine code by compilers or interpreters before being executed).
Computer software is a set of programs, procedures, functions, associated data and/or its documentation, if any. Program software performs the function of the program it implements, either by directly providing instructions to the digital electronics or by serving as an input to another piece of software. Software is also sometimes used in a more narrow sense, meaning application software only.
Computer software is so called to distinguish it from computer hardware,
which encompasses the physical devices and interconnections required to
store and run ("execute") the software. In contrast to hardware,
executable software exists as data in the computer system and hence
"cannot be touched", just as the 3D model shown in the illustration
cannot be touched.[1] At the lowest level, executable code consists of machine language instructions specific to an individual processor. A machine language
consists of groups of binary values signifying processor instructions
that change the state of the computer from its preceding state. For
example, an instruction may change the value stored in a particular
storage location inside the computer (an effect that is not directly
observable to the user), or (indirectly) cause something to appear on a
display of the computer system (a state change which should be visible
to the user). The processor carries out the instructions in the order
they are provided, unless it is instructed to "jump" to a different
instruction, or interrupted.
Software is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language)
than machine language. High-level languages are compiled or interpreted
into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic
representation of a machine language using a natural language alphabet.
Assembly language must be assembled into object code via an assembler.
Contents
History
Main article: History of software
Types of software
Software encompasses a wide array of products that may be developed using different techniques such as ordinary programming languages, microcode, or an FPGA configuration[citation needed].
On virtually all computer platforms, software can be grouped into a few broad categories:
- System software is computer software designed to operate the computer hardware, to provide basic functionality, and to provide a platform for running application software. System software includes device drivers, operating systems, servers, utilities, and window systems.
- System software also includes the boot firmware, which loads (or in some cases constitutes) the operating system. Firmware is software that has been permanently stored in hardware (specifically, in non-volatile memory). Thus, it has qualities of both software and hardware, but it is still software.
- Application software and scripts were historically defined as all the software that uses the computer system to perform useful work (or entertainment functions)
beyond the basic operation of the computer itself. However, in practice
the distinction between system software and application software is
often blurred due to bundling of useful applications with the operating
system.
- Application software includes desktop applications such as web browsers and Microsoft Office, as well as smartphone and tablet applications (called "apps").
- Javascript scripts are pieces of software traditionally embedded in web pages that are run directly inside the web browser when a web page is loaded, without the need for a web browser plugin. Software written in other programming languages can also be run within the web browser if the software is either translated into Javascript, or if a web browser plugin that supports that language is installed; the most common example of the latter is ActionScript scripts, which are supported by the Adobe Flash plugin.
- Web applications usually run on the web server and output dynamically-generated web pages to web browsers, using e.g. PHP, Java or ASP.NET, or even Javascript that runs on the server; in modern times they commonly include some Javascript to be run in the web browser as well, in which case they typically run partly on the server, partly in the web browser.
- Plugins and extensions are software that extends or modifies the functionality of another piece of software, and require that software be used in order to function;
- Embedded software resides as firmware within embedded systems, devices dedicated to a single use or a few uses such as cars and televisions (although some embedded devices such as wireless chipsets can themselves be part of an ordinary, non-embedded computer system such as a PC or smartphone). In the embedded system context there is sometimes no clear distinction between the system software and the application software. However, some embedded systems run embedded operating systems, and these systems do retain the distinction between system software and application software (although typically there will only be one, fixed, application which is always ran).
- Microcode is a special, relatively obscure type of embedded software which tells the processor itself how to execute machine code, so it is actually a lower level than machine code. It is typically proprietary to the processor manufacturer, and any necessary correctional microcode software updates are supplied by them to users (which is much cheaper than shipping replacement processor hardware). Thus an ordinary programmer would not expect to ever have to deal with it.
Programming tools
Main article: Programming tool
Programming tools are software in the form of programs or applications that software developers (also known as programmers, coders, hackers or software engineers) use to create, debug, maintain (i.e. improve or fix), or otherwise support
software. Software is written in one or more programming languages;
there are many programming languages in existence, and each has at least
one implementation, each of which consists of its own set of
programming tools. These tools may be relatively self-contained programs
such as compilers, debuggers, interpreters, linkers, and text editors,
that can be combined together to accomplish a task, much as one might
use multiple hand tools to fix a physical object, or they may be an integrated development environment
(IDE), which combines much or all of the functionality of such
self-contained tools. An IDE may do this either by invoking the relevant
individual tools on behalf of the programmer, or by reimplementing
their functionality in a new way. Almost all programming language
implementations (a notable exception being Smalltalk)
provide the option of using individual tools rather than an IDE,
because some programmers prefer not to use IDEs for various reasons, and
IDEs usually take longer to be developed to an "acceptable" standard
than individual tools - indeed, initially, new programming languages
(which are created every year) would not typically have IDEs available
for them.
Software topics
Architecture
See also: Software architecture
Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.
- Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.
- Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.
- User-written software: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates and word processor templates. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.
Execution
Main article: Execution (computing)
Computer software has to be "loaded" into the computer's storage (such as the hard drive or memory). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data, carrying out a computation, or altering the control flow of instructions.
Data movement is typically from one place in memory to another.
Sometimes it involves moving data between memory and registers which
enable high-speed data access in the CPU. Moving data, especially large
amounts of it, can be costly. So, this is sometimes avoided by using
"pointers" to data instead. Computations include simple operations such
as incrementing the value of a variable data element. More complex
computations may involve many operations and data elements together.
Quality and reliability
Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux.
If software is faulty (buggy), it can delete a person's work, crash the
computer and do other unexpected things. Faults and errors are called "bugs." Many bugs are discovered and eliminated (debugged) through software testing.
However, software testing rarely – if ever – eliminates every bug; some
programmers say that "every program has at least one more bug"
(Lubarsky's Law). All major software companies, such as Microsoft,
Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing
and other methods, which are done manually, or most commonly,
automatically, since the amount of code to be tested can be quite large.
For instance, NASA
has extremely rigorous software testing procedures for many operating
systems and communication functions. Many NASA based operations interact
and identify each other through command programs called software. This
enables many people who work at NASA to check and evaluate functional
systems overall. Programs containing command software enable hardware
engineering and system operations to function much easier together.
License
Main article: Software license
The software's license gives the user the right to use the software
in the licensed environment. Some software comes with the license when
purchased off the shelf, or an OEM license when bundled with hardware.
Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware.
Patents
Main articles: Software patent and Software patent debate
Software can be patented in some but not all countries; however, software patents
can be controversial in the software industry with many people holding
different views about it. The controversy over software patents is about
specific algorithms or techniques that the software contains, which may not be duplicated by others and considered intellectual property and copyright infringement depending on the severity.
Design and implementation
Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much more time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.
Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Emacs and Microsoft Visual Studio that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications, Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hash table, array, and binary tree
can be useful to creating software. When a program is designed, it
relies on the API. For instance, if a user is designing a Microsoft
Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show()[2]
to close or open the application and write the additional operations
him/herself that it need to have. Without these APIs, the programmer
needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.
Computer software has special economic characteristics that make its
design, creation, and distribution different from most other economic
goods.[specify][3][4]
A person who creates software is called a programmer, software engineer or software developer, terms that all have a similar meaning.
Industry and organizations
Main article: Software industry
A great variety of software companies and programmers in the world
comprise a software industry. Software can be quite a profitable
industry: Bill Gates, the founder of Microsoft was the richest person in the world in 2009 largely by selling the Microsoft Windows and Microsoft Office software products. The same goes for Larry Ellison, largely through his Oracle database software. Through time the software industry has become increasingly specialized.
Non-profit software organizations include the Free Software Foundation, GNU Project and Mozilla Foundation. Software standard organizations like the W3C, IETF develop software standards so that most software can interoperate through standards such as XML, HTML, HTTP or FTP.
Other well-known large software companies include Novell, SAP, Symantec, Adobe Systems, and Corel, while small companies often provide innovation.
See also
- Software release life cycle
- List of software
La principal diferencia entre hardware y software es que el hardware es todo dispositivo físico, algo que se puede tocar, al contrario del software que es un conjunto de instrucciones de código instalado en el computador que se ejecutan para cumplir una función, no lo puedes tocar físicamente.
Por ejemplo, el monitor, teclado y el mouse son ejemplos de hardware del computador. Mientras que el sistema operativo, office Word e internet son ejemplos de software. En otras palabras:
- Hardware = equipos o dispositivos que puedes tocar, por ejemplo: CPU, disco duro, monitor, teléfono celular, etc
- Software = lo que se ejecuta en el equipo, por ejemplo: Windows, juegos de computadora, procesador de texto, navegadores de internet, apps, etc
Hardware y software trabajan juntos como un complemento para proporcionar funcionalidad al equipo. El hardware incluye los componentes físicos, tales como la placa base, chips, memoria y unidades de disco duro, mientras que el software incluye los programas que se ejecutan en el hardware. Aunque hardware y software son a menudo asociados solo con las computadoras, en la actualidad el software funciona en equipos móviles como teléfonos celulares, tabletas, asistentes personales digitales (PDAs) y otros. Tanto el hardware y como el software están en constantemente avance tecnológico.
El hardware es generalmente el cuello de botella cuando se trata de velocidades de transferencia de datos, cuando un programa de software requiere mayor velocidad para funcionar. Por lo tanto, cuando se cuenta con hardware moderno con mayor capacidad, se puede ejecutar programas de software más robustos.
No hay comentarios:
Publicar un comentario