Идея статьи навеяна книгой «Философия Java» Брюса Эккеля, в статье дается мое понимание тем, описанных в книге. Немного истории На заре компьютерной эры написание программ являлось крайне трудоемким процессом. Это было время зарождения самых основ, начало перехода от математических теорий в прикладную плоскость. Язык программирования того времени - язык ассемблера, опирался на архитектуру компьютера, на котором писалась программа. Получалось так, что для решения реальной задачи программисту приходилось провести преобразование всех понятий из прикладной области задачи в область архитектуры компьютера, на котором реализуется решение. Для такого преобразования требуются усилия, оторванные как от непосредственного решения задачи, так и от самого процесса программирования. В результате такого преобразования на свет появляются программы, слабо связанные с прикладной областью, они трудны для понимания и их сложно поддерживать. Вслед за ассемблером возникли языки более высокого уровня, так