Красивий Ерланг-код [закрито]


15

Я намагаюся дізнатися більше про Ерланг, ніж проекти іграшок, з якими я грав. З цією метою я читаю програмування Ерланга та деякі архіви Armstrong з програмного забезпечення .

Я також хотів би прочитати якийсь приклад (бажано виробничого) коду, який демонструє всі речі, які ви можете створити за допомогою Erlang, що було б непропорційно складним для інших мов. Окрім (я припускаю) Яуса , чи є загальнодоступні приклади прекрасного коду Ерланга, який я міг би прочитати, щоб краще зрозуміти мову та / або побачити ідіоматичне використання для різних мовних конструкцій?

Я спеціально не шукаю коду, який "виконує роботу", але використовую сумнівну практику чи приклади "Ось як ви пишете factorialв Ерланг".

Чи може хтось порекомендувати будь-яку хорошу літературу для вивчення цієї мови (окрім згаданого «Програмування Ерланг»)? Для переваги щось, що ви самі використовували, щоб навчитися цьому, але якщо для цього є якісь стандартні книги для спільноти, киньте і їх.


Erlang був створений Еріксоном для проектування та побудови масових паралельних комутаторів для телефонного трафіку. Вона була розроблена Ericsson для підтримки розповсюджених програм, стійких до відмов, програмного забезпечення в режимі реального часу, без зупинки. Це проблема області, в якій вона переважає. Для всіх інших проблемних областей ... Ваш пробіг може відрізнятися.
Роберт Харві

Відповіді:


6

Ще одна хороша посилання - Erlang та OTP в дії .

Про зразки коду: важко знайти найкращі практики для Erlang, але я б радив спробувати ці веб-сайти:

Перегляньте посилання з цієї статті (програмне забезпечення з відкритим кодом, написане на ерланге), і ви можете знайти цікавий код.


-4

Оскільки ви додали тег функціонального програмування, як щодо написання компілятора або інтерпретатора Erlang в Haskell? Ерланг вже не зовсім сучасний, як взагалі. Я рекомендую вивчити Ерланг за один-два дні, як і деякі інші мови (LISP, Prolog), а потім забути про них; вони є лише кроком до вивчення необхідних мов OOP.

Про менші завдання, ніж реалізація компілятора, див. Project Euler .

[EDIT] Щоб відповісти на коментар:

З технічного погляду: Ерланг був добрим у старі часи, коли не було багатоядерних процесорів. Але тепер - пробачив існуючі компілятори / інтерпретатори, які я боюсь - він просто не масштабується так, як слід. Інтерпретатор, написаний на Haskell, змінює масштаб, складений до Haskell, прискорить його, але видалить функцію заміни коду на ходу.

З точки зору програмістів: Haskell не найкращий вибір для всіх застосованих завдань, але atm, ймовірно, більш розвинені мови є дуже експериментальними, і ті, що не застосовуються, зазвичай мають справу з будь-якими вбудованими системами (наприклад, мікроконтролерами та GPU) або numbercrunching, де C і Assembler все ще є найкращим вибором.

Що саме таке, що ви могли б зробити з Ерланг краще, ніж іншими мовами?


4
Я не претендував на те, щоб навчитися цьому, тому що це було найсучасніше; Я просто думаю, що це виглядає цікаво, і можуть бути речі, які ти можеш створити з ним, які не можна легко виконати з іншими мовами. Якщо ваша відповідь "Haskell є кращим вибором для всіх застосовних завдань", як щодо того, щоб сказати мені, чому конкретно (замість того, щоб просто неясно стверджувати це), і відповісти на початкове запитання щодо Haskell замість Erlang?
Інаіматі

1
Я не знаю , що ця відповідь , що погано, хоча це спідниця право навколо первісного питання. Якщо ви хочете побачити якийсь чудовий Хаскелл у тому сенсі, про який говорить команда, подивіться на en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Це його підручник, який викладає haskell, бібліотеку розбору парсера та схему, написавши аналізатор схеми . Я вважаю, що комбінатори парсер - одна з найкрасивіших речей, з якими можна грати на функціональних мовах. Вони теж трохи практичні; як тільки ви вмієте писати парсери, ви можете створити власні мови для вирішення конкретних проблем.
CodexArcanum

1
"Що саме таке, що ви могли б зробити з Ерланг краще, ніж іншими мовами?" Не знаю; тому я намагаюся це навчитися. Мій кишечник говорить мені, що мові, головною конструкцією якої є процес (на відміну від закриття, як у CL, лямбда як у схемі чи словнику, як у python), було б запропонувати щось цікаве. Haskell також функціональний, і він має подібні структури узгодження шаблонів, але не має невпинного фокусу на одночасності. Насправді, головна конструкція в Haskell, здається, є типом, завдяки чому я думаю, що вони дуже різні тварини.
Inaimathi

2
@CodexArcanum - AFAIK, Erlang і OTP доступні під похідною публічної ліцензії Mozilla, і вона є безкоштовною як пиво від репостів Debian. Що ви мали на увазі під "системою, яка є власною"?
Інаіматі

1
@comonad - Те, що я мав на увазі під "Haskell - кращий вибір для всіх застосовних завдань", було "Для кожного завдання, яке я міг би виконати з Erlang, Haskell може це зробити краще". Я не мав на увазі, що ви можете виконувати всі програми програмування однією мовою, або що я хотів використовувати лише одну мову для всіх моїх проектів. Ви ніби запитуєте "Навіщо використовувати Erlang, коли ви можете використовувати Haskell?", Що означає, що ви вважаєте, що Haskell безпосередньо перевершує. Я хотів, щоб ви уточнили та, можливо, підтримали це твердження.
Inaimathi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.