Devo scrivere un programma e sto ancora decidendo che linguaggio utilizzare.
Solitamente uso bash per quasi tutto; altre volte php. Questa volta ancora non lo so.
Il programma non necessita di grosse difficoltà elaborative. Il suo collo di bottiglia sarà plausibilmente il numero di accessi al disco.
Il programma dovrà, al primo lancio, indicizzare una struttura di directory, il cui contenuto può anche essere di migliaia di file.
Ai lanci successivi il programma dovrà essere in grado di dirmi nel minor tempo possibile se:
1) sono stati aggiunti file
2) sono stati eliminati file
3) sono stati spostati file
4) sono stati modificati file
5) varie
Il programma potrà fare affidamento in parte sulla data di modifica perchè devo contemplare anche il fatto che
a) la data viene modificata nonostante non venga modificato il file
b) il file venga modificato nonostante il file rimanga non modificato
la cache dovrà quindi contenere anche gli md5 dei file.
tutto questo suppongo che necessiti una lettura ottimizzata dell'I/O e una cache dei file ben strutturata
Ancora non so bene la struttura dati che utilizzerò; questo dipende dal linguaggio che sceglierò. Potrebbe trattarsi di un semplice file di testo o di un database mysql.
Per il linguaggio, non so tutti quanti i migliori strumenti che mi mettono a disposizione.
- bash (che è quello che uso di più) mi fornisce una buona serie di strumenti prefatti quali ls, find, sort, uniq, grep e compagnia bella. Di contro le strutture dati che offre non possono definirsi tra le più evolute, e l'accesso a mysql non è tra le cose più semplici da gestire (in caso la query ritorni più di un record)
- php (che anche uso parecchio e che può essere usato non solo per il web), offre strutturalità di programmazione e di dati buone e un buon accesso al db; di contro non gli trovo un adeguato supporto per il filesystem
- python non lo conosco abbastanza e sinceramente nemmeno mi piace
- java pure non mi piace nonostante sarebbe il caso di cominciare ad impararlo
- C non so che tipo di strumenti mette a disposizione; non lo conosco a sufficienza (ma a quello si ovvia) ma vorrei evitare in generale linguaggi binari; preferisco di gran lunga quelli che non richiedono un compilatore e soprattutto sono noarch.
- awk sarebbe un buon integratore a bash (ho visto che slackpkg ne fa un buon uso)
- perl non lo conosco abbastanza ma sarebbe una buona occasione per cominciare ad impararlo (una grossa lacuna per un sistemista), però non so quanti strumenti mi mette a disposizione.
Voi cosa mi consigliereste?
Ciao
01


