TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: PalitroqueZ en 22 de Noviembre de 2009, 20:36:41
-
Análisis matemático de los 2 elementos que intervienen en un lenguaje de programación:
- Portabilidad
- Velocidad de Ejecución
tomando en consideración la tecnología y los paradigmas que han regido la metodología de programación en el transcurso de los años:
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=28491.0;attach=10552)
la portabilidad se refiere al hecho de compilar un programa en cualquier sistema operativo y que éste pueda correr en cualquier sistema operativo (independientemente de la arquitectura del hardware)
la velocidad de ejecución es el tiempo que tarda en procesarse, una línea de código del lenguaje de programación en uso
y queda el lenguaje de programación bajo estudio (lenguaje)
estos 3 elementos pueden considerarse como variables y se estudiarán adecuadamente en cada caso, para demostrar la validez de la ecuación.
1.- en un primer vistazo, deducimos que la velocidad es inversamente proporcional a la portabilidad
si analizamos todos los lenguajes de programación creados, podemos clasificarlos en:
asumamos que los de bajo nivel, tienden a cero (para darle valor numérico a la variable Lenguaje).
ejemplo:
asm->0
estableceremos un orden con los otros lenguajes, quedando así:
asm = 0
C = 1
basic = 2
c++ = 3
java = 4
aplicándolo a la ecuación, deducimos que
2.- si Lenguaje -> 0 entonces portabilidad -> 0 (en proporción)
es decir, en la medida que un lenguaje aumenta de nivel, se incrementa su portabilidad.
la variable Velocidad, como habíamos dicho, tiene que ver con el tiempo de procesamiento de una línea de código, en términos matemáticos:
Variable = f
en el dominio del tiempo:
Variable = 1/t
t= t1+t2+t3...tn
t es la sumatoria de de tiempos que corresponden a:
- retardos del S.O. (ejecución multihilos, cola de tareas por prioridades, etc)
- retardos de intérprete del lenguaje (intermediario entre el código legible y el código entendible por el procesador: runtimes, frameworks, máquinas virtuales)
el tiempo de procesamiento en un lenguaje, es independiente de la velocidad del hardware. La razón: en términos proporcionales, el tiempo será el mismo en tareas a ejecutar por el S.O. entre los diferentes lenguajes
como la base de esta ecuación toma en cuenta los diferente lenguajes de programación, entonces al realizar un estudio con un hardware mas potente que otro (en igualdad para los estudios) existirá una proporción que será equivalente entre las diferentes velocidades del procesadores utilizados.
Conclusiones:
en base a 1 podemos decir que se cumple la ecuación, y es una verdad demostrada en los compiladores existentes.
haga la prueba tomando el tiempo de procesamiento de un programa hecho en asm, respecto a un mismo programa hecho en java
en base a 2 podemos decir que se cumple la ecuación, y es una verdad demostrada en los compiladores existentes.
haga la prueba compilando un programa hecho en asm bajo windows y trate de correrlo en linux, haga la misma prueba con el mismo programa hecho en java.
-
Es interesante la ecuación Pali. Por curiosidad, ¿cuántos puntos tiene C# 2008 en cuanto a Lenguaje? :huh:
-
umm debería estar en 4 y a la vez no,
si: porque usa el llamado MSIL (Microsoft Intermediate Lenguaje) que viene siendo el bytecode en java pudiendo compilar los lenguajes del doNet entre ellos casi sin dificultad.
y
no: (a menos que esté desinformado) porque es solo para windows
así que en la clasificación, ¡no me queda claro donde queda!!! :shock: :)
-
no: (a menos que esté desinformado) porque es solo para windows
Pues con la implementación (aun no tan completa, segun tengo entendido) de C# por medio de MONO bajo GNU/Linux, se supone que no es exclusivo de ambientes Windows. Pero depende de como se le mire ya que, como ya es bien conocido: Mono != Visual Studio
-
Pues con la implementación (aun no tan completa, segun tengo entendido) de C# por medio de MONO bajo GNU/Linux, se supone que no es exclusivo de ambientes Windows. Pero depende de como se le mire ya que, como ya es bien conocido: Mono != Visual Studio
Ambas implementaciones están guiadas en base al estandar ECMA-335
http://www.ecma-international.org/publications/standards/Ecma-335.htm
La CLI (Common Language Infraestructure) está orientada a generar múltiples lenguajes de alto nivel que puedan ser ejecutados en diferentes entornos sin la necesidad de recodificación (ya que se compilan a ILAsm y no a un assembler específico)
Esta infraestuctura define no solo el lenguaje sino todo el contexto de ejecución, a saber:
- Common Type System (CTS)
- Metadata
- Common Language Specification (CLS)
- Virtual Execution System (VES)
Todos estos aspectos juntos forman una infraestructura para diseñar, desarrollar, desplegar y ejecutar componentes y aplicaciones distribuidas en entornos heterogeneos.