SlideShare una empresa de Scribd logo
1 de 4
KAREN MARLENE ÁLVAREZ VALDEZ
1630724
Características:
Propiedades:
 Un núcleo del lenguaje simple, con funcionalidades añadidas importantes,
como funciones matemáticas y de manejo de archivos, proporcionadas
por bibliotecas.
 Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno
de los más empleados es el estructurado "no llevado al extremo" (permitiendo
ciertas licencias de ruptura).
 Un sistema de tipos que impide operaciones sin sentido.
 Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como
definir macros e incluir múltiples archivos de código fuente.
 Acceso a memoria de bajo nivel mediante el uso de punteros.
 Interrupciones al procesador con uniones.
 Un conjunto reducido de palabras clave.
 Por defecto, el paso de parámetros a una función se realiza por valor. El paso
por referencia se consigue pasando explícitamente a las funciones las
direcciones de memoria de dichos parámetros.
 Punteros a funciones y variables estáticas, que permiten una forma
rudimentaria de encapsulado y polimorfismo.
 Tipos de datos agregados (struct) que permiten que datos relacionados (como
un empleado, que tiene un id, un nombre y un salario) se combinen y se
manipulen como un todo (en una única variable "empleado").
Carencias:
 Recolección de basura nativa, sin embargo se encuentran a tal efecto
bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector
de basura de Boehm.
 Soporte para programación orientada a objetos, aunque la implementación
original de C++ fue un preprocesador que traducía código fuente de C++ a C.
 Funciones anidadas, aunque GCC tiene esta característica como extensión.
 Soporte nativo para programación multihilo.
