В своем посте My Favorite C++ Feature автор говорит, что его любимая фича в С++ - деструкторы. Согласен с ним в это на 100%, особенно вызов деструктора при выходе из области видимости. Использовать подобные конструкции мне доставляет прямо таки эстетическое удовольствие:
Это позволяет писать более читабельный код, не используя лишний раз try-catch. И это как раз то, чего мне сейчас не хватает в Python'e. Хотя, там есть деструкторы (__del__), но не факт, что он вызовется в нужный мне момент.
Кроме деструкторов, в С++ я обожаю шаблоны, но практика показывает, что использование шаблонов усложняет код и увеличивает время сборки проекта.
Вообще, тему С++ фич можно расширить - фичи с использованием С++. Здесь я могу назвать два своих самых любимых паттерна - smart pointer (как раз из-за деструкторов) и visitor (за возможность добавления новой функциональности иерархии классов без внесения изменения в их код и за возможность избежать использование dynamic_cast). А какие ваши самы любимые С++ фичи?
пятница, 11 июля 2008 г.
Любимая С++ фича
Автор: sash_ko на 07:08
Ярлыки: Программизм, C++
Подписаться на:
Комментарии к сообщению (Atom)
7 комментариев:
У Python есть сборщик мусора. Вызывать деструктор вручную -- просто тащить привычки C++ в Python.
Шаблоны в C++ неправильные, так как не позволяют расширять сам язык (как в Scheme).
А остальное это просто симптоматическое лечение родовых травм C++.
У Python есть сборщик мусора. Вызывать деструктор вручную -- просто тащить привычки C++ в Python.
Речь не идет о вызове деструктора в ручную и не об освобождении памяти. В С++ деструктор может автоматизировать выполнение некоторых операций, в Python'e - нет. Тот же код из примера:
def do_something(ds):
try:
ds.open()
#...
ds.commit()
finally:
ds.close()
Простое удобство и ничего более.
Шаблоны в C++ неправильные, так как не позволяют расширять сам язык (как в Scheme).
Отсутствие способности расширять язык - это не критерий для того, что бы утверждать, что шаблоны неправильные. Существует огромное количество задач, в которых этого от них не требуется. Не обязательно резать хлеб скальпелем, для это сойдет обычный кухонный нож :)
А остальное это просто симптоматическое лечение родовых травм C++.
Хоть это и смахивает на холивар (типа: почему С++ кака), но все же интересно, под 'остальным' и 'родовыми травмами' имеется ввиду что-то конкретное или язык в целом?
Кстати в битве C++ vs Python для моего текущего проекта, последний одержал победу ввиду явного преимущества и это неделе сишная часть (в том числе и guiовая) была успешно заменена.
И это как раз то, чего мне сейчас не хватает в Python'e
Возможно Python-овский with то что нужно? Мне кажется, что его использование гораздо нагляднее, чем C++-сный неявный вызов конструктора объекта транзакции при выходе из scope...
О with'e я не знал, надо будет посмотреть, на первый взгляд, как раз то, что надо
2AQUAGNU: прочитал про питоновский with - замечательная штука! Спасибо за посказку.
И в заключении, поoзвольте отметить: пoомогайте друг другу, обращайтесь, если необходимо, за помощью и ведите себя с другими людьми так, как бы вы хoотели, чтобы другие вели себя по отношению к вам.buy viagra
Отправить комментарий