Specyfika nazw funkcji systemowych w języku C.

0

Witam was,

Zaczęło ostatnio zastanawiać - czemu nazwy tych wszystkich funkcji systemowych są tak strasznie skracane. Czemu funkcja dup nie może się nazywać duplicatedescriptor. Czy dłuższa nazwa wpływa na dłuższe wykonywanie się programu :O? Jeśli nie to czemu łamać sobie głowy na flagach typu *GETZCNT *, GETNCNT, funkcjach typu shmget, *msgctl *kiedy można by je jakoś ludzko nazwać. Nawet jak się je zna dobrze, to ciężko później zrozumieć kod kiedy się do niego wraca mając wszędzie same skróty?

Pozdrawiam,
Siara

0

Z prostego powodu, dup łatwiej zapamiętać i trudniej w tej nazwie popełnić błąd niż w duplicatedescriptor, który IMO wygląda jak jakiś potwór, jak już to powinno się w nim wtedy dać podkreślenia do oddzielenia słów.

2

W C standard nie ma ograniczenia na długość identyfikatorów. Natomiast w dawnym C gwarantowano, że pierwsze 8 znaków na pewno będzie służyć do odróżnienia identyfikatorów -- ale nie specyfikowano, co z dalszymi znakami. W związku z tym, zmienna_1 i zmienna_2 mogły być nierozróżnione, bo na pierwszych ośmiu znakach identyfikatory są identyczne. W standardzie zwiększono liczbę znaczących znaków identyfikatora do 31. http://publications.gbdirect.co.uk/c_book/chapter2/keywords_and_identifiers.html

Stąd techniczny aspekt skracania nazw identyfikatorów.

Drugim aspektem jest fakt, że w dawnych czasach, w konsoli o szerokości 80 znaków i wysokości 25 linii, długie nazwy stałyby się kompletnie nieczytelne.

Edit Jeszcze tak mi przyszło do głowy: krótsze nazwy identyfikatorów powodują mniejsze zużycie pamięci podczas kompilacji, kompilacja jest też szybsza.

W pierwszej wersji Fortranu ograniczenie długości identyfikatorów wynosiło 6 znaków. Nie wiem, jak w Cobolu, ale zapewne też coś takiego tam istniało/istnieje. Długość nie ma kompletnie wpływu na szybkość wykonania programu czy zużycie pamięci (dla języków kompilowanych oczywiście; w językach interpretowanych -- PHP, Python, etc. -- ma to wpływ na szybkość i zajętość pamięci, ale raczej niezauważalny).

0
winerfresh napisał(a)

dup łatwiej zapamiętać

Raczej to, co napisał rincewind ma logiczny sens. Dup wcale nie jest łatwiej zapamiętać.

Czasy się zmieniły, nie trzeba już pisać w jakimś łopatologicznym edytorze w trybie tekstowym,
ale mentalność programistów C/C++ pozostała niezmieniona.

Mnie też mdlą takie nazwy funkcji jak strcpy, fprintf itp. Ten kto musi żyć z tym potworem C++,
musi takie rzeczy spamiętywać.

0

zawsze możesz poświęcić dłuższą chwilę na zrobieniu biblioteki prettynames.h, która zrobi Ci aliasy do wszystkich głupich nazw

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.