Portál AbcLinuxu, 14. května 2025 17:21
Ale to, ze Pascal (aspon ten z BP7) neumi dynamickou alokaci pameti a uplne cokoli dynamickeho se musi resit pres spojaky
On nemá procedury New
a Dispose
?
už ta jediná věta odporuje sama sobě
Když by bylo třeba, šlo by realizovat spojový seznam v poli (dostatečně velkém), takže by se pak nemusela používat dynamická alokace paměti
Co ale neumi je dynamicka alokace pole
Ale to také umí. Třeba takto:
type
TCisArr = array[1..HorniMez] of integer;
PCisArr = ^TCisArr;
var
pole : PCisArr;
A pak na vhodném místě zaalokovat pamět pro prvky, které jsou skutečně třeba:
GetMem(pole, zadanyPocetPrvkuPole * sizeof(integer));
Já v helpu mám jak GetMem
tak FreeMem
.
Nechci rozpoutat flame, ale rikat o Pascalu, ze je to pekny jazyk, no nevim. Pred mesicem jsem musel zapasit s BP7.0, kdyz jsem tehdejsi kamaradce (a nynejsi pritelkyni) pomahal se zapoctakem a bylo to fakt utrpeni.Uděláš nejlíp, když se budeš namísto Borland Pascalu věnovat přítelkyni.
Spis nez ale na Pascal se zlobim na ceske skolstvi (spatnych/zastaralych jazyku je ostatne hodne) - lez, ze Pascal je jazyk vhodny pro ucebni ucely atp. To mozna plati ve srovnani s Ceckem, ale to je tak vsechno. No a ze Pascal je stale uvodnim ucebnim jazykem na MFF, to uz je neodpustitelne.A já si zase myslím, že Pascal (třeba zrovna ten Borland Pascal) je skvělý pro výuku. Podle mě je mnohem lepší než Delphi. Tuším, že to byla verze 6, kde hoši začali motat typy a pointery. Škoda. Nebo třeba klíčové slovo
packed
. No já nevím. Zletej Borland Pascal.
Stale doufam, ze Borland Pascal vymre, ale zatim se ke mne stale vraci ...Vidíš. A mě třeba osobně mrzí, že umřel. Turbo Vision bylo nádherné prostředí. Dodnes neexistuje tak pěkná a elegantní alternativa. Osobně mi Pascal přijde mnohem více čitelnější než C/C++ a jejich deriváty. Ještě tak ta Java, ale i ta je trochu kryptická. Možná tak PL/SQL, které vychází z Ady… Je to holt smutný…
Object Pascal toho umi celkem dost, ale je to na nej doslova naroubovano silou (treba ta dynamicka alokace pole - nejprve se deklaruje pole s konstantni delkou, pak se na nej vytvori pointer a pak se prikazem rekne, ze pole ma mit jinou velikost)V Borland Pascalu jo, v Object Pascalu (Delphi) ne. Object Pascal má dynamická pole, tím si jsem celkem jistý, protože jsem je používal
- dualita PChar versus StringDomnivam se, ze PChar vznikl jen pro programatory v C, aby se jim zjednodusilo prepisovani kodu do Pascalu. Sam jsem PChar ani jednou nepouzil, nebyl duvod, a to jsem toho programoval docela dost.
- nutnost deklarace promennych v hlavicce funkce/proceduryTo je nahodou skvela vec. Deklarace promennych na ruznych mistech je akorat zdroj castych chyb. Ja dodnes (v jinych jazycich) vetsinu promennych deklaruju na zacatku, i kdyz je pouzivam az daleko pozdeji, to by si mel navyknout kazdy, kdo ma rad "uklizeny" kod.
Jinak, jakym zpusobem to muze byt zdrojem chyb?Jednoduse z duvodu neprehlednosti u dlouheho kodu, promenne jsou pak ruzne rozhazene pres nekolik stranek, hrozi zamena promennych apod. Kdyz se uz na zacatku udela souhrnna deklarace, tak je v tom jasno. Samozrejme pokud se nejaka promenna pouziva jen napr. ve smycce
for
apod., tak souhlasim, ze je to spis otravne ji deklarovat nekde uplne jinde a naopak to zneprehlednuje centralni deklarace zbytecne dlouhym kodem.IMHO by mela byt promenna deklarovana nekde pred prvnim pouzitimNe! Představte si kód:
void bla() { if (blablabla) { char pole[2048]; int pole2[4096]; //blablabla } else { char pole[1024]; long long pole2[6000]; // blablabla } }V případě pascalu byste to deklaroval ve "var" všechno, musel byste to pojmenovat jinak a žralo by to zbytečně cca 2x tolik paměti, nebo byste musel alokovat dynamicky a mít tam režii navíc.
strip nazevsouboru
Velikost se sníží dost postatně. Můj program má po kompilaci nějakých 30MB a po strip to sleze na 8MB.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.