Schematy blokowe – czy warto ich używać?

Czy istnieją programiści, którzy nie wiedzą czym są schematy blokowe? Chyba raczej niemożliwe? A jednak… Muszę się przyznać, że kiedy zaczynałem naukę programowania, w ogóle o istnieniu czegoś takiego nie słyszałem. Z moich wyliczeń wynika, że programowałem(a raczej uczyłem się programować) bez znajomości rzeczy tak elementarnej, przez około rok. W sumie, nawet szło mi całkiem nieźle. Skąd dowiedziałem się o schematach blokowych? Było to chyba około dwóch lat temu, przy okazji jakiegoś konkursu. Od tamtej pory wiedziałem czym one są, jednak kompletnie nie interesowały mnie szczegóły. Nie wnikałem, stwierdziłem że to bajer, który nie jest mi do niczego potrzeby. Po tych dwóch latach, schematy blokowe wróciły do mnie jak bumerang – na lekcji w szkole 😉

Nauka programowania, a schematy blokowe

Czy warto rozpoczynać naukę programowania od schematów blokowych, czy to tylko strata czasu? Moim jest to strata czasu. Dlaczego? Jeżeli schemat blokowy ma narysować osoba nigdy nie programująca to istnieje bardzo duże prawdopodobieństwo, że zrobi to źle, lub nie do końca dobrze. Wynika to bezpośrednio z tego, że nie zna ona specyfiki pisania programów i zapisze w nim rzeczy, które nie będą zgodne z tym jak się je pisze. Przykład? Załóżmy, że mamy narysować schemat blokowy sprawdzający czy dana liczba jest parzysta. Jak zrobiłaby to nieobeznana z programowaniem osoba, znająca podstawy budowy schematów blokowych? Zapewne tak:

schemat
Sorry, za jakość. Nie jestem mistrzem painta 😉

Niby schemat jest narysowany dobrze, jednak czy da się to tak zapisać w języku programowania? No, da się jeżeli mamy do dyspozycji metodę do sprawdzania parzystości… Jednak na takim schemacie blok decyzyjny powinien raczej zawierać coś w deseń „czy a jest podzielne przez 2?”. Przykład jest bardzo prosty i w sumie poprawny, gorzej może być z bardziej rozbudowanymi. Niektórych rzeczy nie da się tak rozpisać, nie uwzględniając funkcji specyficznych dla danego języka. Ja nie wyobrażam sobie np. rozpisywania w ten sposób gier pisanych w MonoGame, nawet tych bardzo prostych. Co, więc nauka takich schematów wnosi? Moim zdaniem nic, poza poznaniem zasady działania bloków warunkowych, pętli, oraz tego, że każdy program ma swój początek i koniec. Ba, składni tych rzeczy i tak trzeba będzie się nauczyć. Po co więc, bawić się na bloczkach, skoro można poświecić ten czas na robienie takich rzeczy w normalnym języku programowania – testując przy okazji poprawność takiego zapisu?

Moim zdaniem zabawa w bloczki sensu nie ma, tym bardziej nauka, który kształt co oznacza… sztuka dla sztuki – jednak zaznaczam raz jeszcze, to tylko moje subiektywne zdanie 🙂 Z drugiej strony… jak to mawiają „od przybytku głowa nie boli”.

Reasumując: Schematy blokowe może złe nie są, jednak zabawa z nimi jest lekką stratą czasu, zwłaszcza dla tak prostych algorytmów. Wszystko można zapisać od razu w języku programowania, co dodatkowo umożliwi na bieżąco naukę na własnych błędach.

Schematy blokowe, a tworzenie aplikacji

Trochę inaczej sprawa ma się w przypadku kiedy potrafimy już programować i tworzymy jakiś większy projekt. Tutaj na pewno powinna mieć zastosowanie zasada: najpierw myśl i planuj, później pisz. Generalnie dobrze jest też sobie rozpisać, jakie klasy/metody/pola w kodzie będą za co odpowiadać. Jak w ogóle program ma działać i wyglądać. Im więcej rzeczy przewidzi się na początku tym łatwiej jest później pisać. Jednak czy ktokolwiek będzie rozpisywał spory projekt na bloczki? Moim zdaniem dużo lepiej jest opisać słownie wszystkie założenia projektu, rozrysować jego GUI i go realizować, niż bawić się w poprawne rozpisywanie schematu blokowego – który musiałby być na prawdę ogromny przy większych projektach. Z kolei w tak wielkim i zawiłym schemacie blokowym mało kto się połapie… nie mówiąc już o błędach, które mogą gdzieś się pojawić.

A co wy sądzicie o schematach blokowych? Używacie ich projektując aplikacje? Jestem ciekawy Waszych opinii 😉

 

565 total views, 2 views today

4 przemyślenia nt. „Schematy blokowe – czy warto ich używać?

  1. Schematy blokowe nie służą do nauki konkretnego języka czy biblioteki, a do nauki algorytmiki i ogólnego pojęcia czym jest programowanie. Każde sprawdzenie (jak w przykładzie w poście) można traktować jako wywołanie jakieś metody z czarnej skrzynki. Ewentualnie można sobie wprowadzić bloczek wywołujący inną metodę i napisać ją na boku, przy okazji ucząc się jak to poprawnie zrobić. W większych projektach nie korzystam ze schematów blokowych, już szybciej z UML/SysML.

    Pozdrawiam.

    • Można wszystko, jednak czy warto poświęcać na to czas? 🙂 W przypadku małych projektów schemat blokowy jest nie potrzebny (wszystko można szybko przemyśleć w głowie), z kolei w przypadku dużych… taki schemat byłby trochę nieprzejrzysty. Przynajmniej mi się tak wydaje.
      Co do UML/SysML, nigdy o tym nie słyszałem. Muszę doczytać 😉

      Również pozdrawiam!

      • Jak będziesz robił bardziej skomplikowany projekt w którym pętle decyzyjne się zazębiają i przenikają to nagle zrozumiesz potrzebę stosowania schematu blokowego, a gdy projekt będzie robiony w kilka osób i każdy będzie chciał coś swojego dodać… to bez schematów ani rusz 🙂

        • Wtedy powstaje kolejny problem. Mianowicie rozbudowywanie takiego schematu… nie wyobrażam sobie rysowania czegoś takiego przez wiele osób jednocześnie. Może zmienię zdanie nt. schematów, kiedy faktycznie będę miał potrzebę ich używania. Tymczasem wydaje mi się, że znacznie lepszym pomysłem jest tworzenie dokumentacji do kodu, jeżeli mówimy o jakiś sporych projektach 😉

          Pozdrawiam!

Możliwość komentowania jest wyłączona.