Токсичная фраза №2: «А ты не можешь просто … »
О, эта фраза – одна из моих любимых. Еще раз представьте, что рассказываете кому-то из знакомых историю из своей жизни или описываете какую-то жизненную ситуацию.
И, как в любой хорошей истории, в вашей истории есть конфликт. В ней есть что-то, что главный герой должен преодолеть, чтобы она закончилась хорошо (вне зависимости от того, кто этот главный герой – вы или кто-то еще).
Представьте, что вы говорите что-то вроде: «Знаешь, я так устаю, когда прихожу вечером с работы, а мне нужно еще приготовить ужин для детей, а потом уложить их спать». Понятное дело, что вы говорите это в надежде на понимание и сочувствие нелегкой судьбе героя, но знаете, что получаете в ответ? «А ты не можешь просто попросить своего мужа приготовить ужин, пока ты едешь домой?»
Вы можете нарваться на подобный ответ практически в любой ситуации, когда на что-то жалуетесь:
«Мои сотрудники постоянно ворчат и жалуются, потому что никто из них не хочет работать по выходным».
«А ты не можешь просто сказать им, что будет или так, или никак, а если им не нравится, пусть поищут себе другую работу?»
«Знаешь, я так стараюсь сбросить эти последние три килограмма, но у меня никак не получается это сделать».
«А ты не можешь просто убрать еще больше углеводов из своего рациона и перестать есть после шести вечера?»
Получив вместо внимания и участия этот полубезразличный ответ, вы начинаете закипать внутри, словно чайник, мысленно говоря своему собеседнику: «А тебе не кажется, что будь у меня возможность «просто» сделать это, то мы бы сейчас об этом не разговаривали?»
И еще одна фраза, последняя…
Разработка приложений: уровень абстракции
Что еще отличает Gtk от Qt, так это среда разработки самой библиотеки и целевая среда разработки. Qt написан на C++ и предназначен для разработчиков на этом языке.
Если говорить об ООП и графическом интерфейсе, то объектное программирование, контроль типов в духе C++ и встроенный в язык полиморфизм являются идеальным примером применения теории на практике. Вполне естественно, что современные системы программирования идут «немного дальше» классического C++, дополняя объекты информацией времени выполнения для дополнительных возможностей контроля типов.
Gtk написан на «чистом» С — то есть совершенно без использования классов C++, шаблонов и т.д. Тем не менее, Gtk — объектно-ориентированная система, основанная на вызовах «методов», обратных вызовах, генерации сигналов и регистрации их обработчиков. Этот подход не нов — так же написана, например, и сама Windows, по крайней мере 3.11 (опять это сравнение), и такие объектные системы, как PalmOS, MySQL и Plan9. Во всех перечисленных системах есть объекты, очереди сообщений и средства регистрации реакций на них — но реализовано это не механизмами C++, а в независимой от языка манере.
Как следствие использования C, Gtk — в некоторой мере более оптимизированная, а также более портабельная библиотека, поскольку сообщения, сгенерированные одним языком, могут быть обработаны в процедуре, написанной на другом. С другой стороны, использование стандартных механизмов C++ в Qt дает более мощный высокоуровневый базис для разработки приложений — ведь не зря же эти «классы Бьярна» получили такое распространение.
Затрудняюсь даже сказать, что лучше,— оба метода нашли широкое применение. Один из них чуть быстрее — но зато и более сложен в освоении и использовании. Другой «жирноват» — зато с ним легче управиться.
Единственное, что можно просто констатировать, так это тенденцию, суть которой образно можно свести к следующему: «быстрая разработка превыше оптимизации кода». С этой точки зрения Qt имеет большое преимущество.
История GTK + и Qt
Haarvard Nord и Eirik Chambe-Eng начали разработку Qt в 1991 году. Название, которое произносится как «милый», появилось из-за того, как буква Q выглядела шрифтом Eavcs Haavard, и из-за предыдущего использования буквы t в Xt, X инструментарий уже используется на рабочих столах Unix.
Nord и Chambe-Eng позже стали соучредителем Quasar Technologies, которая стала Throll Tech, затем Throlltech, и теперь существует в другой форме, как The Qt Company.
В 1995 году Throll Tech выпустила исходный код для версии Qt для Linux. Но это не соответствовало определению Free Software Foundation в отношении свободного поскольку людям не разрешалось распространять код, если они вносили какие-либо изменения. Лишь в 2000 году Throlltech предоставил пользователям свободу свободно редактировать и распространять код.
GTK + начинался как GIMP Toolkit, созданный Питером Маттисом в качестве замены существующего интерфейса, используемого в программе манипуляции изображениями GNU. После переписывания инструментарий стал GTK + и был выпущен в 1998 году. В отличие от Qt, у людей была свобода редактировать, изменять и делиться GTK + с самого начала.
Хотя Qt в некотором смысле является более универсальным и адаптируемым инструментарием, сообщество в течение первых лет консолидировалось вокруг GTK +. Стоит также отметить, что некоммерческий фонд GNOME теперь поддерживает GTK +, в то время как публично торгуемая компания The Qt Company ведет разработку Qt. Тем не менее, на данный момент ни один инструментарий не является «более бесплатным», чем другой.
[править] История Gtk
Разработку Gtk начал Питер Маттис (Peter Matthis), ему помогали Спенсер Кимбэл (Spencer Kimball) и Джош Макдональд (Josh Macdonald).
Мариус Вольмер (Marius Vollmer) навел на мысль, как GTK+ должен работать с различными языками программирования.
Ларс Хамман (Lars Hamann) и Стефан Джеске (Stefan Jeske) добавили все возможности в основные элементы управления.
Карстен Хайзлер (Carsten Haitzler) разработал и реализовал первую поддержку тем.
Шоун Амундсон (Shawn Amundson) занимался менеджментом релизов GTK+-1.0 и GTK+-1.2.
Позже, Хавок Пеннингтон (Havoc Pennington) создал элемент управления GtkTextView, основанный на текстовом поле Tk.
Эллиот Ли (Elliot Lee) и Алекс Ларсон (Alex Larsson) написали linux-fb бек’энд (Gtk через фрэймбуфер).
Эрвонн Ченед (Erwann Chenede) добавил многопоточность в GDK и GTK+.
Падрейдж О’браен (Padraig O’Briain) и Билл Ханеман (Bill Haneman) написали ATK и исправили GTK+ для поддержки accesibility (интерфейс для инвалидов).
Ханс Брюер (Hans Breuer) продолжает «контрибьютить» огромные части полезной работы для порта Win32 GTK+ (убитое время — «Майкрософт» не оценит).
Мюррей Камминг (Murray Cumming) и Джеймс Хестридж (James Henstridge) следят за корректной поддержкой различных языков.
Abigail Brady, Sivaraj Doddannan, Dov Grobgeld, Karl Koehler, Theppitak Karoonboonyanan, Noah Levitt, Eric Mader, Roozbeh Pournader и Changwoo Ryu — это лишь некоторые из тех, кто приложился к Pango…
Что является характерным, так это метод, которым развивается Gtk. Основой для тех или иных работ в данном случае не может служить ни распоряжение начальника, ни материальный стимул. Поэтому в качестве «производственного плана» выступают «направляющие» — Guidelines. По мере того, как очередной кто-то захочет прославиться в мире GNU, он может выполнить любую приглянувшуюся ему часть кодирования. Фактически, при этом нет никаких гарантий, что возможность будет когда-нибудь реализована. Например, настраиваемые панели управления или индикатор раскладок клавиатуры могут ждать своей очереди еще очень долго. (Зато реализованы такие «супервозможности», как масштабирование иконок на рабочем столе — ну, что тут можно сказать…)
Аналогичным же образом — то есть в зависимости от хорошего настроения контрибьютеров и мэйнтейнеров — устраняются ошибки и выполняются пожелания пользователей.
Насколько важна разница?
Есть технические различия между GTK+ и Qt, но большинство из них больше интересуют разработчиков, чем кого либо из нас. В наши дни ограничения еще труднее заметить, чем раньше. Благодаря отличной гибкости, многие приложения GTK+ теперь выглядят как дома на рабочем столе Plasma на базе Qt. Некоторые из этих приложений выглядят лучше на плазме, чем в GNOME.
Между тем, вы также можете установить Scribus или VLC на рабочий стол на базе GTK, даже не осознавая, что есть разница за кулисами.
Но небольшие несовместимости появляются время от времени. Приложения могут открывать другое окно выбора файлов, когда вы ищете файл для открытия. Настройки системных тем могут относиться к определенным приложениям, но не к другим. Чем больше вы возитесь с вашим рабочим столом, тем больше причуд может появиться.
В конечном счете, вопрос о том, предпочитать ли вам GTK+ или Qt, сводится к выбору вашего любимого интерфейса рабочего стола и ваших любимых приложений для Linux.
Неопровержимый факт: Hello World
Я не буду тут что-то особо расписывать — все и так ясно: инициализация, создание окна, метки, переподчинение последней и отображение, вход в цикл сообщений. Компилируются Gtk-приложения (а также GDK и так далее) с флагами, поставляемыми утилитой pkg-config:
gcc `pkg-config —cflags —libs gtk+-2.0` hello.c -o hello
#include int main(int argc,char **argv) {
GtkWidget *window;
GtkWidget *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
label = gtk_label_new(«Hello, World!»);
gtk_container_add (GTK_CONTAINER (window), label);
gtk_widget_show(label);
gtk_widget_show(window);
gtk_main();
return(0);
}
История GTK + и Qt
Haarvard Nord и Eirik Chambe-Eng начали разработку Qt в 1991 году. Название, которое произносится как «милый», появилось из-за того, как буква Q выглядела шрифтом Eavcs Haavard и предыдущим использованием буквы t в Xt, X инструментарий уже используется на рабочих столах Unix.
Nord и Chambe-Eng позже стали соучредителем Quasar Technologies, которая стала Throll Tech, затем Throlltech, и теперь существует в другой форме, как The Qt Company.
В 1995 году Throll Tech выпустила исходный код для версии Qt для Linux. Но это не соответствовало определению Free Software Foundation в отношении свободного поскольку людям не разрешалось распространять код, если они вносили какие-либо изменения. Лишь в 2000 году Throlltech предоставил пользователям свободу свободно редактировать и распространять код.
GTK + начинался как GIMP Toolkit, созданный Питером Маттисом в качестве замены существующего интерфейса, используемого в программе манипуляции изображениями GNU. После переписывания инструментарий стал GTK + и был выпущен в 1998 году. В отличие от Qt, у людей была свобода редактировать, изменять и делиться GTK + с самого начала.
Хотя Qt в некотором смысле является более универсальным и адаптируемым инструментарием, сообщество в течение первых лет консолидировалось вокруг GTK +. Стоит также отметить, что некоммерческий фонд GNOME теперь поддерживает GTK +, в то время как публично торгуемая компания The Qt Company ведет разработку Qt. Тем не менее, на данный момент ни один инструментарий не является «более бесплатным», чем другой.
Разработка приложений: уровень абстракции
Что еще отличает Gtk от Qt, так это среда разработки самой библиотеки и целевая среда разработки. Qt написан на C++ и предназначен для разработчиков на этом языке.
Если говорить об ООП и графическом интерфейсе, то объектное программирование, контроль типов в духе C++ и встроенный в язык полиморфизм являются идеальным примером применения теории на практике. Вполне естественно, что современные системы программирования идут «немного дальше» классического C++, дополняя объекты информацией времени выполнения для дополнительных возможностей контроля типов.
Gtk написан на «чистом» С — то есть совершенно без использования классов C++, шаблонов и т.д. Тем не менее, Gtk — объектно-ориентированная система, основанная на вызовах «методов», обратных вызовах, генерации сигналов и регистрации их обработчиков. Этот подход не нов — так же написана, например, и сама Windows, по крайней мере 3.11 (опять это сравнение), и такие объектные системы, как PalmOS, MySQL и Plan9. Во всех перечисленных системах есть объекты, очереди сообщений и средства регистрации реакций на них — но реализовано это не механизмами C++, а в независимой от языка манере.
Как следствие использования C, Gtk — в некоторой мере более оптимизированная, а также более портабельная библиотека, поскольку сообщения, сгенерированные одним языком, могут быть обработаны в процедуре, написанной на другом. С другой стороны, использование стандартных механизмов C++ в Qt дает более мощный высокоуровневый базис для разработки приложений — ведь не зря же эти «классы Бьярна» получили такое распространение.
Затрудняюсь даже сказать, что лучше,— оба метода нашли широкое применение. Один из них чуть быстрее — но зато и более сложен в освоении и использовании. Другой «жирноват» — зато с ним легче управиться.
Единственное, что можно просто констатировать, так это тенденцию, суть которой образно можно свести к следующему: «быстрая разработка превыше оптимизации кода». С этой точки зрения Qt имеет большое преимущество.
Что такое GTK + и Qt?
GTK + и Qt — это наборы инструментов, используемые разработчиками для структурирования внешнего вида и ощущения приложения. Эти наборы инструментов предоставляют кнопки, панели инструментов, ползунки и меню, которые вы видите при использовании приложения.
Изображение предоставлено: Wikimedia Commons
Инструментарий экономит время разработчиков. Вместо того, чтобы кодировать или проектировать размер, форму и внешний вид каждой кнопки, они могут позволить инструментарию позаботиться об этой работе. Это позволяет им сосредоточиться на основных функциях, которые предоставляет приложение, таких как редактирование документов или воспроизведение музыки.
Почему GNOME?
Немного остановимся на вопросе, почему компания Red Hat приняла решение использовать GNOME в качестве оболочки по умолчанию.
Вопрос довольно сложный: Красные Шапки являются коммерческой организацией, которая внедряет бесплатный Linux в мир бизнеса. Типичный покупатель Red Hat — это руководитель коммерческой компании, желающий использовать и разрабатывать коммерческие приложения, но не желающий платить лицензионные отчисления в какой-либо форме, кроме «стоимости носителей» и небольшого ревеню создателям дистрибутива, в основном за поддержку. А поскольку коммерческое использование уже выходит за те рамки, до которых простирается «Free License» от Trolltech, то RH правильно делает, что не распространяет Qt там, где за это нужно платить.
Как результат — KDE не включается во всякие «RH Pro Edition».
С другой стороны, у создателей KDE есть серьезные намерения портировать KDE под Gtk. Основной аргумент: KDE в основном представляет философию пользовательского интерфейса и не связан со средой разработки. Кроме того, в последнее время часто появляются сведения о «мультиплатформенных» разработках — имеется в виду, что разработчики используют в одной и той же программе и Qt (KDE), и Gtk. В принципе нет ничего, что делало бы невозможным такой вариант — в, частности использование GDK предоставляет значительно больше возможностей для обработки графики, чем соответствующие объекты Qt.
[править] Разработка приложений: уровень абстракции
Что еще отличает Gtk от Qt, так это среда разработки самой библиотеки и целевая среда разработки. Qt написан на C++ и предназначен для разработчиков на этом языке.
Если говорить об ООП и графическом интерфейсе, то объектное программирование, контроль типов в духе C++ и встроенный в язык полиморфизм являются идеальным примером применения теории на практике. Вполне естественно, что современные системы программирования идут «немного дальше» классического C++, дополняя объекты информацией времени выполнения для дополнительных возможностей контроля типов.
Gtk написан на «чистом» С — то есть совершенно без использования классов C++, шаблонов и т.д. Тем не менее, Gtk — объектно-ориентированная система, основанная на вызовах «методов», обратных вызовах, генерации сигналов и регистрации их обработчиков. Этот подход не нов — так же написана, например, и сама Windows, по крайней мере 3.11 (опять это сравнение), и такие объектные системы, как PalmOS, MySQL и Plan9. Во всех перечисленных системах есть объекты, очереди сообщений и средства регистрации реакций на них — но реализовано это не механизмами C++, а в независимой от языка манере.
Как следствие использования C, Gtk — в некоторой мере более оптимизированная, а также более портабельная библиотека, поскольку сообщения, сгенерированные одним языком, могут быть обработаны в процедуре, написанной на другом. С другой стороны, использование стандартных механизмов C++ в Qt дает более мощный высокоуровневый базис для разработки приложений — ведь не зря же эти «классы Бьярна» получили такое распространение.
Затрудняюсь даже сказать, что лучше,— оба метода нашли широкое применение. Один из них чуть быстрее — но зато и более сложен в освоении и использовании. Другой «жирноват» — зато с ним легче управиться.
Единственное, что можно просто констатировать, так это тенденцию, суть которой образно можно свести к следующему: «быстрая разработка превыше оптимизации кода». С этой точки зрения Qt имеет большое преимущество.
Самая большая ошибка, которую следует избегать при ответе
Надеюсь, приведенные выше советы и примеры дали вам довольно хорошее представление о том, как сформулировать свой собственный ответ.
В заключение, вот пара ключевых ошибок, которых следует избегать:
Во-первых, не говорите чего-нибудь, если это полностью неправда. У вас может возникнуть соблазн сказать что-то, что, по вашему мнению, менеджер по персоналу хочет услышать, например: «Я дружелюбен и общителен». Но правда в том, что работодатель очень хочет с вами познакомиться. И они увидят это насквозь, если вы говорите полную ложь.
Так что будьте искренними и делитесь положительными чертами — в идеале чертами, связанными с их работой, — но не заставляйте себя лгать или быть фальшивым.
Даже если работа кажется подходящей для общительного и шумного человека (например, работа в сфере продаж), они по-прежнему нанимают интровертов и тихих людей! Некоторые из лучших продавцов, которых я встречал за свою карьеру, были интровертами и были отличными слушателями, которые задавали много вопросов, прежде чем начать настоящую «продажу».
Помимо этого, просто убедитесь, что у вас есть готовый ответ. Также ошибочно говорить: «Я не уверен» или «Я не знаю».
Итак, в заключение — отработайте свой ответ дома, используя приведенные выше образцы и рекомендации, и вы будете готовы в любое время, когда интервьюер спросит: «Что бы о вас сказал ваш начальник / коллеги?» или любой из связанных вопросов, которые мы рассмотрели.
Когда они спрашивают: «Как бы вас описали ваши коллеги?» — это не уловка. и не о чем волноваться. Но подготовиться нужно заранее. К счастью, теперь у вас есть шаги для этого!
В результате
В результате — если бы у бабки была репка, то это был бы дедка. То есть: если бы библиотека Gtk была написана на C++, а Qt не была бы защищена лицензиями Trolltech, если бы Qt обладала бы такими же инструментами рисования, как GDK, а Gtk — такой же документацией, как Qt, можно было бы говорить о «тяжелом выборе».
На сегодня же вопрос так не стоит, а стоит вот как: если вам нужно получить быстрое и надежное приложение, если вы не собираетесь использовать различные ObjectCalm’ы и вам не нужно профессиональное рисование (или вы намерены реализовать его самостоятельно) — то вам прямая дорога на сайт Trolltech, искать последнюю версию Qt. Но имейте в виду: за коммерческое использование ребята собирают деньги (за очень коммерческое, однако). А вы зато получите поддержку и другие бонусы. К тому же, помимо графики, Qt еще много чего умеет.
Но если вы убежденный программист на ObjectXLAM (условный Объектный Хлам, не пытайтесь найти по нему мануал), любите свободную тусовку хиппи, бесплатные пирожки на собачьем пуху, а также ориентирование на местности без компаса — счастливого пути на сайт gtk.org, там вы будете как дома.
История Gtk
Разработку Gtk начал Питер Маттис (Peter Matthis), ему помогали Спенсер Кимбэл (Spencer Kimball) и Джош Макдональд (Josh Macdonald).
Мариус Вольмер (Marius Vollmer) навел на мысль, как GTK+ должен работать с различными языками программирования.
Ларс Хамман (Lars Hamann) и Стефан Джеске (Stefan Jeske) добавили все возможности в основные элементы управления.
Карстен Хайзлер (Carsten Haitzler) разработал и реализовал первую поддержку тем.
Шоун Амундсон (Shawn Amundson) занимался менеджментом релизов GTK+-1.0 и GTK+-1.2.
Позже, Хавок Пеннингтон (Havoc Pennington) создал элемент управления GtkTextView, основанный на текстовом поле Tk.
Эллиот Ли (Elliot Lee) и Алекс Ларсон (Alex Larsson) написали linux-fb бек’энд (Gtk через фрэймбуфер).
Эрвонн Ченед (Erwann Chenede) добавил многопоточность в GDK и GTK+.
Падрейдж О’браен (Padraig O’Briain) и Билл Ханеман (Bill Haneman) написали ATK и исправили GTK+ для поддержки accesibility (интерфейс для инвалидов).
Ханс Брюер (Hans Breuer) продолжает «контрибьютить» огромные части полезной работы для порта Win32 GTK+ (убитое время — «Майкрософт» не оценит).
Мюррей Камминг (Murray Cumming) и Джеймс Хестридж (James Henstridge) следят за корректной поддержкой различных языков.
Abigail Brady, Sivaraj Doddannan, Dov Grobgeld, Karl Koehler, Theppitak Karoonboonyanan, Noah Levitt, Eric Mader, Roozbeh Pournader и Changwoo Ryu — это лишь некоторые из тех, кто приложился к Pango…
Что является характерным, так это метод, которым развивается Gtk. Основой для тех или иных работ в данном случае не может служить ни распоряжение начальника, ни материальный стимул. Поэтому в качестве «производственного плана» выступают «направляющие» — Guidelines. По мере того, как очередной кто-то захочет прославиться в мире GNU, он может выполнить любую приглянувшуюся ему часть кодирования. Фактически, при этом нет никаких гарантий, что возможность будет когда-нибудь реализована. Например, настраиваемые панели управления или индикатор раскладок клавиатуры могут ждать своей очереди еще очень долго. (Зато реализованы такие «супервозможности», как масштабирование иконок на рабочем столе — ну, что тут можно сказать…)
Аналогичным же образом — то есть в зависимости от хорошего настроения контрибьютеров и мэйнтейнеров — устраняются ошибки и выполняются пожелания пользователей.
Что такое GTK + и Qt?
GTK + и Qt — это наборы инструментов, используемые разработчиками для структурирования внешнего вида и ощущения приложения. Эти наборы инструментов предоставляют кнопки, панели инструментов, ползунки и меню, которые вы видите при использовании приложения.
Инструментарий экономит время разработчиков. Вместо того, чтобы кодировать или проектировать размер, форму и внешний вид каждой кнопки, они могут позволить инструментарию позаботиться об этой работе. Это позволяет им сосредоточиться на основных функциях, которые предоставляет приложение, таких как редактирование документов или воспроизведение музыки.
Что такое GTK+ и Qt?
GTK+ и Qt – это наборы инструментов, которые разработчики используют для структурирования внешнего вида и ощущения приложения. Эти наборы инструментов предоставляют кнопки, панели инструментов, ползунки и меню, которые вы видите при использовании приложения.
Инструментарий экономит время разработчиков. Вместо того, чтобы кодировать или проектировать размер, форму и внешний вид каждой кнопки, они могут позволить инструментарию позаботиться об этой работе. Это позволяет им сосредоточиться на основных функциях, которые предоставляет приложение, таких как редактирование документов или воспроизведение музыки.
Неопровержимый факт: Hello World
Я не буду тут что-то особо расписывать — все и так ясно: инициализация, создание окна, метки, переподчинение последней и отображение, вход в цикл сообщений. Компилируются Gtk-приложения (а также GDK и так далее) с флагами, поставляемыми утилитой pkg-config:
gcc `pkg-config —cflags —libs gtk+-2.0` hello.c -o hello
#include int main(int argc,char **argv) {
GtkWidget *window;
GtkWidget *label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
label = gtk_label_new(«Hello, World!»);
gtk_container_add (GTK_CONTAINER (window), label);
gtk_widget_show(label);
gtk_widget_show(window);
gtk_main();
return(0);
}