Насколько рискованно использовать Coffeescript, не зная Javascript? [закрыто]


15

Я достаточно опытный программист, пытающийся научиться веб-разработке. Я пытаюсь разработать клиентское веб-приложение, которое использует SVG или Canvas для графики. Я решил, что хотел бы написать код приложения в Coffeescript. Я не знаю ни Javascript, ни Coffeescript.

Насколько необходимо знание Javascript для веб-разработки Coffeescript? Могу ли я столкнуться с какой-то сложной проблемой, которая требует от меня понимания Javascript? Могу ли я счастливо работать с API Javascript от Coffeescript?

Редактировать : я мог бы легко выучить основы Javascript за неделю. Я больше обеспокоен тем, что у Javascript, похоже, много скрытых острых углов. В самом странном языковом вопросе о StackOverflow Javascript - один из самых распространенных языков. Имеет необычный объект и модель класса. У него есть неочевидные правила именования областей. Я считаю, что мне нужно больше недели, чтобы действительно знать язык.

Я собираюсь работать над небольшим простым проектом, чтобы изучить веб-разработку. Мне лучше использовать Javascript или Coffeescript? Я думаю, что в конечном итоге я предпочту Coffeescript, но я хочу начать с Javascript, если мне понадобится полное понимание Javascript для использования Coffeescript.


Имейте в виду, что CoffeeScript просто компилируется в JavaScript. Хотя CS облегчает управление некоторыми нюансами JavaScript, он не переживает их; его все еще подвержены все те же функциональные возможности и причуды. Например, classключевое слово в CS не делает ничего волшебного; он просто использует нативные механизмы наследования прототипов JavaScripts. По этой причине я бы рекомендовал иметь хотя бы вспомогательные знания о некоторых неявных «функциях» JavaScripts.
Мишель Тилли

2
CS не волшебная серебряная пуля, которая делает все проще, это JS с другим синтаксисом. Пишете ли вы JS или CS - это стиль предпочтения.
Рэйнос

Ответы:


12

Я думаю, это не было бы абсолютно необходимо, но в долгосрочной перспективе вы столкнетесь с препятствиями, если не сделаете этого.

Вы должны понимать, что происходит под капотом и что транскрибирует компилятор CoffeeScript, поскольку именно это должны интерпретировать браузеры (если мы говорим об использовании CoffeeScript в среде браузера). Это означает, что это также то, что вам нужно для отладки , особенно с учетом того, что CoffeeScript является довольно новым, и мы все еще можем столкнуться с некоторыми грубыми углами и ошибками в его механизме транскрипции. Кроме того, если вы не используете для отладки какие-либо специальные средства отладки, вам придется перепрыгивать через сгенерированный код JavaScript для отладки с использованием Firebug или Chrome Dev Tools или выбранной вами консоли JS. В некоторых случаях вы сможете увидеть, как ошибка JS напрямую связана с исходным оператором CoffeeScript. В других, так как транскрипция нетривиальна,

Примите это так: вы можете очень хорошо разрабатывать программное обеспечение на Java и C #, даже не занимаясь разработкой низкого уровня. Тем не менее, вы очень плохо понимаете, что происходит и почему вы сталкиваетесь с узкими местами производительности и проблемами с памятью, если у вас нет подсказок и вы не можете сделать обоснованное предположение о том, что среды выполнения этих языков должны делать для вас в фоновом режиме, и какую часть догадок они могут испортить, потому что они просто не могут осуществить чудеса.

Кроме того, если вы изучите JavaScript, вы поймете, насколько он невероятно сложнее, чем кажется на первый взгляд, и еще больше оцените CoffeeScript за его лаконичный и чистый синтаксис :)


1
Или вы будете раздражены на CoffeeScript за то, что не JavaScript;). ES5 - прекрасный язык.
Рэйнос

@Raynos: помада на свинье, все еще свинья; смокинг на козе, все еще козел и т. д. :) :) Я согласен, что ECMAScript на самом деле очень интересный язык, когда вы его узнаете, но в нем слишком много несоответствий, ловушек и ловушек, которые делают его бременем для обоих. новые ученики и даже для продвинутых программистов. Тем не менее, это наш современный веб-язык, и он со временем совершенствуется и совершенствуется. Мне нравится идея CoffeeScript, поскольку он скрывает некоторые раздражающие вещи ECMAScript, почти так же, как использование некоторых библиотек для Java (или даже языка поверх него) делает его терпимым.
Хайлем

2
Мех, тебе просто нужно прочитать «Хорошие части» и все, что нужно. Ловушек не так сложно избежать.
Райнос

@Raynos: Тем не менее, я, к сожалению, изо всех сил пытаюсь найти продвинутых разработчиков JS. Действительно хороших найти довольно сложно.
Хайлем

О, я согласен, сообщество JS насыщено посредственными разработчиками. Я не знаю, где вы должны их найти. Я знаю только несколько хороших разработчиков из комнаты JS chat.SO . Я полагаю, что на самом деле нет хороших разработчиков JS, JS должно быть трудным. Я просто думаю, что никто не мешает этому научиться.
Райнос

4

Ты спрашиваешь:

Могу ли я столкнуться с какой-то сложной проблемой, которая требует от меня понимания Javascript?

