Hoy compartimos un artículo muy interesante referido a lenguajes de programación dirigido a estudiantes universitarios y profesionales, cortesía de NEOTEO ABC.
Cada lenguaje de programación fue diseñado, originalmente, para un propósito específico. Por este motivo, tiende a promover una forma de “atacar” los problemas de manera muy propia, muy particular y del mismo modo, esa “manera muy propia” es llevada adelante en la solución de un problema. La comprensión de un sólo lenguaje, promueve soluciones que sólo se acercan a un problema desde una sola perspectiva. Saber varios, te permitirá mirar el problema desde una variedad de perspectivas, donde podrás comparar entre múltiples opciones de desarrollo y la solución para el problema podrá ser seleccionada como la más natural, sencilla y eficiente.
Imagínate, por ejemplo, que todo lo que tienes en tus manos es un martillo. En este caso, tanto los clavos como los tornillos se insertarán siempre bien con ese martillo. Porque aprenderás a hacer eso: a utilizar ese martillo para resolverlo todo. Sin embargo, si también tienes un destornillador, entonces tendrás una solución alternativa para la inserción de los tornillos. De este modo entonces, podrás seleccionar la mejor herramienta para cada tarea en particular. De mismo modo, los lenguajes de programación están diseñados para resolver cualquier clase de problemas mediante una metodología específica, cada uno alentando a los estudiantes (como tú) a mirar el problema desde una perspectiva particular. FORTRAN, por ejemplo, fue diseñado para ayudar a resolver problemas matemáticos. Puede ser un lenguaje ideal a utilizar para la solución de un problema puramente matemático. COBOL fue diseñado para ayudar en la forma de almacenamiento de los datos requeridos por cualquier tipo de negocio y su manipulación.
Como hemos visto en le Curso .NET y C++ de Programación el lenguaje C (originalmente) fue creado para ayudar en la implementación de sistemas operativos (UNIX)
y, además de permitir construir aplicaciones específicas, tiene
características particulares que le permiten tener acceso o manipulación
del hardware que posee el sistema de proceso donde es utilizado. C + +, por su parte, fue diseñado para resolver problemas específicos dentro del lenguaje C, con el agregado de permitir el soporte programación orientada a objetos.
Es decir, posee una mezcla de capacidades que permiten resolver
problemas además de brindar un apropiado apoyo metodológico. El lenguaje de programación Ada
tiene como objetivo proporcionar un funcionamiento fiable, con
particular énfasis en las áreas de seguridad, donde se pueda tener una
rápida escalabilidad y facilidad de mantenimiento. El lenguaje Java
fue desarrollado para proporcionar (también) apoyo metodológico
orientado a objetos y a una sencilla portabilidad. Los lenguajes de Script están,
en general, diseñados para permitir soluciones muy rápidas a problemas
pequeños. De este modo, la lista de lenguajes de programación, y sus
características propias, se podría expandir hasta ocupar toneladas de
caracteres. Sin embargo, lo que el artículo intenta reflejar es que aprender en forma eficiente una variedad de lenguajes de programación,
te permitirá a ti y a cualquier estudiante, analizar las ventajas y/o
desventajas de cada uno, a la hora de resolver un problema específico.
Un ejemplo muy sencillo de expresar este pensamiento, habla de las listas de elementos dentro de un programa (por ejemplo, un listado con todos los microcontroladores que posees).
En el universo posible de soluciones a un problema, podríamos
considerar a todas las listas como un conjunto de objetos estáticos que
debe tener un número fijo de elementos, o bien como objetos dinámicos
que no tienen límites de cantidad. Cualquiera de estas elecciones podría
ser (o no) una solución natural para el problema. Por ejemplo, las
listas estáticas requieren que el número máximo de elementos se conozca
de antemano. Si el número de elementos es un valor fijo durante toda la
ejecución del programa, la cantidad de almacenamiento necesaria y
utilizada, para manipular esta información, será invariable y estará
disponible de forma fiable, ya que tendremos un conocimiento previo de
su dimensión. Sin embargo, si el número de artículos (o elementos de la
lista) no se conoce de forma previa, o sufre variaciones durante la
ejecución del programa, el programador tendrá que seleccionar un tamaño
máximo que quizás sea mucho más alto que el número probable de
artículos. Así, el espacio de almacenamiento puede ser inútilmente
gastado en la asignación de una variable demasiado grande, sólo por
prevención de errores.
Vale decir entonces que, las listas dinámicas “se crean en tiempo de ejecución”. Si el número total de elementos que se almacenan no se conoce de forma previa, quizás ésa sea la manera ideal de resolver y trabajar el problema. Sin embargo, por su propia naturaleza, las listas dinámicas pueden crecer en tiempo de ejecución y por lo tanto, los recursos que necesitan siempre son desconocidos y quizás se produzca una condición de error, si la memoria disponible se agota durante la ejecución del programa. Este inconveniente, en ocasiones, puede ser imposible de demostrar antes de la ejecución del programa, especialmente para los sistemas integrados con capacidad de memoria limitada, como puede ser un microcontrolador. De este modo, podemos ver que una simple lista de componentes puede originar problemas si los lenguajes que creemos dominar en forma sólida, no tienen la posibilidad de ofrecernos las herramientas elementales para realizar el trabajo.
Vale decir entonces que, las listas dinámicas “se crean en tiempo de ejecución”. Si el número total de elementos que se almacenan no se conoce de forma previa, quizás ésa sea la manera ideal de resolver y trabajar el problema. Sin embargo, por su propia naturaleza, las listas dinámicas pueden crecer en tiempo de ejecución y por lo tanto, los recursos que necesitan siempre son desconocidos y quizás se produzca una condición de error, si la memoria disponible se agota durante la ejecución del programa. Este inconveniente, en ocasiones, puede ser imposible de demostrar antes de la ejecución del programa, especialmente para los sistemas integrados con capacidad de memoria limitada, como puede ser un microcontrolador. De este modo, podemos ver que una simple lista de componentes puede originar problemas si los lenguajes que creemos dominar en forma sólida, no tienen la posibilidad de ofrecernos las herramientas elementales para realizar el trabajo.
FUENTE: NEOTEO
No hay comentarios:
Publicar un comentario