Kolorowanie semantyczne

2008-07-07 19:04

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 :)

Tags:
Author: Xion, posted under Applications, Programming »


8 comments for post “Kolorowanie semantyczne”.
  1. moriturius:
    July 7th, 2008 o 19:17

    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 ^^

  2. demioz:
    July 7th, 2008 o 21:53

    Szkoda, ze pokazany na zrzutce AssistX jest platny. Z drugiej strony jednak mala strata, bo ile sie orientuje, licencja VS Express zabrania instalowania pluginow :-(

  3. Dynax:
    July 8th, 2008 o 11:40

    Eee tam… to tylko taki bajer…

  4. bs.mechanik:
    July 8th, 2008 o 13:06

    Kilka lat temu, intellisense bylo dla mnie tez tylko bajerem…

  5. Kaszuba:
    July 8th, 2008 o 14:09

    Visual i inne IDE to też tylko takie bajery :p Przecież wszystko można robic w notatniku i wierszu poleceń :D

  6. losiu99:
    July 8th, 2008 o 16:37

    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…..
    :)

  7. Xion:
    July 8th, 2008 o 18:20

    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).

  8. Reg:
    July 13th, 2008 o 19:08

    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 (

Comments are disabled.
 


© 2018 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.