DOMANDA come iniziare per programmare

Stato
Discussione chiusa ad ulteriori risposte.

Andretti60

Utente Èlite
3,411
2,285
Hardware Utente
1-2 anni fa scrissi un post dove dissi che, secondo me, il Pascal fosse il miglior linguaggio didattico da cui iniziare: più di qualcuno mi prese per "antico" e fuori dal tempo; invece vedo con piacere più di qualcuno la pensa come me. :ok:
Pascal (una evoluzione di Algol) fu creato proprio per evitare i problemi dei linguaggi del tempo, in particolare per avere un linguaggio facile da imparare, fortemente strutturato e che impone buone tecniche di programmazione. Altri linguaggi semplici esistevano gia' vedi per esempio Fortran e Basic, ma a quei tempi non avevano neppure ricorsione. Negli anni 80 e 90 anche in Italia era il linguaggio di scelta per insegnare. Mi ricordo quando insegnavo C che i miei studenti che sapevano il Pascal erano inorriditi :)

Quello che non mi piace del Pascal e' la sua eccessiva verbosita' e sintassi laboriosa, per cui alla fine non lo trovo per nulla un linguaggio semplice da imparare, a quel punto preferisco Python e anche i college americani usano dei loro linguaggi didattici molto semplici. Ma questo e' un parere personale.
 

gronag

Utente Èlite
17,736
5,857
Hardware Utente
Imho fanno male e i risultati agli esami lo dimostrano. Anche ai miei tempi c'erano i due esami di fondamenti, rigorosamente C e C++, il che li rendeva molto ostici. Considerando che c'è gente che arriva all'università senza avere mai scritto una riga di codice.

Se proprio vogliono il formalismo, devono adottare Pascal e non C, che una disciplina di typing debole. Voglio dire, non esiste nemmeno il tipo stringa!

