LINUX.ORG.RU

Упоротость event driven programming

 , много мата


0

0

Как запарило меня это событийно ориентированное программирование, просто сил никаких нет. Куда ни пойду, везде одно и тоже. КТО их научил ТАК писать код, а?! Наследие сраного дотнета, чтоле? Макаки генерируют события событиями, вместо того, чтобы писать нормальный структурированный процедуральный код.

Нет, я ничего не имею против нормального евент дривена, типа пришел сигнал — обработай интерапт. Но когда функции вызываются не по нажатию ентера (тоже, вобщем-то евент), а по вызову Reload(), которая вызывается сразу после запуска программы и захардкодено в параметрах стартапа, а потом смотрится, что именно вызывает этот релоад и пукаются и пердолятся тучи евентов по всему коду. Как мне в такой код добавлять функции, которые должны вызываться еще до релоада? Мне надо задисейблить всю эту срань, сделать что-то свое и потом мануально повызывать эту парашу после своих действий.

Извините, наболело.

★★★★

Последнее исправление: unt1tled (всего исправлений: 1)

генери ивент preReload в Reload() :)

kelyar ★★★★★
()
Ответ на: комментарий от Harald

да любой язык в любой программе

эти обезьяны на любом языке, поддерживающем евенты в любом виде, такое делают

unt1tled ★★★★
() автор топика

Псдц, тс - у меня слова дизейблить и мануально вызывают кровь из глаз. Типа «отключить» и «вручную» не проще написать? :D

menangen ★★★★★
()

Перечитал 3 раза. Все что надо сделать до Reload() пишется в той же процедуре/функции где он вызывается. В этом месте «обычная процедурщина» :)

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

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)

Как мне в такой код добавлять функции, которые должны вызываться еще до релоада?

Напиши их вызов до релоада. Ваш кэп.

NightmareZombie
()

при чем тут концепция программирования если тупо дизайн программы говно?

Говно по двум причинам:

- тебе надо сделать что-то до релоад, но релоад тоже должен быть эвент и ты должен иметь возможность подписаться на него, без указания порядка

- релоад не расширяемый - все захардкодено

- ваш релоад контексто зависимый судя по «потом смотрится, что именно вызывает этот релоад» - это даже не клиника, это морг

Из всего вышеназванного связь с event driven только в том что ты хочешь того что концепция хотеть запрещает 8)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Harald

да любой язык в любой программе

эти обезьяны на любом языке, поддерживающем евенты в любом виде (== любой современный язык), такое делают

unt1tled ★★★★
() автор топика

я в принципе не понимаю, откуда пошла эта грязь? было же все вроде нормально, писали функции, их вызывали или писали классы, делали объекты, вызывали члены объектов

я проспал что-то важное? когда началось это повальное евентодрочерство...

unt1tled ★★★★
() автор топика
Ответ на: комментарий от unt1tled

я проспал что-то важное? когда началось это повальное евентодрочерство...

ну да ты спал в универе видимо и теперь не можешь постичь примитивные идеи

Deleted
()
Ответ на: комментарий от Deleted

ну да ты спал в универе видимо и теперь не можешь постичь примитивные идеи

в универе меня учили observer-observable, это единственное, что имело хоть какие-то евенты, еще в qt сигналы и оно нормально все было, без бешенного говна, с которым мне сейчас приходится работать

unt1tled ★★★★
() автор топика

Ну, а что такое событие, по-товоему? Это только то, что дядя назвал событием? То есть, если есть нативное onclick — это событие, а то что происходит в твоей программе — присваивания, изменения состояний объектов, функций, добавления элементов в структуры и т.д. — это не события, по твоему? То есть, каждый раз, когда объект должен отреагировать на какое-либо событие в твоей программе, ты будешь бежать к разработчикам ЯП и просить, чтобы они добавили новое событие в язык?

anonymous
()
Ответ на: комментарий от unt1tled

я в принципе не понимаю, откуда пошла эта грязь? было же все вроде нормально, писали функции, их вызывали или писали классы, делали объекты, вызывали члены объектов

я проспал что-то важное? когда началось это повальное евентодрочерство...

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

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 5)
Ответ на: комментарий от unt1tled

нормально все было

читд, а теперь все непонятно и непостижимо

Deleted
()

Так проблема не в event driven архитектуре, а в головах. Точно так же бывает с паттернами, например - юный поддаван прочитает GoF и начинает херачить ObservableInterfaceSingletonFactoryFacade везде и побольше. Умение проектировать приходит не из книжек, а с жизненным опытом.

Алсо, смысл такой архитектуры изначально был в том, чтобы избежать сильного связывания между компонентами и спагетти-кода. В примере с Reload() ничего плохого не вижу, например. Порядок вызова обработчиков решается явным указанием приоритетов или зависимостей, либо явным указанием порядка в конфиге. Если действительно надо вызывать функции именно до релоада - значит, нужно ещё одно событие до релоада. Либо задуматься, всё ли у вас в порядке с архитектурой.

anonymous
()
Ответ на: комментарий от torvn77

Развивая эту мысль дальше скажу что вот я попросил и мне здесь дали примеры оконных программ.
И то что я попросил именно такие,эвент ориентированные примеры программ есть заслуга учебников для виапи.
И первоначальное изучение этихъ примеров я буду вести через проведение параллели с винапи.

Конечно я уже не вырасту,но ведь у тех кто вырастет может быть тоже самое.
И что бы это изменить надо не просто дать код на обдирание,
а написать учебник который будет у меня формировать нужное вам мышление.
Например мышление винды это взаимодействие основного цикла обработки сообщении
и вызываемой ОС функции отрисовки окна через обмен эвентами.
И не удивительно,что люди начавшие с винАПИ потом будут расширять этот принцип и на другие задачи.

В общем,хотите изменить мир - пишите учебник и прибивайте его на самое видное место.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 2)

КТО их научил ТАК писать код, а?!
событийно ориентированное программирование

Копай глубже - Visual Basic.

devl547 ★★★★★
()
Ответ на: комментарий от devl547

Копай глубже - Visual Basic.

Вот. Тут уже ближе, да. Все, кто пишет такой код, раньше писали на васике.

unt1tled ★★★★
() автор топика

тоесть получается, что это вендопрограммисты так себя ведут... я-то под венду не писал никогда

unt1tled ★★★★
() автор топика
Ответ на: комментарий от PolarFox

Началось в вынде 3.11

То есть, получается, что линукс даже у венды сосет?

anonymous
()
Ответ на: комментарий от gh0stwizard

Ты, может, не так понял. Имеем, например, диалог (дада, гуйня). Я беру и пишу «добавить 2 поля, поместить фокус в поле номер 1 после старта диалога». Все, больше тут ничего не надо.

Адепты венды делают так: добавить поле, присобачить к нему евент, который триггерится когда диалог стартует, этим триггером вызывается процедура Reload, в ней проверяется кто пинает триггер, если поле номер1, то фокус ставится в поле номер 1.

ЗАЧЕМ ОНИ ЭТО ДЕЛАЮТ ААААаааа!!11

unt1tled ★★★★
() автор топика
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от Deleted

при чем тут концепция программирования если тупо дизайн программы говно?

да просто нервов уже не хватает работать с говном от чурок из ПТУ, они везде, от них не уйти

unt1tled ★★★★
() автор топика

Извините, наболело.

По вторникам сеансы психоанализа в толксах

zolden ★★★★★
()

Мне event driven нравится - ещё один способ декомпозировать сложную логику

Debasher ★★★★★
()
Ответ на: комментарий от devl547

Все начиналось с TurboVision еще под DOS. Помянем TEvent.

eabi
()
Ответ на: комментарий от unt1tled
  HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
  // выборка и обработка сообщений
  switch (message)
  {
  case WM_LBUTTONUP:
     // реакция на сообщение
    MessageBox(hWnd, TEXT("Вы кликнули!"), TEXT("событие"), 0);
    break;
  case WM_DESTROY:
    PostQuitMessage(0);  // реакция на сообщение
    break;
  default:  
    // все сообщения не обработанные Вами обработает сама Windows
    return DefWindowProc(hWnd, message, wParam, lParam);
  }
  return 0;
}
anonymous
()

тут в соседней теме упороты анонiмус, его кастани, спроси =) Хотя я не верю, что он хоть строчку полезного кода написал.

anonymous
()
Ответ на: комментарий от anonymous

о чем эту опсосину спрашивать-то? дочитала ли она хотяб до половины хоть одного учебника?

unt1tled ★★★★
() автор топика
Ответ на: комментарий от unt1tled

А зачем читать то? «авторы» ж «них не понимают, пишут какое-то г..но». куда приятнее с голосами в голове. Они правильные вещи говорят. да, user100?

anonymous
()
Ответ на: комментарий от anonymous

HWND LRESULT CALLBACK APIENTRY DLLPROC HRESULT WIN32_LEAN_AND_MEAN !!!

LPWSTR!!

ConvertSecurityDescriptorToStringSecurityDescriptorExW !!!

простите, не сдержался :D

Harald ★★★★★
()
Ответ на: комментарий от yoghurt

Впрочем, все они - вижалбэйсик, борландоподелия - были примерно на одно лицо изнутри.

Вот вижалси с несколько большим порогом вхождения, и мфц в частности, прививали более грамотный подход «модель-вид» изначально.

yoghurt ★★★★★
()
Ответ на: комментарий от unt1tled

Мда, тяжелый случай :) Переписывай как считаешь нужным. ИМХО, событийка тут ни при чем, код аналогичной запутаности можно писать в любом стиле. Вобще, вся гуйня итак событийная, поэтому при создании виджета с привязкой какой-либо функции, последняя является сама по себе коллбеком по соответствующему событию (oncreate, onfocus, etc).

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от anonymous

Могу познакомить с автором научных статей и публикаций, который дает полизать очко своим поклонникам. Расценки нормальные, $500/час. Интеруесует?

anonymous
()
Ответ на: комментарий от unt1tled

я проспал что-то важное?

например, создание Tcl в 1988 году? а может, кое-что ещё более древнее?

хороший у тебя сон, крепкий

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.