Kwiatki początkującego programisty

Nauka pierwszego języka programowania to wspaniała przygoda. Towarzyszy temu tak wiele niewiadomych, niepewność, a zarazem ciekawość czy wręcz ekscytacja. Programy drukujące napisy na ekranie konsoli, pierwsze pętle, metody… Na początku to wcale nie było łatwe i kosztowało wiele nerwów. Jednak z perspektywy czasu można spojrzeć na to z uśmiechem na twarzy. Pozostając w dobrym humorze postanowiłem opisać kilka ciekawych przypadków, których byłem świadkiem ;).

Program ma wolne w niedzielę

Moim pierwszym „większym” programem była aplikacja konsolowa napisana w C++ – Dziennik ucznia. Nic szczególnego: możliwość wprowadzania ocen dla poszczególnych przedmiotów wraz adnotacjami, obliczanie średniej, przypomnienia oraz notatnik. Wszystko starannie sformatowane. Ekran logowania – czemu rodzicie mieliby wiedzieć o wszystkich moich ocenach? Oczywiście dane w pliku przechowywane w plain text 😉 Na ekranie wyświetlana aktualna data.

Jak wielkie było moje zdziwienie, gdy następnego dnia po ukończeniu, program odmawiał posłuszeństwa. Nic nie zmieniałem w kodzie programu, nie zapisywałem żadnych danych, a ekran konsoli zapełniał się znakami jak z „Matriksa”. Zrozpaczony utratą tygodniowej pracy zacząłem przeczesywać kod w poszukiwaniu nie tyle błędu co ratunku. Wprawdzie wystarczyło wcisnąć F5 w VS, ale to nie był jeszcze ten poziom wiedzy. Okazało się, że tłumacząc dzień tygodnia poprzez tablicę stringów pomyliłem indeksowanie. Do niedzieli odwoływałem się jako do 7 elementu w tablicy właśnie tej długości. Stąd też po uruchomieniu bez zmiany kodu program się wysypywał. Przełomowe odkrycie nadeszło dopiero w poniedziałek…

Release? Co to takiego?

Na pierwszym roku studiów, na podstawach programowania – projekt zaliczeniowy. Ponownie C++, tym razem aplikacja okienkowa w Win32, CreateWindowEx i te sprawy (pozdrawiam prowadzącego, który stwierdził, że się nie napracowałem bo cały interfejs sobie wyklikałem). Moja aplikacja wyszukiwała połączenia kolejowe oraz rysowała przebieg trasy na mapie.

Przychodzę na obronę projektu i dowiaduje się, że nie można uruchomić programu. Wtedy pierwszy raz usłyszałem pojęcie „release”. Poza tym, że dostarczyłem wersję debug, to jeszcze bez bibliotek dla Visual C++. W tamtym czasie uruchomienie programu w C++ napisanego w Visual C++ Express to była magia. Dopiero na drugim semestrze opanowałem to do perfekcji 😉 Ale to i tak nie przebija mojego kolegi, który przyszedł do mnie z pakietem Office na dyskietce. Przyniósł mi skrót do MS Worda…

Po co komu return?

Na koniec coś co miałem okazję podziwiać pracując na uczelni jako asystent na podstawach programowania. Podchodzę do pewnego studenta i spoglądam na postępy w rozwiązywaniu zadań. Moją uwagę zwrócił całkowity brak słowa kluczowego return. W sumie nic dziwnego, gdyby nie fakt, że patrzyłem na metodę obliczającą średnią (nie pamiętam co to dokładnie było, ale to wystarczająco dobrze obrazuje sytuacje).

Jak można w takim wypadku pozyskać wynik obliczeń? Okazuje się, że bardzo prosto. Otóż ten pan utworzył jedną globalną zmienną, do której przypisywał wynik w każdej metodzie. Wyglądało to mniej więcej tak:

int wynik;

void max(int a, int b)
{
   if(a > b)
      wynik = a;
   else
      wynik = b;
}

int main()
{
   max(5, 10);
   std::cout << wynik << std::endl;
   return 0;
}

Moje tłumaczenia nie potrafiły przekonać studenta do zmiany zapisu. Ba, autorytet prowadzącego to było za mało. Ostatecznie zniesmaczony poprawił swój kod pozostając w przekonaniu, że zapis z return czy bez to to samo…

Share

3 myśli nt. „Kwiatki początkującego programisty

  1. Przykład „genialnego” studenta jest świetny.
    Artykuł zmusza do uśmiechu ,gdy sobie przypomnę moje początkowe wpadki
    – nagminne używanie if.. else puki ktoś nie pokazał mi instrukcji switch
    – lub porównanie 2 zmiennych z pisana wyliczoną wartością zero i błąd (0==0), po długiej walce okazał się że jedno z zer nie jest dokładnie zerem miało wartość 18 miliardowych jednak wypisując na okno zaokrąglał wartość do kilku miejsc po przecinku

    jak chyba każdy programista „błogosławie” dzień odkrycia funkcji klawisza F5 (później F9,F11)

  2. Bardzo przyjemny wpis.
    Właśnie jestem na samym początku i już mi do śmiechu. Nie studiuję informatyki, więc niestety nie mam okazji pośmiać się z innymi!

    Post wyżej pisano o nagminnym użyciu if else. Chyba następnego dnia po debiucie, na szczęście (albo i nie) dane mi było poznać w tym samym czasie i switch, jednak ogrom rzeczy, jakie jeszcze na mnie czekają, i tak przeraża.

  3. Przypomniawszy sobie Pascalowe początki mam uśmiech szerszy od twarzy 🙂
    -nagminne używanie zmiennych globalnych
    -pisanie „brzydkiego kodu”
    -brak pojęcia o debuggerze
    Pascal to było niesamowite przeżycie…było.
    teraz nie wyobrażam sobie życia bez c#, Javy (obiektów) – ale także i asemblera 🙂
    To zaskakujące jak dużo można się nauczyć w krótkim czasie, jednocześnie można długo ślęczeć nad problemem braku użycia skoku warunkowego 😀
    Pozdrawiam wszystkich programistów i innych zainteresowanych 😉

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Spam protection by WP Captcha-Free