Newsgroup: it.scienza.informatica
Titolo: Programmazione procedurale o a oggetti: da dove iniziare?

Ciao a tutti.
Vi scrivo per un parere: frequento il corso di Laurea in Informatica
e, a tutt'oggi, l'insegnamento di Programmazione del primo anno di
corso affronta la programmazione procedurale, dunque non ad oggetti.
Da parte dei miei docenti c'è comunque l'intenzione di introdurre
un corso di programmazione ad oggetti fra le materie facoltative del
terzo anno di corso.
Ora, c'è chi sostiene che lo studio della programmazione procedurale
sia in qualche modo necessariamente propedeutico a quello della
programmazione ad oggetti, mentre altri ritengono che la programmazione
vada studiata fin dall'inizio come programmazione ad oggetti, pena
rimanere "prigionieri" in un approccio (quello procedurale) che è poi
difficile adeguare.
Qual'è il vostro parere a riguardo? Grazie!
Graziella
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Io il primo anno nel primo semestre del corso di laurea di informatica
ho fatto programmazione ad oggetti con java. Devo dire che come
approcio per me che venivo dalla scuola di geometra(quindi zero
programmazione alle superiori) e' stato decisamente buono e mi son
trovato benissimo. Non credo che la programmazione procedurale debba
essere per forza propedeutica. Ammeno che ti vuoi studiare c++ e quindi
per capirci un po' di piu' credo che magari sia meglio sapere prima un
po di c(ma non necdessariamente). Comunque poi il 2 secondo semestre mi
son fatto assembly(dopo aver fatto il paradigma a oggetti :D), il 2
anno mi son fatto anche il c, lisp(linguaggio funzionale), e
prolog(linguaggio dichiarativo). Credo che mettere come facoltativo un
paradigma ad oggetti sia un grosso errore. Andrebbe messo obbligatorio.
Comunque avendo fatto prima oggetti e dopo altri paradigmi non ho mai
sentito nessuno lamentarsi.
bye 
zinco

 Qual'è il vostro parere a riguardo? Grazie!
Che chi conosce bene la filosofia del linguaggio procedurale, poi non ha 
problemi a capire la logica della programmazione ad oggetti.
Il viceversa puo' non essere sempre vero.
In ogni caso non si puo' pensare di fare a meno di conoscere i linguaggi 
procedurali, che si trovano in tutte le salse, in tutti i sistemi, si 
usano per gli script, per i batch e non cesseranno mai di esistere.
Io sono nato coi linguaggi procedurali, e la prima volta, anni fa, che 
ho incontrato una classe, non mi sono ne' spaventato ne' sentito 
smarrito, quindi questa cosa del rimanere "prigionieri" nella logica del 
procedurale proprio non esiste.

 difficile adeguare.
Secondo me e' meglio partire dal basso livello e poi procedere ai di 
astrazione superiori.
Quindi il primo linguaggio da imparare e' il linguaggio assembly, poi il 
C, poi un linguaggio statico di livello superiore al C (come Ada, C++, 
Java, C#, Visual Basic, Object Pascal), e infine un linguaggio dinamico 
(come Smalltalk, CLOS, Python, Ruby, Javascript, VBScript).
Molti guru dell'informatica hanno seguito questo iter e non hanno 
trovato difficolta' ne' hanno manifestato rimpianti.
Viceversa, molti che hanno imparato solo e usato per anni un linguaggio 
di alto livello hanno fatto fatica a imparare un linguaggio di basso 
livello e a comprendere le questioni di efficienza.
Consiglio di iniziare con un linguaggio di alto livello solo chi ritiene 
di non dover mai scendere a un livello inferiore.
Il paradigma di programmazione ad oggetti e' un paradigma di alto 
livello, e quello procedurale di basso livello.
Per quanto riguarda il rimanere prigionieri in un approccio, questo puo' 
succedere solo se uno lavora quotidianamente con quell'approccio per 
numerosi anni. Ma siccome all'universita' non si studia solo 
programmazione e il corso dura solo cinque anni, non si fa certo in 
tempo a rimanere prigionieri di un approccio.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

Ciao,
io sto al terzo anno di Informatica, ti parlo perciò alla luce della
mia esperienza e di quello che mi hanno insegnato in questi tre anni.
Innanzitutto esiste una vera e propria classificazione dei paradigmi di
programmazione. Essi si dividono in tre grandi aree:
-paradigmi operazionali, tra cui
 - paradigmi side effecting
   - paradigma operazionale
   - paradigma object-oriented
 - paradigmi non side-effecting
   - paradigma funzionale operazionale
-paradigmi definizionali, tra cui:
  - paradigma funzionale definizionale
  - paradigma logico
  - paradigma basato su vincoli
-paradigmi dimostrazionali
Ogni paradigma di programmazione determina il modo in cui viene
strutturata la soluzione ad un problema: quindi è inevitabile che il
passaggio da un paradigma all'altro sia difficoltoso, perché implica
un cambiamento di mentalità. Questo però non è un buon motivo per
studiarne uno solo: se ne studiamo diversi, perché ognuno è più
appropriato in determinate situazioni e perché ci si abitua a pensare
in modi diversi.
In un corso di laurea triennale si dovrebbero studiare quello
imperativo e quello object-oriented, e magari un'introduzione a quello
logico. A me pare giustissimo iniziare da quello imperativo, che è un
po' più semplice di quello object-oriented, al primo anno; passare poi
a quello object oriented, al terzo o al secondo anno. Così inoltre si
capisce quale è stata l'evoluzione dei linguaggi, perché storicamente
il paradigma object-oriented è stato un'evoluzione di quello
imperativo. Ciò non implica che il paradigma object-oriented sia
propedeutico a quello imperativo (si potrebbe benissimo imparare a
programmare partendo dall'OO) ma penso che partendo da quello
imperativo alla fine si hanno le idee più chiare, fermo restando che
bisognerebbe impararli entrambi per i motivi di cui ho parlato prima
accennando ai diversi paradigmi.
Purtroppo ho dovuto esporti molti concetti in maniera sintetica, spero
comunque di averti chiarito le idee.
Simone

 Qual'è il vostro parere a riguardo? Grazie!
IMHO piu che "programmazione procedurale" o "programmazione ad oggetti"
almeno nel primo anno si dovrebbe puntare a "fornire le basi"
o quello che alcuni chiamano lo "Zen della programmazione" ovvero
non ragionare in termini di linguaggio da apprendere o di
codice da scrivere, ma in termini di problemi, loro analisi
identificazione dei pattern e degli algoritmi applicabili, ecc. ecc.
Guarda su: 
http://www.htdp.org
Sul link riportato sopra c'e' il testo di un corso universitario
in cui usano il linguaggio Scheme
e non si fanno problemi "di stile" ma piuttosto di mentalita da formare
(infatti usano Scheme perche ha una sintassi molto semplice
  e quindi gli studenti non sprecano troppo tempo ad imparare
  la sintassi di un linguaggio di programmazione
  quando invece devono imparare i concetti di base).
Una volta che le basi sono salde, un linguaggio nuovo lo si impara
in circa una settimana.
Il motivo per cui molti preferiscono prima insegnare la
programmazione procedurale
e' che essa e' in parte propedeutica alla programmazione ad oggetti
(se insegnata in tale ottica) ed inoltre non espone lo studente
ad elementi del linguaggio utilizzato che potrebbero essere fonte
di inutile confusione (con la conseguenza gia detta sopra
che lo studente "perde tempo" ad imparare il linguaggio
di programmazione piuttosto che ad imparare a programmare).
L. Micheletto

 sentito nessuno lamentarsi.
a parte il collegamento procedurale-oggetti, gli altri paradigmi mi sembrano
abbastanza slegati tra loro (quindi e' possibile apprenderli in qualunque
ordine di preferenza)
-- 
Under construction

Per focalizzare su come progettare un programma ci sono ben altri
esami.
Tipo ingegneria del software, o i 2 esami di algoritmi e strutture
dati. 
bye 
zinco