Что GUI C++ создает опцию с самой легкой кривой обучения - VS/Qt/wxWidgets/etc.?

Метод Ньютона с целочисленной арифметикой

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

/**
 * Test if the given number is a perfect square.
 * @param n Must be greater than 0 and less
 *    than Long.MAX_VALUE.
 * @return <code>true</code> if n is a perfect
 *    square, or <code>false</code> otherwise.
 */
public static boolean isSquare(long n)
{
    long x1 = n;
    long x2 = 1L;

    while (x1 > x2)
    {
        x1 = (x1 + x2) / 2L;
        x2 = n / x1;
    }

    return x1 == x2 && n % x1 == 0L;
}

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

10
задан Tristan 27 July 2009 в 16:09
поделиться

10 ответов

Прежде всего, начните с простого. В этой теме много всего. Если вам это сложно, не пытайтесь понять все сразу.

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

Вот список руководств в одном месте, хотя вы, вероятно, их уже видели:

Во-вторых, мне кажется, что вам нужно получить более глубокое понимание концепции программирования графического интерфейса пользователя, а не только конкретной библиотеки. Здесь нет заменителя книги. Я не знаю их всех, но лучшие из них не просто научат вас деталям инструментария, они научат вас общим концепциям и тому, как их использовать. Вот несколько списков для начала (и если у вас есть названия, Amazon и Stack Overflow помогут выбрать один):

В-третьих, воспользуйтесь преимуществами инструментов проектирования (Qt Creator, построение форм VS и так далее). Не начинайте с попытки прочитать весь код, который они генерируют: сначала запустите свои собственные небольшие программы. В противном случае слишком сложно понять, что важно для базовой программы, а что нет. Детали теряются. Как только вы разберетесь с основами, Используйте их в качестве справочника, чтобы узнать, как создавать определенные эффекты. Если вы можете заставить что-то работать в инструментах дизайна, вы можете посмотреть конкретный код, который они генерируют, чтобы иметь возможность попробовать свои собственные рукописные программы. Они очень полезны для промежуточного обучения.

Мне не очень нравится изучать кучу вещей, которые применимы только к самой платформе Qt, а не в более общем смысле.

Я поддерживаю комментарий of GRB здесь: не беспокойтесь об этом. Вам нужно будет узнать много нового о наборе инструментов, независимо от того, какой набор инструментов вы используете. Но вы также узнаете много общего по программированию графического интерфейса пользователя с помощью любого из достойных наборов инструментов, потому что они должны будут охватить много того же. Макеты, события, взаимодействие между виджетами / элементами управления, понимание таймеров - они появятся в любом наборе инструментов графического интерфейса, который вы используете.

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

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

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

12
ответ дан 3 December 2019 в 13:29
поделиться

Что легче всего выучить, на самом деле будет зависеть от того, как вы учитесь лично.

Лично , я считаю, что Qt пока что легче всего выучить. Классы GUI довольно удобны в использовании, но я считаю, что классы, не относящиеся к GUI, превосходны, что позволяет легко избежать множества общих проблем, которые обычно возникают при использовании более простого API. Документация превосходна, IMO, как и книги, примеры и т. Д. Она также очень активно разрабатывается, и в ближайшем будущем появятся несколько новых технологий (например, DeclarativeUI).

I ' Мы обнаружили, что Visual Studio / Windows API / .Net немного сложнее для изучения. Документация по API в MSDN довольно сложна и на самом деле организована не так, как мне кажется интуитивно понятным.

Я пробовал изучать WxWidgets несколько раз, но мне никогда не нравилась документация по API.

Все это мой личный опыт, конечно же, YMMV. Я бы сказал, просто попробуйте их все и посмотрите, какой из них вам больше всего подходит, не помешает попробовать несколько.

12
ответ дан 3 December 2019 в 13:29
поделиться

Как человек, изучивший C ++ через Qt, я могу только сказать, что они очень хорошо работают вместе. Пуристы C ++ (такими, как я стал) найдут в Qt множество вещей, которые им не понравятся (например, препроцессор moc и постоянное отсутствие исключений для сообщений об ошибках), но, оглядываясь назад, Qt предоставил очень нежное введение в C ++ для меня.

И если вы похожи на меня, вы добавляете несколько расширенных библиотек в каждый проект Qt, потому что мы хотим писать «настоящий» C ++, а не смягченная вещь, которую использует Qt :)

7
ответ дан 3 December 2019 в 13:29
поделиться

Я бы предложил wxWidgets. На мой взгляд, это довольно интуитивно понятно и выглядит красиво.

Code :: Blocks был построен с его помощью, так что проверьте это, чтобы увидеть, нравится ли вам графика.

Есть также множество привязок для wxWidgets, такие как wxPython, wxErlang и другие, поэтому, если вы решите отключить C ++, вы можете взять с собой wxWidgets.

5
ответ дан 3 December 2019 в 13:29
поделиться

