Zamiast funkcji zacznij od podprogramów . Powiedz im, że program to tylko lista instrukcji, przepis, który mówi komputerowi, jak coś zrobić. I że jest wykonywana jedna instrukcja po drugiej (z możliwością wykonania kilku kroków równolegle, ale więcej o tym później).
Niektóre zadania są dość powszechne i powtarzalne, więc byłoby okropne, gdybyśmy musieli je zawsze zapisywać raz za razem, więc piszemy je tylko raz i tworzymy z niego „mniejszy program” - podprogram , który może być ponownie wykorzystany przez inne części programu. Aby móc go wykonać więcej niż raz, nadajemy mu znaczącą nazwę w naszym programie. A potem możemy użyć tej nazwy, gdy chcemy uruchomić ten „mały program” jako część większego, nazywając go tą nazwą.
Wywołanie podprogramu przypomina przywołanie demona, który wie, jak wykonać to zadanie, pod nazwą tego demona. Kiedy więc chcemy wykonać to konkretne zadanie w naszym programie, piszemy „wzywamy demona o imieniu Argoth”, a demon pojawia się i wykonuje to zadanie, tak jak mu to nakazaliśmy, a następnie odchodzi i możemy kontynuować praca.
Czasami demon wymaga dodatkowych informacji, bez których nie może zdecydować, które zadania wykonać lub czego naprawdę od niego chcemy. Np. Jeśli demon ma zbudować zamek, może potrzebować wiedzieć, gdzie ma go zbudować, jak duży , itp. To są argumenty przekazane demonowi ... Mam na myśli podprogram, który teraz staje się sparametryzowane .
Parametry to te informacje, których brakuje, ale są wymagane do wykonania zadania. Zmieniają nieco to, co podprogram może zrobić. Są jak puste miejsca w przepisie, które należy wypełnić, zanim będziemy mogli je wykonać.
Z drugiej strony argumenty to rzeczywiste informacje (wartości), które podajemy dla tych parametrów.
Jeśli chodzi o wykonywanie równoległe, możemy myśleć o tym w ten sposób: zawsze ktoś (lub coś ) wykonuje program (lista instrukcji). To albo inna istota ludzka (czy wiesz, że „komputer” był kiedyś imieniem osoby wykonującej obliczenia?), Albo maszyna. Program jest tylko listą instrukcji, nie działa samodzielnie. Musi być ktoś lub coś, kto wykona proces obliczeniowy(wykonaj te czynności z listy). Czasami te czynności można wykonywać równolegle - możemy rozdzielić kopie listy kilku osobom i pozwolić każdemu z nich wykonać inny zestaw zadań z listy, o ile nie przeszkadzają sobie nawzajem lub nie „ muszę czekać na wyniki czyjejś pracy. To dla ciebie wielowątkowość ;)
Jeśli chodzi o różnicę między funkcjami i podprogramami (zwanymi również procedurami ), zwykle różni się to, że funkcja jest wywoływana w celu obliczenia pewnej wartości, którą zwraca w wyniku jej wykonania, podczas gdy procedury są wykonywane dla zabawy;) AKA za ich „skutki uboczne” - tylko ze względu na operacje wykonywane z listy.
Ale jeśli wywołanie procedury lub funkcji powoduje najpierw problemy, możesz użyć innego terminu, który był kiedyś popularny: skakanie . Można przejść do podprogramu, co oznacza, że przestajesz wykonywać to, co teraz robisz, i „przeskakujesz” do innego miejsca na liście (lub innej listy) - podprogramu - w celu wykonania jego zadań. Następnie, kiedy skończysz, „odskakujesz” - to znaczy wracasz do miejsca, w którym ci przeszkodzono, abyś mógł kontynuować poprzednie zadanie. Różnica między wzywaniem a skakaniem polega na tym, że teraz jesteś demonem.
Jeśli chodzi o metody wspomniane przez kogoś lub fakt, że niektóre języki „nie mają funkcji, tylko metody” - to nie do końca poprawne, ponieważ metody są funkcjami! - ich szczególny rodzaj : są to funkcje, które służą do wyszukiwania niektórych informacji zawartych w obiekcie lub do operowania nimi. Są „metodą operowania na tych danych”. Nazwa pochodzi od paradygmatu obiektowego, w którym dane są otoczone obiektami i nie mogą być obsługiwane bezpośrednio, tylko za pomocą specjalnych funkcji zwanych „metodami”.
Metoda jest wyjątkowa w pewien inny sposób: musi wiedzieć, który konkretny obiekt ma obsługiwać / być wywoływany (obiekt „ten”). Właśnie dlatego metody są zwykle ozdobione dodatkowym ukrytym parametrem, który przechowuje informacje o obiekcie, do którego został wywołany (wskaźnik „ten”). To komplikuje sposób, w jaki funkcja jest nieco nazywana, ale jest to „szczegół implementacji”, który programista nie powinien niepokoić, o ile wie, co robi.