2014 dxdy logo

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

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




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


31/12/15
961
А какие есть мнения про язык 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
4214
Владивосток
Что-то пока принципиальных отличий от Форта не вижу. А они ж, вроде бы, таки есть — слышал, в Факторе стек хранит типы значений.
Вообще, Форт — штука, имхо, замечательная, если вы готовы платить огроменную цену входа... Разработка инструментария, потом всё становится очень здорово.
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
4214
Владивосток
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
4214
Владивосток
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
4214
Владивосток
Разумеется. Но мы начинали с фактора, перешли к форту. Те форты, которые компилируются в машинный код, могут всё. От слова «абсолютно». Ну просто в силу того, что можно на ассемблере написать что угодно. За прочие языки не ручаюсь.
И вы, по-моему, упорно доказываете мне пользу библиотек. Я её прекрасно понимаю. Я говорю исключительно про необходимость библиотек-обёрток.

 Профиль  
                  
 
 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
961
Да, популярность Питона для меня загадка.

 Профиль  
                  
 
 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
4214
Владивосток
_Ivana в сообщении #1431058 писал(а):
в Факторе есть понятие блока [...] и операций с ним, в отличие от классических Фортов
Ерунду, простите, изволите глаголить. Та часть Фактора, которая представлена в стартовом сообщении, в Форте вполне себе есть — в смысле, реализуется в пару десятков строк.

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

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



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

Сейчас этот форум просматривают: Dmitriy40


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

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