Riflessioni sull'ordinamento

12:59:00

Gli algoritmi di ordinamento sono da sempre i più gettonati e interessanti dal punto di vista didattico (si veda la complessità computazionale) e funzionale (quasi tutti i programmi hanno almeno una funzione di ricerca). Proprio di questi giorni sono alcuni articoli di Programmazione.it dedicati a questo tema (link).Coding Horror in questo articolo presenta una provocazione molto interessante al di là delle opinioni personali:


The default sort functions in almost every programming language are poorly
suited for human consumption.

L'articolo pone l'attenzione sulla differenza tra l'ordinamento alfanumerico e quello ASCII solitamente usato nei metodi nativi dei linguaggi. Il discorso si ampia se poi pensiamo banalmente alla differenza tra Windows e GNU/Linux che è case sensitive.

Spesso i sistemi operativi e i linguaggi di programmazione realizzano ordinamenti rispettando l'ordine della tabella di codifica ASCII e non l'ordinamento naturale della lingua. I commenti a seguito dell'articolo sfiorano il flame ma una proposta non banale di Graham Stewart che mi ha colpito è quella di gestire il problema con un sistema di numerazione in base-62 con la seguente base alfa-numerica: 0 1 2 3 4 5 6 7 8 9 a A b B c C d D e E f F g G h H i I ... etc

ecco che convertendo in decimale la bnuova notazione si avrebbe un ordinamento naturale corretto:


z1 = (61 * 62^1) + (1 * 62^0) = 3783

z2 = 3784z10 = (61 * 62^2) + (1 * 62^1) + (0 * 62^0) = 234546

z11 = 234547z100 = (61 * 62^3) + (1 * 62^2) + (0 * 62) + 0 = 14541852

z101 = 14541853


La domanda che comunque rimane aperta IMHO è questa: Allo stato attuale è il linguaggio che si adatta alla forma mentis umana o il contrario. E' la tecnologia che si modella alle esigenze umane o il contrario?

You Might Also Like

0 commenti