| CARVIEW |
|
Навигация Документация Инструменты |
Main /
Язык программирования DДобро пожаловать на сайт, посвященный языку программирования D. Здесь вы можете найти статьи, исходники, обзоры софта и ссылки на ресурсы, так или иначе связанные с языком D. Сайт постепенно наполняется материалом и функциональностью, если вы хотите принять в этом участие, внести исправления в опубликованное или просто обсудить язык Ди и его практическое использование - будем рады пообщаться на Форуме.
Отзывы программистовЕсли у вас есть опыт программирования на D и вы хотите написать отзыв о языке и разместить его на этой странице, пишите в форум. Евгений Железников (Digited) пишет: D - объектно-ориентированный компилируемый кросс-платформенный язык программирования высокого уровня с С-подобным синтаксисом, отличающийся от С++ системой модулей (наподобие Python) вместо #include, сборкой мусора, одиночным наследованием + наследованием интерфейсов, очень быстрой компиляцией исходников, встроенными делегатами и простыми контейнерами, контрактами и встроенными тестами модулей (перечислены лишь основные особенности). Объектные файлы D соответствуют бинарному интерфейсу С, поэтому при сборке программ можно включать объектные файлы и статические библиотеки С (win32, *nix, COM, OpenGL, freetype/zlib/png/jpeg и т.д.). Язык D создается с 1999 года Уолтером Брайтом, автором компиляторов С/C++. Существует две версии языка: стабильная 1.0 и экспериментальная 2.0 (в стадии "alpha"). Основные компиляторы - DMD (win32 и linux32) и GCC-GDC. Для первой версии языка разработана альтернативная стандартная библиотека Tango, представляющая собой удобный и обширный набор средств для создания программ любой сложности. На D можно писать драйвера, ядра операционных систем, другие языки программирования и программы любой сложности, быстро доводить новый код до успешной компиляции и быстро его отлаживать. D быстро осваивается программистами, знакомыми с любым современным языком программирования: знакомые особенности и удобство в работе найдут и программисты на Pascal (Delphi), и на Java, и на С++, и на Python. Освоив язык, вы перестаёте замечать, что пишете программу на нём - просто пишете логику из мыслей, это становится так же естественно, как дышать. Компиляторы и стандартные библиотеки бесплатны и открыты. Откройте для себя D, и язык вас наверняка очарует. Олег Дубров (DuB) пишет: Язык D - мощь современного объектно-ориентированного языка и низкоуровневость C. Или можно сказать так: язык D - логическая целостность и простота Java плюс широкие возможности языка C. Вот, например, что дает программисту Java? Java прежде всего дает независимость от операционной системы (этого нет в самом языке D, но компиляторы DMD и GDC, а также стандартные библиотеки Phobos и Tango, кроссплатформенные). Во-вторых Java, благодаря своей виртуальной машине занимается сборкой мусора (освобождение неиспользуемой памяти). Это также есть и в D. В-третьих писать на Java легко и приятно, потому что язык очень качественно продуман. Язык Java почти что очевиден. Каждая деталь языка существует с какой то целью, которую человек способен понять. Что естественно меняет ощущения от программирования в лучшую сторону и позволяет больше сконцентрироваться на проектировании, а не на изучении особенностей и хитросплетений языка. Именно поэтому Java так полюбилась программистам и занимает сейчас первое место в рейтингах популярности. Надо заметить, что присутствовали и другие причины: например, необычайная простота языка, поддержка со стороны крупных компаний, и т.д. Но в чем же недостаток Java? Недостаток в том, что программы написанные на Java, никогда не смогут сделать что-то подобное Orfo Switcher'у. В программе на Java можно написать только то, что предусмотрели разработчики виртуальной машины. Т.е. Окна, файлы, доступ в интернет и работа приложений в локальной сети - все это работает на ура. Но вот вам захотелось установить какие-то системные настройки, или перехватить нажатия клавиш. В операционной системе эта возможность есть, а в Java машине нет. Можно, конечно написать нативные модули, и объединить их с программой на Java. Но это отдельный разговор. Это первая беда Java машины. Вторая беда - это производительность. Есть определенная доля проектов, для которых язык Java не пригоден именно из-за этого. Манипуляция с большими объемами данных, работа с большими файлами, приведение типов в больших массивах может оказаться не эффективной на виртуальной машине. Взять даже словарь в Orfo Switcher'e. Словарь русского языка представляет файл определенного формата. В данном конкретном случае это набор структур размером в четыре байта. Файл довольно внушительный, размером около 5-ти мегабайт. В таких языкак как D или С я могу просто "поднять" файл в память и сказать, просто объявить одной строчкой, что эта область памяти является массивом структур. И дальше я могу работать в программе с этим массивом как обычно. Это и есть приведение типов. Для этого не требуется НИКАКОГО процессорного времени. В Java напрямую так сделать нельзя, я должен бы был читать этот файл побайтно и размещать их в какую-то сущность (массив, вектор). Нужна дополнительная обработка файла. Т.е. потребовалось бы довольно большое время. Миллионы операций за место одной. А сколько бы времени потребовалось на поиск похожих слов? Ведь для этого нужно подставить на каждое (!) место в слове каждую букву алфавита. И проверить все эти варианты на существование в словаре. Т.е. прошерстить весь словарь много раз. Слово из десяти букв нужно будет проверить 10*32 = 320 раз! И это только ошибки связанные с неправильной бувой. Есть еще ошибки пропускания и добавления букв. Еще примерно столько же переборов. Мне трудно даже представить, сколько это времени займет на Java машине. А что же С++? С++ - это замечательная, если не сказать гениальная объектная модель. Это превосходная, если не сказать максимальная, производительность. Это миллионы строк уже написанного кода на все случаи жизни. С++ - это мировая популярность, почти стандарт. Смело можно сказать, что это самый крутой язык, для самых крутых программистов. Но это также и часы, проведенные в поисках трудноуловимых ошибок, непонятность или правильнее сказать неочевидность многих вещей и, самое главное, время потраченное на его изучение. Говорят, что спустя годы программист С++ не знает любить ему или ненавидеть этот язык. Понимание красоты и гениальности приходит не сразу. Для этого нужно пройти большой путь. И путь этот никак не усеян розами. Мне думается, программисты С++ найдут в D для себя большую простоту, и возможно скорость разработки. А программисты на Java - доступ к функциям операционной системы и большую производительность. Конечно, у D есть некоторые черты, которые будут поначалу непонятны ни первым, ни вторым (например, динамические замыкания, транзитивные константы, сопоставление с образцом при инстанциации шаблонов или функциональный стиль при метапрограммировании), но, преодолев эти трудности, программисты получат в свое распоряжение мощный и удобный инструмент. Как говорит Walter Bright, D - это практический язык для практических целей. И я с этим полностью согласен. Аминь! |