Aunque la lista de las características útiles de las que carece C es larga, este factor ha
sido importante para su aceptación, porque escribir rápidamente nuevos compiladores
para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control
directo del programador, y permite implementar la solución más natural para cada
plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes.
Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un
código más rápido, pues da control total sobre la máquina, aunque los avances en los
compiladores de C y la complejidad creciente de los microprocesadores modernos han
reducido gradualmente esta diferencia.
En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la
implementación original de C++ consistía en un preprocesador que traducía código
fuente C++ a C. La mayoría de las funciones orientadas a objetos incluyen un puntero
especial, que normalmente recibe el nombre "this", que se refiere al objeto al que
pertenece la función. Mediante el paso de este puntero como un argumento de
función, esta funcionalidad puede desempeñarse en C. Por ejemplo, en C++ se puede
escribir:
stack.push(val);
Mientras que en C se podría escribir:
push(stack, val);
Donde el argumento stack es un puntero a una struct equivalente al puntero this de
C++, que es un puntero a un objeto.
USOS:
Aplicabilidad:
Hecho principalmente para la fluidez de programación en sistemas UNIX. Se usa
también para el desarrollo de otros sistemas operativos como Windows o GNU/Linux.
Igualmente para aplicaciones de escritorio como GIMP, cuyo principal lenguaje de
programación es C.
De la misma forma, es muy usado en aplicaciones científicas (para experimentos
informáticos, físicos, químicos, matemáticos, entre otros, parte de ellos conocidos
comomodelos y simuladores), industriales (industria robótica, cibernética, sistemas de
información y base de datos para la industria petrolera y petroquímica. Predominan
también todo lo que se refiere a simulación de máquinas de manufactura),
simulaciones de vuelo (es la más delicada, ya que se tienen que usar demasiados
recursos tanto de hardwarecomo de software para desarrollar aplicaciones que
permitan simular el vuelo real de una aeronave. Se aplica por tanto, en diversas áreas
desconocidas por gran parte de losusuarios noveles.
Los ordenadores de finales de los 90 son varios órdenes de magnitud más potentes
que las máquinas en que C se desarrolló originalmente. Programas escritos en
lenguajes de tipo dinámico y fácil codificación (Ruby, Python, Perl...) que antaño
hubieran resultado demasiado lentos, son lo bastante rápidos como para desplazar en
uso a C. Aun así, se puede seguir encontrando código C en grandes desarrollos
de animaciones, modelados y escenas en 3D en películas y otras aplicaciones
multimedia.
Actualmente, los grandes proyectos de software se dividen en partes, dentro de un
equipo de desarrollo. Aquellas partes que son más "burocráticas" o "de gestión" con
los recursos del sistema, se suelen realizar en lenguajes de tipo dinámico o de guion
(script), mientras que aquellas partes "críticas", por su necesidad de rapidez de
ejecución, se realizan en un lenguaje de tipo compilado, como C o C++. Si, después de
hacer la división, las partes críticas no superan un cierto porcentaje del total
(aproximadamente el 10%) entonces todo el desarrollo se realiza con lenguajes
dinámicos. Si la parte crítica no llega a cumplir las expectativas del proyecto, se
comparan las alternativas de una inversión en nuevo hardware frente a invertir en el
coste de un programador para que reescriba dicha parte crítica.
Aplicaciones embebidas:
C es el lenguaje común para programar sistemas embebidos.
*SistemasEmbebidos:es un sistema de computación diseñado para realizar una o
algunas pocas funciones dedicadas,1 2 frecuentemente en un sistema de computación
en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general
(como por ejemplo una computadora personal o PC) que están diseñados para cubrir
un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir
necesidades específicas.
El código ligero que un compilador C genera, combinado con la capacidad de acceso a
capas del software cercanas al hardware son la causa de su popularidad en estas
aplicaciones.
Una característica donde C demuestra comodidad de uso particularmente valiosa en
sistemas embebidos es la manipulación de bits. Los sistemas contienen registros
mapeados en memoria (en inglés, MMR) a través de los cuales los periféricos se
configuran. Estos registros mezclan varias configuraciones en la misma dirección de
memoria, aunque en bits distintos. Con C es posible modificar fácilmente uno de estos
bits sin alterar el resto. Por ejemplo:
int *mmr; /* puntero al registro que queremos modificar */
mmr = 0x40008ABC; /* dirección de memoria del registro */
* mmr |= 1<<7; /* pone a 1 el bit 8 sin modificar los demás
*/
* mmr &= ~(1<<12) /* pone a 0 el bit 13 sin modificar los
demás */
Este tipo de manipulación es muy tediosa o sencillamente imposible en otros lenguajes
de alto nivel, dado que se utilizan operaciones comunes del lenguaje
ensamblador como las operaciones a nivel bit OR, AND, SHL y CPL pero que están
disponibles en el lenguaje C.
Otras características de C consideradas desventajas en la programación para PC -como
la ausencia de control de memoria automático- se convierten en ventajas cuando los
sistemas embebidos necesitan código pequeño y optimizado. Ese es el caso de los
sistemas basados en microcontroladores de poca potencia como el intel 8051 o
muchos sistemas ARM.
Bibliografía:
Dennis M. Ritchie (Enero de 1993). «The Development of the C
Language»

Más contenido relacionado

La actualidad más candente

Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
Leonardo Lopez
 
Lenguaje de programacion c
Lenguaje de programacion cLenguaje de programacion c
Lenguaje de programacion c
1002pc1
 
Poner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacionPoner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacion
lupitagarcia07
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
gabo
 
6 lenguajec++
6 lenguajec++6 lenguajec++
6 lenguajec++
alithu1
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
josegonzalo130
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
Leslie Diaz
 

La actualidad más candente (20)

Aplicacion de c
Aplicacion de cAplicacion de c
Aplicacion de c
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
1 estructura programa-c
1 estructura programa-c1 estructura programa-c
1 estructura programa-c
 
Compiladores para fortran, pascal y c
Compiladores para fortran, pascal y cCompiladores para fortran, pascal y c
Compiladores para fortran, pascal y c
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
Lenguaje de programacion c
Lenguaje de programacion cLenguaje de programacion c
Lenguaje de programacion c
 
LENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION CLENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION C
 
Jasmin andrea aguilar h..
Jasmin  andrea  aguilar h..Jasmin  andrea  aguilar h..
Jasmin andrea aguilar h..
 
Lenguaje c1
Lenguaje c1Lenguaje c1
Lenguaje c1
 
Lenguaje c hebert gonzalez
Lenguaje c hebert gonzalezLenguaje c hebert gonzalez
Lenguaje c hebert gonzalez
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Ensamblador y lenguaje c
Ensamblador y lenguaje cEnsamblador y lenguaje c
Ensamblador y lenguaje c
 
Poner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacionPoner a punto mediante el uso de un editor de lenguaje de programacion
Poner a punto mediante el uso de un editor de lenguaje de programacion
 
Equipo 6 programacion hibrida
Equipo 6 programacion hibridaEquipo 6 programacion hibrida
Equipo 6 programacion hibrida
 
6 lenguajec++
6 lenguajec++6 lenguajec++
6 lenguajec++
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
C#
C#C#
C#
 
Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)Unidad3 130504163038-phpapp02 (1)
Unidad3 130504163038-phpapp02 (1)
 
Lenguje c.PRESENTACION
Lenguje c.PRESENTACIONLenguje c.PRESENTACION
Lenguje c.PRESENTACION
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Similar a Progra.jpg

Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
pedrolrc
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
zeepulveediita20
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
dejuansi2
 

Similar a Progra.jpg (20)

Aplicaciones de lenguaje c
Aplicaciones de lenguaje cAplicaciones de lenguaje c
Aplicaciones de lenguaje c
 
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
Presentación lenguaje c (pedro luis rodriguez c.i. 16388340)
 
Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180Lenguaje c.Luis Carrodeguas.16418180
Lenguaje c.Luis Carrodeguas.16418180
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
Informe.
Informe.Informe.
Informe.
 
331985319 santaella u5-lenguajedeprogramacionc
331985319 santaella u5-lenguajedeprogramacionc331985319 santaella u5-lenguajedeprogramacionc
331985319 santaella u5-lenguajedeprogramacionc
 
Unidad 5 Lenguaje de Programacion C y C++
Unidad 5 Lenguaje de Programacion C y C++Unidad 5 Lenguaje de Programacion C y C++
Unidad 5 Lenguaje de Programacion C y C++
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
Diseño de Algoritmos
 Diseño de Algoritmos Diseño de Algoritmos
Diseño de Algoritmos
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Software
SoftwareSoftware
Software
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
 
Especialidad presentacion taller sena
Especialidad presentacion taller senaEspecialidad presentacion taller sena
Especialidad presentacion taller sena
 
Consulta c++
Consulta c++Consulta c++
Consulta c++
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Informe lpi
Informe lpiInforme lpi
Informe lpi
 
Unidad 3 margie
Unidad 3 margieUnidad 3 margie
Unidad 3 margie
 

Último

Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (17)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Retornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armoníaRetornamos a la escuela y nos organizamos para convivir en armonía
Retornamos a la escuela y nos organizamos para convivir en armonía
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Progra.jpg

  • 1. KAREN MARLENE ÁLVAREZ VALDEZ 1630724 Características: Propiedades:  Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.  Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).  Un sistema de tipos que impide operaciones sin sentido.  Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.  Acceso a memoria de bajo nivel mediante el uso de punteros.  Interrupciones al procesador con uniones.  Un conjunto reducido de palabras clave.  Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.  Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.  Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado"). Carencias:  Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la "libgc" desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.  Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.  Funciones anidadas, aunque GCC tiene esta característica como extensión.  Soporte nativo para programación multihilo.
  • 2. Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solución más natural para cada plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia. En algunos casos, una característica inexistente puede aproximarse. Por ejemplo, la implementación original de C++ consistía en un preprocesador que traducía código fuente C++ a C. La mayoría de las funciones orientadas a objetos incluyen un puntero especial, que normalmente recibe el nombre "this", que se refiere al objeto al que pertenece la función. Mediante el paso de este puntero como un argumento de función, esta funcionalidad puede desempeñarse en C. Por ejemplo, en C++ se puede escribir: stack.push(val); Mientras que en C se podría escribir: push(stack, val); Donde el argumento stack es un puntero a una struct equivalente al puntero this de C++, que es un puntero a un objeto. USOS: Aplicabilidad: Hecho principalmente para la fluidez de programación en sistemas UNIX. Se usa también para el desarrollo de otros sistemas operativos como Windows o GNU/Linux. Igualmente para aplicaciones de escritorio como GIMP, cuyo principal lenguaje de programación es C. De la misma forma, es muy usado en aplicaciones científicas (para experimentos informáticos, físicos, químicos, matemáticos, entre otros, parte de ellos conocidos comomodelos y simuladores), industriales (industria robótica, cibernética, sistemas de
  • 3. información y base de datos para la industria petrolera y petroquímica. Predominan también todo lo que se refiere a simulación de máquinas de manufactura), simulaciones de vuelo (es la más delicada, ya que se tienen que usar demasiados recursos tanto de hardwarecomo de software para desarrollar aplicaciones que permitan simular el vuelo real de una aeronave. Se aplica por tanto, en diversas áreas desconocidas por gran parte de losusuarios noveles. Los ordenadores de finales de los 90 son varios órdenes de magnitud más potentes que las máquinas en que C se desarrolló originalmente. Programas escritos en lenguajes de tipo dinámico y fácil codificación (Ruby, Python, Perl...) que antaño hubieran resultado demasiado lentos, son lo bastante rápidos como para desplazar en uso a C. Aun así, se puede seguir encontrando código C en grandes desarrollos de animaciones, modelados y escenas en 3D en películas y otras aplicaciones multimedia. Actualmente, los grandes proyectos de software se dividen en partes, dentro de un equipo de desarrollo. Aquellas partes que son más "burocráticas" o "de gestión" con los recursos del sistema, se suelen realizar en lenguajes de tipo dinámico o de guion (script), mientras que aquellas partes "críticas", por su necesidad de rapidez de ejecución, se realizan en un lenguaje de tipo compilado, como C o C++. Si, después de hacer la división, las partes críticas no superan un cierto porcentaje del total (aproximadamente el 10%) entonces todo el desarrollo se realiza con lenguajes dinámicos. Si la parte crítica no llega a cumplir las expectativas del proyecto, se comparan las alternativas de una inversión en nuevo hardware frente a invertir en el coste de un programador para que reescriba dicha parte crítica. Aplicaciones embebidas: C es el lenguaje común para programar sistemas embebidos. *SistemasEmbebidos:es un sistema de computación diseñado para realizar una o algunas pocas funciones dedicadas,1 2 frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general (como por ejemplo una computadora personal o PC) que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. El código ligero que un compilador C genera, combinado con la capacidad de acceso a capas del software cercanas al hardware son la causa de su popularidad en estas aplicaciones.
  • 4. Una característica donde C demuestra comodidad de uso particularmente valiosa en sistemas embebidos es la manipulación de bits. Los sistemas contienen registros mapeados en memoria (en inglés, MMR) a través de los cuales los periféricos se configuran. Estos registros mezclan varias configuraciones en la misma dirección de memoria, aunque en bits distintos. Con C es posible modificar fácilmente uno de estos bits sin alterar el resto. Por ejemplo: int *mmr; /* puntero al registro que queremos modificar */ mmr = 0x40008ABC; /* dirección de memoria del registro */ * mmr |= 1<<7; /* pone a 1 el bit 8 sin modificar los demás */ * mmr &= ~(1<<12) /* pone a 0 el bit 13 sin modificar los demás */ Este tipo de manipulación es muy tediosa o sencillamente imposible en otros lenguajes de alto nivel, dado que se utilizan operaciones comunes del lenguaje ensamblador como las operaciones a nivel bit OR, AND, SHL y CPL pero que están disponibles en el lenguaje C. Otras características de C consideradas desventajas en la programación para PC -como la ausencia de control de memoria automático- se convierten en ventajas cuando los sistemas embebidos necesitan código pequeño y optimizado. Ese es el caso de los sistemas basados en microcontroladores de poca potencia como el intel 8051 o muchos sistemas ARM. Bibliografía: Dennis M. Ritchie (Enero de 1993). «The Development of the C Language»