Gadatliwość to tendencja do używania dużej ilości tekstu, a zwięzłość użycie bardzo małej ilości tekstu ...
Gadatliwość jest zła, ponieważ:
- wprowadza więcej okazji do błędów typograficznych
- utrudnia to czytanie kodu na ekranie lub papierze i / lub wprowadzanie na karcie dziurkacza
- wydłuża to czas debugowania
- utrudnia to zrozumienie kodu do aktualizacji / konserwacji
- może to prowadzić do niezamierzonego powielania kodu
- zwiększa to nieco prawdopodobieństwo błędu składniowego
- zmniejsza elastyczność kodowania, przez co większość pełnych języków ma wysoce uporządkowaną strukturę i nie ma wielu sposobów na powiedzenie tego samego.
- wydłuża czas kodowania i kompilacji
- może zająć więcej miejsca.
Pewny poziom szczegółowości jest niezbędny dla jasności, jednak ...
minimalny poziom gadatliwości jest dobry, ponieważ:
- ludziom łatwiej jest odczytać i przypisać wartość semantyczną niż kodowi czysto symbolicznemu
- W nazwach zmiennych i funkcji ułatwia debugowanie, przenoszenie i obsługę kodu
- w operacjach języka podstawowego i słowach kluczowych w złożonych językach prowadzi to do mniejszej liczby niepoprawnych przypisań operacji / słów kluczowych.
Niektóre wspaniałe przykłady zbyt lakoniczny poleceń dla wielu ludzi to stare PODSTAWOWE standbys val(x$)
, str$(x)
i chr$(x)
... powrót numer z jej ciąg znaków, powrót na ciąg liczb, a także zwraca pojedynczy znak mający wartość ASCII X jako ciąg znaków.
Lub wskaźnik C / C ++ i operatory referencyjne &
oraz w *
porównaniu ze byref
słowem kluczowym BASIC . W C / C ++ mogę mieć zmienną X i przekazać wskaźnik do tej zmiennej, ale muszę pamiętać, który to wskaźnik, a który to „użyj wskaźnika jako zmiennej, na którą wskazuje”; w zasadzie po prostu przekazuję odwołanie słowem kluczowym byref w wywołaniu funkcji, co jest bardziej jasne, ale mniej elastyczne:
def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)
W tym kodzie zawartość x jest modyfikowana z powodu flagi byref. Niektóre smaki pozwalają byref na telefon, inne w definicji, niektóre w obu.
Szczegółowość jest ważna dla zwykłych programistów, aby mogli łatwiej korzystać z symboliki; BASIC lub python są bardziej czytelne dla ludzi i bardziej gadatliwe niż C / C ++, a zatem znacznie bardziej przydatne dla zwykłych programistów; zwięzłość C / C ++ sprawia, że jest to znacznie lepsze dla bardziej doświadczonych programistów, którzy muszą zobaczyć więcej kodu i bardziej złożony kod na jednym ekranie, ale musieli nauczyć się różnych konwencji struktury symbolicznej. Na drugim końcu znajduje się APL, który jest prawie całkowicie nieczytelny dla człowieka.
Powiązanym ze sobą problemem jest przejrzystość - zwięzły kod jest często niejasny, a nadmiernie szczegółowy kod (jak w AppleScript) może być równie niejasny. Znajomość danego języka zwiększa przejrzystość zwięzłego kodu w tym języku - surowy początkujący, stojący w obliczu kodu C ++ prawdopodobnie będzie w stanie analizować tylko formuły, a nawet bardzo funkcjonalny kod BASIC lub Python jest zbyt krótki, aby go zrozumieć, ale AppleScript potrafi być zaskoczonym, ogólnie rzecz biorąc, bez uciekania się do słowników językowych. Najmniej jasne, jakie spotkałem bez celowego zaciemniania, to Inform 7 ...
W dawnych czasach
Innym ważnym zagadnieniem w przeszłości, ale tym, które nie jest już tak ważne dla programisty hobbystycznego, jest obsługa i przestrzeń do przechowywania. (W dalszym ciągu jest to niezwykle ważne.) Pamiętając, że zinterpretowano wiele języków, zwłaszcza BASIC, a wiele innych zostało skompilowanych w czasie wykonywania, przestrzeń kodu była ważna, szczególnie gdy dyski miały tylko 128 KB, a pojedyncze karty dziurkaczy tylko 80 B.
Istniało kilka rozwiązań - tokenizacja była niezwykle powszechna w języku BASIC; poszczególne słowa kluczowe w języku zostały zredukowane do 1 lub 2 bajtowego słowa w górnej 128 lub w przestrzeni kontrolnej. Tokenizacja prowadzi również do kompilacji kodu bajtowego (jak w Inform i Z-Machine).
Do obejścia ograniczeń przestrzeni wykorzystano także kompilację i łączenie wielu plików obiektowych. Sekcja kodu Pascal 100 kB może zostać skompilowana tylko do 5 kB; łącząc wiele skompilowanych plików, można budować masywne aplikacje bez dostępu do dysków wielkoformatowych (pamiętając, że 10 MB był zadziwiająco duży, a drogi zakup nowego samochodu).
Jednak więcej zwięzłych języków dostało więcej kodu do danego fragmentu dysku i pamięci RAM, a tym samym skompilowało większe fragmenty naraz. Pamiętając: „minikomputery” z początku lat 70. XX wieku mogły mieć tylko 64 kB pamięci RAM (Honeywell 800 miał podstawową instalację 4 banków po 2048 słów po 8B każdy). APL i podobne języki symboliczne zbliżyły się do 1B na instrukcję plus jej operandy, w porównaniu do znacznie większej 3B-10B na instrukcję plus operandy. (Pisanie na kartach punktowych było koszmarem, zwłaszcza, że symbole były zasadniczo czcionką na typ-ball, a wiele kart nie miało symboli na klawiszach ...)
Pamiętaj też, że kart nie można usunąć ... i wiele programów wprowadzono na kartach. Chociaż nie jest to indywidualnie drogie, im bardziej skompresowany kod może znajdować się na karcie, tym mniej potrzebujesz, i tym większe mogą być programy lub mniej kosztowne. Jest to jeden z powodów, dla których BASIC łączy wiele instrukcji na linię w większości odmian - wprowadzono, aby oszczędzać na kartach poncz. (A przynajmniej tak mówi mój tekst programowania Vax Basic.) Chociaż nie zaprogramowałem czytnika kart, wykonałem wykrawanie kart dla Honeywell 800 w FORTRAN, BASIC, APL i kilku innych wysoce symbolicznych językach.