W dzisiejszych czasach niemal każdy edytor plików tekstowych nieco bardziej zaawansowany od windowsowego Notatnika oferuje funkcję kolorowania składni (syntax highlighting) przynajmniej kilku najpopularniejszych języków programowania. W przypadku całych IDE jest to oczywiście funkcjonalność absolutnie oczywista i niezbędna, jednak coraz więcej środowisk oferuje też coś więcej. Coś, co dla odróżnienia nazywam kolorowaniem semantycznym; nie jestem bowiem pewien, czy ten mechanizm ma jakąś ogólnie przyjętą nazwę.
Kodowanie semantyczne w Visual Studio z pluginem AssistX
O co w nim chodzi? Standardowe kolorowanie potrafi między innymi odróżnić słowa kluczowe od identyfikatorów, wyróżniając zwykle te pierwsze innym stylem czcionki, zaś te drugie pozostawiając bez zmian. Wszystkie identyfikatory: nazwy zmiennych, funkcji, typów, stałych, szablonów, itp., są więc formatowane tak samo i wyglądają identycznie.
Trik kolorowania semantycznego polega właśnie na rozróżnieniu tych wszystkich kategorii identyfikatorów. Oczywiście jest to możliwe tylko wtedy, gdy IDE dysponuje bazą danych o całej strukturze projektu. Ale taka baza jest przecież coraz częściej tworzona, tyle że w innym celu: zapewnienia automatycznego uzupełniania poprzez mechanizmy w rodzaju IntelliSense w Visual Studio. Na szczęście ktoś kreatywny wpadł na pomysł, że można ją wykorzystać także w inny sposób – i chwała mu za to :)
Kolorowanie semantyczne ma przynajmniej dwie zalety. Ułatwia ono zorientowanie się w przeglądanym kodzie, zwłaszcza takim który widzimy po raz pierwszy. Ponadto zaś pozwala ono na wczesne wykrycie prostych acz uciążliwych błędów w rodzaju literówek. Sprawiają one bowiem, że dany identyfikator – jako nieznany – jest kolorowany inaczej, co pozwala na łatwiejsze dostrzeżenie pomyłki.
A wady? Jak każdy mechanizm działający w tle, kolorowanie semantyczne zjada trochę zasobów systemowych – m.in. dla niego opłaca się mieć w procesorze więcej niż jeden rdzeń. A poza tym można zwyczajnie nie lubić pstrokatego kodu i preferować bardziej jednolitą kolorystykę… O gustach się przecież nie dyskutuje, a teoretycznie kodować można i w Notatniku :)
pod Linuxem coś takiego ma edytor Geany – to jest świetne! Zrobię sobie np:
typedef unsigned int UINT;
i od tej pory UINT bedzie mi podswietlal jako typ – swietny pomysl ^^
Szkoda, ze pokazany na zrzutce AssistX jest platny. Z drugiej strony jednak mala strata, bo ile sie orientuje, licencja VS Express zabrania instalowania pluginow :-(
Eee tam… to tylko taki bajer…
Kilka lat temu, intellisense bylo dla mnie tez tylko bajerem…
Visual i inne IDE to też tylko takie bajery :p Przecież wszystko można robic w notatniku i wierszu poleceń :D
Notatnik?? Wiersz poleceń?? Taaa, wodotrysków się zachciało… a kartki dziurkować to już nie łaska?!
Myślałem, że tu prawdziwi hakierzy są, a nie… jakieś lamery co z IDE-ów, notatników, kompilatorów, korzystają, ech…..
:)
demioz: W VS kolorowanie semantyczne jest dostępne dla C#, chociaż podświetla głównie nazwy typów, wyróżniając je spośród innych nazw. Do C++ faktycznie potrzeba AssistX lub innego IDE (NetBeans albo Eclipse i oparte na nim wynalazki typu Carbide.c++ radzą sobie z tym kolorowaniem całkiem nieźle).
Tak, to jest fajne. W AssistX najbardziej mi się podoba, że na inny kolor podświetlone są identyfikatory pochodzące spoza projektu, a więc te niezmienne, które zapewniają biblioteki.
Natomiast prostym i wcale nie semantycznym, ale fajnym sposobem kolorowania identyfikatorów, które stosuje jEdit, jest podświetlanie na inny kolor tych identyfikatorów, po których jest nawias (