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)

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

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

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

переучи тысячи ученых и инженеров, которые используют его как эсперанто (на какой и зачем?) и потом вернёмся к вопросу нужен или не нужен

Вот, кстати, хотел гневно ответить, что неплохо было бы, наконец, переучить, но альтернативы не придумал. Лентяи от Computer Science очередной Rust изобретают, вместо языка для простых инженеров.

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

а зачем, если он нормальный FORmula TRANslator? тем более что современный расширен до полноценного

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

А почему не на Питоне? Для не-программистов он как раз лучше подходит. C, C++ чем не устраивают? Ну, ок, допустим, не устраивают. Go, Rust? Есть же хорошие мейнстримные языки, зачем насиловать труп?

Моя позиция заключается в то, что чем меньше языков, тем лучше. Старые и полумёртвые должны окончательно умереть, а сотни новых хипстерских, которые не решают никаких фундаментальных проблем и являются лишь следствием них-синдрома, не должны рождаться. Энтропия растёт феерически, пора тормозить.

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

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

По сути, на Фортране можно написать несколько вложенных циклов и ограниченное ветвление. Программу, которая в состоянии принимать достаточно сложные решения, на Фортране у меня не получилось написать, хотя я старался использовать все возможности 2008-го стандарта.

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

А почему не на Питоне?

Медленно, проблемы с совместимостью и распространением (да, я знаю про всякие virtual environments, но лезть в это не хочется, хочется скомпилировать и забыть). Динамическая типизация не всем подходит, к тому же.

C, C++ чем не устраивают?

Ну это несерьёзный вопрос, ты и сам понял. Мы говорим про учёных и инженеров.

Go, Rust?

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

Моя позиция заключается в то, что чем меньше языков, тем лучше.

И как тебе мешают другие языки?

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

Легаси и в африке легаси, это не аргумент чтобы писать на Фортране что-то новое.

переучи тысячи ученых и инженеров, которые используют его как эсперанто (на какой и зачем?)

Унификация, да и им же проще жить будет.

Но ОК, я не так понял твой изначальный комментарий. Но и ты, видимо, не понял тот, на который отвечал. Речь была не про частные случаи сферических учёных в вакууме с дремучим легаси, а про новые проекты в области ИТ.

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

частные случаи сферических учёных в вакууме с дремучим легаси

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

Унификация, да и им же проще жить будет.

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

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

Оберон ты относишь к «паскалям»? так из него же генетической мутацией яву вывели или тот же го. все эти «осишенные паскали» тоже надо закопать?

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

Медленно

Смотря что делать, Питон сейчас рулит боагодаря биндингам.

И потом, мне кажется, они ориентированы не на игрушечные проекты

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

И как тебе мешают другие языки?

Тебе никогда не попадалось легаси на чёрт знает чём? А бывало, что очень нужный тебе проект внезапно и без веской причины оказывается написан на какой-то маргинальщине / новомодной хипстерской херне? Смысл унификации же очевиден.

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

Смотря что делать, Питон сейчас рулит благодаря биндингам.

Многие задачи требуют написания кода с нуля. Никакие биндинги не помогут.

Но он далеко не такой простой (для не-программистов), гибкий и выразительный как Питон.

Значит, для простых людей он не подходит, ч.т.д.

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

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

А вообще, нет. Не попадались. Обычно нужные мне программы стоят денег, имеют закрытый код и, помимо всего прочего, вообще не работают, как мне надо. Поэтому приходится писать свои. Либо они бесплатные, открытые, с устоявшимся сообществом и прекрасно работают без моего участия.

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

Оберон ты относишь к «паскалям»?

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

яву вывели или тот же го... тоже надо закопать?

Их не нужно закапывать, они вполне живы. Не улавливаю твою логику.

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

Значит, для простых людей он не подходит, ч.т.д.

Будто Фортран лучше подходит.

если бы я был программистом по профессии

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

тогда я был бы очень востребован

Нет, ровно наоборот. Если был всего один язык, была бы чудовищная конкуренция. А хренотучи новых языков как раз таки создают новые рабочие места для всех желающих.

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

Есть потребности, а есть прихоти, речь про прихоти.

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

А гигиенические макросы разве нельзя сделать либой на CL?

Извини, не понял. Что по твоему должно быть в такой гипотетической либе, что бы могло добавить в общелисп другой сорт макросов?

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

Нет. Прпвда понятия не им ею что это

Тогда зачем тебе ответ на твой вопрос?:

Кстати чем гуил(это же ским) отличается от лиспов?

Считай, что в принципе ни чем не отличается, все диалекты Схемы относятся к семейству Lisp, так же как и CL.

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

Их не нужно закапывать, они вполне живы. Не улавливаю твою логику.

а я не улавливаю что именно ты относишь к множеству «паскаль» с которым ты тут ведёшь незримый бой

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

