Progetto collaborativo per aspiranti programmatori
Sono ormai parecchi anni che frequento e modero forum di programmazione. Negli anni ho visto una miriade di esercizi dati nei vari corsi universitari. Molti di questi esercizi sono molto lontani dalla realtà del mondo del lavoro e in alcuni casi tendono ad insegnare cattive abitudini. Il principale problema è che viene data troppa attenzione all'implementazione e poca al problema da risolvere. Si insegna ad usare l'ereditarietà, ad esempio, chiedendo allo studente di creare una gerarchia ben definita. Ma non viene effettivamente spiegato quando è bene usare l'ereditarietà e quando altre soluzioni siano preferibili. Viene spesso fornito un metodo per risolvere un particolare problema senza offrire una panoramica delle alternative (spesso migliori da molti punti di vista). Si valutano cose soggettive come lo stile (che viene invece spesso insegnato come parametro oggettivo) ma vengono ignorati altri parametri ben più importanti in ambiente lavorativo. Non viene insegnato a cercare errori nel codice, ad usare il debugger, nonostante sia una delle cose più importanti quando si lavora. Quando si programma professionalmente si passa probabilmente lo stesso a fare il debugging che a scrivere effettivamente il codice. Viene raramente insegnato a lavorare in gruppo, ad usare strumenti come git o mercurial, a gestire progetti più grossi di un singolo file.
È difficile trovare dei singoli esercizi che spiegano tutte queste abilità. Vorrei quindi proporre di dare vita ad uno o più progetti di collaborazione all'interno del forum. L'obiettivo è principalmente quello di imparare a lavorare in un team e ad usare strumenti più avanzati, ma questo non significa che non si possa puntare a creare qualcosa di utile
. Il mio ruolo sarebbe tendenzialmente quello di supervisore/assistente/insegnante. Sarei insomma qui per aiutare e dare suggerimenti/critiche.
Se siete interessati rispondete in questa discussione dicendo i linguaggi che conoscete e vorreste usare, insieme a qualche suggerimento su quale dovrà essere l'obiettivo del progetto. Potete ovviamente anche rispondere dando i vostri commenti o le vostre critiche o suggerimenti.
È difficile trovare dei singoli esercizi che spiegano tutte queste abilità. Vorrei quindi proporre di dare vita ad uno o più progetti di collaborazione all'interno del forum. L'obiettivo è principalmente quello di imparare a lavorare in un team e ad usare strumenti più avanzati, ma questo non significa che non si possa puntare a creare qualcosa di utile

Se siete interessati rispondete in questa discussione dicendo i linguaggi che conoscete e vorreste usare, insieme a qualche suggerimento su quale dovrà essere l'obiettivo del progetto. Potete ovviamente anche rispondere dando i vostri commenti o le vostre critiche o suggerimenti.
Risposte
Per me va bene.
Una specie di OCR per formule matematiche?
Tipo che uno lo punta ad suo foglio di calcoli e lui lo "trasforma" in digitale?
Interessante e non proprio semplicissimo.
Una specie di OCR per formule matematiche?
Tipo che uno lo punta ad suo foglio di calcoli e lui lo "trasforma" in digitale?
Interessante e non proprio semplicissimo.
"apatriarca":
avremmo probabilmente bisogno di accedere al database del forum
Era proprio uno degli aspetti che mi lasciava perplesso...
"apatriarca":
una app per fare grafici o che svolta dei calcoli simbolici
L'idea mi piace molto!
"apatriarca":
o che ti riconosca una formula da una foto e ti scrive la formula latex
Questa mi sembra davvero complessa! Lettura e interpretazione di simboli... non proprio easy, almeno secondo me.
Per restare in tema con l'idea dell'app che svolga calcoli, io qualche tempo fa mi ero "divertito" a buttare giù qualche idea (a dir la verità parecchio codice) per un'app che trattasse le matrici e l'avevo fatto partendo da zero (senza librerie esterne).
Avevo iniziato definendo monomi, polinomi, quindi le varie operazioni, quindi le matrici. Poi i metodi per il calcolo dell'inversa, del determinante, del rango, del polinomio caratteristico, della riduzione in forma di Gauss (mostrando anche i singoli passaggi), ecc.
Alla fine però avevo accantonato tutto per dedicarmi agli altri impegni "obbligatori" (leggi università)...
In ogni caso penso che sarei interessato a una cosa di questo genere!
Come questo?
Ma credo che queste applicazioni usino per forza qualche sistema di intelligenza artificiale che va poi allenato.
Ma credo che queste applicazioni usino per forza qualche sistema di intelligenza artificiale che va poi allenato.
Automi a stati?
"minomic":
Per restare in tema con l'idea dell'app che svolga calcoli, io qualche tempo fa mi ero "divertito" a buttare giù qualche idea (a dir la verità parecchio codice) per un'app che trattasse le matrici e l'avevo fatto partendo da zero (senza librerie esterne).
Avevo iniziato definendo monomi, polinomi, quindi le varie operazioni, quindi le matrici. Poi i metodi per il calcolo dell'inversa, del determinante, del rango, del polinomio caratteristico, della riduzione in forma di Gauss (mostrando anche i singoli passaggi), ecc.
Questa non è male. Magari potremmo partire da una calcolatrice ed implementare le operazioni di base tra numeri, e poi estenderle ad altri campi (matrici, polinomi, ℤn…).
@claudio86: qualcosa di più complesso di quello..
Pensavo a qualcosa che dato in pasto qualcosa come
\[ \int_{\Omega} d\omega = \int_{\partial\Omega} \omega \]
restituisca
In effetti credo che sia necessario usare qualche tipo di algoritmo tipo reti neurali e che sia in generale molto difficile.. Ma è stata la prima idea che mi è venuta in mente e l'ho messa.

