Jump to content

Кофескрипт

Кофескрипт
Парадигма Мультипарадигмальность : прототипная , функциональная , императивная , скриптовая.
Разработано Джереми Ашкенас
Разработчик Джереми Ашкенас
Впервые появился 13 декабря 2009 г .; 14 лет назад ( 13 декабря 2009 г. )
Стабильная версия
2.7.0 [1]  Отредактируйте это в Викиданных / 24 апреля 2022 г .; 2 года назад ( 24 апреля 2022 )
Дисциплина набора текста динамический , неявный
ТЫ Кросс-платформенный
Лицензия МОЯ лицензия
Расширения имен файлов .coffee, .litcoffee[ нужна ссылка ]
Веб-сайт кофейный сценарий .org
Под влиянием
Хаскелл , JavaScript , Перл , [ нужна ссылка ] Питон , [2] Руби , ЯМЛ [3]
Под влиянием
MoonScript , LiveScript , JavaScript

CoffeeScript — это язык программирования , который компилируется в JavaScript . Он добавляет синтаксический сахар, вдохновленный Ruby , Python и Haskell, чтобы повысить краткость и читабельность JavaScript. [4] Конкретные дополнительные функции включают в себя понимание списков и назначение деструктуризации .

Поддержка CoffeeScript включена в Ruby on Rails версии 3.1. [5] и Play Framework . [6] В 2011 году Брендан Эйх назвал CoffeeScript повлиявшим на его мысли о будущем JavaScript. [7] [8]

13 декабря 2009 года Джереми Ашкенас сделал первый коммит CoffeeScript в Git с комментарием «первоначальный коммит загадочного языка». [9] Компилятор был написан на Ruby. 24 декабря он выпустил первый отмеченный и задокументированный релиз — 0.1.0. 21 февраля 2010 года он выпустил версию 0.5, которая заменила компилятор Ruby автономной версией на чистом CoffeeScript. К тому времени проект привлек еще несколько участников на GitHub и получал более 300 посещений страниц в день.

24 декабря 2010 года Ашкенас объявил о выпуске стабильной версии 1.0.0 на сайте Hacker News , сайте, где проект был анонсирован впервые. [10] [11]

18 сентября 2017 года была представлена ​​версия 2.0.0, [12] который «стремится внести CoffeeScript в современную эпоху JavaScript, устраняя пробелы в совместимости с JavaScript, сохраняя при этом чистый синтаксис, который является отличительной чертой CoffeeScript».

Синтаксис

[ редактировать ]

Почти все является выражением в CoffeeScript, например: if, switch и for выражения (которые не имеют возвращаемого значения в JavaScript) возвращают значение. Как и в Perl и Ruby, эти операторы управления также имеют постфиксные версии; например, if также можно записать в consequent if condition форма.

Многие ненужные скобки и фигурные скобки можно опустить; например, блоки кода могут обозначаться отступами вместо фигурных скобок, вызовы функций являются неявными, а литералы объектов часто обнаруживаются автоматически.

Чтобы вычислить индекс массы тела в JavaScript , можно было бы написать:

const mass = 72;
const height = 1.78;
const BMI = mass / height ** 2;
if (18.5 <= BMI && BMI < 25) { alert('You are healthy!') }

В CoffeeScript интервал описывается напрямую:

mass = 72
height = 1.78
BMI = mass / height**2
alert 'You are healthy!' if 18.5 <= BMI < 25

Чтобы вычислить наибольший общий делитель двух целых чисел с помощью алгоритма Евклида , в JavaScript обычно требуется цикл while :

gcd = (x, y) => {
  do {
    [x, y] = [y, x%y];
  } while (y !== 0)
  return x;
}

В то время как в CoffeeScript можно использовать until[13] вместо:

gcd = (x, y) ->
  [x, y] = [y, x%y] until y is 0
  x

The ? Ключевое слово быстро проверяет, является ли переменная null или undefined :

personCheck = ->
  if not person? then alert("No person") else alert("Have person")
person = null
personCheck()
person = "Ivan"
personCheck()

Это выведет предупреждение «Нет человека», если переменная null или undefined и «Есть человек», если там что-то есть.

Обычный фрагмент JavaScript до es6, использующий библиотеку jQuery :

$(document).ready(function() {
  // Initialization code goes here
});

Или даже просто:

$(function() {
  // Initialization code goes here
});

В CoffeeScript function ключевое слово заменяется на -> символ, а отступы используются вместо фигурных скобок, как в других языках внешних правил, таких как Python и Haskell. Кроме того, круглые скобки обычно можно опустить, используя вместо них уровень отступа для обозначения функции или блока. Таким образом, эквивалент приведенного выше фрагмента в CoffeeScript:

$(document).ready ->
  # Initialization code goes here

Или просто:

$ ->
  # Initialization code goes here

Интерполяция строк в стиле Ruby включена в CoffeeScript. Строки в двойных кавычках допускают интерполированные значения с использованием #{ ... }, а строки в одинарных кавычках являются буквальными. [14]

author = "Wittgenstein"
quote  = "A picture is a fact. -- #{ author }"

sentence = "#{ 22 / 7 } is a decent approximation of π"

Любой цикл for можно заменить пониманием списка ; так что для вычисления квадратов положительных нечетных чисел, меньших десяти (т.е. чисел, остаток которых по модулю 2 равен 1), можно сделать:

alert n*n for n in [1..10] when n%2 is 1

В качестве альтернативы есть:

alert n*n for n in [1..10] by 2

Линейный поиск можно реализовать с помощью однострочника, используя ключевое слово When:

names = ["Ivan", "Joanna", "Nikolay", "Mihaela"]
linearSearch = (searchName) -> alert(name) for name in names when name is searchName

The for ... in синтаксис позволяет перебирать массивы в цикле, в то время как for ... of синтаксис позволяет перебирать объекты в цикле.

CoffeeScript подвергся критике за необычный охват. правила. [15] [16] В частности, он полностью запрещает затенение переменных , что усложняет понимание кода и подвержен ошибкам в некоторых базовых шаблонах программирования, установленных считается само собой разумеющимся со времен процедурного программирования были определены принципы.

Например, с помощью следующего фрагмента кода в JavaScript не нужно смотреть за пределы {}-блокировать, чтобы знать уверен, что невозможно foo переменная во внешней области может быть случайно переопределено:

  // ...
  function baz() {
    var foo = "bar";
    console.log(`foo = ${foo}`);
  }
  // ...
}

В CoffeeScript нет способа определить, находится ли область видимости переменной. ограничено блоком или нет, не глядя за пределы блока.

Разработка и распространение

[ редактировать ]

Компилятор CoffeeScript является автономным, начиная с версии 0.5, и доступен как утилита Node.js ; однако основной компилятор не использует Node.js и может запускаться в любой среде JavaScript . [17] Одной из альтернатив утилите Node.js является плагин Coffee Maven, плагин для системы сборки Apache Maven . Плагин использует JavaScript-движок Rhino , написанный на Java . [ нужна ссылка ]

На официальном сайте CoffeeScript.org в строке меню есть кнопка «Попробовать CoffeeScript»; щелчок по нему открывает модальное окно, в котором пользователи могут ввести CoffeeScript, просмотреть выходные данные JavaScript и запустить его непосредственно в браузере. js2coffee [18] сайт обеспечивает двунаправленный перевод.

Последние дополнения

[ редактировать ]
  • Карты исходного кода позволяют пользователям напрямую отлаживать код CoffeeScript, поддерживая обратную трассировку CoffeeScript при ошибках во время выполнения.
  • CoffeeScript поддерживает форму грамотного программирования , используя .coffee.md или .litcoffee расширение файла. Это позволяет писать исходный код CoffeeScript в Markdown . Компилятор будет рассматривать любые блоки с отступами (способ обозначения исходного кода в Markdown) как код и игнорировать остальные как комментарии.

Расширения

[ редактировать ]

Iced CoffeeScript — это расширенный набор CoffeeScript, в который добавлены два новых ключевых слова: await и defer. Эти дополнения упрощают асинхронный поток управления, делая код более похожим на процедурный язык программирования и устраняя цепочку обратных вызовов. Его можно использовать на стороне сервера и в браузере. [19]

Принятие

[ редактировать ]

