Hace 7 años | Por Gadiota a muylinux.com
Publicado hace 7 años por Gadiota a muylinux.com

Lua es un lenguaje de programación que viene bien para aquellos que quieran iniciarse en este mundillo.

Comentarios

D

#6 #5 Saliéndose por la tangente y argumentando falacias no resuelven el problema.

En el caso de C++, es mucho más lento programar que en Python por otras razones, no porque el C++ sea fuertemente tipado y el Python no lo sea.

Si Python, etc, fueran fuertemente tipados, la programación en ellos tendría menos errores y sería infinitamente más fácil de depurar errores de tipeo pues sería imposible que los hubiera. ¿Cuesta tanto añadir declaraciones de variables como int, float, etc, para las variables que nunca cambian de tipo, y declarar las variables que cambian de tipo con var, para que así sea el lenguaje el que proteja al programador de simples errores en vez de poner la carga (estúpidamente) en el programador?. Al hacer eso no hay ninguna desventaja, y si hay una enorme beneficio para el programador y para programas más robustos y con menos errores.

D

#7 "..las variables que cambian de tipo.."
Que una variable cambié de tipo es una aberración. Declara otra, no le cambies el tipo.

D

#8 Sí. Pero para mantener la compatibilidad con los programas existentes se permitiría declarar una variable tipo var. Así, el lenguaje protegería de errores de tipeo, lo cual es muy importante, y los cambios a los programas actuales, para el nuevo lenguaje tipado, serían triviales.

Convertir programas Python en una versión con declaración obligatoria de variables sería muy fácil. Un programa de conversión leería los programas y declararía todas las variables tipo var, y luego un programador humano pudiera ir declarando las variables con su tipo correspondiente.

D

#9 En .net puedes declarar variables como var, pero siguen estando igualmente tipadas, el compilador infiere su tipo. Una vez que haces
var i = 1;
No puedes cambiar su valor a "hola mundo".
La única forma es declararla como object, lo cual no tiene mucho sentido.

D

#11 Pero en Python se puede hacer

a = 5
a = "hola"

Lo cual es bastante chiflado, porque se está usando una misma variable para dos cosas diferentes. Pero mi argumentación va porque todo lenguaje debe tener declaración obligatoria de variables para proteger al usuario de errores de tipeo, y la única manera de que lo de arriba funcione en Python es declarando la variable como "var":

var a
a = 5
a = "hola"

Así, todo programa actual de Python funcionaría, pero se corrigen los errores de tipeo, y se encuentrarán miles de errores de programación ocultos, lo que implica, un gran beneficio. Que si luego hay que eliminar o no las variables tipo "var" eso es otro asunto.

khel_mva

#8 Hombre le haces un casting en un momento dado y ya está. No hay que ir declarando cosas así a las bravas. Y sí, LUA es una costra y el artículo está muy sesgado.

germanrg

#7 No quiero interferir en la discusión ya que no soy el que más sabe de estos temas ni muchísimo menos pero me gusta defender un poco a python... llamadme romántico lol

https://stackoverflow.com/questions/11328920/is-python-strongly-typed

e

#6 Hombre es que si vas a confiarlo todo al editor, para que necesitas mas lenguajes de programación. Creas un megaeditor, programas como te venga en gana, y luego dejamos al editor que ordene y corrija según le parezca. En los lenguajes no tipados te puedes encontrar con los 2 extremos, el que no tiene ni P. Idea y te crea monstruosidades que luego no te atreves ni a mirar el código; y luego esta el programador con experiencia que lo utiliza por que no le queda otra o es mas cómodo para el entorno y sabe diferenciar bien las partes de código ademas de incluir comentarios para "autoayudarse".
A más de uno le ha pasado que por un error o trabarse con el teclado una variable númerica, se transformaba en alfanumerica y luego no te volvía a servir de contador en un bucle por ejemplo(alguna vez lo vi en versiones antiguas de php), si se tiene un código limpio lo puedes encontrar traceando un poco si no has hecho una guarrada es poco más que volverse loco.

