Я займаюся біоінформатикою в компанії D. Для мене головне, що стосується D, це те, що він застосовує дуже рівний підхід до компромісів і визнає принцип зменшення прибутку.
На відміну від C ++, який суворо дотримується принципу нульових накладних витрат, D дозволяє функції, які можуть мати невелику вартість продуктивності / простору, якщо вони роблять мову набагато більш зручною. Сюди входять збирання сміття, об'єкт монітора для кожного класу, інформація про тип виконання та ін.
На відміну від Ruby, Python, PHP тощо, D намагається бути настільки ж швидким, як і C, навіть якщо він менш динамічний і трохи складніше програмувати, ніж мови написання.
Результатом є мова, яка є оптимальною, коли час розробки та час виконання мають значення приблизно однаково, що в моїй галузі є більшістю часу.
Так само D застосовує дуже рівний підхід до безпеки та гнучкості. Передбачається, що програмісти в основному знають, що роблять, але роблять помилки.
На відміну від C і C ++, він передбачає, що ви не хочете використовувати вказівники, небезпечні касти, ручне управління пам’яттю тощо скрізь у своєму коді, оскільки вони схильні до помилок, і передбачається, що ви не хочете просіювати мульти повідомлення про помилки шаблону сторінки, коли ви завершуєте роботу лише для використання змінних масивів.
На відміну від Java та інших мов, пов’язаних із дисципліною, D передбачає, що іноді вказівники, небезпечні трансляції, ручне управління пам’яттю тощо є необхідним злом, і припускає, що ви досить розумні, щоб обробляти реальні шаблони, перевантаження оператора тощо без написання. затуманений код. Він також передбачає, що ви можете викрутити і отримати доступ до масиву поза межами, але програміст найкраще знає, який компроміс слід робити між безпекою та швидкістю в будь-якій ситуації. Тому, чи перевіряються межі масивів, просто визначається компілятором.