Qualcuno che come me studia C?

Ficuligna

Nuovo Utente
6
2
Hola, come da premessa cerco qualcuno con cui poter condividere il percorso di studio. Ho avuto esperienze simili e ho notato che questa pratica è molto proficua. Sto studiando C da un mesetto circa, un po meno in realtà. Mi sono imbattuto nello "scoglio" dei puntatori, ma sembra che lo abbia superato più meno bene. I mie problemi sono più che altro legati alla memoria, quella mia non quella da allocare xD. Qualcuno che sta facendo lo stesso percorso? qualcuno che vuole incoraggiarmi? Ce n'è bisogno XD
 
U

Utente 16812

Ospite
Non credo di aver compreso bene cosa s'intenda per "problemi legati alla memoria" ma a mio giudizio un "mesetto" non è sufficiente ad acquisire la necessaria metodologia di lavoro, a partire da temi tipici dell'ingegneria del software quali la programmazione strutturata e la struttura dei dati, che costituisce poi la base della corretta stesura di un programma, soprattutto se il C è il primo linguaggio di programmazione studiato :sisi:
E' richiesto uno "sforzo" di analisi non indifferente che implica una diversa "visione" di approccio al problema: occorre analizzare il problema, scomporlo in sottoproblemi secondo la metodologia top-down, per ciascun sottoproblema ricavare la soluzione, formalizzare la soluzione e infine "tradurla" nel linguaggio di programmazione prescelto, utilizzando gli strumenti tipici dell'ingegneria del software.
Porsi di fronte ad un elaboratore, avendo un determinato problema da risolvere, è inconcludente se non si "padroneggiano" tali strumenti :sisi:
Abituati a trovare un modo di analizzare e risolvere un problema "a tavolino", ancor prima di metterti di fronte ad una tastiera, senza "subire" le soluzioni "imposte", reperite su Internet o sui libri di testo, proponi le tue personali soluzioni e valuta quella ottimale (che non necessariamente corrisponde a quella migliore).
In questo contesto sono imprescindibili l'interesse e il desiderio di "sfida", il porsi sempre criticamente di fronte ad un problema e mettere in discussione le soluzioni trovate sono questioni non banali ;)

P.S. Può essere utile quest'altro mio intervento:
https://forum.tomshw.it/threads/gioco-di-snake-in-c.639967/post-6157025 :ok:
 

pabloski

Utente Èlite
2,868
916
Sto studiando C da un mesetto circa

Beh, intanto a che livello stai studiando C? Università? Scuole superiori? Per cosa ti si chiederà di usarlo? Che livello di abilità si pretende tu abbia?

nello "scoglio" dei puntatori, ma sembra che lo abbia superato più meno bene. I mie problemi sono più che altro legati alla memoria

Il che mi fa pensare che stai letteralmente studiando, cioè leggendo come si fa col capitolo di storia. Ma lo usi? Ci scrivi i programmi? Perchè in quel caso, la memoria vien da sè. Difficile non memorizzare i dettagli di qualcosa che usi giorno dopo giorno.
 
U

Utente 16812

Ospite
L'informatica è un po' come la matematica: non si può conoscere la matematica se non si svolgono esercizi e non si risolvono problemi, si possono "trangugiare" migliaia di pagine di teoria ma poi di fronte ad un banalissimo problema non si "cava" un ragno dal buco :asd:
La memoria si allena "facendo" e "sapendo" cosa si fa, non sono affatto persuaso del fatto che nel "giro" di un mese scarso si possa "pervenire" alla buona conoscenza dell'aritmetica dei puntatori, tenendo conto degli argomenti "a monte" legati alla definizione di strutture di dati e alla stesura dell'algoritmo, a meno che lo studio del C non si affronti come si fa con un "romanzetto" da leggere sulla spiaggia :D
Quando si affrontano argomenti complessi come la programmazione occorre essere molto "puntigliosi" nell'apprendimento e soprattutto essere dotati di ottime capacità di organizzazione ;)
 
  • Mi piace
