non si mischiano patate e broccoletti....

La regola è semplice: non si mischiano patate e broccoletti....

Abbiamo accennato anche cosa sono i riferimenti (o puntatori): variabili che invece di contenere il dato contengono l’indirizzo in cui trovare il dato.

Abbiamo però visto anche che le variabili conoscono anche il tipo di dato a cui si riferiscono o che contengono. Essi si riferiscono infatti all’insieme a cui appartiene il dato. Esempi di tipi sono gli interi, i caratteri, i booleani (vero o falso) e i float (numeri con virgola mobile).

Questo è l’ultimo argomento forte riguardante la memoria e lo affronteremo subito.

Continue reading »

 
Croce e delizia dei programmatori.

Croce e delizia dei programmatori.

Ora che conosciamo la struttura “a cassetti” della memoria e come viene organizzata a tempo di esecuzione possimo introdurre il concetto dei puntatori (o riferimenti).

Questo tipo di variabili sono ben noti a chi programma in C ma esistono in modo meno diretto in decine di linguaggi, come il Java, tanto per dirne qualcuno.

Il concetto espresso dai puntatori è mio avviso semplice anche se poi finisce per complicare la vita a molti. Quindi spero di trasmettervi questa “semplicità” con cui riesco a navigare io nel mare dei riferimenti.

Continue reading »

 
PyBackup 0.5b

PyBackup 0.5a

Dopo un paio di deliri per far quadrare alcune cose che non quadravano finalmente posso dire di aver finalizzato tutti gli obbiettivi che mi ero prefissato per la versione 0.5.

In particolare:

  • Modalità silenziosa. Non scrive alcun messaggio.
  • Possibilità di effettuare un log sui backup. Tale log nel caso dei differenziali può essere utilizzato per tenere conto dei file aggiunti, modificati o cancellati rispetto l’ultima esecuzione del backup.
  • Per gli utilizzatori GNU/Linux è presente anche una GUI scritta in PyGTK che offre supporto per le operazioni base.

Ora cominceranno i test e le ottimizzazioni. Fra le cose da fare c’è inanzitutto quello di migliorare il meccanismo del log in quanto per ora ad ogni backup differenziale il confronto viene fatto sempre con il backup totale di partenza. Vorrei che tale confronto venisse fatto rispetto all’ultimo backup.

Per il momento la GUI rimarrà cosi minimale. Nella prossima versione vedrò di portarla al passo con il suo alter ego da linea di comando.

Inoltre dovrei pacchettizzare il tutto ma non ho ben capito come fare. Vedrò di informarmi.

Ovviamente le ultime versioni del sorgente sono su Launchpad.

 
Una memoria di qualche secolo fa.

Una memoria di qualche secolo fa.

Iniziamo ora la serie di argomenti legati al funzionamento dei linguaggi di programmazione. Cercherò come al solito di limitare al minimo i tecnicismi soprattutto ora che la faccenda comincia a farsi complicata.

Per la lezione di oggi cominceremo dal più importante, vasto e primordiale aspetto: la memoria.

E’ il più importante perché è il programma stesso a risiedere in memoria e qualunque operazione vi salti in mente di fare necessita di accedere ad essa. E’ il più vasto perché come vedremo esistono vari aspetti da tenere in considerazione. Infine è primordiale perché è comune a TUTTI i linguaggi di programmazione siano essi procedurali, a oggetti, di scripting, etc…

Continue reading »

 
Spesso ci scordiamo di lui e lo emarginiamo. Vergogna.

Spesso ci scordiamo di lui e lo emarginiamo. Vergogna.

Approfitto del fatto che per l’università sto preparando una relazione sui linguaggi di scripting per approfondire questa ulteriore (e per noi ultima) classificazione dei linguaggi di programmazione.

Per finire la nostra panoramica sui linguaggi di programmazione, e prima di addentrarci nei particolari più tecnici, affronteremo i cosiddetti linguaggi di scripting, non una novità nel panorama informatico ma che negli ultimi 15 anni stanno subendo uno sviluppo e una diffusione di tutto rispetto.

Per affrontare questo argomento cominceremo dalle caratteristiche che differenziano questi linguaggi dai linguaggi ordinari con cui fino a pochi anni fa erano fatti tutti i programmi esistenti.

Continue reading »

 

Segnalo sul mio blog una chicca interessante.

Si tratta di un semplice modulo python che consente di colorare l’output della funzione print.

Ecco un esempio che metterà in luce l’uso molto semplice del modulo.

import color_markup_string as cms

print cms.color("Mela <green>verde</green>.")
print cms.color("Mela <red>rossa</red>.")
print cms.color("Mela <yellow>gialla</yellow>.")

Potete scaricare questo utile modulo sul blog dell’autore: Checkm

 
Inventore del paradigma ad oggetti.

Inventore del paradigma ad oggetti.

La scorsa volta abbiamo visto le principali differenza fra linguaggi compilati e linguaggi interpretati. Abbiamo visto che la differenza principale sta nelle prestazioni e nella portabilità diretta. Quindi spero che ora a seconda del progetto che avete in mente sapete scegliere fra queste due categorie quella che fa al caso vostro! :)

Ora affronteremo un altra distinzione fondamentale dei linguaggi di programmazione ovvero quella fra linguaggi procedurali e linguaggi orientati agli oggetti (e in misura minore quelli logici).

Continue reading »

 

Questo problema recita:

A palindromic number reads the same both ways.
The largest palindrome made from the product of two
2-digit numbers is 9009 = 91×99.

Find the largest palindrome made from the product of
two 3-digit numbers.

Risolviamo questo problema prima concettualmente e poi passiamo alla sua implementazione in Python.

Continue reading »

 
Questo potresti essere tu.

Questo potresti essere tu.

Questa è la prima parte dedicata ai linguaggi di programmazione a cui molto probabilmente eravate interessati se vi siete spinti fin qui.

Ora che avete nozioni sufficenti su cos’è la programmazione e cos’è un algoritmo non dovrebbe essere difficile spiegare in cosa consiste un linguaggio di programmazione.

In particolare mi concentrerò sulla prima grande divisione dei linguaggi di programmazione: i linguaggi compilati e i linguaggi interpretati.

Continue reading »

 
Foto di un programma che usa algoritmi scadenti.

Foto di un programma che usa algoritmi scadenti.

Abbiamo visto cos’è un algoritmo, come è suddiviso e come lo si rappresenta astrattamente in fase di “progetto”.

Ora affronteremo il come progettarlo e in particolare il metodo del Dividi et Impera.

La progettazione di un algoritmo è la fase più delicata del processo di programmazione. Spesso scelte che sembrano ininfluenti nella nostra mente si tramutano in barriere computazionali invalicabili (cosa che appare manifesta se si combatte con il Progetto Eulero).

Continue reading »

© 2008-2012 SlashCode Suffusion theme by Sayontan Sinha