Какие интересные проекты можно решить на Erlang в учебных целях?

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

Какие-либо предложения?

Обновлено: проект предпочтительно должен подчеркивать сильные стороны Erlang (параллелизм, распределенный).

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
26
0
6 983
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Это не совсем ответ на ваш вопрос, но если вы ищете интересный бесплатный проект с открытым исходным кодом, написанный на Erlang, вам обязательно стоит попробовать CouchDB. С веб-сайта:

Apache CouchDB is a distributed, fault-tolerant and schema-free document-oriented database accessible via a RESTful HTTP/JSON API. Among other features, it provides robust, incremental replication with bi-directional conflict detection and resolution, and is queryable and indexable using a table-oriented view engine with JavaScript acting as the default view definition language.

CouchDB is written in Erlang, but can be easily accessed from any environment that provides means to make HTTP requests. There are a multitude of third-party client libraries that make this even easier for a variety of programming languages and environments.

В CouchDB сайт есть более подробная информация. Удачного кодирования!

Проект Эйлер, точно.

Хорошие идеи. Я наткнулся на это некоторое время назад и хотел решить некоторые из этих проблем, но позже забыл об этом. Итак, спасибо, что напомнили мне :)

Stefan Schmidt 20.12.2008 19:04

Конечно, это хорошие задачи, но вы можете решить их на любом языке, и большинство из них подойдет лучше, чем Erlang. Что касается Erlang, то вам нужны проблемы, которые требуют / используют распределенное решение, потому что в этом заключается сила Erlang. AFAIK, Project Euler [не обязательно] это так.

Ellery Newcomer 20.12.2008 21:28

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

Stefan Schmidt 21.12.2008 00:08

Что ж, реализация распределенной версии Eratosthenes Sieve должна быть интересной.

JesperE 04.01.2009 09:54

@JasperE: Опишите, как правильно распространять Сито Эратосфена?

Hynek -Pichi- Vychodil 04.01.2009 14:00

Некоторые вещи из моего обширного списка ToDo, которые были бы хорошими учебными упражнениями и полезными для сообщества erlang в целом:

  • Профилируйте все доступные хранилища ключей / значений:

    • Напишите библиотеку для тестирования времени вставки, поиска, удаления и поиска для различных магазинов K / V
    • Создайте набор тестов, который люди могут запустить
    • Сделайте так, чтобы он работал с ets, dets, proplists, gb_trees, dict, orddict, redblack tree, bdb, tokyocabinet, ...
    • Создавайте красивые графики
    • Упростите обновление, внесение вклада и запуск на любом компьютере
  • напишите новую подпрограмму io_lib: format, которая использует именованные параметры:

    • io_lib: nformat ("Привет, ~ {name} s ~ n.", [{name, "Bob"}]).
    • Это полезно для интернационализации, если положение параметров изменяется при изменении языка строки формата.
  • Расширить erl -make (make.erl)

    • Разрешить добавление путей кода (так что вам не нужно делать erl -pa LibraryPath -make)
    • Компиляция / загрузка модулей поведения перед модулями, реализующими это поведение
    • Правильно обрабатывать иерархические модули (в частности, путь вывода)
Ответ принят как подходящий

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

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

Я ищу именно такой проект. Что-то, что подчеркивает силу Erlang (параллелизм, распределенный).

Stefan Schmidt 21.12.2008 00:10

«Programming Erlang» Джо Армстронга включает примеры того, как программировать такие серверы. Настоятельно рекомендуется.

Bernard Notarianni 02.06.2012 23:05

Система индексации / поиска файлов. Это было интро-проектом, но я переключился на что-то другое.

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

найдите то, чего нет в Erlang, что вам нравится. Я сделал это с помощью etap https://github.com/ngerakines/etap/. Теперь ник взял на себя управление, и он используется внутри игр EA. Создавать это было весело, и, как и предыдущий плакат, это было что-то реальное, поэтому, работая над этим, я научился решать проблемы реального мира.

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

  2. Создайте распределенную файловую систему. Внедрите распределенные деревья B * или B + Trees в качестве основы этой файловой системы. Сделайте это на erlang.

  3. Создайте распределенное хранилище значений ключей поверх распределенной файловой системы, созданной на шаге 2.

  4. Создайте распределенный веб-индекс (для использования распределенной поисковой системой) поверх хранилища значений ключа.

  5. Создайте распределенный компоновщик. Расширенная автоматизация сборки предлагает удаленную обработку агента для распределенные сборки и / или распределенную обработку.

  6. Создайте серверную часть MMORPG, которая полагается на распределенное хранилище состояния игры / игрока и распределенную обработку запросов пользователей.

Другие вопросы по теме