Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Преимущество Win Api - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте среду http://www.cyberforum.ru/cpp-beginners/thread360247.html
Посоветуйте интегрированную среду разработки кросплатформенных приложений. Сама среда должна иметь виндузячую версию, поддерживать использование в разрабатываемом приложении сторонних библиотек,...
C++ Как сделать генератор случайных чисел? Привет всем. Возник очередной вопрос за это утро. Как сделать генератор случайных чисел? В учебнике написано так: "Для этого существует функция random(K) - генератор случайных чисел." Учебник... http://www.cyberforum.ru/cpp-beginners/thread360244.html
C++ Чтение из файла
формат файла: text, 200 text2, 180 и т.д.... #include <math.h> #include <stdio.h> struct cars {
Слово array является зарезервированным в Visual Studio 2008? C++
Привет всем. Читаю старую книгу по С++. Там для массива предлагают использовать имя array, например: int array; Но когда я это напечатал, то у меня слово array стало синим: array Как я понимаю,...
C++ Можно ли задать массив, не зная заранее его длину? http://www.cyberforum.ru/cpp-beginners/thread360238.html
Доброе утро всем. Вчера начал читать "главу 4 Массивы". Там предложили 2 варианта объявления массива: 1) неинициализированный int A; 2) инициализированный int A={2,3,5,1}; Я это напечатал,...
C++ классы и объекты в с++ очень прошу помочь написать программу. т.к. в программировании я 0 :( Написать программу, в которой создаются и разрушаются объекты, определенного пользователем класса. Выполнить исследование... подробнее

Показать сообщение отдельно
Bers
Заблокирован
05.10.2011, 12:47
Цитата Сообщение от diagon Посмотреть сообщение
Есть такое понятие как ООП. Можно сделать класс принтер, и уже туда засунуть все необходимое(что и сделано во многих библиотеках).
Но фишка WinAPI в универсальности(а без нее он даром никому не нужен). Т.е. никакого ООП, а следовательно удобства, читабельности, эстетичности и просто юзабильности в нем нет и быть не может. Это как ассемблер - теоретически написать на нем можно все, но практически это неоправданно трудно и глупо. И также, как и код ассемблера, он непереносим. Зато можно использовать библиотеки более высокого уровня, код становиться в 100500 раз лучше(легче сопровождается, быстрее пишется, меньше вероятность допустить ошибку, лучше читается и тд и тд) и при этом компилируется под разными платформами.
ВинАпи - это интерфейс операционной системы. Какая к чорту кроссплатформенность?
Вы понятия не попутали?

И какой к чорту ооп в уже откомпилированном коде?
ООП существует только на этапе разработки. После компиляции никаких классов уже не существует. Приплюснутые классы сначала преобразуются в си-структуры, потом ассемблируются.

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

Поддержка ООП библиотекой - это написание дополнительных классов-обёрток над глобальными функциями, с экспортом методов классов из длл.

По сути - дополнительная работа. Дополнительная нагрузка на весь персонал, как следствие - резкое удорожание стоимости разработки.

Слой винапи - один из наиболее низкоуровневых с точки зрения разработчика целевого проекта.
Если бы Майкрософт обеспечивали бы поддержку ООП, со всеми кастрированными, но более удобными версиями методов - это привело бы:

1. Процедурные языки не поддерживают ООП. И все эти "удобные штуки" прошли мимо сишников-системщиков. Потеря основного сегмента рынка.

2. Резкое удорожание продукта (который к тому же окажется более глючным. Все классы унаследуют косяки самого винапи + добавят свои собственные).

Это не выгодно экономически. Вот этой очевидности вы никак не можете понять. Майкрософт зарабатывает деньги своими продуктами. Виндовс со своей винапи - коммерческий продукт.
И продукт этот создаётся таким образом, что бы его можно было выгодно продать. А не для того, что бы лично вам им было удобно пользоваться.

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

Вы так и не поняли сути модульного программирования: винапи предназначен не для конечного пользователя-программиста. А для разработчиков-инструментальщиков, которые и разрабатывают относительно небольшие, но очень специализированные библиотеки-инструменты, которые и адаптируют громоздкий универсальный интерфейс винапи для решения любых конкретных задач.

Причем библиотека-надстройка над винапи предоставляет решение лишь конкретной задачи. И по сути является более удобной (и более кастрированной) версией самой винапи.

Если вам понадобилось создавать окошко, вы можете реализовать это на винапи, и написать километр кода.

А можете взять глют, и написать несколько десятков строчек.

Но фишка в том, что глют использует лишь часть апи ОС, и может себе позволить добавлять всякие фичи для удобства конечного потребителя. Ведь ей не нужно поддерживать все 100500 винапишных функций. Только те, что отвечают за создание и типовую обработку окна. (строго говоря, инструмент рассчитанный на конечного потребителя обязан быть удобным. Или от него откажутся) .

(я специально опускаю тот факт, что инструментальные библиотеки юзают ограниченный набор АПИ разных осей, с претензией на кросс-платформенность, тем самым расширяя свои сегменты рынка)

Если потом понадобится функционал не предусмотренный самой архитектурой глюта - вам придётся либо менять его на другую библиотеку ( И как следствие - лавинообразные изменения по всему вашему целевому проекту).

Либо написание собственной библиотеки аналога-глют, либо написания адаптера, который преобразует другую библиотеку к интерфейсу глют + позволит юзать доп. плюшки новой библы.

Все это создаст большой гемморой, который приведёт к потерям времени и денег. Обычно ещё на этапе проектирования максимально тщательно определяются требования к используемым инструментам, что бы подобного не произошло.

Если вы разработчик инструментов - вы хорошо знаете винапи, и относительно легко и быстро (дешево) сможете из него собирать любые необходимые инструменты для конечного потребителя: разработчиков целевых проектов.

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

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

Если же Майкрософт сама начнёт шлёпать такие инструменты и внедрять их в собственную винапи, это приведёт к резкому удорожанию их продукта. Что плохо скажется на бизнесе, и пострадают все.

Вот так это можно отобразить графически:

Целевые проекты
|
|
движки типовых проектов <--> бизнес-логика целевых проектов
|
|
набор различных инструментальных библиотек
|
|
АПИ различных ОС, ГАПИ, и тп

Как видите АПИ ОС - наиболее низкий уровень.
Ниже его уже начинаются модули самой ОС.

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

Почитайте Макконелла "совершенный код", почитайте Алана Купера "Психбольница в руках пациентов".
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru