[15:48:15] <valexey> О! Гугл потихоньку превращается таки в корпорацию зла
http://habrahabr.ru/blogs/google/136425/
[16:08:19] <vlad2> А куда им деваться? :) Корпорация же ш :)
[16:22:32] <valexey> про инкапсуляцию: http://habrahabr.ru/blogs/programming/136392/
[16:26:36] <valexey> "Перемещение свободной функции в класс с оформлением ее в виде статического метода, только для того, чтобы показать, что она соприкасается с этим классом, является плохой идеей."
[16:35:05] <vlad2> Стопудова.
[16:36:17] <valexey> а как же, как же автокомплит? ведь по точечке в IDE я не увижу эту функцию!!1
[16:36:43] <valexey> как обычная офисная быдлопрограммера найдет эту функцию?!
[16:37:00] <valexey> особенно в каком-нибудь шарпе или жабе, где нет хедеров как класса
[16:37:47] <vlad2> Используй нэймспэйсы (применительно к C++)
[16:38:27] <valexey> а к жабе и прочим недошарпам и D?
[16:38:28] <vlad2> Статические методы нарушают инкапсуляцию - факт.
[16:38:41] <valexey> да и просто методы нарушают её :-)
[16:38:46] <vlad2> Там тоже есть пэкэджи тп.п
[16:39:08] <vlad2> Да. Именно поэтому их одолжно быть _мало_. А не как у std::string
[16:39:29] <valexey> это конечно здорово, но IDE не позволяет найти среди этих 100500 функций что в пакете определены, именно те, которые имеют отношение к одному из типов
[16:39:34] <valexey> тебе нужному типу
[16:39:35] <vlad2> мало и по делу. Все остальное - статическими _не френдами_.ю
[16:39:36] <valexey> классу
[16:40:03] <vlad2> Не клади 100500 функций в один нэймспэйс :)
[16:40:43] <valexey> ну, это тяжко. кроме того, ты учти, что функции не методы могут быть писаны кем угодно. то есть они могут быть в разных пакетах.
[16:40:48] <valexey> и их надо найти ВСЕ
[16:41:33] <valexey> у народа же рефлекс на ООП - ООП это то, что позволяет написав имя переменной и поставив точечку увидеть все что с ней можно сделать :-)
[16:41:44] <vlad2> Это общая проблема "бардака в проекте". Запихивание всего в мемберы класса никак ее не решает.
[16:42:02] <valexey> решает! по точечке я их так увижу все!
[16:42:05] <vlad2> Да-да. Правду сказал. Именно такое отношение к ООП.
[16:42:12] <valexey> :-)
[16:42:17] <vlad2> У меня было тоже сколько то лет назад :)
[16:42:35] <valexey> угу. и у меня.
[16:43:05] <valexey> помню тогда я успешно шаблон порвал с помощью Ады, а затем добил с помощью функциональщины :-)
[16:43:29] <valexey> Кстати, единственный язык где эта инструментальная проблема хоть как-то решается - это хаскель
[16:43:42] <vlad2> Я не помню, что именно мне помогло... Но был качественный скачок, да.
[16:43:56] <valexey> то есть там есть инструментарий который позволяет найти все функции которые имеют отношение вот к данному вот типу
[16:44:21] <valexey> В том числе обобщенному. И все функции которые имеют вот такую вот обобщенную сигнатуру.
[16:44:27] <vlad2> Да, только ты обычно таки пишешь в редакторе имя функции, а не тип ее аргумента.
[16:44:53] <vlad2> А вообще, конечно, какой-нибудь решарпер тебе и для C# найдет все функции с таким аргументом.
[16:45:39] <valexey> ну, я же когда пишу, если не знаю имени функции, я примерно представляю какие типы у нее должны быть. по крайней мере один тип. и задача стоит - найти имя этой функции
[16:46:32] <vlad2> Хм. Обычно представляешь где такая функция должна лежать. Если хоть какой-то порядок в проекте есть.
[16:46:50] <valexey> ну, например тип какой-нибудь аля графический контекст. и я точно знаю что с помощью него и такой-то матери можно нарисовать линию. но не знаю как эту функцию в точности зовут. но по крайней мере тип одного аргумента я знаю.
[16:49:27] <vlad2> Искать по "line" :)
[16:50:18] <valexey> а не всегда :-) бывает что там просто типо AddPoint а потом stroke или как-то так.
[16:51:20] <vlad2> Читать документацию :)
[16:52:04] <valexey> это только в самом крайнем случае :-)
[17:09:39] <valexey> вообще забавно конечно. похоже пригодность языка для построения инструментария для него (возможно инструментарий пишется на другом языке) местами важнее чем пригодность оного языка для написания программ в блокнотике (то есть без инструментария)
[17:10:58] <vlad2> Угу.
[17:11:14] <vlad2> Семантический редактор? :)
[17:11:32] <valexey> тьху на тебя! ;-)
[17:11:58] <valexey> сематический редактор не дотягивает до возможностей современных IDE для той же жабы :-)
[17:12:59] <vlad2> Ну если в него вбухать столько же бабла... :)
[17:21:32] <valexey> ну, я не про то что реализовано уже говорю, а про то что хотя бы запланированно в мечтаниях в этом семантическом редакторе :-)
[17:25:22] <valexey> Вообще, теоретически, тот же Оберон вполне приспособлен для того, чтобы вокруг него строить инструментарий для разработки и анализа кода.
[17:25:36] <valexey> только этим никто не пользуется
[17:26:35] <valexey> пик IDE-строительства там - убогий ББ
[17:27:27] <vlad2> Угу.
[17:29:19] <valexey> Вообще забавно, похоже С++ сливает всяким жабам и шарпам не из за того, что сборщика мусора, скажем, нет, а именно из за малой пригодности для построения инструментария вокруг.
[17:30:06] <valexey> И, кстати, поэтому clang сейчас отличается от старых компиляторных инфраструктур именно тем, что предоставляет возможности построения всевозможного собственного инструментария даже для плюсов.
[18:28:31] <valexey> плюсы рулят! построение всего дерева для Хаффмана заняло 10 строк кода.
[18:28:38] <valexey> это вам не паскаль
[18:52:24] <valexey> vlad2: а в плюсах есть гарантии что у первого элемента массива адрес меньше чем у последнего?
[19:24:14] <vlad3> Да, должна быть такая гарантия.
[19:24:39] <valexey> это было бы хорошо
[19:24:45] <vlad3> И что указатель за последний элемент является валидным (если не разименовывать).
[19:25:07] <valexey> интересно, а в Обероне такая гарантия есть? ;-) Про возрастание адресов.
[19:25:28] <vlad3> В оберонах гарантии дает конкретная реализация :)
[19:26:36] <valexey> ога-ога. причем конкретная версия конкретной реализации
[19:26:49] <valexey> а в следующей версии уже бац и все не так
[20:14:09] <vlad3> Дык info21 говорил же - пользователи умоляют ничего не менять ;)
[20:26:20] <valexey> ну да, гарантий то в спеке не прописано!
[20:26:22] <valexey> потому и умоляют ;-)
[20:42:08] <valexey> vlad3: а когда у нас может с сегфолтом падать dynamic_cast?
[20:43:18] <valexey> Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff847b37a2 in __dynamic_cast ()

[21:06:12] <valexey> ололо какой я идиот
[21:06:20] <valexey> /me пойдет побьется башкой апстену
[21:49:44] <kemiisto> .
[21:50:08] <kemiisto> valexey: ты киндл то купил?
[21:50:59] <valexey> нет
[21:51:24] <kemiisto> а чё так? iPad 3, ждём, верим? :D
[21:51:49] <valexey> да как-то не до того :-)
[21:53:16] <kemiisto> ой да ладно
[21:53:24] <valexey> та реально
[21:53:25] <kemiisto> работа?
[21:53:28] <valexey> угу
[21:53:35] <valexey> /me насилует Хаффмана
[21:53:41] <kemiisto> завязывай :D
[21:53:49] <kemiisto> и с насилием тоже
[21:55:24] <valexey> да ладно, мне уже нравится!
[23:09:54] <valexey> так.  кодировать Хаффманом 20ти битные числа была плохая идея.