Obecnie kończę mgr informatyki. Interesuję się językami programowania, szczególnie systemami typu. Zainteresowałem się badaniami w tej dziedzinie i w następnym semestrze rozpocznę doktorat na ten temat.
Oto prawdziwe pytanie: jak mogę wyjaśnić, co (chcę) zrobić osobom bez wcześniejszej wiedzy w dziedzinie informatyki lub dziedzin pokrewnych?
Tytuł pochodzi od faktów, że nawet nie jestem w stanie wyjaśnić, co robię moim rodzicom, znajomym i tak dalej. Tak, mogę powiedzieć „chodzi o to, aby pomóc twórcom oprogramowania pisać lepsze oprogramowanie” , ale nie sądzę, aby było to naprawdę przydatne: nie są świadomi „programowania”, nie mają pojęcia, co to znaczy. Wydaje mi się, że mówię, że jestem mechanikiem samochodowym dla kogoś ze średniowiecza: po prostu nie wiedzą o czym mówię, nie mówiąc już o tym, jak to poprawić.
Czy ktoś ma dobre analogie ze światem rzeczywistym? Oświecające przykłady powodujące momenty „a-ha”? Czy powinienem pokazywać krótki i prosty fragment kodu osobom w wieku 60+ bez doświadczenia informatycznego (ani naukowego)? Jeśli tak, jakiego języka powinienem użyć? Czy ktoś tutaj miał podobne problemy?
Odpowiedzi:
Jeśli masz kilka minut, większość ludzi wie, jak dodać i pomnożyć dwie trzycyfrowe liczby na papierze. Poproś ich, aby to zrobili (lub przyznać, że mogliby, gdyby musieli) i poproś ich, aby potwierdzili, że wykonują to zadanie metodycznie: jeśli liczba ta jest większa niż 9, to dodaj przeniesienie i tak dalej. Podany przez nich opis tego, co należy zrobić, jest przykładem algorytmu .
W ten sposób uczę ludzi algorytmu słownego i z mojego doświadczenia był to najlepszy przykład. Następnie możesz wyjaśnić, że można sobie wyobrazić, że są bardziej złożone zadania, które muszą wykonać komputery, i dlatego istnieje potrzeba jednoznacznego języka, aby zasilić komputer tymi algorytmami. Nastąpiło więc rozpowszechnienie języków programowania , ponieważ ludzie wyrażają swoje myśli w różny sposób, a ty poszukujesz sposobów zaprojektowania tych języków, aby trudniej było popełnić błędy.
To bardzo rozpoznawalna sytuacja. Większość ludzi nie ma pojęcia, że komputery, których używają, uruchamiają programy lub że programy te są pisanymi przez ludzi kodami źródłowymi lub że komputer może „odczytać” kod źródłowy, lub że obliczenia, które kojarzą z arytmetyką, są jedyną rzeczą, na którą komputery zrobić (i może przenosić dane i sieci).
Moje badania dotyczą komputerów kwantowych, więc kiedy ludzie pytają mnie, co robię, nie próbuję tego wyjaśniać. Zamiast tego próbuję wyjaśnić, że istnieje fizyka kwantowa (zwykle słyszeli o kocie Schrödingera i rzeczy, które znajdują się w dwóch miejscach jednocześnie) i że z powodu tej dziwnej fizyki możliwe jest szybsze obliczenia.
Moim celem jest sprawienie, by osoba poczuła się trochę bardziej kompetentna niż weszła, podekscytowana światem, o którym istnieniu nie wiedzieli, ale z którym go teraz poznaliście. Uważam, że jest to o wiele cenniejsze niż wyjaśnianie moich konkretnych pytań badawczych.
źródło
Spróbowałbym czegoś takiego:
Używam wyjaśnień w podobnym stylu dla mojej dziedziny (języki specyficzne dla domeny) i mogę zgłosić, że często pomogło mi to przezwyciężyć „och, jesteś informatykiem, nigdy nie mógłbym tego zrobić, pozwalając mi odejść i przestać mówić do Ciebie ”. Wydaje się, że kluczem jest wydobycie pierwszych par zdań, dopóki nie dojdzie do przykładu, do którego druga osoba może się odnieść, podobnie jak w tym przypadku dokumenty Word. Punkty bonusowe za specjalne udostępnianie przykładu drugiej osobie, takie jak Excel dla księgowych lub Powerpoint dla szefów lub gry komputerowe dla graczy lub przeglądarek internetowych itp.
Pamiętaj, że nie musisz pozostać na tym powierzchownym poziomie. Jeśli Ty (i druga osoba!) Chcesz, możesz zagłębić się w szczegóły tego, co dokładnie robisz. Na przykład: „W moim obecnym projekcie próbuję matematycznie udowodnić, że to, co wymyśliłem w zeszłym roku, faktycznie działa. Oznacza to, że muszę bardzo dokładnie zdefiniować, co tak naprawdę oznacza program i co mój wynalazek przewiduje dla programu, a następnie Mogę pokazać, że prognozy są słuszne ”.
źródło
Większość ludzi rozumie przepisy kulinarne. Jeśli postępujesz zgodnie z instrukcjami, dostaniesz porządny posiłek. Czasami jednak instrukcje mogą być trudne do wykonania. Na przykład, kiedy robisz perogie, znajdziesz takie instrukcje, wzięte słowo w słowo z polskich perogii babci :
Yikes. Przejrzyjmy dla nas życzliwą poradę babci. Upuszczaj je pojedynczo ... aby wszyscy mieli różną długość czasu w puli. Rozumiem. Robi się to, gdy unoszą się na szczyt . Ile to jest „oni”? Czy łapię każdego, gdy się pojawia? Czy czekam, aż 80% pojawi się na górze, a następnie zdobędę je wszystkie? To jest szalone niedokładne. Nie gotuj zbyt długo, bo będą rozmoczone! Jak zmierzyć, kiedy będą rozmoczeni, aby nie trwało to zbyt długo? Jeśli pięć osób wyskoczy jednocześnie na górę, czy będę miał czas na zdobycie ich wszystkich?
I zaufaj mi, zepsułem wiele perogii w ciągu dnia. Jest to poważny problem, na który wcześniej natknął się każdy kucharz perogie. Ale pomimo tych problemów, które ujawniają się nawet po najbardziej podstawowej analizie, ludzie nadal są w stanie robić perogie przy użyciu tej samej metody. Ale czy jest coś, co możemy zrobić, aby więcej serii perogii zakończyło się sukcesem i mniej partii perogii zawiodło?
Czy nie byłoby wspaniale, gdyby ktoś specjalizował się w tworzeniu bardziej niezawodnych przepisów? Ktoś, kto powiedział: „możemy potoczyć perogie, aby wyskoczyły z wody!” lub „możemy dodać specjalny barwnik do perogii, oczywiście bezpieczny do spożycia, który daje im różne odcienie i wiemy, że najpierw wyjmujemy te najciemniejsze, ponieważ są najbardziej narażone na rozmoczenie”. Chcemy eksperta, który może wziąć ten przepis i rozwiązać potencjalne problemy z nim. Życie kucharzy perogie na całym świecie będzie łatwiejsze, a psu będzie podawać mniej rozmoczonych kawałków makaronu i ziemniaków.
Programiści cały czas przestrzegają przepisów. Ale czasami sprzęt, którego używają, instrukcje, których używają, i interpretacje, których używają, nie łączą się, aby przygotować obfity posiłek, którego chcieli. Na szczęście są ludzie, którzy poświęcają swoją karierę, aby uczynić życie programisty bardziej produktywnym. W twoim przypadku specjalizujesz się w jednym z narzędzi używanych przez programistę, języku, aby spróbować je ulepszyć.
źródło
Oto jak chciałbym (spróbować) wyjaśnić to mojej mamie:
Języki programowania są używane przez ludzi do przekazywania instrukcji komputerowi. Wszystko, co robi komputer, odbywa się za pomocą kodu napisanego w języku programowania przez programistę.
Jeśli na przykład chcemy, aby kanał telewizyjny zmienił się po naciśnięciu przycisku, musielibyśmy napisać kod w języku programowania, aby to zrobić. To samo dotyczy wszystkiego, co dzieje się z laptopem, smartfonem i wszystkim innym, których działanie wymaga komputera.
Może się wydawać, że może istnieć jeden język programowania, którego programiści mogliby używać do pisania wszystkich programów. Ale tak nie jest. Istnieją różne języki programowania dla różnych typów aplikacji.
Niektóre są używane do tworzenia stron internetowych, inne do tworzenia aplikacji na laptopa (takich jak Microsoft Word).
Jednym z powodów, dla których istnieje wiele różnych języków programowania, jest to, że niektóre z nich lepiej nadają się do niektórych zadań niż inne. Innym powodem jest to, że niektóre języki są zaprojektowane do użytku z różnymi komputerami. Dlatego nie zawsze możesz wziąć kod napisany dla smartfona i uruchomić go na laptopie. I podczas gdy niektórzy programiści mogą programować w wielu językach, a wielu jest w stanie lub szybko uczy się nowych języków, każdy programista zna niektóre języki lepiej niż inne, a niektóre wcale.
Tak więc języki programowania są jedną z kluczowych technologii, dzięki którym komputery działają. Dobrze zaprojektowane języki programowania mogą znacznie zwiększyć wydajność programistów. Mogą także poprawić bezpieczeństwo i zmniejszyć błędy programistyczne, błędy i usterki.
I tak w zasadzie to właśnie studiuję: w jaki sposób różne części języków programowania wpływają na wydajność programisty? Które części danego języka ułatwiają pisanie kodu dla strony internetowej? Dlaczego niektóre języki są bardziej popularne niż inne?
Choć może się wydawać, że pytania te są ezoteryczne i dalekie od codziennego życia przeciętnego człowieka, jest odwrotnie. Nauka języków programowania jest niezbędna dla każdego produktu lub usługi korzystającej z komputera. A dziś oznacza to prawie wszystko;)
źródło
Najlepszym rozwiązaniem może być stworzenie analogii z ludzkimi językami.
Języki programowania służą do przekazywania instrukcji komputerom. Języki ludzkie są używane do przekazywania pomysłów innym ludziom i do formowania własnych myśli. Hipoteza Sapira-Whorfa mówi, że język, który używasz wpływa swoją myśl. (Stopień, w jakim hipoteza Sapira-Whorfa jest prawdziwa, jest dyskutowany, ale możemy zaakceptować, że jest ona prawdziwa podczas omawiania języków programowania. W przeciwnym razie równie dobrze możesz zrezygnować z doktoratu.)
Istnieje wiele różnych języków ludzkich, niektóre z funkcjami, które uważamy za egzotyczne. Na przykład:
Czy istnieje najlepszy język, mówiąc obiektywnie? Odpowiedź może zależeć od tego, co próbujesz zrobić.
Ostatecznie wszystko na komputerze zostaje przetłumaczone na język maszynowy, ale wybór odpowiedniego języka dla zadania może znacznie wpłynąć na produktywność, niezawodność, wydajność i sprawność oprogramowania. Wybieramy języki kaftana bezpieczeństwa, takie jak Ada lub Java, do „poważnych” projektów, a Ruby lub Perl, aby uzyskać maksymalną szybkość . W przypadku zapytań do bazy danych SQL jest zwykłym językiem; pisanie własnego kodu C byłoby idiotyczne.
Na podstawie tych analogii jestem pewien, że przez kilka godzin możesz objaśniać takie pomysły, jak programowanie funkcjonalne, bezpieczeństwo typów, wnioskowanie o typach itp.
źródło
języki komputerowe odnoszą się w przybliżeniu do języków ludzkich. używają standardowych / wspólnych / wspólnych słów. weź pod uwagę, że istnieją tysiące ludzkich języków, niektóre z nich są nieużywane, inne są aktywne, a ich słownictwo i użycie stale się rozwija z czasem. niektórzy ludzie tworzą nowe przydatne słowa do wyrażania pojęć, których wcześniej nie dało się wyrazić. innym nakładającym się aspektem języka komputerowego i języka ludzkiego jest gramatyka . niektóre języki, np. angielski, mają bardzo złożoną gramatykę. weź pod uwagę wszystkie różne czasy i złożone reguły, które nimi rządzą. inne języki nie mają tych samych czasów . inna korelacja dotyczy części mowykategorie, np. rzeczownik, czasownik, przysłówek, przymiotnik itp., działają one podobnie jak typy w językach komputerowych. wyobraź sobie tworzenie nowych języków z różnymi częściami kategorii mowy, które wcześniej nie były brane pod uwagę, lub z nowymi kombinacjami części mowy, które pochodzą z różnych języków itp .; należy więc pamiętać, że językoznawstwo ma związek z informatyką, np. szczególnie w teorii języka Chomskiego.
oprogramowanie i sprzęt często są powiązane z silnikami i maszynami, a nawet nazwane po nich. istnieje stara analogia oprogramowania, że próba modyfikacji złożonego systemu produkcyjnego 24/7 przypomina zmianę silników samolotu podczas lotu . należy również zauważyć, że silniki odrzutowe są bardzo złożone i wymagają ogromnej, precyzyjnej specyfikacji wymiennych częścia tutaj jest trochę analogii do języków komputerowych sterujących sprzętem. wyobraź sobie całą złożoność dokumentów, które dokładnie opisują, jak budować silniki odrzutowe: wszystkie części, jak są skonstruowane, jak pasują do siebie, jak są montowane itp .; są tworzone / kompilowane przez inżynierów przy użyciu precyzyjnego formatu / struktury / konwencjonalnych reguł; oprogramowanie jest nieco analogiczne do tego.
Jeśli chodzi o maszyny, każdy bez wykształcenia naukowego lub matematycznego, a nawet dziecko, może zrozumieć podstawową koncepcję i wiele aspektów maszyny Turinga! cudowne stworzenie. podejrzewa się, że Turing został zainspirowany maszynami do pisania i / lub maszynami do nadawania numerów. można opisać tabelę stanów i pokazać im przykładową tabelę stanów, która oblicza mnożenie, a ktoś może obejrzeć animację youtube maszyny Turinga obliczyć podstawowe obliczenia, takie jak mnożenie. powiedz im, że tabela stanu może obliczyć lub dosłownie zdecydować o języku, a dane wejściowe są dosłownie nazywane słowami . w rzeczywistości maszyny Turinga akceptują słowa w językachitd., a następnie powiedz im, że istnieją dwie tabele stanów, które obliczają mnożenie, ale jedna jest znacznie szybsza lub bardziej wydajna od drugiej, i że twoje badania wymagają znalezienia lepszych koncepcji tabeli stanów. zastanawianie się, jak skutecznie budować tabele stanów, obejmuje języki programowania podsumowujące zawartość dużych tabel stanów! kompilator konwertuje kod napisany w języku programowania na dużym stole państwowej.
Algorytmy sortowania są doskonałą metaforą na poziomie podstawowym w informatyce. można spojrzeć na różne listy instrukcji aka algorytm dla każdego rodzaju. można dowiedzieć się, czym jest sortowanie bąbelkowe w porównaniu do rodzaju wstawiania, można użyć talii kart. teraz skup się na różnych zestawach instrukcji i zastanów się, że muszą być napisane w bardzo precyzyjnym języku, tak precyzyjnym jak wyrażenia matematyczne, które mają ścisłą składnię itp. i mają podstawowe podobieństwa / struktury: logikę warunkową, pętle, zmienne itp. i wyjaśnij, że sztuka tej precyzyjnej specyfikacji dotyczy języków komputerowych, i że niektóre różne języki mogą dawać te same algorytmy, ale że istnieją pewne subtelne różnice stylistyczne w tych językach, które są badane na dużych głębokościach itp.
źródło
Mówisz po prostu: „Pomagam chłopakom, którzy uczą działanie komputerów”
Chodzi o to, że programiści uczą komputery robienia rzeczy za pomocą programów, a ty im pomagasz. Myślę, że to zadziała, zakładając, że już trochę wiedzą o komputerach.
źródło
Jeśli nie chcesz używać porównań, chociaż uważam, że „algorytm”, który przywołał Lieuwe, jest bardzo miły do przekazania tego pomysłu, możesz powiedzieć, że chcesz zmniejszyć nieporozumienia między ludźmi a komputerami. W końcu masz do czynienia z językami, a to chyba coś bardzo podstawowego dla ludzi. Dlaczego więc nie udawać, że komputer to kolejny umysł, z którym chcesz porozmawiać?
Ludzie stworzyli komputery, więc wiemy, jak działa umysł komputera. Ale komputer zwykle nie „wie”, jak działają nasze umysły. (Lub jaka była nasza rzeczywista intencja, kiedy piszemy skomplikowany i drobiazgowo wykonany błąd, który żyje w szczęściu w naszym kodzie przez wiele cykli;)) Zatem do nas należy dopracowanie języka, w którym się komunikujemy, i zmniejszyć możliwości nieporozumień. I to właśnie robisz. Analogie, takie jak sprawdzanie pisowni lub gramatyka, są oczywiście bardzo mile widziane w tym kontekście.
źródło
Oto dwie analogie, które mogą okazać się przydatne:
Moja praca przypomina trochę odkrywanie nowych podejść do notacji muzycznej. ( przykład ) Chociaż dominujące systemy notacji są dość skomplikowane, warto zbadać alternatywy, które skracają czas / wysiłek / błędy kompozytora, wykonawcy lub pozwalają na wyrażanie niezgrabnych lub niemożliwych do wyrażenia elementów w dominującym systemie, lub nawet promują różne rodzaje myślenia, a tym samym prowadzą do nowatorskich kompozycji. (Ułatwia to zrozumienie, że jednym z wyzwań jest przekonanie ludzi do przyjęcia nowych rzeczy).
Pomagam projektować lepsze narzędzia dla ludzi w mojej branży. Podobnie jak ludzie w branży produkcyjnej są wspierani przez innowacje, takie jak wiertarki bezprzewodowe, wycinarki laserowe i drukarki 3D (z których żadna nie istniała 60 lat temu), ludzie w branży tworzenia oprogramowania są wspierani przez mocniejsze, bardziej precyzyjne, bardziej niezawodne lub łatwiejsze w obsłudze języki programowania i ich funkcje.
źródło
Najprawdopodobniej masz jakiś powód do nauki języków - skorzystaj z tego powodu. Na przykład:
Jeśli to przykuwa ich uwagę, możesz zagłębić się nieco głębiej, ale nie zapominaj o dystansie wnioskowania - większość ludzi ma ogromne problemy z wyjaśnieniem czegoś, co jest zbyt dalekie od istniejącego doświadczenia i wiedzy ucznia.
Języki są daleko w dół po drabinie komputerowej. Ludzie, których próbujesz wyjaśnić, prawdopodobnie nie wiedzą, co to jest algorytm , tym bardziej, że istnieją różne sposoby reprezentowania tego algorytmu, które są mniej lub bardziej przydatne. Możesz wyjaśnić wszystko, jeśli przejdziesz wystarczająco delikatnie, ale bądź przygotowany na przejście przez wiele warstw, jeśli chcesz wyjaśnić coś tak „głębokiego” jak „język programowania RnD”. Pomaga, jeśli ludzie, których wyjaśniasz, dobrze radzą sobie z matematyką, ale jest to tak rzadkie jak znajomość obsługi komputera :)
Łatwo analogie. Brzmią jak oni pomagać, ale z mojego doświadczenia wynika, że zwykle dodać do zamieszania, nawet jeśli ty myślą, że są bardzo pomocne. Języki programowania są trochę jak adwokat mówić ... ale to nie jest bardzo pomocne dla osób, które nie już rozumieją zarówno programowanie i prawniczych, naprawdę. Jeśli naprawdę potrzebujesz dodatkowej pomocy, przykłady działają wystarczająco dobrze - ale musisz przydzielić je osobie, której wyjaśniasz (i co dokładnie badasz)
źródło
Uważam, że najlepsze analogie są dostosowane do osoby, z którą rozmawiasz. Czy oni są malarzami? Omów, w jaki sposób to, co robisz, jest ekwiwalentem eksploracji teorii tworzenia lepszych pędzli, tylko to pole ma tylko 60 lat zamiast 600! Equestrians? Porównaj to z rozwojem podkowy do zadań na przestrzeni lat.
Jeśli naprawdę chcą lepiej zrozumieć, moim ulubionym sposobem na wyjaśnienie tego jest porozmawianie o wypełnianiu formularzy podatkowych i instrukcji w każdej linii. Uważam, że większość osób powyżej 20 roku życia ma pewne doświadczenie z formularzem IRS 1040, a wypełnione przez ciebie pola całkiem ładnie odpowiadają mówieniu o przypisywaniu zmiennych. Następnie zwracam uwagę, że oprogramowanie odpowiada około 2 miliardom z nich na minutę (liczba wymyślona, ale ma sens). Jeśli uczysz się języków komputerowych, łatwo jest zrozumieć, dlaczego lepsze instrukcje są tak ważne =)
Jeśli nadal wydają się zainteresowani, chodzi o moment, w którym zaczynam próbować wyjaśnić kontrolę przepływu. Zwykle, kiedy kończę dyskusję na temat kontroli przepływu nad formularzem 1040, zaczynają się ekscytować i pytają, czy sprzedałem rządowi którykolwiek z moich pomysłów!
Często mówię o systemach wbudowanych, więc czasami łączę analogię Form 1040 z robotem gotującym bochenek chleba (lub 500). Zwykle działa dobrze, choć z jakiegoś powodu przejście od formularzy podatkowych IRS do zrobienia czegoś, co pozostawia dobry smak w ustach, jest naprawdę trudne dla niektórych osób.
źródło
Twoi rodzice mają jakiś komputer. Prawdopodobnie nie jeden, ale wielu. Mogą mieć komputer stacjonarny, laptop, telefon lub iPad. Jeśli nie, to mają pralkę lub nagranie wideo, odtwarzacz DVD lub coś z komputerem w środku.
Jeśli nie, mówisz: „Przepraszam, ale udało ci się całkowicie żyć bez komputerów. Więc nie mogę ci wytłumaczyć, co robię. Ale świat się zmienia. Musisz mi tylko zaufać Wiem co robię. "
Jeśli mają jakiś komputer, mówisz: „To jest komputer i nie działa on tylko magicznie. Działa, ponieważ jakiś sprytny mężczyzna lub kobieta napisał program, który mówi komputerowi, jak ma działać. ci sprytni mężczyźni i kobiety są naprawdę trudni, a to, co robię, pomaga im ułatwić pracę ”.
źródło
Jakiś czas temu zdecydowałem, że dobrą analogią do programowania, która mogłaby być łatwo zrozumiała dla osób z małym lub żadnym doświadczeniem komputerowym, byłoby pisanie przepisów na drutach .
Dobry przepis na drutach zawiera kilka rozmiarów z tej samej listy instrukcji, które dają pętle i instrukcje if. Jest nieczytelny dla tych, którzy nie robią na drutach, a jeśli zawiera błędy, kończy się to niedopasowaniem wzorów lub dodatkowym rękawem. To od Ciebie - jako autora przepisu - zależy, na podstawie niewłaściwych swetrów, gdzie jest przepis, który jest zły, i naprawić go.
Następnie możesz użyć przykładu „Patrzę na różnice w przepisach dotyczących robienia na drutach, szydełkowania, Nålebinding i podobnych” i uczenia się języka X (gdzie musisz znaleźć analogię do tego, co faktycznie robisz ).
źródło
To magia!
Kiedy ludzie bez wiedzy technicznej pytają, co to znaczy pisać oprogramowanie / programy / zajmować się inżynierią oprogramowania, mówię im, czym tak naprawdę jest: magia. Magowie rzucają zaklęcia w ezoterycznym języku, aby wykonywać określone zadania, machają różdżkami i dzieje się coś magicznego. Wdaję pewne zaklęcia w ezoteryczny język, poruszam myszką i dzieje się coś magicznego (jeśli o to chodzi).
Jeśli nie są przekonani, poprosiłem ich, aby włączyli swój smartfon i powiedzieli mi, jak wszystko działa. Zwykle mówią: „Nie wiem, po prostu to robi. Naciskam przyciski i coś się dzieje”. Następnie mówię im: „Tak, dokładnie, ale wiem, co się naprawdę dzieje, i to w zasadzie to samo, co Harry Potter macha różdżką i mówi:„ Hocus pocus ”„ Dla wszystkich intencji i celów, dla laika, ja myślę, że jest to całkowicie uzasadnione wytłumaczenie.
Prawie wszyscy wiedzą, kim jest Harry Potter, co robi i co czyni go wyjątkowym (przynajmniej że jest magikiem i może robić potężne rzeczy za pomocą magii). Możesz po prostu wyjaśnić, że czasami magicy muszą pisać swoje zaklęcia w nowym języku, aby ich magia była jeszcze potężniejsza, co nie jest tak dalekie od prawdy. Możesz po prostu powiedzieć im, że studiujesz proces tworzenia potężniejszych ksiąg czarów, aby pomóc pokoleniu jeszcze potężniejszych czarodziejów, którzy mogą tworzyć jeszcze większą magię na swoich ulubionych urządzeniach konsumenckich. Wszyscy to doceniają.
Epicka porażka
Jeśli to się nie powiedzie, wracam do przykładu przepisu, ponieważ niejednorodność rozwiązań przynajmniej uczy ludzi, że istnieje więcej niż jeden sposób na skórowanie kota (lub upiec ciasto), a to jest część tego, co sprawia, że programowanie jest tak zdradliwy. Pomaga również postawić osobę w pozycji procesora i czasami postępować zgodnie z instrukcjami, których może nie rozumieć (większość ludzi prawdopodobnie nie zna różnicy między sodą do pieczenia a proszkiem do pieczenia i dlaczego przepis miałby taki czy inny).
Dead Ends
Nie lubię używać matematyki jako przykładu, ponieważ aby robić matematykę, musisz zrozumieć, po co są kroki. Nie możesz wiele zrobić z matematyki, postępując zgodnie z instrukcjami na ślepo (cóż, możesz, ale zwykle nie tak uczą się ludzie). Nie podoba mi się sortowanie jako przykład, ponieważ jest to zbyt techniczne dla laika. Jeśli rozmawiam z kimś, kto może docenić przykład sortowania, prawdopodobnie ma już pojęcie o programowaniu i prawdopodobnie sam go wypróbował.
źródło