4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
1 | |
О сути организации WinAPI03.04.2013, 15:22. Показов 1637. Ответов 19
Метки нет (Все метки)
Вступление.
Есть такие люди, которые могут довольно сносно понимать иностранный язык, но при этом довольно коряво на нём разговаривать или не разговаривать вообще. В том, что касается WinAPI, я как раз из последних не говорящих... Дело происходит так. Беру VS 2010, запиливаю в проект файл типа windows.h, начинаю пытаться писать, но ловлю себя на том, что не понимаю самих внутренних механизмов, самой идеи организации WinAPI. К примеру, в каких-то статьях используют WinMain(); , в иных - wmain (с последней ясно - это для расширенного набора символов), но не это самое страшное. Страшное - в туче, тьме тьмущей #define'ов, о которых Страуструп пишет, что они в большом количестве есть недостаток программиста, и справедливо это аргументирует, приводя в том числе и случай, когда без оных не обойтись. Проблема в том, что есть тучи примеров WinAPI, но ни один из них не говорит о том, почему именно так, а не иначе, и как это понимать, как это положить в мозги таким образом, чтобы оно легко вынималось. Где-то в сокращениях берут по 3 буквы, где-то по одной, где-то регистр вообще не берут во внимание, а где-то акцентируют им именование... Не говоря при этом о самих принципах построения программ таким образом, чтобы в дальнейшем можно было писать, опираясь только на понимание самой идеи. А между тем, если бы идеи не было, то сами программисты windows совершенно точно не смогли бы создать например C#, кодирование в котором относительно просто по причине довольно продуманной структуры. Они просто терялись бы в собственном коде. Тем не менее, стоит взяться за что-то пониже, поближе к сути - и начинается чехарда... я не въезжаю. MSDN не даёт такую информацию... нагуглить её тоже довольно сложно - тут просто запроса недостаточно... В общем, буду благодарен, если кто-то
1
|
03.04.2013, 15:22 | |
Ответы с готовыми решениями:
19
Напечатать приглашение всем членам на очередное заседание указанной организации. Задается только вид организации, место и время сбора. Виньет каложной сути Докопаться до сути TWindowsMediaPlayer Хочу добраться до сути |
4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
03.04.2013, 15:42 [ТС] | 3 |
0
|
836 / 343 / 67
Регистрация: 20.11.2012
Сообщений: 795
|
||||||
04.04.2013, 19:01 | 5 | |||||
Stranger777, WinAPI это довольно корявый интерфейс с множеством костылей. Во многом из-за требований совместимости версий (так же, как например прикольные форматы сегментных регистров в архитектуре процессоров IA32 с разбросанным по всей структуре полем адреса, например).
WinMain по умолчанию - это вообще точка входа в wincrt library. Можно переопределить и писать хоть EtoMoyaTochkaVhoda()- для студии:
Про дефайны - нужно учитывать, что "родной" язык WinAPI - это Си, а никак не C++.
1
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
11.04.2013, 17:36 | 6 |
А на сами буквы внимания тоже обращают? Идентификаторы, различающиеся регистром, различаются согласно правилам языка.
Добавлено через 2 минуты Это там то? И в сравнении с чем же интересно? С программированием ЭНИАКА кабелями и штекерами? Сложнее. С программированием в двоичных опкодах? Тем более. С кодированием на остальной эзотереке? Она проще даже ассемблера, значит пропасть с решёткой в ту же сторону, но ещё больше. Только решётка по настоящему эзотерична и висит высоко над иерархией сложности. Добавлено через 3 минуты А откуда иначе столько виндоглюков? Добавлено через 2 минуты изучить венгерский с преподавателем-англичанином, не зная английского.
0
|
11.04.2013, 19:25 | 7 |
WhiteP, и почему же он корявый? Совместимость версий работает на Ура.
И что значит "с разбросанным по всей структуре полем адреса" в архитектуре IA-32 ? Да и WinMain это не точка входа в "wincrt library", это точка входа в программу пользователя, как и main. Только первое для GUI приложений, а второе для консольных. Не вводите людей в заблуждение.
0
|
836 / 343 / 67
Регистрация: 20.11.2012
Сообщений: 795
|
|
11.04.2013, 20:41 | 8 |
Работает. Но нельзя назвать Windows API удобным и интуитивно понятным. На мой взгляд. А корявый потому, что это обертка на обертке на обертке. При этом куча ответвлений вроде функ с постфиксом Ex.
Во вложении формат дескриптора сегмента. Биты адреса раскиданы в связи с требованиями совместимости.
Сообщение от lazybiz
1
|
4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
12.04.2013, 01:34 [ТС] | 10 |
Промежуточные итоги неспешных поисков: http://www.charlespetzold.com/books.html - замечательность ссылки состоит в том, что некоторые книги снабжены простыми работающими примерами с исходниками, прямо с сайта, так что полезным может оказаться многим, кроме меня. Глюки - величайшая проблема всех программистов всех времён - есть и в самих компиляторах. Я всегда полагал, что уж это - то, что должно быть выточено идеальнейшим образом, до мельчайших деталей, а оказывается, что генераторы промежуточного кода и разнообразные анализаторы - по словам самих разработчиков оных - во многом полагаются на этакий авось пространных представлений эвристики. Их бин был разочарован, когда при изучении "Книги дракона" наткнулся на такие печальные строки.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
12.04.2013, 12:25 | 12 |
Ой не могу. Прям он ни разу про глюки винды не слышал.
Добавлено через 3 минуты Чего же в лине их нет? Размер не дотянул? Так сокращайте винду. Или разработчиков меньше? А зачем мелкомягких столько понадобилось? Половину перевели бы в прикладное программирование и их было бы меньше. Ах да, они и так сроки срывают. Но почему же у никсописцев нет аналогичных проблем? Может всё таки не в проекте дело, а в команде?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
12.04.2013, 12:30 | 14 |
А что удивляться? Компиляторы пишут те же люди, которые потом учат других писать с глюками.
0
|
Супер-модератор
|
|
12.04.2013, 12:38 | 15 |
"Мадемуазель Бриссар - если к Вам не прижимаются в метро, то это вовсе не означает, что метро в Париже не существует" (С) "Ищите женщину"
Не надо про безглючность ОСей, с этими сказками - в HolyWars, там много слушателей. От темы не отклоняемся...
1
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
12.04.2013, 12:55 | 17 |
Парсеры — да, отточены очень хорошо. Оптимизации полагаются на эвристики. Потому что оптимальная компиляция любого Тьюринг-полного языка — это доказанно неразрешимая задача. Неразрешимая алгоритмически — нельзя составить алгоритм, который бы за конечное время гарантированно делал всё оптимальным образом. Не может машина Тьюринга откомпилировать сама себя. Так же, как арифметика не может доказать непротиворечивость самой себя. Тем не менее, отсутствие общего оптимального решения не мешает находить хоть какие-то решения получше.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.04.2013, 16:38 | 18 |
Допустим. Ну так я и утверждаю, что винда не существует, в другом же месте не прижимаются.
Добавлено через 1 минуту Николас Вирт написал книгу по паскалю, я по ней учился писать. Что не так?
0
|
4 / 8 / 0
Регистрация: 08.02.2013
Сообщений: 52
|
|
14.04.2013, 17:22 [ТС] | 19 |
taras, фраза была употреблена в том смысле, что если ошибки не на поверхности - это не значит, что их нет в принципе. Вообще, как ни старайся, на самом деле большую программу без ошибок написать трудно. Сортировки, массивы и прочая чешуя - это элементарно, но как только попытаешься построить сколько-нибудь богатый набор классов - косяки становятся неизбежными, просто потому, что человек по природе своей не идеален. И один думает - хорошо будет так и это очевидно, а другой - эдак, а в результате у семи нянек дитя без глаза. Та же спецификация PE от Microsoft - поставляется без гарантии полной корректности, хотя казалось бы - достаточно просто не лениться последовательно документировать формат.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
16.04.2013, 07:02 | 20 |
Ну лажа с форматами - это отдельная история, иногда описаловки двух не совместимых форматов одного автора с одним расширением оказываются просто перепутаны, но чтоб это понять, надо открыть хексом, или блокнотом файл, сохранённый оригинальной приладой. Но объясните мне, какое это имеет отношение к проге? Если я в текстовике запишу координаты дачи посреди озера, или реки, так в реале дом на этой даче станет кривым? Читайте исходник, вытаскивайте оттуда все форматы и соглашения. Но в винде даже это не возможно.
Добавлено через 5 минут А чтоб по-настоящему понять WinAPI, надо не зная английского с преподавателем-англичанином изучить венгерский. Иначе идея на языке с явной типизацией давать всему подряд префиксы останется неясной.
0
|
16.04.2013, 07:02 | |
16.04.2013, 07:02 | |
Помогаю со студенческими работами здесь
20
Не могу понять сути алгоритма Не понимаю сути задания и реализацию Убернуб не понимает сути производных Не понимаю сути AObject * (*create)() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |