(deadsuslik) писал(а):По-моему, в большинстве случаев достаточно: для низкоуровневых задач - C, для высокоуровневых (в т.ч. гуя) - скриптовых языков (я лично предпочитаю Перл).
Действительно, в ряде случаев для низкоуровневых задач достаточно С (или даже ассемблера под конкретный процессор), а для многих высокоуровневых задач вполне можно обойтись скриптовыми языками, скажем, Perl или Python. Однако это возможно далеко не всегда. С++ как раз тем и хорош, что, (при правильном использовании) обеспечивая быстродействие, сравнимое с быстродействием С, он предоставляет удобные инструменты для реализации самых высокоуровневых задач.
(deadsuslik) писал(а):Мне кажется, что популяризация ООП сказывается на качестве софта очень пагубно. Как известно, система тем лучше спроектирована, чем она проще. Когда не можешь хорошо спроектировать архитектуру, без ООП вообще не получится написать серьезный проект - запутаешься. А с ООП кое-как получится. Вот и получается, что занимаются вовсю инкапсуляцией, наследованием и полиморфизмом, вместо того чтобы думать, как можно упростить (улучшить) архитектуру системы.
Да, вы правы, механизмами ОО-парадигмы можно чрезмерно увлечься и даже злоупотребить. Однако это относится к любому языковому инструменту. Действительно, многие программисты, использующие, например, наследование (особенно множественное) и полиморфное поведение, тем самым лишь ухудшили свой проект. Однако можно ли этот факт ставить в укор ОО-подходу? Может, виноваты те программисты, которые используют инструмент, не изучив его как следует?
Что же касается простоты, то объектно-ориентированная парадигма создавалась именно с целью упростить программирование. Архитектура системы действительно должна быть простой, в этом с вами, уверен, согласятся все опытные программисты. Однако понятие "простая архитектура" весьма относительно (я оцениваю простоту по одним критериям, а другой программист - по другим). Каковы критерии простоты на ваш взгляд, уважаемый deadsuslik? И чего, по-вашему, не должно быть в простой системе?