2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Язык Factor
Сообщение17.12.2019, 06:27 
Заслуженный участник


31/12/15
936
А какие есть мнения про язык Factor? Я пятый день от него веселюсь. Это как Форт, но функциональный. Вводим 1, нажимаем Enter, число кладётся в стэк. Вводим 2, нажимаем Enter, теперь в стэке два числа 1 2. Вводим +, нажимаем Enter, в стэке 3. Теперь опять положим в стэк 1 2, но вместо + введём [ + ] и нажмём Enter. Оно кладётся в стэк! В стэке 1 2 [ + ]. Вводим call, нажимаем Enter, функция срабатывает, в стэке 3. Теперь опять положим в стэк 1 2 [ + ], но вместо call введём curry и нажмём Enter. В стэке 1 [ 2 + ]. Вводим call, нажимаем Enter - в стэке 3. Положим в стэк 1 [ 2 + ] [ 3 + ], введём compose, нажмём Enter. В стэке 1 [ 2 + 3 + ]. Вводим call, нажимаем - в стэке 6.

https://andreaferretti.github.io/factor-tutorial/

Язык неожиданно развитый, обёрнуты многие библиотеки C, разработчик (наш человек, Слава Пестов) много лет его разрабатывает для души, в основное время работая в Apple над языком Swift.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 08:37 
Заслуженный участник


16/02/13
4195
Владивосток
Что-то пока принципиальных отличий от Форта не вижу. А они ж, вроде бы, таки есть — слышал, в Факторе стек хранит типы значений.
Вообще, Форт — штука, имхо, замечательная, если вы готовы платить огроменную цену входа... Разработка инструментария, потом всё становится очень здорово.
george66 в сообщении #1430618 писал(а):
обёрнуты многие библиотеки C
А вот это странно. В Форте не нужно никаких обёрток, всё на уровне языка. Если в Факторе это не так — жаль.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 13:49 
Заслуженный участник


27/04/09
28128
george66 в сообщении #1430618 писал(а):
Теперь опять положим в стэк 1 2, но вместо + введём [ + ] и нажмём Enter. Оно кладётся в стэк! В стэке 1 2 [ + ]. Вводим call, нажимаем Enter, функция срабатывает, в стэке 3.
Ну в принципе это не что-то, изобретённое лишь в Factor, это древность, которая появилась вроде даже раньше широко известного в узких кругах эзотерического языка FALSE, но да, многие конкатенативные языки этого не имеют, так что это ему конечно плюс.

С другой стороны я ещё не видел конкатенативного языка с типизацией как у хаскеля (ну хотя бы чистого Haskell 2010), хотя можно на самом хаскеле устроить DSL, который был бы таким языком, и типоклассы можно, и ещё было бы полезно к конкатенативному языку по-моему прикручивать эффекты, например «читает переменную такую-то». Я как-то смотрел на систему типов Factor и мне вроде не понравилось. :?

(Кстати секрет: в конкатенативном языке с достаточно мощной типизацией нет нужды во время выполнения иметь ни одного стека.)

-- Вт дек 17, 2019 15:51:59 --

iifat в сообщении #1430623 писал(а):
В Форте не нужно никаких обёрток, всё на уровне языка. Если в Факторе это не так — жаль.
Не всякий конкатенативный язык должен придерживаться всех максим форта. :-) Иначе это будет вариант форта, которых кстати развелось немало.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 14:28 
Заслуженный участник


16/02/13
4195
Владивосток
arseniiv в сообщении #1430642 писал(а):
Не всякий конкатенативный язык должен придерживаться всех максим форта
Не должен, разумеется, хоть я и не понимаю, при чём тут «максимы форта». Нет у него таких максим.
Просто язык без таких конструкций порождает прорву библиотек-обёрток, что оскорбляет моё эстетическое чувство. Любезный вам хаскель, кстати, такую конструкцию таки имеет.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 16:17 
Заслуженный участник


27/04/09
28128
Не знаю, не вижу ничего плохого в возможности оборачивать библиотеки на C, по-моему это наоборот полезно и позволяет не переписывать на языке кучу вещей, и если говорить например о математике, то быстрых реализаций многих алгоритмов. (Например NumPy использует реализации многих вещей на C.)

iifat в сообщении #1430650 писал(а):
Не должен, разумеется, хоть я и не понимаю, при чём тут «максимы форта». Нет у него таких максим.
Да, я там по-моему додумал не то. А что должно значить «не нужно никаких обёрток, всё на уровне языка», и какие конструкции имеются в виду?

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 16:49 
Заслуженный участник


16/02/13
4195
Владивосток
arseniiv в сообщении #1430664 писал(а):
я там по-моему додумал не то
Я первый начал :wink: При слове форт вспоминаю sp-forth, gforth иже с ними, компилирующие непосредственно в машинный код. Не нужны библиотеки-обёртки, всё пишется на том же форте (да, он отнюдь не единственный язык, обладающий таким свойством) — не надо изучать второй язык либо ждать, когда кому-нить приспичит написать библиотеку-обёртку. Это, имхо, костыли (я, опять же, про обёртки).

 Профиль  
                  
 
 Re: Язык Factor
Сообщение17.12.2019, 18:04 
Заслуженный участник


27/04/09
28128
А, но ведь (1) то, как язык транслируется, (2) то, можно ли на нём взаимодействовать со внешними библиотеками, написанными не на нём (и имеющимся не в виде исходного кода), и (3) то, необходимо ли это делать для получения определённого функционала — три разницы. Даже когда язык компилируется и с хорошими оптимизациями, всё равно может быть смысл воспользоваться библиотекой, ровно по тем же причинам по которым может быть полезно пользоваться библиотекой, даже написанной на том же языке — не велосипедить без повода, поддерживать меньше кода.

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

 Профиль  
                  
 
 Re: Язык Factor
Сообщение18.12.2019, 04:59 
Заслуженный участник


16/02/13
4195
Владивосток
Разумеется. Но мы начинали с фактора, перешли к форту. Те форты, которые компилируются в машинный код, могут всё. От слова «абсолютно». Ну просто в силу того, что можно на ассемблере написать что угодно. За прочие языки не ручаюсь.
И вы, по-моему, упорно доказываете мне пользу библиотек. Я её прекрасно понимаю. Я говорю исключительно про необходимость библиотек-обёрток.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение18.12.2019, 15:41 
Заслуженный участник


27/04/09
28128
Ну про необходимость их для Factor вроде тоже не утверждалось.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 02:41 


05/09/12
2587
Есть такое понятие - паразитик ланг. В хорошем смысле этого слова.

Есть куча языков, компилирующихся в Джава байт-кот. Большинство из них при этом имеют хороший и удобный интероп с Джавой. Вследствие чего имеют возможность нахаляву пользоваться всеми теми тоннами написанных библиотек на Джава, оборачивая их вызовы в свой синтаксис через тот самый интероп - ака библиотеки-обертки. Получаем все прелести Скалы/Кложи/Котлина и прочего вместе со всем Джава-наследием.

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

Я написал 4 реализации своего языка - на Хаскеле, на Джаве, на Питоне и на 1С. В остальных реализациях мне было лениво возиться с интеропом и тем более написанием собственных либ (кроме стандартной), а в джавской реализации я сделал интероп и получил портал в Джаву. В результате чего получил возможность писать на нем от игрушек с гуи до бэкендов вэб-приложений и вообще всего на свете.

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

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 02:58 
Заслуженный участник


31/12/15
936
Да, популярность Питона для меня загадка.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 03:04 


05/09/12
2587
Датасаентологам и прочим аспирантам и школьникам лениво возиться как с монадами, так и с сегментэйшн-фаултами, им надо фигак-фигак, и чтобы работало. Статья на Хабре от одного аспиранта про это https://habr.com/ru/post/349624/

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 03:16 
Заслуженный участник


27/04/09
28128
Ой давайте вот эту тему не будем превращать в поливание питона без развёрнутой аргументации? Я не предлагаю как-то менять свои мнения, пускай остаются как есть, просто не тут же? Кто просил ни с того ни с сего на него кидаться? Никто. Вот и не надо.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 03:24 


05/09/12
2587
Извиняюсь, позволил себе некоторую рефлексию. Всецело поддерживаю ведение темы про Фактор в конструктивном русле и преимущественно про Фактор.

ЗЫ насколько я слышал слухи, в Факторе есть понятие блока [...] и операций с ним, в отличие от классических Фортов. Но ничего конкретнее и аргументированнее сказать не могу - аппликативная и конкатенативная группа Фортов и АПЛей обошла меня стороной.

(Оффтоп)

ЗЗЫ и я не поливал питон, кстати. Наоборот, представил его преимущества для определенной целевой аудитории. Если вам угодно, существующие реализации моего лисп-диалекта тоже тормозная скриптота - в 3 раза медленней Питона, только что сравнил на Фибоначчах.

 Профиль  
                  
 
 Re: Язык Factor
Сообщение20.12.2019, 17:02 
Заслуженный участник


16/02/13
4195
Владивосток
_Ivana в сообщении #1431058 писал(а):
в Факторе есть понятие блока [...] и операций с ним, в отличие от классических Фортов
Ерунду, простите, изволите глаголить. Та часть Фактора, которая представлена в стартовом сообщении, в Форте вполне себе есть — в смысле, реализуется в пару десятков строк.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 31 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group