Я также использую wxWidgets и постоянно использую его для приложений только для Windows (единственный недостаток в том, что wxWidgets печально известен большими размерами файлов .exe, что может быть или не быть проблемой для вас. ). Мне с самого начала показалось, что его очень просто использовать, особенно в сочетании с дизайнером графического интерфейса (лично я использую wxDev-C ++).

Я никогда не использовал Qt, поэтому не могу говорить о его простоте, но сомневаюсь сложность совершенно другого масштаба, чем у wxWidgets. Однако я могу сказать, что независимо от того, какой API вы используете (wxWidgets, Qt, WinAPI и т. Д.), Ваш код будет «привязан» к этой конкретной платформе, поэтому не беспокойтесь, если вы чувствуете, что изучение Qt заблокирует вас платформа Qt (потому что то же самое произойдет с любыми из этих API).

Если вы Тем не менее, если вы работаете исключительно в Windows, вы можете сначала создать несколько простых программ с WinAPI. Таким образом, у вас будет базовое понимание самого нижнего уровня программирования графического интерфейса Windows до того, как вы перейдете на Qt / wxWidgets. Тем не менее, если вы действительно увлекаетесь кроссплатформенным программированием, не беспокойтесь об этом и сразу переходите к Qt / wxWidgets.

5
ответ дан 3 December 2019 в 13:29
поделиться

Я не могу разумно прокомментировать аспект кривой обучения, но быстрый обзор вопросов StackOverflow показывает примерно в два раза больше вопросов Visual C ++, чем вопросов Qt. Вероятно, это означает, что существует большая группа поддержки Visual C ++. Возможно, обучение будет немного легче, если будет больше людей, которые помогут.

2
ответ дан 3 December 2019 в 13:29
поделиться

Независимо от того, что вы выберете, я совершенно уверен, что это будет нелегко и безболезненно.

Сказав это, я знаю, что в некоторых школах используют FLTK ], потому что они считают его относительно простым для изучения. Я никогда его не пробовал.

В повседневной работе я использую WTL, который максимально приближен к системе, но при этом обеспечивает некоторый уровень абстракции по сравнению с чистым Win32. Я не уверен, что считаю его легким в освоении, особенно учитывая отсутствие документации.

2
ответ дан 3 December 2019 в 13:29
поделиться

Я рекомендую программу-конструктор C ++ (ранее известный как Borland C ++ builder) из codegear , которая поставляется с 30 пробной версией. Самое приятное в этом то, что графический интерфейс предоставляет вам компоненты, которые вы помещаете в форму в стиле WYSIWYG и делаете функциональными, добавляя код для обработки запускаемых им событий. Он поставляется с целым набором компонентов прямо из коробки, и вы также можете добавить к нему сторонние компоненты, такие как замечательный ExpressQuantumGrid из devexpress , или написать свои собственные. Он очень мощный, если вы знаете, что делаете, но достаточно интуитивно понятный, чтобы новичок мог написать приложение CRUD для базы данных примерно в 20 строках очень простого кода.

1
ответ дан 3 December 2019 в 13:29
поделиться

Qt - лучший вариант для вас. Это самый простой в освоении, самый элегантный и мощный, и он совершенно бесплатный.

  • Visual C ++: это IDE, но он поставляется с собственной библиотекой графического интерфейса пользователя под названием MFC. MFC - это старая библиотека со множеством причуд, которую сложно изучить и использовать. Многие программисты на C ++ используют его в Windows, потому что он исходит от MS, он быстрый и бесплатный, если вы купите Visual C ++. Поскольку VC ++ является IDE, вы также можете использовать с ним wxWidgets и Qt, хотя в вашем конкретном случае я бы порекомендовал вместо этого Qt Creator.

Кажется, вы экспериментировали с Managed C ++. Не используйте это, даже MS рекомендует использовать Managed C ++ только как связующее звено между C ++ и C #.

  • wxWidgets: Этот виджет был сильным соперником до того дня, когда Qt стал бесплатным для коммерческих проектов. Он всегда был в тени Qt, и известно, что документация не очень хороша, а API не так прост в изучении, как Qt. Кросс-платформенный MFC был бы хорошим способом описать это.

  • C ++ Builder: Borland допустила слишком много ошибок с C ++ Builder и в конечном итоге полностью ушла из бизнеса инструментов разработки. Это был хороший продукт, и я изначально изучал программирование графического интерфейса Windows в одной из первых версий, но я больше не буду его использовать. Есть варианты получше, и это слишком дорого.

0
ответ дан 3 December 2019 в 13:29
поделиться

Поскольку никто еще не упомянул об этом, для полноты картины приготовьте набор инструментов Fox . Это тот, который я использовал в прошлый раз, когда делал любую работу с пользовательским интерфейсом C ++ по собственному желанию. Для этого также существует привязка к Ruby и Python (хотя последний уже давно устарел).

В целом, выбор инструментария для самостоятельной работы сводится к личным предпочтениям

  1. макета. стиль менеджера
  2. стиль регистрации обработчика событий
  3. Насколько естественным выглядит / может выглядеть набор виджетов
1
ответ дан 3 December 2019 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: