Chrońmy subtelny klimat KAŻDEGO języka! Czyli pragmatyka vs. Matematyka

Tyle się mówi o czystości języka, zapobieganiu kalkom, czy uzdatnianiu słów i fraz na potrzeby języka polskiego.
Tyle się mówi o konieczności czytelnego i wyraźnego kodowania w językach wysokiego poziomu, tak mocne są starcia pomiędzy programistami różnych języków o konwencję.
I bardzo słusznie. Każde działanie mające na celu utrzymanie pewnego specyficznego klimatu języka którym się w pewnych sytuacjach posługujemy jest rzeczą dobrą, i wartą poparcia.
Jednakże nie widzę absolutnie żadnych podstaw do nawracania na jedynie słuszną drogę ludzi reprezentujących trochę odmienne przekonania i dążenia, które wyrażają w innym, posiadającym WŁASNY klimat, języku.

Dlatego mówię NIE takim ogólnym hasłom jak to:

Wyrażenie występujące na tym sloganie wzięte jest żywcem z mojego programu z MatLab’a.
A matlab jak wiadomo jest językiem matematycznym. Więc dlaczego pozbawiać go subtelnego uroku wyrażenia matematycznego.

Wiem z doświadczenia, że w dużych projektach w językach obiektowych jednoliterowe zmienne nie tylko drażnią, ale i powodują błędy. Natomiast jakby nie spojrzeć, opisywanie zmiennych matematycznych za pomocą nazw w stylu „czestotliwosc_probkowania” jest niszczeniem klimatu matematyki i sztucznym wydłużaniem skomplikowanych wyrażeń które stają się przez to, paradoksalnie, jeszcze bardziej nieczytelne ze względu na rozwlekłość zapisu.

Rozważmy więc, czy jest sens sobie utrudniać życie.

  1. Zapiszmy ten kod jako:
    sum( drugiSygnal(aktualnaProbka+1).* exp(-j*2*pi* (czestotliwosci(aktualnaCzestotliwosc) + 1)*aktualnaProbka/liczbaProbek))/liczbaProbek;

    To jest może przykład skrajnego rozpisania, ale IMO łatwiejsze w odbiorze i dużo prostsze w debugowaniu 🙂

    Z resztą cytując kolegę „matematyka ma to do siebie, że jest niezrozumiała, więc skoro MATLAB jest językiem matematycznym, to kod ma być przez to też niezrozumiały?” ;).

    Pozdrawiam!

  2. A w moim przekonaniu czytanie czegość co zajmuje prawie dwie linijki sprawia, że skupiam się na tym, jak sensownie zlepić w całość, a nie na tym, co to wyrażenie znaczy. Zanim dojdę do końca tego długiego symboli „aktualnaCzestotliwosc” musze do wlasnej pamieci czytac cale 21 znakow. Przedstawiaja one jedno pojecie, ale majac na uwadze, ze rozmawiamy o matematycznym dzialaniu, trzeba sie piec razy zastanowic,czy tam gdzies nie ma implicite wprowadzonego mnozenia, albo czegos w tym gatunku. Kiedy mam zagwarantowane, ze kazda zmienna to litera, w dodatku jest jasna konwencja – duze litery = wektory i macierze, male litery to pojedyncze liczby, interpretacja staje sie prosta, a zapis sprzyja wykonywaniu operacji w pamieci.
    Kto z nas nie probował przyswoić w liceum masakrycznych wzorów opisowych rodem z podręcznika do przedsiębiorczości lub wiedzy o społeczeństwie? Kreski ułamkowe ciągnące się przez pół strony tylko po to, aby oznaczyć dzielenie dwóch wartości, a przecież można było czterema słowami „stosunek a do be”.

    Matematyka jest często niezrozumiała, ale to z powodu mnogości pojęć i skrótów matematyków, którzy uważają, że wszystko jest jasne. Zapis nie ma tu nic do rzeczy – a nawet podążając Twoim, Temporal, tokiem rozumowania, to im krócej tym lepiej, bo mniej się będziesz z Tą okropną matematyką męczył. Nieprawdaż? ;P

  3. Później sondy rozbijają się o powierzchnię marsa, bo ktoś przeoczył, że masa „m” we wzorze jest podana w funtach a nie jednostkach SI 🙂

    Nie mam nic przeciwko jednoliterowym nazwą zmiennych, o ile występują w krótkim fragmencie programu, który od razu wiadomo co robi lub jest bardzo dobrze okomentowany. Kod taki jak wyżej w banerku moim zdaniem wymaga przynajmniej 2 linii komentarza aby opisać co robi (co robi, a nie co powinien liczyć).

  4. A ja myślę, że jednoliterowe zmienne są fajne. Ostatnio może trochę z przymusu, zacząłem pisać obiektowo w C++ i myślę, że jeśli stworzymy klasę, możemy do niej wpakować zmienne jednoliterowe, tylko trzeba ją opisać. Dobrym zwyczajem jest opisanie klasy tak, jak opisuje się funkcje pisane w matlabie, czyli na początku kilka linijek komentarzy i nie musimy później się martwić, że uleci nam to z pamięci co tam jest, co jest potrzebne i jak działa.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.