Wcięcie mówi ci, gdzie jesteś, w obu stylach składni. Jeśli napiszesz program VB lub program C # w jednym wierszu, wkrótce nie będziesz w stanie powiedzieć, gdzie jesteś w zagnieżdżonej składni. Maszyna analizuje frazy kończące blok lub nawiasy klamrowe, ale ludzie potrzebują wcięcia.
Zwroty blokowe pochodzą z epoki kart perforowanych i taśmy papierowej, kiedy programowanie było znacznie mniej interaktywne i wizualne. Lub, naprawdę, wcale nie interaktywny. Trudno było wchodzić do programów, dlatego programiści potrzebowali kompilatorów, którzy byli bardzo sprytni w analizie składni i usuwaniu błędów.
W tej minionej epoce cykl edycji i kompilacji mógł polegać na przygotowaniu kart dziurkowanych za pomocą dziurkacza kart, a następnie ustawieniu się w oknie przesyłania zadań, w którym urzędnik wziął karty dziurkowane i przekazał je do maszyny. Później programista zbierał dane wyjściowe (wydrukowane na papierze) z innego okna. Gdyby program zawierał błędy, dane wyjściowe składałyby się tylko z diagnostyki kompilatora. Gdy czasy realizacji są długie, dodatkowy koszt pisania end if
zamiast po prostu )
jest uzasadniony, jeśli pomaga to poprawić jakość diagnostyki, ponieważ programista musi poprawić jak najwięcej błędów w jednej iteracji, aby zmniejszyć straty czasu iteracje przez okno przesyłania zadania.
Kiedy brakuje zamykającego nawiasu klamrowego, trudno jest stwierdzić, który otwarty nawias klamrowy jest tym, który nie jest zamknięty. (Kompilator może przeanalizować wcięcie, aby odgadnąć odgadnięcie). Jeśli usuniesz nawias zamykający wewnątrz funkcji, wygląda na to, że cała reszta pliku jest częścią tej funkcji, co powoduje lawinę niepomyślnych komunikatów o błędach. Podczas gdy jeśli masz end function
składnię, kompilator może wywnioskować, gdzie kończy się błędna funkcja, odzyskać i poprawnie przeanalizować kolejne funkcje, zapewniając dodatkową diagnostykę, jeśli taka ma znaczenie.
Gdy pracujesz w edytorze tekstów z rozpoznawaniem kodu, który automatycznie wcina i koloruje kod, na ekranie o wysokiej rozdzielczości, w którym widać sześćdziesiąt lub więcej wierszy, argumenty dla tego rodzaju niezdarnych języków nie mają już zastosowania. Możesz stopniowo edytować i odbudowywać programy tak szybko, że możesz poradzić sobie z jednym błędem naraz. Ponadto, widząc jednocześnie duże sekcje programu na ekranie i utrzymując odpowiednie wcięcie, możesz w pierwszej kolejności ograniczyć występowanie tego rodzaju błędów zagnieżdżania. Dobry programujący edytor tekstu będzie nawet oznaczał niektóre rodzaje błędów składniowych podczas pisania. Co więcej, istnieją składane edytory, które zwiną bloki programu na podstawie jego składni, dając „zarysowy” widok jego struktury.
Lisp od samego początku używał nawiasów i być może nieprzypadkowo hakerzy Lisp byli pionierami programowania jako interaktywnego doświadczenia, budując systemy przyjmujące programy w małych porcjach (wyrażeniach).
W rzeczywistości wcale nie potrzebujesz symboli końcowych, jak ilustruje język Python. Identyfikacja może być po prostu strukturą. Ludzie już używają wcięć, aby przeglądać strukturę kodu nawet w językach, w których maszyna polega na końcowych symbolach lub frazach.