Wyzwanie, niewyzwanie… jak wytłumaczyć implicitly unwrapped optional variable kompletnemu laikowi lub osobie rozpoczynającą przygodę z programowaniem w swift w szkołach programowania czy tam bootsrtapowych. Jak zwał tak zwał. Oraz jak to zrobić wykorzystując jak najmniej znaków? Ja dodałem trochę więcej słów, oryginalnie zamknąłem się w 382 znakach.

Mam jedno założenie co do całości – wiemy co to jest zmienna, nie będę tutaj tłumaczył tego i próbował opisać co to takiego jest. Jeżeli szkoła programowania z miejsca daje implicitly unwrapped optional variable to zmieńcie szkołę :)

Dla początkującego

Wyobraźmy sobie zapakowany prezent mogący zawierać dwie rzeczy: zabawkę lub bombę. Jak rozpakowujemy bombę to bęc, koniec. Jak zaś zabawkę to jesteśmy szczęśliwi.

Normalnie lubimy rozpakowywać prezenty jednak dziś mamy ich dostać tysiące i wolelibyśmy by to robił ktoś za nas i byśmy my dostawali już prezenty rozpakowane. Osobą rozpakowującą będzie mama. Czyli jak ktoś nam przekazuje prezent to do naszych rąk trafia on rozpakowany przez mamę. No chyba że było boom.

Optional to taki prezent zawierający zabawkę lub bombę – nasz kumpel/nasza koleżanka do momentu przekazania nam tego prezentu może się bawić i wsadzać do prezentu raz bombę a raz zabawkę. Implicitly unwrapped to nasza mama rozpakowująca prezent. Jak nasza koleżanka przekaże prezent mamie to już w tym momencie nic z nim nie może ona już zrobić. Mama jest trochę outdated i nie potrafi wykrywać bomb tak jak my. Więc jak nasz prezent ma bombę to mama sobie z nią nie poradzi.

W kodzie

var bomb: Present! = nil
let thisWillBlow = bomb // boooooom, mum and you died

bomb = Present()
let gotAToy = bomb // ok, everything is ok

Podsumowanie

I jak tłumaczenie dla początkujących? Daje radę?

8 KOMENTARZE

  1. Ja jestem początkujący tzn coś-niecoś o programowaniu się wie, ale nie umiem Swifta. Czyli na uczestnika bootcampa bym się nadawał. I, szczerze, nie rozumiem.

    • ok, to powiedz czy wiesz co to jest zmienna gdyż implicitly unwrapped optional variable to zmienna? oraz czego nie rozumiesz? na przykład: nie rozumiem co ma mama do detektora bomby i czemu ja miałbym wiedzieć jak bombę rozbroić? czy nie rozumiem idei prezentu który może mieć dwie rzeczy w środku, jak to się ma do zmiennych?

      • Wiem, co to jest zmienna. Wiem, co to jest parametr. wiem też, czym się różnią funkcje od metod, rozróżniam klasę od biblioteki, a nawet wiem co to są copybooki :> Ale tego nie do końca rozumiem.
        Z punktu widzenia metafory – nie rozumiem, po co otwierać prezent, w którym może być bomba. Nie rozumiem, po co mamy otwierać ich tysiące. Nie rozumiem, po co otwiera mama, skoro i tak obie osoby giną.
        Z punktu widzenia mojej biednej wiedzy programistycznej, nie czuję czym jest wrapped/unwrapped variable. Może dlatego, że w zawijaniec w świecie komputerowym kojarzy mi się od razu z web wrapperami i download wrapperami na Windowsa, czyli badziewiem :>

        Na koniec przyszło mi do głowy, że przy metaforze z bombą zamiast dziecka pasowałby jakiś zwariowany dyktator – tacy to faktycznie mieli dla siebie speców do rozpakowywania niebezpiecznych prezentów. Z drugiej strony, dla ludzi, którzy nie podzielają moich zainteresowań to może być mniej jasne.

        • No to po kolei:
          1) prezentu nie musisz otwierac. do poki go nie otworzysz nic sie nie wydarzy. (tworzysz zmienna i nic z nia nie robisz)
          2) dlaczego tysiace? bo moze masz urodziny i znajomi przychodza z prezentami?. (wykorzystujesz to wielokrotnie w kodzie i nie chcesz za kazdym razem pisac ze chcesz pobrac dane ukryte w zmiennej – prezencie)
          3) otwiera mama, jako ze nie robisz to ty – czyli nie ty wykonujesz akcje tylko ktos posredni. nie chcesz mamy niech otwiera Ci dyktator. jezeli spieramy sie co do uzycia slow kluczowych, to nie ma sensu ta dyskusja :) (patrz punkt wyzej, nie chcesz tego za kazdym razem pisac)
          4) gina wszyscy. jezeli jest bomba to konczy sie wykonywanie programu. grasz tutaj w rosyjska ruletke z wyrzutnia granatnikow. zakladasz ze zawsze bedzie tam wartosc jednak na wszelki wypadek zabezpieczesz sie jakby jej nie bylo.

          Jednak trzeba dodac, ze tlumaczenie slowne tego nie ma sensu i podczs tlumaczenia trzeba by bylo wskazywac przyklady bezposrednio w kodzie. to jednak nie lekcja.

        • Nie chodzi o spieranie się o słowa. Metafora czy porównanie muszą być celne, jeśli mają przemówić do człowieka. Z tą, przyznaję, miałbym problem :>
          Pewnie zrobiłoby się jaśniej, gdybym zobaczył to na przykładzie i wiedział, po co w ogóle taka kombinacja i jakie z tego zyski.

          • tak, tutaj opis slowny sam nie ma sensu. i opowiadac by trzeba bylo jak napisalem pokazujac kod. jak i takze pokazac forced unwrapped i powiedziec czym sie rozni implicit od forced. Jednak, jezeli nie znasz programowania to kod Ci sie nie przyda. i teraz dla Ciebie zadziala dyktator, dla innych mama i dzieci. dla jeszcze innych wciskanie guzikow w windzie zamiast dziecka. Zalozenie jednak jest ze kiedy masz implicit to zadko jest bomba lub bomba to wyjatek. wiec w tym momencie dytaktor by zyl :)

Comments are closed.