El lenguaje más rapido?

Iniciado por boy-ka, 1 Abril 2015, 09:26 AM

0 Miembros y 1 Visitante están viendo este tema.

boy-ka

Hola, mi duda es la siguiente, por ejemplo tengo el IDE Visual Studio, que tiene distintos compiladores para distintos lenguajes, ejemplo del VISUAL BASIC, el C++ y el C#.

Hasta ahí creo que voy bien pero una cosa...

El compilador del C++ es más rapido que el de C#?

Por qué dicen que los programas de C/C++ son los más rapidos? son solo algunas dudas, osea en qué influye que tiene que ver para hacerlos más rapido, el compilador?

Si es así, por qué no solo hacen un compilador más rapido para C#?

Disculpen mi ignorancia xD, gracias por las respuestas de ante mano.

Hurdano

Supongo que por las diferencias del lenguaje, de interpretado a ensamblador, no es lo mismo que de compilado a ensamblador.
Al estar más cerca al lenguaje máquina, es más rápido para él mismo el acceso, no? Tampoco esque sepa mucho de estas diferencias, te pongo lo que creo, o como creo que es.

Aunque en este caso, ambos son del mismo tipo de lenguaje, pero por lo que se, no es necesariamente que uno sea más rápido que el otro. Creo que se debe a la diferencia de para que se interpreten, es decir, unas veces C/C++ será más rápido en algunas instrucciones que tengan que ver con rendimiento de la memoria y tal, y otras veces C# por que su acceso a las librerias sean más rápidas...en fin, la verdad que no esque entienda mucho, pero creo que tampoco voy muy errado.

boy-ka

Cita de: Hurdano en  1 Abril 2015, 09:44 AM
Supongo que por las diferencias del lenguaje, de interpretado a ensamblador, no es lo mismo que de compilado a ensamblador.
Al estar más cerca al lenguaje máquina, es más rápido para él mismo el acceso, no? Tampoco esque sepa mucho de estas diferencias, te pongo lo que creo, o como creo que es.

Aunque en este caso, ambos son del mismo tipo de lenguaje, pero por lo que se, no es necesariamente que uno sea más rápido que el otro. Creo que se debe a la diferencia de para que se interpreten, es decir, unas veces C/C++ será más rápido en algunas instrucciones que tengan que ver con rendimiento de la memoria y tal, y otras veces C# por que su acceso a las librerias sean más rápidas...en fin, la verdad que no esque entienda mucho, pero creo que tampoco voy muy errado.

Si es que, es bastante confuso al menos para mi, Entiendo tu punto de vista muy claro amigo, el problema es que según creo yo el compilador funciona como por así decirlo a base de comandos

Ejemplo: String a = "hola";
le dice al compilador que cree una variable en la memoria y guarde el string hola en binario vale...

Pero osea al estar más cerca del lenguaje maquina supongo que sería igual no?

Ya que haría la misma función, pues, leer el "COMANDO" e interpretarlo.

Por ejemplo en lugar de string a ="hola";
pudiera una persona crear un compilador en el cual pudiera ser

carolina a = "hola"; Siendo carolina una variable de tipo String.

No se si me he dado a entender, o voy muy errado en esto pero, por favor quisiera alguna aclaración xD, gracias por comentar.

Hurdano

Madre, he tenido que leerlo unas tres veces para más o menos entender lo que querías decir jajaja.

Lo que comentas ahora, creo que no es lo mismo. Tu ahora dices de cambiar una variable de tipo "string" que se pase a llamar "carolina" y eso amigo, es invertarte tu un lenguaje de programación, queriendo decir a que lo que almacenes en "carolina" sea una cadena de texto.

Osea, necesita saber de que tipo van a ser los datos, para trabajar con ellos. No te vas a encontrar (creo) ningún lenguaje en el que guardes en una variable un número y le digas que sea de tipo "carolina" porque el intérprete te va a decir que que coñ... es el tipo "carolina" si operador lógico, si texto, si número, si fecha, si....

