LINUX.ORG.RU

Релиз PLT Scheme 4.0

 , ,


0

0

12 июня вышла новая версия PLT Scheme 4.0. Из нового:

  • разнообразные улучшения синтаксиса,
  • серьезно обновлена документация,
  • поддержка R6RS и улучшена поддержка R5RS,
  • добавлен Typed Scheme,
  • JIT.

>>> Подробности

★★★★

Проверено: UVV ()

Нехрена не понятно, кто и зачем вышло... Список изменений при таком раскладе не дает никакой информации, тем более такой...

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

>Нехрена не понятно, кто и зачем вышло...

Если ты не знаешь, что такое Scheme и тем более, что такое PLT, то тебе это не нужно.

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

> Если ты не знаешь, что такое Scheme и тем более, что такое PLT, то тебе это не нужно.

Я бы не был так категоричным. Может как раз нужно, а он об этом не знает. А была бы новость написана понятней, узнал бы.

anonymous
()

> - разнообразные улучшения синтаксиса

Скобочки с антиалиасингом?

anonymous
()

Недооформлением новостей теперь стимулируют хождение по ссылкам? Может это то, что я давно искал?

Ky6uk
()

хорошая новость, спасибо.

anonymous
()

отлично, надо посмотреть

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

> Недооформлением новостей теперь стимулируют хождение по ссылкам? Может это то, что я давно искал?

+1

gln0fate ★★
()

Отличная новость.

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

> Если ты не знаешь, что такое Scheme и тем более, что такое PLT, то тебе это не нужно.

-- ХЗ=каким=кластеро=склерозом болел?

-- А что это?

-- Значит не болел. Так и запишем. Иначе б знал.

// ЛОР-врачЪ

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

> А почему еще никто не вспомнил глобальный и надежный ПХП?

Потому что настолько альтернативно одарённых до тебя в ветке не было?

anonymous
()

Хорошая схема, использую. Правда в убунте как раз экспериментальная 372, не знаю, когда обновятся.

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

> Для чего? o_O

Для дипломной работы :D
Я маленький начинающий схемаюзер. Но она мне уже нравится :) Смысловой нагрузки на строку кода получается гораздо больше. Это конечно не ынтырпрайз, индусы не одобрят, но мне нравится.

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

>> Для чего? o_O

> Да, для чего это вообще нужно?

Да я сам не знаю. Апологеты говорят, что Лисп-языки круче Дюка Нюкема и увеличивают производительность труда в разы. Но доказать это в промышленных масштабах пока никому не удалось :)

tailgunner ★★★★★
()

когда я последний раз смотрел на plt (давно), там были сильно убогие объекты. что-то изменилось?

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

> Да я сам не знаю.

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

Например, есть Перл и С. В С мне приходится писать 5К кода, чтобы решить ту задачу, которая в перле решается одной строкой. Какие-нибудь примеры Scheme, по сравнению с другими языками высокого уровня (не С, не С++), можно здесь увидеть?

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

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

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

> хочешь сказать что решение на c++ будет короче решения на си?

Хочу сказать, что Схема и Си - это языки разного класса. Будет ли короче на Си++ - не знаю. Может быть.

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

>>> Для чего? o_O

>> Да, для чего это вообще нужно?

> Да я сам не знаю. Апологеты говорят, что Лисп-языки круче Дюка Нюкема и увеличивают производительность труда в разы. Но доказать это в промышленных масштабах пока никому не удалось :)

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

У меня пока нет чёткого ощущения этого языка. Я заметил, что я практически не использую контрактного программирования, никогда не проверяю типы, и тд. Хотя в других языках я это делаю. Тут просто нет статической типизации, и самому её эмулировать мне кажется глупо. Лучше "расслабиться и получить удовольствие", т.е. предположить, что у динамической типизации есть плюсы и попробовать их использовать. Это сильно уменьшает количество кода, и в то же время, вероятно, уменьшает надёжность программы. Впрочем я с негативными последствиями не сталкивался, ибо пишу один и стараюсь 7 раз отмерить, т.е. подумать, что буду писать, порисовать на бумажке и т.д.

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

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

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

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

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

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

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

Я правда не использовал макросы, дядька vsl их сильно хвалил.

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

>> Да я сам не знаю. Апологеты говорят, что Лисп-языки круче Дюка Нюкема и увеличивают производительность труда в разы. Но доказать это в промышленных масштабах пока никому не удалось :)

> Ну вроде Поль Грем амазон написал в разы быстрее конкурентов, по крайней мере он так говорит.

Для начала - Грэм не писал Амазон, он написал то, что стало потом Yahoo! Stores (или как-то так).

Весь треп Грэма о Лиспе следует, ИМХО, понимать совсем не так, как его обычно понимают - "мы beated the averages потому что использовали Лисп". Он сам просто сильно выше среднего уровня, первым пришел в незанятую тогда нишу веб-разработки, и добился успеха. Но насколько именно Лисп этому способствовал - большой вопрос. Тот же Амазон сделан на Перле, Гугель - вообще на непонятно чем (смесь языков, как говорят).

И, судя по тому, что его Arc вызвал скорее недоумение, чем восхищение, в языках программирования Грэм разбирается не блестяще.

> Тут просто нет статической типизации

В PLT Scheme уже есть :)

> пишу один

One-man show, prototyping... для этого динамические языки почти что предназначаются :)

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

Не замечал, что так уж "обалденно" (или в Питоне замыкания не полноценные).

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

> Для начала - Грэм не писал Амазон, он написал то, что стало потом Yahoo! Stores (или как-то так). 

Угу. Ну я его не превозношу, но формально Sucess Story есть.

>> Тут просто нет статической типизации

> В PLT Scheme уже есть :) 

Не, мой код должен быть R5RS и компилироваться моим же компилятором :) А так в PLT Scheme много чего вкусного есть.

>> пишу один

> One-man show, prototyping... для этого динамические языки почти что предназначаются :) 

Может быть. Хотя я в этом не уверен. Но чёткой точки зрения пока не имею.

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

> Не замечал, что так уж "обалденно" (или в Питоне замыкания не полноценные).

Ну банально — надо по всем элементам списка пройтись, (for-each (lambda (c) ... ) lst) и всё. 
И не нужно отдельных синтаксических конструкций, всё прекрасно ложится в существующий синтаксис.
Или вместо цикла хитрого иногда проще бывает сделать лямбду и вызывать её в концеи
Вот буквально вчера блоксхему один в один через замыкания перенёс:

; calls (callback type string) for each lexeme
; returns index of the first invalid character or #f
(define (dfa-interpreter dfa-start-state callback input)
  (define first-index 0)
  (define last-index #f)
  (define last-label #f)
  (define index 0)
  (define state dfa-start-state)

  (define (main)
    (if (< index (string-length input))
        (let* [(char (string-ref input index))
               (connection (assv char (cdr state)))]
          (if connection
              (next-state (cdr connection))
              (no-next-state)))
        (no-next-state)))

  (define (next-state nstate)
    (when (car nstate)
      (set! last-index index)
      (set! last-label (car nstate)))
    (set! state nstate)
    (set! index (+ index 1))
    (main))

  (define (no-next-state)
    (if last-label (send-lexeme)
        (finish-work)))

  (define (send-lexeme)
    (callback last-label (substring input first-index (+ last-index 1)))
    (set! state dfa-start-state)
    (set! first-index (+ last-index 1))
    (set! last-label #f)
    (set! index (+ last-index 1))
    (main))

  (define (finish-work)
    (if (< index (string-length input))
        index
        #f))

  (main))

Сразу скажу, что без оптимизации хвостовых вызовов это всё, конечно, теряет смысл.

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

> формально Sucess Story есть.

Она просто есть. Я только думаю, что роль Лиспа в ней сильно переоценена.

> Ну банально — надо по всем элементам списка пройтись, (for-each (lambda (c) ... ) lst) и всё. И не нужно отдельных синтаксических конструкций

А что плохого в отдельной синтаксической конструкции для такой вездесущей вещи, как проход по списку/массиву? Минимализм ведь не самоцель.

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

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

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

> А что плохого в отдельной синтаксической конструкции для такой вездесущей вещи, как проход по списку/массиву? Минимализм ведь не самоцель.

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

Вообще я раньше думал, что в лиспе нет синтаксиса, одни скобки :) А недавно понял, что это неправда, тот же if, when и прочее, это именно синтаксис. А самое интересное, что этот синтаксис не статичен, как в большинстве языков, а мутабелен, его можно править под свои цели, добавлять новый, но концептуально он ничем не отличается от синтаксических конструкций других языков.

> где там замыкания? Обычные вложенные функции.

Ну да, здесь они и не использовались, хотя вложенные функции это подкласс замыканий, если можно так выразиться.

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

Потому что компилятор PHP на другой Схеме написан, на Bigloo. PLT там не использовался.

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

> о доказать это в промышленных масштабах пока никому не удалось :)

Таким как ты ничего никто доказывать и не станет. Ибо кому ты нужен?

А Схема использовалась и будет использоваться в интерпрайзе. У нас например на ней до фига внутренних скриптом написано, управляющих сборкой, куча тулзов для static code analisys (знаю, что Haskell в этой области рулит, но хаскеллистов нет, а Схему знает каждый второй, её всё же уже дцать лет как в ВУЗах преподают).

Мнение же таких вот макакокодеров как ты, поверь, абсолютно никого не колышет.

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

> Тут просто нет статической типизации, и самому её эмулировать мне кажется глупо.

А вот это зря. Есть куча ситуаций, когда её можно и нужно эмулировать. Например обработка XML и подобных строго типизированных структур. Очень легко встраивается в язык (вские там VB и Scala нервно курят в сторонке), с выводом типов и всеми прочими прибамбасами.

> Я сейчас не пишу юниттестов совсем,

Тоже зря. Ты REPL-ом только текущие изменения проверяешь. А если что сломал в старом коде, изменив одну макру или функцию, то не заметишь.

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

> во-вторых минусов для себя я пока не вижу.

Производительность не самая высокая. Лиспы без continuations и с опциональной типизацией в среднем заметно быстрее.

Другой минус - макры нормальные не стандартны и во всех реализациях разные, а в стандартных гигиенических черт ногу сломит.

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

> По моим ощущениям, он стоит в одном ряду с пайтоном, руби, перлом по высокоуровневости и скорости.

Ты где такой тормозной Лисп достал? Даже Схема (например Bigloo или вообще Stalin) на пару порядков быстрее питонов и перлов, про руби и не говорю. Идёт почти вровень с Си.

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

> Но насколько именно Лисп этому способствовал - большой вопрос.

Он объяснял, как Лисп этому способствовал. Звонит раздраженный заказчик, говорит про обнаруженную глюку, а Грэм, исправляя глюку без остановки веб-сервера, в REPL-е, говорит в ответ "чувак, тебя глючит, посмотри ка ещё раз внимательнее, быть такого не может". Заказчик смотрит, извиняется, и репутация соответственно растёт.

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

> И, судя по тому, что его Arc вызвал скорее недоумение, чем восхищение, в языках программирования Грэм разбирается не блестяще.

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

> One-man show, prototyping... для этого динамические языки почти что предназначаются :)

В проекте из двадцати разработчиков (не считая тестеров) Схема у нас никак не уступала всяким там Жабам, а во многом её превосходила по управляемости. Въезжать в чужой код проще всем было, без всяких левых тулзов, рефлекшынов с УМЛями.

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

> А что плохого в отдельной синтаксической конструкции для такой вездесущей вещи, как проход по списку/массиву?

Синтаксические конструкции в Схеме и в Лиспе реализуются средствами самого языка, тривиально. А компилятор пусть остаётся минималистичным и простым, так надёжнее (и отладка проще).

> Минимализм ведь не самоцель.

Не самоцель. Но очень удобный и полезный инструмент.

> Кстати... может, я уже забыл Схему напрочь, но где там замыкания? Обычные вложенные функции.

Ку-ку, приплыли.

(lambda (x) (lambda (y) (+ x y)), вложенная лямбда порождает замыкание относительно x.

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

> Arc - это DSL такой. Для исключительно веб-программирования

Грэму это скажи, а то он не знает:

"We're trying to make something for the long term in Arc, something that will be useful to people in, say, 100 years. (If that sounds crazy, remember that we're already up to 50.)"

"I only wrote all the web stuff to create the pressure of real applications pushing down on the core"

>> Кстати... может, я уже забыл Схему напрочь, но где там замыкания? Обычные вложенные функции.

>Ку-ку, приплыли.

> (lambda (x) (lambda (y) (+ x y)), вложенная лямбда порождает замыкание относительно x.

Language lawyer? Плыви дальше, не отвлекайся.

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

> "We're trying to make something for the long term in Arc, something that will be useful to people in, say, 100 years. (If that sounds crazy, remember that we're already up to 50.)"

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

> Language lawyer? Плыви дальше, не отвлекайся.

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

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

> у меня автоматически из спецификаций генерится к каждой функции набор тестов

можете пример привести?

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

< Уж поверь, я его лично знаю.

В общем, без разницы, кто именно лжет - Грэхэм или ты.

>> Language lawyer? Плыви дальше, не отвлекайся.

> Сливаешь, чувак. То, что я показал, является замыканием. По определению.

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

> то понимаешь под замыканием ты, существо без образования, без знаний и опыта, я не знаю

Ну и зачем ты вообще разговариваешь с таким существом. Тебе что, _настолько_ одиноко?

> это не даёт тебе права хамить тем, кто знает правильные определения.

Хамишь здесь только ты.

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

> Меня не интересуют академические споры.

Хорошая отмазка при незнании определений. Мощно сливаешь, шумно.

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

Дурак. В любом языке с вложенными функциями тебе пришлось бы x захватывать явным образом. Тогда как замыкания захватывают окружение неявно. Смеешь возражать, ламер? Напиши тогда то же самое на Си, с gcc-расширениями.

> Ну и зачем ты вообще разговариваешь с таким существом.

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

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

> Ты ничтожен.

Вот скажите, вы оскорбляете людей? Эта пародия на Луговски? Комплексы? или что? Сколько знаю людей науки, ни один не скатывается до подобного.

// :(

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

> В любом языке с вложенными функциями тебе пришлось бы x захватывать явным образом

Какой x? Какую переменную _из приведенного куска кода_ http://www.linux.org.ru/jump-message.jsp?msgid=2831880&cid=2835704 мне бы пришлось "захватывать явным образом"?

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

Тебя тоже могут слушать другие. Хорошо это или плохо, судить не берусь,

> Пусть лучше знают, как правильно.

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

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