Czy chciałeś mieć kiedyś zaczarowany ołówek? Różdżkę jak Harry Potter? Jakąś rzecz, dzięki której mógłbyś stworzyć, co tylko chcesz? Programowanie Ci to daje! Możesz stworzyć, co chcesz. Poczuć się jak dziecko bawiące się zabawkami. Budować co chcesz, klocek po klocku. Albo jak Harry Potter, wypowiadając pewne słowa w odpowiedniej kolejności, zamienia się w zaklęcie. Tworząc program, robimy to samo. Piszemy pewne "znaczki", które jak klocki budują program, a kompilator (taki tłumacz) zamienia nasze wypociny na zaklęcia, które rozumie komputer.
Programowanie ma trochę powiązanie z sztukami walki, a nawet i z filozofią. My uczymy się całe życie. Dążymy do perfekcji, której nigdy nie osiągniemy. Staramy się stworzyć program idealny, lecz takiego nie stworzymy. Stały rozwój, doskonalenie siebie i kodu. Zawsze można coś lepiej napisać, jak streszczanie książki, bez utraty ważniejszych informacji. Coś szybciej, coś krócej, bardziej bezpiecznie. To też działa jak medytacja, pozwala nam zanurzyć się w świecie kodu, algorytmów, danych i błędów, odcinając się od rzeczywistości. Jak z bawiącymi się dziećmi, niebywale pochłonięci zabawą, wymyślając coraz to nowsze, lepsze pomysły na urozmaicenie jej.
Dlaczego powinieneś zacząć programować?
Niesie to za sobą wiele korzyści. Logiczne myślenie jest tu kluczowe i bardzo dobrze je rozwija. Wszystko wykonuje się krok po kroku. Programowanie to nie tylko pisanie jakichś funkcji, znaczków itd, to też głębokie analizowanie i rozważanie co napisać i jak napisać. Programista musi przewidzieć skutki danego rozwiązania, czy jest ono na pewno odpowiednie, szybkie, bez żadnych luk oraz czy pozwala na zaimplementowanie dodatkowych aspektów aplikacji. Analizowanie i przewidywanie skutków sytuacji, zanim ona powstanie. Wiąże się to z lepszym rozwiązywaniem problemów. Przygotowanie się do osiągnięcia określonego celu, przez wcześniejsze przeanalizowanie, poszukiwanie najbardziej wydajnych, optymalnych i rozłożenie potrzebnych czynności "krok po kroku".Jak ja się uczyłem?
"Programować" zacząłem jakoś w połowie podstawówki, czyli około 10 lat temu. W cudzysłowie, ponieważ uczyłem się HTML. Jestem typem człowieka, który zazwyczaj rzuca się na głęboką wodę, nie sprawdzając jak daleko mam do brzegu.. i czy w ogóle wiem gdzie jest. Dlatego zamiast zapoznać się z kursem - sprawdzałem kod źródłowy innych stron i go edytowałem. Tak sprawdzałem za co dane znaczniki odpowiadają. Nauka szła nawet szybko, pisałem już swoje kwadratowe i bardzo proste "strony", ale wtedy było to dla mnie duże osiągnięcie. Później, całkowicie przypadkiem odkryłem, że istnieje coś takiego jak CSS. Tyyyle możliwości do edycji wyglądu strony! No i dalej klepałem swoje stronki, tylko odrobinę ładniejsze. I tak się uczyłem jakiś czas, samemu, sprawdzając tylko kod źródłowy innych stron, zero kursów. Następnie poznałem PHP. Tu niestety poległem, mimo że przy nim sięgnąłem po poradniki. Tworzyłem proste bazy danych i wykorzystywałem je w tworzeniu stron. Napisałem nawet prymitywnego klona Plemion i na tym się skończyło. Leciałem tylko na kursach i poradnikach, jednak nie potrafiłem go zrozumieć. Był i nadal jest dla mnie językiem zbyt chaotycznym, którego do dzisiaj go nie tykam. I tak mój zapał do programowania spadł do zera.Jednak od zawsze marzyłem, że będę tworzyć gry komputerowe. Nie chciałem zostać jak większość dzieci policjantem czy strażakiem. Chciałem tworzyć gry i wiedziałem, że kiedyś będę to robił - mimo, że nie wiedziałem nawet jak się je robi. Więc po kilku miesiącach od stracenia zapału do programowania, pomyślałem żeby nauczyć się je robić. Naczytałem się na przeróżnych forach jak bardzo ciężko się je robi, jak ciężko nauczyć się do tego jakiegoś języka i w ogóle jak bardzo ciężki jest ten temat. Ale w większości polecali język C++. Więc z różnymi fantastycznymi kursami pisałem pierwsze "programy", odpalane w konsoli. Siedziałem po kilka godzin dziennie i się uczyłem. Napisałem prosty kalkulator, później pobierałem godziny systemowe i pisałem alarmy, czy kiedy ma się komputer wyłączyć i na przeliczniku walut się skończyło. Wszystko oparte o konsolę, nie widząc żadnych efektów (prócz innych wyświetlanych słów) znów straciłem zapał. Jednak, teraz po kilku latach wiem, że to był dla mnie czas najbardziej efektywnej (i złej) nauki. Wtedy zrozumiałem jak się pisze kod.
Znów "po pewnym czasie" poznałem RPG Maker i Game Maker - silniki/programy do tworzenia gier. Przy nich siedziałem trochę czasu, motywowało mnie to, że gdy coś zrobiłem - widziałem efekt. Gdy już załapałem jak to wszystko działa, poznałem silnik Unity3D. Potężne narzędzie, mnóstwo możliwości i żadnych ograniczeń (jakoś tak myślałem). Byłem wtedy w pierwszej klasie gimnazjum. Zaczęła się intensywna nauka języka C#, programu do modelowania 3D - Blender i tworzenie tekstur - Gimp (nie lubię Photoshopa). Przerobiłem kilka kursów, robiłem różne projekty z poradników, ale najwięcej czasu samemu. Zostałem z nim do teraz. Czyli jakieś 7-8 lat. Czy jestem już jego weteranem, znam go od podszewki i wszystko już mogę na nim zrobić? Niestety nie.
Czyli jak się uczyć
Niestety na samym początku nauki programowania wpadłem w bagno. Jak spora część programistów, jednak większość szybko z niego wyszła, a reszta pchała się głębiej. Podstawowy błąd początkującego jest - rzucanie się na głęboką wodę. Nie zrozum mnie źle, można się tak nauczyć pływać, ale lepiej i bezpiecznej z instruktorem. Nie dużo korzystałem z kursów, które patrząc po pewnym czasie okazały się kiepskie, lecz uczyłem się samemu, metodą prób i błędów. Dla mnie był to błąd. Mam mocno wypracowany własny styl pisania, gdzie na wzorce projektowe i tzw. "czysty kod" nie ma za bardzo miejsca. Osobiście nie uważam, że pisanie "czystym kodem" to święty obowiązek, bo to aplikacja jest dla ludzi, nie jej kod - on jest dla mnie i dopóki się w nim odnajduję to jest dobrze. Ale też nie popadajmy w skrajność - "spaghetti kod". Aplikacja ma działać poprawie oraz wydajnie i dopóki tak działa, jak jej kod jest napisany, za bardzo nie ma znaczenia. Takie jest moje zdanie. Ale właśnie.. wzorce projektowe i czysty kod do niedawna były dla mnie obce. Nie trzeba ich używać, ale warto je znać, zwłaszcza gdy pracujesz z innymi programistami.
Na samym początku zachęcam do sięgnięcia po dobry kurs języka którego chcesz się nauczyć i poduczyć się matematyki. I tu rozwiążę mit - "żeby zostać programistą musisz świetnie znać matme!!". Otóż nie. Nigdy nie przydała mi się wiedza o całkach, trygonometrii, funkcjach, pochodnych itd. I dopóki nie będziesz pisał programu stricte matematycznego, raczej ona Ci się nie przyda. Bardziej chodzi o logiczne myślenie. W programowaniu też jest kolejność wykonywania zadań (czy instrukcji jak kto woli). Dodatkowo podstawy informatyki też się przydadzą. Ciekawostka dla nieobeznanych: 27=33=11011=1B to te same liczby, lecz w innych systemach (dziesiętny(decymalny) = ósemkowy (oktalny) = dwójkowy (binarny) = szesnastkowy (hexadecymalny). Do tego poznanie wzorców projektowych, oraz "czysty kod". Ułatwi oraz skróci Ci pisanie programów. No i najważniejsze jest to, abyś nie traktował pisania kodu.. z powagą. Nie bądź sztywny. Lepiej od nazwy zmiennej "a" wygląda nazwa "pierwszyBokTwojegoProstokata" (głupi przykład, ale przesłanie to samo). Wyobraź sobie że piszesz komedię fantasy. To ma być jak zabawa.
Na koniec dodam też ciekawe cytaty, które warto mieć w głowie :)
- "Przez dłuższy czas zadziwiało mnie jak coś tak drogiego, tak nowatorskiego może być tak bezużyteczne. I wtedy pomyślałem, że komputer to głupia maszyna z możliwością zrobienia niewiarygodnie inteligentnych rzeczy, podczas gdy programiści to inteligentni ludzie z możliwością zrobienia niewiarygodnie głupich rzeczy. W skrócie, są dla siebie stworzeni." - Bill Bryson
- "Programowanie w dzisiejszych czasach jest wyścigiem pomiędzy inżynierami oprogramowania, usiłującymi stworzyć większe i bardziej idiotoodporne programy, oraz światem usiłującym stworzyć większych i lepszych idiotów. Jak dotąd świat wygrywa." - Rick Cook
- "Wydaje się, że doskonałość osiąga się nie wtedy, kiedy nie można już nic dodać, ale raczej wtedy, gdy nie można nic ująć." - Antoine de Saint-Exupéry
Źródła cytatów: Joe Monster, Lubimy Czytać
Jest to świat całkiem mi obcy, ale szanuję pracę programistów.
Bo czym byłby świat w obecnych czasach bez ich udziału.
Bardzo daleko w głębokiej du....
Pozdrawiam i szanuję waszą pracę.
A czym byłby świat bez konsumentów, tworzących zapotrzebowanie :)
Sam jestem programistą i podobnie zaczynałem, "przerabiałem gotowe skrypty js" ale kiedy to było... ;)
Cześć! Redakcja Tygodnika Kuratorskiego jest pod wrażeniem Twojej twórczości i chcemy prosić Cię o zgodę na publikację opisów oraz linków do Twoich postów w przyszłych numerach. Zależy nam na promocji wartościowych treści poprzez tworzenie cotygodniowego artykułu zbiorczego. Więcej możesz przeczytać tutaj: Tygodnik Kuratorski #0
Pewnie że tak! :) Wyrażam zgodę :)
Świetny artykuł, choć z wieloma rzeczami sie nie zgadzam :D
A z jakimi? :D
napisze kiedyś o tym, to zawołam :P