Тут вот
http://occuserpens.livejournal.com/700387.html?thread=3501027#t3501027
возник интересный вопрос, а есть ли какие-то способы избавиться от Inversion of Control в случае GUI, то есть НЕ писать код как обработчик событий от мыши, клавиатуры и прочего, где каждое новое событие влетает в одну и ту же функцию, что напрочь гробит всякую структурность кода и его maintainability.
Т.е. вот функцию scanf уже просто так не вызовешь и НЕ НАПИШЕШЬ, ибо сначала может нажаться клавиша клавиатуры, потом мышки, ну и вообще сначала вобьют буковку в одно окошко, а потом в другое.
Хотелось бы, тем не менее, писать код GUI более вменяемо, чем это предлагают книги а-ля Петзольд, в идеале - просто в виде обычного линейного кода, или хотя бы в виде фрагментов линейного кода большей связности, чем просто в тупом обработчике событий, написанном как конечный автомат.
Вопрос - есть ли подобные разработки?
http://occuserpens.livejournal.com/700387.html?thread=3501027#t3501027
возник интересный вопрос, а есть ли какие-то способы избавиться от Inversion of Control в случае GUI, то есть НЕ писать код как обработчик событий от мыши, клавиатуры и прочего, где каждое новое событие влетает в одну и ту же функцию, что напрочь гробит всякую структурность кода и его maintainability.
Т.е. вот функцию scanf уже просто так не вызовешь и НЕ НАПИШЕШЬ, ибо сначала может нажаться клавиша клавиатуры, потом мышки, ну и вообще сначала вобьют буковку в одно окошко, а потом в другое.
Хотелось бы, тем не менее, писать код GUI более вменяемо, чем это предлагают книги а-ля Петзольд, в идеале - просто в виде обычного линейного кода, или хотя бы в виде фрагментов линейного кода большей связности, чем просто в тупом обработчике событий, написанном как конечный автомат.
Вопрос - есть ли подобные разработки?
no subject
Date: 2012-12-02 04:49 am (UTC)http://blog.sigfpe.com/2011/10/quick-and-dirty-reinversion-of-control.html
http://pagesperso-systeme.lip6.fr/Christian.Queinnec/PDF/www.pdf
http://www.slideshare.net/Nathangl/inversion-of-control-containers-vs-handrolled-how-they-compare
no subject
Date: 2012-12-02 04:59 am (UTC)спасибо за ссылки.
no subject
Date: 2012-12-02 05:00 am (UTC)no subject
Date: 2012-12-02 05:04 am (UTC)Или GUI CAD для коррекции разводки печтаных плат?
no subject
Date: 2012-12-02 05:10 am (UTC)no subject
Date: 2012-12-02 05:12 am (UTC)no subject
Date: 2012-12-02 05:31 am (UTC)no subject
Date: 2012-12-02 02:35 pm (UTC)no subject
Date: 2012-12-02 02:06 pm (UTC)Вот вчера только в ленте было.
no subject
Date: 2012-12-02 02:42 pm (UTC)no subject
Date: 2012-12-02 10:05 pm (UTC)В стиле "голого" Win32 а-ля Петцольд с его WinProc(HWND hWnd, MESSAGE msg) никто не пишет уже лет
15(с ужасом смотрит на календарь) 20. Понаписали библиотек контролов, начиная с MFC и заканчивая WPF.А в браузерах WinProc и не было никогда. Там изначально объекты и button.onClick = "javascript:...".
scanf() в этом мире не нужна - в лучшем случае atoi(), которую надо вызывать либо при каждом изменении текста, либо по нажатию кнопочку "поехали".
no subject
Date: 2012-12-02 10:24 pm (UTC)это то же самое. объектная обертка и раутинг сообщений на отдельные объекты - не играет тут существенной роли. Всё равно код становится "пассивным", т.е. должен быть готовым реагировать на события, приходящие в определенной последовательности.
no subject
Date: 2012-12-02 10:28 pm (UTC)Что же касается "пассивности" кода - то это следствие не парадигмы программирования, а устройства среды выполнения. Кнопочки и менюшки, которые пользователь может нажать в любой момент, принципиально отличаются от текстого терминала с его "а теперь введите значения координаты Х". Это, возможно, не очень удобно программисту, зато очень удобно пользователю.
no subject
Date: 2012-12-03 04:25 am (UTC)Что до "пассивности" - так ведь и в консольную аппликацию нажатия клавиш по прерываниям заходят, и в сетевую отдельные байты или отдельные блоки данных опять же вполне асинхронно принимаются.
Т.е. при желании можно себе представить код, где драг мышки анализируется линейно, т.е. непрерывным куском кода, а не куском кода, вызываемым извне по каждому событию от мыши. Такая организация выполнения обеспечивается, например, сопрограммным механизмом ака невытесняющим мультитредом.