Ya esque no se ni lo que te digo de lo descolgao que me has dejado jaja. Mira es mejor que busques en google algo para iniciarte en la programación. Porque antes de programar en el lenguaje que sea, necesitas saber como funciona no solo ese lenguaje, sino todos en general. Una vez que aprendes uno, por ejemplo C, puedes llegar a entender código de otros lenguajes, ya que la estructura va a ser casi igual, pero cambiará la manera en como se tenga que interpretar los datos, instrucciones, etc.


Bundor

Hola, voy a intentar aclararte un poco la duda. Entendemos que compilar es traducir a código máquina y la rapidez de un programa resolviendo una tarea es otra cosa diferente.

Entonces un lenguaje que sea de "alto nivel" (mas amigable para los humanos) tiene que traducir muchas mas instrucciones a código máquina, tardaría mas en compilar.
C++ está mas cerca del código máquina que c# entonces es evidente que el primero es mas rápido.(aunque ambos son lenguajes de alto nivel (3ª generación))

Luego al utilizar los programas, si requieren de maquina virtual van a tardar mas.
Un string es un string pero un millón de strings van a tener un lapsus de tiempo mayor si tienen que dirigirlos a la maquina virtual.(creo yo, no lo he probado)

Con el tiempo se han reducido los tiempos que había entre lenguajes, también hay que destacar la perícia del programador y el conocimiento del problema que se pretenda resolver.
Además el avance del hardware ayuda a minimizar daños, hay procesadores y técnicas superpotentes para hacer de todo.

La razón de que coexistan está entre rendimiento y comodidad.

Rendimiento: C++ tiene un acercamiento ligeramente mayor a código máquina, mayor control de la memoria y por ende rinde mejor para hacer un driver, un firmware, etc.
comodidad:   visual basic y c# son mas amigables para realizar cosas complejas con unos clicks.

boy-ka

#5
Cita de: Hurdano en  1 Abril 2015, 10:49 AM
Madre, he tenido que leerlo unas tres veces para más o menos entender lo que querías decir jajaja.

Lo que comentas ahora, creo que no es lo mismo. Tu ahora dices de cambiar una variable de tipo "string" que se pase a llamar "carolina" y eso amigo, es invertarte tu un lenguaje de programación, queriendo decir a que lo que almacenes en "carolina" sea una cadena de texto.

Osea, necesita saber de que tipo van a ser los datos, para trabajar con ellos. No te vas a encontrar (creo) ningún lenguaje en el que guardes en una variable un número y le digas que sea de tipo "carolina" porque el intérprete te va a decir que que coñ... es el tipo "carolina" si operador lógico, si texto, si número, si fecha, si....

Ya esque no se ni lo que te digo de lo descolgao que me has dejado jaja. Mira es mejor que busques en google algo para iniciarte en la programación. Porque antes de programar en el lenguaje que sea, necesitas saber como funciona no solo ese lenguaje, sino todos en general. Una vez que aprendes uno, por ejemplo C, puedes llegar a entender código de otros lenguajes, ya que la estructura va a ser casi igual, pero cambiará la manera en como se tenga que interpretar los datos, instrucciones, etc.



A ver, pero un string alguna vez fue una "CAROLINA" porque alguien se inventó ese nombre para que sea un tipo de datos.


Cita de: Hurdano en  1 Abril 2015, 10:49 AM
Madre, he tenido que leerlo unas tres veces para más o menos entender lo que querías decir jajaja.

Lo que comentas ahora, creo que no es lo mismo. Tu ahora dices de cambiar una variable de tipo "string" que se pase a llamar "carolina" y eso amigo, es invertarte tu un lenguaje de programación, queriendo decir a que lo que almacenes en "carolina" sea una cadena de texto.

Osea, necesita saber de que tipo van a ser los datos, para trabajar con ellos. No te vas a encontrar (creo) ningún lenguaje en el que guardes en una variable un número y le digas que sea de tipo "carolina" porque el intérprete te va a decir que que coñ... es el tipo "carolina" si operador lógico, si texto, si número, si fecha, si....

Ya esque no se ni lo que te digo de lo descolgao que me has dejado jaja. Mira es mejor que busques en google algo para iniciarte en la programación. Porque antes de programar en el lenguaje que sea, necesitas saber como funciona no solo ese lenguaje, sino todos en general. Una vez que aprendes uno, por ejemplo C, puedes llegar a entender código de otros lenguajes, ya que la estructura va a ser casi igual, pero cambiará la manera en como se tenga que interpretar los datos, instrucciones, etc.


