[nem-pl] Uwagi różne

Michal Moskal malekith at pld-linux.org
Fri Feb 20 18:53:05 CET 2004


On Fri, Feb 20, 2004 at 05:53:20PM +0100, Marcin 'Qrczak' Kowalczyk wrote:
> > > Aha, jak zgaduję to o to chodziło w kwalifikowaniu niekwalifikowanych
> > > nazw użytych w makrach? Może jeszcze zadbacie, żeby rozwinięcie makra
> > > mogło się do tego odwoływać nawet jeśli jest prywatne? 
> > 
> > Impossible in .NET. System bezpieczeństwa .NETu nie pozwala na to,
> > po prostu kod wynikowy nie może mieć dostępu do czyichś prywatnych rzeczy.
> > Makra są pod tym względem przezroczyste i to jest IMHO dobra rzecz.
> 
> Nie widzę zalety, poza tym że taki design był konieczny z innych powodów
> (tzn. z powodu wymuszania prywatności na poziomie IL, a nie na poziomie
> języka źródłowego). Jeśli jakaś funkcjonalność ma być udostępniona w
> formie makra, to zmuszacie do tego, żeby były udostępnione również
> wszystkie elementy, do których to makro się rozwija, nawet jeśli one nie
> były planowane jako oficjalny interfejs. Być może np. te makra dbają o
> bezpieczny sposób użycia tych elementów, a użycie ich w innej
> konfiguracji może popsuć jakieś niezmienniki? Biblioteka nie ma jak się
> przed tym zabezpieczyć.

Zaleta polega na tym, że użytkownikowi ciężej strzelić sobie w palec
strzelbą którą już zna (pola publiczne/prywatne klas) niż całkiem nowym
pistoletem automatycznym uzi (makrami).

To właśnie kwestia balansu między ekspresywnością a idiotoodpornością.
W Nemerle staraliśmy się nie przesuwać go zbyt daleko w stosunku do tego
co jest w C#.

To taki disclaimer ideologiczny do całego języka. Makra akurat są o tyle
wyjątkowe, że to dodatek do języka -- większość użytkowników pewnie nie
będzie ich pisać, dlatego tu możemy sobie pozwolić na więcej. Tyle, że
akurat prywatności nie obejdziemy, a to zawsze jakaś wymówka ;)


-- 
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?




More information about the devel-pl mailing list