LINUX.ORG.RU
ФорумTalks

QT как новый язык программирования

 ,


2

3

Тут целая банда в составе товарищей:

утверждают что Qt - это надстройка над C++, потому что с библиотекой поставляется кодогенератор moc. По этой логике можно назвать «надстройкой» над C++ googletest(кодогенератор pump), boost(кодогенерация макросами) и все IDE, которые генерируют каркас проекта.

Может быть выражения:

  • «я пишу на Qt, а не на C++»
  • «я пишу на googletest, а не на C++»
  • «я пишу на IDE, а не на C++»

имеют смысл, а я олдфаг и придираюсь?( Проясните пжл!

Перемещено tailgunner из development



Последнее исправление: clover (всего исправлений: 4)

Ответ на: комментарий от samy_volosaty

Там для коннекта два синтаксиса - старый с макросами SIGNAL/SLOT и новый, с методами/лямбдами.

wolph ★★
()
Ответ на: комментарий от bvn13

Qt это фреймворк, а вот буст это как раз набор библиотек.

pon4ik ★★★★★
()

я пишу на IDE, а не на C++

Видал таких, особенно в бытность работы в нии.

По теме - Qt всё таки не плюсы, это реально фреймворк(я бы даже сказал фреймворчище), и работать с ним без какой то из значимых частей этого фреймворка невозможно/слишком затратно.

Попробуй любую библиотеку использующую QApplication* встроить в не Qt приложение (это можно, я так делал) - посмотри насколько это сложно. А если то приложение ещё и многопоточное и шлёт лесом Qt соглашения то будет вообще забавно.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

я бы даже сказал фреймворчище

а фрейморчище это как с платформой коррелирует?
т.к. тут некие хипстеры назвали свое поделие целой платформой, и вот интересно узнать нам
на вреймворчище ли на платформе ли нагибать лучшее?

ну и заодно, а не одно ли это и то-же
а если ...

anTaRes ★★★★
()
Ответ на: комментарий от intelfx

надо еще вариант добавить

я пишу на листе бумаги, а не на C++

atsym ★★★★★
()

Дело в том, что зачастую программы на Qt используют довольно ограниченное подмножество С++, не используют STL. Плюс местные типы и контейнеры, средства обеспечения многопоточности, работы с файлами, сетью, БД, json, UI, multimedia etc.

Предположим человек, который несколько лет писал с использованием Qt, должен написать что-то сложное без него, «на чистом С++», без фреймворка, но с STL из последнего стандарта. В таком случае он будет вынужден осваивать многие вещи из других библиотек, искать аналоги привычных инструментов, читать документацию по STL, плеваться от более низкоуровневой реализации, субъективно менее читабельного синтаксиса, и вообще всячески тупить первое время.

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ты дурак. Дожили плять, синтаксис языка свалили в одну кучу с конпеляторами.

Тогда уже не с компилятором, а с библиотеками.

aiqu6Ait ★★★★
()
Ответ на: комментарий от anTaRes

Не, на платформу не тянет, имхо. В моём понимании - платформа это то, что позволяет разрабатывать и запускать широкий комплекс решений являясь самодостаточным средством.

Учитывая, что определения я никогда не видел (в отличии от того чем отличается библиотека от фреймворка). Сложно сказать, субъективно, я считаю что платформой назвать на данном этапе Qt сложно, но они к этому идут(после твоего напоминания даже сложилось впечатление, что где-то я уже слышал слова Qt platform).

pon4ik ★★★★★
()

изначально с++ кодогенератором переделывался в си и так компилировался. значит ли это, что с++ это си и «просто библиотека» с «просто кодогенератором»?

что-то ты затрудняешься с этим простым вопросом.

Qt - это С++ c рядом дополнений. но это уже чуть больше чем с++ и обратной совместимости нет.

ckotinko ☆☆☆
()

QT как новый язык программирования
QT

Triggered

sudopacman ★★★★★
()
Ответ на: комментарий от ncrmnt

Ты еще скажи про тех, кто считает что они программируют на языке ардуйно.

что, и такие есть? о_О

clover
() автор топика
Ответ на: комментарий от pon4ik

По теме - Qt всё таки не плюсы, это реально фреймворк(я бы даже сказал фреймворчище), и работать с ним без какой то из значимых частей этого фреймворка невозможно/слишком затратно.

ну вот ведь никому не приходит в голову называть django «диалектом» или «надстройкой» питона, чем же Qt такой особенный фреймворк?

clover
() автор топика
Ответ на: комментарий от CrossFire

Дело в том, что зачастую программы на Qt используют довольно ограниченное подмножество С++, не используют STL

так STL - это же тоже библиотека. Стандартная, но библиотека, а C++ - язык.

«на чистом С++», без фреймворка, но с STL

STL - это не чистый C++, это просто библиотека из коробки же, выше даже уже приводили пример про успешный проект, который был написан без STL

clover
() автор топика
Ответ на: комментарий от ckotinko

Qt - это С++ c рядом дополнений. но это уже чуть больше чем с++ и обратной совместимости нет.

тоесть если я напишу макросы, или IDE научу генерировать cpp-код, который генерирует moc, то у меня ничего не заработает, потому что нет обратной совместимости между Qt и cpp?)