Ah otra cosa XD, de programación se llevo ya 4 años programando, solo tengo esa pequeña inquietud desde hace tiempo y hasta ahora la saco a la luz. El punto es que los compiladores fueron creados para que a nosotros los humanos se nos haga más facil la comprensión, de modo que cómo el creador del lenguaje C fue un inglés, el acomodó los nombres de variables y tal a su lenguaje natal (el ingles) string en ingles significa cadena, no se si me entiendes..

El punto es que, si hubiese sido un español que hubiese inventando el lenguaje, en lugar de ser un string sería una "cadena", en serio mi intención no es confundirte si no que entiendas más o menos lo que quiero decir así tengas que leerlo muchas veces XD se que digo tonterias que ni al caso, pero vamos.. es una duda muy fuerte para mi.


Cita de: Bundor en  1 Abril 2015, 10:50 AM

Rendimiento: C++ tiene un acercamiento ligeramente mayor a código máquina, mayor control de la memoria y por ende rinde mejor para hacer un driver, un firmware, etc.

Ahí es que me lio, que significa que tiene acercamiento, y por qué lo tiene?

Bueno mejor no responder, es que soy demasiado curioso me pondré investigar por ahí xD.

Hurdano

Jajaja, no tranquilo. Esque al principio preguntastes una cosa diferente a la de ahora. Pero mira, Bundor lo acaba de explicar bastante bien, cosa que a mí se me da muy mal hacer. Creo que lo que pone el te ayudará a entenderlo.

Y si, claro que tienes razón en que se llaman así porque se estipuló así, pero al ser lenguaje universal... de esa manera, tu puedes entender que hace un Chino con esa instrucción, de lo contrario no podrías. Jeje.

Pero bueno, eso es mirar un poco la historia de la programación, y así podrás ver y entender el porqué de las cosas.


Bundor

#7
C++ es una evolución de C.
C# una evolución de C++.

Todos trabajan en la misma arquitectura (von neumann). Eso significa que la forma de operar con la cpu, memoria ram, etc.  apenas ha cambiado, solo cambia la forma en que introducimos las instrucciones.
Si buscas sobre los lenguajes verás que cada uno tiene ligeras diferencias para "facilitar" la vida al programador pero a cambio tiene menos precisión por decirlo de alguna manera.


Hurdano

Tiene más acercamiento porque es menos amigable para el humano programarlo, lo que quiere decir más complicado de entender.

El por qué lo tiene pues...yo diría que por evolución tecnológica en general, no era lo mismo programar antes que ahora, no se si me explico, antes se miraba como una computadora era capaz de hacer algo semejante, y se buscaba que la computadora pudiera entender lo que tu querías que hiciera. Ahora con los lenguajes interpretados podría decirse que es al revés.

engel lex

No hagan doble post, si quieren agregar algo usen el boton modificar!!

sobre este tema...

si haces por ejemplo en C un hola mundo y en C# lo mismo, el tiempo será similar, el asunto viene en las operaciones complejas, si en C# creas una aplicación extensa, con objetos, redimension de arrays etc, y en C una equivalente, la de C será importantemente más rápida, porque cuando tu creas un objeto el compilador aparta memoria para el objeto y todo lo necesario que pueda hacer, aparta procesos para confirmarlo y asegurarlo... en cambio a mano no vas a hacer eso, crearas el objeto y punto...

otro factor a favor es que el compilador de C tiene casi 40 años desarrollandose, el de c++ más de 25... durante esos años se ha buscado hacerlo más eficiente y poderoso... c# es más nuevo y no tiene todas esas capacidades de traducir de código fuente a maquina... y el compilador no es un simple traductor, de ser así tardara tanto como el exe en escribirse en disco... no, el compilador es un analizador, que busca el camino más eficiente para crear el programa

incluso, por una prueba que hice el otro día (por ahí está el tema) java aún con maquina virtual en un archivo simple, es casi tan rápido como C (hablamos de 6% de diferencia en velocidad para una operación de 20 segundos, creo) la diferencia se ve cuando el programa crece
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.