Alcuni libri consigliati e qualche riflessione in merito

10 giugno 2010 meox Nessun commento

In questi giorni, avendo qualche ora in più a disposizione vorrei proporvi due letture estive. Ovvero meravigliosi libri che dovrebbero essere il punto di partenza per chiunque volesse capirci qualcosa in più sulla programmazione e su quello che realmente essa sia: un arte. Il primo libro è: Structure and Interpretation of Computer Programs di Harold Abelson e Gerald Jay Sussman. Testo utilizzato al MIT per insegnare agli studenti a programmare usando la testa e lo Scheme. Il libro lo potete tranuillamente scaricare dal sito degli autori o qui in formato PDF. Io ho iniziato a leggerlo appena in questi giorni nonostante abbia terminato la laurea nel dicembre 2007. Mi sembra assurdo che in tutti i miei anni di studi alla facoltà di ingegneria nessun professore o un assistente che sia abbiano mai fatto mensione ad un libro utilizzato in quasi tutte le università americane, oltre che al MIT, per oltre venti anni. E mi pare ancora più assurdo che nessuno abbia mai tenuto un corso sul Lisp, o i sui dialetti, e che nessuno ci abbia mai parlato del lambda calcolo. Ma va be siamo in Italia … forse invecchiando sono diventato troppo esigente. L’altro libro di cui volevo parlarvi è Higher Order Perl scritto da Mark Jason Dominus. Il libro spiega come usare il Perl come libguaggio funzionale piuttosto che come sustituto del C. Anche in questo caso si tratta di un libro incredibilmente affascinate e come ogni cosa bella rilasciato gratuitamente (lo trovate qui in formato PDF).

Vi auguro un buona lettura.

Tag:

I primi di Collatz

9 giugno 2010 meox Nessun commento

Se andate su Wikipedia al seguente link link troverete una chiara spiegazione sulla congettura di Collatz. Se prendiamo un qualsiasi numero e iteriamo la seguente procedura:
n^{\prime} = \begin{cases} n/2 &\mbox{if } n \equiv 0 \pmod{2}\\ 3n+1 & \mbox{if } n\equiv 1 \pmod{2} \end{cases}
la congettura afferma che prima o poi arriveremo sempre ad 1. Questo è quantomeno affascinante, il sapere cioè che ogni numero sottoposto a questa legge converga inesorabilmente ad 1 un numero finito di passi. Allora mi è venuto in mente di studiare come si comportano i numeri primi, e ho così scritto un semplice programma in c++ usando le gmplib per capire l’andamento delle orbite dei primi, ovvero del numero di iterazioni necessarie a raggiungere uno. I risultati non mostrano per adesso alcun comportamento particolare ma ancora mi riservo qualche ulteriore analisi.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gmp.h>

int main(int argc, char *argv[])
{
  int i = 0, k = 0, c = 10;
  mpz_t s, n, one;

  if(argc > 1)
    c = strtol (argv[1], 0, 10);

  mpz_init (s);
  mpz_init (n);
  mpz_init (one);

  mpz_set_ui (s, 3);
  mpz_set_ui (one, 1);

  FILE *fd = fopen ("orbita.txt", "w");

  while( i < c )
  {
    if (mpz_probab_prime_p (s, 15) == 2) // if s is definitely prime
    {
      mpz_set (n, s);
      char *stxt = mpz_get_str(0, 10, s);
      printf ("Trovato primo: %s, con orbita = ", stxt);
      while ( mpz_cmp_ui (n, 1) != 0 )
      {
	if( mpz_tstbit(n, 0) == 0 ) // pari
	{
	  mpz_divexact_ui (n, n, 2);
	}
	else
	{
	  // n = 3*n + 1
	  mpz_mul_ui (n, n, 3);
	  mpz_add_ui (n, n, 1);
	}
	k++;
      }
      printf ("%d\n", k);
      fprintf(fd, "%s %d\n", stxt, k);
      free(stxt);
      k = 0;
      i++;
    }
    mpz_add_ui (s, s, 2);
  }

  mpz_clear (s);
  mpz_clear (n);
  mpz_clear (one);

  fclose (fd);

  return 0;
}
Tag:

PyCon Quattro

20 marzo 2010 meox Nessun commento

Importante conferenza sul Python. Penso proprio di andarci visto che vorrei indagare un po di più su questo importante linguaggio. Per maggiori dettagli sull’evento http://www.pycon.it

Tag:

Rinominare in Bash

11 marzo 2010 meox 1 commento

Per rinomare tutti i file *.JPG in *.jpg è sufficente utilizzare questo comando nella nostra shell bash:

for i in $(ls *.JPG); do
echo "mv" $i `echo $i | tr "[:upper:]" "[:lower:]"` | bash;
done;
Tag:

Reverse file in Perl

6 febbraio 2010 meox Nessun commento
#!/usr/bin/perl -w

use strict;
use warnings;

open FILE, "<".$ARGV[0];
my @LINES = <FILE>;

for(my $i = scalar(@LINES) - 1; $i >= 0; $i--)
{
    print $LINES[$i];
}
Tag:

Polkit

26 settembre 2009 meox Nessun commento

Se avete una Debian Squeeze e usate KDE 4 vi sarete accorti che il mounting dei dischi interni non funziona per motivi di “policy”.  La soluzione barbina che avevo trovato per risolvere il problema tempo fa fu quella di modificare a mano il file xml di configurazione di HAL. Oggi ho trovato una simpatica utility polkit-kde-authorization che vi consente di cambiare qualsiasi impostazione di policy. L’articolo ( che trovate qui) illustra il funzionamento del meccanismo di autenticazione tra HAL e X.Org che si basa proprio sulla libreria libpolkit.

Tag:

Il mio blog

20 settembre 2009 meox 1 commento

Questo spazio vuole essere un modo di comunicare all’esterno quello che faccio (o cerco di fare), le idee che mi passano per la mente e qualche riflessione sugli accadimenti che la vita ci pone. Fra poco vedremo se riuscirò a postare qualcosa di decente. A presto

Tag: