Jak ryzykowne jest używanie Coffeescript bez znajomości Javascript? [Zamknięte]

15

Jestem dość doświadczonym programistą próbującym nauczyć się tworzenia stron internetowych. Usiłuję opracować aplikację internetową po stronie klienta, która do grafiki używa svg lub canvas. Zdecydowałem, że chcę napisać kod aplikacji w Coffeescript. Nie znam ani Javascript, ani Coffeescript.

Jak niezbędna jest znajomość Javascript do tworzenia stron internetowych Coffeescript? Czy prawdopodobnie napotkam jakiś poważny problem, który wymaga ode mnie zrozumienia Javascript? Czy mogę z radością współpracować z interfejsami API JavaScript z Coffeescript?

Edycja : Z łatwością mogłem nauczyć się podstaw Javascript w ciągu tygodnia. Bardziej martwię się, że JavaScript ma wiele ukrytych ostrych krawędzi. W najdziwniejszej funkcji języka StackOverflow JavaScript jest jednym z najczęstszych języków. Ma niezwykły model obiektu i klasy. Ma nieoczywiste zasady określania zakresu nazw. Odkrywanie, że naprawdę znam język, zajmuje mi ponad tydzień.

Będę pracować nad małym, prostym projektem, aby nauczyć się tworzenia stron internetowych. Czy lepiej byłoby użyć Javascript lub Coffeescript? Myślę, że na dłuższą metę wolę Coffeescript, ale jestem gotów zacząć od Javascript, jeśli będę potrzebował dokładnego zrozumienia Javascript, aby używać Coffeescript.

Peter Graham
źródło
Pamiętaj, że CoffeeScript po prostu kompiluje się w JavaScript. Chociaż CS ułatwia zarządzanie niektórymi niuansami JavaScript, nie przeżywa ich ponownie; wciąż podlega tym samym funkcjom i dziwactwom. Na przykład classsłowo kluczowe w CS nie robi nic magicznego; po prostu wykorzystuje natywne prototypowe mechanizmy dziedziczenia JavaScript. Z tego powodu zaleciłbym przynajmniej pomocniczą znajomość niektórych niejasnych „funkcji” JavaScript.
Michelle Tilley
2
CS nie jest magiczną srebrną kulą, która ułatwia wszystko, jest JS z inną składnią. To, czy piszesz JS, czy CS, jest preferencją stylu.
Raynos

Odpowiedzi:

12

Myślę, że nie byłoby to absolutnie konieczne, ale na dłuższą metę wpadłbyś na przeszkody, jeśli nie.

Musisz zrozumieć, co dzieje się pod maską i co kompilator CoffeeScript transkrybuje, ponieważ właśnie to przeglądarki będą musiały interpretować (zakładając, że mówimy o używaniu CoffeeScript w środowisku przeglądarki). Co oznacza, że ​​jest to również to, czego potrzebujesz do debugowania , szczególnie biorąc pod uwagę, że CoffeeScript jest dość nowy i nadal możemy napotkać pewne szorstkie krawędzie i błędy w mechanizmie transkrypcji. Ponadto, jeśli nie używasz żadnych niestandardowych narzędzi do debugowania, musisz przeskoczyć wygenerowany kod JavaScript, aby debugować za pomocą Firebug lub Chrome Dev Tools lub wybranej konsoli JS. W niektórych przypadkach można zobaczyć, w jaki sposób błąd JS odnosi się bezpośrednio do źródłowej instrukcji CoffeeScript. W innych, ponieważ transkrypcja nie jest trywialna,

Weź to w ten sposób: możesz bardzo dobrze opracowywać oprogramowanie w Javie i C # bez tworzenia jakiegokolwiek niskiego poziomu. Jednak miałbyś bardzo zły czas na zrozumienie, co się dzieje i dlaczego napotykasz wąskie gardła wydajności i problemy z pamięcią, jeśli nie masz pojęcia i nie jesteś w stanie odgadnąć, co środowiska wykonawcze tych języków powinny dla Ciebie zrobić w tle, i jaką część zgadywania mogą spieprzyć, ponieważ po prostu nie potrafią zdjąć cudów.

Dodatkowo, jeśli nauczysz się JavaScript, zdasz sobie sprawę, jak niezwykle trudny może być, niż się wydaje, i docenisz CoffeeScript za zwięzłą i czystą składnię jeszcze bardziej :)

Haylem
źródło
1
Lub będziesz zirytowany w CoffeeScript za to, że nie jest JavaScript;). ES5 to piękny język.
Raynos
@Raynos: szminka na świni, wciąż świnia; smoking na kozie, wciąż na kozie itp. :) Zgadzam się, że ECMAScript jest naprawdę bardzo interesującym językiem, gdy go poznasz, ale ma zbyt wiele niespójności oraz pułapek i pułapek, które sprawiają, że jest to obciążenie dla obu nowi uczniowie, a nawet zaawansowani programiści. Mimo to jest to nasza nowoczesna internetowa lingua franca, która z czasem się rozwija i dojrzewa. Podoba mi się pomysł CoffeeScript, ponieważ ukrywa on pewne irytujące elementy ECMAScript, podobnie jak korzystanie z niektórych bibliotek dla Javy (a nawet języka).
haylem
2
Meh, po prostu musisz przeczytać Dobre Części i dobrze iść. Pułapek nie są tak trudne do uniknięcia.
Raynos
@Raynos: Niestety nie mogę znaleźć zaawansowanych programistów JS do zatrudnienia. Naprawdę dobre są dość trudne do znalezienia.
haylem
Och, zgadzam się, społeczność JS jest nasycona miernymi programistami. Nie wiem, gdzie powinieneś je znaleźć. Znam tylko kilku dobrych programistów z pokoju JS chat.SO . Myślę, że przez sam fakt, że nie ma dobrych programistów JS, JS musi być trudny. Po prostu myślę, że nikt nie zadaje sobie trudu, aby się tego nauczyć.
Raynos
4

Ty pytasz:

Czy prawdopodobnie napotkam jakiś poważny problem, który wymaga ode mnie zrozumienia Javascript?

Mogę powiedzieć, jednoznacznie, tak. Ogólnie rzecz biorąc, jeśli robisz coś interesującego, w pewnym momencie będziesz musiał przynajmniej zrozumieć, co dzieje się na niższych poziomach. (Czasami Google + cut + paste może cię uratować, ale nie chcesz być tym facetem.)

Każdy „rozsądnie doświadczony programista” wybierający nowy język nie powinien zająć ci dużo czasu. JavaScript jest dość prostym językiem. Wszystko, co jest trudne, pochodzi ze środowiska, w którym się wykonuje: mianowicie kilku różnych przeglądarek internetowych z różnymi pomysłami, jak to zrobić.

Wiele informacji na temat tego, jak znaleźć się w sieci, zostanie napisanych z myślą o JavaScript, więc zapewne łatwiej ci będzie, jeśli nauczysz się czytać JavaScript i tłumaczyć go na odpowiednik CoffeeScript.

Szczerze mówiąc, chyba że celowo spróbujesz pozostać ignorantem, prawdopodobnie skończysz na uczeniu się JavaScript jako efekt uboczny pracy w CoffeeScript. Więc po prostu zacznij już.

benzado
źródło
4

Ponieważ „ złotą zasadą CoffeeScript jest:„ To tylko JavaScript ” ,„ polecam przynajmniej podstawową znajomość JavaScript. W szczególności zapoznaj się z małą książką Douglasa Crockforda JavaScript: The Good Parts . Możesz także obejrzeć własną wspaniałą prezentację Crockford na ten temat.

CoffeeScript w zasadzie pakuje dobre części JavaScript w inny pakiet: „ CoffeeScript to prosty eksperyment myślowy, aby wyobrazić sobie język, który ujawnia minimalną składnię dla pięknego modelu obiektowego, który leży u podstaw JavaScript. ” Nie musisz znać wszystkich szczegółów, wystarczy, aby zrozumieć, że JavaScript, sama, to nie język zorientowany obiektowo klasa oparte. W ogóle nie ma zajęć. Zamiast tego używa „ prototypów ”, co powoduje pewne różnice w stosunku do innych języków OO. Jeremy Ashkenas wyczyścił niektóre złe części składni JavaScript, dodał kilka ulepszeń i sprawił, że była nieco bardziej podobna do Pythona .

JavaScript ma pewne znane „gotchas”, na które trzeba uważać. W przeciwnym razie jest to świetny język i jest dziś w powszechnym użyciu. Bez niego nie mielibyśmy AJAX-a ani jQuery.

Powodzenia z CoffeeScript!

John Tobler
źródło
Kup dobre części. Nie bądź tanim skaterem!
Raynos
@Raynos - zrobiłem. Nie jestem! : D Ale usunąłem potencjalnie niewłaściwą propozycję wyszukiwania. Dzięki za wskazanie tego!
John Tobler,
3

Tak. To nie koniec świata, jeśli nie, ale tak.

Dlaczego? Po pierwsze, JavaScript jest naprawdę łatwy do nauczenia. Dosłownie zajęło mi to 4 dni (cóż, większość). Ponadto uważam, że jest to cenniejsze niż CoffeeScript. Naprawdę nie sądzę, że potrzebujesz CoffeScript. Ale wciąż jest dobrym narzędziem.

Dynamiczny
źródło
3
Uczę się JavaScript od lat i nadal nie powiedziałbym, że naprawdę go znam. Raz na jakiś czas odkrywam w tym rzeczy, które mnie zaskakują. Nauczenie się, jak robić „Hello World”, może być łatwe, ale nauka przewidywania zachowania niejawnej konwersji typów i zamknięć nie jest.
Zach.
@Zach Być może książka JavaScript Enlightenment . Jedna recenzja brzmi: „W rzeczywistości naprawdę nie mogłem znaleźć niczego, czego brakuje. Jeśli kiedykolwiek zastanawiałeś się, dlaczego JSLint na coś narzeka, przyczynę tę można wyjaśnić gdzieś w tej książce”.
Michelle Tilley,
1
Zamknięcia @Zach nie są takie trudne, konwersja typów jest uciążliwa. Dużym problemem z JS jest wiedza o tym, co robią starsze wersje IE.
Raynos
@Zach: Wiem, że nie znam całego Javascript. Nie jestem nawet blisko. Ale wiem, że podstawy i niektóre pośrednie rzeczy są bardzo łatwe do nauczenia się.
Dynamiczny
0

To zależy.

Jeśli CoffeeScript wystarczająco abstraktuje JavaScript, abyś nie musiał go znać (np. C # abstracting Intermediate Language), to tak, możesz robić, co chcesz robić w CoffeeScript bez nauki JavaScript.

Ale moje doświadczenie mówi mi, że bez względu na to, jak bardzo próbuję uciec przed JavaScript, jeśli chodzi o klienta, czasami naprawdę muszę ubrudzić sobie ręce i napisać czysty JavaScript.

Tak, masz rację. podczas gdy składnia JavaScript jest łatwa i można się jej nauczyć w słabym języku, ale opanowanie jej zajmuje lata.

IMHO, jak widzę CoffeeScript, nie jest wystarczająco dojrzały, aby całkowicie zawinąć wszystkie zawiłości JavaScript. Dlatego nie ryzykuję, że nie uczę się ani nie pracuję bezpośrednio z JavaScript.

Saeed Neamati
źródło
CoffeeScript to bardzo cienka abstrakcja. Możesz nauczyć się coffeescript bezpośrednio, ale debugowanie skompilowanego js będzie uciążliwe. „pobrudz moje ręce i napisz czysty javascript”. JavaScript nie jest brudny.
Raynos
1
@Rayons, nie miałem na myśli, że JavaScript jest brudny. :) Jest to rodzaj wyrażenia oznaczającego, że powinieneś dostać się do głębszych warstw poniżej.
Saeed Neamati
to tak, jakby powiedzieć: „Robię programowanie gier, najlepiej ubrudzę ręce i napiszę c ++” lub „Robię sztuczną inteligencję, najlepiej ubrudzę ręce i napisz LISP”. Jedyną głębszą warstwą, którą mamy w przeglądarce, jest NaCl
Raynos
0

Dokumentacja coffeescript definiuje coffescript w kategoriach równoważnego javascript. Jeśli nie rozumiesz javascript, nie zrozumiesz również coffeescript.

Sean McMillan
źródło