Reazioni: Andreagamer1999

Ficuligna

Nuovo Utente
6
2
Beh, intanto a che livello stai studiando C? Università? Scuole superiori? Per cosa ti si chiederà di usarlo? Che livello di abilità si pretende tu abbia?



Il che mi fa pensare che stai letteralmente studiando, cioè leggendo come si fa col capitolo di storia. Ma lo usi? Ci scrivi i programmi? Perchè in quel caso, la memoria vien da sè. Difficile non memorizzare i dettagli di qualcosa che usi giorno dopo giorno.
Ciao e grazie per la risposta! Studio da autodidatta, ho 28 anni... gli anni delle superiori sono un lontano ricordo putroppo! E studio semplicemente perché mi piace l'argomento, nessun livello di abilità preteso. Certo, mi piacerebbe che questo linguaggio divenisse il mio lavoro, ma darò il tempo necessario affinché ciò accada. Ho iniziato lo studio della programmazione in generale circa 6 mesi fa, so di essere molto " giovane" nell'ambiente non pretendo molto. Cerco infatti qualcuno con cui poter confrontare ciò che man mano apprendo :) grazie a tutti per le risposte
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,222
1,853
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
Ciao e grazie per la risposta! Studio da autodidatta, ho 28 anni... gli anni delle superiori sono un lontano ricordo putroppo! E studio semplicemente perché mi piace l'argomento, nessun livello di abilità preteso. Certo, mi piacerebbe che questo linguaggio divenisse il mio lavoro, ma darò il tempo necessario affinché ciò accada. Ho iniziato lo studio della programmazione in generale circa 6 mesi fa, so di essere molto " giovane" nell'ambiente non pretendo molto. Cerco infatti qualcuno con cui poter confrontare ciò che man mano apprendo :) grazie a tutti per le risposte

In bocca al lupo per il nuovo percorso intrapreso, innanzitutto!

Detto ciò aggiungo però che C non è di certo tra i linguaggi generalmente più richiesti al giorno d'oggi. Viene utilizzato in ambiti molto specifici, che spesso richiedono anche tante altre competenze trasversali (sto pensando ad esempio all'ambedded e/o all'IoT).
Certamente da qualche parte si deve pur iniziare, e C secondo me va bene, se sei davvero determinato. E' anche uno dei pochi che ti mette di fronte ai puntatori ed alla gestione della memoria.
E' "piccolo" e richiede molto più tempo per essere utilizzato decentemente rispetto al tempo che ci vuole a studiarlo sul libro.
Detto ciò, come sempre, l'aspetto più importante è entrare nella logica giusta della programmazione, che prescinde dal linguaggio che andrai ad utilizzare.
L'utilizzo, come già detto dagli altri che sono intervenuti, è fondamentale, diversamente non saprai programmare.

Se la tua idea è avvicinarti al mondo lavorativo, permettimi di suggerirti il mondo del Web (front-end o back-end che sia).

Detto ciò in realtà non ho ancora ben capito quale sia la domanda o la serie di risposte che stai cercando. Sicuramente comunque in caso di domande, dubbi, necessità di chiarimenti... troverai qualcuno che saprà risponderti. ;)
 
  • Mi piace
Reazioni: BAT

Ficuligna

Nuovo Utente
6
2
In bocca al lupo per il nuovo percorso intrapreso, innanzitutto!

Detto ciò aggiungo però che C non è di certo tra i linguaggi generalmente più richiesti al giorno d'oggi. Viene utilizzato in ambiti molto specifici, che spesso richiedono anche tante altre competenze trasversali (sto pensando ad esempio all'ambedded e/o all'IoT).
Certamente da qualche parte si deve pur iniziare, e C secondo me va bene, se sei davvero determinato. E' anche uno dei pochi che ti mette di fronte ai puntatori ed alla gestione della memoria.
E' "piccolo" e richiede molto più tempo per essere utilizzato decentemente rispetto al tempo che ci vuole a studiarlo sul libro.
Detto ciò, come sempre, l'aspetto più importante è entrare nella logica giusta della programmazione, che prescinde dal linguaggio che andrai ad utilizzare.
L'utilizzo, come già detto dagli altri che sono intervenuti, è fondamentale, diversamente non saprai programmare.

