Szybki kompilator C++

Watcom wprowadził następujące rozszerzenia standardu C++: atrybut mutable i explicit, typ bool oraz long long (__int64), a także RTTI (informację o typie klasy dostępną w czasie wykonania)). Istnieje także obsługa wyjątków. Specyfikacja RTTI dostępna w Watcomie jest bogatsza niż np. w Visual C++ 4.0 czy 5.0. Ułatwia to wykorzystanie odpowiedniego rzutu w danej sytuacji (co pozwala lepiej wykorzystać optymalizator), choć jednak powstaje kod nie przenośny.

WASM (asembler dołączany do pakietu) oraz asembler in-line rozpoznaje rozkazy MMX procesorów Pentium. Równocześnie dodane zostało wspomaganie MMX do bibliotek (m.in. makra generujące odpowiednie sekwencje rozkazów).

Linker pakietu Watcom pozwala generować kod w formatach: COFF, OMF, ELF (program taki działa w niektórych systemach unixowych, obsługujących format ELF). Można korzystać (i tworzyć) biblioteki w formatach AR (zgodnych z Microsoftem) oraz OMF. W wersji 11 linker pozwala na tzw. łączenie przyrostowe - łączone są tylko zmieniane elementy programu. Dzięki temu został przyspieszony czas tworzenia pliku wynikowego. Czasami, gdy zostanie zmieniona docelowa postać plików, próba łączenia przyrostowego powoduje zawieszenie kompilatora.

Środowisko programistyczne

Środowisko programistyczne IDE jest podobne w każdym z systemów operacyjnych - podobnie ustawia się opcje i wykonuje kompilację. W każdym środowisku można bez problemu generować dowolną postać kodu (np. pisać w OS/2 kod dla Windows). Łatwo zmienia się typ kompilacji, ustawienia kompilatora itp. Dla każdego systemu dostarczony jest podobny zestaw narzędzi - debugger, profiler i sampler oraz narzędzia służące do tworzenia interfejsu graficznego. Debugger wygląda prawie tak samo w DOS, Windows i OS/2. Ma on pewną specyficzną cechę - można ustawić tak skróty klawiszowe, by debugger Watcoma zachowywał się tak samo jak Turbo debugger (Borland) czy debuggery Microsoftu (nawet dodane są odpowiednie pliki konfiguracyjne). Pliki konfiguracyjne dla debuggera mogą także ustalać, jak daleko wczytany program będzie wykonany automatycznie (zapamiętywane jest położenie pułapek, można zapisać klawisze, jakie naciskał programista itp.). Ułatwia to pracę programistom w porównaniu z pracę z wykorzystaniem innych narzędzi.

Wady i zalety

Na uwagę zasługuje firmowa biblioteka Watcoma. Zawiera ona wiele funkcji zgodnych z różnymi standardami C/C++ (np. biblioteka graficzna dla DOS-a jest zgodna z biblioteką Microsoftu, pewne funkcje odpowiadają funkcjom Borland czy Turbo C). Do C++ dostarczona jest biblioteka pojemników, zawierająca wiele schematów struktur danych (listy, tablice, iteratory i kontenery wspierające haszowanie itp.), które łatwo można wykorzystać we własnym programie.

Do wad Watcoma należy niedostateczna dokumentacja. Zawiera ona wprawdzie wiele informacji niezbędnych przy łączeniu programów napisanych w Watcomie z innymi bibliotekami czy procedurami napisanymi np. w Fortranie. Programista ma dokładną specyfikację określającą wykorzystanie rejestrów, modeli pamięci czy struktury plików. Jednocześnie nie ma opisu dyrektyw asemblera WASM (jest jedynie lista rozumianych dyrektyw) czy dokładnego opisu składni C++. O wyjątkach lub RTTI jest w kilku miejscach wzmianka - przy omawianiu błędów kompilatora. Podobnie jest z dokumentacją bibliotek dla Novella bądź AutoCAD-a - opisany jest sposób ustawiania opcji kompilatora i biblioteki, które należy dołączyć, by wygenerować kod w żądanej postaci. Takie informacje można znaleźć, korzystając z dyrektyw WASM, które przypominają z TASM (firmy Borland), a RTTI i wyjątki C++ są opisane w wielu publikacjach.

Podsumowanie

Watcom C++ jest dobrym narzędziem dla programistów z pewnym przygotowaniem. Nie zalecałbym go początkującym. Pozwala generować kod dla wielu systemów operacyjnych. Duży nacisk położono na zachowanie zgodności z wieloma produktami, co powoduje, że przenoszenie projektów do Watcoma nie sprawia dużych problemów. Przygotowano dla niego wiele bibliotek i narzędzi ułatwiających pisanie programów. Istnieją również wyrafinowane analizatory kodów, biblioteki graficzne i specjalne narzędzia ułatwiające dostęp do baz danych w różnych systemach operacyjnych. Wiele firm produkujących biblioteki dla programistów dostosowuje je do Watcoma. Elastyczność linkera pozwala korzystać także z plików obiektowych z innych narzędzi, nawet stworzonych za pomocą kompilatorów innych firm. Wszystko to sprawia, że Watcom jest wydajnym narzędziem, choć to na programiście spoczywa pełna odpowiedzialność za postać programu - poza generatorem aplikacji dla Windows Watcom nie zawiera kreatorów, znanych z innych narzędzi.


TOP 200