LINUX.ORG.RU

Встречайте новый язык программирования — Sifflet 1.0

 , , ,


0

1

Первая версия визуального функционального языка программирования Sifflet отныне доступна на hackage.

Назначение этого языка — помочь студентам познать рекурсию.

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

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

Данная возможность позиционируется авторами как вспомогательная и в познавательных целях.

Почитать про новый язык можно на странице проекта

Учебник.

>>> Анонс выпуска

★★★★★

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

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

>Ждём веб-фреймворка.

Вы вот смеетесь а применение веб-фреймворка вебом не ограничивается. Те же семантические сети очень мощная штука

DNA_Seq ★★☆☆☆ ()

Назначение этого языка — помочь студентам познать рекурсию.

СТУДЕНТОВ?! младшая школота просочилась в студенты? что? уже?

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

в руском языке есть большая разница между этими понятиями))))

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

>>в руском языке

извините))) конечно русском))) разволновался)))

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

>> в колледжах и технарях тоже студенты

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

в 12-13-14 лет мы вполне себе неплохо ковыряли BASIC на своих ZX-Spectrum и изучали основы его ассемблера, не говоря о внутреннем устройстве.

а тут «такое» предлагается для изучения «студентам» - возраста не менее 18-и - 20-и лет? их за неучей принимают? я как-то плохо понимаю что происходим... :(

Denjs ()

помочь студентам познать рекурсию...

трансцендентного.

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

или я совсем не понимаю куда катится мир...

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

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

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

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

/s/классической логики/классической дедуктивной логики/

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

Ну этак можно и Машину Тьюринга восхвалять :) Или (лучше) какой-нибудь хороший ассемблер - тут даже будет некое осознание основательности (чего нет в бэсик, а тут - ассе-е-емблер, мол...)

определение функции через саму себя это ересь с точки зрения классической логики.

А что за классическая логика? Я думал что это определение (в том числе) и позволило построить классическую формальную логику в 30-ые годы.

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

>СТУДЕНТОВ?! младшая школота просочилась в студенты? что? уже?

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

AVL2 ★★★★★ ()

А софта для проектирования как небыло, так и нет!!! Нахрена плодить языки.....

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

>Но Hakell имеэ циклы!1

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

AVL2 ★★★★★ ()

Ну дык там на скриншотах продажи и прочие радости бухгалтерского учета. Идейка то классная - но видимо целевая аудитория языка - деньгосчитальцы.

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

Почему-то по той ссылке не используется

foreach = forM_
-- forM_ = flip mapM_

но не суть.

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

синтаксический сахарок

Монады это «сахарок»? И ещё - мне говорили что генерация в JHC не завязана на рекурсию, а использует трансляцию в императивные конструкции (если я правильно понял) - там что? циклы как сахар для циклов?

quasimoto ★★★★ ()

Я уже выражался по этому поводу, но скажу ещё раз - противопоставление циклы vs. рекурсия, это, по большому счёту пережиток прошлого (наивного подхода к ФП). Тем более ставить рекурсивные определения выше императивных (в т.ч. циклических) - тоже глупость. Они друг друга стоят (рекурсивные и циклические определения).

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

>Ну этак можно и Машину Тьюринга восхвалять :) Или (лучше) какой-нибудь хороший ассемблер - тут даже будет некое осознание основательности

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

А что за классическая логика?


Как и все классическое - то что придумано греками. Формальная логика завязана на математику, а просто «логика» - гуманитарная дисциплина

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

Создателей языка Java предварительно поварить в кипящей воде с солью и приправами.

Ви таки хотите сказать что умеете готовить?

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

>Монады это «сахарок»?

Как связаны монады и циклы?

сахарок, это do, map* etc.

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

И ещё - мне говорили что генерация в JHC не завязана на рекурсию

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

Во вторых, в любом случае машинный код в процессоре, это линейное исполнение операторов, переменные, переходы и прочие сущности. которых нет ни в одном функциональном ЯП.

И, наконец, что значит «не завязана на рекурсию», если в языке все построено на рекурсии и ничего другого в принципе нет?

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

не трогайте жабу, это самый востебованный язык, который может многое.

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

>Они друг друга стоят (рекурсивные и циклические определения).

ну тогда и нечего противопоставлять дос и линукс. Они друг-друга стоят. И пофиг, что в досе нет защиты программ друг от друга. Резиденты есть, стало быть, и многозадачность есть.

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

Как связаны монады и циклы?

На просьбу «показать» циклы я привёл forM/forM_ (второй это готовый foreach) из Control Monad - связаны ведь напрямую.

Про все остальные замечания, и про:

Они друг друга стоят (рекурсивные и циклические определения).

ну тогда и нечего противопоставлять дос и линукс. Они друг-друга стоят. И пофиг, что в досе нет защиты программ друг от друга. Резиденты есть, стало быть, и многозадачность есть.

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

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

С помощью условий и переходов можно организовать __циклы__, но от этого условия и переходы не превращаются в новую сущность :)

всё таки циклы ;)

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

>всё таки циклы ;)

Циклы можно организовать на любой машине Тьюринга.

Речь шла о поддержке циклов на уровне синтаксиса языка.

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

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

Да сколько можно языки плодить. Не смешно же уже.

Ничего, потом кто-нибудь сделают язык который пожрёт все прочие и будет один мульти-язык :)

quasimoto ★★★★ ()

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

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

>Ничего, потом кто-нибудь сделают язык который пожрёт все прочие и будет один мульти-язык :)

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

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

>На просьбу «показать» циклы я привёл forM/forM_ (второй это готовый foreach) из Control Monad - связаны ведь напрямую.

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

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

>Самый хороший язык это человеческий язык приказов

Казнить нельзя помиловать!

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

>Ээээ....

Тьфу, да, конечно, FOR. Но WHILE/UNTIL в классическом Бейсике не было :)

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

>Чтобы понять рекурсию нужно понять рекурсию©

Условие выхода должно быть иначе получится бесконечный цикл и переполнение стека

Условие выхода: смерть студента, пытающегося понять рекурсию. :)

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

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

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

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

Более менее согласен (но только если привязаться к тому как сделано в GHC), только вот мне кажется неправильно называть полноправные функции «сахаром» (тогда что не сахар?):

for M = flip mapM

mapM f is equivalent to sequence . map f

sequence выражается через foldr

map выражается через foldr

foldr это катаморфизм.

А теперь вопрос - кто нас заставляет выражать foldr рекурсивно? Почему мы не можем определить этот foldr как последовательность инструкций для State Machine (Тьюринг-Полной)?

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

>А по-моему рекурсия сложная штука для понимания

с мозгом проблемы, да? бедняжка....

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

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

80% студентов IT специальностей — идиоты. оставшиеся 20 делятся на: 10% — умные но ленивые, 7% — зубрилы и нифига не понимающие по сабжу, 3% — реально понимают и умеют и могут некоторых преподавателей еще научить.

вот такая вот обстановка.

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

>Я как раз о тех самых временах :)

Или у меня жуткий провал в памяти, или, всё же, не было :)

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

>>А по-моему рекурсия сложная штука для понимания

>Разве что для имбецилов :)

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

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

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

На индукцию и я мог плавать. Но я говорю именно про рекурсию :)

KRoN73 ★★★★★ ()

> Назначение этого языка — помочь студентам познать рекурсию.

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

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

> На индукцию и я мог плавать. Но я говорю именно про рекурсию :)

when programming recursively, think inductively (C) someone

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

>Опыт студенческих лет показал мне, что чтобы познать рекурсию, нужно очистить своё сознание

Походу, у меня [почти] все знакомые в группе были изначально с девственно чистым сознанием :D

...

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

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