Se la tua idea è avvicinarti al mondo lavorativo, permettimi di suggerirti il mondo del Web (front-end o back-end che sia).

Detto ciò in realtà non ho ancora ben capito quale sia la domanda o la serie di risposte che stai cercando. Sicuramente comunque in caso di domande, dubbi, necessità di chiarimenti... troverai qualcuno che saprà risponderti. ;)


Ciao e grazie anche a te! Lavoro gia come web dev, utilizzo ovviamente altri linguaggi. E la tua risposta mi è piaciuta molto perché ho scelto di studiare C proprio per avvicinarmi ai plc. Chiedevo soltatnto se ci fosse stato uno studente di C che volesse condividere con me il percorso (materiale utilizzato, progetti su cui lavorare, esercitazioni, confronti etc). Ho avuto gia esperienza di questo tipo con altri studenti e devo dire che la collaborazione è molto più istruttiva dello studio in autonomia, tutto qui.
 

Matteo34

Nuovo Utente
104
3
CPU
i5-10500 3.2Ghz
Dissipatore
Non specificato
Scheda Madre
Non specificata
HDD
M.2 251GB e M.2 500GB
RAM
16GB DDR4 2666mhz
GPU
Grafica Intel® UHD 630
Audio
Non specificata
Monitor
1920x1080 27"
PSU
Non specificato
Case
Non specificato
Periferiche
Nono specificato
Net
Eolo
OS
Ubuntu
Hola, come da premessa cerco qualcuno con cui poter condividere il percorso di studio. Ho avuto esperienze simili e ho notato che questa pratica è molto proficua. Sto studiando C da un mesetto circa, un po meno in realtà. Mi sono imbattuto nello "scoglio" dei puntatori, ma sembra che lo abbia superato più meno bene. I mie problemi sono più che altro legati alla memoria, quella mia non quella da allocare xD. Qualcuno che sta facendo lo stesso percorso? qualcuno che vuole incoraggiarmi? Ce n'è bisogno XD
Hai trovato la persona con la quale intraprendere il tuo percorso?
Io sono un ragazzo che studia informatica alle superiori, con precisione vado in 2 superiore;
Ho studiato gli algoritmi, la logica booleana, il linguaggio C è il linguaggio con la quale abbiamo iniziato, ecc...
ovviamente ho ancora molto da imparare;
se vuoi sono qui!!
 

ilcammino

Nuovo Utente
98
2
Per i puntatori in C devi semplicemente ricordare una cosa, come si usano e cosa fanno gli operatori * e & .
C:
// esempio

int numero = 10; // dichiarazione di una variabile di tipo intero contenente il valore 10

int *p_numero; // variabile di tipo puntatore a intero

p_numero = № // l'operatore & assegna l'indirizzo di memoria a p_numero.

Inoltre per i principianti è fondamentale il libro di testo, io ai tempi usai questo: C. Corso completo di programmazione della Deitel, l'edizione è indifferente basta che non sia troppo datato, fai tanti esercizi con carta e penna, non imparare a memoria, non usare ambienti di sviluppo ma limitati ad un editor per la programmazione e il terminale.
In bocca al lupo .
 

Andretti60

Utente Èlite
6,440
5,091
Per i puntatori in C devi semplicemente ricordare una cosa, ...
Scusa ma la stai facendo troppo semplice, specialmente per uno che inizia, bisogna dirlo subito che l’uso dei puntatori sia la cosa più complicata che esista (infatti sono scomparsi del tutto nei linguaggi di programmazione moderni) e che creano grattacapi anche nei programmatori più esperti. Purtroppo per chi usa C/C++ non se ne scampa, bisogna usarli per forza.
 
  • Mi piace
Reazioni: Mursey

ilcammino

Nuovo Utente
98
2
Scusa ma la stai facendo troppo semplice, specialmente per uno che inizia, bisogna dirlo subito che l’uso dei puntatori sia la cosa più complicata che esista (infatti sono scomparsi del tutto nei linguaggi di programmazione moderni) e che creano grattacapi anche nei programmatori più esperti. Purtroppo per chi usa C/C++ non se ne scampa, bisogna usarli per forza.
Ai tempi dell'università c'era questo "mantra" che recitava esattamente così: " I puntatori sono molto difficili ".
Quella frase ha fatto solo danni nella mia testa e chissà a quanti altri ancora, chi si approccia per la prima volta alla programmazione deve capire che concettualmente sono semplici e che sono il cuore dell'informatica! quindi vanno studiati e capiti inoltre i moderni linguaggi di programmazione hanno reso più sicuro il loro uso, ma saranno sempre sotto al cofano di un linguaggio di programmazione.
 

Andretti60

Utente Èlite
6,440
5,091
Il problema non è che siano concettualmente facili o difficili, come tutti gli argomenti scolastici sono facili se sono insegnati bene. No, il problema è un altro. È usarli. Direi che la maggior parte del mio tempo passato a fare debugging in C/C++ è trovare e sistemare quei dannati memory leak.
 

pabloski

Utente Èlite
2,868
916
Direi che la maggior parte del mio tempo passato a fare debugging in C/C++ è trovare e sistemare quei dannati memory leak.

Vecchie codebase in C++?

Per fortuna il comitato che sovrintende lo sviluppo di C++ l'ha capita. Da C++ 11 in poi, le cose sono migliorate sotto questo profilo. E l'uso diretto dei puntatori è sconsigliato. La best practice è seguire fanaticamente il paradigma RAII. Che poi è la stessa cosa che fanno linguaggi "più evoluti" come Go o Rust.

Devo dire che tra smart pointers, range, constexpr, auto, lambda, finalmente un valore ben definito per null e ovviamente il multithreading, C++ mi sta piacendo di nuovo.
 
  • Mi piace
Reazioni: Andretti60

Andretti60

Utente Èlite
6,440
5,091
Vecchie codebase in C++?

Per fortuna il comitato che sovrintende lo sviluppo di C++ l'ha capita. Da C++ 11 in poi, le cose sono migliorate sotto questo profilo. E l'uso diretto dei puntatori è sconsigliato. La best practice è seguire fanaticamente il paradigma RAII. Che poi è la stessa cosa che fanno linguaggi "più evoluti" come Go o Rust.

Devo dire che tra smart pointers, range, constexpr, auto, lambda, finalmente un valore ben definito per null e ovviamente il multithreading, C++ mi sta piacendo di nuovo.
Esatto, parlo di codice scritto usando la vecchia libreria ATL per creare oggetti COM. Ma di fatto neppure RAII e Smart Pointer assicurano che un programma non sia affetto da memory leak, non per nulla esistono diversi approcci. Quando poi si scrivono librerie che altri moduli possono usare le cose diventano pazze. Di fatto qualsiasi codice che non sia RAII crea problemi, ossia quando un puntatore viene usato in più moduli. Ben venga il garbage collector e la morte dei puntatori. Purtroppo non se ne può fare a meno quando si usano piccoli compilatori per dispositivi runtime.
Ne posso raccontare di storie sulla locazione di memoria selvaggia, incluso problemi con la funzione free() della libreria GNU... Ovviamente non sto parlando di piccoli programmi, bensì di applicazioni (tipo servizi) che devono girare per giorni e giorni 24 ore al giorno, dove memoria viene continuamente allocata e deallocata; anche un piccolo memory leak è catastrofico.
E questo problema non vale solo per allocazione di memoria, ma per ogni risorsa che viene creata/distrutta.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili