Язык Программирования D |
Здравствуйте, гость ( Вход | Регистрация )
Язык Программирования D |
Сообщение
#1
|
|
Заглянул... и зарегистрировался Группа: Участник Сообщений: 4 Спасибо сказали: 0 раз(а) Регистрация: 16 Марта 2004 Из: Yaroslavl, Russia Пользователь №: 40 |
Это -- моя первая попытка прозондировать местную почву в поисках собеседников.
На C++ я пишу с 1991 года. За это время я гораздо больше узнал о проблемах этого языка и где-то с 2000 года все время искал язык, на который можно перейти. Дело в том, что по мере накопления опыта мне постепенно становилось все яснее, что самый ценный опыт в C++ -- это знание того, какие средства этого языка потенциально опасны или опасно взаимодействуют с другими его средствами. С появлением Design Patterns и пониманием того, что наследование наиболее эффективно использовать для задания интерфейса объекта, а не для наследования реалиации, я стал понимать, что C++ по сути представляет собой что-то вроде ассемблера для ООП. Для эффективной работы нужно хорошо знать, какие средства для чего следует применять (и для чего не следует). Врезультате получается, что по сути разные вещи выражаются в C++ синтаксически одинаково или похоже. В качестве замены C++ я рассматривал Oberon, но не нашел достаточно устойчивой реализации, да и паскалевский синтаксис выглядит уж очень непривычно и не кажется мне удобным. **'у я тоже рассматривал как возможную замену, но мне нужна возможность компилироваться в эффективный нативный код. Кроме этого в **, как мне кажется добавлено слишком много "колокольчиков и свистулек". Недавно приятель мне прислал ссылку на сайт фирмы Digital Mars, которая разработала язык D и компилятор для него. Автор языка -- человек, который разрабатывал компиляторы фирмы Semantec. Язык позиционируется как прагматичный инструмент для практического программирования, в котором учтены все основные проблемы, выявленные в результате использования языка C++ и написания компиляторов для него. Основное отличие от C++ такое: при проектировании автор отказался от обеспечения обратной совместимости с C, что позволило упростить многие вещи. В первом сообщении темы я приведу перевод наиболее интересных фраз из введения к manual'у. Сейчас я потихоньку изучаю D и он мне все больше и больше нравится... Теперь вопросы. 1. Интересно ли кому-нибудь здесь обсуждение этих вопросов? Хотя это сразу станет ясно, когда не будет ни одного ответа ;)) 2. Задумываются ли люди, пишущие на C++ о возможности перехода к использованию более эффективного и безопасного инструмента? 3. Есть ли у кого-либо опыт изучения/использования языка D? 4. Как можно оценивать риски использования этого языка в реальном проекте? P.S. На мне висит около 100000 строк кода, используемого в нескольких промышленных проектах. Поэтому полностью и сразу перейти на новый язык в любом случае не удастся, это будет долгий и трудный процесс, включающий переговоры с теми заказчиками, которым мы продаем исходники. Именно поэтому я весьма пессимистично смотрю на все это предприятие, но, с другой стороны, с каждым килобайтом нового кода на C++ будет все тяжелее перейти на новый язык... |
|
|
Сообщение
#2
|
|
Заглянул... и зарегистрировался Группа: Участник Сообщений: 4 Спасибо сказали: 0 раз(а) Регистрация: 16 Марта 2004 Из: Yaroslavl, Russia Пользователь №: 40 |
Выдержки из введения
-- Язык программирования D был задуман в декабре 1999 как потомок языков C и C++. Это -- язык общего назначения для прикладного и системного программирования. Он является языком более высокого уровня, чем C++, но сохраняет возможность писать высокопроизводительный код и взаимодействовать с оборудованием и операционной системой. Язык ориентирован на разработку средне- и крупномасштабных проектов объемом в несколько миллионов строк кода. D не является скриптовым или интерпретируемым языком, не подразумевает наличия виртуальной машины и не навязывает своей религии или философии. Он является практическим языком для разработки надежного, управляемого и простого для понимания кода. В нем собран опыт использования других языков и опыт разработки компиляторов для них. Многие решения D позаимствовал из C++, но при этом он не связан требованием совместимости с ним по исходному коду. Именно это требование было основным сдерживающим фактором в развитии языка C++, который не позволил исправить некоторые имеющиеся в нем проблемы. В результате введения новых механизмов при сохранении обратной совместимости с C язык C++ оказался сложным в изучении и реализации. Большинство программистов пишут на C++, используя некоторое его подмножество, причем C++ сознательно поддерживает множество существенно различных стилей. D является попыткой выделить и переработать основные возможности языка C++ в простой ортогональный и практичный язык. При этом должное внимание уделялось простоте и эффективности компилятора и возможности проведения агрессивной оптимизации. Из C++ язык D позаимствовал такие фундаментальные механизмы как объекты, исключения, RTTI, перегрузка операторов, шаблоны. В то же время были исключены такие механизмы как препроцессор, множественное наследование, пространства имен, объекты, размещаемые на стеке, невиртуальные член-функции. В качестве новых средств, заменяющих исключенные механизмы, введены модули, ассоциативные массивы (хэш-таблицы), функции с произвольной вложенностью, анонимные функции-литералы, динамические замыкания, встроенные типы для массивов и строк, сборка мусора, встроенные в язык объекты-синхронизаторы для многопоточного программирования. Дополнительно введена поддержка проверки контрактов (design by contract), тестирования модулей (unit testing) и формирования версий (versioning). |
|
|
Сообщение
#3
|
|
слабая женщина Группа: Супермодератор Сообщений: 5 299 Спасибо сказали: 240 раз(а) Регистрация: 25 Апреля 2003 Из: Москва Пользователь №: 1 |
"С почином Вас, Глеб Егорович!" (с) (IMG:http://www.jewniverse.ru/forum/style_emoticons/default/poz.gif) ' />
|
|
|
Guest_gdy_* |
Воскресенье, 21 Марта 2004, 19:14
Сообщение
#4
|
Гость |
По поводу ассемблера для ООП
http://www.artima.com/intv/elegance2.html |
|
|
Сообщение
#5
|
|
Техник Группа: Участник Сообщений: 245 Спасибо сказали: 1 раз(а) Регистрация: 25 Апреля 2003 Пользователь №: 3 |
Цитата (ltwood @ Mar 17 2004, 07:04 PM) .... В то же время были исключены такие механизмы как препроцессор, множественное наследование, пространства имен, объекты, размещаемые на стеке, невиртуальные член-функции. В качестве новых средств, заменяющих исключенные механизмы, введены модули, ассоциативные массивы (хэш-таблицы), функции с произвольной вложенностью, анонимные функции-литералы, динамические замыкания, встроенные типы для массивов и строк, сборка мусора, встроенные в язык объекты-синхронизаторы для многопоточного программирования. ... Звучит заманчиво... Правда, я специально не интересовался, но про язык D - слышу впервые. Непонятно, почему не "В"? Где можно что-нить подсмотреть? |
|
|
Сообщение
#6
|
|
реб Йойл Группа: Обозреватель Сообщений: 840 Спасибо сказали: 0 раз(а) Регистрация: 14 Апреля 2004 Пользователь №: 47 |
Язык B уже и так существует. Он был разработан Ричи и Томпсоном в качестве языка высокого уровня, обладающего эффективностью ассемблера, в 1969-1970 годах. B - это сокращение от имени его непосредственного предка - BCPL, который , в свою очередь, - упрощенный (Bacis) CPL. Однако вскоре авторы этого языка убедились в необходимости его доработки и в 1972 году создали новый язык - C. Собственно, ядро системы и ряд утилит UNIX были поначалу написаны на B, однако в 1973 году UNIX был переписан на C. Версия B для PDP-11 использовалась довольно долго после этого, в качестве как бы макроассемблера (впрочем, самые эффективные программы для PDP-11/советских СМ-4,как известно, народ писал сырым машинным кодом). Язык B - это важная страница в истории C и UNIX.
Про язык D я знаю только то, что это некое альтернативное расширение C, по аналогии с C++ и ObjC. Я сейчас пользуюсь кусками кода, написанными на ObjC (под Mac OS X - это единственный UNIX, где он активно используется), поэтому поневоле приходится осваивать этот язык. Похоже на C++, но объекты больше напоминают Java. Никаких преимуществ по сравнению с C++ я не вижу, а вообще-то я больше люблю старый добрый C без плюс-плюсов. Лично я в ближайшее время не собираюсь интересоваться D, поскольку он несовместим с gcc и пока находится в стадии языка-игрушки: версия для Linux находится в зачаточном состоянии, а для *BSD и Solaris его пока просто нету. |
|
|
Сообщение
#7
|
|
Заглянул... и зарегистрировался Группа: Участник Сообщений: 4 Спасибо сказали: 0 раз(а) Регистрация: 16 Марта 2004 Из: Yaroslavl, Russia Пользователь №: 40 |
Цитата (Сим @ 24.03.2004 - 21:22) Звучит заманчиво... Правда, я специально не интересовался, но про язык D - слышу впервые. Непонятно, почему не "В"? Где можно что-нить подсмотреть? Да, заманчиво. Я к сожалению не могу сейчас заняться его изучением вплотную :( Так, почитываю доку иногда... Основная ссылка такая: http://www.digitalmars.com/d/overview.html И насчет названия. После языков BCPL, B и С иногда шли споры, как назовут следующий язык -- P или D т.е. следующей вуквой из слова BCPL или D т.е. следующей буквой из алфавита ;) |
|
|
Сообщение
#8
|
|
реб Йойл Группа: Обозреватель Сообщений: 840 Спасибо сказали: 0 раз(а) Регистрация: 14 Апреля 2004 Пользователь №: 47 |
Хм. Прочитал Вашу домашнюю страницу и обнаружил ряд пересечений с моими собственными воззрениями. Мои политические взгляды приблизительно можно назвать лево-либертарными, во многом близкими к хиппи, но при этом я верующий иудей, хасид, поэтому активно интересуюсь разными эзотерическими идеями (обычно еврейскими, но не только). Не признаю сионизм.
Честно говоря, лично мне во многом больше нравятся бесплатные BSD, чем Linux. Не в смысле идеологии, но по архитектуре. Только с одним пунктом Вашей страницы я категорически не согласен, а именно - с легализацией марихуаны. Нет и еще раз нет! No pasaran! Наипервейшим объектом борьбы за легализацию должны быть несомненно психоделические вещества, прежде всего - грибы и кислота, а не трава! Да, вот что я хотел отметить: в принципе, для всех перечисленных Вами средств, кроме чисто внешнего оформления объектов, самой программы и удобства работы с компилятором, существуют библиотеки для C (для сборки мусора, хешей, синхронизаторы для многопроцессного и многопроцессорного программирования, само собой - всевозможные типы). Я почитал про этот язык D и все-таки думаю, что у него будущее будет примерно такое, как у системы Plan9: идеи-то хорошие, но из-за привычки народа к C он вряд ли станет популярным. Суровый Вы, однако. Лично я не представляю, как можно посреди проекта в 100000 строчек взять и перейти на другой язык, к тому же находящийся, как я понял, в стадии разработки. Java я бы ни в коем случае не использовал для большого проекта, ибо она тормозит раз в 8 по сравнению с C и ест неимоверное количество мозгов. А разве есть компилятор Oberon промышленного уровня? Лично меня больше всего интересуют не языки подобного сорта, но необычные средства программирования узкой направленности: Scheme со встроенной fuzzy logic, Mercury, Haskell. Было здорово создать супер-IDE, в котором можно было бы свободно вставлять модули из разных языков: когда надо - C, Pascal или Forth, когда надо - Lisp, Prolog или Perl, Tcl с соответствующим интерпретатором, автоматически встраиваемым в код. Я даже думал начать такой IDE писать, но времени на это нет, к сожалению. |
|
|
Сообщение
#9
|
|
ходячая энцикопедия Группа: Участник Сообщений: 247 Спасибо сказали: 3 раз(а) Регистрация: 6 Апреля 2004 Из: Российская Федерация, Свердловская область, Каменск-Уральский Пользователь №: 46 |
Цитата (Laplandian @ 20.04.2004 - 05:38) Хм. Прочитал Вашу домашнюю страницу и обнаружил ряд пересечений с моими собственными воззрениями. Мои политические взгляды приблизительно можно назвать лево-либертарными, во многом близкими к хиппи, но при этом я верующий иудей, хасид, поэтому активно интересуюсь разными эзотерическими идеями (обычно еврейскими, но не только). Не признаю сионизм. а причем здесь програмирование? (IMG:http://www.jewniverse.ru/forum/style_emoticons/default/gy.gif) |
|
|
Сообщение
#10
|
|
реб Йойл Группа: Обозреватель Сообщений: 840 Спасибо сказали: 0 раз(а) Регистрация: 14 Апреля 2004 Пользователь №: 47 |
Должен же быть некий элемента хаоса, а то нельзя же только про язык D рассуждать, безо всяких лирических отступлений. (IMG:http://www.jewniverse.ru/forum/style_emoticons/default/gy.gif)
|
|
|
Текстовая версия | Сейчас: Пт, 27 Сентября 2024, 7:56 |