zorchi ([info]zorchi) wrote,
@ 2009-09-09 10:45:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Логика и пользовательский интерфейс.


Проблема.
В программировании очень важно уметь отделять программирование логики, от оформления интерфейса. Тогда программа становится более гибкой, мы можем поменять внутренние алгоритмы, не изменив внешнего вида, и наоборот, перекроить весь дизайн, не тронув логику.

Проще и, думаю, правильнее начинать с логкики (почему — это отдельный вопрос). И чтобы отвлекаться на внешний вид минимально, учителя начинают с консольных приложений.

Но детям ведь хочется, чтобы их программки ещё и выглядели прилично. Начинают изучать библиотеки пользовательского интерфейса сами или уговаривают учителя. За какое-то время учатся рисовать простенькие формочки, с кнопочками, текстовыми полями, чекбоксами и комбобоксами и начинают программировать. В итоге получаются некие монстры, где нет отдельно расположенной логики, а вся она зашита прямо тут во внешнем виде, объекты и элементы пользовательского управления меняют свойства друг с друга напрямую, вместо того, чтобы использовать посредников и подписчиков. В общем каша.

Потому что, учителя в болшинстве случаев не знают как это правильно делать, как отделять логику от дизайна. А дети, понятно, этого тоже не знают, но в болшинстве случаев они даже не понимают, что это надо делать. Просто доходят до какого-то момента, когда поддерживать свою программу уже не могут, но не понимают, почему, а объяснить некому. Бросают её и начинают другую. И всё повторяется по новой.

Даже если учитель всё это знает, то проконтролировать, чтобы у детей в коде всё было нормально и сделать так, чтобы они всё это почувствовали, очень сложно.

Вариант решения.
И тут нам на помощь приходят web-приложения, где логика выносится на сервер, а на клиенте остаётся только пользовательский интерфейс. Тогда логика от дизайна отделяется не какими-то принципами, а вполне конкретно. Их даже писать нужно на разных языках.

Серверная часть решает задачу и выдаёт ответ в минималистическом виде для передачи клиенту. А клиент, наоборот, совсем не думает о каких-то задачах, а думает только о том, как это отобразить. И дети естественным образом привыкают к тому, как отделять view от logic. Ура!



Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…