Czytanie o współbieżności w Erlangu przypomina mi zestaw narzędzi do współbieżności Akka . Oba zapewniają narzędzia do zapobiegania lub ograniczania warunków wyścigu . Możesz jednak wysyłać linki do zmiennych danych do innych procesów za pomocą zestawu narzędzi Akka, który nadal jest niebezpieczny. Uważam Akka za przydatne narzędzie, ale nie zapewnia ono ochrony przed nieuporządkowanym dostępem do obiektów i danych prowadzącym do warunków wyścigowych, impasu i / lub głodu. Nie zapobiega to pisaniu niebezpiecznego kodu w sposób, w jaki Java lub C # chroni cię przed pisaniem większości rodzajów wycieków pamięci, które możesz napisać w C ++ (nadal możesz tworzyć wycieki pamięci w Javie, oszukując moduł wyrzucania elementów bezużytecznych, ale jest mniej problemu niż konieczność zwalniania każdego przydzielonego bajtu).
Czy Erlang gwarantuje stopień poprawności, wydajności i solidności w programowaniu współbieżnym? Myślę, że systemy operacyjne zapewniają ochronę podczas uzyskiwania dostępu do zasobów systemowych (zakładając, że autorzy sterowników wykonali swoje zadania dobrze). Bazy danych ACID zapewniają ochronę odczytów i aktualizacji. Wygląda więc na to, że jest to problem do rozwiązania. A może ogólne bezpieczne rozwiązanie zniweluje wzrost wydajności zapewniany przez współbieżność? Czy inne języki lub zestawy narzędzi zapewniają równoczesne bezpieczeństwo, które Erlang robi (lub nie robi)?
To pytanie uzupełniające do komentarza @ Malfist do odpowiedzi @ user1249 na: Jaki język programowania generuje najmniej trudnych do znalezienia błędów? .