clover
() автор топика

Отдираете всё что не использует QObject, получаются культи простые (aka библиотека) и (там куда угодила кодогенерация по макросам Q_OBJECT et al) получается Qt Frameworks Platform Cloud Enterprise Business Workshop for Hipsters.

d_a ★★★★★
()
Ответ на: комментарий от clover

Больше, чем ты думаешь. Да и чего ожидать, если на оф. сайте написано «arduino programming language» ?

ncrmnt ★★★★★
()
Ответ на: комментарий от clover

Не сравнивай динамические языки программирования и статические.

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

pon4ik ★★★★★
()

Не важно. Хочешь - говори что пишешь на C++, хочешь - говори что на Qt, хочешь - говори что на клавиатуре. А вот спор о терминологии достоин презрения.

slovazap ★★★★★
()
Ответ на: комментарий от clover

так STL - это же тоже библиотека. Стандартная, но библиотека, а C++ - язык.

Именно поэтому я и написал через запятую.

STL - это не чистый C++, это просто библиотека из коробки же, выше даже уже приводили пример про успешный проект, который был написан без STL

Безусловно, можно писать и без STL, как в практически любом Qt проекте. Другое дело, что совсем без библиотек толком ничего не напишешь, а STL часть стандарта.

C++ includes built-in support for threads, mutual exclusion, condition variables, and futures.

http://en.cppreference.com/w/cpp/thread

CrossFire ★★★★★
()
Последнее исправление: CrossFire (всего исправлений: 1)
Ответ на: комментарий от pon4ik

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

что, правда? я всегда думал и в статическом языке и в динамическом можно совершать любые действия, используя возможности языка, но никак не расширяя его, можно пример из питона?

clover
() автор топика
Ответ на: комментарий от slovazap

Не важно. Хочешь - говори что пишешь на C++, хочешь - говори что на Qt, хочешь - говори что на клавиатуре. А вот спор о терминологии достоин презрения.

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

clover
() автор топика
Ответ на: комментарий от CrossFire

Безусловно, можно писать и без STL, как в практически любом Qt проекте. Другое дело, что совсем без библиотек толком ничего не напишешь, а STL часть стандарта.

STL стандартизирована, но никак не часть языка

clover
() автор топика
Ответ на: комментарий от clover

Да тут и смиряться не с чем. Есть наклейка - значит программирует.

slovazap ★★★★★
()
Ответ на: комментарий от CrossFire

Предположим человек, который несколько лет писал с использованием Qt, должен написать что-то сложное без него, «на чистом С++», без фреймворка, но с STL из последнего стандарта.

Разве в обратную сторону не будет такой же ситуации?

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Разве в обратную сторону не будет такой же ситуации?

Будет, именно потому и акцентируют внимание на Qt, что любой человек знающий С++ правильно пользоваться библиотекой станет только спустя некоторое время. Но в обратную сторону ситуация получше, потому что магии никакой нет, и в целом все более высокоуровневое, взять те же потокобезопасные сигналы/слоты, которые позволяют не заморачиваться с синхронизацией.

CrossFire ★★★★★
()
Ответ на: комментарий от clover

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

В c++ для этого языковой поддержки нет.

В Qt есть.

pon4ik ★★★★★
()

Поскольку требует moc - простой библиотекой быть не может. Поскольку нет собственного компилятора - отдельным языком тоже. Чем тебе термин «надстройка» не нравится?

С другой стороны, ЕМНИП первые «компиляторы» C++ тоже транслировали код в чистый C и уже потом запускали сишный компилятор. Однако уже тогда он вроде как другим языком считался.

cPunk ★★
()
Ответ на: комментарий от cPunk

Vala до сих пор транслируется, Objective-C тоже очень долго так работал, не знаю как сейчас.

CrossFire ★★★★★
()
Ответ на: комментарий от pon4ik

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

да ты что! прям новую сущность собрать в Qt можно? новый класс изобрести в рантайме? правда?

clover
() автор топика
Ответ на: комментарий от cPunk

Поскольку требует moc - простой библиотекой быть не может. Поскольку нет собственного компилятора - отдельным языком тоже. Чем тебе термин «надстройка» не нравится?

тут речь о противопоставлении, к тому же фреймворк - это не надстройка, а пристройка сбоку

clover
() автор топика
Ответ на: комментарий от clover

тут речь о противопоставлении, к тому же фреймворк - это не надстройка, а пристройка сбоку

Господа, вам не кажется, что выяснение — пристройка или все-таки надстройка, — не имеет ни малейшего практического смысла?

CrossFire ★★★★★
()
Ответ на: комментарий от clover

к тому же фреймворк - это не надстройка, а пристройка сбоку

Ну поскольку оно не перекрывает функционал основного строения, является ли оно пристройкой сбоку, или мансардой сверху, принципиально не важно, ИМХО.

cPunk ★★
()
Ответ на: комментарий от ncrmnt

ncrmnt> Ты еще скажи про тех, кто считает что они программируют на языке ардуйно.

На нём и «программируют». Дай им на чистом C или C++ писать - не смогут. То же самое про Qt и остальное.

Quasar ★★★★★
()
Ответ на: комментарий от cPunk

Ну поскольку оно не перекрывает функционал основного строения, является ли оно пристройкой сбоку, или мансардой сверху, принципиально не важно, ИМХО.

как оффтопили в теме про яву: программирование - инженерная дисциплина. поэтому важно что откуда берется.

clover
() автор топика
Ответ на: комментарий от clover

то, что добавили в Qt - это не макросы. это код который генерится там и сям для поддержки introspection, сигналов и т.д. это обратно не совместимо. и да, ты не сможешь просто на С++ скомпилировать приложения, просто используя классы из Qt и не делая новые, т.к. в хидерах тоже Qtшные слова slots: signals: встречаются.

ты с тернополя что ли такой сообразительный?

ckotinko ☆☆☆
()
Ответ на: комментарий от d_a

не получится, сюююрприииииз.

делаешь #include <QWidget> и получаешь вложение хидера где в классе написано signals: и public slots: и всё. не соберётся.

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

то, что добавили в Qt - это не макросы. это код который генерится там и сям для поддержки introspection, сигналов и т.д. это обратно не совместимо. и да, ты не сможешь просто на С++ скомпилировать приложения, просто используя классы из Qt и не делая новые, т.к. в хидерах тоже Qtшные слова slots: signals: встречаются.

я по твоим комментариям прошелся и увеличил свою коллекцию лулзов над человеческим идиотизмом на лоре в 4 раза) я даже сомневаюсь что ты тролль)

clover
() автор топика
Ответ на: комментарий от clover

давай я сделаю вид, что не считаю тебя дураком и не будем больше спорить на эту тему.

ckotinko ☆☆☆
()

C++ + clang - ето библиотека для llvm ir.

Ты можешь подключить Qt и херачить на нем не трогая moc, ура ето c++.

Но если ты юзаешь moc, то ты пишешь на moc.

Точно так же, если ты пишешь .proto файл, чтобы скормить его protoc, ты не пишешь на c++, и на python не пишешь. И на других языках, которые умеет высерать protoc не пишешь.

Ты пишешь на protocol buffers language.

То что тебе кажется, что оно тама внутри похоже на кресты и ты, когда это пишешь, думаешь о них как о крестосорцах к теме не относится.

Kuzy ★★★
()

и все IDE, которые генерируют каркас проекта.

Код ДО moc-а - НЕ c++.
Код ПОСЛЕ moc-a - c++.

Ага, менюшечки IDE не являются языком c++. А код, который она генерит - является.

Привет.

Kuzy ★★★
()
Ответ на: комментарий от Kuzy

Эксепшоны тоже не часть языка?
Библа, наверн.
Ну а чё? Я без эксепшенов пишу.

при чем тут эксепшены-то вообще?) идите со своей детской травмой к психоаналитику, а не на ЛОР)

clover
() автор топика

Немного странно:

Qt 5.8.0 for Linux 64-bit (766 MB) (info)
Qt 5.8.0 for Windows 32-bit (MinGW 5.3.0, 1.2 GB)

По какой-то странной причине они не делают 32-битные сборки для Linux, но делают её для Windows, не делая для Windows 64-битной сборки.

grem ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.