Я могу сказать, однозначно, да. В общем, если вы делаете что-то интересное, в какой-то момент вам, по крайней мере, нужно будет понять, что происходит на уровнях ниже вас. (Иногда Google + Cut + Paste может спасти вас, но вы не хотите быть таким парнем.)

Любой «достаточно опытный программист», который затем освоит новый язык, не займет у вас много времени. JavaScript - довольно простой язык. Все, что с этим связано, происходит из среды, в которой он выполняется, а именно: из нескольких различных веб-браузеров с разными идеями, как это делать.

Большая часть информации «как», которую вы найдете в Интернете, будет написана с учетом JavaScript, поэтому вам, вероятно, будет легче, если вы научитесь читать JavaScript и переводить его в эквивалентный CoffeeScript.

Честно говоря, если вы сознательно не попытаетесь остаться в неведении, вы, вероятно, столкнетесь с изучением JavaScript как побочным эффектом работы в CoffeeScript. Так что просто начни уже.


4

Потому что « золотое правило CoffeeScript:« Это просто JavaScript » », я рекомендую хотя бы базовое знакомство с JavaScript. В частности, взгляните на небольшую книгу Дугласа Крокфорда « JavaScript: хорошие части» . Вы также можете посмотреть собственную замечательную вступительную презентацию Крокфорда об этом.

CoffeeScript в основном оборачивает хорошие части JavaScript в другой пакет: « CoffeeScript - это простой мысленный эксперимент, чтобы представить язык, который предоставляет минимальный синтаксис для красивой объектной модели, лежащей в основе JavaScript». Вам не нужно знать все детали, достаточно понять, что JavaScript сам по себе не является объектно-ориентированным языком на основе классов. У него нет классов вообще. Вместо этого он использует « прототипы », и это делает некоторые отличия от других ОО-языков. Джереми Ашкенас исправил некоторые плохие части синтаксиса JavaScript, добавил некоторые улучшения и сделал его немного более подходящим для Python .

У JavaScript есть некоторые известные "ошибки", на которые стоит обратить внимание. В остальном, это отличный язык, и сегодня он широко используется. У нас не было бы AJAX или jQuery без всего прочего.

Удачи с вашим CoffeeScript!


Купи хорошие запчасти. Не будь дешевкой!
Рэйнос

@Raynos - я сделал. Я не! : D Но я удалил потенциально неуместное поисковое предложение. Спасибо за указание на это!
Джон Тоблер,

3

Да. Это не конец света, если вы этого не сделаете, но да.

Почему? Ну, во-первых, JavaScript действительно легко выучить. Мне буквально потребовалось 4 дня, чтобы выучить это (ну, большинство из них). Кроме того, я считаю, что это более ценно, чем CoffeeScript. Я действительно не думаю, что вам даже нужен CoffeScript. Но это все еще хороший инструмент.


3
Я изучал JavaScript в течение многих лет, и я все еще не сказал бы, что я действительно знаю это. Время от времени я узнаю об этом вещи, которые меня удивляют. Может быть легко научиться делать «Hello World», но научиться предсказывать поведение неявного преобразования типов и замыканий - нет.
Зак

@ Зач Вас может заинтересовать книга Просвещение JavaScript . Один обзор гласит: «На самом деле, я действительно не смог найти ничего недостающего. Если вы когда-нибудь задумывались, почему JSLint жалуется на что-то, основная причина, вероятно, будет объяснена где-то в этой книге».
Мишель Тилли

1
Закрытие @Zach не так сложно, преобразование типов - это боль. Большая проблема с JS - знать, что делают старые версии IE.
Рэйнос

@ Зак: я знаю, я не знаю всего Javascript. Я даже не близко. Но я знаю, что основы и некоторые промежуточные вещи очень легко выучить.
Динамичный

0

По-разному.

Если CoffeeScript достаточно абстрагирует JavaScript, так что вам не нужно его знать (например, C # абстрагирование промежуточного языка), тогда да, вы можете делать все, что вам нравится делать в CoffeeScript, не изучая JavaScript.

Но мой опыт подсказывает мне, что независимо от того, сколько я пытаюсь уйти от JavaScript, когда дело доходит до клиента, мне иногда действительно нужно пачкать руки и писать чистый JavaScript.

Да, ты прав. Хотя синтаксис JavaScript прост, и вы можете выучить его в слабом, но это займет у вас годы, чтобы освоить.

ИМХО, как я вижу CoffeeScript, он недостаточно зрел, чтобы полностью обернуть все тонкости JavaScript. Поэтому я не рискую не учиться и не работать напрямую с JavaScript.


CoffeeScript - это очень тонкая абстракция. Вы можете изучать coffeescript напрямую, но отладка скомпилированного js будет проблемой. "пачкать руки и писать чистый javascript". JavaScript не грязный
Райнос

1
@Rayons, я не имел в виду, что JavaScript грязный. :). Это своего рода выражение, означающее, что вы должны добраться до более глубоких нижележащих слоев.
Саид Нимати

это все равно что сказать: «Я занимаюсь игровым программированием, лучше испачкать руки и написать c ++» или «Я занимаюсь искусственным интеллектом, лучше запачкать руки и написать LISP». Единственный более глубокий нижележащий слой, который у нас есть в браузере, - это NaCl
Raynos

0

Документация coffeescript определяет coffescript в терминах эквивалентного javascript. Если вы не понимаете javascript, вы не поймете и coffeescript.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.