# [OT] Algoritmi?

## styrix

Salve a tutti; nuovo problema!

Studiando diversificamente il linguaggio C, mi sono accorto: "come faccio a risolvere un problema se non so cosa fare?. Da questa domanda me ne sono poste altre, fin quanto sono arrivato al dunque: "devo studiare gli algoritmi in un modo sistematicamente perfetto!". Ora la domanda che avvolge il mio cervello da giorni è: "quale libro potrei prendere, per capire algoritmi e strutture dati?".

Aspetto risposte con ansia, a presto by Andrea!Last edited by styrix on Mon Dec 08, 2003 11:41 am; edited 3 times in total

----------

## comio

C++... tanto vale farsi male subito... Una volta fatto C++, tutti gli altri diventano semplificazioni.

----------

## cerri

Tralasciando il fatto che non ci ho capito niente  :Cool: , ho eliminato il doppio poll, dove c'era un voto in piu' per il C.

Quindi i risultati vanno visti come scritto sul poll piu' un voto per il C.

----------

## Peach

io ho iniziato con il C  e devo dire che il tutto è stato grazie ad un ottimo libro (Kernighan-Ritchie) ora mi sto imparando il C++ ed è una mazzuolata in mezzo ai marroni. .. 

ammetto che se potessi imparerei python ora  :Smile: 

----------

## shev

Premesso che vedo due domande diverse tra il poll e il contenuto del tuo topic, vedrò di rispondere (sempre imho) ad entrambe.

Se intendi approfondire per bene il discorso algoritmi, strutture dati e compagnia ci sono diversi ottimi libri, in italiano o inglese, che trattano l'argomento da un punto di vista teorico (visto che è un argomento teorico) senza vincolarsi ad alcun linguaggio particolare. Quindi una salto in biblioteca o sui vari siti e ti scegli un paio di questi libri e te li "divori" più volte (non ricordo con esattezza i titoli. Restando sull'italiano mi pare ci fosse una cosa tipo "algoritmi e strutture dati" che devo aver usato in informatica 3, oltre ad altri due, uno in ita e uno in eng che non ricordo. Magari poi faccio un salto in cameretta e leggo che titoli hanno  :Razz:  ).

Se inveci intendi studiare per bene un linguaggio di programmazione ma non sai quale scegliere, allora il mio consiglio è: il C, linguaggio noto, diffuso, abbastanza semplice e usatissimo. Oppure python, linguaggio semplicissimo, versatile, potente, elegante e in via di diffusione.

Ovviamente tutto imho. Per c++, java e compagnia c'è tempo, parti da qualcosa di più amichevole prima.

----------

## fedeliallalinea

Per il linguaggio da utilizzare sono d'accordo con Shev. Per algoritmi ti consiglio

il libro di Robert Sedgewick, Algorithms in C.

----------

## randomaze

Se vuoi studiare algoritmi il C va benissimo... la base di letteratura é abbastanza ampia per trovare qualsiasi cosa.

E poi se vuoi hai un kernel di algoritmi da studiare   :Rolling Eyes: 

Non mi é chiara una cosa....

vuoi studiare algoritmi perché "non hai problemi da risolvere", ok, ma forse é bene prima imparare a gestire un linguaggio (con problemi semplici... come calcolare numeri primi e simili) e dopo pensare agli algoritmi... se hai la padronanza di un linguaggio riesci anche ad adattare un algoritmo che é scritto in un altro linguaggio... no?

----------

## Ginko

Allora, i libri che ti consiglio (purtroppo li ho in inglese ma forse esiste la traduzione) sono :

Algorithms and Data Structures - Niklaus Wirth

Introduction to Algorithms - Cormen et al.

Ha ragione chi dice che gli algoritmi e le strutture dati vanno imparate a prescindere dal linguaggio di programmazione. Vero e' pero' che esistono linguaggi che risultano migliori di altri proprio per imparare algoritmi e strutture dati.

Personalmente io ho imparato con il glorioso Pascal e solo dopo sono passato al C. Ora uso praticamente solo Perl.

--Gianluca

----------

## matteo*

 *styrix wrote:*   

> Studiando diversificamente il linguaggio C
> 
> ....
> 
> "quale libro potrei prendere, per capire algoritmi e strutture dati?"
> ...

 

allora, rispondendo sarcasticamente potrei dirti di comprarti uno scooter, una vespa, un ciao, un bravo, un sì, un fifty top o qualcosa del genere e smanettarci sopra cambiando motore, marmitta, carburatore, filtri vari e quant'altro perchè a 14 anni quello è l'hobby + adatto!!   :Laughing:   :Laughing:   tanto quando ti iscrivi al primo anno di informatica c'è un bel corso che si chiama *Algoritmi e Strutture Dati* e vedrai che dovrai studiarlo x forza.....

se proprio vogliamo una risposta seria, studiati c che non fa mai male e poi perl, perchè no?

sinceramente non vedo a cosa potrebbero servirti php e assembler....

----------

## emix

