Kilka książek do javacript...i co dalej?;-)

0

Mam pytanie do największych speców z tego forum. Co byście zrobili, gdybyście chcieli zrozumieć kod źródłowy jQuery? Pytam, bo z jednej strony znam odpowiedź na to pytanie a z drugiej strony odpowiedź ta wcale prosta nie jest. Ta odpowiedź, którą znam, to po prostu:"Sciągnij, otwórz i przeanalizuj". Wcale jednak nie jest to takie proste,bo taka analiza może zająć i pół roku, jeśli się nie zna istotnych pojęć, które w takim kodzie są stosowane. Zatem przechodząc do sedna, jeżeli mam już kod jQuery oraz rzecz jasna możliwość jego przeanalizowania, to w jaki sposób można sobie tutaj ułatwić życie? W nieoficjalnym podręczniku mcfarlanda jest powiedziane, że trzeba znać dobrze sam jezyk JavaScript. Aha, super;-) A co ma zrobić koleś, który tak dobrze tego języka nie zna? Właśnie. Można się nauczyć tego lub tamtego i stworzyć fajną stronkę, ale co zrobić, jeśli chcę wiedzieć dużo więcej?

Studia? Przecież na żadnych studiach nie uczą analizowania JavaScript i jQuery. No to może jakaś książka o samym javasript. No dobrze,ale która. Po spisach treści wcale dojść nie tak łatwo. Zatem, czy ktoś ze chce mi coś w tej sprawie poradzić? Może jakiś pomysł? Bo prawde mówiąc droga pt."sciągnij i przeanalizuj" jest jedynym pomysłem, na który wpadłem.

0

A czym się różni pisanie kodu od jego czytania? Praktycznie niczym, oprócz tego, że w pierwszym przypadku musisz pisać (i jednocześnie czytać to, co pojawia sie na ekranie), a w drugim z ręką na myszce - czytać.

Jeżeli stworzysz coś fajnego z użyciem javascriptu i nie będzie to po prostu jakaś obsługa formularza i animowane przenikanie elementów - wszystko przy użyciu jQuery (co sprowadzi się do paru linijek) - to będziesz już w stanie analizować kod. No chyba, że bierzesz się za analizowanie skompresowanego kodu, który nawet po "ułożeniu" ma nazwy zmiennych typu a, b, c itd. - to zdecydowanie trudniejsze, ale tu żadna książka nie pomoże (prędzej jakiś mądry IDE z opcją seryjnej zmiany nazwy zmiennej z uwzględnieniem jej zasięgu).

Jaka książka?
Ogólnie w tych tematach króluje jeden nieśmiertelny post ;)

0
dzek69 napisał(a):

A czym się różni pisanie kodu od jego czytania? Praktycznie niczym, oprócz tego, że w pierwszym przypadku musisz pisać (i jednocześnie czytać to, co pojawia sie na ekranie), a w drugim z ręką na myszce - czytać.

Jeżeli stworzysz coś fajnego z użyciem javascriptu i nie będzie to po prostu jakaś obsługa formularza i animowane przenikanie elementów - wszystko przy użyciu jQuery (co sprowadzi się do paru linijek) - to będziesz już w stanie analizować kod. No chyba, że bierzesz się za analizowanie skompresowanego kodu, który nawet po "ułożeniu" ma nazwy zmiennych typu a, b, c itd. - to zdecydowanie trudniejsze, ale tu żadna książka nie pomoże (prędzej jakiś mądry IDE z opcją seryjnej zmiany nazwy zmiennej z uwzględnieniem jej zasięgu).

Jaka książka?
Ogólnie w tych tematach króluje jeden nieśmiertelny post ;)

Wiesz, kiedyś...dawno temu, gdy uczyłem się jeszcze Turbo Pascala, wpieniłem się i zacząłem oglądać strukturę bibliotek. Obejrzałem co gdzie jest i gdy zapamiętałem ogólną strukturę, to zacząłem pisać swoje własne rzeczy. Chciałbym bardzo, żeby podobnie było z jQuery, ale gdy spojrzałem na nieskompresowany kod źródłowy, to...no cóż...dużo tego. Na razie owe skomplikowanie kodu jQuery mocno mnie przeraża. Na razie kupiłem ebooka mcfarlanda nieoficjalny podręcznik. Jak przerobię ten jeden, to może zafunduję sobie "mocne strony". Choć muszę przyznać, że trochę nie dowierzam. Tylko 160 stron i taki dobry? Nie miałem go jeszcze przed sobą, ale skoro autor postu tak poleca, to może warto. Myślę, że muszę jak najwięcej dowiedzieć się o samym nie jQuery(choć to nie głupie), lecz właśnie o samym JavaScript. W końcu gościowie, gdy zaczynali pisać bibliotekę jQuery, używali nie jQ tylko JS;-))) Po prostu analizowanie kodu jQ przy użyciu książki do jQ...wydaje mi się trochę zabawne. Bo to tak,jakby analizować drogę produkcyjną kluczy, ucząc się otwierać nimi drzwi;-))

0

uczyłem się jeszcze Turbo Pascala, wpieniłem się i zacząłem oglądać strukturę bibliotek. Obejrzałem co gdzie jest i gdy zapamiętałem ogólną strukturę, to zacząłem pisać swoje własne rzeczy. Chciałbym bardzo, żeby podobnie było z jQuery, ale gdy spojrzałem na nieskompresowany kod źródłowy, to...no cóż...dużo tego.

A jaki masz w ogóle cel w analizowaniu tego kodu? Chcesz poznać różnicę między przeglądarkami, pooglądać parser selektorów elementów czy ogólnie pooglądać jak to się wszystko zgrabnie pakuje w obiekty? To jest spora biblioteka i naprawdę nie musisz znać jej kodu źródłowego, żeby jej używać. Jeżeli chcesz używać jQuery - masz dokumentację.

Tylko 160 stron i taki dobry? Nie miałem go jeszcze przed sobą, ale skoro autor postu tak poleca, to może warto.

Hm. Jak @bswierczynski (masz highlighta, może się wypowiesz) poleca - bierz w ciemno, to taki tutejszy guru ;)

1

Rzeczywiście, samo czytanie kodu jQuery to za mało, żeby go ogarnąć.

Polecam jednak jakieś źródła w necie, tudzież książki. Przy takim wsparciu łatwiej nam będzie zrozumieć kod źródłowy dosyć skomplikowanej biblioteki. Analizę można zacząć nawet od małych fragmentów. Tak długo je drążyć, aż zrozumiemy w 100% każde wyrażenie.

Nie znam niestety łatwej drogi, by to osiągnąć. Może poza konsultacjami z jakimś dobrym programistą, który to ogarnia. Z jednej strony niestety, ale z drugiej strony stety pocieszę Cię, że w Polsce nie ma wcale aż tak wielu koderów JavaScript, którzy swobodnie czytaliby i rozumieli każdy fragment kodu jQuery. Poziom w naszej branży jest po prostu smutno niski, więc jeśli sam tego nie ogarniasz, to nie odstajesz ;). Ale chęć ogarnięcia dobrze o Tobie świadczy i dobrze wróży.

Wg mnie, znajomość samej składni JS-a bardzo, bardzo pomaga. Ja mam już teraz tak, że mogę w głowie przeparsować bodaj każde wyrażenie, jakiego rozsądnie się używa w JS-ie (naturalnie można coś wymyślić na siłę, choć zwykle udaje mi się rozwikłać wiele nawet z tych wymyślonych).

Mi pomogły książki, w tym szczególnie wspomniane "Mocne strony". Oraz prezentacje, w tym sporo tych Douglasa Crockforda. A teraz po prostu lecę na specyfikacji: es5.github.com . Ta specyfikacja nie jest jednak przystępna i też nie polecam jej raczej na sam początek. Opisuje dużo wewnętrznych mechanizmów, które na początku nie będą przydatne i będą tylko niepotrzebnie zajmowały zasoby mózgownicy.

Co do jQuery to zauważ proszę, że to NIE jest biblioteka ogólnego przeznaczenia i remedium na wszystkie problemy JavaScriptu. To bardzo dobra biblioteka do manipulacji DOM. Remedium na bolączki niewygodnego i wciąż nie do końca kompatybilnego DOM API. Fakt, większość skryptów na prostych stronach to w dużej części manipulacje na DOM.

Ale bardziej skomplikowane aplikacje wymagają po prostu solidnego programowania. Podziału na obiekty, kompozycji, dziedziczenia, funkcyjności... inżynierii oprogramowania. Tutaj jQuery ma bardzo mało do powiedzenia.

Książka Crockforda jest dobra, wg niektórych również dlatego, że jest krótka. Gęstość informacji jest w niej duża. Ale naprawdę, jest stosunkowo wymagająca jeśli chcesz mieć jakiś poziom zrozumienia. Trzeba ją czytać bardzo uważnie. I nie uważać stylu Crockforda za jedyny słuszny. Wg mnie, niektóre z jego propozycji są w sensie stricte złe, tzn. minusy dominują nad plusami. Np. forsowanie jednego var na funkcję, a szczególnie forsowanie definicji funkcji przed pierwszym użyciem -- to przeczy uniwersalnym zasadom inżynierii oprogramowania.

Crockford jednak NA PEWNO dobrze tłumaczy podstawy samego JavaScriptu. Czyli dziedziczenie prototypowe i funkcyjność. Obie są ważne, mają duże znaczenie w jQuery. Oprócz nich, Crockford opisuje też wiele drobniejszych rzeczy, ale spora ich część i tak ostatecznie wiąże się z funkcjami i prototypowością. Np. this (temat-rzeka: utrata i zapamiętywanie kontekstu, .call/.apply...) czy arguments ściśle się wiążą z funkcjami. Dostęp do własności czy pętla for..in (i jej bolączki) wiążą się z dziedziczeniem prototypowym.

To właśnie opisuje Crockford. Przykłady mogą się nie wydawać praktyczne, bo nie wklei się ich raczej na stronę. Ale te informacje zbliżają Cię do poziomu zrozumienia typu: jeśli widzę te kilka linijek i trochę pomyślę, to je zdekoduję w głowie; nic mnie nie zaskoczy.

Strasznie nie lubię określenia "guru" czy raczej samego "kultu". Uważam, że do wszystkiego trzeba podchodzić krytycznie. Nie sądzę, że wierzenie komukolwiek na ślepo (w tym mi) jest słusznym podejściem.

Zauważyłem jednak, że gdy nie ma czasu na wskazanie konkretnych rzeczy, dość praktycznym -- i być może najmniej złym -- rozwiązaniem jest podanie... nazwisk ludzi, którzy zwykle piszą rozsądnie i którzy raczej zbyt wielu głupot nie palną ;-).

Poszukaj w necie albo w księgarni tych kolesi:
Douglas Crockford (ten od Mocnych Stron)
Dr Axel Rauschmayer (jego szczegółowe i bdb tłumaczenia różnych elementów na JS można znaleźć tu: http://www.2ality.com/ )
Addy Osmani (z Google; skupia się na wzorcach i narzędziach i niestety niektórzy koderzy ślepo idą tylko w te dwie rzeczy, ale Addy to ogarnięty facet, gadałem z nim niedawno na konferencji -- on sam rozumie JS bardzo dobrze i nie jest fanbojem samych wzorców i narzędzi)

1 użytkowników online, w tym zalogowanych: 0, gości: 1