Precedente :: Successivo |
Autore |
Messaggio |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 26 Gen 2009 18:13 Oggetto: * I migliori manuali di programmazione |
|
|
Facciamo una lista di manuali (da noi letti) interessanti.
Inizio io:
Pensare da informatico (online)
Citazione: |
Introduzione
Di David Beazley
In qualità di educatore, ricercatore e autore di libri, sono lieto di assistere alla conclusione della stesura di questo testo. Python è un linguaggio di programmazione divertente e semplice da usare, la cui popolarità è andata via via crescendo nel corso degli ultimi anni. Python è stato sviluppato più di dieci anni fa da Guido van Rossum che ne ha derivato semplicità di sintassi e facilità d'uso in gran parte da ABC, un linguaggio dedicato all'insegnamento sviluppato negli anni '80. Oltre che per questo specifico contesto, Python è stato creato per risolvere problemi reali, dimostrando di possedere un'ampia varietà di caratteristiche tipiche di linguaggi di programmazione quali C++, Java, Modula-3 e Scheme. Questo giustifica una delle sue più rimarchevoli caratteristiche: l'ampio consenso nell'ambito degli sviluppatori professionisti di software, in ambiente scientifico e di ricerca, tra i creativi e gli educatori.
Nonostante l'interesse riscosso da Python in ambienti così disparati, potresti ancora chiederti "Perché Python?" o "Perché insegnare la programmazione con Python?". Rispondere a queste domande non è cosa semplice, specialmente quando l'interesse generale è rivolto ad alternative più masochistiche quali C++ e Java. Penso comunque che la risposta più diretta sia che la programmazione in Python è semplice, divertente e più produttiva.
Quando tengo corsi di informatica, il mio intento è quello di spiegare concetti importanti interessando ed intrattenendo nel contempo gli studenti. Sfortunatamente nei corsi introduttivi c'è la tendenza a focalizzare troppo l'attenzione sull'astrazione matematica e nel caso degli studenti a sentirsi frustrati a causa di fastidiosi problemi legati a dettagli di basso livello della sintassi, della compilazione e dall'imposizione di regole poco intuitive. Sebbene questa astrazione e questo formalismo siano importanti per il progettista di software professionale e per gli studenti che hanno intenzione di proseguire i loro studi di informatica, questo approccio in un corso introduttivo porta solitamente a rendere l'informatica noiosa. Quando tengo un corso non voglio avere davanti una classe di studenti annoiati: preferirei piuttosto vederli impegnati a risolvere problemi interessanti esplorando idee diverse, approcci non convenzionali, infrangendo le regole e imparando dai loro stessi errori.
Inoltre non voglio sprecare mezzo semestre a risolvere oscuri problemi di sintassi, cercando di capire messaggi del compilatore generalmente incomprensibili o di far fronte al centinaio di modi in cui un programma può generare un "general protection fault".
Una delle ragioni per cui mi piace Python è che esso permette un ottimo equilibrio tra l'aspetto pratico e quello concettuale. Dato che Python è interpretato, gli studenti possono fare qualcosa quasi subito senza perdersi in problemi di compilazione e link. Inoltre Python è fornito di un'ampia libreria di moduli che possono essere usati in ogni sorta di contesto, dalla programmazione web alla grafica. Questo aspetto pratico è un ottimo sistema per impegnare gli studenti e permette loro di portare a termine progetti non banali. Python può anche servire come eccellente punto di partenza per introdurre importanti concetti di informatica: dato che supporta procedure e classi, possono essere gradualmente introdotti argomenti quali l'astrazione procedurale, le strutture di dati e la programmazione ad oggetti, tutti solitamente relegati a corsi avanzati di Java o C++. Python prende a prestito un certo numero di caratteristiche da linguaggi di programmazione funzionali e può essere quindi usato per introdurre concetti che sarebbero normalmente trattati in dettaglio in corsi di Scheme o di Lisp.
Leggendo la prefazione di Jeffrey sono rimasto colpito da un suo commento: Python gli ha permesso di ottenere "un livello generale di successo più elevato ed un minore livello di frustrazione", e gli è stato possibile muoversi "con maggiore velocità e con risultati migliori". Questi commenti si riferiscono al suo corso introduttivo: io uso Python per queste stesse ragioni in corsi di informatica avanzata all'Università di Chicago. In questi corsi sono costantemente messo di fronte alla difficoltà di dover coprire molti argomenti complessi in un periodo di appena nove settimane. Sebbene sia certamente possibile per me infliggere un bel po' di sofferenza usando un linguaggio come il C++, ho spesso trovato che questo approccio è controproducente, specialmente nel caso di corsi riguardanti la semplice programmazione. Ritengo che usare Python mi permetta di focalizzare meglio l'attenzione sull'argomento reale della lezione, consentendo nel contempo agli studenti di completare progetti concreti.
Sebbene Python sia un linguaggio ancora giovane ed in continua evoluzione, credo che esso abbia un futuro nel campo dell'insegnamento. Questo libro è un passo importante in questa direzione.
David Beazley, autore di Python Essential Reference
Università di Chicago
|
Java 6 (cartaceo ed online)
Citazione: |
...
A chi si rivolge
A partire dalla versione 5 (o 1.5) il linguaggio Java si è molto evoluto, diventando
estremamente più complesso e potente, e obbligando gli sviluppatori ad aggiornare le
proprie conoscenze non senza sforzi. Tale svolta è dovuta essenzialmente alla
concorrenza spietata dei nuovi linguaggi che sono nati in questi anni, e che cercano di
insediare la leadership che Java si è saputa creare in diverse nicchie tecnologiche. Il
cambiamento di rotta che il linguaggio ha subito va verso una complessità maggiore, con
l?introduzione di nuove potenti caratteristiche, come le enumerazioni, i generics o le
annotazioni.
La versione 5 di Java, per esigenze di marketing è nota anche sotto il nome di ?Tiger?
(in italiano ?tigre?).
Questo testo affronta in modo approfondito le nuove caratteristiche introdotte da Tiger
ma senza tralasciare tutte le altre evoluzioni del linguaggio dalla versione 1.0 in poi.
Lo studio di questo testo quindi, oltre che al neofita che si avvicina alla programmazione
orientata agli oggetti, è consigliato anche al programmatore Java già affermato che vuole
aggiornarsi alle principali caratteristiche della versione 5 di Java.
Come già detto, è un testo molto adatto alla didattica, e quindi dovrebbe risultare un
ottimo strumento per diversi corsi di programmazione sia universitari sia aziendali.
Infine, il libro copre tutti gli argomenti che fanno parte della certificazione Sun Certified
Java Programmer (codice CX-310-055), e quindi può risultare molto utile anche per
prepararsi al test finale.
...
A chi è rivolto l?invito a leggere questo manuale:
? A chi non ha mai programmato
? A chi non ha mai programmato in Java
? A chi ha provato a leggere altri testi ma ha ancora le idee confuse
? A chi vuole solo chiarirsi qualche idea sull?Object Orientation
? A chi è stato costretto dalla sua azienda a scrivere Servlet e JSP, senza aver mai
imparato Java
? A chi vuole migrare dal C/C++, Delphi o SmallTalk a Java in maniera veloce
? A chi vuole migrare da Visual Basic (o linguaggi simili) a Java, ma senza fretta
? A chi non conosce l?inglese e vuole imparare il linguaggio Java
? A chi prima di spendere soldi in libreria per un manuale tradotto (male)
dall?inglese, vuole assicurarsi che Java sia il linguaggio giusto
? A chiunque sia curioso di leggere questo testo
? A chi vuole capire l?essenza della libreria standard di Java
? A chi vuole conoscere le nuove caratteristiche di Java 5
A chi NON è rivolto l?invito a leggere questo manuale:
? A chi interessano le tecnologie Java ma non il linguaggio
? A chi è troppo convinto che la programmazione sia solo ?smanettare?, e che tutti i
linguaggi sono uguali
? A chi non ha pazienza
? A chi pensa che imparare Java sia facile come imparare Visual Basic
|
|
|
Top |
|
 |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 26 Gen 2009 18:24 Oggetto: |
