jueves, 8 de noviembre de 2012

Lenguaje C.



C ha sido la elección  para la prueba  y medición de aplicaciones por años. Pero con la popularidad de los lenguajes orientados a objetos, algunos se preguntan si C tiene lugar en las pruebas de sistemas del mañana. Debido a esto, es  importante entender cuales son los puntos fuertes y débiles del lenguaje C.

El lenguaje C ha sido utilizado en la prueba y la medición de sistemas integrados y controladores de dispositivos  por mucho tiempo. Inicialmente fue creado para direccionar los  desafíos de reutilizar código comúnmente relacionado con lenguajes de ensamble. El lenguaje C fue desarrollado para ser una plataforma independiente, que puede abstraer la capa de hardware, por lo que C provee mucho más eficiencia en velocidad y memoria asociado con el ensamble mientras incrementa la portabilidad del código y disminuye el tiempo de desarrollo a los programadores.


Pero hablemos acerca de las fortalezas del lenguaje. Una de ellas puede ser su bajo nivel, que da la capacidad de optimizar el código ya que provee un acceso directo al sistema operativo o a un hardware en específico y con esto tendrás una mejor habilidad de controlar cada una de las operaciones específicas y cuantas operaciones son realizadas a nivel de máquina, optimizar compiladores y la capacidad de llamar código ensamblado. También puedes controlar el tamaño  del programa y la velocidad de ejecución.

Se puede decir que C es altamente portable y con un extenso grupo de herramientas para la reutilización de código debido a que puedes compilar un programa en C que esté adherido a una reconocida industria estándar, como ANSI C, en donde hardware y sistema operativo son independientes para una gran variedad de plataformas de computadora con lo que se puede compilar en varios sistemas operativos con un mínimo cambio de su código fuente. Como resultado, el lenguaje tiene una gran cantidad de comunidad de programadores, millones de líneas de código como ejemplos y manejadores de hardware que han sido escritos en lenguaje C.

También hay varios entornos de desarrollo integrado que contienen varios propósitos generales con respecto al desarrollo en C como Microsoft Visual Studio, que proveen una funcionalidad  adicional, como conectividad con bases de datos (API´s), el control de algoritmos PID y el soporte de diversos  grupos de controladores.
Con la capacidad de ejecutar manipulaciones directas de hardware, fácilmente se puede controlar cuántos datos son  almacenados en memoria, y reutilizar millones de líneas preexistentes de código matemático. El lenguaje C está bien situado para el desarrollo de aplicaciones con un estricto espacio y rendimiento requerido  o aplicaciones que envuelven una extensa señal de procesamiento y análisis como   controladores, sistemas integrados y aplicaciones en tiempo real que se pueden beneficiar de la incrementada velocidad y procesamiento disponible en C (si el código es escrito de manera eficiente).

Pero la programación en lenguaje C también tiene sus desventajas ya que este no es un lenguaje orientado a objetos. Con aplicaciones complejas, usualmente es requerido agrupar datos como si fueran una estructura. Esta es una característica estándar  en la mayoría de los lenguajes de alto nivel. Como una extensión, los lenguajes orientados a objetos ofrecen soporte no solo para crear tipos de datos modificados sino también para definir métodos específicos para trabajar con esos datos. En particular, una de las características de la programación orientada a objetos es que puedes modular distintos componentes llamados "objetos". Los programadores pueden encapsular  pruebas del mundo real de hardware como la adquisición de datos de instrumentos y aparatos como lo son los objetos. Los objetos de software modelan entidades del mundo real y como objetos del mundo real, cada objeto del software está definido por un estado y por un comportamiento. El estado del objeto es el grupo de variables que vas a usar cuando describas el objeto. Por esto, los objetos tienen un específico  comportamiento o acciones que son capaces de realizar. Como resultado una vez que hayas creado un objeto tú tienes un nuevo tipo de dato en el cual distintas  operaciones pueden ser realizadas.

Otra desventaja es la administración de memoria. Con un bajo nivel de memoria, el acceso disponible en C viene de la responsabilidad del manejo de memoria, de su asignación y des asignación. La falta de limpiar el código puede significativamente influenciar en el rendimiento y determinismo de la aplicación. Con el administrador de memoria, puedes asignar nueva memoria que necesites pero después debes llamar al recolector de basura para disponer de nuevo de la memoria utilizada una vez que la dejes de usar.

con respecto a la ejecución paralela, los fueron una avanzada llave en la historia de los lenguajes textuales. Con la capacidad de virtualizar la ejecución de múltiples funciones a la vez, tu puedes crear interfaces de usuario que puedan ejecutar archivos (1/0), entradas a base de datos y el control de hardware sin que disminuya su rendimiento.
Para manejar estos beneficios, los programadores utilizan específicos hilos y librerías temporales para organizar los horarios de diferentes secciones de código. Por lo tanto, cuando se desarrolla una aplicación que ejecuta controladores PID mientras se despliega una interfaz de usuario , debes crear por lo menos dos aplicaciones de hilo para mantener la consistencia de ejecución en tiempo requerido por el controlador PID y alojar suficientes recursos para mantener una suave y responsable interfaz de usuario. También debes ser cuidadoso  para acceder datos globales y ser competente en el uso de específicos multihilos constructores, como los semáforos y cerraduras, para asegurarse que la información no es accesible para múltiples varios al mismo tiempo .

Desde mi punto de vista C tiene mucho futuro, especialmente  para las aplicaciones de prueba por su acceso directo a la memoria y mínimos gastos generales de software que son aspectos importantes carentes en los lenguajes de programación mas modernos. C da a los desarrolladores la libertad de escribir código para un numero largo de plataformas; todo sobre micro controladores asta avanzados procesos para el control de sistemas. Con el numero limitado de restricciones en el lenguaje y la capacidad de desarrollar diversas aplicaciones, C es conveniente y efectivo para varias pruebas de medición de tareas, dando a los ingenieros una razón más para seguir utilizando y desarrollando en este lenguaje. 


Referencias:
Logan, W. (2008). Is C Dead?. EE: Evaluation Engineering47(5), 44-49.
Link del artículo

No hay comentarios:

Publicar un comentario