LINUX.ORG.RU

Вышел язык программирования Racket 7.0

 , ,


4

3

Racket - это язык программирования общего назначения, а также первая в мире экосистема для языко-ориентированного программирования.

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

Ядро версии 7.0 является результатом переработки ядра версии 6.12 более чем на 1/8, и включает новый механизм раскрытия макросов, который осуществляет бутстрэппинг самого себя. Данный механизм покрывает более 40% кода, необходимого для замены ядра Racket на Chez Scheme. Остальные 60% кода, по бОльшей части, также реализованы, но не включены в этот выпуск; мы надеемся и предполагаем, что Racket-на-Chez будет готов для промышленного использования в следующих выпусках ветки 7.x

  • Синтаксис формы (`#'`) поддерживает новые шаблоны подформ: ~@ - для сплайсинга, и ~? - для выбора между подшаблонами, основанного на возможном «отсутствии» значения у переменных образца (например, у образца ~optional в syntax-parse). Библиотека syntax/parse/experimental/template, откуда происходят эти возможности, экспортирует новые формы под старыми именами для совместимости.
  • На Windows флаг --embed-dlls команды raco exe создаёт по-настоящему автономный исполняемый файл ".exe", который содержит в себе разделяемые библиотеки Racket.
  • Опция «Create Executable» интегрированной среды разработки DrRacket для учебных языков (Beginner Student, и т.п.) использует флаг --embed-dlls на Windows.
  • Поддержка prefab («previously fabricated») структур в Typed Racket существенно улучшена, что делает их более полиморфными, исправляя, вместе с тем, существенные ошибки текущей реализации. Программы, которые сейчас используют предикаты для prefab-структур неизвестных данных, могут нуждаться в ревизии, т.к. предыдущие версии Typed Racket позволяли программам с потенциальными ошибками осуществлять проверку типов. Смотрите Typed Racket RFC 1 и prefab-changes для более подробной информации об этом изменении, и о том, как исправить программы, которые подверглись влиянию в связи с этим изменением.
  • Typed Racket поддерживает #:rest-star в конструкторе типов ->*, что позволяет функциональным типам указывать в хвостовом списке аргументов (rest arguments) более сложные образцы типов, такие как функция hash.
  • Интерактивные оверлеи могут быть наложены на графики, созданные с помощью plot-snip. Это позволяет создавать интерактивные графики или отображать дополнительную информацию, когда указатель мыши находится над областью графика. Примеры использования данной возможности можно посмотреть тут.
  • racket/plot предоставляет процедуры для отображения графиков японских свечей (candlestick charts), которые могут быть использованы в финансовом анализе временных рядов.
  • Добавлен contract-equivalent?, который проверяет, что два контракта являются взаимосильными, без экспоненциального замедления, которое имеет место в случае двух вызовов contract-stronger?.
  • Lazy Racket поддерживает функции с именованными аргументами.

>>> Оригинал



Проверено: jollheef ()
Последнее исправление: Deleted (всего исправлений: 1)

Ответ на: комментарий от anonymous

существуют быдлоязычки, хипстоязычки и илиткоязычки. при этом адепты быдлоязычков стремятся закопать всех остальных, адепты хипстоязычков считают что пусть расцветает сто цветов, а адепты илиткоязычков смотрят на это всё и лишь улыбаются

Хех. Грубовато, но во многом похоже на правду.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Фортран нужен там, где перечисленные тобой языки и пакеты (кстати, обожаю Mathematica) уже не спасают. Вот и всё. Ты не можешь в это поверить, потому что не работал над научными задачами. Это не страшно. Невозможно всё знать, но странно делать выводы, исходя из незнания. Но это только моё мнение.

knovich
()
Последнее исправление: knovich (всего исправлений: 2)
Ответ на: комментарий от WitcherGeralt

а компилируемое под явамашину и в джаваскрипт — ничего не решает.

Разве? Явамашина даёт сборщик мусора и JIT. Джаваскрипт возможность запуска в браузере.

monk ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Если оно решает какие-то фундаметальные проблемы, то да, а компилируемое под явамашину и в джаваскрипт — ничего не решает.

CoffeScript, например, решает проблемы бойлерплейта в JS. TypeScript решает проблемы типобезопасности. Да почти каждый из сотен язычков компилирующихся в JS решает какую-то конкретную проблему.

anonymous
()
Ответ на: комментарий от anonymous

Если бы всё было тогда так, как ты хочешь

Ты не понял чего я хочу.

Если на языке кто-то пишет — значит он кому-то полезен

Есть естественный ход вещей, языки появляются, проигрывают конкуренцию, умирают. Если кто-то пишет на объективно мёртвом языке, я даже и не думаю ему запрещать, пусть пишет. Я могу лишь это открыто неодобрять.

Если кто-то хочет придумать новый язык, то, безусловно, нужно его отправить учиться

Именно. Новые языки (в большинстве своём) появляются не от большого ума своих создателей, а совсем по другим причинам.

Тогда и новый язык не придётся изобретать из-за незнания, что уже существует нужный, хоть и под другим соусом. И выбрать язык под задачу тоже можно будет исходя из знаний, какой что умеет, а не из того, что нынче модно и мейнстримно

Ну так ты же со мной согласен.

всё нужное и полезное уже придумано

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

WitcherGeralt ★★
()
Ответ на: комментарий от monk

а компилируемое под явамашину и в джаваскрипт — ничего не решает.

Разве? Явамашина даёт сборщик мусора и JIT. Джаваскрипт возможность запуска в браузере.

Подозреваю, он имел в виду ненужность других языков, компилирующихся в JIT, кроме Java. И ненужность языков, компилирующихся в JS.

anonymous
()
Ответ на: комментарий от knovich

Фортран нужен там, где перечисленные тобой языки и пакеты уже не спасают

Вот это уже похоже на правду и в это я готов поверить. Не верю я в серебряную пулю. Ещё меньше я в это верю, когда ты представляешься абстрактным сферическим учёным (конкретно этого ты не делал, но ты понимаешь о чём я), который точно знает что именно (Фортран) нужно всем учёным мира из всех областей.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Не верю я в серебряную пулю.

Да что же это такое. Я не говорил про серебряную пулю. Я говорил, что от Фортрана невозможно отказаться, так как в определённых областях он лучше всего подходит.

Ещё меньше я в это верю, когда ты представляешься абстрактным сферическим учёным (конкретно этого ты не делал, но ты понимаешь о чём я), который точно знает что именно (Фортран) нужно всем учёным мира из всех областей.

Я не говорил про все области (в одном из ответов, кстати, я указал, где Фортран вообще не годится для науки; кроме того, он не умеет работать в символьных вычислениях: у меня есть знакомый, у которого весь рабочий процесс завязан именно на них в Mathematica). В моей области нужен Фортран, я тебе привёл пример проекта. Я объяснил, какие свойства Фортрана нужны в моей области. Ты не привёл, как я просил, пример языка, обладающего всеми этими свойствами. Я показал, что программы на Фортране эффективно решают задачи из моей области. Я, честно говоря, не понимаю, что я сделал не так. Если ты не веришь, что я работаю в науке, могу привести свой скромный список публикаций, если этого будет достаточно для подтверждения моей квалификации. Но мне кажется, что ты просто издеваешься.

knovich
()
Последнее исправление: knovich (всего исправлений: 1)
Ответ на: комментарий от anonymous

почти каждый из сотен язычков компилирующихся в JS решает какую-то конкретную проблему

И создаёт новую, которую потом решают уже в следующем хипсто-язычке?

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Ну так ты же со мной согласен.

Ок, нашли точку согласия: нужно больше учиться фундаментальным вещам, чтобы видеть похожесть разных языков и не изобретать велосипеды.

С утверждением, «нужно учиться» мне, конечно, гораздо легче согласиться, чем с утверждением «нужно запретить», которое я увидел в твоих «должны/не должны».

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

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

А про синтаксический сахар зря ты так. Он тоже может решать много проблем, хоть и не фундаментальных. Иначе бы мы все программировали машины Тьюринга или в лямбда-исчислении работали.

anonymous
()
Ответ на: комментарий от anonymous

нужно запретить

Даже если бы это было возможным, я бы не стал этого делать. Всегда есть частные случаи. Если запретить Кобол, то у американцев начнут тонуть корабли и падать самолёты (или для чего они его там юзали).

Пока что там главенствует мода и мейнстрим

И всегда будет. А тем кто на это не ведётся, я предлагаю хотя бы картинно хвататься за голову, когда они слышат предложение что-то написать на новом модном ХипстоСкрипте.

Иначе бы мы все программировали машины Тьюринга или в лямбда-исчислении работали

Опять же, ты про качественные изменения. Много ты знаешь новых языков, про которые можно такое сказать?

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

ненужность других языков, компилирующихся в JIT, кроме Java. И ненужность языков, компилирующихся в JS

Тогда надо идти до конца и признать ненужность других языков, компилирующихся в машинный код, кроме ассемблера. :-)

Вообще у меня в голову не могло прийти, что кто-то может считать, что, например, Scala или Clojure не решает никаких проблема по сравнению с Java/JS.

monk ★★★★★
()
Ответ на: комментарий от WitcherGeralt

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

Позже ты эту линию ещё раз подтвердил, а я принял это за твою позицию. Это не к тому чтобы поспорить, просто я не из воздуха это взял.

Ничего быстрее и проще для учёных, чем Фортран, не придумали

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Например, ковариантное и контравариантное наследование. Полнофункциональные макросы (в смысле, формирование AST кодом на Scala). Функциональный стиль программирования без потери возможностей ООП. Представления. Экзистенциальные типы.

monk ★★★★★
()
Ответ на: комментарий от monk

У нас разные представления о том какие проблемы являются фундаментальными. Я бы всему тобой сказанному предпочёл быстрые массивы. Нам нет смысла это обсуждать, мы не согласимся.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Я бы всему тобой сказанному предпочёл быстрые массивы.

Быстрее, чем на ассемблере, не будут. Языки развиваются не в сторону скорости, а в сторону возможности отражения новых алгоритмических объектов.

monk ★★★★★
()
Ответ на: комментарий от WitcherGeralt

У меня ошибка. Следует читать: для большого количества учёных. Это не отменяет того, что он в принципе нужен, просто сужает область применимости. На тот момент мне не хотелось уточнять, я не думал, что всё зайдёт так далеко.

knovich
()
Ответ на: комментарий от monk

А быстрее чем в джаве будут, в джаве они медленные. Это огромная проблема джавы.

Джава не ассемблер, она достаточно выразительная, на ней вполне можно писать, хоть и не очень хочется.

P.S. В последний раз писал на джаве в конце 2013. Ремарка на случай, если проблема с массивами больше не актуальна.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

У нас разные представления о том какие проблемы являются фундаментальными.

Вот да, пора уточнить твоё определение «фундаментальности» проблемы в контексте нужности или ненужности разных языков.

Про скалу монк уже написал, я дополню про кофескрипт.

Во-первых, он абсолютно точно не решает «фундаментальных» проблем JS. Просто потому, что он даже не компилятор, а примитивный транслятор.

Во-вторых, многие проблемы он, вообще говоря, решает. Снижает количество бойлерплейта, код становится легче писать и проще читать (естественно, при прочих равных, в том числе квалификации пишущих и читающих на JS и на CS).

Безусловно он косвенно участвует в создании одной проблемы, фрагментации сообщества разработчиков. Но тут всё опять сводится к отсутствию фюрера, который железной рукой укажет единственно верный путь.

(Если что, я ни разу не агитирую за кофескрипт, просто пример подходящий. А так, если JavaScript как явление целиком сдохнет, я только порадуюсь.)

anonymous
()
Ответ на: комментарий от WitcherGeralt

Пока что там главенствует мода и мейнстрим

И всегда будет. А тем кто на это не ведётся, я предлагаю хотя бы картинно хвататься за голову, когда они слышат предложение что-то написать на новом модном ХипстоСкрипте.

Именно поэтому я всегда искренне радуюсь, когда слышу, что кто-то продуктивно использует, например, совершенно не мейнстримовый и абсолютно не хипсто-модный free pascal.

anonymous
()
Ответ на: комментарий от WitcherGeralt

именно (Фортран) нужно всем учёным мира из всех областей.
Ты говорил, что это учёнский эсперанто.

разве обычный эсперанто нужен всем?

anonymous
()
Ответ на: комментарий от knovich

Python, Nim, Julia. Почему они не годятся? Потому что медленные.

«медленный» - это никак не свойство языка. а вот «выразительный», «лаконичный» - как раз раз таковыми и являются.

anonymous
()
Ответ на: комментарий от anonymous

«медленный» - это никак не свойство языка. а вот «выразительный», «лаконичный» - как раз раз таковыми и являются.

«Медленный» - это свойство времени. Никому не хочется ждать веками, всем хочется быстрее. В пень такой язык медленный, на зато лаконичный и выразительный.

azelipupenko
() автор топика
Ответ на: комментарий от WitcherGeralt

если я вообще правильно понял

нет, ты как обычно сам себе всё придумал

(может, такие «мозговые чудеса» свойственны всем жертвам си и алгола-68?)

anonymous
()
Ответ на: комментарий от anonymous

Ну если смысл другой (не переносный, не серебряная пуля), то сравнивать Фортран с Эсперанто — говорить, что Фортран не нужен. Эсперанто это эпичнейший фейл и нинужно. Даже если опустить то, что единым мировым языком стал английский, который существовал задолго до Эсперанто, то Эсперанто уже сто раз форкнули, вместо одного универсального языка Эсперанто ещё сильнее увеличил энтропию.

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

Вот да, пора уточнить твоё определение «фундаментальности»

Проще на примерах.

Раст решал проблему безопасной работы с памятью. Однозначно фундаментальная проблема.

Голанг решал проблему конкурентности и параллелизма, также проблему отсутствия простого (во всех смыслах) компилируемого языка с батарейками в комплекте, а заодним решил и проблему вывиха мозга от асинхронщины. Тоже фундаментальные проблемы.

Эликсир решал фундаментальную проблему того, что людям приходится писать на Эрланге. Шутка.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

ну ок, фортран для ученых - это как латынь для медиков или ботаников

anonymous
()
Ответ на: комментарий от WitcherGeralt

что единым мировым языком стал английский

это миф, хотя, конечно, если окажешься где-то и не будешь знать местного (или родственного ему) языка, то вероятность что поможет знание именно английского выше чем другого языка.

и тут так же как с фортраном, не обязательно что все знают или должны знать английский

anonymous
()
Ответ на: комментарий от WitcherGeralt

Проще на примерах.

По примерам видно только то, что ты называешь проблему «фундаментальной», грубо говоря, от балды. Так что давай определение. Иначе конструктивного диалога совсем не получится.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Раст решал проблему безопасной работы с памятью. Однозначно фундаментальная проблема.

Интересно. И при этом решение проблемы наследования в ООП в Scala по-Вашему фундаментальной проблемой не является. Также как и формирование AST из самого языка. Странно...

monk ★★★★★
()
Ответ на: комментарий от anonymous

ты называешь проблему «фундаментальной», грубо говоря, от балды

Не надо бредить. Небезопасная работа с паматью и скейлинг задач на все ядра/процесосры в системе — это две огромные проблемы. Иначе не существовало бы роя статических анализаторов и OpenMP.

Ещё раз, повторю то, что говорил немного выше:

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

Фундаментальными являются (от обратного тому, что я процитировал, раз уж ты сам так не можешь) проблемы реального мира, те, что не решаются или не решаются достаточно эффективно применением определённого набора практинк и инструментов. Проблемой реального мира не является некрасивая и неудобная джава, на которой не хочет писать капризный разработчик, это проблема капризного ркзработчика. GIL — проблема реального мира, он ограничивает применение питона, делая его говном.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от monk

Ничего странного. Мы говорим про вещи из разных миров. Проблема наследования у тебя в голове, а медленные массивы прекрасно измеряются во вполне реальном процессорном времени.

WitcherGeralt ★★
()
Ответ на: комментарий от anonymous

Это не миф, все цивилизованные люди понимают важность английского, его учат по всему миру, на нём говорят по всему миру. В IT не знать английский значить не быть в IT (важность IT в современном мире вопросов же не вызывает?). Да, очень широко распространён испанский, у мандарина и хинди носисителей огромное количество, а половина Африки говорит на французском, у арабов своя атмосфера, но ближе всего к единому мировому языку именно английский, разве нет?

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

GIL — проблема реального мира, он ограничивает применение питона, делая его говном.

говном его делает 100500 мелких фич, которые надо держать в памяти и помнить тонкие отличия.
А тормознутость, GIL, проблемы разворачивания и т.д. - это уже проблемы конкретной реализации. Jython, например, GIL не имел и спроблема обратной совместимости тоже на порядок меньше біла.

cab ★★★★
()
Ответ на: комментарий от WitcherGeralt

Раст решал проблему безопасной работы с памятью. Однозначно фундаментальная проблема.

при этом решение проблемы наследования в ООП в Scala по-Вашему фундаментальной проблемой не является

Проблема наследования у тебя в голове, а медленные массивы ...

При чём тут медленные массивы? Массивы в Раст стали быстрее, чем в Фортране?

monk ★★★★★
()
Ответ на: комментарий от monk

Мы обсуждали джаву и пример массивов более нагляден, чем пример с памятью, да я чуть съехал, но дурака-то не валяй. И про массивы в джаве я уже пояснил. Завязывай, тебе ещё в самом первом комментарии было сказано, что нам с тобой обсужадть здесь нечего.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от knovich

Enjoy your LOR! Да забей ты на ЛОР! Лучше делом заняться! Наукой там, или студентов учить. У меня вот обед. На минутку заглянул, а потом закрою эту страницу и забуду про всю ту фигню, что тут часто пишут.

dave ★★★★★
()
Ответ на: комментарий от Deleted

Сам нампи на питоне и сях, а эти 0.1% — тесты для f2py, нужного чтобы биндить чтобы библиотеку LAPACK на фортране, которая не является частью проекта.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

В IT не знать английский значить не быть в IT

Да,согласен.

Odalist ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Это не миф, все цивилизованные люди понимают важность английского, его учат по всему миру, на нём говорят по всему миру. В IT не знать английский значить не быть в IT (важность IT в современном мире вопросов же не вызывает?)

однако же, это не значит что его знают все или он нужен всем. все врачи по всему миру используют латынь и многие учётные по всему миру и инженеры используют фортран.

цивилизованные люди понимают важность английского

а почему же «цивилизованные люди» понимают важность именно английского, а не, к примеру, немецкого? чем английский фашизм так уж кардинально лучше немецкого (или какого другого)?

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.