[09:40:24] <geniepro> http://www.rsdn.ru/forum/java/2839479.flat.aspx
Re[2]: как работают аннотации? Оценить
От: mkizub http://symade.tigris.org
Дата: 15.02.08 01:07
Оценка: +1
Здравствуйте, Blazkowicz, Вы писали:
B>Очень рекомендую почитать про концепцию AOP. В общем, без привязки к конкретным реализациям, чтобы понять зачем это надо. Аннотации это один из способов реализовать концепцию AOP в Java.
Приятно читать подобные посты.
Лет много назад, когда я работал в группе, что делала AspectJ (ещё в PARC), я им говорил — надо добавить в язык произвольные метки к методам и типам, чтоб AOP ориентировался на них, а не на имена этих методов и классов. На что мне сказали, мол, я нифига не понимаю в AOP, и это никому не нужно. Вскоре меня попёрли из тима — окончательно их добило то, что я не умею "планировать" свою работу (ну, 2.5 часа на поправить тут, 1 день на реализовать здесь и т.д.).
Нынче эти "метки" в яве реализованы через аннотации, и являются основой работы AOP.
Мораль сей басни такова — если я был такой умный 7 лет назад, что разбирался в реальных нуждах AOP лучше автора — то насколько же я умнее сейчас. И если я потратил эти годы на разработку новой концепции программирования — насколько эта концепция более продвинута, чем AOP! Впрочем, у этой басни есть и другая мораль — насколько мало людей в состоянии осознать то, о чём я говорю
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
[10:47:38] <geniepro> http://mkizub.livejournal.com/712.html
SOP - Семантически-ориентированное программирование
[12:12:51] <valexey> geniepro: дык. Синтаксис всегда был есть и будет вторичен. Нельзя с него начинать проектировать новый язык
[12:36:29] <geniepro> любая программа, редакируемая человеком, неизбежно должна быть представлена в человекоудобном виде с использованием хорошего синтаксиса
[13:11:42] <geniepro> valexey> См анотации в жабе
чота до меня не доходит -- нафига нужна эта рантайм-информация? не лучше ли сделать её статической? доступной при компиляции?
чем больше проверок во время компиляции -- тем лучше же
[13:31:42] <valexey> geniepro: оно нужно и на этапе компиляции и на этапе рантайма
[13:31:53] <valexey> например используется для загрузки-выгрузки-обновления модулей
[13:34:54] <geniepro> http://habrahabr.ru/blogs/development/127635/
[13:41:29] <valexey> geniepro: истинно так!
[13:41:47] <valexey> поэтому у меня нет фигурных скобочек на отдельных строчках например
[13:41:52] <valexey> по крайней мере открывающихся
[13:42:12] <valexey> а иногда все тело какой-нибудь for'a пишется целиком без фигурных скобочек вообще
[13:42:16] <valexey> иногда в одну строчку
[13:46:14] <valexey> кстати, именно поэтому я считаю, что много комментов это плохо, мало комметов это плохо, а среднее число комментов вообще никуда не годится
[13:46:37] <valexey> комментарии должны быть динамическими, в каждый момент времени должно показываться ровно то, что нужно данному конкретному читателю кода
[13:49:36] <geniepro> valexey> а иногда все тело какой-нибудь for'a пишется целиком без фигурных скобочек вообще
это злостное зло ))
[13:49:54] <geniepro> вот почему синтаксис решает!!!111
[13:49:54] <valexey> почему?
[13:50:15] <valexey> там больше одного выражения и больше одной строки
[13:50:16] <geniepro> был бы нормальный синтаксис -- не пришлось бы так извращаться
[13:50:18] <valexey> но зачем мне скобочки?
[13:50:53] <geniepro> отход от общепринятых стандартов кодирования -- всегда плохо
[13:51:25] <geniepro> как если бы каждый начал как попало рисовать чертежи -- цивилизация рухнула бы в момент!
[13:51:54] <valexey> общепринятых стандартов кодирования для Си и С++ не существует :-)
[13:52:11] <geniepro> ну как не существует? о_О полно же их )
[13:52:41] <valexey> вот именно потому, что их полно, общепринятого стандарта кодирования на Си и С++ не существует :-)
[13:52:55] <geniepro> ну вот в сях да -- там же синтаксис ацтоен, никакие стандарты не помогут
[13:53:19] <valexey> Синтаксис Си на грани гениальности ;-)
[13:54:25] <geniepro> ёв этом плане майкрософт маладец что сделал в своих QB, VB и C# принуждение к ихнему стандарту кодирования
[13:55:15] <geniepro> есть тут у меня один сотрудник -- пишет на билдере так, что хоть глаза вырывай
а на С# -- хочешь-нехочешь а задолбаешься перечить студии
[13:55:49] <geniepro> хотя вроде там это можно настраивать, но так глубоко в настройках, что всем лень туда лезть
[14:09:22] <valexey> geniepro: можно же в студии не писать :-) можно писать в фаре
[14:09:28] <valexey> да хоть в ББ на шарпе пиши
[14:15:30] <geniepro> и что потом дальше в этом бб делать с шарповым кодом? молиться на него? )))
[14:17:09] <valexey> geniepro: в смысле? компилировать и запускать
[14:17:29] <geniepro> ужас же
[14:43:34] <valexey> почему?
[14:46:15] <geniepro> ну а зачем, если есть если уж не студия, так хотя бы шарпдевелоп
[14:47:56] <valexey> а почему бы и нет? работать в привычном окружении вне зависимости от языка программирования.
[14:48:06] <valexey> писать код в том стиле, который тебе удобней
[15:06:05] <valexey> http://habrahabr.ru/blogs/programming/128667/
[15:08:45] <valexey> http://aichallengebeta.hypertriangle.com/
[15:26:56] <geniepro> ххх: не-не-не, Алексей Анатолич, я с этим кодером работать не буду: вчера подошел проверить, как протекает дебагинг, а он сидит и орфографию в комментариях исправляет
[15:27:08] <geniepro> млять меня так бесят ачепятки в комментариях )))
[15:36:40] <valexey> а я пошел дальше - меня бесят сами комментарии!
[15:38:55] <valexey> http://aichallengebeta.hypertriangle.com/starter_packages.php
[19:12:42] <vlad2> юниксовый опенсорс под виндовс - по-прежнему УГ.
[19:13:28] <vlad2> Млять. Ну покажите мне хоть один современный текстовый редактор "с поддержкой языков" в котором на русской винде не работает русский язык.
[19:13:53] <vlad2> Ну конечно это Vim!
[19:14:09] <vlad2> И конечно это фиксится в аком-нибудь конфиге!
[19:14:15] <vlad2> Надо только погуглить !@#$
[19:14:28] <vlad2> А вот чтоб из каробки - этого религия не позволяет.
[19:18:40] <valexey> vlad2: что-то мне подсказывает, что портов под маздай оных вимов больше одного
[19:19:50] <vlad2> Ага. И кому от этого лучше? :)
[19:20:26] <valexey> гомоестатическому мирозданию
[19:20:37] <vlad2> Да, я савил тот, который на vim.org.
[19:21:37] <vlad2> Причем мне поставились русские туториалы и т.д. Только они не работают!!!
[19:22:42] <valexey> гы
[19:22:48] <valexey> а зачем тебе вим?
[19:23:14] <valexey> алсо, если мне эклер не изменяет, вим он нихрена не юниксовый
[19:23:18] <valexey> он амижный
[19:24:12] <valexey> "Vim is a text editor originally released by Bram Moolenaar in 1991 for the Amiga computer"
[19:24:14] <valexey> Во!
[19:29:11] <vlad2> Меня задрал xcode. Хотел туториалы почитать на сон грядущий (дома только винда).
[19:29:39] <vlad2> Да-да, отмазки ;)
[19:29:58] <valexey> и? какое отношения имеет vim к икскодовым туториолам?
[19:30:13] <valexey> /me в консоли вообще для редактирования чаще всего использует nano
[19:30:28] <vlad2> vim'овские туториалы, которые вместе с ним и идут.
[19:30:32] <valexey> а для серфинга по исходникам cat, less, grep
[19:30:45] <valexey> а зачем ты русский скачал? :-)
[19:31:06] <valexey> vlad2: а чем неблогирующие сокеты отличаются от асинхронных?
[19:31:07] <vlad2> Ха! Он ж жк ш такой умный, сам поставился русский.
[19:31:18] <valexey> мне помнится кто-то рассказывал отличие, но я опять забыл
[19:31:20] <vlad2> ХЗ :)
[19:32:11] <vlad2> grep - Это от безвсходности. Я его тоже использую, когда ФАРа нет ;)
[19:41:08] <valexey> vlad2: ну а какие альтеррнативы то?
[19:42:08] <vlad2> Альтернативы чего? grep?
[19:42:38] <vlad2> Я как раз и гворю,что grep - это ассемблер, когда человеческого ФАРа нет.
[19:43:05] <valexey> угу. грепа
[19:43:11] <vlad2> Ну ладно, я его еще почтоянно использую для поиска своих чэндж листов :)
[19:43:16] <valexey> фар же мало отличается от грепа по сути своей
[19:43:36] <valexey> ну, разве что регэксп фар вроде бы всосать не может без доп. плагинов
[19:44:06] <vlad2> Да он и не нужен этот regexp в 99% (хотя да, плагин у меня к фару стоит)
[19:44:31] <vlad2> Технически - да, греп даже круче. Но фар человечнейц.
[19:44:47] <valexey> ну, греп в сочетании с less вполне себе
[19:45:01] <valexey> а еще можно запустить цепочку грепов!!1
[19:45:09] <valexey> (если не хочется регэксп писать)
[19:45:11] <kemiisto> .
[19:45:20] <valexey> kemiisto: !
[19:45:47] <valexey> надо повайдосить на счет disk io хостеру... а то это ж не дело.
[19:46:11] <vlad2> Да, кстати, regexp у гркпа весьма специфичен. Я, наверное, в сумме около часа потратил на изучение этих "особенностей".
[19:46:12] <valexey> такое ощущение, что диска нет ваще. точнее, что там не диск, а магнитная лента, или перфокарта
[19:59:54] <kemiisto> плюски, блеать!
[19:59:55] <kemiisto> http://eigen.tuxfamily.org/dox/TopicStructHavingEigenMembers.html
[20:00:07] <kemiisto> чтоб ты сдох, Труп Страуса!!!111
[20:02:31] <vlad2> Там не плюсы, а какие-то заморочные особенности лпатформы.
[20:03:22] <valexey> угу. проклятия напрявлять в сторону Intel
[20:03:24] <valexey> С его SSE
[20:04:37] <valexey> алсо они могли бы сделать это и независимым от смещения и выравнивания, но работало бы медленнее.
[20:05:49] <kemiisto> valexey: там можно
[20:05:53] <kemiisto> вырубить
[20:05:55] <kemiisto> макросом
[20:06:03] <valexey> дык. плюсы рулят
[20:06:10] <kemiisto> нахуй
[20:06:13] <valexey> а вот в обероне ты убился бы то же самое делать
[20:06:19] <kemiisto> меня медленно устроило бы везде
[20:06:19] <valexey> пришлось бы хачить компилятор
[20:06:36] <valexey> если медленно, то зачем тебе эта либа?
[20:06:51] <valexey> используй матлаб :-)
[21:14:15] <kemiisto> valexey: у мну такая трабла
[21:14:33] <kemiisto> есть пара-тройка целочисленных констант в хидер-файле
[21:14:54] <kemiisto> при их изменении для вступления в силу требуется полная перекомпиляция
[21:14:55] <valexey> и-и?
[21:15:00] <valexey> угу
[21:15:00] <kemiisto> вот
[21:15:08] <kemiisto> как принято?
[21:15:10] <valexey> сделай их не константами
[21:15:21] <kemiisto> valexey: эммм... :D
[21:15:26] <kemiisto> а чем?
[21:15:27] <valexey> extern FOO_BAR
[21:15:31] <kemiisto> функами?
[21:15:37] <valexey> пардон
[21:15:39] <valexey> extern int FOO_BAR;
[21:15:52] <kemiisto> valexey: extern это из сей?
[21:15:59] <valexey> да
[21:16:12] <kemiisto> пойду загуглю
[21:16:13] <kemiisto> но
[21:16:17] <kemiisto> это пиздец
[21:16:19] <kemiisto> если что
[21:16:25] <kemiisto> константы, блеать1
[21:16:45] <valexey> kemiisto: ВНЕЗАПНО в Обероне в точности то же самое
[21:17:11] <kemiisto> НЕ ВЕРЮ!
[21:17:20] <valexey> была даже тема на оборонкоре
[21:17:27] <valexey> константы там сидят в спеке
[21:17:39] <valexey> спеку ты там инклюдишь посредством директивы IMPORT
[21:17:44] <valexey> все то же самое в общем то :-)
[21:17:58] <valexey> спеку поменял - перекомпиляйся
[21:18:06] <valexey> спеку другого модуля конечно же
[21:18:30] <kemiisto> а ну это да
[21:18:34] <valexey> kemiisto: но в плюсцах ты можешь явно сказать, что вот эта переменная нифига не переменная но константа.
[21:18:41] <valexey> extern const int FOO;
[21:18:54] <valexey> с последующим определением оной константы в сипипишнике
[21:19:05] <valexey> физически это переменная, НО компилятор не даст её менять
[21:19:12] <kemiisto> но так принято делать?
[21:19:19] <kemiisto> это я вообще про extern
[21:19:33] <valexey> да. не для констант, но для глобальных переменных - да.
[21:19:37] <valexey> как иначе?
[21:19:53] <valexey> иначе у тебя будут ошибки времени компоновки
[21:21:13] <valexey> kemiisto: у тебя все хорошо со временем на форуме?
[21:21:15] <valexey> у меня все норм
[21:21:21] <valexey> а geniepro жалуется
[21:21:37] <kemiisto> valexey: хм... это как понять?
[21:21:45] <kemiisto> с каким-таким временем?
[21:21:52] <valexey> время создания постов
[21:22:03] <valexey> создаешь пост - смотришь какое время отображается у поста
[21:22:09] <valexey> совпадает ли с твоим локальным
[21:22:26] <kemiisto> valexey: совпадать, вроде, будет только для твоих постов
[21:23:17] <valexey> почему?
[21:23:33] <kemiisto> не знаю
[21:23:39] <kemiisto> на другом форуме вроде так
[21:23:47] <kemiisto> да не суть
[21:23:52] <kemiisto> мне безращлично
[21:24:03] <kemiisto> так
[21:24:19] <kemiisto> в хидере просто extern const int ololo;
[21:24:27] <kemiisto> а в cpp
[21:24:32] <kemiisto> ololo = 10;
[21:24:35] <kemiisto> так?
[21:25:08] <kemiisto> хм...
[21:25:21] <kemiisto> тогда надо создавать ещё один cpp-шник
[21:26:01] <valexey> в cpp: const int ololo = 10;
[21:26:30] <kemiisto> ога
[21:26:58] <valexey> если ты глобальную переменную не объявляешь как static, то она экспортируется из модуля.
[21:27:06] <valexey> и доступна для компоновки с другими модулями
[21:27:12] <valexey> пардон. единицами компиляции
[21:28:20] <kemiisto> а инклюдить хидер надо в этот сппшник?
[21:30:22] <valexey> В общем то не обязательно.
[21:30:26] <valexey> Но можно.
[21:30:28] <vlad2> valexey: а что, правда, что Губанов заставил всех писать один ретурн в шарпе?
[21:30:51] <valexey> vlad2: ну он же сам говорит, что не все соблюдают этот стайл. так что не заставил :-)
[21:30:59] <kemiisto> не работает
[21:31:05] <kemiisto> линкер не видит
[21:31:18] <kemiisto> а нет!
[21:31:33] <kemiisto> теперь пишет already defined
[21:31:38] <kemiisto> про эти символы
[21:32:36] <kemiisto> :'(
[21:32:49] <kemiisto> MainWindow.obj:-1: error: LNK2005: "int const Render::slicesForAtoms" (?slicesForAtoms@Render@@3HB) already defined in main.obj
[21:33:14] <kemiisto> это, видимо, несколько раз этот хидер включаю
[21:33:20] <kemiisto> а гвардов нет
[21:33:22] <kemiisto> !
[21:33:40] <kemiisto> нет, нихуя
[21:33:43] <kemiisto> есть гварды
[21:33:47] <valexey> ты extern забыл
[21:33:50] <valexey> в хедере
[21:33:58] <kemiisto> нет, не забыл
[21:34:09] <kemiisto> всё!
[21:34:12] <kemiisto> нашёл
[21:34:13] <kemiisto> !
[21:34:15] <valexey> ?
[21:34:22] <kemiisto> в хидере значения не убрал
[21:34:27] <kemiisto> extern const GLint slicesForAtoms = 24;
[21:34:32] <kemiisto> надо убрать
[21:34:33] <kemiisto> 24
[21:34:35] <valexey> угу
[21:34:42] <valexey> судя по запаху, у тебя gcc
[21:34:56] <kemiisto> нет
[21:35:00] <kemiisto> MSVC10
[21:35:19] <valexey> а, значит теперь они воняют одинаково.
[21:35:37] <valexey> А, не. Да. У MSVS с этим как раз были проблемы.
[21:36:47] <kemiisto> unresolved external
[21:37:18] <valexey> ГОВОРИ КАК ОБЪЯВЛЯЕШЬ!!1
[21:37:33] <kemiisto> extern const GLint slicesForAtoms;
[21:37:35] <kemiisto> ой
[21:37:40] <valexey> int const Render::slicesForAtoms = 24;
[21:37:42] <valexey> так надо.
[21:37:45] <kemiisto> оно у меня внутри неймспейса же!
[21:37:51] <kemiisto> я понял!
[21:37:52] <kemiisto> :D
[21:37:53] <valexey> именно.
[21:37:59] <kemiisto> сучий С++!
[22:00:17] <valexey> kemiisto: язык нужно знать на котором пишешь! тем более на таком элементарном уровне
[22:13:53] <kemiisto> valexey: толсто!
[22:14:05] <valexey> зато правда
[22:14:29] <kemiisto> не
[22:14:29] <kemiisto> толстота
[22:14:32] <kemiisto> и никакой правды!
[22:14:50] <valexey> истинная правда!
[22:15:37] <kemiisto> too fat to be true...
[22:17:47] <valexey> fat32!
[22:18:18] <kemiisto> ну, толстый тролль!
[22:18:20] <kemiisto> ну, толстый тролль!
[22:18:24] <kemiisto> ну, толстый тролль, погоди!
[22:18:26] <kemiisto> :D
[22:18:30] <valexey> ;-)
[22:18:41] <valexey> да ты вообще переселился на родину троллей!
[22:18:45] <valexey> в скандинавию!
[22:19:27] <kemiisto> я не местный
[22:19:30] <kemiisto> я в гостях!
[22:19:43] <valexey> поломник значит.
[23:01:20] <valexey> kemiisto: а какие языки нужно знать чтобы комфортно жить в Цюрихе?
[23:01:46] <kemiisto> valexey: немецкий, французский
[23:01:49] <kemiisto> в Швейцарии
[23:02:01] <valexey> а как же английский?
[23:02:06] <kemiisto> а в Цюрихе примущественно немецкий
[23:02:16] <kemiisto> valexey: английский не обсуждается
[23:02:21] <kemiisto> его знать обязательно
[23:02:24] <kemiisto> :)
[23:02:25] <valexey> гы.
[23:02:28] <valexey> ужоз
[23:02:30] <valexey> три языка!!1
[23:02:36] <kemiisto> я про быт говорю
[23:02:46] <valexey> э?
[23:02:51] <kemiisto> у них в некоторых районах ещё итальянский вроде
[23:02:59] <kemiisto> valexey: ну бытовое общение
[23:03:05] <kemiisto> в магазин сходит там
[23:03:08] <kemiisto> постричься
[23:03:10] <kemiisto> в суд
[23:03:12] <kemiisto> :)
[23:03:42] <valexey> а клеветы на каком принято там произносить?
[23:04:31] <kemiisto> в Цюрихе?
[23:04:40] <kemiisto> там преимущественно немецкий
[23:04:48] <kemiisto> видимо, на нём и клеветы
[23:04:50] <kemiisto> :)
[23:07:40] <valexey> гм. вроде бы Ткачев там на английском выступление свое гутарил :-)
[23:08:13] <kemiisto> ну ясен перец
[23:08:20] <kemiisto> на международном уровне
[23:08:28] <kemiisto> в академической среде английский
[23:09:41] <valexey> значит самые сочные клеветы на нем