Top.Mail.Ru
? ?
caml_programmer, записи по тегу fp — Живой Журнал [entries|archive|friends|userinfo]
Image
caml_programmer

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

OCaml 5 [мар. 5, 2023|07:02 am]
caml_programmer
[Tags|]

Что-то как-то прозевал новость, но ничего, лучше поздно, чем никогда:

https://tarides.com/blog/2022-12-19-ocaml-5-with-multicore-support-is-here
https://discuss.ocaml.org/t/ocaml-5-0-0-is-out/10974

https://v2.ocaml.org/releases/5.0/manual/parallelism.html
https://v2.ocaml.org/releases/5.0/manual/effects.html

https://arxiv.org/abs/2004.11663

Можно теперь попробовать обновиться, посмотреть, на сколько обратная совместимость
сохранилась.
СсылкаОставить комментарий

Carp [сент. 28, 2020|02:30 am]
caml_programmer
[Tags|]

Обнаружил реализацию ещё одного ЯП:

https://github.com/carp-lang/Carp

Похож на Clojure, но со статической типизацией из коробки.

Несколько отличается от Typed Racket. В Typed Racket даже
какой-то минимальный вывод типов встречается, пока не
понял есть ли такое в этом Carp-е.
СсылкаОставить комментарий

Rust [ноя. 21, 2019|09:16 pm]
caml_programmer
[Tags|, ]

Нафигарил макрос для Rust, чтобы поменьше писать.
macro_rules! p { ( $( $x:expr ),* ) => { println!($($x,)*); }; }
Ссылка2 комментария|Оставить комментарий

Haskell, Erlang update [сент. 1, 2016|12:37 am]
caml_programmer
[Tags|]

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

А вот компиляция Erlang очень существенно повлияла на его
производительность, почти в 3 раза. Судя по strace, он
какое-то время инициализируется, а потом довольно шустро
работает, не исключаю, что в случае сервиса - догонит
haskell и rust.

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

Image

О, день знаний, всех короче с праздником!
Ссылка11 комментариев|Оставить комментарий

Erlang update [авг. 30, 2016|10:20 pm]
caml_programmer
[Tags|]

Erlang вариант переписали, стало гораздо лучше - 6.415 секунд.

Image

https://github.com/DMSOFTWARE/cats/pull/2
Ссылка4 комментария|Оставить комментарий

Haskell update [авг. 29, 2016|10:06 pm]
caml_programmer
[Tags|]

Отлично, размер буфера haskell-варианту зачинили.
теперь он с результатом 2.019 вплотную догнал rust и python,
но до тройки go, c++, c - немного не дотянул.

Image

https://github.com/DMSOFTWARE/cats/pull/1
Ссылка5 комментариев|Оставить комментарий

Заколхозил тест ввода/вывода для всех языков программирования [авг. 27, 2016|03:42 am]
caml_programmer
[Tags|]

Вот такая ситуация пока получается.

Image

https://github.com/dmsoftware/cats

Haskell и SBCL рисовать не стал, они оба где-то 2m50s отрабатывают,
и масштаб графика сильно портят. Ну Haskell там монады из себя
высасывает, а SBCL-то что капризничает?

Erlang - надо доработать, чтобы тест корректно завершался,
а то кажись там halt не срабатывает, что-то с этим надо
сделать. Но он тоже довольно задумчивый, наверное сопоставим
с Haskell и SBCL.

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

До APL-подобных языков я почти добрался, не знаю, есть ли
там ввод/вывод, но посмотрим.
Ссылка5 комментариев|Оставить комментарий

Чистые функции против сайдэффектов. [авг. 11, 2016|12:53 am]
caml_programmer
[Tags|]

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

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

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

Возникает вопрос, что для материальной реальности более естественно -
переаллокация или присваивание?

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

В общем, неоднозначно можно сказать что ничерта не понятно
как всё устроено.
Ссылка3 комментария|Оставить комментарий

Программерское [фев. 9, 2016|02:33 am]
caml_programmer
[Tags|, ]

Около 12 лет мне потребовалось, чтобы окончательно упарить OCaml-ом всех на работе.
Ибо курс там взяли на jvm-язычки (clojure,scala,java), у которых туго с отдачей памяти обратно в
систему - для ситуации когда много серверов - на одно jvm-приложение - это не критично, но
в нашем случае могло быть и 20-30 jvm на одном серваке - налицо архитектурная неаккуратность.

У ЯП OCaml есть всего две проблемы, влияющие на производительность - наличие однопоточного
сборщика мусора и отсутвтие unboxed-типов данных. Но зато при рантайме в 5Mb - весьма приятный
fork - с которым проблем не возникает, если использовать в паре с асинхронным вводом/выводом.
Что там с параллельным сборщиком мусора - я так и не понял - то ли пока не сделали, то ли
сходу не получилось из-за последующих проблем с производительностью (при его включении).
В общем за более чем 12 лет я не нашел ни одной проблемы в компиляторе OCaml-а (хотя поискать
порой хотелось). Самое пожалуй неочевидное для новичка - это применение мутабельных строк и
массиовов по-умолчанию (можно организовать побочный эффект).

Последний год активно исследовал вопрос производительности приложений, написанных на различных
ЯП и пришел к очевидному выводу - что пора "тряхнуть стариной", это как со старыми ружьями - которые
из-за меньшего максимального давления в канале ствола - выглядят заметно легче и элегатнее
современных образцов. То бишь думаю повнимательнее посмотреть на программирование на голом C,
на крайняк C++ - речь тут конечно о задачах (где важна скорость и минимальное потребление
ресурсов оперативной памяти), а для обеспечения надеждности - есть достаточный запас ресурсов.
В общем принцип - чем ближе к железу - тем меньше ограничений. Соотвественно для меня
нормальным подходом всегда было и будет - достаточно низкоуровневое производительное ядро,
которое уже скриптуется поверх динамическими встроенными языками - либо ядро оформляется
как либа и используется в приложении на более высокоуровневом ЯП.

Сейчас, в течении какого-то времени буду отдыхать и смотреть вакансии по двум
направлениям - либо управление шайкой диких программеров, либо какая-нибудь новенькая
(хорошо забытая) для меня специализация (например С/C++). В общем, можно и ещё что-нибудь
рассмотреть, если дело стоящее так сказать. Про Haskell, Erlang я и не мечтаю - но если
вдруг, то почему бы и нет. Erlang - поприятнее java-технологий мне показался.
А Haskell - у меня ещё впереди (может когда-нибудь дорасту).
Ссылка12 комментариев|Оставить комментарий

Книги, программирование [ноя. 26, 2015|10:08 pm]
caml_programmer
[Tags|]

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

Пока навыбирал две вот эти книжки:

  Предметно-ориентированные языки программирования (Signature Series)
    http://www.williamspublishing.com/Books/978-5-8459-1738-6.html

  NoSQL: новая методология разработки нереляционных баз данных
    http://www.williamspublishing.com/Books/978-5-8459-1829-1.html

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

Ещё присматриваюсь к:

  Model Checking:
    http://www.ozon.ru/context/detail/id/2182741/
    http://www.ozon.ru/context/detail/id/4797670/

  Методы оптимизации:
    http://www.ozon.ru/context/detail/id/7106050/
Ссылка2 комментария|Оставить комментарий

navigation
[ viewing | most recent entries ]
[ go | earlier ]

Image