Если был всего один язык, была бы чудовищная конкуренция.

если бы был один язык, то из всех упоминаемых это был бы фортран

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

Будто Фортран лучше подходит.

Да, Фортран лучше подходит для учёных, я уже три раза сказал.

Ты не видишь проблему там, где ты с ней не сталкиваешься.

Так ты расскажешь, какие проблемы лично тебе создал Паскаль или Фортран?

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

Так ты расскажешь, какие проблемы лично тебе создал Паскаль

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

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

Object Pascal и диалекты.

компонентный паскаль пронесло

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

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

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

ну так ты сразу сказал что фанбой алгола-68

C

кто бы сомневался

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

Очевидно, это был бы C.

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

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

я уже три раза сказал

Повтори ещё десять, вес твоих слов без аргументации всё равно не увеличится.

Так ты расскажешь, какие проблемы лично тебе создал Паскаль

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

или Фортран?

Против фортрана ничего не имею, мне нравится Фортран. Это как если бы из музея можно было взять покататься какой-нибудь автомобиль 1930х годов. Но, даже если бы там каким-то чудом оказалась автоматическая коробка, хорошая акустика и кондиционер, я бы всё равно не стал его использовать повседневно.

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

Это если «кто первый встал, того и тапки», но на Си написано всё самое важное, и если должен был остаться только один, это это был бы он.

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

ну если всё самое важное для WitcherGeralt написано на си, то тут, само собой, без вариантов

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

Не напомнишь, на чём там у нас ядра операционок писать принято?

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

Повтори ещё десять, вес твоих слов без аргументации всё равно не увеличится.

Во-первых, мне лучше известно, на чём хотят писать учёные, потому что я с ними работаю, а ты — нет. Во-вторых, вот тебе пример: http://www.castep.org Проект создан в середине 90-х, когда С++ уже цвёл достаточно пышным цветом. Тем не менее, выбрали Фортран. Лицензия на этот пакет стоит больше тысячи евро и просто так даже не продаётся (потому что просто так никто и не будет покупать). С помощью этого пакета получены результаты, опубликованные примерно в 6000 научных публикациях. Проект развивается до сих пор (поскольку развивается область науки, в которой он вертится), последние нововведения были в прошлом году. Ты, скорее всего, не поймёшь даже задачу, которую он решает, не то что принцип действия (без обид, просто тебя не учили этому шесть лет). Поэтому над этим работают другие люди, которым очень не хочется знать, что такое unsafe Rust или когда можно и когда нельзя в C++ вызывать new.

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

Наконец-то конкретика. Но ведь легаси может быть на чём угодно. Ты предложил закопать Паскаль как язык программирования, но это не спасёт тебя от легаси. Новые же проекты на Паскале к тебе никогда не попадут, потому что «в проде» никто на нём не будет писать. Зачем тогда закапывать (и главное, что это значит)?

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

принято
он «зашел»

ну так всё тоже, что и с фортраном для инженеров и ученых, то и с си для системных программистов

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

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

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

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

Ох.

Если у Вас — демонстрационный бложег на двадцать записей и полторы морды живых пользователей — да, можно все на сервере делать, и HTML рендерить, и состояние пользовательских сессий держать.

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

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

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

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

Во-первых, мне лучше известно, на чём хотят писать учёные, потому что я с ними работаю, а ты — нет.

Тогда ты тем более должен понимать что такое аргументация, это не она.

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

Но ведь легаси может быть на чём угодно

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

никто на нём не будет писать

Это и есть «закопать».

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

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

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

Не понимаю что именно помимо этих двух факторов, которые к самому языку мало как относятся, делает Фортран самым подходящим языком для учёных.

Потому что ты, во-первых, не решаешь научные задачи, во-вторых, не знаешь Фортран.

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

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

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

Можешь whalesong использовать.

Спасибо, конечно, но

  1. кажется, он мертв
  2. это не серверный фреймворк. серверные фреймворки нужны и в вебдваноле. Просто выполнять они должны другие задачи, чем рендерить ХТМЛ. Например, предоставлять готовые механизмы для реализации длинных/асинхронных запросов и прочих пуш-нотификаций.
AlexM ★★★★★
()
Ответ на: комментарий от monk

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

Кстати, если в курсе, как с этим в современных популярных схемах (guile, chicken, gambit)?

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

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

Если нужен язык уровня си, но инженерно-эстетический вкус не позволяет юзать си (будем честны, си уродлив), то Паскаль — почти единственный вариант. Другое дело, что в юниксах юзать паскаль вместо си, значит быть ССЗБ. Остаётся только наступить на горло своему вкусу и привыкать к си.

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

Извини, не понял. Что по твоему должно быть в такой гипотетической либе, что бы могло добавить в общелисп другой сорт макросов?

Ну defhygenic который принимает код и генерирует defmacro с необходимой гигиеной.

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

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

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

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