powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удобство и скорость разработки в C++
25 сообщений из 168, страница 3 из 7
Удобство и скорость разработки в C++
    #39268839
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
typedef?
using!
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268848
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbMasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития.
Вы не поняли. Тот пример про то, что значения полей можно задать прямо при объявлении, а не где-то в конструкторах, как было раньше.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268960
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Прагмы зависят от компилятора, нет возможности расширять их функциональность. Иногда, с моей точки зрения, бывает полезно аннотировать методы. Как пример, полагаю, вы знаете, зачем используется moc компилятор в Qt? Конечно, введя только аннотации, эту проблему не решить.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39268968
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Понимаю, как я уже сказал раннее, введя только аннотации, проблему не решить. Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofmayton,
Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение.
Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++
который был-бы полезен?
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269012
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМожете привести пример из практики метаданных в С++ который был-бы полезен?@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них )
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269015
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них )
Эти две уже давно есть ))
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269027
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbхмм, но мысль про требование от ЯП скорости (и удобства и простоты) разработки, я считаю, разумная.


Там мысль "за всё хорошее, против всего плохого".
Ещё мысль "динамика -- говно".
Т.е. там тупо нет разумных мыслей.

Ну и ещё одна мысль "найти лучший в мире язык программирования" тоже дурацкая.
Ну не бывает универсальных языков программирования.
Надо знать много и применять по необходимости разные в разных случаях.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269030
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
MasterZivУже ж удобнее, нет разве ? Ну, на вид вроде удобно. Но верхние два типа теперь можно через std:: описать. Про остальное судить нельзя без взгляда на реализацию и использование. Описание (иерархии) классов одних и тех же вещей может сильно меняться в зависимости от целей и перспектив развития.

Вообще -то я имел в виду тупо одну фичу -- инициализация мемберов через инициализаторы в теле класса, а не в каждом из конструкторов.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269033
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonvitprofmayton,
Но метаданные для класса можно реализовать как опциональную фичу. Как говорится, каждый язык имеет свое применение.
Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++
который был-бы полезен?

Пример я уже приводил - moc компилятор Qt или ORM на C++. Проблема заключается в том, что сами по себе аннотации мало что дадут. Необходимо реализовать допмеханизмы для работы с классом. Например, найти указатель на метод класса по аннотации и вызвать его. К сожалению, это вряд ли будет реализовано в C++. Можно было бы реализовать дополнительный шаг процесса компиляции после препроцессинга - обработка аннотаций. На этой стадии можно, например, сгенерировать дополнительный C++ код, как это делает mос компилятор Qt, который также генерирует C++ код с метаданными для класса. Ну, можно еще подумать и привести другие примеры. Например, интеграция с IDE.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269035
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofmayton,

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

Ещё раз, аннотации -- это костыли.
В нормальных языках аннотаций НЕТ.
Зачем ты хочешь их тащить в нормальный язык С++ -- не понятно от слова "совсем".
Надо добавлять фичи -- надо расширять язык.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269041
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychmaytonМожете привести пример из практики метаданных в С++ который был-бы полезен?@deprecated был бы полезной фичей, возможно, что и @override бы пригодился. Но я все знания об аннотациях в Яве почерпнул из википедии только что. Может я не всё понимаю об них )

override уже есть, не в виде аннотации.
deprecated -- напиши в документации, в комментарии, или напиши и ещё удали тело (реализацию). Линкер тебе всё скажет, а потом пользователь прочитает в документации, что это -- deprecated.

Кстати, deleted можно теперь писать не только к конструкторам ? Интересно, надо глянуть.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269049
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofmaytonпропущено...

Зачем в С++ нужна эта опциональная фича? Можете привести пример из практики метаданных в С++
который был-бы полезен?

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

Да выдумки всё. Не нужны аннотации.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269058
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivВ нормальных языках аннотаций НЕТ.
Не буду спорить, но хотелось бы уточнить, что аннотации есть в java, c#. Которые с моей точки зрения нормальные языки. Мало того, в целях кодогенерации аннотации моли бы пригодиться.

MasterZivЗачем ты хочешь их тащить в нормальный язык С++ -- не понятно от слова "совсем".
1) Улучшить читаемость кода, 2) Держать все описания в одном месте 3) иметь возможность расширить язык, когда это нужно 4) кодогенерация
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269073
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот уже ввели generalized attributes. Наверно, это первый шаг к полноценной реализации аннотаций. Похоже, потребность есть.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269086
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рассматривать аннотации в языке как вещь в себе - безсмысленно. Т.к. аннотация
с точки зрения Java (к примеру) это триггер который приводит к каким-либо actions
на фазах compile, class loading, runtime. Причем большая (львиная доля) этих триггеров
имеют смысл только будучи инстанциированы во фреймворках для таких техник как
ORM, web binding, xml-,json- bingings, transactions control, security, logging, unit testing, contracts, mocks,
e.t.c.

Поэтому С++ аннотации не нужны. Но если найти фреймворк и наполнить class более сложным
смыслом (сущность БД к примеру) то тот-же Qt-код (возможно) мог бы улучшить свою
читабельность если ему дать возможность декларировать сущности с особым синтаксисом.

Я к сожалению не спец в Qt и поэтому пример с Qt-moc я не понял. Что там ЕСТЬ аннотация
в общем понимании этого слова. Где там есть триггеринг этой аннотации. И как я могу
это использовать (расширять видоизменять e.t.c.).
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269102
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonРассматривать аннотации в языке как вещь в себе - безсмысленно. Т.к. аннотация
с точки зрения Java (к примеру) это триггер который приводит к каким-либо actions
на фазах compile, class loading, runtime. Причем большая (львиная доля) этих триггеров
имеют смысл только будучи инстанциированы во фреймворках для таких техник как
ORM, web binding, xml-,json- bingings, transactions control, security, logging, unit testing, contracts, mocks,
e.t.c.
Поэтому С++ аннотации не нужны. Но если найти фреймворк и наполнить class более сложным
смыслом (сущность БД к примеру) то тот-же Qt-код (возможно) мог бы улучшить свою
читабельность если ему дать возможность декларировать сущности с особым синтаксисом.

Честно говоря, не очень понял вашу аргументацию. Собственно говоря, хорошо бы иметь возможность реализовать все указанные вами техники на C++ удобным способом.

maytonЯ к сожалению не спец в Qt и поэтому пример с Qt-moc я не понял. Что там ЕСТЬ аннотация
в общем понимании этого слова. Где там есть триггеринг этой аннотации. И как я могу
это использовать (расширять видоизменять e.t.c.).

Вот пример кода Qt:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class MyWidget : public QWidget {
    Q_OBJECT
    Q_PROPERTY(myProperty ...);
public slots:
    void buttonPressed();
public signals:
    void notifyUser();
}

Q_OBJECT, slots, signals - директивы препроцессора, которые заменяются на пустую строку (по-моему так), но они служат инструкцией для MOC compiler, который генерирует новый C++ код с метаданными класса.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269154
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofMasterZivВ нормальных языках аннотаций НЕТ.
Не буду спорить, но хотелось бы уточнить, что аннотации есть в java, c#. Которые с моей точки зрения нормальные языки.


Ну не смеши нас...
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269381
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВы не поняли. Тот пример про то, что значения полей можно задать прямо при объявлении, а не где-то в конструкторах, как было раньше.
MasterZivВообще -то я имел в виду тупо одну фичу -- инициализация мемберов через инициализаторы в теле класса, а не в каждом из конструкторов.А, так это "давнишняя" фича. Это всё хорошо. Но, согласитесь, описания классов в коде занимают на порядок меньше места, чем методы, а стало быть и код обработки данных. В этом смысле лямбды и всякие stl-ные конструкции, позволяющие не писать много этого самого кода, гораздо полезнее.

Ну и, возможно отдельной темой, стоило бы обсудить IDE. Раз уж вспомнили яву, у меня сейчас запущена idea 16 о огромадным проектом и 2013 студия с тем, что я начал делать 28 июня. "пропасть между ними огромна". Даже не затрагивая вещи "удобно-неудобно", можно сказать, во-первых, что студия тормозит. Местами она просто не успевает за мной. Идея, написанная на яве, не тормозит. Ну и удобных фич, "из коробки" у идеи в разы больше. У меня стойкое чувство, что эти две IDE разрабатываются принципиально разными командами. У идеи сами разработчики из своего опыта добавляют недостающие вещи, расстояние от идеи(мысли) до реализации минимальное. В то время как в студии чувствуется длинный путь в багтреккерах, собраниях аналитиков и так далее. Ну это вот у меня сложилось такое чувство. Ладно, это всё печаль и лирика, хотя тоже сильно касается скорости и удобства разработки.
PS: 2015 студию не смотрел
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269410
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
. Раз уж вспомнили яву, у меня сейчас запущена idea 16 о огромадным проектом и 2013 студия с тем, что я начал делать 28 июня. "пропасть между ними огромна". Даже не затрагивая вещи "удобно-неудобно", можно сказать, во-первых, что студия тормозит.

да ладно, не разигрывай ... clion так тормозит, что ой ой ой...


PS: 2015 студию не смотрел

а надо было бы....
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269421
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivда ладно, не разигрывай ... clion так тормозит, что ой ой ой...Clion не смотрел, говорю только за Idea.
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269525
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprof
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class MyWidget : public QWidget {
    Q_OBJECT
    Q_PROPERTY(myProperty ...);
public slots:
    void buttonPressed();
public signals:
    void notifyUser();
}

А добавление Q_OBJECT влияет на RTTI ?
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269556
vitprof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonА добавление Q_OBJECT влияет на RTTI?

Q_OBJECT это определенный в библиотеке макрос препроцессора, который обрабатывается на стадии компиляции. Ниже код, в который разворачивается этот макрос. Как видите, добавляется статический член класса + декларация нескольких виртуальных функций, реализация которых генерируется MOC compiler. Класс с Q_OBJECT и класс без Q_OBJECT два разных класса по сути.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public: \
    Q_OBJECT_CHECK \
    static const QMetaObject staticMetaObject; \
    Q_OBJECT_GETSTATICMETAOBJECT \
    virtual const QMetaObject *metaObject() const; \
    virtual void *qt_metacast(const char *); \
    QT_TR_FUNCTIONS \
    virtual int qt_metacall(QMetaObject::Call, int, void **); \
private:
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269688
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivстудия тормозит
Я как перешел на QtCreator перестал даже смотреть на остальные IDE.
Летает на любых проектах.
Были проблемы с подтормаживанием в некоторых случаях, но это был баг, которых возник и потом был исправлен, а не концептуальное торможение как в Студии ))
...
Рейтинг: 0 / 0
Удобство и скорость разработки в C++
    #39269742
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vitprofmaytonА добавление Q_OBJECT влияет на RTTI?

Q_OBJECT это определенный в библиотеке макрос препроцессора, который обрабатывается на стадии компиляции. Ниже код, в который разворачивается этот макрос. Как видите, добавляется статический член класса + декларация нескольких виртуальных функций, реализация которых генерируется MOC compiler. Класс с Q_OBJECT и класс без Q_OBJECT два разных класса по сути.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public: \
    Q_OBJECT_CHECK \
    static const QMetaObject staticMetaObject; \
    Q_OBJECT_GETSTATICMETAOBJECT \
    virtual const QMetaObject *metaObject() const; \
    virtual void *qt_metacast(const char *); \
    QT_TR_FUNCTIONS \
    virtual int qt_metacall(QMetaObject::Call, int, void **); \
private:

Меня интересует. Если есть некий интерфейс типа удалённого вызова. На который
приходит не всегда специфицированный объект (сеть фигли). Есть ли у меня возможноть
удостовериться что твои мета-теги или аннотации или еще бох весть какие сущности
присутствуют в наличии. Тоесть что-то вроде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void remoteHanlde(QtObject *qtNetReceivedObject){
        if (is_a(qtNetReceivedObject, Q_OBJECT)){
             if (has_a(qtNetReceivedObject, Q_PROPERTY(prop="Value")){
                    .... some fucken business logic
             }
        }
}
...
Рейтинг: 0 / 0
25 сообщений из 168, страница 3 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Удобство и скорость разработки в C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]