Ho un progetto personale - un'applicazione web che volevo sviluppare - ma sono confuso su quale strada prendere.
Conosco un po 'di programmazione e mi sono dilettato in Pascal, C, HTML, CSS e Actionscript (per Flash). E non mi interessa imparare un nuovo linguaggio (PHP, Python, mySQL, ecc.). Non ho alcun vincolo di tempo.
Informazioni sull'app:
Il meglio che posso descrivere è come una specie di sistema esperto (ma non AI) che ha bisogno di trovare il miglior flusso di lavoro per un processo, dato un insieme di parametri iniziali e finali. Per esempio. una 'capsula' di dati deve passare attraverso molti 'strumenti' o 'ambienti' per raggiungere l'output desiderato - qualcosa come un autolavaggio molto complicato.
Diciamo che ci sono molti strumenti che possono essere utilizzati in varie fasi del processo. Ho stimato che al momento ci sono almeno 500 strumenti, ed è destinata a crescere in futuro con l'introduzione di nuovi strumenti. Gli strumenti esistenti avranno anche aggiornamenti di versione.
Ogni strumento, in media, ha almeno 100 proprietà che definiscono lo strumento. Alcuni hanno addirittura 1000 proprietà uniche. Alcuni di questi strumenti sono collegati tra loro - ad esempio se uno strumento è selezionato, ci sono solo n strumenti che possono corrispondere ad esso per la fase successiva del processo. Ho anche il problema di "abbinare" gli strumenti per l'analisi. Per esempio. Lo strumento A potrebbe avere solo tre rpm fissi - 100, 200 e 500, ma lo strumento B potrebbe avere rpms dal 20 al 2000. Non sono sicuro di come sia possibile costruire un database senza comporre ogni numero, come nell'esempio sopra.
Il numero totale di strumenti necessari per il processo può essere definito all'inizio, tuttavia, cambierà via via che l'applicazione diventa più complessa in futuro. Ho intenzione di affrontare ogni evenienza nel processo. L'idea è: se l'utente immette i parametri iniziali e il risultato desiderato (un'altra serie di parametri), l'app deve trovare il percorso "migliore" - una sorta di come un albero decisionale. Il percorso migliore può essere il più veloce, il più economico, ecc. Vorrei che l'utente scelga ciò che è meglio per lui / lei.
Sfortunatamente, i parametri potrebbero cambiare, le relazioni potrebbero cambiare (ma non regolarmente) - le "regole" che userò potrebbero essere riviste per una migliore accuratezza nella previsione.
Ho anche bisogno di tracciare il percorso e le soluzioni di ciascun utente 'per riferimento futuro (ma nessun dato personale ad eccezione del nome utente e dell'indirizzo email per l'accesso). Forse quando l'app è attiva e funzionante, mi piacerebbe renderla più democratica, con gli utenti che contribuiscono a perfezionare la logica / le regole coinvolte.
Se possibile, vorrei anche che l'app producesse un diagramma di flusso grafico alla fine che mostri il flusso di lavoro con tutti gli strumenti raggruppati in un layout di facile comprensione.
Le mie domande:
- L'app sarà meglio servita con un DB relazionale come mySQL o un database Object?
- Posso farlo funzionare con PHP + AJAX + CSS + mySQL? C'è un'alternativa migliore? Preferirei programmi gratuiti: intendo che questa app sia gratuita, ma potrei voler renderla pubblicitaria in seguito. Ho bisogno che questo programma funzioni su qualsiasi dispositivo in grado di connettersi a Internet, inclusi tablet e cellulari, ecc.
- Ho bisogno di un framework? CodeIgniter / Symfony vs Django / ZOPE? Qual è il modo migliore per iniziare, considerando che potrei doverlo ridimensionare in futuro - con più dati, più utenti connessi contemporaneamente e più algoritmi? Non voglio cambiare le soluzioni in seguito - se devo investire tempo e sforzi preferirei farlo nel modo giusto fin dall'inizio.
Gradirei qualsiasi aiuto per iniziare. Grazie in anticipo.