metaclass: (Default)
[personal profile] metaclass
Что-то в примерах и документации нигде не вижу как обрабатываются ошибки, типа "в функцию передали кривой параметр", "вызов нижележащей ОС сдох, потому что ее сгрызли черви", итд.
Функции типа qWarning,qFatal, итд, вижу, есть. Вроде и обработка исключений какая-то есть, класс вроде Exception. Но вроде ж try-catch религия не позволяет в C++ юзать или я чего-то уже путаю?

Т.е. вообще, как принято обрабатывать ошибки в Qt?

Date: 2009-02-16 08:54 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Какой бред.
Много Вы проектов написали? Крупных, продаваемых?

Date: 2009-02-16 09:02 am (UTC)
From: [identity profile] vp.livejournal.com
порядка 30 проектотов, из них штук 20 как постановщик задачи, архитектура + ведущий программист
Активно продаваемых на сегодняшний момент 7 штук.

Date: 2009-02-16 09:03 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Тем более странно слышать ТАКОЕ.
В общем, вернёмся в конструктивное русло.

Вы можете привести несколько аргументов в пользу написания компилятора с нуля?

Date: 2009-02-16 09:05 am (UTC)
From: [identity profile] max-posedon.livejournal.com
Или хотябы не с нуля, а нового языка к gcc. (Это таки много более реальная задача).

Языков которые кастятся в gcc много, из старых - java, из новых - vala.

Date: 2009-02-16 09:10 am (UTC)
From: [identity profile] vp.livejournal.com
Да пес с ним с переписыванием. Просто переместить этот долбаный вызов connect внутрь языка, не макросами это делать, а средствами компилятора. Ну кто-то ведь этот gcc пишет и поддерживает! Тем более я так понимаю, что он с открытыми кодами.

Date: 2009-02-16 09:26 am (UTC)
From: [identity profile] metaclass.livejournal.com
Кто нибудь из существующих популярных компиляторов метапрограммирование поддерживает? А то ж ведь шаблоны это хорошо, но слишком уж безумно-декларативно.

Date: 2009-02-16 09:29 am (UTC)
From: [identity profile] max-posedon.livejournal.com
Может вам ещё со статической типизацией и проверкой compile time кода, который появится тока runtime?)

Метапрограммирование (в том значении, в котором я его понимаю), вообще не может быть компилированным.

Есть такой пример в реальной жизни - Prolog, так он "какбы компилируется" но по факту компилируется он в интерпритатор, который уже в run-time делает все выводы.

Date: 2009-02-16 09:38 am (UTC)
From: [identity profile] metaclass.livejournal.com
Он появляется не рунтайм, сначала компилируются макросы, затем они выполняются над AST основного кода и затем уже генерится результатирующий код.
Отладчик для такого, конечно, будет аццкой сотоной, ему придется выполнять макросы и показывать в качестве исходников код, декомпилированный из сгенерированного AST. Хотя в холиварах про линукс неоднократно упоминалось, что отладчиком они не пользуются(как и статической типизацией, да).

Date: 2009-02-16 09:29 am (UTC)
From: [identity profile] zamotivator.livejournal.com
C++ && boost.mpl && boost.fusion. Сам юзаю для метапрограммирования.
Lisp? Непопулярный.
Java - есть метапрограммирования. C# - тоже.
Ещё можно поглядеть на boost.spirit и boost.proto.

Не думаю, что это действительно частая нужная фича. Чаще это overkill архитектурный и реализации. Но два раза с нуждой столкнулся, c++&mpl&fusion хватило по уши.

Date: 2009-02-16 09:42 am (UTC)
From: [identity profile] metaclass.livejournal.com
В С# и жабе метапрограммирования нет.

Лично мне метапрограммирование нужно для генерации гуя и адаптеров к БД на этапе компиляции - иначе там сотни строк тупого кода чисто присваивания(поле БД->поле объекта-поле экрана и обратно) , а ORM все это дело только ухудшает, добавляя к этим полям еще и поле описания связи объекта и БД.
Ну еще не помешало бы в xml, бинарные форматы и текст сериализовать с помощью метапрограммирования, но это можно и через рефлекшен сделать, хоть и криво.

Date: 2009-02-16 10:12 am (UTC)
From: [identity profile] zamotivator.livejournal.com
В С# и жабе метапрограммирования нет
Хибернейты юзают кодогенерацию. Это является примером метапрограммирования?

Date: 2009-02-16 10:15 am (UTC)
From: [identity profile] metaclass.livejournal.com
А, в таком смысле, да, есть.

Date: 2009-02-16 10:14 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Ну еще не помешало бы в xml, бинарные форматы и текст сериализовать с помощью метапрограммирования, но это можно и через рефлекшен сделать, хоть и криво.
Ну почему же криво, наоборот, пример адекватного использоавния. А если руками сериализацию писать - то это на любом языке можно, метапрограммирования тут не нужно.

Конкретно присваивания из гуя и обратно - необязательно метапрограммирование.
MVC, конкретно тот что в Qt это дело упрощает до безобразия.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2025 05:21 pm
Powered by Dreamwidth Studios