Я занимаюсь биоинформатикой в D. Для меня ключевым моментом в D является то, что он требует очень взвешенного подхода к компромиссам и признает принцип убывающей отдачи.
В отличие от C ++, который строго придерживается принципа нулевых накладных расходов, D позволяет использовать функции, которые могут иметь небольшие затраты на производительность / пространство, если они делают язык намного более удобным для использования. К ним относятся сборка мусора, объект монитора для каждого класса, информация о типе среды выполнения и т. Д.
В отличие от Ruby, Python, PHP и т. Д., D пытается быть почти таким же быстрым, как C, даже если он менее динамичен и немного сложнее для программирования, чем языки сценариев.
В результате получается язык, который является оптимальным, когда время разработки и время выполнения имеют примерно одинаковое значение, что в моей области является большей частью.
Точно так же D использует очень уравновешенный подход к безопасности и гибкости. Предполагается, что программисты в основном знают, что делают, но делают ошибки.
В отличие от C и C ++, он предполагает, что вы не хотите использовать указатели, небезопасные преобразования, ручное управление памятью и т. Д. Везде в своем коде, потому что они подвержены ошибкам, и предполагает, что вы не хотите просеивать несколько сообщения об ошибках шаблона -page, когда вы облажаетесь только с использованием массивов с изменяемым размером.
В отличие от Java и других языков рабства и дисциплины, D предполагает, что иногда указатели, небезопасные преобразования, ручное управление памятью и т. Д. Являются необходимым злом, и предполагает, что вы достаточно умны, чтобы обрабатывать настоящие шаблоны, перегрузку операторов и т. Д. Без написания запутанный код. Это также предполагает, что вы можете облажаться и получить доступ к массиву вне пределов, но что программист лучше всего знает, какой компромисс между безопасностью и скоростью в той или иной ситуации. Таким образом, проверка границ массивов определяется переключателем компилятора.