[00:00:21] <jordan36957> Так препроцессор это отдельная программа, я кстати mcpp использовал для pascal, пока не понял что лучше использовать sed.
[00:01:09] <jordan36957> У qt вообще свой препроцессор.
[00:02:03] <jordan36957> Си однозначно отпадает, так как это бессмысленно.
[00:03:02] <valexey> Не. Препроцессор в Си это часть языка.
[00:03:10] <valexey> Так что это не отдельная программа.
[00:04:30] <valexey> #define MAX(a,b) ((a)>(b) ? (a) : (b))
[00:05:03] <valexey> вот, пожалуйста :-) обобщенная "функция" выдает максимум всего что имеет оператор <
[00:05:23] <valexey> Да, а еще в D есть модули... :-D
[00:05:32] <valexey> И нет хедеров!
[00:05:40] <jordan36957> Ведь правда проиходит дублирование кода и это всё приходится держать в голове. Возможно ли это решить без шаблонов или шаблоны и есть естественный путь к обобщенному программированию?
[00:06:23] <valexey> А что именно в шаблонах тебя смущает? Ну можно назвать не шаблонами, а дженериками - лучше будет? :-)
[00:09:01] <jordan36957> Просто я раньше думал, что приведение типа это стандартный путь. Одна функция и разные  типы.
[00:09:53] <valexey> Нет. Это не безопасно, и вообще плохо (но в некоторых случаях хорошо, иногда это полезно).
[00:12:02] <valexey> Программирование штука странная - тут нет единого рецепта чтобы всегда все было хорошо. Догмы - зло.
[00:13:24] <jordan36957> Это понятно, но хотелось бы найти золотую середину, я же не ос пишу, но и не hello word.
[00:14:16] <valexey> (кстати: мои циклы были на хакатоне такими не правильными... там и break встречался :-) )
[00:15:51] <vlad2> Дык, надо было код фигачить, а не о Дейкстре думать ;)
[00:16:02] <valexey> угу :-)
[00:16:22] <valexey> и над собственно задачей думать, а не о том что у меня не структурненько как-то выходит.
[00:17:38] <jordan36957> Можно внести переменную found
[00:17:40] <valexey> то есть сама то задача - это работа с ихображением и IR-сенсором который дает depth-картинку. И над эргономикой думать.
[00:17:57] <valexey> jordan36957: а смысл? break отлично отрабатывает :-)
[00:18:07] <valexey> И ни разу проблем с ним не было за эти 48 часов.
[00:18:22] <valexey> А переменные плодить... Да ну нафиг. Погребет же.
[00:18:38] <valexey> Ну и учти что у меня там до 5 вложенных циклов. 5 переменных?
[00:19:04] <jordan36957> Разбить на функции?
[00:19:19] <valexey> Ну и пока думаешь о этих переменных - задачу не решаешь. Жюри и пользователям пофигу на эти переменные и на бряки. Им надо чтобы работало. И работало как надо.
[00:19:35] <jordan36957> inline функции если нужна производительность.
[00:20:22] <valexey> Неа. Я бы контекст потерял (в голове). И вместо 300 строк кода получилось бы больше. Чтение программы стало бы слишком не линейным.
[00:20:40] <valexey> Да, а современные компиляторы не нуждаются в inline чтобы инлайнить - они сами с усами :-)
[00:22:36] <valexey> Да, код местами жутковат. Да его надо весь переписать. Но свою задачу он выполняет.
[00:22:46] <valexey> Точнее уже выполнил :-)
[00:23:47] <valexey> (так и представляю - надвигается на землю астероид, надо быстро написать прогу для наведения на этот астероид ракет, а достопочтенные доны сидят, и рассуждают о правильных циклах)
[00:24:58] <jordan36957> Я же читал на форуме поздрвляю. Может для быстрого кодинга оно и верно.
[00:25:36] <valexey> Спасибо :-)
[00:25:54] <vlad2> Дык да, такой код в помойку, потому все равно переписывать будет.
[00:25:58] <jordan36957> Уверен, что её будут не один раз отлаживать, а вдруг прогер запутался в цикле и в самый нужный момент программа упадёт, и ракеты не взлетят.
[00:26:31] <jordan36957> А астероид достигнет своей цели. И всё из за брейка.
[00:27:15] <jordan36957> Ты когда код писал, часто запускал его для проверки?
[00:27:54] <vlad2> Астероид достигнет своей цели, потому что люди на айпадах с фэйсбуком играются, а не ракеты строят ;) Собствеенно про этот тот чувак (Тайсон) на лекции и рассказывал.
[00:28:01] <valexey> Это было не равномерно. Иногда я часа два ходил кругами по темным каридорам и думал над алгоритмом.
[00:29:11] <valexey> Но собственно именно что ошибок в циклах я не помню. Если оно и было, то настолько не значительно относительно остального, что просто не запомнилось.
[00:30:00] <valexey> Кстати, по опыту - в первую очередь нужно избавляться от магических констант и уже после этого корячить циклы убирая бряки.
[00:30:16] <valexey> Ибо с магическими константами я там как раз напарывался.
[00:30:27] <valexey> И после первого же раза выкинул их все и назвал по человечески.
[00:30:49] <valexey> После этого производительность труда существенно возросла.
[00:32:42] <valexey> Ну и если бы я кольцевой буфер на массивах реализовывал бы, с соответствующим шаманством с индексами, я бы либо получил просадку по производительности, либо словил бы пачку багов.
[00:32:51] <valexey> А скорее всего и то и другое последовательно.
[00:33:06] <valexey> Ну и код основной логики превратился бы в свалку.
[00:35:02] <jordan36957> Вектор и есть массив.
[00:35:31] <valexey> А я и векторами не пользовался :-)
[00:35:45] <valexey> Я написал свой кольцевой буфер. Код его я сюда кидал.
[00:36:54] <valexey> То есть создал себе удобную абстракцию. Быстро и надежно. Вместо работы с массивами напрямую.
[00:38:30] <jordan36957> buf[head]=v; где абстракция обращение по индексу.
[00:38:44] <jordan36957> head итератор
[00:39:04] <valexey> абстракция это ring_buffer :-)
[00:39:10] <valexey> сам.
[00:39:13] <jordan36957> сам буфер статический
[00:39:36] <valexey> один раз его реализвал а дальше использую.
[00:40:02] <jordan36957> А понял, я просто слово template пропустил.
[00:40:30] <valexey> Да и без слова template должно было быть понятно что это тип данных описывается :-) там же struct
[00:40:58] <jordan36957> Да я мельком глянул, не вдаваясь в подробности
[00:44:43] <jordan36957> Теперь осталось подключить sdl к mingw я как то пробывал, всё не компилит и не компилит. Снес и больше не заморачивался. Правда я mingw использовал не с сайта mingw, а стороння сборка.
[00:47:13] <valexey> а что ты там ваяешь такое sdl'ное?
[00:49:53] <jordan36957> Пока разное работа с графикой со звуком, особо не серъезное, только что бы разобраться, что да как.
[00:50:17] <valexey> угу
[00:50:50] <jordan36957> gui забросил. Но нашёл исходники opengui, как я был рад что они написаны без ооп. Мне хоть стало понятней, что да как.
[00:51:46] <jordan36957> Хотя макрос на макросе и макрос макросом макрос подгоняет. Запутанный код.
[00:53:09] <valexey> ну, тут главное в абстракции врубиться
[00:54:19] <valexey> чем выше абстракция, тем лучше она должна быть документирована
[00:55:08] <jordan36957> У меня есть желание создать библиотеку gui и на ней desctop для linux. Типа легковесной среды. Но вот осилю ли. Такое не за один день пишется и не одним человекам. Но это всего лишь мысли.
[00:58:08] <valexey> ну, что-то получится при должном тщании :-)
[00:58:26] <valexey> не то чтобы кто-то этим будет активно пользоваться, но поиграться можно будет.
[00:58:47] <jordan36957> Функционал opengui дублирует sdl особенно работу с поверхностями surface. Им нужно было сразу на sdl писать. И всё кросплатформенно.
[01:00:35] <jordan36957> Написан на C++, без ооп почти красиво. Но макросов напихали. Вся работа идёт как раз через индексы, а строки в char
[01:03:15] <valexey> Точно на С++ а не на Си?
[01:04:39] <jordan36957> Точно С++.
[01:04:44] <valexey> ага, вижу.
[01:04:49] <jordan36957> namespaceов полно.
[01:06:29] <valexey> И классы имеются.
[01:06:37] <jordan36957> Названия функций оригинальные FGWindow::Rozporcuj(int X1, int Y1, int X2, int Y2, int *in, int *out)
[01:07:04] <valexey> У sdl одна проблема - оно больше одного окна не умеет (текущая версия).
[01:07:41] <valexey> Гм. его похоже словаки писали что ли..
[01:08:01] <jordan36957> Так захордкожено глобальная переменная SDL_WINDOW
[01:09:49] <jordan36957> SDL_WINDOW это окно программы тип hwnd на ней всё и отрисовывается. С поверхностями разбираюсь. Мне интересна архитектура sdl.
[01:12:49] <valexey> ну, hwnd оно только в виндах, а sdl оно не только в виндах :-)
[01:13:39] <jordan36957> Я смотрел реализацию в windows, у меня Петзольд есть он очень хорошо описал работу с окнами.
[01:14:33] <valexey> Ну, вообще sdl для рисоваия небось DirectX должно пользовать а не gdi
[01:15:11] <jordan36957> Ох и замудренный у них апи. Там есть как и dx так и gl, но gdi вроде есть.
[01:15:53] <valexey> ну ясное дел. sdl рисовать может через несколько задников. в зависимости от того как попросят и что возможно.
[01:16:06] <jordan36957> Да он блитит c помощью gdi
[01:17:59] <valexey> сие странно весьма. уверен что это не один из вариантов?
[01:19:55] <jordan36957> Он поддерживает как gdi так и gl. Аппаратное ускорение включается отдельно, в основнос все софтофо через gdi, но быстро. Ещё есть glsdl, gl уже встроен.
[01:20:37] <valexey> помню в 1998 году gdi и "быстро" вообще никогда рядом не стояло :-)
[01:22:15] <jordan36957> Скорей всего какие то функции ускоряются.
[17:32:15] <ilov_boris> vlad, объясни плиз на пальцах что такое const char*
[17:33:12] <ilov_boris> у меня есть переменная такого типа
[17:33:24] <ilov_boris> делаю ей free()
[17:33:55] <ilov_boris> компилер ворнинг выдает "разные квалификаторы const"
[18:01:42] <vlad3> Это указатель на строку, содержимое которой нельзя менять.
[18:02:08] <vlad3> подозреваю, что free хочет void*
[18:02:24] <vlad3> Т.е. указатель на что-то, что можно менять.
[18:04:01] <vlad3> Чтоб задушить варнинг можно привести указатель к неконстантному: const_cast<char*>(p)
[18:04:59] <vlad3> Но вообще это похоже на твою ошибку.
[18:05:33] <ilov_boris> Спасибо я уже разобрался
[18:05:39] <vlad3> Ты через malloc получил (скорее всего) char* (неконстантный)
[18:06:02] <ilov_boris> Это строка возвращенная Lua'ой
[18:06:04] <vlad3> А в free отдаешь уже константный char const*
[18:06:32] <vlad3> А ее надо отдавать в free?
[18:06:43] <ilov_boris> Оказалось что не надо
[18:06:50] <vlad3> Там нет какой-нибудь Lua_free?
[18:06:54] <ilov_boris> ее сборщик мусора сам потом собирает
[18:06:59] <vlad3> Ну вот :)
[18:07:21] <ilov_boris> Осваиваю написание либ для Lua на сях
[18:07:24] <ilov_boris> :)
[18:07:28] <vlad3> А.
[18:08:14] <ilov_boris> vlad, а этот конст просто для удобства?
[18:08:27] <ilov_boris> чтобы случайно данные не испортить
[18:08:28] <ilov_boris> ?
[18:11:00] <ilov_boris> Либы для Lua кстати очень легко писать
[18:11:09] <ilov_boris> API очень простой и понятный
[21:38:25] <vlad3> Да, чтобы данные не портить. Типизация строгая типа.
[23:20:05] <valexey> вообще ВСЕ типы они для удобства :-) машине они нафиг бы не нужны
[23:20:15] <valexey> что в сях: что в плюсах что в обероне
[23:20:30] <valexey> ilov_boris: похоже твое сообщение останется без ответа на оборонкоре :-)
[23:20:59] <ilov_boris> Нда...
[23:21:26] <ilov_boris> Пофик
[23:21:30] <ilov_boris> Сами сделаем
[23:21:32] <ilov_boris> :)
[23:22:49] <valexey> народу банально страшно выходить во внешний мир :-) там и побить могут :-)
[23:23:00] <valexey> комингаут страшен же!
[23:23:08] <ilov_boris> :D
[23:23:48] <ilov_boris> Они там такие все эксперты как до холивора дойдет
[23:24:30] <ilov_boris> А статью писать некому...
[23:25:32] <ilov_boris> IUP няшная штука
[23:25:52] <valexey> На хабр страшно выходить же - если напишешь плохо, не профессионально, не интересно и не правду, заминусуют же. По сути это будет бан пользователями.
[23:26:01] <valexey> То есть от пользователей ресурса.
[23:26:51] <ilov_boris> Так они уж сколько лет с этим обероном
[23:27:13] <ilov_boris> Тут даже при остуствии таланта можно хорошо написать
[23:27:15] <ilov_boris> :)
[23:27:36] <ilov_boris> Главное не врать
[23:27:48] <valexey> Только за эти годы у них восприятие реальности исказилось, и действительно правду они написать не смогут. См. сайт info21
[23:28:25] <valexey> Ну, с их точки зрения это выглядит так - ополченцы закидают навозом.
[23:29:28] <ilov_boris> Нда... затык
[23:30:39] <ilov_boris> Я тут штучку няшную наковырял https://code.google.com/p/win-iconv/
[23:30:56] <ilov_boris> Реализация iconv через winapi
[23:31:06] <ilov_boris> dll 20 кб
[23:31:07] <ilov_boris> :)
[23:33:55] <valexey> :-)
[23:34:24] <ilov_boris> GNU-шная реализация под винду 800 кб
[23:35:00] <ilov_boris> Вопрос: нафик на венде использовать GNU-шную реализацию?
[23:35:02] <ilov_boris> :D
[23:35:41] <valexey> Самое смешное что статьи по математике, физике, хаскелю и даже D народ навозом не закидывает. Так почему же должны закидать статью про Оберон? Быть может потому, что почти каждая статья про Оберон чуть менее чем полностью состоит из пафоса и высокомерия? Даже в Виртовских книгах это сквозит.
[23:38:15] <ilov_boris> Гы гы
[23:38:51] <ilov_boris> Кроче их помощь даже во вред будет
[23:40:49] <ilov_boris> valexey: че будет если я в функции определил переменную и вернул ее с "&" &
[23:40:51] <ilov_boris> ?
[23:40:59] <ilov_boris> в сях
[23:41:30] <ilov_boris> замыкание? :D
[23:44:03] <valexey> ога, короткое замыкание :-)
[23:44:12] <valexey> вернется адрес локальной переменной которой уже нет
[23:44:23] <valexey> следовательно - UB при попытке что-то сделать по этому адресу
[23:46:33] <ilov_boris> В Lua API приколькое
[23:46:50] <ilov_boris> Все через стек делается
[23:47:14] <ilov_boris> Например хочешь вернуть два значения
[23:47:28] <ilov_boris> пушишь их в стек и делаешь return 2
[23:48:09] <valexey> а, ну это не системный (сишный) стек, это тупо обычная структура данных в куче - стек Луа.
[23:48:22] <valexey> Это у большенства встраиваемых язычков так.
[23:48:23] <ilov_boris> ога
[23:48:54] <ilov_boris> А еще можно кложуры прямо из сишного кода создавать
[23:49:01] <ilov_boris> и тоже все через стек
[23:49:31] <valexey> ну да. какие проблемы? виртуальная машина же :-)
[23:49:46] <valexey> это программирование на уровне асма по сути.
[23:50:04] <ilov_boris> только с блэкджеком и шлюхами :D
[23:50:25] <valexey> угу :-)
[23:51:30] <ilov_boris> вот простейший кложур: http://www.lua.org/pil/27.3.3.html
[23:52:18] <valexey> угу.
[23:52:40] <ilov_boris> йа тащусь
[23:52:58] <ilov_boris> Прикольно что это даже я осилил
[23:53:12] <valexey> :-)
[23:53:13] <ilov_boris> не зная сей
[23:53:17] <ilov_boris> :)
[23:53:35] <valexey> да фигли там - оно простое и примитивное. это ж не плюсы :-)
[23:54:00] <valexey> ну и асмы/виртуальные машины тоже простые и примитивные по сути своей.
[23:54:43] <ilov_boris> Ну я пасквилянт больше
[23:55:00] <ilov_boris> от некоторых манипуляций в сях у меня мозг заворачивает
[23:55:21] <valexey> паскаль от си почти не отличается :-)
[23:55:36] <valexey> они ж родственники :-)
[23:55:48] <ilov_boris> Ога
[23:55:58] <ilov_boris> Как я и моя сестра тоже родственники :D
[23:56:19] <valexey> ну, примерно, да. вот если взять haskell - вот там мозги завернутся ;-)
[23:56:25] <valexey> или пролог. или рефал.
[23:56:35] <ilov_boris> ой хаскелл это ващееееее
[23:56:55] <valexey> это не ваще, это просто не родственник ни сям ни паскалям. :-) он действительно другой.
[23:57:02] <ilov_boris> вот вот
[23:57:10] <ilov_boris> придется забывать все что знаю
[23:57:12] <ilov_boris> :D
[23:57:32] <ilov_boris> надо книжку по хаскелю купить
[23:57:38] <ilov_boris> и курить на досуге
[23:57:43] <valexey> :-)
[23:58:40] <ilov_boris> ну си я техоооонечько тоже осваиваю
[23:58:51] <ilov_boris> тем более сейчас стимул появился
[23:59:11] <ilov_boris> в связи с изучением Lua
[23:59:18] <valexey> смотри, затянет! :-)