A peggiorare la situazione, con le lauree triennali, c'è l'aggiunta di architettura dei calcolatori ( ai miei tempi c'erano due esami di calcolatori, ma al 3° e 4° anno ) al primo anno.

E il fatto che non sia una scelta felicissima è dimostrato anche dall'adozione di Python come linguaggio per i primi corsi di programmazione in college prestigiosi come il MIT e Stanford.

In soldoni gli americani hanno adottato la strategia di far sviluppare prima la forma mentis da informatico e poi scendere nei dettagli architetturali ( che poi il C in questo è diverso dagli altri, nell'esporre le viscere del processore ).
La mancanza del tipo stringa nel Pascal non è una grave "lacuna", si può agevolmente utilizzare la struttura "packed array" (vettore compattato), il Pascal "vede" la stringa esattamente come un vettore compattato di caratteri :asd:
Certo, è anche vero che al vantaggio dovuto al risparmio di memoria si associa un aumento del tempo di esecuzione in quanto l'accesso ai singoli elementi di un packed array è più "oneroso" rispetto a quello di un array normale :sisi:
C'è però da osservare che alcune implementazioni "moderne" del Pascal prevedono delle "estensioni" in grado di trattare le stringhe più facilmente, sia se sono a lunghezza fissa che a lunghezza variabile ;)
 

BAT00cent

Utente Attivo
984
414
Hardware Utente
Sottolineo l'aspetto DIDATTICO del linguaggio: Pascal servirebbe ad imparare a programmare, per acquisire la mentalità.
Ti impone una disciplina rigorosa, il compilatore non ti fa passare di tutto (come fa C/C++), di puntatori ce ne sono il tanto che basta per gestire strutture dati dinamiche. A questo livello, delle prestazioni se ne può fare a meno: chi inizia lo fa sempre con programmi "giocattolo"; in questo senso passi più tempo a ragionare su come risolvere un problema mentre sai che errori in compilazione sono sicuramente colpa tua (se il compilatore non compila un motivo c'è sempre...); insomma, programmi ad "alto livello" con la giuste dose di "basso livello".
Col C un neofita passi molto più tempo a capire perché diavolo non funziona nulla quando il compilatore non restituisce errori!
Ma qui mi fermo.
E ' ovvio che se si comincia a parlare di prestazioni o di programmazione a oggetti si deve per forza virare su C/C++/Java o altro.
E comunque, direi che è meglio il Pascal che Scratch come fanno certe scuole.
 
Ultima modifica:
  • Mi piace
Reactions: Andretti60

rctimelines

Utente Èlite
3,936
1,281
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
La mancanza del tipo stringa nel Pascal non è una grave "lacuna", si può agevolmente utilizzare la struttura "packed array" (vettore compattato), il Pascal "vede" la stringa esattamente come un vettore compattato di caratteri :asd:
Certo, è anche vero che al vantaggio dovuto al risparmio di memoria si associa un aumento del tempo di esecuzione in quanto l'accesso ai singoli elementi di un packed array è più "oneroso" rispetto a quello di un array normale :sisi:
C'è però da osservare che alcune implementazioni "moderne" del Pascal prevedono delle "estensioni" in grado di trattare le stringhe più facilmente, sia se sono a lunghezza fissa che a lunghezza variabile ;)
Il tipo string era presente nelle implementazioni di 30 anni fa! Non so, io sono arrivato ad usare fino al Turbo Pascal 5.5 di Borland

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Andretti60

Utente Èlite
3,411
2,285
Hardware Utente
La mancanza del tipo stringa nel Pascal non è una grave "lacuna", si può agevolmente utilizzare la struttura "packed array" ...
Pascal nacque come estensione di ALGOL, che come il Fortran (FORmula TRANslation) e il BASIC era un linguaggio pensato per operazioni matematiche. Il tipo string venne introdotto solo in versioni successive.
Perfino in C (l'originale K&R) non esisteva il tipo string, le stringhe venivano dichiarate come un vettore di tipo char ed esisteva tutta una libreria di funzioni per operare con le stringhe (strcat per esempio), ma tutta la allocazione della memoria era responsabilita' del programmatore.
 

rctimelines

Utente Èlite
3,936
1,281
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Pascal nacque come estensione di ALGOL, che come il Fortran (FORmula TRANslation) e il BASIC era un linguaggio pensato per operazioni matematiche. Il tipo string venne introdotto solo in versioni successive.
Perfino in C (l'originale K&R) non esisteva il tipo string, le stringhe venivano dichiarate come un vettore di tipo char ed esisteva tutta una libreria di funzioni per operare con le stringhe (strcat per esempio), ma tutta la allocazione della memoria era responsabilita' del programmatore.
Vero, lo so. Dico solo che l'implementazione nei compilatori è davvero molto remota, quindi non costituisce un limite e per moltissimi è come se ci sia sempre stata.
Gestire una stringa come array del tipo "char" può essere costruttivo e, anche al giorno d'oggi, non costituisce un concetto inarrivabile visto che in molti linguaggi moderni lo stesso viene ripreso.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

pabloski

Utente Èlite
1,911
353
Hardware Utente
Scusate il casino che ho fatto nel post precedente, da cui forse non si capisce bene il senso

"se proprio vogliono il formalismo, devono adottare Pascal e non C, che ha una disciplina di typing debole. Voglio dire, non esiste nemmeno il tipo stringa!"

Ovviamente il tipo stringa manca in C non in Pascal. Non è che sia la fine del mondo, è però motivo di confusione per uno studente. Ricordo di quanta gente cadeva su questa cosa ai tempi dell'università. Per loro era inimmaginabile che una stringa è in realtà un'array di caratteri. Cioè per loro array è array e stringa è stringa. E dal punto di vista matematico questa rigidità ha perfettamente senso, visto che i tipi di dati esistono per uno scopo ben preciso.
 
  • Mi piace
Reactions: Andretti60

Andretti60

Utente Èlite
3,411
2,285
Hardware Utente
Scusate ragazzi, ma considerare una stringa un vettore di caratteri è una limitazione ENORME, lo so per esperienza personale, in quanto NON funziona con lingue non latine. In tutti i linguaggi moderni il tipo stringa è in realtà codificato in modo da supportare tali linguaggi, in varie codifiche UNICODE tipo UTF-8. In C dovevamo fare salti mortali utilizzando il tipo "wide char" (o wchar, in pratica un short da 16bits). Provate a internazionalizzare una app scritta in C e al primo vettore tipo char vi sparate nei zibidei.
 

pabloski

Utente Èlite
1,911
353
Hardware Utente
Scusate ragazzi, ma considerare una stringa un vettore di caratteri è una limitazione ENORME, lo so per esperienza personale, in quanto NON funziona con lingue non latine.
Hai colpito il serpente sulla testa. Il giochino delle stringhe C ha funzionato bene o male finchè non si è affacciato Unicode con tutte le sue codifiche. E infatti siamo ancora in guerra tra UTF-16, UTF-8, UCS-2 e compagnia.

Per questo ho molte riserve sul C come linguaggio per iniziare. Ci sono troppe mancanze nello standard ed è troppo a basso livello il linguaggio. Se si deve imparare a risolvere problemi col calcolatore, sarebbe simpatico aiutare lo studente almeno sul fronte "dettagli hardware". Il C non lo fa, i linguaggi ad alto livello lo fanno.
 
  • Mi piace
Reactions: Andretti60

gronag

Utente Èlite
17,736
5,857
Hardware Utente
Scusate il casino che ho fatto nel post precedente, da cui forse non si capisce bene il senso

"se proprio vogliono il formalismo, devono adottare Pascal e non C, che ha una disciplina di typing debole. Voglio dire, non esiste nemmeno il tipo stringa!"

Ovviamente il tipo stringa manca in C non in Pascal. Non è che sia la fine del mondo, è però motivo di confusione per uno studente. Ricordo di quanta gente cadeva su questa cosa ai tempi dell'università. Per loro era inimmaginabile che una stringa è in realtà un'array di caratteri. Cioè per loro array è array e stringa è stringa. E dal punto di vista matematico questa rigidità ha perfettamente senso, visto che i tipi di dati esistono per uno scopo ben preciso.
Nel Pascal "standard", se non ricordo male (sono 30 anni che non programmo più in Pascal, ora uso Delphi), la gestione delle stringhe avviene tramite la struttura "packed array", per cui le stringhe hanno lunghezza predeterminata :sisi:
Le "estensioni" al linguaggio che hanno permesso una gestione più agevole delle stringhe, anche a lunghezza variabile, sono state rilasciate in implementazioni più recenti :sisi:
 

rctimelines

Utente Èlite
3,936
1,281
Hardware Utente
CPU
AMD Ryzen 5 2600x | INTEL i5-6600k | INTEL i5-4460... altri
Dissipatore
stock | Arctic Freezer 11LP | stock
Scheda Madre
Asrock Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
Hard Disk
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
Scheda Video
RadeonPro WX3100 4G | Asus R9 280x 3G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | Acer 24" FHD | Benq 19" FHD
Sistema Operativo
Windows10-pro64/OpenSUSE-QL42.3/Manjaro-17.0.2-KDE
Nel Pascal "standard", se non ricordo male (sono 30 anni che non programmo più in Pascal, ora uso Delphi), la gestione delle stringhe avviene tramite la struttura "packed array", per cui le stringhe hanno lunghezza predeterminata :sisi:
Le "estensioni" al linguaggio che hanno permesso una gestione più agevole delle stringhe, anche a lunghezza variabile, sono state rilasciate in implementazioni più recenti :sisi:
Le stringhe in Pascal c'erano anche 30 anni fa. Non so chi utilizzi ancora un compilatore di quel tempo. Delphi è l'ambiente di sviluppo visuale del Pascal OO già realizzato da Borland ai tempi del successo di Turbo Pascal (le cui ultime versioni già implementavano il paradigma ad oggetti). Io l'ho usato (pochissimo, poi ho sempre usato VB) in origine, ma credo che sia l'unica possibilità per scrivere codice Pascal con finalità produttive.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
  • Mi piace
Reactions: gronag
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando