Newsgroup: it.comp.programmare
Titolo: Che ne pensate di Delphi?

Io programmo in VB pero' avrei una mezza idea di studiarmi il Delphi.
Secondo voi ha senso?
In particolare mi piacerebbe saper se il Delphi, una volta imparatolo a
fondo, possa essere utilizzato per scrivere codice performante in situazioni
critiche in cui la velocita' è importante. Questo in vb è impossibile e
bisogna
per forza appoggiarsi magari a dll scritte i c++ o quant'altro.
Insomma voglio sapere in che termini è bilanciato il compromesso tra la
programmazione ad alto livello e l'efficienza del codice in Delphi.
Ciao e grazie


Delphi è un ottimo linguaggio. Il suo difetto principale è che usa il...
Pascal!!! Molto meglio quindi rivolgersi a Borland C++Builder che è
praticamente la versione C++ del Delphi, infatti è basato sulla stessa
libreria di classi. L'unico interrogativo può essere la diffusione che in
Italia in ambito aziendale non è elevatissima. Se programmi per passione
oppure se non hai vincoli aziendali puoi scegliere a cuor leggero perché
sono strumenti di qualità e molto piacevoli da usare. In ogni caso oggi la
situazione è delicata visto che i tool Microsoft vanno per la maggiore e
contrariamente a quanto vorrebbero far credere i fanatici, il Visual C++ è
un prodotto eccellente. Inoltre a breve uscirà sul mercato Visual Studio.net
con il nuovo Visual Basic, il managed C++ e soprattutto C#, il nuovo
linguaggio di Microsoft che dovrebbe unire la potenza del C con
l'immediatezza del Basic.
Resta il fatto che apprendere un nuovo linguaggio è sempre utile, valorizza
il tuo know-how e arricchisce il tuo curriculum...
Lorenzo

 Il suo difetto principale è che usa il... Pascal!!!
embè?

 l'immediatezza del Basic.
Da non scordare che Hejlsberg, principale architetto di C# per la
Microsoft, fu in passato anche l'inventore di Turbo Pascal, e poi
di Delphi, per la Borland.  Ha appena ricevuto il prestigioso
award "Excellence in Programming" dal Dr Dobbs' Journal, unendosi
cosi` a figure del calibro di Guido van Rossum (inventore del
Python), Linus Torvalds (inventore di Linux), Alexander Stepanov
(inventore della STL per C++), James Gosling (inventore di Java).
Chi ama gli aspetti tecnici di Delphi difficilmente potra` non
amare quelli di C# e relative Common Runtime Libraries .NET --
la "mano" dell'autore e` chiara in entrambi i casi... Anders
Hejlsberg in un caso come nell'altro:-).
Alex

 embè?
Come "embè"? Embè ad un difetto grosso come l'universo!? Il PASCAL!?
AHHHHHHH!!!!!!!!
Lorenzo

 ha scritto nel messaggio
news:1GTM6.9072$jp1.5...@news.infostrada.it...

Veramente usa il Pascal ad oggetti. Sarebbe come dire 'Il Visual Basic?
AHHHH...ma è il Basic!!!'
:-D

AHHHHHHH!!!!!!!!
bah
divertiti con il tuo etCě piůpiů

 AHHHH...ma è il Basic!!!'
Infatti... un po' meno peggio del Pascal (ci vuole poco) ma sempre
robaccia...
Lorenzo

AHHHHHHH!!!!!!!!
cosa ha il PASCAL che non va? E' forse uno dei migliori linguaggi mai
progettati (anche se in effetti ne conosco pochini...)
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 ha scritto nel messaggio
news:7gZM6.12719$jp1.9...@news.infostrada.it...

Il Pascal, secondo me, combina perfettamente i limiti del Basic e la
difficolta' del C

 difficolta' del C
Beh, bello... cioè combina il peggio di tutti e due... era proprio quello
che cercavo di dire io:
LIMITI + DIFFICOLTÀ = PASCAL
Lorenzo

LIMITI + DIFFICOLTÀ = PASCAL
oppure, alternativamente, combina la semplicità del Basic e la potenza
del C... questioni di punti di vista!


 del C... questioni di punti di vista!
Ma cavolo, un po' di buon senso! Il Pascal ha solo una sintassi un po' meno
inconsistente del Basic. Ma la potenza? Come si può comparare anche solo
lontanamente al C? Dal punto di vista della potenza è esattamente come il
Basic. La "potenza" del C è nella sua espressività e soprattutto nella
gestione dei puntatori. Ma cos'ha di "potente" il Pascal?
Lorenzo

gestione dei puntatori. Ma cos'ha di "potente" il Pascal?
a parte che bisognerebbe definire il termine "potente". Poi: hai mai
programmato in PASCAL? Ne conosci i limiti? Quali sono?
Poi vorreri ricordarti solo una cosa: anche in Pascal puoi usare i
puntatori.
Infine ti vorrei fare un piccolo esempio. Sai chi Donald Knuth? Sai
cosa è Tex? Bene, il primo ha scritto il secondo in Pascal. Ma non
avevi detto che il Pascal non era potente?


 avevi detto che il Pascal non era potente?
Sebbene non abbia mai osato usare Tex, mi è giunta l'eco delle sue
straordinarie potenzialità (a patto di avere un paio di lauree per saperlo
usare...) Comunque ho visto programmi impressionanti scritti un po' in ogni
linguaggio... dal COBOL al BASIC... è chiaro che con ciascun linguaggio si
può alla fine fare qualsiasi cosa, ma la potenza, immagino, possa essere
considerata inversamente proporzionale agli accrocchi che devi fare per
raggiungere un certo risultato. In linguaggi giocattolo come Pascal e Basic
gli accrocchi da fare sono sempre molti. In linguaggi più flessibili come il
C sono in genere meno. Ma chiaramente dipende dal risultato che vuoi
ottenere.
Comunque questa polemica mi ha rotto, mi pento come al solito di aver
cercato un dibattito, visto che ognuno difende le proprie convinzioni con i
denti, quasi lo pagassero per farlo... sembra la passata campagna
elettorale...
Lorenzo

ottenere.
ti ripeto la domanda, alla quale non hai ancora risposto: hai mai
programmato in PASCAL?
E poi, scusa. Knuth, che conosceva anche il C, secondo te si sarebbe
messo a scrivere Tex in Pascal solo per autolesionismo, se, come
affermi, programmarlo in Pascal č piů difficile?


 affermi, programmarlo in Pascal è più difficile?
Secondo me sì... a giudicare dall'usabilità del tool oltre a masochista era
anche sadico...
Lorenzo

anche sadico...
io non ho mai usato Tex. Ma milioni di persone al mondo lo hanno fatto
e lo fanno. Certo che se poi ti metti anche a criticare uno come Knuth
allora non è molto sensato parlare con te.


 allora non č molto sensato parlare con te.
Ma bene, si arriva all'insulto diretto... me lo aspetto sempre da gente
cosě. E poi, da uno che si piazza nella firma i punteggi Brainbench... che
pena!
Lorenzo



non mi sembrava un insulto diretto. Ti ho solo fatto notare che non mi
sembra molto realistico criticare un programmatore come Knuth. Mi stai
dicendo da giorni che il Pascal fa schifo, ecc, ma non mi hai ancora
fatto un esempio, del codice, in cui sia cosě evidente la differenza
di Pascal e C.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 di Pascal e C.
Basta un qualsiasi frammento che giochi un po' con i puntatori o con
l'allocazione dinamica della memoria, o semplicemente un po' di giochetti
con i bit. Certo, tutte cose che volendo si aggirano e in qualche modo si
risolvono anche in Pascal o in BASIC, ma il modo e l'immediatezza proprie
del C e la sua grande espressività lo rendono unico e, a avviso mio e di
pressoché tutti gli esperti di didattica (ho già citato il MURST e il
Politecnico di Torino, ma sono alcuni dei molti esempi...), adatto per
imparare a programmare e a formare correttamente la mente del futuro
programmatore. E poi non dimentichiamo che sempre di più sono i sostenitori
della formazione su Object Oriented, per tutte le ragioni che ho ripetuto
allo sfinimento... ma si sa, non c'è peggior sordo di chi non vuol sentire.
Comunque se vuoi dei pareri avversi al Pascal sarò lieto di fornirtene a
bizzeffe, in primis quello di un signore che si chiama Stroustroup... forse
un po' di parte, ma autorevole credo. E poi, il Pascal poteva avere senso
10-20 anni fa (forse...) ma oggi, a parte Delphi, è davvero defunto. E per
finire, a parte il già citato TeX, mi sai dire quali e quanti progetti
importanti sono stati scritti in Pascal recentemente?
Lorenzo

importanti sono stati scritti in Pascal recentemente?
non mi sembra di avere mai detto che il Pascal è usato in progetti
reali. Cerchiamo di fare il punto della situazione:
1) Il C è il linguaggio più usato al mondo
2) ed è anche molto potente. Si può fare pressoché tutto
3) però è anche un linguaggio di livello piuttosto basso. Troppe
incombenze sono lasciate al programmatore, che se non è esperto
rischia di sbagliare.
4) Il Pascal è stato inventato con il preciso scopo di essere un
linguaggio didattico
5) La sua espressività è equivalente a quella del C. La quasi totalità
dei programmi C possono essere trasposti 1:1 in Pascal
6) Per la sua stessa struttura, è molto difficile fare errori subdoli.
Se il programma non funziona sarà quasi certamente per colpa di un
errore nell'algoritmo.
7) Il Pascal non è diffuso quanto il C. Ma si cercava di consigliare
un linguaggio che rendesse agevole l'apprendimento della
programmazione, non di consigliare il linguaggio più diffuso.
8) In C è più difficile scrivere un programma corretto, perché bisogna
considerare più dettagli. Il Pascal rende più agevole questo compito.
9) Tenendo conto dei punti precedenti, è più semplice il C o il
Pascal?
Forse sono stato un po' troppo lungo, ma almeno credo che sia chiaro
quale sia il mio pensiero. Se trovi un'affermazione errata ti prego di
farmela notare.


 Pascal?
Ovvio, il Pascal, ma allora: è più semplice il Pascal o il BASIC?
Ciao,
Lorenzo

Ovvio, il Pascal, ma allora: è più semplice il Pascal o il BASIC?
ho sbagliato io. "Semplice" non è la parola giusta. Secondo me il
linguaggio ideale *per imparare* è quello che ti costringe a fare le
cose giuste, e ti offre poche opportunità di sgarrare. Il Pascal è uno
di questi. Il C, ovviamente, no. Sotto questo punto di vista il Basic
non è poi tanto sicuro: tanto per fare un esempio, non è necessario
dichiarare le variabili e le conversioni tra i tipi sono quasi sempre
automatiche.


 automatiche.
Infatti questa è una vergogna, e ho visto cose turpi. Option Explicit
dovrebbe essere obbligatorio per legge... e poi è turpe che:
Dim A, B As Integer
A sia un Variant, invece che un Integer.
Sul fatto che il BASIC faccia pena in certi contesti, con me sfondi una
porta aperta. Infatti io non ho mica consigliato il BASIC, ma il C o Java.
Dicevo solo che quanto a costrutti (e ad esempio gli operatori di shift)
sono assimilabili, solo il Pascal è sintatticamente più pulito.
Ciao,
Lorenzo

ad esempio per estrarre word da double word.
mi ricordo "shl" e "shr" ma non saprei dire se erano del
Pascal standard o solo del TP.
Teòria
-- 
.

sono assimilabili, solo il Pascal è sintatticamente più pulito.
lo ripeto ancora una volta: Pascal e C sono sovrapponibili 1:1 in
quanto a costrutti. Non mi hai ancora trovato un costrutto del C che
non ci sia in Pascal. Ti ricordo ancora una volta che puntatori e
bitwise operator ci sono anche in pascal.


Pascal standard o solo del TP.
tutte cose rigorosamente standard.


 bitwise operator ci sono anche in pascal.
Li ho trovati ma il mio è tempo perso, se vuoi insistere insisti pure, caro
il mio Brainbench C++ Master. Voglio poi vederti quando smetterai di essere
studenti e passerai a fare il programmatore professionista, se insisterai a
difendere il pascal...
Senza rancore, ovviamente.
Lorenzo

difendere il pascal...
ma leggi i miei messaggi o fai finta? Ti ricordo che stavo solo
consigliando il Pascal come linguaggio per imparare, mica per
lavorarci.


 lavorarci.
E io dicevo che è stupido imparare un linguaggio che non servirà
probabilmente a nulla e che è pure bruttarello e antiquato. Il C ti sembra
troppo difficile? Hai paura che la mente del futuro programmatori si formi
su quello stupendo, lineare e conciso linguaggio? Ci sono altre ottime
alternative, le ho già più volte elencate... ma mi sa che qui non sono io
che faccio finta di leggerli i messaggi, visto che su "certi argomenti" non
leggo risposte...
Lorenzo

leggo risposte...
può darsi che me li sia persi. A quale domanda non ho risposto?
Nel frattempo te ne faccio una io, alla quale non hai ancora risposto
tu: "Scrivi un esempio di codice in C che non si può scrivere in
Pascal". Ricordandoti che puntatori e operatori sui bit sono presenti
sullo standard.


 sullo standard.
Innanzitutto sono balle che nel Pascal "standard" esistono quegli operatori,
e già con questo la tua replica non ha il diritto di esistere, e poi non
vedo perché dovrei abbassarmi a riprendere in mano una deiezione di
linguaggio con il Pascal per farti un esempio che tanto verrà ignorato e
insultato come tutto ciò che ho detto finora...
Lorenzo

 sullo standard.
Umh.... puntatori a puntatori (in C ci sono vero?) ?
ciao
-- 
Luigi

no no, mi ricordo che c'erano ( TipoPtr = ^Tipo ), ovviamente.  :)
c'erano i puntatori a tipo, ma non i puntatori a variabile. Ora ci sono 
anche questi:
puntatore:= @variabile;
e tra i tipi pointer ci sono finalmente (Delphi 5?) anche gli array 
dinamici:
var
  dynArr: array of Integer;
che fino ad ora andavano dichiarati come puntatori ad array vuoti e 
allocati al volo con GetMem:
type
  _dynArr = array[0..0] of Integer;
  dynArr = ^_dynArr;
var
  myArr: dynArr;
[...]
New(myArr);
GetMem(myArr, num * SizeOf(Integer));
trucchetto molto in voga ai tempi del TP, ma che a causa della terribile 
gestione dello heap funzionava solo all'interno dello stesso modulo 
(cioè non tra una unit e l'altra, o tra una unit e il main)

lavorarci.
eppure il Delphi mi risulta abbastanza richiesto, soprattutto in campi 
riservati tradizionalmente a VB

bitwise operator ci sono anche in pascal.
ci sono delle follie C senza (grazie a dio) corrispondenti in Pascal, 
sono sicuro al 10000% perchè ne ho incontrate, ma al momento non mi 
sovvengono

insultato come tutto ciò che ho detto finora...
se dici cose sbagliate, non ci so cosa fare.


Umh.... puntatori a puntatori (in C ci sono vero?) ?
type 
	ptr_int=^integer;
	ptr_ptr_int=^ptr_int;


sovvengono
beh, il C è un linguaggio arduo, complesso e a volte persino
complicato. Però non mi sembra di poter dire che ci sono delle
"follie"


puntatore:= @variabile;
questo è standard. L'operatore @ restituisce l'indirizzo di una
variabile o procedura. C'era anche in TP.


  dynArr: array of Integer;
questo è buono dal punto di vista della leggibilità, ma
speriamo che si limitino ad aggiungere solo roba utile, altrimenti
rischiano di "incasinare" il linguaggio.
Teòria
-- 
.

sovvengono
di quelle assurde non mi vengono in mente neanche a me,
ma basta pensare alla dichiarazione dei tipi a "spirale",
all' "int * p_intero, intero" alla precedenza degli operatori
di shift e alla gestione degli array, ce n'è da lambiccarsi
il cervello.
strano che non abbiate ancora parlato di funzioni annidate:
dovrei controllare lo scope delle variabili
nelle funzioni passate come parametro, in Pascal.
Teòria
-- 
.

 se dici cose sbagliate, non ci so cosa fare.
Ah, ma perché intestardirsi a correggere lo stolto che insiste nel suo
errore...
Lorenzo

 se dici cose sbagliate, non ci so cosa fare.
Ah, ma perché intestardirsi a correggere lo stolto che insiste nel suo
errore...
Lorenzo

rischiano di "incasinare" il linguaggio.
l'unica cazzata di Delphi sono le resourcestring. Sarebbe stato 
infinitamente meglio un compilatore risorse che supporti la sintassi 
Pascal

centrano molto.
io non ho mai parlato di pascal originale. Io parlavo di pascal
STANDARD, che č una cosa molto diversa da quello originale. Tanto per
fare un esempio, nella prima implementazione del C++ non erano
previsti i template. Questo ti basta per dire che i template non sono
standard?
io ti avevo anche fatto notare come il compilatore che ho usato diceva
esplicitamente di rispettare lo standard...


 esplicitamente di rispettare lo standard...
Scusate se mi intrometto a meta' di una discussione che si
protrae ormai da tempo, ma scavando un po' sia nella
mia biblioteca che nella mia memoria credo di avere un paio
di informazioni per voi.
Premettendo che intendiate:
Standard = la definizione originale del linguaggio pascal
data da Niklaus Wirth nel '73-'74
Originale = la prima implementazione di un
compilatore per quel linguaggio
Nel linguaggio standard i puntatori esistono
(e per verificare questo sono andata a ripescarmi il libro
originale di Wirth nella mia biblioteca)
I primi compilatori pascal che ho utilizzato sono stati:
- all'universita', su una grossa macchina programmata
a schede ed i puntatori c'erano. Il linguaggio era completamente
aderente allo standard. Ne' una istruzione in piu' ne' una in meno.
- Su un apple II mi ricordo di un compilatore pascal, che veniva
chiamato cosi' impropriamente dato che faceva piu' o meno
come fa ora Java, cioe' compila in un linguaggio intermedio
che viene poi eseguito da un interprete.
Anche la' i puntatori c'erano.
- Il primo turbo pascal su Pc conteneva molte estensioni
del linguaggio 'non standard', ma rispettava lo standard
ed i puntatori ovviamente esistono.
Concludendo, non ricordo nessuna versione di pascal,
ne vecchia, ne nuova, dove non ci siano i puntatori.
Come non ricordo nessuna versione di pascal dove lo
standard non sia supportato. Sono state fatte estensioni,
non storpiature dello standard.
Sono abbastanza sicura che se prendo uno dei progetti
che ho fatto nel '79-'80 all'universita' e lo do un pasto
ad un compilatore attuale mi da' un programma funzionante.
Il lavoro piu' grosso che ho fatto, cioe' un programma che
data una espressione in piu' variabili la semplifica, ne calcola
la derivata prima rispetto una variabile qualsiasi e semplifica
il risultato (un pacco di 20 cm circa di schede perforate...),
era proprio basato interamente su puntatori ed alberi i cui
nodi erano record varianti.
Credo che non avrei nemmeno provato ad iniziare un
simile progetto se non avessi avuto a disposizione questo
tipo di strutture dati.
Ciao a tutti
Claudia Caloi

originale di Wirth nella mia biblioteca)
ti ringrazio per essermi venuta in aiuto in quella che ormai sembrava
una crociata ;-)))
