Как Qt сделал студента [человеком]

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



Ранний университет


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


Поиск себя


Первые годы в университете я просто офигевал от изменившейся обстановки. Новые люди, новый режим обучения, новые требования. Закончив школу с золотой медалью, в университете я сразу же скатился на неуверенные четверки. Объем информации зашкаливал, но им не было применения. Начальных знаний по программированию не хватало для заработка, а он был просто необходим — хотелось больше свободы, больше самостоятельности, больше возможностей.


Еще в школе я начал увлекаться WarCraft III, а затем играть онлайн в Battle.net. Так познакомился с несколькими играющими людьми из своего города. Мы общались, играли, устраивали кланвары, в общем довольно весело проводили время, хотя уже тогда игра начала потихонечку увядать, самый расцвет соревновательного времени игры я не застал. Чтобы поддержать интерес к любимой игре, несколько парней из моих знакомых решили организовать турнир, в котором могли принять участие все желающие. Я же вызвался помочь в организации, а именно в расклеивании объявлений о нем на безвозмездной основе.


Сейчас листовка не может не вызывать улыбку, особенно "амбициозный интернет-проект"

(турнир был успешно проведен, а видео с него в 640x480 вызывает дикую ностальгию)


Листовки нужно было физически забрать в офисе одного из ребят, и мне впервые довелось пообщаться с ним лично. Он работал в конторе, базирующейся в здании организации а-ля бизнес-инкубатор, внутри которого были достаточно прикольные и комфортные офисы. Я был очень впечатлен, никогда ранее не видел ничего подобного. В ходе ознакомительной беседы я поинтересовался о том, чем он занимается, как попасть в аналогичное место и как начать зарабатывать — как уже говорил раньше, это была животрепещущая для меня тема. Приятель учился на филолога, соответственно все его советы в той или иной мере касались работы с языком. Он порекомендовал мне начать работать хоть где-то, например в call-центре (что неудивительно, учитывая его профиль). Я его послушался, и даже пособеседовался разок в какой-то конторе — слава Богу меня не взяли :) Еще один приятель зарабатывал по тем временам неплохие деньги дизайнерством — вроде как он рисовал модельки различной мебели в 3D-редакторе, а так же рисовал разнообразные логотипы в Photoshop'e. Каждый кулик свое болото хвалит, так что неудивительно, что этот товарищ порекомендовал мне заниматься дизайнерством :) В эту тему я углубился уже намного сильнее, купил книжку "Photoshop для чайников" (буквально), и прорешал ее от корки до корки, проделав все примеры от начала и до конца. Я реально знал весь Adobe Photoshop CS2.



(та самая книжка и консервативный UI Photoshop CS2)


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


Первые шаги в правильном направлении


Тем временем заканчивался первый курс в университете. На тот момент я знал только самые азы программирования на C (даже не C++) и по-прежнему увлекался Warcraft III. Одним из самых топовых ресурсов в России по этой игре тогда (да и сейчас) был сайт GoodGame.ru. Услышав, что на сайте неким D39 (я его сначала хотел назвать неизвестным волонтером, пока не накопал тему на форуме) создается проект для проведения кастомных игр по варкрафту (нечто вроде Garena или GGC), я тут же решил присоединиться к проекту. На тот момент у него уже много всего было готово — примерный UI, старт игр, матчинг соперников, etc. В ответ на мою просьбу о присоединении D39 поинтересовался моими знаниями, а потом отправил читать доку по WxWidgets. Господи, это был просто китайский. Какие-то непонятные вещи, контролы, циклы событий, а в каждой второй ссылке разбирающиеся люди спорят о том, что лучше — WxWidgets или Qt. Я старался, но абсолютно ничего не понял. Да и проект, как я помню, сам по себе затух, ничего готового релизнуть не получилось. С большим трудом сейчас откопал тему на форуме и даже нашел свой коммент. Жалко скрины все протухли...



(сообщение на форуме о начале разработки)


Еще из примечательного за этот период: в самом конце курса по программированию у нас была задачка на связные списки. Уж не помню почему, но я как-то быстрее всех разобрался в теме, и затем помог выполнить и сдать лабораторку всем в группе. Причем несмотря на пользование Visual Studio, я никогда не пользовался отладкой — прокручивал весь код в голове, а если и отлаживался, то обычными принтами (такая закалка с раннего обучения оказалась очень кстати в будущем, когда перешел в разработку под мобильные ОС/Linux). Оглядываясь сейчас назад я понимаю, что это ценнейший опыт — понять тему чуть-чуть лучше других и затем объяснять им, получая в процессе еще больше знаний. Потом так случилось с курсом по компиляторам, с git'ом и т.д.


Середина университета


Черт его знает, что меня надоумило это сделать, но после первого курса во время летних каникул я от корки до корки прочитал книгу "Объектно-ориентированное программирование в C++" (Лафоре). Точно помню, что посоветовал мне ее приятель, так что не стоит недооценивать общение с другими студентами во время обучения. На чтение и прорешивание всех заданий книги ушел примерно месяц. Благо я уже натренировался работать с книгой в таком формате на "Photoshop для чайников". К началу нового учебного года я подошел во всеоружии. Начавшийся курс по С++ казался элементарным, я периодически задавал лектору нетривиальные вопросы, общался с ним о тонкостях языка, да и вообще в целом один из немногих понимал, что вообще происходит и о чем речь. К экзамену впервые не нужно было готовиться и учить билеты. Это было абсолютно новое, непривычное чувство — всю необходимую для сдачи информацию я знал.


Знакомьтесь — Qt


На текущий момент читающий может задаться вопросом — а причем вообще Qt в названии статьи? :) А я как раз собирался рассказать… Позднее случилось еще одно совершенно случайное, но судьбоносное событие. После одной из практик мы с товарищем засиделись в аудитории. Кажется, мы рисовали какие-то окошки на голом WinAPI, и дико удивлялись тому, сколько всякого кода генерирует Visual Studio в пустом проекте. Когда опомнились, нас уже потихоньку выпроваживал преподаватель, потому как ему нужно было на другую пару. Случился примерно такой диалог (преподаватель и студенты):


П — Так WinAPI это старье беспросветное, на нем уже никто не пишет
С — Да? А на чем пишут сейчас?
П — Ну на Jave и на Qt


Ого! Классно, Qt, я уже слышал про него, надо попробовать, ведь мне столько раз встречалось название этой библиотеки, когда я собирался учить WxWidgets в волонтерском проекте для GG. Дорожки сошлись! С преподавателем на других курсах не встречались, так что он вряд ли узнал, какое сильное влияние на меня оказал этот крошечный диалог.


Как оказалось, на тот момент у меня уже был подходящий уровень знания C++, чтобы освоить первую в своей жизни графическую библиотеку. А дальше было чтение Макса Шлее "Qt 4.8 Профессиональное программирование на C++". Стоит ли говорить о том, что все задания были прорешаны, все примеры кода перенабраны и запущены, а некоторые ради своего интереса модифицированы. Трудно вспомнить точно, сколько в итоге получилось кода, но мне кажется что-то в районе 10к строк. Для студента в начале своего пути это крайне важный опыт.



(прекрасная книжка для самостоятельного изучения Qt)


Где-то через полгода я уже мог сделать абсолютно любую университетскую лаборатурную/курсовик на C++/Qt (когда подразумевалось использование любого удобного инструмента). Программки получались быстрые, симпатичные, с масштабируемым интерфейсом. Помог и предыдущий опыт работы с Photoshop'ом — не ленился нарисовать красивые иконки и поставить их на кнопочки или пункты меню. Спустя некоторое время преподаватели начали это замечать, а затем и давать какие-то нестандартные задачки и курсовые. Их было интереснее делать, а профита с них получалось намного больше. Так, с одним из преподавателей мы решали разные задачки вплоть до последнего курса, конечно же именно в будущем он стал у меня руководителем дипломной работы.


MeeGo