\[ \int_{\Omega} d\omega = \int_{\partial\Omega} \omega \]
restituisca
\int_{\Omega} d\omega = \int_{\partial\Omega} \omega
In effetti credo che sia necessario usare qualche tipo di algoritmo tipo reti neurali e che sia in generale molto difficile.. Ma è stata la prima idea che mi è venuta in mente e l'ho messa.

"claudio86":
Questa non è male. Magari potremmo partire da una calcolatrice ed implementare le operazioni di base tra numeri, e poi estenderle ad altri campi (matrici, polinomi, ℤn…).
Secondo me è una buona idea: prima una semplice calcolatrice per iniziare a conoscere il mondo dello sviluppo su Android (Activity, View, Listener, ecc) e poi via via complicare l'aspetto matematico e introdurre la trattazione di oggetti sempre più complessi.
Aspettiamo pareri...

Io, compatibilmente con i miei tempi, ci sono.
Per me va bene.. Java? Git o Mercurial o altro?
Secondo me Java è la scelta più naturale. Per l'hosting non ho preferenze perché non conosco bene i vari servizi (ad es. GoogleCode o Github) e le loro differenze.
GitHub?
Su, forza apatriarca , tira fouri il Team Leader che c'e' in te!
Su, forza apatriarca , tira fouri il Team Leader che c'e' in te!
"Luc@s":
Su, forza apatriarca , tira fouri il Team Leader che c'e' in te!
Eh già... abbiamo bisogno di una guida!

Allora Java, Git (su Github) ed Eclipse come IDE. Nome del progetto?
Why not NetBeans or Android Studio?
Bravo apatriarca! Deciso!
Sulla scelta del nome mi faccio decisamente da parte perché faccio pena...
Sulla scelta del nome mi faccio decisamente da parte perché faccio pena...
Luc@s: Android Studio non l'avevo mai sentito.. Ma adesso ci do una occhiata. Per quanto riguarda NetBeans.. semplicemente mi piace di più Eclipse. Immagino siano abbastanza equivalenti per quello che dobbiamo fare in ogni caso.
Ok.
Off to go @ home!
See ya e guardero' con attenzione il 3d
Off to go @ home!
See ya e guardero' con attenzione il 3d
Usare Ant o simili potrebbe aiutare a passare facilmente tra Eclipse e Netbeans (o altri)? Chiedo, non ho esperienza con questi build tools.
Ant e' IDE agnostic
Ammetto di essere un po' combattuto. Una calcolatrice è poco più di un "hello world" della programmazione GUI. Nel mondo lavorativo si utilizzerebbe lo strumento più comodo. Probabilmente un IDE con un editor visuale per le interfacce. Sarebbe poi necessario scrivere la logica della calcolatrice, ma non dovrebbe richiedere più di una settimana il tutto (supponendo di partire da zero nella programmazione GUI..). Non è esattamente un progetto da più persone, tra cui alcuni non principianti. Si potrebbe lasciar perdere la comodità di alcuni strumenti e vedere le cose più a fondo, ma non sono un esperto di Android e se fossi io a scrivere una guida, sarebbe più un corso che un progetto.