Zajmuję się bioinformatyką w D. Dla mnie kluczową rzeczą w D jest to, że przyjmuje bardzo zrównoważone podejście do kompromisów i uznaje zasadę malejących zysków.
W przeciwieństwie do C ++, który rygorystycznie przestrzega zasady zerowego narzutu, D dopuszcza funkcje, które mogą mieć niewielki koszt wydajności / przestrzeni, jeśli sprawiają, że język jest znacznie bardziej użyteczny. Obejmują one czyszczenie pamięci, obiekt monitorowania dla każdej klasy, informacje o typie środowiska uruchomieniowego itp.
W przeciwieństwie do Ruby, Python, PHP itp., D stara się być prawie tak samo szybki jak C, nawet jeśli jest mniej dynamiczny i nieco trudniejszy do programowania niż języki skryptowe.
Rezultatem jest język, który jest optymalny, gdy zarówno czas rozwoju, jak i czas wykonania mają równe znaczenie, co w mojej dziedzinie jest przez większość czasu.
Podobnie D ma bardzo zrównoważone podejście do kwestii bezpieczeństwa w porównaniu z elastycznością. Zakłada się, że programiści w zasadzie wiedzą, co robią, ale popełniają błędy.
W przeciwieństwie do C i C ++ zakłada, że nie chcesz używać wskaźników, niebezpiecznych rzutów, ręcznego zarządzania pamięcią itp. Wszędzie w kodzie, ponieważ są one podatne na błędy i zakłada, że nie chcesz przesiewać wielu -page szablonów komunikatów o błędach, gdy robisz coś źle tylko po to, by użyć tablic o zmiennym rozmiarze.
W przeciwieństwie do Javy i innych języków niewoli i dyscypliny, D zakłada, że czasami wskaźniki, niebezpieczne rzutowanie, ręczne zarządzanie pamięcią itp. Są złem koniecznym i zakłada, że jesteś wystarczająco inteligentny, aby radzić sobie z prawdziwymi szablonami, przeciążeniem operatora itp. Bez pisania zaciemniony kod. Zakłada również, że możesz schrzanić tablicę i uzyskać dostęp do tablicy poza granicami, ale programista wie najlepiej, jaki kompromis należy dokonać między bezpieczeństwem a szybkością w danej sytuacji. Dlatego to, czy tablice są sprawdzane w granicach, jest po prostu określane przez przełącznik kompilatora.