WinTricks Forum

WinTricks Forum (http://forum.wintricks.it/index.php)
-   Programmazione (http://forum.wintricks.it/forumdisplay.php?f=21)
-   -   Richiesta informazioni generiche (http://forum.wintricks.it/showthread.php?t=164796)

Dubbioso 21-10-2015 00.39.05

Richiesta informazioni generiche
 
Salve sono Dubbioso dalla provincia di Catanzaro, mi sono iscritto al Forum parecchi mesi fa e raramente vi accedo anche se comincio a rendermi conto che questo è un posto ideale per chi vuole imparare o incrementare le proprie conoscenze informatiche. Ed ecco che vengo al punto.
Supponiamo che io voglia diventare un programmatore senza però sapere nulla di programmazione :fool: a parte un po' del vecchio HTML 4.0; supponiamo, anzi diciamo che per motivi familiari, di età (ho 42 anni!) e non ultimi economici, io non possa frequentare una facoltà di ingegneria informatica e che io voglia quindi diventare un "programmatore autodidatta". Da quali letture (libri) dovrei partire per avere una conoscenza di base ampia e solida? Una volta acquisita quest'ultima, si pone il problema del fatto che ci sono molti linguaggi di programmazione e che a volte le aziende richiedono a uno stesso programmatore di conoscere più linguaggi di programmzione (forse troppi). Quali sono i più richiesti dal mercato? In quale dovrei specializzarmi? I linguaggi di programmazione sono legati da un minimo comune denominatore oppure la logica del programmare cambia completamente da linguaggio a linguaggio? Se qualcuno ha voglia di rispondere anche molto sinteticamente gliene sarò molto grato... :help2:

LoryOne 21-10-2015 11.36.32

Rif: Richiesta informazioni generiche
 
In breve:

"Da quali letture (libri) dovrei partire per avere una conoscenza di base ampia e solida? "
La conoscenza di base non può essere ne ampia ne solida.
Per averla di base ti basta cercare su internet siti che trattino di componentistica hardware di un pc e di come siano interconnessi.
Avendo la base, puoi tranquillamente acquistare un qualsiasi libro che tratti un linguaggio ricco di esempi che dovrai forzatamente mettere in pratica, visto che la programmazione si fa alla tastiera.
Esistono due approcci alla materia: Dal basso verso l'alto e viceversa.
All'università si tratta quella dal basso verso l'alto (la programmazione è l'ultimo gradino, il più semplice), mentre io ti consiglio quella dall'alto verso il basso, il che significa utilizzare un linguaggio semplice che ti dia soddisfazione sia nell'apprendere sia nei risultati ottenuti.
Tu hai già 42 anni, quindi imparare per fare in fretta ed entrare nel mondo del lavoro non può essere una priorità, mentre può esserlo l'hobbistica.
Nel campo dell'informatica, a 42 anni sei uno che sfrutta le capacità di gente giovane che lavora per te e che coordini grazie alle competenze e conoscenze che tu hai acquisito ed affinato da più di 20 anni.

"ci sono molti linguaggi di programmazione e che a volte le aziende richiedono a uno stesso programmatore di conoscere più linguaggi di programmzione (forse troppi). Quali sono i più richiesti dal mercato? "
Il mercato si divide tra chi rende le cose semplici, chi le mette in pratica e chi ne fruisce per ricavare profitto.
La programmazione professionale rende semplici le cose complesse per la programmazione semi-amatoriale; Per fartela breve, creare un app per cellulari è ormai programmazione per bambini; A monte, però, c'è grande professionalità settoriale e multidisciplinare.
Ricorda che il mercato è ormai saturo di applicazioni e trovare quella rivoluzionaria è un discorso utopistico.

"I linguaggi di programmazione sono legati da un minimo comune denominatore oppure la logica del programmare cambia completamente da linguaggio a linguaggio?"
La logica è sempre la stessa perchè ogni linguaggio è legato alla logica funzionale dell'hardware che pilota, quel che cambia è la sintassi, le "regole grammaticali" quando scrivi il codice; c'è poi un discorso legato all'ambito che varia da linguaggio a linguaggio perchè uno è più congeniale e completo dal punto di vista del set di istruzioni rispetto ad un altro.

Se cerchi sul forum, l'argomento che tu hai segnalato lo abbiamo già trattato in passato con molte più informazioni di quelle fin'ora elencate.

Dubbioso 21-10-2015 15.00.56

Rif: Richiesta informazioni generiche
 
Grazie mille LoryOne per il tempo che mi hai dedicato con la tua risposta. La cosa che mi stupisce nella tua risposta è che nell'ambito della programmazione, come tu mi informi, è coinvolto anche l'hardware della macchina, mentre io pensavo che programmare fosse una cosa esclusivamente "software", totalmente slegata dall'hardware! A questo punto mi chiedo come programmazione e hardaware interagiscano :dntknw: Mi sa che devo fare un lunga ricerca sul forum... :mm:

Dubbioso 04-04-2017 05.10.33

Rif: Richiesta informazioni generiche
 
LoryOne ha scritto: "Nel campo dell'informatica, a 42 anni sei uno che sfrutta le capacità di gente giovane che lavora per te e che coordini grazie alle competenze e conoscenze che tu hai acquisito ed affinato da più di 20 anni." Certo quello che dici è vero ma così mi fai cadere le braccia :cray: Ultimamente ho chiesto aiuto con un mio post rigurdo al linguaggio HTML.
Il sito digitalic.it ha stilato una lista dei venti linguaggi di programmazione più popolari nel 2017 e venti linguaggi sono tanti! Così avrei deciso di limitare il mio apprendimento ai soli linguaggi rivolti alla programmazione delle pagine web.
Prima domanda (che faccio a chi vorrà rispondere): oltre al linguaggio HTML quali altri linguaggi di programmazione devo imparare per il web? E per il web su dispositivi mobili?
Seconda domanda: Per programmare in ambito web (e non solo), bastano le risorse del mio PC o necessito di altri software come per es. gli editor HTML?
Terza domanda Cosa si intende per compilare un programma? Cosa sono i compilatori?
Infine non ho capito il nesso tra hardware e programmzione a cui faceva riferimento LoryOne :confused:. Un grazie anticipato a chi vorrà rispondere, spero in maniera elementare anche se breve...

LoryOne 04-04-2017 10.14.48

Rif: Richiesta informazioni generiche
 
Secondo me, faresti bene a studiare ASP,JSP,PHP,SQL e Perl
Certo è che dovrai mettercene di tempo per imparare, anche perchè la pratica supera di gran lunga la teoria e la realizzazione di un sito web, spesso vede l'impiego di più di un linguaggio sinergico.
Per il web sui dispositivi mobili, non saprei...il sito che hai segnalato ne da comunque un'indicazione.

La programmazione in qualsiasi ambito necessita di ben poche risorse, salvo che queste non siano necessarie a testare il proprio lavoro in ambito web; Considera che la maggior parte delle risorse viene impiegato lato server su macchine dedicate e spesso il client ottiene informazioni già predisposte da esse quando è on-line, ma come vengono gestite lato client attraverso un'interfaccia leggera è cio che conta maggiormente.
Gli editor HTML sono un aiuto rivolto a chi già conosce il linguaggio: Avere uno script pronto, ma non saperlo leggere ed alleggerire, equivale ad essere veloci nella realizzazione, ma lenti nella manutenzione e nell'identificazione delle falle nella sicurezza.

I compilatori sono quelle utilities che traducono un linguaggio leggibile dall'utente in uno gestibile dalla macchina. Compilare un programma, in pratica, significa tradurre un qualsiasi linguaggio di programmazione in linguaggio macchina senza bisogno di interprete.
Con l'interprete: Io scrivo il programma, l'interprete lo traduce riga per riga e lo manda in esecuzione secondo la logica dello script
Senza l'interprete: Io scrivo il programma, il compilatore lo traduce dalla prima all'ultima riga e lo manda in esecuzione secondo la logica funzionale dell'hardware su cui gira.
Decisamente più veloce e performante.

Il nesso tra hardware e programmazione è legato a quante sottoistruzioni derivano da quella in esame per ottenere la funzione indicata nello script: Esistono linguaggi di alto o basso livello in base al numero di sottoistruzioni che il programmatore necessita richiamare o meno in base al set di istruzioni che la macchina ha a disposizione per eseguire operazioni elementari: L'assembly è il linguaggio di più basso livello, cioè quello più vicino al modo di operare dell'hardware: Operazioni elementari in rapida sequenza secondo un ordine fisso e prestabilito.

borgata 04-04-2017 13.50.32

Rif: Richiesta informazioni generiche
 
Provo ad essere breve:

A mio parere non c'è età per iniziare: c'è però da dire che quando sei giovane hai molte più energie, quindi iniziare alla tua età non è facile, ma non impossibile. Te ne renderai conto.
C'è poi da dire che la curva di apprendimento quando lavori è molto più ripida (e quindi rapida) rispetto a quando studi, ma è importante che qualcuno ti guidi, altrimenti rischi di imparare nel modo sbagliato (o obsoleto).

Io ritengo che un minimo di basi teoriche siano assolutamente necessarie: non puoi pensare di creare software un minimo complessi da smanettore, l'approccio "dal basso all'alto" (come già citato) a mio parere è fondamentale perchè devi assolutamente capire cosa stai facendo e non procedere per tentativi. Devi padroneggiare ciò che stai facendo.

I linguaggi di programmazione sono solo la sintassi, e quella si impara in fretta.
Esistono delle "categorie": linguaggi procedurali, ad oggetti, funzionali... ogni categoria necessità un po' di "forma mentis" per essere appresa, quindi teoria ed esercizi.
Una volta che entri nella "mentalità" di una certa categoria di linguaggio, apprendere il linguaggio vero e proprio è questione di apprendere le differenze e fare pratica.
Parlando di casi reali, un linguaggio di programmazione può includere funzionalità appartenenti a più categorie, che risultano utili in diversi casi. In definitiva, prima o poi bisogna approcciarsi alle varie tipologie di linguaggio, apprendere i linguaggi è alla fine un processo incrementale.
Infine, è bene notare che apprendere un linguaggio non significa saper programmare bene in quel linguaggio: bisogna apprendere le API, ossia il software a corredo del linguaggio che viene fornito per estenderne le funzionalità e rendere più accessibili procedure altrimenti complicate. Di fatto si programma sulle API, ovviamente avendo conoscenza dei linguaggi, dei loro limiti e dei trucchetti.

Software e Hardware: dipende dal tipo di software che intendi progettare.
Con l'evoluzione dell'informatica i linguaggi di programmazione sono diventati sempre più ad alto livello (ossia sempre più distanti dall'hardware), spostando l'onere dell'ottimizzazione sui compilatori.
In generale un software che richieda prestazioni elevate necessita di un po' di programmazione a basso livello, che è difficile e richiede conoscenza dell'hardware (e taaaanta esperienza). C'è però da dire che l'evoluzione dei compilatori oggi è spesso in grado di ottimizzare più di quanto riesca a fare lo sviluppatore software medio.
I vantaggi di un approccio lontano dall'hardware sono diversi: velocità di produzione, meno errori madornali nel software e quindi maggiore sicurezza, portabilità del software (ossia non essere legati ad uno specifico hardware o ecosistema), ecc... Di contro, hai meno controllo su quello che fai (non sempre è un male :p ) e talvolta non è sufficiente se vuoi ottenere un certo livello di prestazioni (per questo quasi tutti i linguaggi prevedono qualche clausola per inserire del codice di basso livello all'interno dei programmi).
In definitiva, avere una conoscenza dell'hardware, almeno di base, è sempre utile, ma programmare oggi non richiedere conoscenza approfondita dell'hardware in molti casi.

Ah, la "compilazione" non è altro che il processo di conversione del codice dal linguaggio in cui è stato scritto dal programmatore al linguaggio che la macchina è in grado di comprendere (in modo diretto o indiretto). Non tutti i linguaggi vengono compilati, altri vengono interpretati, in altri casi abbiamo diverse vie di mezzo (come il bytecode java, per citare forse il più famoso) o il supporto a più modalità.

Ad ogni modo quello della programmazione è un campo vasto e in continua evoluzione, se pensi di avvicinarti a questo mondo sappi che è un continuo studiare ed aggiornarsi.
Nel tuo caso è anche un continuo incrementare le tue conoscenze di base (non puoi certo sperare di imparare tutto il necessario in una volta sola) dato che hai ancora necessità di creare questa base e farti una visione sufficientemente chiara della situazione.
Il mio consiglio è anche quello di leggere qualche testo (anche universitario) come "lettura" informatica (non da studiare, sarebbe molto più pesante), perchè una buona lettura può aiutarti molto nel chiarirti le idee. Magari se lo recupero te ne consiglio uno che mi era piaciuto.

EDIT: ecco, volevo essere breve! :p

LoryOne 04-04-2017 16.58.06

Rif: Richiesta informazioni generiche
 
Dubbioso...I libri sono una risorsa insostituibile: Cio che trovi in internet è solo un compendio, mentre i libri da consultare li troverai anche sul posto di lavoro.
Ti consiglio, quindi, di spendere per acquistare il cartaceo, leggerlo e sperimentare alla tastiera riscrivendo ed eseguendo il codice che troverai per argomento, anche se spesso il CD allegato contiene già il file predisposto; Scrivere fissa nella mente più di quanto lo faccia leggere.
Ricorda che la teoria è sempre necessaria alla progettazione, ma la realizzazione la si compie alla tastiera ed avere conoscenze multilinguaggio, spesso integra e sorpassa i limiti di quello scelto o imposto, pur mantenendo inalterata la fase progettuale.

Dubbioso 04-04-2017 21.58.37

Rif: Richiesta informazioni generiche
 
Grazie per le vostre risposte LoryOne e borgata, non credevo fosse così complicato. Si penso anche io che il cartaceo non possa essere sostituito da internet...Quando incominciai a imparare l'HTML ho avuto la fortuna di avere un manualetto che partiva da zero, perché io da zero parto e realizzavo pagine web completamente "a mano" cioè stringa per stringa. Vedo su internet (magari su Google books) se c'è un testo che parli di programmazione in generale, "for beginners" naturalmente...

Nuklear 26-07-2017 11.25.19

Rif: Richiesta informazioni generiche
 
A mio avviso quello che ti interessa ora è imparare la programmazione ovvero i costrutti base (sequenza, iterazione alternativa,procedura, funzione, ecc.), aldilà del linguaggio che andrai ad imparare, e questi concetti li puoi apprendere da qualsiasi testo scolastico delle superiori ad indirizzo informatica. Se fai un giro sui siti delle relative case editrici, puoi anche acquistare le versioni ebook dei testi a prezzi davvero irrisori (circa 15-30 euro).
Non ti scaricare i vari tutorial dalla rete perché alcuni sono fatti male, altri partono fatti bene, ma partono da livelli un po' più avanzati, i testi scolastici invece sono i migliori dal punto di vista didattico, perché quello che interessa te è questo ora: imparare la programmazione didatticamente non professionalmente, quello viene dopo con la pratica e l'esperienza.
In bocca al lupo.


Orario GMT +2. Ora sono le: 21.16.11.

vBulletin 3.8.6 - Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.