Basi per la programmazione

di il
25 risposte

Basi per la programmazione

Ciao, sono un nuovo utente, piacere di conoscervi.
Come da titolo, non avendo mai avuto esperienze nella programmazione escluso le basi del python qualche anno fa, ma non ricordo nulla attualmente...
Comunque, mi è capitato di leggere varie discussioni qui e su altri forum, molti consigliano di avere sempre delle basi in vari campi: database, reti (protocolli, modem/router, server, etc.), sistemi operativi, etc... io sinceramente di questi 3 campi non conosco nulla, qualcosa sulle reti ma non sono definibili neanche "basi", d'altra parte sistemo pc, desktop e laptop, con sostituzione componenti hardware, installazione e configurazione dell'os, etc. e ogni tanto gli smartphone, ma solo a livello software, ripristino, e come sui pc configurazione (Android).

Quindi la mia domanda è:

Sono necessarie le conoscenze almeno basilari dei sistemi operativi, delle reti e sui database per comprendere e quindi riuscire a sfruttare al meglio il linguaggio che si andrà a studiare?

25 Risposte

  • Re: Basi per la programmazione

    Tutto e' utile, nulla e' indispensabile.

    Tutto dipende da che ci devi fare.

    Un'infarinatura di tutto (tutto per modo di dire, naturalmente ) e' sempre una buona cosa, se non altro per sapere di che si sta' parlando e sapere dove andare a pescare informazioni aggiuntive. Personalmente ho aquistato un testo sul calcolo quantistico: sono informazioni che non usero' mai nella mia vita personale/professionale, ma almeno ho una vaga idea di che si tratta

    Una buona pratica e' quella di approfondire gli argomenti che si incontrano lungo il proprio percorso personale/professionale, sia quelli nuovi, sia quelli consolidati, visto che comunque l'Informatica continua ad evolvere.

    Anche il tempo dedicato alla teoria non e' tempo sprecato.
  • Re: Basi per la programmazione

    migliorabile ha scritto:


    Tutto e' utile, nulla e' indispensabile.

    Tutto dipende da che ci devi fare.

    Un'infarinatura di tutto (tutto per modo di dire, naturalmente ) e' sempre una buona cosa, se non altro per sapere di che si sta' parlando e sapere dove andare a pescare informazioni aggiuntive. Personalmente ho aquistato un testo sul calcolo quantistico: sono informazioni che non usero' mai nella mia vita personale/professionale, ma almeno ho una vaga idea di che si tratta

    Una buona pratica e' quella di approfondire gli argomenti che si incontrano lungo il proprio percorso personale/professionale, sia quelli nuovi, sia quelli consolidati, visto che comunque l'Informatica continua ad evolvere.

    Anche il tempo dedicato alla teoria non e' tempo sprecato.
    Certo, tutto è troppo in questo campo
    Comunque da quel che dici capisco che siano nozioni utili ma non fondamentali per intraprende lo studio di un linguaggio, ma che sarebbero utili, in vista comunque di altre opportunità che porterebbe la programmazione sia a livello personale che professionale.
    Da quel che leggevo sembrava che fossero fondamentali quei campi come altri.
    Attualmente sto studiando l'architettura dei calcolatori di Tanenbaum, per avere una base più approfondita sull'hardware.

    Riguardo a quello che ci devo fare, grafica 3D, codice dei giochi, applicazioni (Android), web, diciamo mi interessano vari campi della programmazione.

    Consigli quindi di unire allo studio della programmazione altre materie che mi aiuterebbero a comprendere e utilizzare meglio il linguaggio, durante lo studio dello stesso?
  • Re: Basi per la programmazione

    Il Tanenbaun e' uno dei migliori testi in circolazione, cosi' come quello sulle reti scritto dallo stesso autore.

    Il linguaggio di programmazione e' solo la lingua con cui parli al computer. Ma come per gli esseri umani, conoscere la lingua senza avere un argomento su cui discutere, e' inutile.

    Quindi, prima decidi che cosa vuoi realizzare, poi approfondisci gli argomenti necessari per realizzare la tua idea.

    Ad esempio:

    Web -> HTML, CSS, Javascript, PHP oppure Python oppure Java oppure C#, XML, XSL
    Android -> Java, ovviamente Android, grafica 2D (per giochini bidimensionali), grafica 3D (per giochini a 3 dimensioni), XML, ...
    Grafica 3D -> Java oppure C++ oppure Python oppure C#, algebra lineare, geometria ..., XML
    Giochi -> Java oppure C++ oppure Python, alcuni concetti fondamentali che si studiano in Intelligenza Artificiale, teoria dei grafi, ...

    Solo per elencare quelle che mi vengono in mente in questo momento.

    In generale, i concetti fondamentali necessari per chi vuole realizzare dei programmi, sono:

    - algoritmi: che cosa e' un algoritmo, e lo studio di alcuni algoritmi classici che si usano molto frequentemente, usati per la ricerca e l'ordinamento
    - strutture dati: come si memorizzano le informazioni nella memoria di un computer e come si possono manipolare, e lo studio delle proprieta' di un certo numero di strutture molto usate: lista, vettore, matrice, albero, grafo, strutture dati ricorsive, ...
    - paradigmi di programmazione: ci sono diversi modi di scrivere un programma, detti paradigmi di programmazione, e per ogn'uno di questi esiste uno o piu' linguaggi di programmazione che lo implementano.

    I paradigmi piu' conosciuti sono:

    - programmazione procedurale (ad esempio Assembler, Pascal, C, Python senza la parte ad oggetti, ..)
    - programmazione orientata agli oggetti (Python, Java, C#, ... cene sono un'infinta' di altri)

    ed ultimamente diversi in linguaggi di programmazione (Java, C#) e' stato aggiunto anche un supporto (parziale) alla

    - programmazione funzionale


    ma ce ne sono molti altri. Un programmatore esperto conosce almeno

    - programmazione concorrente
    - programmazione distribuita

    Potrei contiinuare, ma questo solo per darti un'idea di che cosa c'e' dietro alla semplice realizzazione di un programma.
  • Re: Basi per la programmazione

    Grazie per la risposta intanto.
    Conoscevo già la programmazione orientata agli oggetti e procedurale, le altre 3 non le avevo mai sentite.
    Una cosa che ho notato è il Java, che sia web, mobile o per i giochi questo linguaggio c'è.
    Riguardo al Tanenbaum, spero che tratti tutti i concetti da te citati.
    Per strutture dati suppongo che tu intenda le unità di grandezza dei dati, bit, byte, ecc. dico bene?
    e lo studio delle proprieta' di un certo numero di strutture molto usate: lista, vettore, matrice, albero, grafo, strutture dati ricorsive, ...
    Queste invece non so cosa siano
    Comunque penso di optare per Java, è il più utilizzato ed è molto utile in diversi campi.

    Una domanda, ogni tanto mi capita di leggere come ho detto sopra alcune discussione sulla programmazione, oltre ai campi citati sopra anche la matematica viene spesso nominata, vale lo stesso discorso di sopra, ok, utile ma non indispensabile per la programmazione, ma comunque quando dicono basi matematiche, fino a dove si intende solitamente?
    Quella avanzata o le semplici basi delle superiori?

    Spero di essermi spiegato.
  • Re: Basi per la programmazione

    Conoscere un linguaggio di programmazione senza conoscere algoritmi e strutture dati e' come saper guidare senza avere la strada e l'automobile. Sono conoscenze fondamentali, senza le quali fai il primo passo, ma ti fermi li. bit, byte ecc sono i dati piu' piccoli che utilizzi nella relizzazione di un programma, in generale non ulteriormente suddividibili. L'equivalente degli atomi. Poi pero' ti servono le molecole, i virus, i funghi ... gli esseri viventi. Queste sono le strutture dati: aggregati piu' o meno complicati di informaizioni atomiche e/o di altre strutture dati.

    Per quanto riguarda la matematica: al minimo le 4 operazioni, ovviamente.

    Per la grafica 3D ti serve geometria, trigonometria e algebra lineare (fondamentalmente i concetti di matrici e vettori).

    Tutte cose che si fanno alle superiori, o al limite al primo anno di universita'. Nulla di incomprensibile: generalmente te la cavi dedicandoci un paio di fine settimana.
  • Re: Basi per la programmazione

    Capisco, ora non ho la possibilità di accedere al libro, so che tratta gli algoritmi ma non gli altri argomenti che mi hai suggerito come fondamentali.
    Sai per caso se il libro sull'architettura di Tanenbaum tratta questi argomenti? (Strutture dati)

    PS: Sono ancora all'inizio come ho già detto, quindi non so se si parla o meno di quello, devo ancora "guardarmelo" per bene.

    Grazie
  • Re: Basi per la programmazione

    Kitsune benvenuto.. le parole di Migliorabile sono sacrosante...poco sconforto e testa china sui libri e vai!!
    @Migliorabile nn è detto che non ti possa servire qualche nozione di quantistica!! Ho letto ultimamente che per rendere la trasmissione dati più sicura su rete (inteanet, internet ecc.) Stanno pensando di utilizzare alcuni concetti di quantistica, per criptare i dati...tutto fa brodo, appunto come suggerivi tu al nuovo 'amico' del forum

    Inviato dal mio LG-E440 utilizzando Tapatalk
  • Re: Basi per la programmazione

    Kltsune ha scritto:


    Capisco, ora non ho la possibilità di accedere al libro, so che tratta gli algoritmi ma non gli altri argomenti che mi hai suggerito come fondamentali.
    Sai per caso se il libro sull'architettura di Tanenbaum tratta questi argomenti? (Strutture dati)

    PS: Sono ancora all'inizio come ho già detto, quindi non so se si parla o meno di quello, devo ancora "guardarmelo" per bene.

    Grazie
    Il must to have per quanto rigurda i concetti fondamentali relativi ad algoritmi e strutture dati e' questo



    Esiste anche la versione in italiano:

    http://www.amazon.it/Introduzione-agli-algoritmi-strutture-dati/dp/883866515X/ref=pd_sim_sbs_b_2?ie=UTF8&refRID=0ZGR0GA5E8JN17CPS8CK

    Questa e' quasi la bibbia.

    Il testo che stai leggendo (Architettura dei calcolatori. Un approccio strutturale ) tratta come sono organizzati i calcolatori, dai PC ai supercomputer, dalla CPU (Central Process Unit), alla memoria (fisica, virtuale, ...), l'IO (Input/Output), la memoria di massa (dischi rigidi, nastri, forse SSD), ecc..

    Il testo non tratta gli argomenti che servono per imparare a programmare.
  • Re: Basi per la programmazione

    Io sapevo che gli algoritmi venivano trattati, forse mi confondo.
    Comunque, da appassionato di hardware non potevo non leggere quello di Tanenbaum
    Mi informo sul libro in questione.

    Riguardo al Java, che libro consiglieresti "recente" per studiare questo linguaggio che parta dalle basi?
    Mi era capitato un libro poco tempo fa ma non trattava gli argomenti iniziali e quindi l'ho eliminato (.pdf) visto che non capivo nulla in quanto chiedeva alcune basi di conoscenza.
  • Re: Basi per la programmazione

    "Core Java 2"
  • Re: Basi per la programmazione

    Gincum ha scritto:


    "Core Java 2"

    migliorabile ha scritto:


    Kltsune ha scritto:


    Capisco, ora non ho la possibilità di accedere al libro, so che tratta gli algoritmi ma non gli altri argomenti che mi hai suggerito come fondamentali.
    Sai per caso se il libro sull'architettura di Tanenbaum tratta questi argomenti? (Strutture dati)

    PS: Sono ancora all'inizio come ho già detto, quindi non so se si parla o meno di quello, devo ancora "guardarmelo" per bene.

    Grazie
    Il must to have per quanto rigurda i concetti fondamentali relativi ad algoritmi e strutture dati e' questo



    Esiste anche la versione in italiano:

    http://www.amazon.it/Introduzione-agli-algoritmi-strutture-dati/dp/883866515X/ref=pd_sim_sbs_b_2?ie=UTF8&refRID=0ZGR0GA5E8JN17CPS8CK

    Questa e' quasi la bibbia.

    Il testo che stai leggendo (Architettura dei calcolatori. Un approccio strutturale ) tratta come sono organizzati i calcolatori, dai PC ai supercomputer, dalla CPU (Central Process Unit), alla memoria (fisica, virtuale, ...), l'IO (Input/Output), la memoria di massa (dischi rigidi, nastri, forse SSD), ecc..

    Il testo non tratta gli argomenti che servono per imparare a programmare.
    Grazie per le risposte.
    Il libro che mi hai consigliato tratta la versione 5.0 se non sbaglio di Java, ed ora sono arrivati alla 8, conviene acquistare un libro dell'ultima o acquistare/scaricare una versione anche precedente come la 5.0?
    Le "versioni" migliorano qualche aspetto ma alla fine il linguaggio è sempre quello dico bene? (anche se può sembrare stupida come domanda )
  • Re: Basi per la programmazione

    Di manuali su Java ce ne sono a migliaia.

    Come sciegliere?

    In generale, quando devo acquistare un libro su un argomento che non conosco, seguo le seguente regole (una o piu')

    1) se so che esiste un testo consigliato, prendo quello, altrimenti
    2) testo in inglese
    3) autore NON Italiano, perche' per esperienza, gli italiani non non sanno scrivere testi tecnici
    4) casa editrice prestigiosa (Addison Wesley, Springer, O'Reilly, Mc Graw Hill, ecc)
    5) se tutto questo non funziona ancora, vado su Amazon, faccio una ricerca e scelgo uno dei testi proposti che si trovano in cima alla lista.

    Java, bonta' sua, e' un linguaggio che ha avuto un'evoluzione coerente e regolare: la versione N+1 differisce dalla versione N solo per:

    1) per piccoli aggiustamenti sintattici, la cui documentazione la si trova ben spiegata sul sito
    2) aggiornamenti/aggiunte nella libreria standard (che e' immensa), anche questi ben spiegati sul sito.

    Quindi, e questione di qualche ora (o meno) passare dalle conoscenza della versione N alla N+k

    In questo caso,

    1) i libri consigliati sarebbero (da Amazon.it), nell'ordine
    - 'Il linguaggio Java. Manuale ufficiale' della Sun (ora acquistata dalla Oracle). Ma e rimasto moolto indietro (2006, quindi Java 5, visto che Java 6 e' uscita in dicembre di quell'anno)
    - 'Thinking in Java' ma essendo del 2006, Java 5

    2) per ora saltiamo

    3) 'Java. La guida completa' di Herbert Schildt, ma essendo del 2012 dovrebbe arrivare solo a Java 7. Ma e' della Mc Graw Hill ( )

    http://www.amazon.it/Concetti-informatica-fondamenti-Java-Horstmann/dp/8838786305/ref=sr_1_6?s=books&ie=UTF8&qid=1398826481&sr=1-6&keywords=java

    Questo dovrebbe andare bene, ma tratta Java 7

    4) saltiamo anche questa

    5) ultima soluzione: l'autore e' italiano ( ) ma tratta l'ultima versione di Java ( ), e' della Hoepli ( )

    http://www.amazon.it/Manuale-Java-Claudio-Sio-Cesari/dp/8820362910/ref=sr_1_11?s=books&ie=UTF8&qid=1398826481&sr=1-11&keywords=java

    Invece i testi della APOGEO (http://www.amazon.it/Java-8-Pellegrino-Principe/dp/8850333080/ref=pd_sim_sbs_b_2?ie=UTF8&refRID=0C7NJHFEQSMCFQJJ8Z19) non mi hanno mai convinto del tutto
  • Re: Basi per la programmazione

    Quindi come pensavo le differenze sono solo alcune migliorie apportate.
    Quindi penso di optare per un libro sulla versione 6 o 7 e in caso aggiornarmi alla 7/8.
  • Re: Basi per la programmazione

    migliorabile ha scritto:


    ...
    Sulle reti (firewall, database, server, router/modem, etc.) hai anche per questo campo un libro da consigliarmi?
Devi accedere o registrarti per scrivere nel forum
25 risposte