13 сентября 2012 года Dropbox объявил, что их база кода на стороне браузера была переписана с JavaScript на CoffeeScript. [20] однако в 2017 году он был перенесен на TypeScript . [21]

Во внутреннем руководстве по стилю GitHub однажды было сказано: «Напишите новый JS в CoffeeScript», но сейчас это не так. [22] и их текстовый редактор Atom также был написан на этом языке, с конфигурацией, написанной на CSON («Нотация объектов CoffeeScript»), варианте JSON . [23] [24]

Pixel Game Maker MV использует CoffeeScript как часть своей среды разработки игр. [25]

См. также

[ редактировать ]
  1. ^ «2.7.0» . 24 апреля 2022 г. Проверено 9 августа 2022 г.
  2. ^ https://coffeescript.org/ «CoffeeScript заимствует цепные сравнения из Python»
  3. ^ Хеллер, Мартин (18 октября 2011 г.). «Подними нос от Dart и почувствуй запах CoffeeScript» . Инфомир . Проверено 15 июля 2020 г.
  4. ^ Алекс Маккоу (январь 2012 г.). Маленькая книга о CoffeeScript . О'Рейли Медиа . ISBN  978-1-4493-2105-5 .
  5. ^ Джош Пик (13 апреля 2011 г.). «Твит члена основной команды Rails» .
  6. ^ «АктивыCoffeeScript — 2.5.x» . www.playframework.com . Проверено 31 октября 2016 г.
  7. ^ Эйх, Брендан. « Гармония моей мечты »
  8. ^ Эйх, Брендан. " Моя презентация JSConf.US "
  9. ^ Гитхаб. 'первоначальная фиксация загадочного языка'
  10. ^ Хакерские новости. Анонс CoffeeScript 1.0.0 , опубликованный Джереми Ашкенасом 24 декабря 2010 г.
  11. ^ Хакерские новости. Оригинальное объявление CoffeeScript , опубликованное Джереми Ашкенасом 24 декабря 2009 г.
  12. ^ Coffeescript.org Анонс CoffeeScript 2
  13. ^ CoffeeScript называет это « сопоставлением с образцом », что является нестандартным использованием этого термина.
  14. ^ «Официальная страница CoffeeScript» . Проверено 20 ноября 2013 г.
  15. ^ «Проблема неявной области видимости в CoffeeScript» . Проверено 13 октября 2018 г.
  16. ^ «Определение возможностей CoffeeScript — это безумие» . 25 июля 2013 года . Проверено 13 октября 2018 г.
  17. ^ CoffeeScript. Архивировано 27 апреля 2012 г. в Wayback Machine . Jashkenas.github.com. Проверено 21 июля 2013 г.
  18. ^ Ста Круз, Рико. "js2coffee" . Проверено 11 мая 2014 г.
  19. ^ «Официальный сайт IcedCoffeeScript» .
  20. ^ Уилер, Дэн; Махковец, Зига; Варенхорст, Крис (13 сентября 2012 г.). «Dropbox погружается в CoffeeScript» . Проверено 11 мая 2013 г.
  21. ^ Гольдштейн, Дэвид (13 мая 2020 г.). «Великий переход CoffeeScript на Typescript в 2017 году» . Dropbox.Tech . Проверено 30 июня 2020 г.
  22. ^ «JavaScript · Руководство по стилю · GitHub» . Гитхаб.com. Архивировано из оригинала 15 августа 2013 г. Проверено 30 ноября 2015 г.
  23. ^ «Исходный код Atom» . Гитхаб . Проверено 26 июня 2021 г.
  24. ^ «Базовая настройка» . атома Руководство по летной эксплуатации . Гитхаб . Архивировано из оригинала 29 апреля 2024 г. Проверено 29 апреля 2024 г.
  25. ^ Каллен, Дэниел. «PIXEL GAME MAKER MV (ПК)» . Игры, центрированные Христом . Проверено 15 января 2021 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 35f40fc21bb05a9f2860c7f11b3340a3__1714405800
URL1:https://arc.ask3.ru/arc/aa/35/a3/35f40fc21bb05a9f2860c7f11b3340a3.html
Заголовок, (Title) документа по адресу, URL1:
CoffeeScript - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)