DOMANDA come iniziare per programmare

Stato
Discussione chiusa ad ulteriori risposte.

Andretti60

Utente Èlite
6,440
5,091
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.
 
U

Utente 16812

Ospite
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 ;)
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,900
11,551
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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
Reazioni: Andretti60

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
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
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,900
11,551
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Per quel che ricordo:
var s: string;
...
s:= 'Hello world'; {questo e' un commento: una stringa si racchiude tra 2 apici}
 

Andretti60

Utente Èlite
6,440
5,091
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
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
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
2,868
916
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
Reazioni: Andretti60

Andretti60

Utente Èlite
6,440
5,091
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
2,868
916
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
Reazioni: Andretti60
U

Utente 16812

Ospite
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
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
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
Reazioni: Utente 16812
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!