Окрім того, що Erlang був спеціально розроблений для запуску в паралельних / паралельних / розподілених ситуаціях, дві основні методи, які він використовує, роблячи це можливим, це:
Ніяких побічних ефектів:
Це означає, що коли ви даєте функції функцію, яку слід виконати проти, вона не буде за винятком випадків, коли в дуже суворих випадках впливатиме на що-небудь інше в системі / запущеному процесі. Це означає, що якщо функцію виконувати 300 разів одночасно одночасно, жодне з цих 300 виконання функції не вплине на жодне з інших.
Техніка реалізації для забезпечення відсутності побічних ефектів називається "незмінністю", що, грубо означає, не може бути мутованою (зміненою). Це означає, що як тільки ви створюєте змінну, значення цієї змінної може не змінюватися. Erlang реалізує цю поведінку з "єдиним призначенням", тому після того, як ви присвоїте значення змінній, ви можете не призначити їй значення знову.
X = 1.
X = 2. // This is not a valid operation
Це гарантує, що жоден код не може випадково змінити значення X, спричиняючи перегоновий стан, тому воно, по суті, є безпечним для потоків і одночасне використання стає тривіальним. Це дуже незвична поведінка серед мов програмного забезпечення, і найбільший спосіб, коли Erlang встигає так добре підходити для одночасного виконання.
Акторська модель:
Це особливий спосіб моделювання, який показав, що робить розробку та управління одночасною обробкою дуже простою. Прямо з wikipedia (http://en.wikipedia.org/wiki/Actor_model):
Модель Актора приймає філософію, що все - це актор. Це схоже на все, що є об'єктовою філософією, яка використовується деякими об'єктно-орієнтованими мовами програмування, але відрізняється тим, що об'єктно-орієнтоване програмне забезпечення, як правило, виконується послідовно, тоді як модель Actor за своєю суттю є одночасною. Актор - це обчислювальна сутність, яка у відповідь на отримане повідомлення може одночасно: надсилати кінцеву кількість повідомлень іншим суб'єктам; створити скінчену кількість нових акторів; позначити поведінку, яку слід використовувати для наступного повідомлення, яке воно отримує. Немає передбачуваної послідовності вищезазначених дій, і їх можна було б проводити паралельно. Від'єднання відправника від надісланих комунікацій було принциповим просуванням моделі Актора, що дало можливість асинхронним структурам зв'язку та управління як моделей передачі повідомлень.