Я, можно сказать, программист "старой школы" - окончил МГУ в 1980
Уточню, что я имел ввиду "старую школу" стран СНГ. На западе зачастую учат нормально. На русском языке литературы по хорошему программированию аццки мало.
ООП безусловно полезно во многих случаях. Например, для GUI.
Типичнейший пример ситуации, где ООП особенно не в тему - это как раз GUI, и единственная причина его здесь популярности - это массовая доступность дешёвых дрессированных кодеров, которые, кроме свистоперделок, ничего нормального написать не могут. Эрик Реймонд об этом писал.
Между тем перед вашими глазами яркий пример не-ООПного GUI - веб-страница. Я же предпочитаю Tcl/Tk.
автор поставил целью написать транслятор ассемблера, строго следуя ОО парадигме. Основной класс был "транслятор", иерархия выстроилась головоломная
А ещё можно штаны через голову надевать - тоже очень удобно.
В то же время пора бы вспомнить забытое многими старое. Прежде всего, это принципы защитного программирования, наиболее полно реализованные в языке Паскаль.
С какими "стырами" подходами и с какими "забытыми" языками в сравнении? С фортрано-ассемлерной кашей из GOTO?
Однако, учитывая успехи ОО-подходов, сейчас стоит говорить об ОО Паскале уровня Delphi-7, например.
Вот именно язык Delphi, наряду с Бейсиком - и есть проклятие совдеповской школы недопрограммирования. Подобные языки имеют очень опасное психосемантическое влияние, т.е., проще говоря, их семантика, с присущей ей идеологией, прививает неправильные, кривые, уродливые шаблоны мышления. На эту тему Дейкстра хорошо высказался.
Единственный "успех" ОО-подхода, который мы можем наблюдать - это огромное количество монструозного глючного софта, который разработчики, закопавшись в препроцессорах и прочих костылях, раз в несколько лет вынуждены переписывать с нуля. Терабайты исходников одного и того же функционала, не имеющие даже исторической ценности.
А еще, конечно же, нужны удобные анализаторы исходного кода: для обнаружения больших дублирующих фрагментов, мертвого кода и т.д. Чем проще и систематичнее язык, тем проще сделать такой анализатор и тем лучше он будет работать.
А чем строже семантика языка и ортогональнее система типов - тем больше ошибок выявит сам компилятор, соответственно, тем меньше надобности в анализаторах как таковых.
вспомним, например, yacc и прчие "бизоны"- разработчики языков с удовольствием применяют их для испытания концепции нового языка
Это следствие того, что они не знают более удобных и адекватных средств.
Когда и если AI достигнет таких высот, что пользователь сможет скомандовать компьютеру "напиши мне программу, рещающую следующую задачу...", то такой генератор, может, будет полезен.
Такая команда (или, правильнее сказать, не одна команда, я система инструкций, изложенных простым человеческим языком) называется метапрограммированием, и AI тут совершенно ни при чём (тем более, что для полностью автоматической разработки нужен не ИИ, а ИР).
написать как можно более короткую программу (с применением тех же библиотек), которая воспроизводит ту же ошибку.
И что же делать, если ошибка конструктивная, а не алгоритмическая? Если неправильно выбранное проектное решение, нарушающее элементарные математические принципы (как это часто бывает с сиплюсплюсо-дельфёвым наследованием классов), ставя рабочую систему под угрозу влияния человеческого фактора?