LINUX.ORG.RU

Ниасилили Erlang? Pony спешит на помощь!

 , ,


1

6

Знакомьтесь, Pony — объектно-ориентированный, акторный, безопасный и высокопроизводительный язык программирования. Компилируемый и хорошо интегрируется с C и C++ библиотеками. Также доступны плагины для редакторов Atom и Sublime, обещaeтся поддержка для vim и Visual Studio.

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

http://ponylang.org

доступны плагины для Atom и Sublime
обещaeтся поддержка для vim

Это говорит о языке даже больше чем его название.

entefeed ☆☆☆ ()

Спасибо. Выглядит очень круто. Erlang'у до таких 'compile-time'-гарантий ой как далеко.

Anatolik ★★ ()

Это не первоапрельская шутка (а то что-то подобное вроде уже пробегало [pun intended])?

X-Pilot ★★★★★ ()
Ответ на: комментарий от ymn

как можно ниасилить эрланг?

Как-то так: «нахрена мне это убожество, в котором даже свои типы толком не создашь?».

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

А там есть команда, которая рисует пони в аски-арте? Если нет, то не нужно.

Пошли пулреквест, и будет.

Oxdeadbeef ★★★ ()

Зачем оно, если есть С? Кроме как для того, что пони.

sT331h0rs3 ★★★★★ ()

Recent benchmarks comparing Pony to Erlang, Scala, CAF, Charm++ and MPI are available here.
Among these, Pony is the only language that concurrently garbage collects actors.

Т.е. Эрленг неспособен конкуррентно собирать память дохлых процессов что-ли?

vladimir-vg ★★ ()

Хм, посмотрел немного туториала, мне пока нравится. Надо дочитать.

Я рад что народ продолжает думать в сторону «как хаскел, но только для людей».

true_admin ★★★★★ ()

Как-то пока не дотягивает. Чего не хватает, по сравнению с Эрлангом.

1) Selective receive. В Pony, если я правильно понимаю, актор принимает один и тот же набор сообщений, вне зависимости от своего текущего состояния. В Erlang предусмотрена явная конструкция receive, позволяющая задать набор сообщений явно.

2) Сигналы. Если процесс (=актор) в Erlang дохнет, слинкованным с ним процессам посылается об этом сигнал. Слинкованный процесс либо тоже дохнет, либо самостоятельно обрабатывает сигнал — например, перезапуская почившего в бозе.

То есть, как замена Erlang это дело не годится. А вот как самостоятельный язык — более-менее. На досуге попробую его на полиморфную рекурсию, если выдержит — будет ему респект.

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

Как-то так: «нахрена мне это убожество, в котором даже свои типы толком не создашь?».


Чем тебе рекорды не угодили? Вроде на них можно хоть чёрта лысого изобразить?

eagleivg ★★★★★ ()

Посмотрел.

The language doesn't even have the concept of null!


Этот язык обречён))

eagleivg ★★★★★ ()

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

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

Если процесс (=актор) в Erlang дохнет, слинкованным с ним процессам посылается об этом сигнал. Слинкованный процесс либо тоже дохнет, либо самостоятельно обрабатывает сигнал — например, перезапуская почившего в бозе.

Над этим работают, инфа с HN.

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

Пора думать в сторону «как люди, но только не стонут при виде Хаскела».

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

рекорды - это сахарок вокруг туплей и element/2. Если расширять их вшырь, а не ввысь, то всё будет типтоп и без перекомпиляции модулей, не?

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

На сколько мне известно - там используется _ в начале имени для переменных, которые не предполагаются для использования извне. Мне кажется, это можно называть private, разве нет?

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

там используется _ в начале имени для переменных, которые не предполагаются для использования извне. Мне кажется, это можно называть private, разве нет?

Это скорее protected, и это только пользовательское соглашение - языку пофиг. Была попытка сделать более похожие на private члены была с __ в начале имен (там язык преобразовывает имена), но это был fail. Зачем поступать так в новом языке?

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

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


Прописывай спеки для фунок

потому что данные нельзя наследовать


Напрямую нет. Можно костыль, типа добавить «родительский» кортеж в свой собственный.

потому что при добавлении/удалении поля (а у тебя эрланг, hot-code upgrade и все такое) нужно перекомпилить все модули рекорд использующие (а если голый кортеж так вобще переписать).


Поясни, вообще не понял, что тут плохого. Точнее, в чём отличие от той же явы.

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


Навскидку да, такого нету.

Ну и вообще, телебейсик же. Многопоточность и отказоустойчивость, а если этого не надо то и эрланг тебе не нужен.

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

языку пофиг

А нельзя ли там сделать по анологии с js, например так


myClass=function(private_names){
 this.sum=function(x){return this.a + x}.bind(private_names)
 this.mul=function(x){return this.a * x}.bind(private_names)
}

ob1=new myClass({a: 1})
ob1.sum(2) // 3 //-- а является приватной
?

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

Русским по белому сказано, в питоньем ООП нет модификатора private. Извне класса можно достать любой его метод и атрибут; эту задачу можно осложнить, но принципиально запретить невозможно.

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

Извне класса можно достать любой его метод и атрибут; эту задачу можно осложнить, но принципиально запретить невозможно.

Дык, как уже выяснили, в c++ тоже самое :).

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

Пони - это хорошо.
Chaser_Andrey ★★★★★ (04.05.2015 11:53:24) неопытные умы заходят и читают этот высер. А еще я бы заказал браслет для подзарядки гаджетов при помощи мастурбации

да уж, очень хорошо

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

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

В таком случае, это не актор

An actor is a computational entity that, in response to a message it receives, can concurrently:

send a finite number of messages to other actors;

create a finite number of new actors;

designate the behavior to be used for the next message it receives.

В 3-м пункте несоответствие, кажется.

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

рекорды - это сахарок вокруг туплей и element/2.

Спасибо, я знаю.

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

Что значишь вширь и ввысь? Если ты добавил в рекорд (читай тьюпл) новое поле, угадай что тебе вернет функция получения старого поля по этому индексу без перекомпиляции?

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

Прописывай спеки для фунок

Спеки во-первых не всегда работают, во-вторых часто игнорируются их ворнинги, в третьих не дают никаких гарантий в рантайме.

Можно костыль, типа добавить «родительский» кортеж в свой собственный.

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

Поясни, вообще не понял, что тут плохого. Точнее, в чём отличие от той же явы.

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

Ну и вообще, телебейсик же. Многопоточность и отказоустойчивость, а если этого не надо то и эрланг тебе не нужен.

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

loz ★★★★★ ()

объектно-ориентированный
высокопроизводительный язык программирования

Отлично. А когда на нем появится возможность писать распределенные отказоустойчивые приложения? Где «горячая» замена кода? Erlang - это какбэ не только акторы. Бенчмарк ниочем - молодцы что сообщения умеют складывать быстрее в почтовые ящики и быстро создавать акторы, теперь осталось что-нибудь полезное затестить.

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

А где я написал, что это плохо? О «плохости» нужно спрашивать адептов тех ООП ЯП, где есть private. Я профанацией не хочу заниматься.

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

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

А почему ты считаешь, что это замена Эрлангу? Акторные языки старше, чем Эрланг.

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

А почему ты считаешь, что это замена Эрлангу? Акторные языки старше, чем Эрланг.

Ниасилили Erlang? Pony спешит на помощь!

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

private и прочее огораживание доступа к переменным — ненужно! Жабомакаки должны сдохнуть вместе со своей говнопарадигмой.

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