Russian Qt Forum
Ноябрь 23, 2024, 13:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 ... 8   Вниз
  Печать  
Автор Тема: C++ vs D  (Прочитано 69459 раз)
Detonator
Гость
« Ответ #15 : Октябрь 28, 2008, 13:04 »

Цитировать
По мне, если уж и переходить куда-то, то в скриптовые или функциональные. Оба направления дают изрядный выигрыш в скорости разработки,

Решил переписать свою программу на C++/Qt только потому что теперь в Qt есть очень хорошая интеграция со скриптами. Итого вся программа будет написана на скриптах процентов на 80 + поддержка плагинов на тех же скриптах.
Писать все на C++, да и на том же D или C#, было бы очень нудно и тоскливо.
Записан
Detonator
Гость
« Ответ #16 : Октябрь 28, 2008, 13:08 »

Принципиально новое - это то, что низкоуровневый язык приближается по своему удобству к C# или Java.

Язык бессмысленно использовать без нормального отладчика/IDE. Какая разница какие там массивы или модули в самом языке если в случае проблемы ее долго исправлять. О каких миллионах строк кода идет речь когда нет нормальной среды с отладчиком/системой тестирования для поддержки такого проекта.
Записан
Tonal
Гость
« Ответ #17 : Октябрь 28, 2008, 14:35 »

Чем плох std::map?
Да впринципе ничем не плох. Но реализация сделана в отдельном namespace std, и об этом надо помнить при программинге. Просто неудобно. А тут часть языка.
Смотря что понимать под "частью языка". если то, что описано в его стандарте, то std::map тоже часть языка.
Почему написание слова template перед шаблоном тебя не смущает, а std:: вызывает трудности?

Да тоже хороши. Но std::vector - это всетаки не массив. А boost::array - вообще не часть стандарта языка.
Да std::vector больше чем просто массив - это массив с динамической длинной.
А boost::array если я не ошибаюсь включен в следующий стандарт. Улыбающийся


Моё мнение: D нужно сравнивать с C# или Java, т.к. он ориентирован примерно туда же. А с С++ но несколько в разных плоскостях.
Никак нельзя их стравнивать. C# и Java ограничены своими виртуальными машинами. А для D без гемора доступен любой системный уровень. Хоть драйвера ядра на нем пиши. А вот то, что по удобству испоьлзования он приближается к C# или Java - это очень хорошо.
Сможешь с ходу сказать какое свойство мешает транслировать C# или Java в натив?
И что, собственно делают JIT-ы в этих языках?
И что получится, если JIT-компиляцию провести заранее? Улыбающийся

Принципиально новое - это то, что низкоуровневый язык приближается по своему удобству к C# или Java. Это на самом деле много стоит, ведь программы пишут люди, а не только биороботы с красными фотоэлементами:).
Низкоуровневый - это близкий к низкому уровню - т.е. когда большинство конструкций языка б.м. однозначно ложатся в конструкции низкого уровня - процессора, памяти.
D с его сборкой мусора, "умными" массивами, тотальной виртуальностью, как мне кажется, несколько не подходит под это определение.
Подозреваю, что для "низкоуровневости" всё это можно как-то отключить, но тогда не особо понятны становятся преимущества перед С++. Особенно если предположить, что низкоуровневые вещи должны писать люди с довольно высокой квалификацией. Улыбающийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #18 : Октябрь 28, 2008, 15:32 »

Для вас, уважаемые, язык D не предназначен.

Интересно узнать от гуру, по каким критериям он нам не предназначен?? о_О
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Eldar
Гость
« Ответ #19 : Октябрь 28, 2008, 18:48 »

Попробую написать почему лично мне нравится D. Кое-что основывается на ощущениях и впечатлениях, но также постараюсь привести сухие факты.
С++ - это язык, где аккуратно расставлены грабли. Это не моя фраза но тем не менее она верна. Чтобы сделать что-то более менее рабочее помимо изучения толстой книги по самому языку я посчитал обязательным к прощению обеих книг Мейерса - без этого просто невозможно обходить грабли. Эксперты С++, имхо, помимо всего прочего потому и эксперты, что знают как делать нельзя.
Далее С++ тянет из С, языка 40 летней давности ужасные решения как #include, макросы, классы по умолчанию - типы по значению. Данный форум посвящен к Qt. Qt - это яркое доказательство того, что С++ ужасен, потому что этот фреймворк существенно расширяет язык и пытается улучшить то, что лежит в его основе.
Насчет встроенных Правильных массивов, ассоциативных массивов и строк - непонятно почему язык не должен этого иметь? Это С++ породил QVector и std::vector, QString, std::string и char*.
Синтаксис С++ ужасен. D спроектирован изначально правильно. Вы бегло пробежавшись по сайту digitalmars.com решили что это еще один язык из семейства C и кардинальных плюсов не приносит по сравнению с С++. Преимущества проявляются во всем, перечислю лишь некоторые из них:

auto - плюсисты только в С++09 подошли к тому что неплохо бы его использовать
конструкции типа QAbstractItemModel::QAbstractItemModel() для конструкторов и деструкторов
отсутствие различий между . и ->
nested structs, types, functions - точно не знаю как с этим в С++, но когда я портировал давным давно свою программу на gcc - он запретил мне это
scope - чертовски удобная фича
foreach - лишнее подтверждение что Qt костыль
инициализация элементов массивов по умолчанию(если вам хочется производительности - D как системный язык легко позволяет это сделать)
и многое другое. на самом деле различных маленьких удобств настолько много, что чтобы это понять, надо попробовать писать на нем.

Теперь по поводу ключевых преимуществ:
1) мгновенная компиляция
2) отсутствие препроцессора, но вместо него набор отличных средств
  version
  static if
  static assert
3) модульная система, вместо #include, который иначе как asspain не назовешь
4) управление памятью. Это тема для отдельного разговора. Но хочу сказать что это ключевое преимущество. Для любителей извращений сборщик мусора легко отключается. Другая возможность - комбинировать сборщик мусора с ручным выделением памяти - имхо идеальный вариант. Еще одно подтверждение огромных возможностей языка
5) нормальная объектная система - никакого множественного наследования, а интерфейсы и mixin's
6) делегаты - их наличие позволяет не городить костылей в виде moc, а реализовывать все просто и красиво.
7) я пока мало использую шаблоны, но по впечатлением людей - они мощнее чем в С++. ИМХО самым ярким впечатлением этого является то что уже как 3 года вторым разработчиком языка является Андрей Александреску, возможно вы читали его книги. Он забросил С++ - как думаете - это авторитетное мнение?

Вот хорошая табличка - http://www.digitalmars.com/d/1.0/comparison.html там конечно более полный список.
Нет ни одной задачи, которую бы было легче и удобнее реализовать в С++ чем в D. D - язык с огромными возможностями, превышающими таковые у С++ и превращающие программирование в удовольствие.
Можете также зайти на dprogramming.ru - русское сообщество пользователей D.
Записан
Eldar
Гость
« Ответ #20 : Октябрь 28, 2008, 19:01 »

Принципиально новое - это то, что низкоуровневый язык приближается по своему удобству к C# или Java.

Язык бессмысленно использовать без нормального отладчика/IDE. Какая разница какие там массивы или модули в самом языке если в случае проблемы ее долго исправлять. О каких миллионах строк кода идет речь когда нет нормальной среды с отладчиком/системой тестирования для поддержки такого проекта.
Насчет IDE - вы спросите вначале на чем Qt разрабатывают. Приятно удивитесь, что это не Microsoft Visual Studio. С отладчиком несколько больше пробем, но под вин32 есть хороший отладчик. С линуксом дело обстоит хуже.
Записан
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #21 : Октябрь 28, 2008, 19:11 »

Принципиально новое - это то, что низкоуровневый язык приближается по своему удобству к C# или Java.

Язык бессмысленно использовать без нормального отладчика/IDE. Какая разница какие там массивы или модули в самом языке если в случае проблемы ее долго исправлять. О каких миллионах строк кода идет речь когда нет нормальной среды с отладчиком/системой тестирования для поддержки такого проекта.

Эклипс как бе считается нормальным IDE. Хотя многим хватает что-то в стиле kate. Красноглазам емакса хватае за глаза.

gdb он и в Африке gdb, можно или напрямую дебажить, или изнутри эклипса, или всякими надстройками в стиле ddd или kdbg. Все привязывается к коду, не знаю правда, почему Eldar говорит что для D отладчика нет, по идее для gdb должно быть фиолетово, какой язык дебажить, если в бинаре есть extendet код для дебага. Но тут надо уже с практиками говорить. Я к языку этому пока только присматриваюсь.
« Последнее редактирование: Октябрь 28, 2008, 19:19 от xintrea » Записан

Собираю информацию по крупицам
http://webhamster.ru
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« Ответ #22 : Октябрь 28, 2008, 19:14 »

Для вас, уважаемые, язык D не предназначен.

Интересно узнать от гуру, по каким критериям он нам не предназначен?? о_О

Да что ж вы все о себе да о себе? Улыбающийся Не предназначен он для тех, кто не понимает дастоинств языка. Зачем ему этот язык? Пусть пользует C/C++, скоро вон новая версия подоспеет кстати.
Записан

Собираю информацию по крупицам
http://webhamster.ru
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #23 : Октябрь 28, 2008, 19:25 »

Невпечатлило...

1) Это конечно важно, но из-за это го бы не перешл на него
2) Использую только стражи включения
3) Нечувствую нималейшего дискомфорта
4) Ненужно. Хороший программист сам себе сборщик мусора. Это зависит от кривизны рук девелопера.
5) Пользуюсь множественным наследованием. Невижу ничего плохого в его использовании. Может вы объясните мне?
6) А подробнее про кастыли? И что предоставляют делегаты?
7) Не являеться решающим фактором. Есть библиотеки расширения для С++. Мнение Александреску тоже не являеться решающим фактором. Миллионы программистов пишет на С\С++: операционки, ПО, игры и прочее. Это чего-то стоит?

Qt - это не расширения языка, это всего навсего GUI библиотека, ничего более. И всётаки хотелось бы услышать о костылях в С\С++\Qt о который вы говорили ранее.

Без инструментальной базы все вышеперечисленные "преимущетва" - ничто. Разработали крупное приложение и что далее? Отладчик сырой, а профилировщик?  Ктате, если ли профилировщик в наличии?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #24 : Октябрь 28, 2008, 19:36 »

Вот почитайте про новый стандарт, может будите не так критичны к С++:

Новый стандарт C++: C++09

Стандартная библиотека C++09
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Eldar
Гость
« Ответ #25 : Октябрь 28, 2008, 20:04 »

>> Ненужно. Хороший программист сам себе сборщик мусора. Это зависит от кривизны рук девелопера.
Разубеждать вас не буду. Если для вас это основной критерий кривизны рук разработчиков...
Принципиально новое - это то, что низкоуровневый язык приближается по своему удобству к C# или Java.

Язык бессмысленно использовать без нормального отладчика/IDE. Какая разница какие там массивы или модули в самом языке если в случае проблемы ее долго исправлять. О каких миллионах строк кода идет речь когда нет нормальной среды с отладчиком/системой тестирования для поддержки такого проекта.

Эклипс как бе считается нормальным IDE. Хотя многим хватает что-то в стиле kate. Красноглазам емакса хватае за глаза.

gdb он и в Африке gdb, можно или напрямую дебажить, или изнутри эклипса, или всякими надстройками в стиле ddd или kdbg. Все привязывается к коду, не знаю правда, почему Eldar говорит что для D отладчика нет, по идее для gdb должно быть фиолетово, какой язык дебажить, если в бинаре есть extendet код для дебага. Но тут надо уже с практиками говорить. Я к языку этому пока только присматриваюсь.

Я и сам пользуюсь эклипсом, вполне неплохо. Но собираюсь переходить на вим. когда последний раз я пробовал gdb - он не показывал строк. Очень рад что вы заинтересованы - заходите к нам на dprogramming.ru - я не большой эксперт по Ди, но ребята уж точно помогут. Язык действительно потрясающий и если нет жестких требований по использованию каких-то специфических библиотек на С++ то стоит очень и очень плотно присмотреться.
Записан
uriel
Гость
« Ответ #26 : Октябрь 28, 2008, 20:09 »

По крайней мере DMD может собирать бинарник со встроенным профилировщиком и анализатором покрытия кода. Если второй с горем пополам работает, то у первого нереальные глюки. Но valgrind никто не отменял. Подмигивающий
Хотя...я балуюсь только с эксперементальной веткой компилятора D2. Возможно, в D1 дела обстоят лучше.
По ощущениям - ничего так язык, позитивный. Только вот, к сожалению, в последнее время всё заметнее тенденция к переусложнению. Особенно выносит система констант/инвариантов. А тут ещё и immutable какой-то добавить собираются...
Ещё зарезервировано ключевое слово macro и были обещания сделать поддержку работы с AST-деревом программы посредством макросов a-la Lisp.
Вообщем, если сами разработчики язык не загубят, должно получиться неплохо...
Ну и да, документация, а точнее спецификация оставляет желать лучшего. Вроде как всё понятно, а как копнёшь по-глубже - одни вопросы. Те же спецификаторы для передаваемых параметров в функцию (in/out/inout/ref/lazy/scope), непонятные заморочки с автоматическим преобразованием к делегатам и динамическим замыканиями.
Записан
SASA
Гость
« Ответ #27 : Октябрь 28, 2008, 20:48 »

to Tonal. Что такое миксины?

Цитировать
Язык бессмысленно использовать без нормального отладчика/IDE. Какая разница какие там массивы или модули в самом языке если в случае проблемы ее долго исправлять. О каких миллионах строк кода идет речь когда нет нормальной среды с отладчиком/системой тестирования для поддержки такого проекта.
+1

И ещё.
Язык молодой -> библиотек нема -> всё писать с нуля -> для коммерческой разработки не подходит.
Шарп, например, появился с фреймворком, студией и лейблом Microsoft. Итог – тысячи разработчиков, сотни книг ...

Я выделил следующие плюсы:

1. Обработка исключений (exception handling). Единый стандарт.

2. Генерация документации является единой для всех реализаций языка D.

3. Вложенные функции

4. Автоматическое управление памятью. Полезно.

5. Объявление всех функций-членов классов виртуальными.



офтоп
Как цитировать чужие сообщения?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #28 : Октябрь 28, 2008, 20:50 »

Нажать на "цитировать". Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #29 : Октябрь 28, 2008, 21:50 »

5. Объявление всех функций-членов классов виртуальными.

А что тут позитивного? вызов виртуального метода медленее, чем не виртуального (покрайней мере в С++ так)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: 1 [2] 3 4 ... 8   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 23.