D

"Como se puede comprobar, el código en Lua es mucho más sencillo, gracias a que es un lenguaje cuyas variables son tipadas de forma automática"

Eso quiere decir que si escribo una variable "hola = 5" y luego me equivoco y escribo "ola = hola + 1" en vez de "hola = hola + 1", como en el lenguaje no declaran las variables, y por lo tanto, no revisa los nombres de éstas, tengo dos variables distintas, "hola" y "ola", cuando en realidad quería una sola.

En otras palabras, como el lenguaje no hace su trabajo, yo tengo que hacerlo por él, y a veces podrá ser extremadamente difícil encontrar un pequeñísimo error de tipeo que cualquier lenguaje fuertemente tipado lo haría de forma automática instantáneamente.

Conclusión: Todos los lenguajes en que no se declaran las variables son extremadamente peligrosos. O si se quiere mucho más claro: todos los lenguajes en que no se declaran variables son una mierda, porque obligan al programador a tener mucho cuidado cuando es el propio lenguaje el que debería de protegerlo de tonterías para las que el computador es mucho mejor que el humano. De esta manera, lo que en un lenguaje fuertemente tipado, un error de tipeo se tarda en encontrar 1 segundo, en un lenguaje donde no se declaran las variables se puede llevar toda una tarde.

Nathaniel.Maris

#2 Y eso se soluciona con un buen editor de texto y herramientas. Una buena definición de estilo a la hora de escribir variables estilo camelCase y algún detalle más.
Sublime Text + plugins FTW!

D

#3 Eso se soluciona haciendo que el lenguaje sea fuertemente tipado.

Los pañitos calientes, tener mucho cuidado para que las cosas no salgan mal, ser muy organizado, etc, no sirven. La falla viene de fábrica en el propio lenguaje, y debe corregirse allí.

Es como que una autopista esté llena de huecos, y la solución, en vez de tapar los huecos (como debe ser), es decirle a los conductores que tengan mucho cuidado con los huecos para que no caigan en ellos. Vaya mierda.

Nathaniel.Maris

#4 Vale, pues corre a programar en ensamblador. Que ese está fuertemente tipado. 😉

Casanotra

#4 Falacia.
No hay ningún lenguaje mejor que otro.

D

#12 Nadie ha argumentado eso.

Sin embargo, dado un lenguaje cualquiera, en una versión con declaración obligatoria de tipos y otra versión sin tipos. La versión con declaración obligatoria de tipos es mejor que la que no los tiene, porque te protege de cometer errores de tipeo, mientras que con la versión sin tipos te entregan un programa de 100.000 líneas con un error de tipeo en una variable que se manifieste esporádicamente, podrías durar toda la vida encontrando dicho error.

Es mejor pasar cero segundos buscando un error de tipeo que pasar horas, semanas, meses o no encontrar el error nunca y creer que el programa funciona bien.

Casanotra

#15 Discrepo en lo de 'es mejor'. Es diferente.

d

#4 Si vas a usar un lenguaje de tipado dinámico, también puedes usar notación húngara para reducir ese inconveniente si necesitas mayor control de los tipos usados en cada objeto.

s

#c-2" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/2618826/order/2">#2 Por esa razón programar en C++ es mucho más rápido que en Python...

Por esa misma razón todos los navegadores del mundo usan los applets de Java en vez de aplicaciones Javascript.

Por esa mismísima razón el lenguaje más ejecutado en la web es C# con .NET en vez de PHP.

Un lenguaje fuertemente tipado no es ni mejor ni peor.

Si quieres hacer una web, usa PHP. Si quieres una aplicación de calculo distribuida, python... Si quieres hacer un Sistema operativo, C, y si quieres algo multiplataforma que de.ejecute en cualquier lado, hazlo web con javascript.

HORMAX

A ver, un lenguaje interpretado, portable y sin declaración de variables, ¡¡¡ Han reinventado Python !!!