Io ho votato il C, perchè credo che qualsiasi programmatore lo debba conoscere. Poi linux è tutto scritto in C e grazie alla disponibilità dei sorgenti si può imparare davvero tanto. Per non parlare poi della documentazione.

Per quanto riguarda un linguaggio ad oggetti ti consiglierei il Java. Infatti, anche se non sembra molto utile, è il linguaggio ad oggetti più puro di tutti. In parole povere col java impari la programmazione ad oggetti, e poi vedrai che potrai utilizzare qualsiasi linguaggio ad oggetti. Inoltre imparando il java potrai utilizzare le JSP per la programmazione Web.

----------

## ScolaBirra

Come viene detto nell' How to become an hacker di un certo Eric  Raymond, imparare un solo linguaggio non e' bello... Lui consiglia con il Python, perche' dice che e' molto semplice (io purtroppo non lo conosco) ma dice che per essere un hacker almeno il C, Pearl e LISP sarebbero da conoscere.

Personalmente ho votato il C perche' e' quello che mi esalta di piu'... sinceramente tutte le paranoie della OOP mi stanno un po' qua. Quando avevo ancora l'Amiga mi divertivo ad ottimizzare le routines in assembler, quindi il C per me e' una scelta obbligata.

Scola

----------

## micron

Io consiglierei di partire con il C, poi darei un'occhiata anche a Java/C++

IMHO ritengo molto limitante conoscere solo un linguaggio di programmazione, è per questo che ho citato Java e C++.

Ti consiglio questi due perchè sono linguaggi di programmazione ad oggetti che un programmatore con un po' di competenza dovrebbe saper usare.

----------

## Flonaldo

consiglio C, C++ é troppo una botta tra i maroni, java é object oriented e gli altri non sono "corollari"  : ragazzi imparate C!!!!!!!

----------

## Beelzebubba

Ciao a tutti!

 Io ho votato Java, è molto versatile, ci si può fare un po' di tutto, mentre sconsiglierei C, se non si è molto esperti si rischiano di fare danni, tra i linguaggi di alto livello C è quello di livello più "basso". Mi spiego subito: C ti consente di accedere ad aree di memoria di sistema che gli altri linguaggi ti precludono, ti consente di fare system-call all'OS, ti consente di accedere ai buffer più nascosti (non a caso C è nato per la pura programmazione di sistema) tutto ciò senza nessun aiuto da parte sua, quindi è MOLTO potente ma è una lama a doppio taglio... (...se Davoli leggesse questo mio post passerei SO con 30...)...

 *styrix wrote:*   

>  "quale libro potrei prendere, per capire algoritmi e strutture dati?"

 

```
T. Cormen, C. Leiserson, R. Rivest. Introduction to algorithms. MIT Press
```

è la "bibbia"  di algoritmi e strutture dati!

Saluti!

----------

## julius malchovitch

Ho appena dato un'occhiata al risultato del sondaggio.

Santo cielo, ma il C non è orientato al web!

----------

## fedeliallalinea

 *julius malchovitch wrote:*   

> Ho appena dato un'occhiata al risultato del sondaggio.
> 
> Santo cielo, ma il C non è orientato al web!

 

Questo si ma il problema che il titolo dice che vuale un linguaggio per 

programmare degli algoritmi, mentre il sondaggio chiede qualcosa d'altro.

----------

## bld

 *ScolaBirra wrote:*   

> Come viene detto nell' How to become an hacker di un certo Eric  Raymond, imparare un solo linguaggio non e' bello... Lui consiglia con il Python, perche' dice che e' molto semplice (io purtroppo non lo conosco) ma dice che per essere un hacker almeno il C, Pearl e LISP sarebbero da conoscere.
> 
> Personalmente ho votato il C perche' e' quello che mi esalta di piu'... sinceramente tutte le paranoie della OOP mi stanno un po' qua. Quando avevo ancora l'Amiga mi divertivo ad ottimizzare le routines in assembler, quindi il C per me e' una scelta obbligata.
> 
> Scola

 

si oltre a quello dice che per essere un hacker devi fare altre 3.000 cose che la magior parte di noi non fara mai  :Razz:  per cio non credo che rege il 

discorso.. hackers a quel livello sono pochi ed e' gente che ci butta anni ed anni di studio.

Per i linguagi di programmazione non saprei cosa dire. Ci sono molte thread su internet e su mailing lists non indifferenti (quella di debian per esempio) spesso C viene definito come linguagio "antico" ed in un certo senso lo e' ... Seguendo una discussione interessante su #python@freenode e' stato detto che oramai si potrebbe costruire un kernel ed un OS interamente con Python con tutte le implementazione oramai adottate da Py. Alla fine dei conti credo che il C serve per capire linux in fondo, come altre lingue di machine tipo asm. Ma per il resto non credo che siano lingue che "pagano", come la java ed altre.

Poi una piccola critica per la pool, ma dal C alla php.. ce il mare. Sono due cose diverse o sbaglio?   :Shocked: 

stesso per lisp etc. a meno che uno non decide di impare una lingua di programmazione e basta senza una meta predefinita.

----------

