Google
 

miércoles, diciembre 13, 2006

La inutilidad de hacer un seleccionar todo + borrar

Lastima que no tuviera una cámara de fotos porque lo que he visto pasará a los anales de la historia. ¿Que necesitas borrar todos los emails de lista? Pues no problemo pones un peso encima de la tecla suprimir y santas pascuas.

Y sí, anales de la historia está escrito con doble intención.

C++: Namespaces sin nombre

Supongo que todo el mundo conoce para que sirve el namespace de C++. Lo que ya no es tan conocido es que se pueden crear espacios de nombres sin tener que asignarle un nombre, será entonces el compilador el que se encargue de darle un nombre único a voleo del que no tendremos conocimiento. ¿Y esto para que sirve? Pues los dos usos principales son:

1º Para poder abrir un espacio de nombres de forma local en lugar de en todo el archivo entero:
namespace MiSuperLibreria {
  class Torcuato {
    // …
  };
};

namespace {
  using namespace MiSuperLibreria;

  Torcuto variable1;
};

MiSuperLibreria::Torcuato variable2;
Torcuato variable3; // Aquí dará error el compilador
2º Uno de los usos de static es el indicar que una variable únicamente ha de poder verse en el archivo en el que se ha declarado. Pero con la llegada de C++ la forma correcta de hacer esto es usando los espacios de nombres sin nombre:

#include <iostream>

namespace {
  int variable;
};

int main() {
  std::cout << variable << std::endl;
}

Por último tened en cuenta que el compilador C++ de Microsoft no se lleva demasiado bien con los namespace sin nombre así que si lo usáis es mejor desactivar las cabeceras precompiladas.

lunes, diciembre 11, 2006

Paradigma de la programación

El paradigma de la programación es el estilo de la programación. Define la forma en que el programador “ve” el flujo del programa. En la wikipedia lo explican bastante mejor.

Hay tantos estilos de paradigmas de programación como lenguajes de programación. Los más ampliamente usados son el modo imperativo y el modo funcional:

- El modo imperativo son secuencias de comandos que son ejecutados por la máquina de forma secuencial. Lenguajes como C++, Basic, COBOL o Pascal usan este estilo.

- En el modo funcional el programa esta únicamente constituido por definiciones de funciones. No hay secuencia de comandos lineal, el flujo de ejecución esta definido por el orden en que se llaman las funciones lo que obliga en gran medida a tirar de funciones recursivas. Hay pocos lenguajes funcionales puros como Haskell o Miranda. Normalmente suelen incorporar algo del estilo imperativo como bucles. Entre los híbridos más conocidos tenemos Lisp, Scheme o OCaml.

Si llevas toda la vida programando en modo imperativo puede ser difícil cambiar al modo funcional. Es necesario volver a aprender a programar porque es una forma totalmente diferente de pensar, pero una vez lo has logrado te das cuenta del gran potencial que posee.

Históricamente los lenguajes imperativos han tenido mayor velocidad de ejecución que los funcionales pero poco a poco esto va cambiando. Lenguajes como OCaml ayudan a poner en duda la máxima de que lenguajes como C++ son de lo rápido del mercado.