Página 1 de 1

Curiosidad - lenguajes compilados e interpretados

Publicado: 12 Jun 2012, 09:48
por Jonny
Hago la pregunta aquí porque aunque AutoIt tiene algo que ver con ella no es exactamente de AutoIt...

Resulta, que exponiendo un problema con un bucle infinito, como los que hacemos en AutoIt para mantener el programa ejecutándose, en un foro de C/C++, me han dicho que:

Código: Seleccionar todo

#include <iostream.h>

main()
 {
  printf("Hola mundo");
  Return 0;
 }

while(1)
 {
  //...
 }
(que al compilar me da errores). No funciona, porque en C a diferencia de lenguajes interpretados, las sentencias han de estar dentro de funciones o clases.
Vaya, que no es como AutoIt, que podemos hacer un programa sin funciones, o como se suele hacer, con funciones para hacer algunas tareas, pero sin que sean lo principal en el programa.
Tiene su lógica si lo piensas, pero no he visto nunca en ningún sitio eso de que en C todo tenga que estar hecho a base de funciones...

¿Es así? ;).

Digo que AutoIt tiene que ver con esto, por eso de que en los lenguajes interpretados se pueda poner sentencias fuera de funciones. No sólo en AutoIt, sino en Perl, PHP... pero como AutoIt también lo es, y de hecho se que se puede hacer... pues por eso :).

Lo he probado y efectivamente, con un while() infinito dentro de main() compila sin problema. No entiendo por qué en un lenguaje interpretado puede hacerse fuera de una función, y en C/C++ por lo visto no.
Dicen que es cosa de la programación estructurada...

¿Es que AutoIt crea una o varias funciones para todo el código que escribimos fuera de funciones-AutoIt?.

Bueno... C=C/C++ (por lo de las "clases", que en C no las hay) :).

Salu2!

Re: Curiosidad - lenguajes compilados e interpretados

Publicado: 18 Jun 2012, 13:40
por BasicOs
realmente depende de quien haya hecho el compilador linkador, todo es posible, ya que es cosa como dices de la filosofia y forma de hacer del que fabrica el compilador.

Al hacer funciones para todo, es como más "estructurado" y ordenado y se simplifica todo, eso de que todo es función es un poco "artificial" en el sentido que tiene que existir una función que autoarranca el sistema que es main(), al final main hace lo de otros lenguajes de no poner una función inicial, al final el resultado es lo mismo en cuanto a que vas a tener un Ejecutable, Y NO vas a saber que hay detrás.
Y también de que independientemente, vas a necesitar un algoritmo de todas maneras, y un análisis, que da igual (en principio), su modularidad o no mientras funcione bien.

Por supuesto es mucho mejor la estructuración, la modularidad o la funcionalización del código, pero eso lo llevamos haciendo desde siempre en Autoit, sobre todo cuando son programas grandes, para facilitar la programación en general, el manejo, la relectura, el mantenimiento, y el seguimiento y control de errores.

Un ejemplo que hice de lenguaje interpretado hecho con Autoit, creando un Autoit en español o más breve:

http://www.emesn.com/autoexecute/ y en el foro: http://www.emesn.com/autoitforum/viewforum.php?f=8

Salu22:)