Кажется, в какой-то момент захотелось программировать под мобильные ОС. Шутка ли, тогда смартфоны активно завоевывали рынок, и незнание мобильной разработки казалось большим упущением. Qt под Android тогда еще не было, зато можно было создавать приложения под Symbian^3. Первые мои поделки на этом поприще были очень скромные по функциональности — то ли это был трекер калорий/веса, то ли аналогичная простая утилитка. Кстати программировать предлагалось на QML — возможно лучшее, что получила экосистема Qt за время пребывания под крылом Nokia. Я изучил эту технологию практически сразу после анонса, периодически мысленно хвастаясь мол если меня спросят, сколько у меня лет опыта работы с QML, я смогу ответить в стиле Чака Норииса — все!


Nokia тогда так активно продвигала Qt, что была готова бесплатно раздавать телефоны всем заинтересованным. Да да, программа Qt Ambassador именно это и подразумевала — нужно было всего лишь создать какое-то приложение на Qt (под любую платформу если не ошибаюсь), а затем зарегистрироваться в программе. В общем то времена можно охарактеризовать цитатой из Mr. Robot: “It's an exciting time in the world, exciting time”. За указанные выше нехитрые действия я получил Nokia N9 под управлением MeeGo Harmattan



(Nokia N9 — отличное сочетание железа и программной начинки)


Вау! Новое устройство, новая ОС, и самое главное — можно программировать приложения на Qt. Кстати, SDK для этой платформы мне до сих пор кажется одним из самых лаконичных, зрелых и быстрых в работе среди всех, что были созданы на базе Qt Quick. Разве что Qt Quick Controls 2 может тем же похвастаться.


Окончание университета


К "зрелому" университету все уже было под контролем — я знал несколько языков программирования, подтянул уровень образования с помощью курсов на Coursera'е, без особого труда совмещал учебу с военной кафедрой и периодически получал небольшие деньги за лабораторки/курсовые на Qt. Но, как оказалось, это была еще далеко не вся польза, которую я мог выжать из любимого фреймворка.


Диплом YaD


В 2012 году появился на свет Яндекс.Диск. Мне он был не столько интересен в качестве облачного хранилища, сколько в плане возможности работы с ним по открытому API, базирующемуся на WebDAV. Помнится, прочитал статью и тут же решил попробовать скачать файл программно, на Qt. Буквально 5-7 минут и я уже вижу в консоли содержимое файла hello.txt, который несколькими минутами ранее закинул на сервер. Ух ты, так просто и работает? Я тут же начал накидывать функциональность в свое-мини PoC-приложение, научился выводить список файлов, скачивать выбранный, а потом и загружать. И тут мне пришла ясная идея — а почему бы не написать клиент под MeeGo? Ведь там не будет официального клиента, так как позиции ОС в борьбе с Android и iOS уже тогда были нерадужные. И заодно эту разработку можно было использовать в качестве своей дипломной работы, в очередной раз применив Qt в качестве своей палочки-выручалочки в университете. Клиент я назвал просто и кратко — YaD. Конечно, тему диплома пришлось сделать немного формальной, если не ошибаюсь "Клиент облачного хранилища данных для мобильной ОС MeeGo — YaD". Программировать приложение было намного легче, чем писать пояснительную записку к диплому :)



(несколько скриншотов приложения, позаимствованы из ПЗ)


Я выпустил две версии приложения: платную и бесплатную. В платной была только одна дополнительная возможность — шаринг файлом/ссылкой посредством диалога ОС. Если честно, в бесплатной версии она тоже была, и любой желающий мог ее просто раскомментировать в QML-файле. Кстати приложение довольно долго жило, получило несколько форков (в основном косметических), пользователи давали позитивные оценки (особенно запомнился комментарий, что удалось без проблем закачать файл 1.4Гб — со своим DSL на тот момент я и подумать не мог о таких объемах), когда-то даже висело в топе продаваемых, а некто Nokia Expert даже снял видео на YouTube. В обзоре довольно много времени разбираются прочие системные приложения, почти полностью упущено одно из двух функциональных меню, но все равно было приятно, что кто-то уделил моему диплому время.



(скриншоты ТОПа платных и бесплатных приложений магазина)


Ubuntu Phone


Когда Canonical объявила о создании Ubuntu Phone, моей радости не было предела. К тому времени я уже порядка года или немногим более сидел на Ubuntu в качестве домашней ОС и полностью проникся духом свободного ПО. Кстати, в те времена можно было заказать бесплатный установочный диск Ubuntu. Его честно отправляли по почте в любую глубинку, а ты находил его в почтовом ящике, довольный такому приятному и самое главное бесплатному сувернирчику. Возвращаясь к Ubuntu Phone — компания объявила, что к созданию базовых приложений (таких как калькулятор, календарь, читалка документов и т.д.) будут привлекаться волонтеры из сообщества. Примечательным было то, что в качестве фреймворка для разработки предлагалось использовать Qt. "Вау!",- подумал я,- "кажется мои навыки могут им пригодиться" и ради интереса отправил свою кандидатуру! А потом, будучи на празднике в честь дня рождения подруги, получил официальное приглашение в команду RSS Reader'а. Это был восторг да и только. Ранее я писал об этом в статье. Одной из интересных плюшек участия в этом проекте была возможность заказать себе Nexus 4 в качестве стенда для разработки/тестирования. Конечно же я ей воспользовался — второй телефон кряду забесплатно!



(рисунок актуального на тот момент логотипа Qt в исполнении сестры)


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


Первая работа


В нашем университете многие преподаватели совмещали, собственно, преподавание одновременно с работой в прочих коммерческих организациях. Одна из таких контор была буквально через дорогу от университета. Нет ничего удивительного в том, что самых смышленых ребят из нашего потока позвали туда работать за еду, набираться опыта и знаний. Так я попал на свою первую работу. Разрешалось совмещать учебу в университете — полдня на учебе, полдня на работе. Сразу скажу, что конкретно Qt там заниматься не довелось, однако знание фреймворка более чем пригодилось в более позднем периоде работы. Дело в том, что нам предлагалось разработать графический интерфейс для самобытной ОС, о которой ранее писали на Хабре (если самую малость постараться, можно без труда сопоставить факты и понять о ком именно я говорю). Задача была не из простых. Однако в коллективе из двух опытных системных разработчиков и двух студентов возникло уникальное сочетание знаний, которое помогло с этой задачей справиться. Мой вклад был в знании принципов работы Qt (об отрисовке кастомных контролов Qt Quick в частности) и в глубоком знании особенностей форматов изображений (привет книжке "Photoshop для чайников" из начала статьи). Фреймворк мы делали что называется "с душой", очень круто сработались и по-настоящему подружились.


Забавный факт — видимо я настолько часто трындел про Qt, что даже на приуроченном ко дню рождения компании пиксельарте я стою с табличкой "Qt".



(выдержка из огромного полотна со 150-ю уникально нарисованными человечками)


После университета


Потом было разное — портирование YaD на Ubuntu Phone (и неудачное на Android) с получением за это значка Ubuntu Phone Pioneer, участние в Scope Showdown, создание AMeditation. Но только во время написания статьи я понял, что никогда не программировал на Qt в своей регулярной работе. То ли в маленьком городе было не так много вариантов трудоустройства, а удаленка тогда еще не так была распространена (да и софт-скиллов для нее еще было маловато). То ли я намеренно программировал на Qt только для души, бережно храня эту отдушину в стороне от сроков, дедлайнов, багов на продакшене, etc. Но факт остается фактом — на основной работе меня увлекло в энтерпрайз с его C#/Java/SQL и прочими вещами, которые в университете казались крайне непривлекательными, особенно в свете отличного знания C++/Qt/QML. Решился бы я написать эту статью про Qt, если бы использовал его ежедневно на протяжении лет? Вопрос риторический...


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


Ладно, что-то к концу статьи стало грустновато, давайте исправим — интересуйтесь, увлекайтесь, находите интересные технологии и языки, занимайтесь интересными себе вещами, становитесь профессионалами — и вам обязательно воздастся. Namaste!

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 20

    +1
    П — Так WinAPI это старье беспросветное, на нем уже никто не пишет
    С — Да? А на чем пишут сейчас?
    П — Ну на Jave и на Qt

    Пробовал я писать и на WinAPI, и на wxWidgets, и на Qt, и на Java. В итоге Джаву однозначно побоку, а вот С++ самое оно. Да, долго, да, сложно, да и много еще чего, но интересно и абсолютно никаких ограничений.

    C++ / Qt очень мощная вещь, но иногда нужно чего-нибудь попроще. Следующая, по простоте, конструкция это C++ / wxWidgets. Замечательно, но если желать чего еще проще, то приходим к C++ / WTL (может быть в связке с ATL).

    C++ / WTL это, практически, уровень C++ / WinAPI, только более комфортный для использования. Чем больше я занимаюсь WTL, тем больше он мне нравится. WTL это сверхлегкая библиотека пользовательского интерфейса, все остальное можно получить из опенсорса, например, компьютерное зрение – OpenCV, работа с мультимедиа – SDL / FFmpeg / FFplay, работа с внедряемыми базами данных – SQLite и т.д. и т.п. Так что пока нет даже особой потребности возвращаться к wxWidgets или Qt.

    Лично моя область интересов, как программиста – любителя, это обучающие программы, работающие с мультимедиа и легкие учетные системы, типа современного эквивалента платформы 1С77. Пока все в стадии разработки, но, к счастью, в шею никто не гонит, так что можно получать удовольствие от самого процесса программирования :).
      0

      Насыщенный комментарий, благодарю за развернутый ответ.
      Кстати WinAPI я в итоге тоже подучил на первой работе. Навык потом пригодился на новом месте самым неожиданным образом — починил древнюю и больную проблему с модальностью в гибридном приложении. Гибрид состоял из C# (WinForms) и легаси-Delphi приложений, работающих одновременно и создающих эффект единого приложения. Если интересно, могу рассказать детали.
      А про WTL, к своему собственному удивлению, даже не слышал. Наверное уже окончательно ушел в Linux/Mobile/кроссплатформ, так что было неинтересно.

        +1
        > Если интересно, могу рассказать детали.

        Думаю, вы проделали очень интересную работу, но, к сожалению, перечисленные инструменты (C#, WinForms, Delphi) вне области моих интересов, хотя на уровне общей концепции было интересно послушать.

        > А про WTL, к своему собственному удивлению, даже не слышал.

        Я тоже про нее узнал недавно, года полтора, хотя ему уже порядка 20 лет. Интересная штука для создания легких приложений. Это Майкрософтовский опенсорс, поэтому для кроссплатформенности годится мало, но последнее в моем случае не актуально.

        А так, я тоже собираюсь опубликовать здесь статью по своей текущей программе, когда она будет готова. Она будет работать как собственный видеоплейер по адаптации обучающих видеороликов, например, переделка французско-английских встроенных субтитров (см. замечательные ролики «Easy French» на Ютубе) на французско-русские (с возможностью распознавания текста). Почему именно французский язык? Благодаря ZAZ. Некоторые детали были озвучены при обсуждении алгоритма группировки на форуме математиков dxdy.ru/topic142232.html. Остальные подробности, надеюсь, будут в статье.
      +1
      Эх, помню в универе тоже активно осваивал Qt, даже получил сертификат мобильного разработчика от Intel. Было обидно когда Nokia решила перейти на Windows :(
        0

        Да, Intel в какой-то момент активно продвигал MeeGo, а потом неожиданно слился. В теории как мне кажется могло получиться что-то нишевое вроде Chrome OS.
        Насчет Windows — обидно это не то слово, в итоге потеряли и MeeGo, и Nokia, и хоть какую-то альтернативу дуополии Android/iOS. Я еще надеялся на Ubuntu Phone, но её ядро (SDK, оконную оболочку, etc) делала не та команда, а про управление и вовсе лучше не начинать...

        +1

        Крутая история!

          0

          Спасибо большое! Первый раз писал статью в формате воспоминаний, переживал за результат, в этом свете вдвойне приятно, что Вам понравилось.

          +1
          С Qt познакомился на версии 4.3. До сих пор периодически что-то создаю на Qt. Делал и коммерческие проекты, и для себя. За что обожаю — так это за встроенную качественную документацию в QtCreator. Да и сама IDE тоже нравиться, только в последнее время стала немножко помедленнее, но всё равно по сравнению с другими монстрами крутиться довольно живо.
          Жаль, очень жаль что свернулись OC для которых можно было удобно разрабатывать на Qt. Знаю, что можно и под Android делать приложения на Qt, но, насколько знаю, здесь полно граблей.
            +2
            Начинал свой путь с бэйсика и паскаля в школе (славные времена были, когда на дискете 3.5 вмещались и ДОС и Волков командер и турбо паскаль (90-е годы), в институте сначала (тогда еще Борланд) Делфи, потом Билдер С++, который на работе активно использовал в свое время.

            После института друг «подсадил на линукс», решил использовать Qt как кросс платформенное решение, прикупил Шлее и понемногу штудировал, но проекты на работе были на Билдере и сроки всегда поджимали, поэтому с Qt как-то и не задалось кроме небольших поделок.

            Когда поменял немного направление деятельности даже немного на Lua программировал (очень даже шустрая «вещь» есть относительно удобные GUI).

            В настоящее время на работе иногда необходимо использовать ардуино со всем ее «зоопарком», как хобби развиваю «полуумный дом» (как я его называю).
            Сейчас осваиваю (в свое удовольствие, может на пенсии пофрилансю :-) Python. ESP8266 прекрасно поддерживает Миркопитон, Home Assistant написан на питоне, чтобы вывести данные на PC (виндовс-линукс), телефон или планшет есть прекрасная библиотека Kivy. Поэтому работаю пока в этом направлении в свое удовольствие.

            Спасибо топикстартеру за позитивную статью, извините если немного позанудствовал и смешивал названия на русском и не русском.
              0

              Вам спасибо, нежиданно и приятно, что статья побудила Вас, peleron, Emelian рассказать свои истории. Пишите еще :)

              +1
              Было интересно прочитать, зная как далеко всё зашло в карьере.
                0
                Почему «к концу статьи стало грустновато»?
                  0

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

                  +1
                  О я тоже на Qt писал в студенчестве и в WC3 играл ;-) И даже факультет мой так же или почти так же назывался(ВМСС в МЭИ).
                  Я ICQ клиент под линукс помню писал на 1-2м курсах, как первое приложение для изучения С++ и Qt, тогда это еще был Qt3. Заодно и протокол проприетарный их зареверсил немного. Клиент умел управлять списком контактов, отсылвать сообщения. Но был немного бажной, я не умел особо пистаь сетевых приложений тогда совсем. Потом я его портировал на Qt4.
                  Еще пару курсовых писал на нем. Тк у меня компа с windows не было, а показывать прогу нужно было на нем я их кросскомпилировал. На удивление все гладко и хорошо работало.
                  На этом както и все. Решил тогда, что GUI писать слишком муторно, лучше буду инфраструктурные штуки делать и всякие сетевые вещи делать.
                    0

                    Каждому свое, конечно, я тоже больше тяготею к бэкенду сильнее. И особенно грущу если все же надо что-то сделать на HTML5 — по сравнению с QML это такой мусор...

                    +1
                    История чем-то на мою похожа: Я тоже закончил «Вычислительные машины, комплексы, системы и сети», тоже начинал с Лафоре, потом изучал Qt (на тот момент в инете было всего два русскоязычных сайта по Qt. У меня до сих пор валяются две или три книги по Qt), тоже писал на нем диплом — «цилиндрическую интерактивную 3D-панораму для своего универа, которая позволяла перемещаться по нему», но потом Java вытеснила Qt ))
                      +1
                      Иметь в «багаже знаний» «кьюти» — это всегда «зачОтно»! В свое время (правда, давно) увлекся этим фреймворком, даже «наваял» на Qt трехмерный, базирующийся на OpenGL, UI для покера «Texas Holdem» (правда, проект остался недоделанным, были планы интегрировать его с open source Holdem Nuts). Что тогда приятно удивило, один и тот-же код, практически без «доводки напильником», пошел как под Windows, так и под Linux, и Mac OS (порылся в архивах, нашел и запустил бинарник — отлично работает и на latest Windows 10).

                      Интересно, поискал навскидку (в Бостоне): есть определенное количество неплохих позиций Qt+QML, в основном, у компаний, «клепающих» сложные медицинские приборы, с весьма достойной оплатой (так как C++). Правда, практически везде требуют профессиональный опыт «от 5 лет и выше»…
                        +1
                        отлично работает и на latest Windows 10

                        В свое время меня больше удивило, что собранный на 7-ке код отлично работает даже на Windows 98 — да, и такое можно было найти в университетских стенах ^^


                        с весьма достойной оплатой (так как C++)

                        К слову C++ в Qt как бы это аккуратно сказать… Другой! Лаконичная и удобная библиотека классов делает разработку похожей на Java или C#, когда, например, можно просто вызвать метод у QString и не думать об UB, UTF8/Unicode, непрерывности байт в структуре данных фактической реализации, etc. Мой любимый пример на эту тему на StackOverflow. Оно и понятно, ведь Qt в первую очередь фреймворк, а значит предлагает определенным образом решать некоторые задачи (Qt — почти все). Кстати, на C++11 в исходниках Qt не так давно окончательно перешли. В свете сложности и замудрености (личное мнение) новых стандартов языка это выглядит очень user-friendly решением.
                        Ох, как бы холивар не начался...

                          0
                          К слову C++ в Qt как бы это аккуратно сказать… Другой!
                          Я в курсе ;) В чем, как некоторые утверждают, и кроется его особенная прелесть — от практически straight forward baremetal good old C, до «сумасводящих» шаблонов параллельных задач в Мелкософтовской C++/CX (довелось как-то подискутировать с разработчиком данного говнища mind challenge напрямую). Qt-шный C++ is really cute (сорри за каламбур), продуман, понятен (обычной человеческой логике) и эффективен.

                          Просто в Штатах при оценке позиций (openings) работают другие шаблоны; программист С++ автоматически оценивается выше, чем, например, JS с «модными молодежными» фреймворками. То, что я находил для Бостона, «котируется» (хотя it's depends, как у нас говорят) от $160K на full time, или $100/h на W2 контракт. Данные для East Cost (восточного побережья), на West Coast (в частности, в Bay Area, так же изветсной, как «Силиконовая Долина»), цифры могут быть на 30-40% выше.
                        +1

                        Лабы бывают разные, друзья.


                        Я разработчик на Qt/C++, разрабатываю ПО для железных дорог, работаю с embedded, с высоконагруженными сервисами, что может пойти не так? И как-то раз стучится мне в личку барышня с одного всем Вам известного московского вуза, просит решить ее лабы по Qt за ПЕРВЫЙ КУРС. Ну я такой: "Ладно, помогу что-ли". Я никогда таких лабораторных не видел.


                        К слову, эти лабы даже меня заставили попотеть, хотя казалось бы. Например, задание "Отрисовка датасета в виде 3D графа с возможностью перемещения камеры на голом виджете в функциональной парадигме используя Афинную геометрию, из Qt доступно только QPainter, полный запрет на ООП". Такие задания из разряда "Изобретите вселенную с нуля левой задней". Если бы мне на первом курсе дали такую лабу, то, наверное, я бы разочаровался в программировании и бесповоротно закрепил бы в своей голове фразу "Это не для тебя".


                        Так что лабы действительно бывают разные)

                        Only users with full accounts can post comments. Log in, please.