Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.
LENGUAJE DE MAQUINA :
LENGUAJE DE BAJO NIVEL ( ENSAMBLADOR)
El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programaciónde bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integradosprogramables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones dememoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de ciertaarquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.
LENGUAJE DE ALTO NIVEL :
Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las máquinas.
En los primeros lenguajes, la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida.
Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman de tercera generación o de nivel alto, en contraposición a los de bajo nivel o de nivel próximo a la máquina.
COMPILADOR:
Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce como compilación.
INTERPRETE:
En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.
ALGORITMO :
En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi1 ) es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.2 Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.
SEUDOCÓDIGO:
En ciencias de la computación, y análisis numérico, el pseudocódigo (o falso lenguaje) es una descripción de alto nivel compacta e informal1 del principio operativo de unprograma informático u otro algoritmo.
Utiliza las convenciones estructurales de un lenguaje de programación real,2 pero está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas. El lenguaje de programación se complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de entender para las personas que el código del lenguaje de programación convencional, ya que es una descripción eficiente y con un entorno independiente de los principios fundamentales de un algoritmo. Se utiliza comúnmente en los libros de texto y publicaciones científicas que se documentan varios algoritmos, y también en la planificación del desarrollo de programas informáticos, para esbozar la estructura del programa antes de realizar la efectiva codificación.
DIAGRAMA DE FLUJO :
El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas comoprogramación, economía, procesos industriales y psicología cognitiva.
En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.
DEFINICIÓN DEL PROBLEMA :
A la hora de analizar a fondo el término problema es necesario que antes estipulemos el origen etimológico del mismo. En este sentido, podemos decir que aquel se encuentra en el latín y más concretamente en la palabra problēma. No obstante, también hay que determinar que la misma a su vez procede del término griego πρόβλημα.
Un problema es un determinado asunto o una cuestión que requiere de una solución. A nivel social, se trata de alguna situación en concreto que, en el momento en que se logra solucionar, aporta beneficios a la sociedad (como lograr disminuir la tasa de pobreza de un país o reconstruir edificios arrasados por un terremoto).
ANALISIS DEL PROBLEMA:
ANALISIS DEL PROBLEMA:
Después de haber identificado, seleccionado y definido el problema, el grupo identifica la(s) causa(s) principal(es) del mismo. En esta fase el objetivo es analizar el problema y dividirlo en sus partes componentes, examinando cómo es que van juntas. Es necesario comprender el contexto del problema y como unas partes afectan a otras.
Esta es una etapa preparatoria para la generación de soluciones potenciales y elaboración de planes de acción, pero se sabe que las decisiones no son mejores que la información sobre la que se basan. Por lo que es necesario verificar continuamente si se poseen los datos necesarios para continuar, de no ser así es mejor parar y pensar en cómo obtener los daos antes del siguiente paso. Es necesario separar las suposiciones de los hechos.La confianza en los datos – en oposición a las opiniones es uno de los fundamentales pilares en que se sustenta el proceso de solución de problemas. Los datos deben constituir la base de las acciones del grupo. La tarea de hallar hechos e investigarlos debe partir de una lista de información necesaria sobre la que es necesario investigar y presentar hallazgos.
DISEÑO DEL ALGORITMO:
En ingeniería del software, el diseño de algoritmos es un método específico para poder crear un modelo matemático ajustado a un problema específico para resolverlo. El diseño de algoritmos es una teoría de la Investigación de operaciones.
Existen varias técnicas de diseño de algoritmos que permiten desarrollar la solución al problema planteado, algunas de ellas son:
- Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima.
- Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.
- Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios
- Algoritmos determinísticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro ancesor.
- Algoritmos no determinísticos: El comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente.
- Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la solución al problema completo.
- Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.
- Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.
- Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.
- Vuelta Atrás (Backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
CODIFICACIÓN:
Se entiende por Codificación en el contexto de la Ingeniería al proceso de conversión de un sistema de datos de origen a otro sistema de datos de destino. De ello se desprende como corolario que la información contenida en esos datos resultantes deberá ser equivalente a la información de origen. Un modo sencillo de entender el concepto es aplicar el paradigma de la traducción entre idiomas en el ejemplo siguiente: home = hogar. Podemos entender que hemos cambiado una información de un sistema (inglés) a otro sistema (español) y que esencialmente la información sigue siendo la misma. La razón de la codificación está justificada por las operaciones que se necesiten realizar con posterioridad. En el ejemplo anterior para hacer entendible a una audiencia hispana un texto redactado en inglés es convertido al español.
COMPILACIÓN Y EJECUCIÓN :
Se denomina tiempo de compilación (compile-time en inglés) al intervalo de tiempo en el que un compilador compila código escrito en un lenguaje de programación a una forma de código ejecutable por una máquina.
El compilador normalmente realiza un chequeo de sintaxis, que incluye entre otros un chequeo de tipos y ejecución de reglas de ámbito, seguido de un análisis semántico, que se compone de procesos como el enlazado estático, la instanciación de plantillas y la optimización del código generado. El enlazado dinámico se realiza normalmente después del tiempo de compilación, bien en tiempo de ejecución o antes de éste, por medio de un cargador de programas. El chequeo de límites de arrays normalmente no se hace en tiempo de compilación.
PRUEBA Y DEPURACIÓN:
Depuración de programas es el proceso de identificar y corregir errores de programación. En inglés se le conoce comodebugging, es que se asemeja a la eliminación de bichos (bugs), manera en que se conoce informalmente a los errores de programación. Se dice que el término bug proviene de la época de los ordenadores de válvula termoiónica, en los cuales los problemas se generaban por los insectos que eran atraídos por las luces y estropeaban el equipo. Si bien existen técnicas para la revisión sistemática del código fuente y se cuenta con medios computacionales para la detección de errores (depuradores) y facilidades integradas en los sistemas lower CASE y en los ambientes de desarrollo integrado, sigue siendo en buena medida una actividad manual, que desafía la paciencia, la imaginación y la intuición del programador. Muchas veces se requiere incluir en el código fuente instrucciones auxiliares que permitan el seguimiento de la ejecución del programa, presentando los valores devariables y direcciones de memoria y ralentizando la salida de datos (modo de depuración). Dentro de un proceso formal de aseguramiento de la calidad, puede ser asimilado al concepto de prueba unitaria.
DOCUMENTACIÓN:
En sentido restringido, la documentación como ciencia documental se podría definir (a grandes rasgos) como la ciencia del procesamiento de información, que proporciona información algo con un fin determinado, de ámbito multidisciplinar o interdisciplinar.
Siguiendo a Fuentes y Pujol se puede señalar a la Documentación como una ciencia auxiliar e instrumental. También es una ciencia en si misma y una de las finalidades primordiales de la Documentación es informar.1 , en sentido general, las ciencias de la documentación y la documentación como sinónimos, si el contexto no perturba la intención del emisor, es decir, si no se distorsiona el mensaje del interlocutor porque no se dé ambigüedad semántica
MANTENIMIENTO :
La European Federation of National Maintenance Societies define el mantenimiento como: todas las acciones que tienen como objetivo mantener un artículo o restaurarlo a un estado en el cual pueda llevar a cabo alguna función requerida.
Técnicas de diseño top down y bottom up:
El mundo del desarrollo informático ha estado mucho tiempo debatiendo esta cuestión. Modos de desarrollo:
- top-down, el que corresponde a la descomposición progresiva de Descartes mencionada aquí. Se va de lo complejo a lo simple.
- Ventaja: La complejidad de lo que se estudia se reduce en cada etapa.
- Inconveniente 1: La manera de dividirse no tiene una única razón de ser, y probablemente no se elija el mejor. El problema se repite y se acumula en cada nueva etapa de descomposición.
- Inconveniente 2: La división de un problema en tramos puede eludir involuntariamente las cuestiones transversales que no pertenecen específicamente ni a un tramo, ni a otro. Peor: en el momento en que se examina cada tramo, se puede creer de buena fe que el problema transversal incumbe al otro. Ahora bien, para un problema complejo apenas parece posible guardar en cabeza simultáneamente todos los problemas transversales pendientes, excepto que se sepa formalizar bien por razones decostumbre.
Estas consideraciones conducen a no poner en entredicho el modelo top-down en un caso: el de los problemas que más o menos se conocen bien.
- bottom-up, el que corresponde al control progresivo de elementos simples, y que se combinan para avanzar hacia una complejidad cada vez mayor. Se va de lo simple a lo complejo.
- Inconveniente: muchas ensayos y errores, y no siempre en la buena dirección. Se titubea.
- Pero como contrapartida se familiariza con los elementos de la resolución, se ve dónde se ponen los pies, se adquiere una base estable.
En resumen, cada método tiene su ámbito de uso óptimo:
- El top-down para todo lo que se controla a grandes rasgos
- El bottom-up para explorar eficazmente los terra incógnita.
DISPOSITIVOS DE ENTRADA :
En informática, un periférico de entrada, es un dispositivo utilizado para proporcionar datos y señales de control a la unidad central de procesamiento de un computador. Por ejemplo: teclado, raton óptico, escáner, joystick, que están conectados al computador y son controlados por su microprocesador. A pesar de que el término periférico implica a menudo el concepto de “adicional pero no esencial”, muchos de ellos son elementos fundamentales para un sistema informático. Sin embargo, al ser las fuentes primordiales de entrada, se pueden considerar como extensiones del sistema. Un dispositivo de entrada es cualquier periférico (pieza del equipamiento del hardware de computadora) utilizado para proporcionar datos y señales de control a un sistema de procesamiento de información. Los periféricos de entrada y salida componen la interfaz de hardware, por ejemplo entre un escáner o controlador 6DOF.
DISPOSITIVOS DE SALIDA:
En Informática, periférico es la denominación genérica para designar al aparato o dispositivo auxiliar e independiente conectado a la unidad central de procesamiento de lacomputadora.
Se consideran periféricos a las unidades o dispositivos de Hardware a través de los cuales la computadora se comunica con el exterior, y también a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.[cita requerida]
Se considera periférico al conjunto de dispositivos que sin pertenecer al núcleo fundamental de la computadora, formado por la Unidad central de procesamiento (CPU) y lamemoria central, permitan realizar operaciones de entrada/salida (E/S) complementarias al proceso de datos que realiza la CPU. Estas tres unidades básicas en un computador, CPU, memoria central y el subsistema de E/S, están comunicadas entre sí por tres buses o canales de comunicación:
- direcciones, para seleccionar la dirección del dato o del periférico al que se quiere acceder,
- control, básicamente para seleccionar la operación a realizar sobre el dato (principalmente lectura, escritura o modificación) y
- datos, por donde circulan los datos.
UNIDAD CENTRAL DE PROCESAMIENTO :
La Unidad Central de Procesamiento (del inglés: Central Processing Unit, CPU) o procesador, es el componente principal delordenador y otros dispositivos programables, que interpreta las instrucciones contenidas en los programas y procesa los datos. Las CPU proporcionan la característica fundamental del ordenador digital (la programabilidad) y son uno de los componentes necesarios encontrados en los ordenadores de cualquier tiempo, junto con la memoria principal y los dispositivos de entrada/salida. Se conoce como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han reemplazado casi totalmente todos los tipos de CPU y hoy en día, el término "CPU" es aplicado usualmente a todos los microprocesadores. La expresión "unidad central de proceso" es, en términos generales, un dispositivo lógico que pueden ejecutar complejos programas de ordenador. Esta amplia definición puede fácilmente ser aplicada a muchos de los primeros ordenadores que existieron mucho antes que el término "CPU" estuviera en amplio uso. Sin embargo, el término en sí mismo y su acrónimo han estado en uso en la industria de la Informática por lo menos desde el principio de los años 60. La forma, el diseño y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación fundamental ha permanecido bastante similar. Las primeras CPU fueron diseñados a la medida como parte de un ordenador más grande, generalmente un ordenador único en su especie. Sin embargo, este costoso método de diseñar las CPU a la medida, para una aplicación particular, ha desaparecido en gran parte y se ha sustituido por el desarrollo de clases de procesadores baratos y estandarizados adaptados para uno o muchos propósitos. Esta tendencia de estandarización comenzó generalmente en la era de los transistores discretos, ordenadores centrales y microordenadores y fue acelerada rápidamente con la popularización del circuito integrado (IC), éste ha permitido que sean diseñados y fabricados CPU más complejas en espacios pequeños (en la orden demilímetros). Tanto la miniaturización como la estandarización de las CPU han aumentado la presencia de estos dispositivos digitales en la vida moderna mucho más allá de las aplicaciones limitadas de máquinas de computación dedicadas. Los microprocesadores modernos aparecen en todo, desde automóviles, televisores, neveras, calculadoras,aviones, hasta teléfonos móviles o celulares, juguetes, entre otros.
UNIDAD DE CONTROL:
La unidad de control (UC) es uno de los tres bloques funcionales Por otra parte esta la unidad de control, que fue históricamente definida como una parte distinta del modelo de referencia de 1946 de la Arquitectura de von Neumann. En diseños modernos de computadores, la unidad de control es típicamente una parte interna del CPU y fue conocida primeramente como arquitectura Eckert-Mauchly. Memoria: que almacena datos y programas. Dispositivos de entrada y salida: alimentan la memoria con datos e instrucciones y entregan los resultados del cómputo almacenados en memoria. Buses: proporcionan un medio para transportar los datos e instrucciones entre las distintos y pequeños que la memoria principal (los registros), constituyen la unidad central de procesamiento (UCP o CPU por su nombre en inglés: Central Processing Unit)
UNIDAD ARITMETICO-LOGICA:
En computación, la unidad aritmético lógica, también conocida como ALU (siglas en inglés de arithmetic logic unit), es uncircuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos números.
Muchos tipos de circuitos electrónicos necesitan realizar algún tipo de operación aritmética, así que incluso el circuito dentro de un reloj digital tendrá una ALU minúscula que se mantiene sumando 1 al tiempo actual, y se mantiene comprobando si debe activar el sonido de la alarma, etc.
Por mucho, los más complejos circuitos electrónicos son los que están construidos dentro de los chips de microprocesadoresmodernos. Por lo tanto, estos procesadores tienen dentro de ellos un ALU muy complejo y potente. De hecho, un microprocesador moderno (y los mainframes) puede tener múltiples núcleos, cada núcleo con múltiples unidades de ejecución, cada una de ellas con múltiples ALU.
MEMORIA CENTRAL:
Memoria primaria (MP), memoria principal, memoria central o memoria interna es la memoria de computadora donde se almacenan temporalmente tanto los datos como los programas que la unidad central de procesamiento (CPU) está procesando o va a procesar en un determinado momento. Por su función, la MP debe ser inseparable delmicroprocesador o CPU, con quien se comunica a través del bus de datos y el bus de direcciones. El ancho del bus determina la capacidad que posea el microprocesador para el direccionamiento de direcciones en memoria.
En algunas oportunidades suele llamarse “memoria interna” porque a diferencia de los dispositivos de memoria secundaria, la MP no puede extraerse tan fácilmente.
Esta clase de memoria es volátil, es decir que cuando se corta la energía eléctrica, se borra toda la información que estuviera almacenada en ella.
La MP es el núcleo del subsistema de memoria de un sistema informático, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior. Cuanto mayor sea la cantidad de memoria, mayor será la capacidad de almacenamiento de datos.
Cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y después lo empieza a ejecutar. Lo mismo ocurre cuando necesita procesar una serie de datos; antes de poder procesarlos los tiene que llevar a la memoria principal.
Dentro de la memoria de acceso aleatorio (RAM) existe una clase de memoria denominada memoria caché, que se caracteriza por ser más rápida que las demás, permitiendo que el intercambio de información entre la CPU y la MP sea a mayor velocidad.
La estructura de la memoria principal ha cambiado en la historia de las computadoras. Desde los años 1980 es prevalentemente una unidad dividida en celdas que se identifican mediante una dirección. Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora.
MEMORIA RAM :
La memoria de acceso aleatorio (en inglés: random-access memory) se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayor parte del software. Es allí donde se cargan todas las instrucciones que ejecutan el procesador y otras unidades de cómputo. Se denominan «de acceso aleatorio» porque se puede leer o escribir en una posición de memoria con un tiempo de espera igual para cualquier posición, no siendo necesario seguir un orden para acceder a la información de la manera más rápida posible. Durante el encendido del computador, la rutina POST verifica que los módulos de memoria RAM estén conectados de manera correcta. En el caso que no existan o no se detecten los módulos, la mayoría de tarjetas madres emiten una serie de pitidos que indican la ausencia de memoria principal. Terminado ese proceso, la memoria BIOS puede realizar un test básico sobre la memoria RAM indicando fallos mayores en la misma.
MEMORIA ROM:
La memoria de solo lectura, conocida también como ROM (acrónimo en inglés de read-only memory), es un medio de almacenamiento utilizado en ordenadores y dispositivos electrónicos, que permite sólo la lectura de la información y no su escritura, independientemente de la presencia o no de una fuente de energía.
Los datos almacenados en la ROM no se pueden modificar, o al menos no de manera rápida o fácil. Se utiliza principalmente en su sentido más estricto, se refiere sólo a máscara ROM -en inglés, MROM- (el más antiguo tipo de estado sólido ROM), que se fabrica con los datos almacenados de forma permanente y, por lo tanto, su contenido no puede ser modificado de ninguna forma. Sin embargo, las ROM más modernas, como EPROM y Flash EEPROM, efectivamente se pueden borrar y volver a programar varias veces, aun siendo descritos como "memoria de sólo lectura" (ROM). La razón de que se las continúe llamando así es que el proceso de reprogramación en general es poco frecuente, relativamente lento y, a menudo, no se permite la escritura en lugares aleatorios de la memoria. A pesar de la simplicidad de la ROM, los dispositivos reprogramables son más flexibles y económicos, por lo cual las antiguas máscaras ROM no se suelen encontrar en hardware producido a partir de 2007.
MEMORIA AUXILIAR :
La memoria secundaria, memoria auxiliar o memoria externa, conocida también como almacenamiento secundario, es el conjunto de dispositivos y medios (soportes) de almacenamiento, que conforman el subsistema de memoria de una computadora, junto a la memoria principal. No deben confundirse las "unidades o dispositivos de almacenamiento" con los "medios o soportes de almacenamiento", pues los primeros son los aparatos que leen o escriben los datos almacenados en los soportes.
La memoria secundaria es un tipo de almacenamiento masivo y permanente (no volátil), a diferencia de la memoria RAM que es volátil; pero posee mayor capacidad de memoria que la memoria principal, aunque es más lenta que ésta.
El proceso de transferencia de datos a un equipo de cómputo se le llama "procedimiento de lectura". El proceso de transferencia de datos desde la computadora hacia el almacenamiento se denomina "procedimiento de escritura".
En la actualidad para almacenar información se usan principalmente tres 'tecnologías':
- Magnética (ej. disco duro, disquete, cintas magnéticas);
- Óptica (ej. CD, DVD, Blu-ray Disc, etc.)
- Algunos dispositivos combinan ambas tecnologías, es decir, son dispositivos de almacenamiento híbridos, por ej., discos Zip.
- Memoria Flash (tarjetas de memorias flash y unidades de estado sólido SSD)

























