2009-09-14 14 views
8

Ho sempre creduto che quando si inizia a imparare un nuovo linguaggio di programmazione, il programmatore deve creare determinati progetti per ottenere una migliore comprensione della lingua e/o dei framework. Personalmente per me è stato con php (guestbook, DB astrazione, motore di template), ruby ​​(su rotaie, twitter come sito web, plug-in attivo, gemma semplice) e oggettivo-c (cacao, todo-list, twitter client).Primo progetto di programma come hobby

Mi chiedo quali sono i progetti del programma obbligatorio per altri linguaggi di programmazione come Java, C++, Python, ecc.? Forse hai avuto altre lingue per l'apprendimento dei percorsi?

risposta

11

ProjectEuler

La prima di 20 o giù di lì sono belle piccoli problemi che consentono di sperimentare linguaggi cose di base controllo di esecuzione. Ti dà una buona sensazione di come una lingua opera nel "piccolo".

3

Per Java Penso che qualcosa di simile a un sistema di inventario non sarebbe male perché copre la maggior parte delle cose come gli object oriented concetti, grafica, programmazione di database, ecc E 'abbastanza intelligente per cominciare

In C++ I Immagino che qualcosa legato alla performance possa essere grandioso. Suggerisco di sviluppare una semplice applicazione di elaborazione delle immagini in C++. Avrai una buona comprensione dei puntatori e della gestione della memoria

2

Purtroppo, è da un po 'che non apprendo una nuova lingua.

Ma quando imparavo sempre nuove lingue, avevo una strategia semplice: il mio primo programma era il tuo "ciao, mondo" di base, qualcosa che mostra solo un messaggio ed esce. Il mio secondo programma era Life. (Vedi, ad esempio http://www.math.com/students/wonders/life/life.html)

In giorni più recenti il ​​mio prossimo sforzo è diventato un semplice programma di database, sebbene non ne sia mai uscito uno standard. Ma qualcosa da leggere e scrivere da un database.

Penso che sia una buona idea scrivere lo stesso programma in diverse lingue. In questo modo conosci già il problema e i principi alla base della soluzione, quindi l'unica cosa nuova che hai a che fare è il linguaggio di implementazione.

+1

Punto interessante. Ma non si tratta degli stessi problemi con le stesse soluzioni che sfidano il paradigma "c'è-di-più-di-un-modo-di-fare"? Dopotutto, ogni lingua porta la propria filosofia. No? – Eimantas

+0

Sicuro. Ma quando sto imparando una nuova lingua, la prima cosa che voglio imparare sono le basi. Come faccio a I/O? Come leggo un file? Come posso chiamare una subroutine? Etc. Il mio primo programma in C++/Windows mi è parso molto diverso dal mio primo programma Fortran perché, sì, la filosofia di design dietro di loro è molto diversa, cioè orientata agli oggetti e GUI vs procedurale e TTY. Non intendevo che il mio commento "già conosci la soluzione" fosse preso così lontano. Quello che intendevo era, quando sto scrivendo il mio primo programma, voglio pensare a come funziona la lingua, non a lottare con i requisiti funzionali. – Jay

2

Di solito mi piace fare alcuni giochi per un paio di motivi.

  • Tendono ad essere più piacevole da implementare perché, dopo tutto, sono giochi.
  • Hanno regole chiaramente definite in modo da non passare molto tempo a capire le specifiche invece di scrivere il programma
  • Tendono ad avere un buon livello medio di complessità. Abbastanza difficile da non essere banale e abbastanza semplice da poterli fare in poche ore o giorni
  • Tendono ad essere indipendenti. OSSIA non hai bisogno di un back-end del database per gli scacchi a meno che tu non lo voglia, diversamente da un'app più reale come un blog in cui un database è fondamentalmente obbligatorio.
  • Con un sacco di giochi si può attaccare con un solo testo o ASCII art interfaccia utente che tende a semplificare le cose quando si impara una lingua

Inizia con qualcosa di semplice come boia, mente master o torri di Hanoi. Quindi puoi passare a un gioco più completo come il poker/monopolio.Con un gioco del genere puoi quindi aggiungere funzionalità arbitrarie come salvare i giochi su un database se vuoi sperimentare con il framework di accesso ai dati della lingua.

+0

Hangman è esattamente il genere di cosa che vorrei fare - vedere il mio post precedente. Il monopolio sembra un gioco abbastanza complesso da programmare per un problema di pratica da buttare. Forse dedichi molto più impegno a un problema di pratica di quanto vorrei. O forse sto sopravvalutando quanto sforzo è. Oh bene. – Jay

+1

Il monopolio è alla fine dei giochi che vorrei fare per la pratica. Anche se hai solo un'interfaccia utente testuale, mi preoccupo solo di creare un'interfaccia utente reale se voglio praticare il framework dell'interfaccia utente, non è male con la regola 20-30 importante di cui vuoi preoccuparti. Inoltre, se tieni premuto per tempo o cosa no, puoi sempre arbitrariamente ignorare le regole. La cosa principale che mi piace è che un approccio OO funziona bene con esso e lo rende più semplice. Quasi ogni modo in cui provo a scriverlo finisco con almeno un giocatore e una classe di proprietà. In qualcosa come l'impiccato tendo a scrivere proceduralmente dal momento che è così semplice. – Joshua

+0

Hmm, mi viene in mente un pensiero interessante: se la maggior parte dei linguaggi moderni è OOP, forse un problema di buona pratica è uno che esercita più oggetti che hanno metodi effettivi e non sono solo contenitori di dati, e include alcuni sottoclassing. In questo modo ti eserciterai un po 'su come le "cose ​​oggettuali" funzionano in questa lingua. – Jay

Problemi correlati