Хочешь думать за компилятор -- пиши программу на языке низкого уровня.
Хочешь добираться до типа переменной через наслоения typedef-ов
шаблонов от typedef-ов... -- пиши на языке со строгой типизацией.
И как это я прожил целый год [на Python] без диграмм классов и
диаграмм взаимодействий?.. Ответ -- прекрасно.
Нагромождение ненужной сложности раздражает и вызывает тихие
ругательства.
-- С-скотина, - сказал дубль с выражением.
Конечно,
за
это платят деньги... Но как приятно было увидеть
статью
Joel Spolsky!
(Подчеркнутые места --
мое "творчество".)
But JavaSchools also fail to train the brains of kids to be adept,
agile, and flexible enough to do good software design (and I don't
mean OO "design", where you spend countless hours rewriting your code
to rejiggle your object hierarchy, or you fret about faux "problems"
like has-a vs. is-a). You need training to think of things at multiple
levels of abstraction simultaneously, and that kind of thinking is
exactly what you need to design great software architecture.
You may be wondering if teaching object oriented programming (OOP) is
a good weed-out substitute for pointers and recursion. The quick
answer: no. Without debating OOP on the merits, it is just not hard
enough to weed out mediocre programmers. OOP in school consists mostly
of memorizing a bunch of vocabulary terms like "encapsulation" and
"inheritance" and taking multiple-choice quizzicles on the difference
between polymorphism and overloading. Not much harder than memorizing
famous dates and names in a history class, OOP poses inadequate mental
challenges to scare away first-year students. When you struggle with
an OOP problem, your program still works, it's just sort of hard to
maintain. Allegedly. But when you struggle with pointers, your program
produces the line Segmentation Fault and you have no idea what's going
on, until you stop and take a deep breath and really try to force your
mind to work at two different levels of abstraction simultaneously.
The recruiters-who-use-grep, by the way, are ridiculed here, and for
good reason. I have never met anyone who can do Scheme, Haskell, and C
pointers who can't pick up Java in two days, and create better Java
code than people with five years of experience in Java, but try
explaining that to the average HR drone.
И практически сразу же наткнулся на
пост Steve Yegge. Бывают же совпадения!
Почитал -- и на душе приятно. Теперь можно и помучиться.