|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2013
Messaggi: 248
|
python o c, scelta "ardua"
Salve ragazzi è da circa 1 settimana che ho acquistato un libro direi scolastico (so che è usato nelle varie scuole) chiamato "Linguaggio C e C++" di Piero Gallo e Fabio Salerno. Avendolo preso usato l'ho pagato poco più di 10 euro
Da quanto ho visto tratta dei più svariati argomenti fino ad arrivare ai vari costruttori, distruttori, malloc ecc... Ora il problema qual è? Bene o male ho imparato le varie strutture di if, while, for, come creare variabili ecc... Però ho ancora un pò di difficoltà. Leggendo un pò su internet, le persone di solito consigliano ai principianti di iniziare con python per farsi un pò le "ossa". Voi cosa mi consigliate? Ho visto ieri sera un pò di python e devo dire che rispetto al C è ben altra cosa Le variabili non vanno dichiarate, non c'è l'obbligo di inserire le direttive, non c'è l'obbligo di mettere un ";" alla fine di ogni istruzione ecc..Sinceramente sono combattuto onestamente, io programmerei un pò per hobby e perchè no, magari per farne una professione (si lo so, starete ridendo ). Il mio sogno per ora è riuscire a creare un emulatore del chip-8 e del game boy. Da quanto ho visto in giro è possibile crearli anche con python nonostante esso sia un linguaggio ad alto livello e meno efficiente in termini di "prestazioni". Boh, un consiglio vostro... Una volta preso la mano con python, il C risulterà meno ostico?
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Io posso darti la mia esperienza universitaria.
Il linguaggio C è abbastanza complesso perché di basso livello, e nella mia università è cosiderato un must, tant'è che viene insegnato al primo corso di informatica (mentre python non viene quasi nemmeno mai accennato). Personalmente penso che C debba essere la base di qualsiasi programmatore, in quanto la conoscenza del C (es. la logica dei puntatori) sono preerequisiti per molti linguaggi ad oggetti ad alto livello. Piccola nota, C è un linguaggio imperativo, mentre python è ad oggetti, due linguaggi con paradigmi di programmazione completamente diversi, che con un po' di sforzo potresti imperare entrambi. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
Personalmebte consiglierei un approccio di tipo top-down. Il C è un linhuaggio a basso livello e se non hai una base di programmazione può. Rimanere difficile. Detto ciò ti consiglio di partire con un linguaggio ad alto livello per capire i fondamenti della programmazione , e poi inizi a studiare il C. Saluti
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
Quote:
|
|
|
|
|
|
|
#6 | ||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
Java è un linguaggio a oggetti fin da quando è stato concepito, eppure non c'è traccia di puntatori: come farà? Quote:
Quote:
Quote:
Ci sono altri linguaggi che mettono a disposizione il concetto di puntatore, anche da prima che nascesse il C, e non sono arrivati a quel livello di perversione. Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||||||
|
|
|
|
|
#7 |
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Per esperienza personale (e quella di amici e colleghi) posso affermare che la logica ad oggetti non è affatto immediata.
Anzi spesso causa molta confusione in coloro che si approcciano per la prima volta alla programmazione (peggio ancora se senza il supporto di docenti). Per quanto riguarda la logica dei puntatori, io l'ho trovata fondamentale per comprendere bene le logiche di passaggio di parametri nei linguaggi ad oggetti, in particolare la differenza tra indirizzamento per riferimento/valore e il passaggio di paramentri per riferimento/valore. |
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Spiegava la OOP in maniera così semplice e intuitiva, che per parecchio tempo è stato preso come riferimento per impararla. Quote:
In C servono i puntatori perché, come già detto, è un linguaggio povero, e ne deve obbligatoriamente far uso per sbrogliare problematiche che in altri linguaggi vengono, invece, risolti in maniera più semplice, elegante, comprensibile, e sicura.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
|
|
|
|
|
#9 | ||
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Quote:
Mentre ho il felicissimo ricordo del mio docente universitario, che con una semplicità inaudita mi fece comprendere praticamente tutto. Quote:
In particolare trovo particolarmente dannoso il fatto che certe cose (come i puntatori) nei linguaggi ad oggetti siano "nascoste", portando conseguentemente all'errore di ignorarle. |
||
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non sono nascosti in tutti i linguaggi. Ad esempio proprio in Turbo Pascal puoi avere oggetti (come strutture allocate staticamente), ma anche puntatori a oggetti, e quindi l'uso di puntatori è esplicitato. Dipende tutto dal linguaggio, insomma.
Per me non è un problema che queste informazioni siano nascoste, perché si tratta di un dettaglio implementativo. Ad esempio in un'architettura che fa uso di segmenti, un oggetto potrebbe benissimo essere un indice (di un segmento), mentre i suoi campi sarebbero accessibili come offset (accoppiati al segmento). Per essere più chiari, sarebbe sufficiente memorizzare l'indice del segmento da qualche parte, anziché la coppia segmento + offset (che forma, invece, un puntatore in memoria), risparmiando pure spazio in memoria. In tutta onestà, non capisco perché nascondere questo dettaglio implementativo possa arrecar danni.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#11 |
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Il "danno" a cui mi riferisco è dovuto alla semplice pigrizzia.
Io credo (o forse temo) che una persona, che si approccia per la prima volta alla programmazione, decide di iniziare con linguaggi ad alto livello, possa poi ignorare certi dettaglio (IMHO) molto importati. Visto che la domanda iniziale del topic era, "da dove cominciare", io consiglieri di sbattere un po' la testa sul libro e imparare il C. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Dipende tutto da cosa farà in seguito. Se la programmazione gli piace, espanderà le sue conoscenze e, quindi, arriverà a trattare dettagli di più basso livello.
Ma intanto deve sviluppare la mentalità del programmatore, e per far questo un approccio di più alto livello è di gran lunga preferibile. Il programmatore deve prima di tutto imparare a risolvere problemi. Per i dettagli, se necessario, ci sarà sempre tempo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Apr 2013
Messaggi: 248
|
Eccomi qua, scusate il ritardo nella risposta ma ho avuto da fare
Comunque ho letto le varie risposte, c'è chi dice di iniziare con il C, altri con il python ecc... Informandomi un pò in giro ho visto che il python viene addirittura insegnato alle elementari In inglese ci sono svariati libri per bambini, in italiano ho trovato questohttp://linuxdidattica.org/polito/manuale-python-V2.pdf Fino alla 2a settimana di febbraio temo di non avere tempo per cominciare, in sti giorni comunque valuto bene cosa voglio fare e poi decido su quale partire. Anche perchè ho visto che su internet la community di python è assai inferiore a quella del C o C++, basta vedere nelle varie sezioni di programmazione sui forum di hwupgrade o tom's hardware che di python se ne parla poco. |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: May 2014
Messaggi: 160
|
Sono finalmente riuscito a recuperare questa immagine
![]() Che il professore di Java mostra ogni anno e motiva le scelte dell'ateneo sull'insegnare C e Java come linguaggi di base. |
|
|
|
|
|
#15 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Arrivo tardi, ma vorrei dire anch'io la mia.
Fermo restando il fatto che adoro il C, per imparare le basi della programmazione è decisamente meglio il Python, che, comunque, io uso anche per "testare" un algoritmo, visto anche che è molto simile agli "pseudo-linguaggi" che trovi su alcuni manuali, tipo il librone su cui ho studiato io. Nel C bisogna tener conto di tante magagne implementative (che nulla hanno a che vedere con la pura risoluzione del problema), e, soprattutto, è necessario prestare attenzione (ma sul serio) se si inizia a lavorare con i puntatori (quindi, in pratica, quando i programmi diventano più complessi di un "Hello world"). Il problema di quel linguaggio è che ti permette di scrivere cose aberranti (potresti anche arrivare a non capire un programma che hai scritto tu stesso, se non stai attento a come scrivi), oltre di far danni già solo se non inserisci il carattere terminatore in una stringa. Dunque, se sei già a tuo agio con algoritmi, strutture dati, e cose così, puoi anche sbattere la testa con il C (che è molto "semplice", quindi è TUTTO nelle mani del programmatore), altrimenti meglio puntare su Python, come ho già detto. Ricordo ancora il sangue versato per implementare gli algoritmi che gestiscono RB-alberi. |
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Apr 2013
Messaggi: 248
|
Infine dopo aver valutato bene e giocato un pò con python ho visto che è un pò più semplice di C ma questa è solo apparenza... Il fatto di avere troppe libertà sintattiche fa si che il linguaggio di python mi risulti piu' ostico del C stesso
So che è un controsenso ma preferisco regole piu' rigide che il C ha. Poi mi mancano gli incrementori ++ e -- che in python non ci sono, l'istruzione switch e altre cose. Quindi in definitiva continuo con il C.
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
De gustibus, ma proprio Python non ha libertà sintattiche. Tutt'altro:
Codice:
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#19 | |
|
Member
Iscritto dal: Apr 2013
Messaggi: 248
|
Quote:
Comunque il python continuerò a seguirlo, per chi vuole su questo sitohttps://www.codecademy.com/learn E' possibile imparare il python (e altri linguaggi come java, ruby ecc...) in modo interattivo :sisi: E' molto utile, e ha anche una community |
|
|
|
|
|
|
#20 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21964
|
Quote:
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:02.










Da quanto ho visto tratta dei più svariati argomenti fino ad arrivare ai vari costruttori, distruttori, malloc ecc... Ora il problema qual è? Bene o male ho imparato le varie strutture di if, while, for, come creare variabili ecc... Però ho ancora un pò di difficoltà. Leggendo un pò su internet, le persone di solito consigliano ai principianti di iniziare con python per farsi un pò le "ossa". Voi cosa mi consigliate? Ho visto ieri sera un pò di python e devo dire che rispetto al C è ben altra cosa
). Il mio sogno per ora è riuscire a creare un emulatore del chip-8 e del game boy. Da quanto ho visto in giro è possibile crearli anche con python nonostante esso sia un linguaggio ad alto livello e meno efficiente in termini di "prestazioni". Boh, un consiglio vostro... Una volta preso la mano con python, il C risulterà meno ostico?