|
|
Ho letto (solo qualche parte) anche questo:
Introduzione agli algoritmi e strutture dati
Citazione: |
Book Preface
This book provides a comprehensive introduction to the modern study of computer algorithms. It presents many algorithms and covers them in considerable depth, yet makes their design and analysis accessible to all levels of readers. We have tried to keep explanations elementary without sacrificing depth of coverage or mathematical rigor.
Each chapter presents an algorithm, a design technique, an application area, or a related topic. Algorithms are described in English and in a "pseudocode" designed to be readable by anyone who has done a little programming. The book contains over 230 figures illustrating how the algorithms work. Since we emphasize efficiency as a design criterion, we include careful analyses of the running times of all our algorithms.
The text is intended primarily for use in undergraduate or graduate courses in algorithms or data structures. Because it discusses engineering issues in algorithm design, as well as mathematical aspects, it is equally well suited for self-study by technical professionals.
In this, the second edition, we have updated the entire book. The changes range from the addition of new chapters to the rewriting of individual sentences.
To the teacher
This book is designed to be both versatile and complete. You will find it useful for a variety of courses, from an undergraduate course in data structures up through a graduate course in algorithms. Because we have provided considerably more material than can fit in a typical one-term course, you should think of the book as a "buffet" or "smorgasbord" from which you can pick and choose the material that best supports the course you wish to teach.
You should find it easy to organize your course around just the chapters you need. We have made chapters relatively self-contained, so that you need not worry about an unexpected and unnecessary dependence of one chapter on another. Each chapter presents the easier material first and the more difficult material later, with section boundaries marking natural stopping points. In an undergraduate course, you might use only the earlier sections from a chapter; in a graduate course, you might cover the entire chapter.
We have included over 920 exercises and over 140 problems. Each section ends with exercises, and each chapter ends with problems. The exercises are generally short questions that test basic mastery of the material. Some are simple self-check thought exercises, whereas others are more substantial and are suitable as assigned homework. The problems are more elaborate case studies that often introduce new material; they typically consist of several questions that lead the student through the steps required to arrive at a solution.
We have starred (∗) the sections and exercises that are more suitable for graduate students than for undergraduates. A starred section is not necessarily more difficult than an unstarred one, but it may require an understanding of more advanced mathematics. Likewise, starred exercises may require an advanced background or more than average creativity.
To the student
We hope that this textbook provides you with an enjoyable introduction to the field of algorithms. We have attempted to make every algorithm accessible and interesting. To help you when you encounter unfamiliar or difficult algorithms, we describe each one in a step-by-step manner. We also provide careful explanations of the mathematics needed to understand the analysis of the algorithms. If you already have some familiarity with a topic, you will find the chapters organized so that you can skim introductory sections and proceed quickly to the more advanced material.
This is a large book, and your class will probably cover only a portion of its material. We have tried, however, to make this a book that will be useful to you now as a course textbook and also later in your career as a mathematical desk reference or an engineering handbook.
What are the prerequisites for reading this book?
* You should have some programming experience. In particular, you should understand recursive procedures and simple data structures such as arrays and linked lists.
* You should have some facility with proofs by mathematicl induction. A few portions of the book rely on some knowledge of elementary calculus. Beyond that, Parts I and VIII of this book teach you all the mathematical techniques you will need.
To the professional
The wide range of topics in this book makes it an excellent handbook on algorithms. Because each chapter is relatively self-contained, you can focus in on the topics that most interest you.
Most of the algorithms we discuss have great practical utility. We therefore address implementation concerns and other engineering issues. We often provide practical alternatives to the few algorithms that are primarily of theoretical interest.
If you wish to implement any of the algorithms, you will find the translation of our pseudocode into your favorite programming language a fairly straightforward task. The pseudocode is designed to present each algorithm clearly and succinctly. Consequently, we do not address error-handling and other software-engineering issues that require specific assumptions about your programming environment. We attempt to present each algorithm simply and directly without allowing the idiosyncrasies of a particular programming language to obscure its essence.
To our colleagues
We have supplied an extensive bibliography and pointers to the current literature. Each chapter ends with a set of "chapter notes" that give historical details and references. The chapter notes do not provide a complete reference to the whole field of algorithms, however. Though it may be hard to believe for a book of this size, many interesting algorithms could not be included due to lack of space.
Despite myriad requests from students for solutions to problems and exercises, we have chosen as a matter of policy not to supply references for problems and exercises, to remove the temptation for students to look up a solution rather than to find it themselves.
Changes for the second edition
What has changed between the first and second editions of this book? Depending on how you look at it, either not much or quite a bit.
A quick look at the table of contents shows that most of the first-edition chapters and sections appear in the second edition. We removed two chapters and a handful of sections, but we have added three new chapters and four new sections apart from these new chapters. If you were to judge the scope of the changes by the table of contents, you would likely conclude that the changes were modest.
The changes go far beyond what shows up in the table of contens, however. In no particular order, here is a summary of the most significant changes for the second edition:
* Cliff Stein was added as a coauthor.
* Errors have been corrected. How many errors? Let's just say several.
* There are three new chapters:
o Chapter 1 discusses the role of algorithms in computing.
o Chapter 5 covers probabilistic analysis and randomized algorithms. As in the first edition, these topics appear throughout the book.
o Chapter 29 is devoted to linear programming
* Within chapters that were carried over from the first edition, there are new sections on the following topics:
o perfect hashing (Section 11.5),
o two applications of dynamic programming (Sections 15.1 and 15.5), and
o approximation algorithms that use randomization and linear programming (Section 35.4).
* To allow more algorithms to appear earlier in the book, three of the chapters on mathematical background have been moved from Part I to the Appendix, which is Part VIII.
* There are over 40 new problems and over 185 new exercises.
* We have made explicit the use of loop invariants for proving correctness. Our first loop invariant appears in Chapter 2, and we use them a couple of dozen times throughout the book.
* Many of the probabilistic analyses have been rewritten. In particular, we use in a dozen places the technique of "indicator random variables," which simplify probabilistic analyses, especially when random variables are dependent.
* We have expanded and updated the chapter notes and bibliography. The bibliography has grown by over 50%, and we have mentioned many new algorithmic results that have appeared subsequent to the printing of the first edition.
We have also made the following changes:
* The chapter on solving recurrences no longer contains the iteration method. Instead, in Section 4.2, we have "promoted" recursion trees to constitute a method in their own right. We have found that drawing out recursion trees is less error-prone than iterating recurrences. We do point out, however, that recursion trees are best used as a way to generate guesses that are then verified via the substitution method.
* The partitioning method used for quicksort (Section 7.1) and the expected linear-time order-statistic algorithm (Section 9.2) is different. We now use the method developed by Lomuto, which, along with indicator random variables, allows for a somewhat simpler analysis. The method from the first edition, due to Hoare, appears as a problem in Chapter 7.
* We have modified the discussion of universal hashing in Section 11.3.3 so that it integrates into the presentation of perfect hashing.
* There is a much simpler analysis of the height of a randomly build binary search tree in Section 12.4.
* The discussions on the elements of dynamic programming (Section 15.3) and the elements of greedy algorithms (Section 16.2) are significantly expanded. The exploration of the activity-selection problem, which starts off the greedy-algorithms chapter, helps to clarify the relationship between dynamic programming and greedy algorithms.
* We have replaced the proof of the running time of the disjoint-set-union data structure in Section 21.4 with proof that uses the potential method to derive a tight bound.
* The proof of correctness of the algorithm for strongly connected components in Section 22.5 is simpler, clearer, and more direct.
* Chatper 24, on single-source shortest paths, has been reorganized to move proofs of the essential properties to their own section. The new organization allows us to focus earlier on algorithms.
* Section 34.5 contains an expanded overview of NP-completeness as well as anew NP-completeness proofs for the hamiltonian-cycle and subset-sum problems.
Finally, virtually every section has been edited to correct, simplify, and clarify explanations and proofs.
|
|
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11809 Residenza: Tokelau
|
|
Top |
|
 |
bdoriano Amministratore


Registrato: 02/04/07 12:05 Messaggi: 14391 Residenza: 3° pianeta del sistema solare...
|
Inviato: 26 Gen 2009 20:30 Oggetto: |
|
|
Orpo! Me l'ero dimenticato!  |
|
Top |
|
 |
freemind Supervisor sezione Programmazione


Registrato: 04/04/07 21:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 26 Gen 2009 21:29 Oggetto: |
|
|
Programmazione
Il linguaggio C, Kernighan & Ritchie, aieie!
Il linguaggio C++, Stroustrup Bjarne, aieie pure lui!
Programmare in C++, Stephen Blaha, buon reference
Programmazione in C++. La guida per tutti alla programmazione professionale. Con floppy
disk, Holzner Steve, un mio vecchio amore
Java, la guida completa, Herbert Schildt, in 10 giorni capisci come funziona Java, potenza didattica a manetta!
Php 5, Guida per lo sviluppatore, Dave W. Mercer, Allan Kent, Steven D. Nowicki, David Mercer, Dan Squier, Wankyu Choi, stesso discorso del manuale di Java
I segreti di Visual basic 6, Harold Davis, all'epoca gran bel libro.
Un po' di teoria
Compilers, Principles, Techniques and tools, Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman, arrivi a produrre un compilatore.
Introduzione alla Crittografia, Alessandro Languasco, Alessandro Zeccagnini: tanta teoria, tanta algebra astratta ma tanto bello e utile.
Crittografia pratica, Bruce Shneier, Niels Ferguson, può far coppia con l'altro.
Per chi si fa le pippe con i numeri
Analisi numerica, Valeriano Comincioli (mio prof), qualunque problema di analisi numerica lo trovate risolto qui
Modellistica numerica per problemi differenziali, Alfio Quarteroni, della serie "ci sono spazi ad infinite dimensioni e noi le dominiamo tutte"
Avevo intenzione di aprire un thread simile però sui manuali e libri opensource e quindi disponibili gratuitamente in rete, accoderà a questo thread le mie segnalazioni  |
|
Top |
|
 |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 26 Gen 2009 22:12 Oggetto: |
|
|
freemind ha scritto: |
Per chi si fa le pippe con i numeri
Analisi numerica, Valeriano Comincioli (mio prof), qualunque problema di analisi numerica lo trovate risolto qui
Modellistica numerica per problemi differenziali, Alfio Quarteroni, della serie "ci sono spazi ad infinite dimensioni e noi le dominiamo tutte"
|
vedrai che prima o poi mi compro uno di questi libri |
|
Top |
|
 |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 26 Gen 2009 22:13 Oggetto: |
|
|
Segnalo a anche Ruby in 20 minuti:con venti minuti cronometrati ti proietta in questo linguaggio. |
|
Top |
|
 |
chemicalbit Dio maturo


Registrato: 01/04/05 18:59 Messaggi: 18597 Residenza: Milano
|
Inviato: 27 Gen 2009 00:54 Oggetto: |
|
|
freemind ha scritto: | Programmazione
Il linguaggio C, Kernighan & Ritchie, aieie! | L'ho letto , quello che c'è è spiegato bene (cicli for, if, puntatori, ecc. ecc.)
Il problema è tutto quello che non c'è spiegato (o era spiegato brvemente nell'ultimo capitolo che parlava molto brevemente di varie funzioni di libreria). |
|
Top |
|
 |
SverX Supervisor Macchinisti


Registrato: 25/03/02 12:16 Messaggi: 11809 Residenza: Tokelau
|
Inviato: 27 Gen 2009 14:53 Oggetto: |
|
|
chemicalbit ha scritto: | freemind ha scritto: | Programmazione
Il linguaggio C, Kernighan & Ritchie, aieie! | L'ho letto , quello che c'è è spiegato bene |
Era grave altrimenti, dato che il C l'hanno scritto loro  |
|
Top |
|
 |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
Inviato: 02 Feb 2009 18:49 Oggetto: |
|
|
Per Python segnalo anche:
Python-Codice e comandi essenziali
Non spiega molto,ma c'è tanto codice
Per C# (che sto legendo per riprendere a programmare) segnalo:
ABC#
Citazione: |
Argomenti trattati
Il testo è strutturato nei seguenti capitoli:
Introduzione a C# e .NET.
Espone l?architettura del framework .NET ed i suoi componenti e concetti fondamentali, come il Common Language Runtime, la compilazione JIT, la gestione della memoria.
Il primo programma in C#.
E? un capitolo introduttivo con il quale comincerete immediatamente a mettere le mani in pasta, scrivendo, compilando, eseguendo il classico esempio introduttivo, con una veloce analisi del codice scritto.
Concetti di base.
Il capitolo illustra i concetti fondamentali del linguaggio e della programmazione in C#, introducendo i suoi tipi fondamentali.
Controllo di flusso.
Il quarto capitolo illustra i costrutti di C# per il controllo del flusso di un programma e gli operatori del linguaggio.
Programmazione ad Oggetti.
In questo capitolo vedremo cosa significa programmare ad oggetti e come C# supporta il paradigma di programmazione object oriented.
Classi fondamentali.
Il capitolo espone ed illustra le classi fondamentali messe a disposizione da .NET, come le stringhe, e le collezioni di oggetti.
Concetti avanzati.
E? un capitolo su argomenti leggermente più avanzati, ma indispensabili se si pensa di sviluppare seriamente in C# o in generale in un linguaggio .NET: eccezioni, delegati ed eventi.
Cenni di Windows Forms.
Qualche cenno sullo sviluppo di un?interfaccia grafica è dato in maniera indipendente da qualunque ambiente di sviluppo integrato, facendo uso semplicemente del puro linguaggio e delle classi .NET dedicate allo scopo.
Cenni di Input/Output.
Nell?ultimo capitolo sono dati i concetti essenziali per potere salvare dati e leggerli da diversi tipi di file, cosa essenziale per applicazioni di una certa importanza.
Appendice: Opzioni del compilatore csc.
Nell?appendice è riportato un rapido riferimento delle opzioni da utilizzare con il compilatore csc da riga di comando.
|
La guida a C# di msdn
Citazione: |
Guida per programmatori C#
Aggiornamento: novembre 2007
In questa sezione vengono fornite informazioni dettagliate sulle funzionalità principali del linguaggio C# e sulle funzionalità accessibili a C# tramite .NET Framework.
Per la maggior parte di questa sezione, si presuppone che si disponga già di conoscenze su C# e sui concetti di programmazione generali. Se non si dispone di alcuna esperienza di programmazione o con C#, si consiglia di inizare con Presentazione guidata di Visual C#. È anche possibile visitare il sito Web C# Developer Center (informazioni in lingua inglese), che contiene esercitazioni, esempi e video introduttivi.
Per informazioni su parole chiave specifiche, operatori e direttive per il preprocessore, vedere Riferimenti per C#. Per informazioni sulla specifica del linguaggio C#, vedere Specifiche del linguaggio C#.
|
|
|
Top |
|
 |
mdweb Dio maturo


Registrato: 18/12/07 16:59 Messaggi: 4412
|
|
Top |
|
 |
|
|
Non puoi inserire nuovi argomenti Non puoi rispondere a nessun argomento Non puoi modificare i tuoi messaggi Non puoi cancellare i tuoi messaggi Non puoi votare nei sondaggi
|
|