Нам не нужен ваш кофе

от автора

Это открытое письмо CoffeeScript-сообществу.
Вы можете присоединиться к дискуссии на Hacker News.

Эта тирада, возможно, также справедлива для TypeScript и ему подобных. Чёрт, да даже для asm.js. Я знаю, что asm.js впечатляет в теории, но вы сами пытались пройтись по написанному на нём коду? Это мусор, и вам явно не придётся писать такое в ваших обычных каждодневных исходниках.

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

Что? Это не ахинея, это прекрасно! Это JavaScript.

Специальный выпуск новостей: это не JavaScript, он просто компилируется в него. Перестаньте пытаться поработить людей на StackOverflow, отвечая на их JavaScript-вопросы кодом на CoffeeScript. Перестаньте пытаться получить помощь по JavaScript, выкладывая код на Coffee, который мы не понимаем.

Проблема не в самом языке. Хоть мне и не нравится язык сам по себе, я поддерживаю разнообразие, как, впрочем, и все остальные. Проблема в таких как вы, те, кто постит что-либо в сеть так, будто все вокруг знают, как работает CoffeeScript. Конечно, он компилируется в JavaScript. Мы поняли. Но мы не собираемся изучать ваш чудной язык.

(прим. пер.) Далее автор цитирует отрывок из фильма «Телесеть» (Network, 1976), перевод отрывка приведён далее под спойлером.

Мне не нужно говорить вам, что всё плохо, все и так знают, что всё плохо. Будто всё на свете сходит с ума, и поэтому мы больше не выходим на улицы. Мы сидим дома, а мир, в котором мы живём, постепенно сжимается, и всё, что мы говорим, это «пожалуйста, оставьте нас в покое хотя бы в наших гостиных».

Итак, я хочу, чтобы вы сейчас встали.

Перевод отрывка

Мне не нужно говорить вам, что всё плохо, все и так знают, что всё плохо.
Это депрессия. Люди остаются без работы либо боятся её потерять. Доллар идёт по цене пятицентовой монеты, банки закрываются. Продавцы держат стволы за прилавками. Шпана бесчинствует на улицах. Никто нигде не знает, что делать, и этому нет конца. Мы знаем, что воздух стал непригоден для дыхания, а еда — для питания. Мы сидим и смотрим телевизор, в то время как какой-нибудь репортёр рассказывает нам, что произошло 15 убийств и 63 тяжких преступления, как будто так и положено! Мы знаем, что всё плохо. Даже хуже, чем плохо. Они сошли с ума. Всё на свете сходит с ума, и поэтому мы больше не выходим на улицы. Мы сидим дома, а мир, в котором мы живём, постепенно сжимается, и всё, что мы говорим, это:

Пожалуйста, оставьте нас в покое хотя бы в наших гостиных. Оставьте мне мой тостер, мой телевизор и антенну. Я ничего не скажу, просто оставьте нас в покое.

А я не оставлю вас в покое. Я хочу, чтобы вы вышли из себя! Я не хочу, чтобы вы протестовали или бунтовали. Не пишите вашему конгрессмену. Я не знаю, что вам ему написать. Я не знаю, что делать с депрессией, с инфляцией, с русскими, с преступностью на улицах. Всё, что я знаю, это то, что вам нужно рассердиться! Вам нужно сказать: «Я человек, чёрт побери! Моя жизнь имеет ценность!»

Итак, я хочу, чтобы вы сейчас встали. Я хочу, чтобы вы все встали со своих стульев и кресел. Я хочу, чтобы вы встали и подошли к окну, открыли его, высунули в него свою голову и прокричали: «Я зол как чёрт, и я не буду больше это терпеть!».

Вы знали, что некоторые компании на самом деле отворачиваются от Coffee просто потому, что люди по сути не знают языка? Проблема, с которой столкнулись Discourse, состояла в том, что они не получали ожидаемой отдачи от разработчиков просто потому, что их JavaScript был обфусцирован Coffee. Этой причины было достаточно для того, чтобы щёлкнуть выключателем и больше не притрагиваться к CoffeeScript. Проблема ясна: люди, знающие Coffee, должны знать JavaScript, если хотят писать хороший код. В обратную сторону это утверждение уже не так правдиво, у остальной части Вселенной нет причин изучать Coffee, и те из нас, кто не купился на его ощутимые преимущества, остались за бортом.

Я даже не вдаюсь в дебаты «кто лучше?». Мне не очень нравится синтаксис, и опять же, мне всё равно, что кому-то он нравится. Более того, кое-кто пишет довольно длинные статьи на эту тему. Кроме того, первым непроцедурным языком, с которым я познакомился, был Visual Basic, у которого был такой же «человекопонятный» синтаксис, который мы видим в CoffeeScript, чьи перлы вроде one isnt two напоминают мне о временах, когда я тоже отказывался от качества кода в пользу того, чтобы слепо передавать компилятору On Error Resume Next, непонятную конструкцию в VB, которая вела себя, как если бы каждая строка была обёрнута в блок try…catch. Ах, эта радость слепой и наивной отладки.

Проблема с «детским» синтаксисом состоит в том, что он слишком много скрывает, делая код практически недоступным для понимая таких парней как я, не сидящих на кофеине. Не этого мы хотим. Это проблема всех языков, которые компилируются в «веб-языки» (HTML, JS, CSS).

Jade, например, выдаёт чистый HTML, который просто использует CSS-селекторы, с помощью синтаксиса, близкого к тому, что мы знаем как Zen Coding. Сравнивая Jade с чрезвычайно многословной природой HTML (или XML), преимущества становятся видны невооружённым глазом.

Вот немного Jade:

ul#crocodile-items   li(ng-repeat='foo in bar')     div {{name}}     div.details       div         span Description         span {{desc}}       div         span Price         span {{price}} 

Набор «руками» такого HTML занял у меня немного больше времени:

<ul id="crocodile-items">   <li ng-repeat="foo in bar">     <div>{{name}}</div>     <div class="details">       <div>         <span>Description</span>         <span>{{desc}}</span>       </div>       <div>         <span>Price</span>         <span>{{price}}</span>       </div>     </div>   </li> </ul> 

Преимущества использования Jade начинают накапливаться, если принять во внимание такие вещи, как наследование, примеси, JavaScript, ну и тот факт, что вы больше не будете забывать закрывать теги.

Тем временем с Coffee всё наоборот. Что за фигня происходит в скомпилированном JavaScript-коде? Я понятия не имею. Для меня это чёрный ящик. Я не люблю чёрные ящики. Они чёрные и форме куба. И это всё, что я знаю о чёрных ящиках, они ничего не говорят мне о том, что происходит внутри. Написание JavaScript-кода автоматически означает, что у нас есть полный контроль над тем, что мы делаем, и это дорогого стоит. И напоследок ещё кое-что. Как вы собираетесь использовать ES6, когда он выйдет? Насколько я знаю, он сломает CoffeeScript таким, каким мы знаем его сейчас, и это как бы отстой. Это значит, что вы либо застрянете в языке, который не может использовать последние возможности JavaScript, либо вам придётся перелопатить тонны кода и вернуться к тому, с чего начали. Что касается меня, я лучше не буду запирать себя на замок языком, старающимся помочь мне писать хороший код.

Моё предложение к вам состоит даже не в том, чтобы перестать использовать CoffeeScript, но быть более внимательными к тем, кто ничего не знает о вашем прелестном языке. Всегда компилируйте свой код в JavaScript перед тем, как задавать вопрос на StackOverflow, или отвечать на пост в блоге. Возможно, вы даже узнаете что-то о самом JavaScript.

ссылка на оригинал статьи http://habrahabr.ru/post/195944/