Erlang

1. Procjena okvira prema prostoru problema: Kompatibilni alat
1.1. Visoko pouzdan finansijski vodič (H-AFL)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang/OTP (s mnesia i gen_server) | Formalno modeliranje stanja kroz gen_server, nepromjenjivi dnevnik transakcija i ACID garancije u Mnesiji (s disk kopijama) omogućuju dokazivu konzistentnost. Nadogradnja memorije je gotovo nula zbog izolacije procesa i dijeljenja po principu kopiranja pri pristupu. |
| 2 | Elixir + Ecto (s :postgrex) | Ecto-ove upite bez sheme i transakcijske cjevovode smanjuju površinu logike. Pozadinska baza PostgreSQL pruža formalnu trajnost; Elixir-ovi makrovi smanjuju šablon kod, ali dodaju malu nadogradnju izvršenja (~5--8% u odnosu na čisti Erlang). |
| 3 | CouchDB (Erlang-based) | Ugrađeni MVCC i replikacija su matematički zasnovani, ali dokument-orientirani model unosi nestabilne semantike spajanja pod konfliktima --- krši Manifest 1. Upotreba memorije je veća zbog nadogradnje B-stabla indeksiranja. |
1.2. Stvarno vrijeme oblak API gateway (R-CAG)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Cowboy | Lagan, neblokirajući HTTP poslužitelj napisan u čistom Erlangu. Obrada zahtjeva/odgovora bez kopiranja preko iolista. Model proces-po-vezi osigurava izolaciju grešaka i determinističku kašnjenja (<1ms p99). |
| 2 | Plug (Elixir) | Komponibilna stack middleware s minimalnim troškovima izvršenja. Dobra skalabilnost, ali unosi nadogradnju Elixir makro ekspanzije (~12% CPU u odnosu na Cowboy). Sigurnost tipova putem anotacija poboljšava ispravnost, ali ne pruža formalni dokaz. |
| 3 | Phoenix | Izvrsno iskustvo za razvojnike, ali WebSocket i apstrakcije kanala dodaju 20--30% nadogradnje memorije. Nije prikladan za ultra-niske kašnjenja gatewaye zbog GenServer sloja rutiranja. |
1.3. Osnovni stroj za zaključivanje mašinskog učenja (C-MIE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + NIFs (s OpenBLAS/TensorFlow C API) | Direktne FFI veze s optimiziranim C bibliotekama omogućuju gotovo rodne operacije tenzora. Memorija se upravlja preko Erlang procesnog hrama, izbjegavajući pauze GC-a tijekom zaključivanja. Formalna ispravnost preko statičkih NIF ugovora. |
| 2 | Elixir + Torchx (eksperimentalno) | Visoko nivo veze smanjuje broj linija koda, ali unosi JIT nadogradnju i dinamičko pozivanje. Nije prikladan za stvarno vrijeme zaključivanje zbog zagrijavanja VM i GC oscilacija. |
| 3 | DeepLearning.Erlang (nepodržano) | Zastarjelo, nema podršku za GPU. Formalne garancije su prekinute zbog zastarjelih ovisnosti. Izbjegavajte. |
1.4. Decentralizirani identitet i upravljanje pristupom (D-IAM)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + libp2p (putem NIF) + JWT | Lagan kriptografski primitiv putem OpenSSL NIF-ova. Stateless validacija tokena s nepromjenjivim tvrdnjama. Model proces-po-sesiji osigurava izolaciju i nulto dijeljeno stanje. |
| 2 | DIDKit (Rust) + Erlang NIF omotač | Jak kriptografski garancije, ali kompleksnost NIF-ova povećava rizik od kršenja. Memorija je prihvatljiva ako su NIF-ovi pažljivo ograničeni. |
| 3 | Elixir + ueberauth | Visoke apstrakcije povećavaju broj linija koda i unose mutabilne memorijske pohrane sesije. Krši Manifest 4. |
1.5. Univerzalni IoT agregator i normalizacijski centar (U-DNAH)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + MQTT (emqx) | EMQX je izgrađen na OTP, skalira do milijuna istovremenih veza. Obrada poruka bez kopiranja preko iolista. Stanje uređaja upravlja se laganim procesima (1KB/proces). |
| 2 | Lager + Erlang | Dnevnik i metrike su niskog troška. Obrazac podudaranja na binarnim sadržajima omogućuje učinkovitu normalizaciju bez nadogradnje parsiranja. |
| 3 | Node-RED (putem Erlang mosta) | Vizualno programiranje povećava broj linija koda i kompleksnost izvršenja. Nije usklađeno s Manifestom 4. |
1.6. Automatizirana platforma za odgovor na sigurnosne incidente (A-SIRP)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + gen_event + syslog NIF-ovi | Arhitektura zasnovana na događajima s izoliranim obradivačima. Formalne stablo nadzora procesa osiguravaju oporavak od zlonamjernih ili neispravnih događaja. Upotreba memorije: <2MB po obradivaču. |
| 2 | Elixir + Phoenix.PubSub | Dobra za distribuirane upozorenja, ali unosi nepotrebni web sloj. GC oscilacije rizikuju kašnjenje u kritičnim putovima odgovora. |
| 3 | OpenStack (Python) | Nije Erlang. Ispušteno. |
1.7. Sustav za tokenizaciju i prijenos sredstava između lanaca (C-TATS)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + libsecp256k1 NIF-ovi + gen_statem | Formalni automat stanja za višelančne prijelaze. Determinističko redoslijed transakcija putem sekvenciranja pošte procesa. Memorija: 8KB po stanju kanala. |
| 2 | Elixir + ExUnit (za testiranje) | Testiranje je jak, ali nadogradnja izvršenja čini ga neprimjerenim za visokofrekventno usklađivanje. |
| 3 | Solidity (EVM) | Nije Erlang. Ispušteno. |
1.8. Visokodimenzionalni vizualizacijski i interaktivni stroj (H-DVIE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + WebGL (putem WebSocket) | Agregacija i kompresija podataka na poslužitelju preko binarnog obrazca. Klijent renderira; poslužitelj je bez stanja, <10MB RAM po 10k korisnika. |
| 2 | Phoenix.LiveView | Stvarno vrijeme interaktivnost, ali teški JS klijenta i sinhronizacija stanja. Krši Manifest 3 (povećanje memorije). |
| 3 | D3.js + Node.js | Nije Erlang. Ispušteno. |
1.9. Hipersonalizirana platforma za preporuke sadržaja (H-CRF)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + ETS/DETS + gen_server | Profili korisnika u memoriji pohranjeni u ETS (bez GC). Brzi pretrage (<10μs) s determinističkim pristupom. Nema vanjskih ovisnosti. |
| 2 | Elixir + DynamoDB (putem HTTP) | Skokovi kašnjenja zbog mrežnih poziva. Nije usklađen s Manifestom 3. |
| 3 | TensorFlow Serving | Nije Erlang. Ispušteno. |
1.10. Distribuirana platforma za stvarno vrijeme simulaciju i digitalne blizance (D-RSDTP)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + gen_fsm/gen_statem | Svako digitalno blizance je proces. Prijelazi stanja su matematički čiste funkcije. Memorija: 1--2KB po blizancu. Skalira do milijuna. |
| 2 | Unity + Erlang most | Teški binarni resursi, GC pauze u Unity. Krši Manifest 3. |
| 3 | Python + SimPy | Nije Erlang. Ispušteno. |
1.11. Stroj za obradu kompleksnih događaja i algoritamsko trgovinu (C-APTE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + gen_event + timer:apply_after | Tokovi događaja obrađuju se u koracima s determinističkim vremenom. Nema dijeljenog mutabilnog stanja. Kašnjenje: <50μs po događaju. |
| 2 | Apache Flink (Java) | Nije Erlang. Ispušteno. |
| 3 | Kafka Streams | JVM nadogradnja, GC pauze ne prihvatljive za HFT. |
1.12. Velikomjerna semantična pohrana dokumenata i znanstvenih grafova (L-SDKG)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + RDFlib (NIF) + Mnesia | RDF trojke pohranjene kao tuple. Rezolucija upita preko obrazca podudaranja. Nije potrebna vanjska baza. Memorija: 40 bajtova po trojci. |
| 2 | Neo4j (Java) | Nije Erlang. Ispušteno. |
| 3 | GraphQL + Node.js | Visoka nadogradnja serijalizacije, krši Manifest 3. |
1.13. Serverless orkestracija funkcija i stroj za radne tokove (S-FOWE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + rebar3 + gen_statem | Stanja radnih tokova modelirana kao konačni automati. Nije potreban vanjski orkestrator. Proces-po-koraku osigurava izolaciju. Veličina binarne datoteke: 3MB. |
| 2 | AWS Step Functions | Nije Erlang. Ispušteno. |
| 3 | Apache Airflow (Python) | Nije Erlang. Ispušteno. |
1.14. Genomska cjevovodna i sustav za pozivanje varijanti (G-DPCV)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + NIFs (s htslib) | Direktni pristup bioinformatičkim C bibliotekama. Binarno parsiranje putem bit sintakse (npr. <<>>). Memorija: 150MB po fazi cjevovoda. |
| 2 | Snakemake (Python) | Nije Erlang. Ispušteno. |
| 3 | Nextflow | Nije Erlang. Ispušteno. |
1.15. Stvarno vrijeme više korisničkih suradnički uređivači pozadinski (R-MUCB)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + CRDTs (putem libcrdt) | Operativne transformacije kodirane kao čiste funkcije. Rješavanje konflikata matematički dokazano. Proces-po-dokumentu osigurava izolaciju. |
| 2 | Yjs (JavaScript) | Nije Erlang. Ispušteno. |
| 3 | Ot + Node.js | Dijeljeno mutabilno stanje krši Manifest 1. |
1.16. Obradivač protokola zahtjeva-odgovora s niskim kašnjenjem (L-LRPH)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + gen_server + iolists | Direktno parsiranje binarnog protokola. Nema alociranja hrama tijekom puta zahtjeva. Kašnjenje: 2--5μs po zahtjevu. |
| 2 | Netty (Java) | Nije Erlang. Ispušteno. |
| 3 | gRPC (C++) | Nije Erlang. Ispušteno. |
1.17. Konzument visokopropusne poruke (H-Tmqc)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | RabbitMQ (Erlang) | Izgrađen na OTP. 500k poruka/sec po čvoru. Proces-po-konzumentu osigurava backpressure i izolaciju grešaka. Memorija: 1KB/poruka. |
| 2 | Kafka (Scala) | Nije Erlang. Ispušteno. |
| 3 | Redis Streams | Nije Erlang. Ispušteno. |
1.18. Implementacija distribuiranog konsenznog algoritma (D-CAI)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + Raft (čisti Erlang) | Stanje automata kodirano kao čiste funkcije. Razmjena poruka je jedina primitivna komunikacija --- nema dijeljenje memorije. Dokaziva sigurnost. |
| 2 | etcd (Go) | Nije Erlang. Ispušteno. |
| 3 | ZooKeeper (Java) | Nije Erlang. Ispušteno. |
1.19. Upravljač koherencije predmemorije i memorijskog spremišta (C-CMPM)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + ETS (s set, ordered_set) | ETS tablice su upravljane jezgrom. Nema GC. Bez blokada pristup preko pošte procesa. Memorijski spremište: 100% predvidljivo. |
| 2 | jemalloc (C) | Nije Erlang. Ispušteno. |
| 3 | tcmalloc (C++) | Nije Erlang. Ispušteno. |
1.20. Knjižnica za neblokirajuće konkurentne strukture podataka (L-FCDS)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + ETS/Dets | Nisu potrebne blokade. Izolacija procesa zamjenjuje konkurentne primitivne funkcije. Atomski ažuriranja preko ets:update_counter. |
| 2 | libcds (C++) | Nije Erlang. Ispušteno. |
| 3 | Boost.Lockfree (C++) | Nije Erlang. Ispušteno. |
1.21. Stvarno vrijeme agregator prozora za obradu streamova (R-TSPWA)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + gen_server + timer:send_after | Stanje prozora pohranjeno u ETS. Agregacije preko obrazca podudaranja. Nema vanjskih ovisnosti. CPU: 0,2 jezgre po 10k događaja/sec. |
| 2 | Apache Flink | Nije Erlang. Ispušteno. |
| 3 | Spark Streaming | Nije Erlang. Ispušteno. |
1.22. Pohrana sesije s TTL istekom (S-SSTTE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + ETS s timer:apply_after | TTL se primjenjuje putem procesa tajmera po ključu. Memorija odmah se oslobađa. Nema pozadinskog pregleda. |
| 2 | Redis | Nije Erlang. Ispušteno. |
| 3 | Memcached | Nije Erlang. Ispušteno. |
1.23. Obradivač prstena mrežnih predmemora bez kopiranja (Z-CNBRH)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + NIF-ovi (DPDK/AF_XDP) | Direktni pristup jezgarnim prstenima. Bez kopiranja preko iolista i binarnih referenci. Kašnjenje: 1μs. |
| 2 | AF_PACKET + C | Nije Erlang. Ispušteno. |
| 3 | libpcap | Nije Erlang. Ispušteno. |
1.24. ACID dnevnik transakcija i upravljač oporavka (A-TLRM)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + mnesia (s disc_copies) | Dnevnik transakcija su nepromjenjivi Erlang termini. Oporavak preko rekonstrukcije termina --- matematički zasnovan. |
| 2 | WAL u PostgreSQLu | Nije Erlang. Ispušteno. |
| 3 | MongoDB Oplog | Nije Erlang. Ispušteno. |
1.25. Ograničivač stopa i izvršitelj token-bucket (R-LTBE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + ETS + gen_server | Stanje token-bucket pohranjeno u ETS. Atomski ažuriranja preko ets:update_counter. Nema blokada, nema GC. |
| 2 | Redis + Lua | Nije Erlang. Ispušteno. |
| 3 | Envoy (C++) | Nije Erlang. Ispušteno. |
1.26. Okvir za jezgarni uređajni drajver (K-DF)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang (neprimjenjivo) | Erlang radi u korisničkom prostoru. Ne može implementirati jezgarni drajveri. |
| 2 | Linux Kernel Modules (C) | Nije Erlang. Ispušteno. |
| 3 | Rust + Linux Driver Framework | Nije Erlang. Ispušteno. |
Napomena: Svi niskorazini sustavi (1.26--1.30) su neprimjereni pod Erlangom zbog ograničenja korisničkog prostora.
1.27. Alocator memorije s kontrolom fragmentacije (M-AFC)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang (neprimjenjivo) | Erlang koristi procesne hrame. Nema globalnog alocatora za kontrolu. |
| 2 | jemalloc (C) | Nije Erlang. Ispušteno. |
| 3 | tcmalloc (C++) | Nije Erlang. Ispušteno. |
1.28. Binarni parser protokola i serijalizacija (B-PPS)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + bit sintaksa (<<>>) | Obrazac podudaranja na binarnima je matematički totalan. Nema grešaka parsiranja tijekom izvršenja ako su obrasci iscrpni. |
| 2 | protobuf (C++) | Nije Erlang. Ispušteno. |
| 3 | msgpack (Python) | Nije Erlang. Ispušteno. |
1.29. Obradivač prekida i multiplexer signala (I-HSM)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang (neprimjenjivo) | Ne može obradivati hardverske prekide. |
| 2 | Linux signal handlers (C) | Nije Erlang. Ispušteno. |
| 3 | FreeRTOS | Nije Erlang. Ispušteno. |
1.30. Tumač bytecode-a i JIT kompajlerski stroj (B-ICE)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang BEAM (ugrađen) | BEAM je formalno specifikirana virtualna mašina. JIT kompilacija preko HiPE (opciono). Bytecode je matematički provjeren. |
| 2 | LLVM | Nije Erlang. Ispušteno. |
| 3 | V8 | Nije Erlang. Ispušteno. |
1.31. Planirač niti i upravljač promjenom konteksta (T-SCCSM)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang BEAM (ugrađen) | Lagani procesi planiraju se preemptivno. Promjena konteksta: 1--2μs. Nisu potrebne OS niti. |
| 2 | Linux CFS | Nije Erlang. Ispušteno. |
| 3 | Windows Fiber Scheduler | Nije Erlang. Ispušteno. |
1.32. Razina apstrakcije hardvera (H-AL)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang (neprimjenjivo) | Samo korisnički prostor. |
| 2 | Zephyr RTOS | Nije Erlang. Ispušteno. |
1.33. Stvarni vremenski ograničivač (R-CS)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang (neprimjenjivo) | Nema garancije stvarnog vremena. |
| 2 | RTAI / Xenomai | Nije Erlang. Ispušteno. |
1.34. Implementacija kriptografskih primitiva (C-PI)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | Erlang + crypto NIF (OpenSSL) | Standardizirani primitivi. Deterministički izlaz. Memorija: 4KB po operaciji. |
| 2 | libsodium (C) | Nije Erlang. Ispušteno. |
1.35. Profiler performansi i instrumentacijski sustav (P-PIS)
| Rang | Ime okvira | Obrazloženje usklađenosti (Manifest 1 i 3) |
|---|---|---|
| 1 | eprof / fprof (ugrađeni) | Niska nadogradnja praćenja. Nije potreban instrumentacijski kod --- hookovi kompajlera. |
| 2 | perf (Linux) | Nije Erlang. Ispušteno. |
2. Dubinska analiza: Ključne snage Erlanga
2.1. Temeljna istina i otpornost: Mandat nultih grešaka
- Značajka 1: Izolacija procesa --- Svaki Erlang proces ima svoj hram i nema dijeljenu memoriju. Greške su izolirane; neuspjeh je eksplicitan putem
link/monitor. Neispravna stanja ne mogu se širiti. - Značajka 2: Obrazac podudaranja + stražnje uvjete --- Svi pristupi podacima su iscrpni. Neusklađeni obrasci uzrokuju upozorenja tijekom kompilacije ili kršenja tijekom izvršavanja (ne tihi neuspjehi). Stražnje uvjete osiguravaju preduvjete na razini tipa.
- Značajka 3: Nepromjenjivi podaci + funkcionalna čistoća --- Nema stranih efekata. Funkcije su čiste. Promjene stanja se događaju putem slanja poruka, što čini ponašanje sustava matematički praćenim i provjerljivim.
2.2. Učinkovitost i minimalizam resursa: Obveza izvršenja
- Model izvođenja: Lagani procesi --- 1KB po procesu, planirani kooperativno. Milijuni istovremenih procesa su mogući bez OS niti. Nema nadogradnje promjene konteksta.
- Upravljanje memorijom: Procesni hramovi + dijeljenje po principu kopiranja pri pristupu --- GC se izvršava po procesu, a ne globalno. Termini su dijeljeni preko brojanja referenci (bez mark-sweep). Veličina memorije raste linearno s konkurentnošću, a ne veličinom podataka.
2.3. Minimalni kod i elegancija: Moć apstrakcije
- Konstrukcija 1: Obrazac podudaranja na binarima i tuple-ovima --- Jedna linija (
<<Version:4, Length:16, Data/binary>> = Packet) zamjenjuje 50+ linija C/Java logike za parsiranje. - Konstrukcija 2: OTP ponašanja (
gen_server,gen_statem) --- Inkapsulira kompleksnu logiku stanja u 20--30 linija. Ekvivalentni Java/Python kod: 150--400+ LOC.
3. Konačna procjena i zaključak
3.1. Usklađenost s manifestom --- Koliko blizu je?
| Stupac | Ocijena | Jednolinijsko obrazloženje |
|---|---|---|
| Temeljna matematička istina | Jaka | Čista funkcionalna semantika, obrazac podudaranja i izolacija procesa čine neispravna stanja nepredstavljivim. |
| Arhitektonska otpornost | Jaka | Stabla nadzora, topli učitavanje koda i izolacija procesa osiguravaju 99,999% dostupnosti u produkciji od 1987. |
| Učinkovitost i minimalizam resursa | Jaka | Lagani procesi, nula-kopiranje iolista i per-procesni GC omogućuju 10x nižu RAM/CPU u odnosu na JVM/Node.js. |
| Minimalni kod i elegantni sustavi | Jaka | Obrazac podudaranja i OTP smanjuju broj linija koda za 70--90% u odnosu na imperativne jezike, a povećavaju sigurnost. |
Najveći nerešeni rizik: Nedostatak alata za formalnu verifikaciju --- Iako je jezik matematički zasnovan, nema zrelih alata za automatsko teoretsko dokazivanje (npr. integracija Coq/Isabelle). Ovo je SMRTELNO za H-AFL i D-CAI ako regulativna usklađenost zahtijeva strogo provjereni dokazi.
3.2. Ekonomski utjecaj --- Brutalni brojevi
- Razlika u troškovima infrastrukture: 1,20 po 1.000 istovremenih korisnika (vs 6,00 za Node.js/Java) --- zbog 80% nižeg korištenja RAM-a.
- Razlika u zapošljavanju i obuci razvojnih inženjera: +25K po inženjeru/godinu --- Erlang stručnjaci su rijetki; obuka traje 6--12 mjeseci.
- Troškovi alata/licenciranja: $0 --- Svi alati su otvorenog koda i ugrađeni.
- Potencijalna ušteda od smanjenja izvršenja/LOC: 80K po projektu/godinu --- Na temelju 70% manje LOC = 50% manje debugiranja, testiranja i održavanja.
Upozorenje TCO: Za male timove ili startapove bez Erlang stručnosti, TCO je viši zbog troškova zapošljavanja i obuke --- samo prikladan za dugoročne infrastrukturne projekte.
3.3. Operativni utjecaj --- Provjera stvarnosti
- [+] Trenutak deploya: Nizak --- Jedna binarna datoteka, nema vanjskih ovisnosti. Docker slika: 50MB.
- [+] Opservabilnost i debugiranje: Jaka --- Ugrađeni
observer,eprof,reconpružaju duboku introspekciju tijekom izvođenja. - [+] CI/CD i brzina objave: Visoka --- Toplo učitavanje koda omogućuje ažuriranja bez prekida.
- [-] Rizik dugoročne održivosti: Umjerena --- Zajednica je mala (10k aktivnih razvojnika vs 2M za JS). Ekosustavi poput
Phoenixrastu, ali niskorazinski alati su stagnirali. - [-] Kriva učenja: Strma --- Funkcionalno programiranje, model konkurentnosti i OTP obrasci zahtijevaju 3--6 mjeseci da se savlada.
- [-] Nema stvarno vrijeme ili podrške za jezgru --- Isključuje ugrađene, HFT i upotrebu drajvera.
Operativna procjena: Operativno prikladno --- Za distribuirane, visoko dostupne sustave (API-je, vodiče, poruke), Erlang je nespojiv. Za timove bez iskustva u funkcionalnom programiranju ili stvarnim vremenskim zahtjevima, to je visokorizična investicija.