Continuare a imparare

Lam

Utente Èlite
2,354
290
Salve

Ho letto molte guide e articoli sul giusto approccio all'apprendimento della programmazione,e successivamente ho iniziato ad imparare i primi rudimenti come le differenze fra i vari linguaggi,i costrutti di base...

La ragione per cui voglio iniziare ad addentrarmi in questo ambito non è tanto perchè ho idee per creare applicazioni,ma perchè mi piacerebbe essere in grado di leggere il codice sorgente di ciò che uso,ed avere un'idea di come il software sia creato

Ho letto i principi dell'ingegneria del software(come ciclo di vita del sw,modelli di sviluppo...)

Il problema è: ho superato la fase "non so da dove iniziare",ma sono fondamentalmente un completo ignorante per quanto riguarda lo scrivere codice.

Non sono il principiante che si aspetta di imparare "tutto" in fretta,ma fondamentalmente sono ad un punto in cui fatico a trovare risorse al mio livello. O sono troppo semplici,o troppo avanzate
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,239
5,668
mi piacerebbe essere in grado di leggere il codice sorgente di ciò che uso,ed avere un'idea di come il software sia creato
Cosa intendi ?
Un eseguibile è un file binario, al massimo puoi vedere il codice non offuscato .net o script di pagine web non minificate.
Quello che vuoi fare casca a pennello per il codice open source ma i prodotti commerciali nascondono tutto.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Ti porto la mia esperienza, che risale ad una decina di anni fa.

Anni fa frequentavo forum più piccoli, le classiche comunità - che in pratica non esistono più - dove gli utenti erano una comunità, e non un help desk (ed i social erano nati da poco); ti parlo del 2007 circa.
Su questi forum vedevo postare sorgente scritto in un qualche linguaggio, che risolveva un determinato problema (oppure che agevolava lo svolgimento di compiti). Questa è stata la molla che mi ha spinto: volevo leggere e capire quel codice, ed essere in grado di realizzare qualcosa.

Io iniziai dal Java. Non sapevo nemmeno esistesse l'ingegneria del software, non sapevo esistesse Git, non sapevo esistessero strutture dati o l'analisi di algoritmi, etc etc.

La scelta del linguaggio spetta a te. Il consiglio è di scegliere un C-like ed evitare linguaggi interpretati (specie web lato client, tipo JS... ). Non per ragioni da fan boy, quanto più per ragioni di apprendimento: Python ha una curva di apprendimento breve rispetto ad altri linguaggi C like. Il "problema" è che ti perdi un sacco di aspetti più vicini alla macchina, che, ad esempio, usando C non puoi ignorare. Python lo puoi apprendere dopo, con meno fatica, in quanto hai già basi un po' più complete in altro.

Alla fine l'aspetto principale è la mentalità, il ragionamento, l'arte di risolvere un problema. La codifica può essere fatta in qualsiasi linguaggio (ovviamente la scelta di norma dipende dal tipo di problema, tranne se lavorerai in aziende che usano una determinata tecnologia, ma è un altro discorso).

Il resto viene dopo: algoritmi, strutture dati etc. Puoi dedicarti allo studio di altro, come architettura del calcolatori e sistemi operativi.,oltre che alle basi di dati.
Poi il settore è vasto, ci sono argomenti che puoi affrontare dopo, quando hai più competenze.

Tornando alla programmazione: scelto il l'ingaggio, non limitarti a studiarlo. Usalo, fai esercizio, inventati qualcosa o cerca esercizi anche online.

Riguardo al software che usi, come dice mursey, il codice è compilato e viene trasformato in codice macchina. Un debugger (o un disassembler) ti permettono di vedere quel codice rappresentato in assembly (sorvolando poi sulle protezioni che puoi trovare).

Ps. Chiedo venia per la digressione, mi sono forse lasciato andare... :D
 

icox

Utente Attivo
497
246
sono ad un punto in cui fatico a trovare risorse al mio livello. O sono troppo semplici,o troppo avanzate
A mio modesto parere, chi si ritrova in una situazione del genere (assolutamente normale all'inizio) e' perche' non ha sufficiente esperienza e dimestichezza con gli strumenti utilizzati per capire gli argomenti piu' avanzati, oppure non ha davvero compreso a fondo alcuni concetti e risulta quindi difficile applicarli/rielaborarli in contesti specifici (a me e' successo spesso e mi capita ancora),
Nel primo caso devi iniziare a sporcarti le mani, applicare quanto appreso e vedrai che poco per volta i risultati arrivano. Poniti un obiettivo, scegli un linguaggio che possa fare quello che cerchi e mettiti sotto a scrivere.
Nel secondo caso... beh tocca tornare sui libri e magari fare un po' di esercizi per fissare le idee.


mi piacerebbe essere in grado di leggere il codice sorgente di ciò che uso,ed avere un'idea di come il software sia creato
Partendo dal pressuposto che tu stia parlando di software aperto, questo e' piuttosto ambizioso e ci vorranno mesi/anni di duro lavoro. A meno che non si stia parlando di piccole librerie/script pescate su qualche git, un software "maturo" puo' essere anche molto sofisticato e per capirlo nel dettaglio occorre avere una certa padronanza del linguaggio usato e conoscenza del contesto in cui opera. Insomma, un conto e' saper scrivere qualche riga in C, un conto e' comprendere il kernel Linux...


Che studi hai fatto/stai facendo?
 

Lam

Utente Èlite
2,354
290
Grazie delle molte risposte
Primo:non ho ambizioni così grandi,non è nient'altro che un hobby.
Secondo:parlo di open source
Non mi prefiggo di realizzare nulla di più complesso di semplici script,ma l'obbiettivo è,prima di tutto,avere un'idea generale di come si programma.
Il principale problema è appunto il non essere interessati al creare applicazioni,non tanto per mancanza di abilità tecniche(i linguaggi e le strutture dati possono essere imparati con il tempo),ma per mancanza di..."creatività" nella risoluzione del problema
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,239
5,668
ma per mancanza di..."creatività" nella risoluzione del problema
Non sono sicuro di aver capito cosa intendi ma se parli di soluzione dei problemi è un qualcosa che si impara con la pratica.
Quindi il punto è che se vuoi diventare uno che conosce la materia devi sviluppare tu stesso.
La sola teoria in questo ambito non porta da nessuna parte, solo a conoscenze superficiali che a lungo andare non daranno soddisfazione.
 

Lam

Utente Èlite
2,354
290
Il secondo "ostacolo" sono le preferenze:c'è chi dice che i manuali cartacei sono migliori,chi preferisce siti e prendere gli esercizi online,chi video tutorial...stessa cosa per i linguaggi,ma per quello è un po' più semplice orientarsi

Se si chiede "quale è il miglior modo di imparare <nome linguaggio>?" ognuno linkerà materiale diverso...
 
Ultima modifica:

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Il secondo "ostacolo" sono le preferenze:c'è chi dice che i manuali cartacei sono migliori,chi preferisce siti e prendere gli esercizi online,chi video tutorial...stessa cosa per i linguaggi,ma per quello è un po' più semplice orientarsi

Se si chiede "quale è il miglior modo di imparare <nome linguaggio>?" ognuno linkerà materiale diverso...
Ma infatti ci sono tantissimi modi per imparare certi concetti. Ad esempio online trovi video davvero ottimi che spiegano nozioni che sui libri (che non siano da 3000 pagine) sono appena accennate, e guardacaso sono proprio quelle nozioni a cambiare il modo d’approccio al liguaggio.

Si inizia sempre con un libro in cui si imparano le basi e accennano le cose più “complesse”. Poi puoi liberamente cercare Online visto che sei in grado di ritenere delle spiegazioni ottimali o no. Ma il libro serve, perché è l’inizio che è la parte più faticosa dove cambi modo di ragionare
 
  • Mi piace
Reazioni: Lam

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,239
5,668
Io alle superiori ho avuto grossi problemi a cambiare il mio modo di ragionare perchè imparando da solo con il basic del C64 avevo preso abitudini che mal si conciliavano con la seria programmazione. Un altro rischio è quello.
 
U

Utente cancellato 110428

Ospite
Salve

Ho letto molte guide e articoli sul giusto approccio all'apprendimento della programmazione,e successivamente ho iniziato ad imparare i primi rudimenti come le differenze fra i vari linguaggi,i costrutti di base...

La ragione per cui voglio iniziare ad addentrarmi in questo ambito non è tanto perchè ho idee per creare applicazioni,ma perchè mi piacerebbe essere in grado di leggere il codice sorgente di ciò che uso,ed avere un'idea di come il software sia creato

Ho letto i principi dell'ingegneria del software(come ciclo di vita del sw,modelli di sviluppo...)

Il problema è: ho superato la fase "non so da dove iniziare",ma sono fondamentalmente un completo ignorante per quanto riguarda lo scrivere codice.

Non sono il principiante che si aspetta di imparare "tutto" in fretta,ma fondamentalmente sono ad un punto in cui fatico a trovare risorse al mio livello. O sono troppo semplici,o troppo avanzate

Guarda, io avevo praticamente il tuo stesso "problema" ed alla fine ho deciso semplicemente di non continuare. Secondo me è inutile costringersi ad imparare quando non hai nè un obbiettivo nè un forte e genuino interesse ad apprendere la materia; alla fine è un po' come girare a zonzo per come la vedo io.
sono ad un punto in cui fatico a trovare risorse al mio livello. O sono troppo semplici,o troppo avanzate
This ^^
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!