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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.