Najlepsza odpowiedź
Jestem programistą w Wallaroo Labs (www.wallaroolabs.com), gdzie byliśmy używając Pony do zbudowania Wallaroo, naszej platformy przetwarzania danych. Jestem również zaangażowany w pracę nad kompilatorem Pony.
Pony to świetny język do pracy nad Wallaroo. System typów eliminuje problemy, takie jak błędy wskaźnika zerowego, więc możemy być pewni, że skompilowany program nie ulegnie awarii. Możliwości referencyjne gwarantują, że współbieżne części naszych programów są wolne od wyścigów danych. Kompilator generuje szybki kod, a moduł wyrzucania elementów bezużytecznych dla poszczególnych aktorów zapewnia przewidywalnie niskie opóźnienia ogona. Wszystkie te rzeczy razem pozwoliły nam zbudować duże oprogramowanie, które zachowuje się zgodnie z oczekiwaniami.
Pony może być trochę onieśmielający dla początkujących ze względu na sprawdzanie typów i możliwości odniesienia. Większość programistów Pony zmaga się w pewnym stopniu z tymi rzeczami, gdy zaczynają używać języka, a dla małych programów dla jednego aktora mogą się one wydawać zbyt kłopotliwe. Te rzeczy stają się jednak cenne, gdy twój program rośnie i staje się bardziej złożony. System typów gwarantuje, że program nie ulegnie awarii, ponieważ obiekt nie był oczekiwanego typu. Możliwości referencyjne eliminują wyścigi danych, które są niezwykle trudne do wyłapania podczas testów i bardzo bolesne do debugowania. Niekoniecznie docenisz te rzeczy, gdy piszesz bzdury, ale są one różnicą między sukcesem a porażką podczas budowania rodzajów złożonych systemów oprogramowania, na których zbudowane są firmy.
Myślę, że Pony jest słodki spot to duże aplikacje sterowane zdarzeniami. Jak wspomniałem wcześniej, system typów i możliwości referencyjne pomagają zarządzać złożonością, a Pony jest oparty na systemie aktorów, który dobrze pasuje do architektur sterowanych zdarzeniami. Dobrze pasuje do miejsca, w którym możesz użyć czegoś takiego jak Node.js lub Erlang / Elixir, ale zyskujesz korzyści z bezpieczeństwa typów i natywnego wykonywania.
Język jest wciąż nowy, więc standardowa biblioteka to dość minimalne w porównaniu z innymi językami. Z jednej strony może to oznaczać, że Pony nie będzie dobrze pasował do Twojego projektu. Z drugiej strony oznacza to, że ludzie mają wiele okazji do wniesienia wkładu.
Pony jest aktywnie rozwijany przez wolontariuszy z różnych środowisk, więc nie jest narażone na ryzyko, że zostanie porzucony, ponieważ ktoś opuszcza projekt lub dostaje nową pracę. Daje to lepsze perspektywy długoterminowe niż języki obsługiwane przez jedną osobę lub firmę.
Mam dokument , który aktualizuję od czasu do czasu z tym, co uważam za istotne dla osób, które są zainteresowane wypróbowaniem Pony. Obejmuje rzeczy, które moim zdaniem są ważne.
Ogólnie jestem bardzo zadowolony z mojego doświadczenia z Pony i zachęcam innych do spędzenia czasu na sprawdzeniu tego.
Odpowiedź
Myślę, że Pony jest odpowiedzią na wszystkie problemy z Erlangiem (i Elixirem) – głównie dlatego, że te języki zostały zaprojektowane, zanim ludzie zdali sobie sprawę, że można zbudować prawdziwie współbieżny język bez konieczności kopiowania wszystkich zmiennych dookoła wewnętrznie i potrzeba, aby wszystko było niezmienne (w celu uzyskania współbieżności przyjaznej dla programistów). Te nowe pomysły sprawiły, że Pony był tak szybki jak C ++, ale potencjalnie potężny jak Erlang. Wydaje mi się, że jest to naprawdę futurystyczna wersja Erlanga, co ktoś mógłby zrobić dzisiaj, gdyby musiał wymyślić Erlang od zera. Rust jest podobny, ale argumentowałbym za bardziej prymitywną implementacją takich pomysłów (z jego systemem uprawnień). W Rust nadal musisz cały czas myśleć o wątkach i innych rzeczach związanych z zarządzaniem procesami na poziomie systemu, że nowoczesny język powinien naprawdę rozwiązać problem. A może bardziej sprawiedliwe jest stwierdzenie, że Rust jest językiem programowania na poziomie systemowym, a Pony jest o jeden poziom wyżej, a jednocześnie jest naprawdę szybki.
Niestety, ponieważ jakiś idiota menedżer IT w JP Morgan odrzucił te usługi kontrakt z Przyczynowość w zeszłym roku (więcej informacji na https://www.linkedin.com/pulse/end-causality-constantine-goulimis ) – firma, która rozwijała język, zbankrutowała i czołowi ludzie pracowali dla innych firm.
Z tego, co widziałem, głównym mózgiem całej historii Pony był Sylvan Clebsch, naprawdę bystry facet od CS. Widziałem jego filmy i mógł to osiągnąć (tworzenie platformy „Erlang v2”, opartej na pomysłach na bardziej nowoczesny język programowania).
Faceci, którzy przejęli Sylvan i Causality po prostu nie są w stanie sprostać zadaniu.
W całym projekcie nie ma już błyskotliwości, a pierwszą rzeczą, jaką zrobili, kiedy przejęli projekt, było opublikowanie Kodeksu Postępowania, bzdurnego dokumentu SJW określając wszystkie sposoby, w jakie musisz podporządkować się ich idiotycznej lewicowej ideologii, zanim będziesz mógł być częścią ich małej grupy.
To dosłownie jeden z tych okresów w rozwoju technologii, w którym gorsze rozwiązanie wygrywa z powodu pewnych warunków rynkowych. Innym razem, gdy firma Sun, z miliardami dolarów z bańki internetowej, reklamowała Javę jako rozwiązanie wszelkiego rodzaju problemów, dla których nigdy nie została zaprojektowana.
W każdym razie nie sądzę, naprawdę użyty w produkcji, z wyjątkiem małego fragmentu kodu tu i tam, ale nie jako całego systemu – słusznie, ponieważ jest on daleki od rzeczywistego dostarczania tego, co Sylvan i kilku oryginalnych autorów wyobrażali sobie w całym języku (a później rozproszonej platformie) być i robić.