Zaszłość (programowanie)
Zaszłość – element składni lub konstrukcja programistyczna, która występuje bądź występowała we wcześniejszych wersjach, standardach lub implementacjach, a w kolejnych został albo zniesiony, albo nie jest zalecany do dalszego stosowania, ewentualnie pozostał dla zachowania zgodności, lecz nie wpływa na działanie programu.
Powstawanie zaszłości[edytuj]
Język programowania, o ile pozostaje w użyciu, nieustannie rozwija się i ewoluuje, najczęściej zgodnie z pewnymi tendencjami występującymi w informatyce, rozwojem systemów komputerowych obejmujących zarówno sprzęt jak i systemy operacyjne. Taka ewolucja powoduje, iż pewne elementy języka tracą na znaczeniu, stają się zbędne czy wręcz utrudniają dalszy jego rozwój. Takie konstrukcje i elementy składni określane są mianem zaszłości. Nie zaleca się ich dalszego stosowania, a w następnych implementacjach lub standardach mogą stać się w ogóle niedostępne. Oznacza to, że kod źródłowy napisany w danym języku programowania z użyciem zaszłości nie będzie mógł być prawidłowo użyty w przyszłych implementacjach bez dokonania korekt eliminujących daną konstrukcję lub element składni języka.
Rodzaje zaszłości[edytuj]
Dany element języka może być:
- nadal dostępny, lecz równocześnie może istnieć nowy element, oferujący analogiczne, ale korzystniejsze możliwości
- nadal dostępny, lecz niezalecany do stosowania, w przyszłości może być całkowicie usunięty z języka
- nadal dostępny dla zachowania zgodności wcześniej stworzonego kodu źródłowego, lecz może nie mieć jakiegokolwiek wpływu na działanie programu
Zaszłości w językach programowania[edytuj]
Języki wysokiego poziomu np. Pascal, C[edytuj]
Instrukcja skoku, pochodząca z asemblera, w językach wysokiego poziomu (np. Pascal, C) nie jest zalecana do stosowania, gdyż zmniejsza czytelność kodu.
Język C[edytuj]
We wczesnych implementacjach języka C pewne elementy składni były definiowane odmiennie[1], np.:
- zapis złożonych operatorów przypisania miał postać np.
=+
zamiast stosowanego dzisiaj+=
, obecnie zapis poprzedni jest już niedostępny - zapis inicjalizacji zmiennych nie zawierał znaku równości, np.
int x 1;
obecnie zapisujemyint x = 1;
, a poprzedni sposób zapisu jest już niedostępny - we wczesnych wersjach definicje parametrów występowały wyłącznie po nagłówku funkcji przed nawiasem klamrowym otwierającym ciało funkcji, niedopuszczalne było definiowanie parametrów na liście paramentów w nawiasach okrągłych, w których umieszczano jedynie ich deklarację.
Fortran[edytuj]
Fortran to pierwszy język programowania wysokiego poziomu[potrzebny przypis], w swych początkach bywał definiowany dla poszczególnych komputerów indywidualnie. W języku tym wiele konstrukcji związanych ze specyfiką konkretnego systemu komputerowego było pomijane jako zaszłość w kolejnych standardach i implementacjach[2][3].
Modula 2[edytuj]
W języku Modula 2 wprowadzono zmiany w modułach definiujących, eliminując listę eksportową, która stała się zaszłością. Wprowadzona nowa zasada, że sama definicja takiego modułu stanowi listę eksportową, sprawiła, że lista eksportowa stała się zbędna[4].
Pascal[edytuj]
W języku Pascal przykładową zaszłością jest słowo packed
, pełniące funkcję modyfikatora w deklaracji zmiennej strukturalnej (tablicowej, rekordowej), działającego jak dyrektywa kompilatora zlecająca wybór takiego rozmieszczenia elementów typu strukturalnego w pamięci, aby zmienna zajmowała jak najmniej miejsca w pamięci operacyjnej (a nie rozmieszczenie elementów np. od granicy słowa, czyli od adresu spełniającego pewne, narzucone kryterium, mogącego przyspieszać działanie programów)[5]. W późniejszych implementacjach, np. Turbo Pascal od wersji 4.0, typy strukturalne zawsze są „pakowane” i użycie bądź pominięcie słowa packed
, nie ma żadnego znaczenia. Słowo to jednak zostało zachowane w celu wstecznej kompatybilności z kodami źródłowymi zapisanymi dla wcześniejszych wersji Pascala[6]. Podobnie jest z nagłówkiem programu program
, który w Turbo Pascalu może być całkowicie pominięty[6].
Basic i Visual Basic[edytuj]
Język Visual Basic jako sukcesor języka Basic zawiera w sobie wiele zaszłości, szczególnie składniowych, przejętych zarówno z Basica, jak i wcześniejszych wersji Visual Basica. Przykładem może być instrukcja obecnie wyeliminowanej wersji pętli WHILE … WEND
.
W językach Basic i Visual Basic można prześledzić również ewaluację zaszłości na przykładzie konstrukcji realizującej bezparametrowe podprogramy: GOSUB numer_linii ... RETURN
. Konstrukcja ta w pierwszych wersjach języka Basic była jedyną umożliwiającą realizację podprogramów. W kolejnych wersjach Basica wprowadzono parametryzowane, "prawdziwe" podprogramy SUB ... END
, wywoływane użytym w deklaracji i definicji podprogramu identyfikatorem (np. QBasic dostępny w MS DOS). W tym momencie w zasadzie konstrukcja pierwotna GOSUB numer_linii... RETURN
stała się przestarzałą zaszłością, lecz była nadal utrzymywana głównie ze względu na zgodność i możliwość użycia kodów źródłowych napisanych dla wcześniejszych wersji Basica. Także Visual Basic i VBA przejęły tę konstrukcję, choć jako niezalecaną, gdyż wprowadzono do nich nie tylko podprogramy SUB
i FUNCTION
, ale także programowanie obiektowe. Niemniej w obrębie podprogramów konstrukcja nadal była dostępna.
Obecnie[kiedy?], np. w Visual Basic 2008, jednym ze środowisk programistycznych dostępnych w serii Microsoft Visual Studio, całkowicie zrezygnowano z tej konstrukcji – nie można już w nim stosować instrukcji GOSUB numer_linii... RETURN
.
Przypisy[edytuj]
- ↑ Brian W. Kernighan, Dennis M. Ritchie, Język C, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1067-3
- ↑ Michael Marcotty, Henry Ledgord, W kręgu języków programowania, tłumaczenie: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1342-7
- ↑ Ryszard K. Kott , Krzysztof Walczak , Programowanie w języku Fortran 77, Warszawa: Wydawnictwa Naukowo-Techniczne, 1991, ISBN 83-204-1362-1, OCLC 749999902 .
- ↑ Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8
- ↑ Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0597-1
- ↑ 6,0 6,1 Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994, seria: Biblioteka Użytkownika Mikrokomputerów ISBN 83-85060-53-7, ISSN 0867-6011
This article "Zaszłość (programowanie)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Zaszłość (programowanie).