Feed Rss, Atom Categoría Programación, 19 entrada(s)

No, no me refiero a los abnegados funcionarios que se esfuerzan por mantener limpias nuestras calles.  Me refiero a ciertos mecanismos que disponen algunas implementaciones de ciertos lenguajes tales como JavaScript, Objective C, Java, etc.

Básicamente, el recolector de memoria hace un seguimiento de la memoria utilizada, y se encarga de ir liberando aquella que ya no se usa.  No me voy a meter en una explicación técnica, porque no es el lugar; baste con decir que con un recolector de basuras se libera al programador de la tarea de indicar cuándo liberarla (valga la redundante redundancia de liberar la liberación).  Y esto es bueno, o eso me han dicho.

Ahora bien, llevo unos cuantos años trabajando en una aplicación web para unos clientes de la empresa en la que trabajo.  Es un programa bastante complejo, concretamente un administrador de pedidos con facturación, el cual está escrito en PHP y JavaScript1.  Cuando el proyecto ya alcanzó cierto nivel adquirió como característica que, tras un par de horas de trabajo con el mismo, sufría un decaimiento general en el rendimiento, tardando cada vez más en realizar las operaciones hasta ser prácticamente inutilizable (el programa es usado por el operador durante toda la jornada).

Cuando tuve la oportunidad de estudiar este problema, algo que mis colegas españoles saben que es harto difícil de tener, me di cuenta de que todo el problema estaba en el lado cliente, ya que las consultas al servidor eran suficientemente rápidas.  Aparte de la sobrecarga del microprocesador, la memoria iba creciendo sin descanso a cada operación realizada.  Consulté por aquí y por allá sobre la gestión de memoria en JavaScript, pero en el mejor de los casos se limitaban a venderme lo maravilloso que es tener un recolector de basuras.

Hasta que se me ocurrió que si en este lenguaje hay un new, quizá también hay un delete.  Y resulta que así era.  En ese momento se me terminó el tiempo que podía perder (sic) en el problema, pero cada vez que tenía que hacer alguna modificación al programa procuraba buscar por  los alrededores por si encontraba un buen lugar donde colocar un delete.  En cuanto hube colocado estratégicamente un puñado de ellos, la tendencia del programa a reducir su rendimiento dejó de ser tan patente, llegando a ser utilizable aun tras toda la jornada, y últimamente apenas se observa una reducción de velocidad, salvo si realizas ciertas funciones que no tengo muy claras.  Ahora los problemas que más me preocupan son otros.

Tras esta experiencia, la escasa confianza que ya tenía en estos cachibaches se ha esfumado por completo.  No sólo no voy a volver a confiar de nuevo en ellos, sino que voy a recomendar a diestro y siniestro que no los use nadie.  Y a ello voy:

Destruid los objetos en cuanto no los necesitéis.  Evitad confiar en el colector de basura.  Si el lenguaje no lo implementa, ni se os ocurra instalar o crear una biblioteca para añadírselo (sí, Objective C, estoy hablando de tí).  Y si estáis diseñando un nuevo lenguaje de programación, por favor: no lo hagáis.

Y ya está.


1Para que conste en acta, ya dije cuando me lo propusieron que, en mi opinión, no eran los lenguajes ni la plataforma más acertada para este programa, pero maldito el caso que me hicieron.

Las últimas semanas he estado bastante desmotivado, con pocas ganas de hacer nada.  Sin embargo, ordenando mis cedés, he encontrado esta pequeña jollita.

Se trata de las mejoras que hice hace un par de años a una calculadora muy simple que escribí en 2000, cuando estaba aprendiendo a programar en C.  El programa original es de Herbert Schildt, pero le fui haciendo cambios con el tiempo.  Como digo, los últimos cambios los hice a finales de 2008, sin embargo no lo publiqué entonces porque faltaba la documentación, me mudé, varias veces,...  Las clásicas escusas, vamos.

El programa en sí seguramente será de más interés para los programadores, pero también tiene su utilidad.  Es una calculadora de consola, es decir, que no es esa bonita ventana de la calculadora del Windows, sino que hay que abrir la consola del sistema (command.com, cmd, bash, shell... dependiendo del sistema operativo) y desde ahí ejecutarla.  En cierto modo es muy similar a la calculadora de GNU, pero la mia es mucho más simple, lo que en ocasiones es una ventaja.  Utiliza la nomenclatura de FORTRAN, esto es, usa el asterisco en las multiplicaciones y la barra inclinada para las divisiones.  También he incluido una colección de funciones trigonométricas y de otro tipo, como raíz cuadrada, número pseudoaleatorio, etc.

A los programadores les puede interesar que utilizo un Analizador Recursivo-Descendente, el cual permite analizar sintáxis complejas de una forma simple, eficiente y, sobre todo, muy flexible.  Precisamente esta flexibilidad es lo que le da ventaja sobre los Analizadores Guiados por Tabla, porque estos últimos son complicados de ampliar, mientras que los recursivos pueden expandirse muy fácilmente.

La página de proyecto es esta.  Por ahora sólo he subido el código fuente, profusamente comentado, pero cuando pueda subiré versiones precompiladas listas para usar.

Categorías: Programación, Utilidades
Charla entre programas

Esto son dos programas que se encuentran en el CCP, y uno le pregunta al otro...

Si no lo pillas, es porque no lo pillas. No voy a explicarlo, pero siempre puedes consultar la Wikipedia.

Visto por primera vez en Club Delphi

Makeproject

Acabo de subir un paquete que contiene plantillas para crear proyectos de programación en C y en Pascal que utilizan make. El paquete contiene unos cuantos directorios y archivos, incluyendo guiones que automatizan algunos procesos, como determinar las dependencias de archivos de forma semiautomática.

Hasta ahora lo que hacía era coger un proyecto anterior, copiarlo y empezar a borrar y cambiar archivos. Es un trabajo tedioso, así que decidir hacer estas plantillas. Ahora sólo hay que copiar el contenido del directorio, cambiar un par de valores en el makefile y ya está. Además también hay algunos archivos con plantillas para la documentación, que parece una tontería pero facilitan mucho las cosas.

Si vais a utilizarlo, procurad leer la documentación.

El Gobierno de España a través del antreproyecto de la llamada Ley de Economía Sostenible, permitirá el corte del servicio de Internet para “La salvaguarda de los derechos de propiedad intelectual”. Para ello modificará el artículo 8.1 de la LSSI que ahora solo prevee cuatro supuestos. De esta manera el Gobierno se desmiente cuando afirmó que no perseguiría a los internautas, sino que presionaría a los centros de descargas.

Fuente: Barrapunto

MANIFIESTO EN DEFENSA DE LOS DERECHOS FUNDAMENTALES EN INTERNET

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de Internet manifestamos nuestra firme oposición al proyecto, y declaramos que:

  1. Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
  2. La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
  3. La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
  4. La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
  5. Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
  6. Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
  7. Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
  8. Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
  9. Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
  10. En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.