Obiekty nie gryzą

"Rewolucyjna, nowoczesna metoda programowania", "przyszłość języków komputerowych" - to tylko kilka przykładów z bogatej gamy określeń, opiewających pozytywne cechy jakże ostatnio modnej technologii dźwięcznie nazwanej Programowaniem Obiektowo Zorientowanym. Czyż jednak przyszłościowym można nazwać coś, co od prawie 20 lat leży w powijakach, ze względu na fakt, że światek informatyczny ma skłonność do poruszania się po drodze najmniejszego oporu?

"Rewolucyjna, nowoczesna metoda programowania", "przyszłość języków komputerowych" - to tylko kilka przykładów z bogatej gamy określeń, opiewających pozytywne cechy jakże ostatnio modnej technologii dźwięcznie nazwanej Programowaniem Obiektowo Zorientowanym. Czyż jednak przyszłościowym można nazwać coś, co od prawie 20 lat leży w powijakach, ze względu na fakt, że światek informatyczny ma skłonność do poruszania się po drodze najmniejszego oporu?

Najwyższy czas aby przyznać, że tak naprawdę obawiamy się programowania obiektowego. Języki pozbawione typowych elementów programowania strukturalnego są po prostu zbyt abstrakcyjne, aby mogli przekonać się do nich programiści od lat pracujący z Pascalem czy C. Aktualne trendy w świecie informatycznym nie pozwalają na szybki rozwój technik obiektowych zaś użytkownikom spragnionym czegoś nowego wciska się zaś "środki zastępcze" w postaci np. C++ czy obiektowego Turbo Pascala, inni zaś z braku łatwych do wykorzystania narzędzi programistycznych korzystają z tak "nieeleganckich" rozwiązań jak (o zgrozo!) Visual Basic.

Pierwsze elementy orientacji obiektowej pojawiły się w świecie programistycznym ponad ćwierć wieku temu, w języku Simula-67. Wprowadzono tam pojęcia klasy i prefiksowania modułów, czyli zasady, na których opiera się cała współczesna technika obiektowa. Widać więc, że języki obiektowe są prawie tak stare jak poczciwy Pascal czy też C; w przeciwieństwie do nich jedyną szeroko stosowaną komercyjną namiastką Programowania Obiektowo Zorientowanego jest aktualnie C++, będący językiem stuprocentowo strukturalnym, a jedynie wzbogaconym o narzędzia obiektowe.

Niedoceniony Smalltalk

Już w roku 1972, a więc na 8 lat przed narodzeniem się C++, powstały pierwsze implementacje języka korzystającego jedynie z zasad obiektowości, czyli Smalltalku. Zaczynając swoją karierę jako prosty emulator, język ten doczekał się zintegrowanego i profesjonalnego jak na tamte czasy środowiska programistycznego. Smalltalk zaimplementowano na bogatej gamie maszyn, a jego popularność w latach 70. przerosła chyba pozostałe języki obiektowe stosowane w tych czasach.

W Smalltalku dosłownie wszystko jest obiektem. Nawet np. na liczbie 7 zdefiniowane są operacje dotyczące klasy liczb całkowitych. Co ciekawsze, hierarchiczna struktura prefiksowania zawierająca definicje podstawowych klas jest stuprocentowo dostępna do wglądu i ingerencji użytkownika, co pozwala np. na zmianę definicji podstawowych operacji matematycznych. Możemy więc wejść do klasy liczb całkowitych i zażądać, aby symbol "+" opisywał dodawanie modulo 3. Ta sama technika pozwala na łatwe tworzenie nowych funkcji i dołączanie je do standardowej biblioteki klas Smalltalku.

Smalltalk wyposażono także we wszystkie podstawowe techniki obiektowe (dziedziczenie, polimorfizm itp.), zaś za jedyny jego mankament można uznać dość nietypową składnię, która może sprawiać trudności programistom przyzwyczajonym do "angielskopodobnych" języków jak Pascal czy Basic. Implementacje Smalltalka są nadal dostępne na wielu maszynach, w tym także na pecetach.

Czemu C++?

Wypada wyjaśnić, dlaczego stosunkowo "młody" C++, wymyślony na początku lat 80., nie podzielił losu innych języków obiektowych i stał się jednym z najbardziej popularnych narzędzi programistycznych. Po prostu, dla producentów oprogramowania komercyjnego była to najtańsza i najpewniejsza metoda udostępnienia użytkownikom techniki obiektowej. Pozostawiając klientom możliwość kontynuacji programowania strukturalnego (co przyczynia się zresztą do powstawania bardzo złych nawyków w programowaniu obiektowym), producenci całkowicie eliminują element ryzyka handlowego. C++ miał wszelkie szanse na świetną sprzedawalność, co potwierdziło się w praktyce. Wielkie firmy jak Borland czy Microsoft idą więc "na łatwiznę", zaś przed językami takimi jak Smalltalk po prostu chowają głowę w piasek.

Czy tylko eksperyment?

Na szczęście istnieją potentaci, którzy doceniają siłę Smalltalku. Należy tu wymienić przede wszystkim IBM, który aktualnie wprowadza na rynek pakiet VisualAge for Windows 2.0, będący niczym innym jak zintegrowanym środowiskiem programistycznym bazowanym na Smalltalku. Okazuje się więc, iż co poniektórzy widzą przyszłość w programowaniu "czysto obiektowym", zaś przy poparciu takiego autorytetu jak IBM wprost nie sposób przyjąć słyszany często argument, że Smalltalk jest jedynie eksperymentem naukowców, nie rokującym żadnych nadziei na wykorzystanie komercyjne. W Smalltalku programuje się dziś już dużo, zaś dzięki VisualAge będzie programować się jeszcze więcej.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200