Re[5]: Win API
От: Tilir Россия http://tilir.livejournal.com
Дата: 04.04.12 05:47
Оценка: +2
Здравствуйте, FR, Вы писали:

FR>Не факт, вот прямо сейчас пишу на wxWidgets под win/linux и в основном внутри GTK и иногда для тестирования

FR>WinAPI в другие дни наоборот.

Я разумеется имею в виду целевое программирование под винду. Кроссплатформенная разработка -- совсем другой коленкор, вы лишаетесь части возможностей приобретая часть выгод и реальный кроссплатформ требует отдельного обсуждения.
Re[3]: Win API
От: о_О
Дата: 04.04.12 06:00
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>
MTD>#include <QtGui>

MTD>int main(int argv, char **args)
MTD>{
MTD>    QApplication app(argv, args);

MTD>    QWidget window;
MTD>    window.show();

MTD>    return app.exec();
MTD>}
MTD>


MTD>Теперь, чисто академический интерес, как это будет на WinAPI?


сравнил жопу с пальцем
Re[4]: Win API
От: MTD https://github.com/mtrempoltsev
Дата: 04.04.12 06:04
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Выигрыш на helloworld это то, с чего как раз и начинается большинство евангелистских книг по новым прекрасным библиотекам (вот кстати Qt как-то прошла мимо меня, что удивительно). Да, helloworld на WinAPI сложен. Но часто ли вы пишете helloworld? Если да -- возьмите готовый шаблон


Хорошо, усложним пример. Добавим меню с пунктом Help->About, при вызове которого будет показам месседж бокс и при наведении на который будет показана подсказка в статус баре:

#include <QtGui>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow()
    {
        createActions();
        createMenus();
    }

private slots:
    void about()
    {
        QMessageBox::about(this, 
            tr("About Menu"),
            tr("bla-bla"));
    }

private:
    void createActions()
    {
        aboutAct = new QAction(tr("&About"), this);
        aboutAct->setStatusTip(tr("Show the application's About box"));
        connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
    }

    void createMenus()
    {
        helpMenu = menuBar()->addMenu(tr("&Help"));
        helpMenu->addAction(aboutAct);
    }

    QMenu *helpMenu;

    QAction *aboutAct;
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MainWindow window;
    window.show();

    return app.exec();
}


Теперь, чисто академический интерес, как это будет на WinAPI?

P.S. Хорошая у тебя была компания, если позволяла тебе за свои деньги заниматься ерундой. По моему опыту написание гуя на WinAPI делает разработку очень долгой, бажной и в результате получается убогий интерфейс (поди все окошки у тебя с фиксированными размерами?), не говоря уже про привязку строго к винде.
Re[6]: Win API
От: FR  
Дата: 04.04.12 06:05
Оценка:
Здравствуйте, Tilir, Вы писали:

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


Если брать целевое программирование под винду и прикладной код на C++ то писать на чистом WinAPI
также бессмыслено, так как все возможности никогда практически не требуются, а скорость разработки
существенно падает.
Re[2]: Win API
От: white_znake  
Дата: 04.04.12 09:21
Оценка: 7 (2) +1 :)
Здравствуйте, Tilir, Вы писали:

T>А что кроме WinAPI?



T>Шли годы. Я устроился на свою вторую работу (на первой я писал ПО для высокоточного оружия под микроконтроллеры и о Windows только книжки читал, а вот вторая была более высокоуровневой) и там пришлось осваивать прекрасную новаторскую объектно-ориентированную библиотеку VCL для Borland C++ Builder. Я плевался и вставлял где мог код на чистом WinAPI. Работало от этого неколько лучше.


T>Шли годы. VCL уходило в прошлое и я освоил прекрасную новаторскую объектно-ориентированную библиотеку MFC. Заодно кстати неплохо выучил COM к которому прилагалась не менее прекрасная но уже с примесбю метапрограммирования билиотека ATL. К ней же паровозиком пошла WTL.


T>Кто не знает какая дрянь эта WTL тем сильно повезло в жизни.


T>Да, писал я разумеется всё на том же WinAPI, если вы понимаете о чём я


T>А ваши выскоуровневые фигни оставьте крысам и тараканам. OWL они уже доели, я надеюсь.


Еще в школе, я освоил quick sort сортировку. Шли годы. Появлялись разные библиотеки: STL, Boost, .Net, но я предпочитал писать свои велосипеды.
Зачем изучать, что-то новое, когда алгоритм quick sort — он и в африке quick sort

В действительности программист должен понимать как работает Windows на уровне API, о том, что есть окна, очередь обработки оконных сообщений, связанных с окном и т.д., но писать на WIN API, это все равно, что писать свои велосипеды для сортировок, списков, массивов и т.д. Т.е. программист должен понимать и уметь самому написать алгоритм сортировки, реализовать список и т.д., но делать это в промышленном коде — это нонсенс!!! Программист должен развиваться, если лень развиваться, значит должен идти в поддержку старых проектов.

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

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

P.S. Но вы продолжайте в том же духе — именно за счет Вас, может чуть менее опытная, но умеющая пользоваться последними достижениями в своей области молодежь будет получать повышение
Re[5]: Win API
От: Stanislav V. Zudin Россия  
Дата: 04.04.12 09:36
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Здравствуйте, Tilir, Вы писали:


T>>Выигрыш на helloworld это то, с чего как раз и начинается большинство евангелистских книг по новым прекрасным библиотекам (вот кстати Qt как-то прошла мимо меня, что удивительно). Да, helloworld на WinAPI сложен. Но часто ли вы пишете helloworld? Если да -- возьмите готовый шаблон


MTD>Хорошо, усложним пример. Добавим меню с пунктом Help->About, при вызове которого будет показам месседж бокс и при наведении на который будет показана подсказка в статус баре:


О! Сам Б-г послал тебя мне в лапы
Раз уж заговорили о QT... Я некоторое время тому назад задавал вопрос
Автор: Stanislav V. Zudin
Дата: 18.08.11
в профильном форуме, он остался без ответа.
Не сочти за труд, черкни пару строк.

А мы тем временем обсудим достоинства WinAPI
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Win API
От: Sash_xp  
Дата: 04.04.12 10:34
Оценка:
Здравствуйте, white_znake, Вы писали:

_>P.S. Но вы продолжайте в том же духе — именно за счет Вас, может чуть менее опытная, но умеющая пользоваться последними достижениями в своей области молодежь будет получать повышение


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

А тем временем, копятся тонны кода, написанные на уже немодных фреймворках, которые некому поддерживать. А кому еще охота копаться в "говне мамонта".
Re: Win API
От: okman Беларусь https://searchinform.ru/
Дата: 04.04.12 10:42
Оценка: +2
Здравствуйте, Крокотук, Вы писали:

К>Всем известно, какие крупные компании требуют знание Win API. Ну вот за 10 лет я редко сталкивался с необходимостью писать на чистом Win API. Это либо кросс-платформенная библиотека, либо какая-то обертка. Даже сложно представить, как можно использовать эти сишные ф-ии с десятью параметрами каждый день. Это такая изощренная форма мазохизма?


От специализации сильно зависит. Я вот тоже в клепании GUI с помощью Win32 API не вижу
никакого смысла, особенно когда есть готовые библиотеки и средства разработки.
Голый Win32 API, конечно же, ужасен, не представляю, как можно на нем что-то написать,
не создав где-нибудь утечки дескрипторов или памяти, да и вообще неудобно это все.

А вот использовать легкие и безопасные обертки/фасады в стиле C++ — самое то.
Помнится, на таких вот обертках я как-то написал многопоточный HTTP Proxy на IOCP, с
фильтрацией, кэшированием, распаковкой содержимого и резкой запрещенного контента.
И ничего, в три месяца уложился, медленно поспешая. Причем сам код очень даже симпатичный,
хотя это лишь тонкая прослойка между классами C++ и рудиментарными интерфейсами ОС.

У тех, кто долго пишет на низком уровне, со временем появляются целые коллекции
подобных оберток, и потом писать "на Win32 API" неожиданно оказывается легко и удобно.

Если копнуть глубже, компании требуют знание Win32 API не для того, чтобы на нем писать, а
скорее для того, чтобы оценивать понимание кандидатами низкоуровневых вещей и работы
операционной системы. Трудно представить, как может работать в том же Kaspersky Lab человек,
не знающий и никогда не работавший с Win32 API.
Re[6]: Win API
От: MTD https://github.com/mtrempoltsev
Дата: 04.04.12 10:44
Оценка:
Здравствуйте, Stanislav V. Zudin, Вы писали:

SVZ>Не сочти за труд, черкни пару строк.


Чирканул.

SVZ>А мы тем временем обсудим достоинства WinAPI


Полный вперед
Re[4]: Win API
От: MTD https://github.com/mtrempoltsev
Дата: 04.04.12 10:46
Оценка:
Здравствуйте, Sash_xp, Вы писали:

S_>Только молодежь (теперь уже бывшая), после изучения нескольких поколений библиотек сильно расстроится от того, что с выходом каждой новой библиотеки, она оказывается наравне со вчерашними студентами — и тем, и другим требуется быстро ее изучить.


Юристам и бухгалтерам еще сложнее и ничего
Re[3]: Win API
От: Философ Ад http://vk.com/id10256428
Дата: 04.04.12 10:57
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Вы абсолютно точно знаете что этот код делает?

Всегда ли будет ли работать вот такое:
#include <QtGui>

int main(int argv, char **args)
{
   QApplication app(argv, args);

   for (int i=0; i<64*1024+1; i++)
   {
   QWidget window;
   window.show();
   }
   return app.exec();
}


ЗЫ: QT не знаю, на цпп не пишу.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Win API
От: MTD https://github.com/mtrempoltsev
Дата: 04.04.12 11:04
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Всегда ли будет ли работать вот такое:


Значительно интересней, будет ли всегда работать такое:


9 / 0
Re[7]: Win API
От: Stanislav V. Zudin Россия  
Дата: 04.04.12 11:12
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Здравствуйте, Stanislav V. Zudin, Вы писали:


SVZ>>Не сочти за труд, черкни пару строк.


MTD>Чирканул.

Спасибо.

SVZ>>А мы тем временем обсудим достоинства WinAPI


MTD>Полный вперед

В соседних сообщениях драка виртуальными табуретками уже в разгаре
_____________________
С уважением,
Stanislav V. Zudin
Re[5]: Win API
От: Философ Ад http://vk.com/id10256428
Дата: 04.04.12 11:26
Оценка:
Не катит, в своём посте я предполагал, что под QWidget скрывается "окно".
В это системное ограничение далеко не один пионер и не по одному разу упирался.

Кстати, сколько калькуляторов вы можете запустить на своей системе?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[6]: Win API
От: MTD https://github.com/mtrempoltsev
Дата: 04.04.12 11:29
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>Не катит, в своём посте я предполагал, что под QWidget скрывается "окно".

Ф>В это системное ограничение далеко не один пионер и не по одному разу упирался.

Не знаю, я не пионер, за приложение с количеством окон более двух отрывал бы руки.

Ф>Кстати, сколько калькуляторов вы можете запустить на своей системе?


Мне одного хватает.
Re[7]: Win API
От: Философ Ад http://vk.com/id10256428
Дата: 04.04.12 11:32
Оценка: +3 :)))
Здравствуйте, MTD, Вы писали:

MTD>Не знаю, я не пионер, за приложение с количеством окон более двух отрывал бы руки.


можете запустить Spy++ и оторвать себе руки
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Win API
От: white_znake  
Дата: 04.04.12 15:36
Оценка:
Здравствуйте, Sash_xp, Вы писали:

S_>Здравствуйте, white_znake, Вы писали:


_>>P.S. Но вы продолжайте в том же духе — именно за счет Вас, может чуть менее опытная, но умеющая пользоваться последними достижениями в своей области молодежь будет получать повышение


S_>Да, так и есть.

S_>Только молодежь (теперь уже бывшая), после изучения нескольких поколений библиотек сильно расстроится от того, что с выходом каждой новой библиотеки, она оказывается наравне со вчерашними студентами — и тем, и другим требуется быстро ее изучить. Только вот лениво это изучать очередную новую библиотеку, на смену которой снова придет другая. Тут и приходится искать свои конкурентные преимущества в чем-то другом, более стабильном.

Так опыт как раз и помогает быстрее изучить новую библиотечку, новый подход. Ведь все новое, это просто эволюция давно известных практик и библиотек.
Хотя, переход на использование ФЯ, если ты их не использовал ранее, не такое легкое дело
Re[5]: Win API
От: Крокотук  
Дата: 04.04.12 16:13
Оценка:
Здравствуйте, white_znake, Вы писали:

S_>>Да, так и есть.

S_>>Только молодежь (теперь уже бывшая), после изучения нескольких поколений библиотек сильно расстроится от того, что с выходом каждой новой библиотеки, она оказывается наравне со вчерашними студентами — и тем, и другим требуется быстро ее изучить. Только вот лениво это изучать очередную новую библиотеку, на смену которой снова придет другая. Тут и приходится искать свои конкурентные преимущества в чем-то другом, более стабильном.

_>Так опыт как раз и помогает быстрее изучить новую библиотечку, новый подход. Ведь все новое, это просто эволюция давно известных практик и библиотек.

Согласен, скорость изучения новых библиотек у опытного прогера не сравним со студенческим. Другое дело, что у студентов упертость бывает на порядок выше.
Re[7]: Win API
От: Tilir Россия http://tilir.livejournal.com
Дата: 04.04.12 19:15
Оценка: 1 (1)
Здравствуйте, FR, Вы писали:

FR>Если брать целевое программирование под винду и прикладной код на C++ то писать на чистом WinAPI

FR>также бессмыслено, так как все возможности никогда практически не требуются, а скорость разработки
FR>существенно падает.

Скорость это сложная и нелинейная функция. Вход "от hellowrold и чуть дальше" проще у обёрток. Но начиная от некоего размера проекта, ситуация выравнивается. А потом начинают играть роль какие-нибудь неочевидные кишки и любитель высокоуровневого счастья сталкивается с реальным миром. Дальше всё зависит от общего профессионализма и тщательности проработки предметной области, от инструмента уже в совсем небольшой степени. Так что исходно проще брать один знакомый подход, чем учить каждые полгода новый. Кривая входа чуть более пологая, зато без сюрпризов на дальних дистанциях.
Re[3]: Win API
От: Tilir Россия http://tilir.livejournal.com
Дата: 04.04.12 19:20
Оценка: +1 :)
Здравствуйте, white_znake, Вы писали:

_>Еще в школе, я освоил quick sort сортировку. Шли годы. Появлялись разные библиотеки: STL, Boost, .Net, но я предпочитал писать свои велосипеды.

_>Зачем изучать, что-то новое, когда алгоритм quick sort — он и в африке quick sort

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

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