Re[6]: Google code style
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.04.12 10:15
Оценка:
Здравствуйте, Marty, Вы писали:

M>Язык мог бы помочь, если бы элипсис преобразовывался к какому-то более-менее типизированному хранилищу.

M>Как нибудь так:
M>
M>class arg_array;
M>std::string printf( char *fmt, const arg_array &args);
M>class arg_array
M>{
M> ellipsis std::string printf( char *fmt, const arg_array &args);
M> ellipsis arg_array() // ctor
M>  {
M>   //...
M>  }
M>   //...
M>};
M>


Уточню немного.
В вышеприведенной фантазии ключевое слово ellipsis указывает, в первом случае, что правило применяется к указанной функции. И, если компилятор встречает вызов print c подходящими параметрами (до const arg_array &args) то может трактовать список параметров как переменный, и подыскивает конструктор с ellipsis (ну или без), и для каждой ',' подыскивает в классе некий '& operator push_op()'.
Маньяк Робокряк колесит по городу
Re[11]: Google code style
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 02.04.12 10:15
Оценка: +1
Здравствуйте, __kot2, Вы писали:

__>>>я у питона только описание читал. как дочитал до места, что там автоматическое управление памятью, закрыл и забыл про него. это очередное баловство, а не язык.

N>>Вау. И C# баловство, и Java баловство? Да Вы, батенька, эстет.
__>точно с той точки зрения что и iPad — баловство. очень узкая область применения. хотя иногда очень современно и быстро что-то можно сделать.

Завидую Вам — потому, что не знаете, что эта "очень узкая область применения" сейчас преобладает во всей области так называемого "внутреннего ПО" (по Спольски), которая в свою очередь занимает, по разным оценкам, от 70 до 90 процентов всех усилий программистов. Как в анекдоте — "бросить всё и уехать в этот Урюпинск".

N>>>>Фиксированный размер массива на стеке отменён в C99, то есть 12 лет назад.

__>>>в смысле неизменяемый
N>>Ну предположим. И какой сверхглубокий смысл устанавливать неизменяемость размера массива как неотъемлемую характеристику его понятия?
__>значит, у него нет операции добавления элемента и всего гемора, что с этим связано — переноса данных, выбор шага увеличения, отложенная инициализация и т.д.

Я вообще-то не о том. С тем, что даже в C++/C#/Java/etc. иногда полезно вводить понятие массива неизменяемого размера, я заранее согласен. Вопрос в том, почему только такой реализации позволять гордо нести имя "массив", а для изменяемого размера требовать что-то иное?
The God is real, unless declared integer.
Re[16]: STL
От: night beast СССР  
Дата: 02.04.12 10:17
Оценка:
Здравствуйте, Qbit86, Вы писали:

NB>>хз. меня после sql линк как-то не впечатлил.

NB>>дело привычки, в общем.

Q>Linq — это не только SQL-like запросы (можешь SQL-like синтаксис вообще не использовать, просто применять ФВП). Это унифицированный доступ к разным сущностям. Скажем, к потоку событий (т.е. push-, а не pull-модель), с его фильтрацией, отображением, свёрткой. etc.


возможно.
однако заметь, я не рассказываю какое линк г*но, потому что синтаксис условий on убог, или потому что нет группировки по нескольким полям...
Re[12]: Google code style
От: night beast СССР  
Дата: 02.04.12 10:22
Оценка: +3
Здравствуйте, netch80, Вы писали:

N>Я вообще-то не о том. С тем, что даже в C++/C#/Java/etc. иногда полезно вводить понятие массива неизменяемого размера, я заранее согласен. Вопрос в том, почему только такой реализации позволять гордо нести имя "массив", а для изменяемого размера требовать что-то иное?


о. терминологический спор, это так увлекательно
давайте обсудим шарповский List.
Re[15]: Контейнеры
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 02.04.12 10:23
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

N>>Честно говоря, не понял проблему.

N>>Вопрос в том, куда попадает лог, или в выборе конкретных чисел в каком-нибудь %10.4f для их показа?
N>>Или в том, что кому-то религия запрещает вызвать printf в цикле?

SD>то есть вы в выборе между

SD>
SD>logstream("at:" << point);
SD>


SD>и


>>вызвать printf в цикле


SD>добровольно выбираете 2е зная что это нужно каждые 50 строк ? Я чесслово не смог бы лучше за вас описать насколько это эпик.


Вы не объяснили сколь-нибудь внятно, чего именно хотите, а теперь рассказываете про эпик на основании своих домыслов о том, как бы я решал эту задачу. Вам действительно интересны такие игры? Или проще было бы просто ответить на вопросы, а затем уже слушать ответы собеседника?

SD>А геометрия она бывает не только из чисел. Вот например 2d грань это 2 точки и направление


Охотно верю. То есть, если я правильно Вас понял, вся суть ситуации в том, что объект знает, как именно его выводить в конкретном случае, и Вы не хотите расшифровывать внутреннее содержимое потому что 1) это куча громоздкой писанины, 2) это нарушение инкапсуляции. Я правильно понял?
The God is real, unless declared integer.
Re[12]: Google code style
От: __kot2  
Дата: 02.04.12 10:25
Оценка: +1 :)
Здравствуйте, netch80, Вы писали:
N>Завидую Вам — потому, что не знаете, что эта "очень узкая область применения" сейчас преобладает во всей области так называемого "внутреннего ПО" (по Спольски), которая в свою очередь занимает, по разным оценкам, от 70 до 90 процентов всех усилий программистов. Как в анекдоте — "бросить всё и уехать в этот Урюпинск".
автоматизация работы предприятия? скучно. я не для этого программистом хотел в детстве стать
Re[16]: Контейнеры
От: SleepyDrago Украина  
Дата: 02.04.12 10:41
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, SleepyDrago, Вы писали:

...

N>Вы не объяснили сколь-нибудь внятно, чего именно хотите, а теперь рассказываете про эпик на основании своих домыслов о том, как бы я решал эту задачу. Вам действительно интересны такие игры? Или проще было бы просто ответить на вопросы, а затем уже слушать ответы собеседника?


SD>>А геометрия она бывает не только из чисел. Вот например 2d грань это 2 точки и направление


N>Охотно верю. То есть, если я правильно Вас понял, вся суть ситуации в том, что объект знает, как именно его выводить в конкретном случае, и Вы не хотите расшифровывать внутреннее содержимое потому что 1) это куча громоздкой писанины, 2) это нарушение инкапсуляции. Я правильно понял?


да на 1). Самая популярная описка это спутать ось координат точки в выражении .

про 2 я вас не понял. Для простоты не нужна там инкапсуляция.

На счет локализации да там будет идеален вариант "текст {идентификатор1} текст {идентификатор2} текст". Но такие программы редко нуждаются в локализации. Так что локализация не нужна.
Re[15]: Форматные строки
От: Qbit86 Кипр
Дата: 02.04.12 11:01
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

Q>>В нормальном API это выглядит так:

Q>>
Q>>Console.WriteLine(GetPointFormatString(), point); // Где GetFormatString() это «Current point: {0}.» или «Текущая точка: {0}.».
Q>>

Q>>А в C++ как динамически менять выводимое сообщение и его структуру (скажем, вывести точку дважды при каких-то настройках в логе)?

SD>Стоп стоп стоп я популярно объяснил что пойнт консольке не знаком? Или надо еще раз. Читайте медленно — поинт это структура из программы.


Что значит «консольке не знаком»? В C++ по умолчанию знаком, что ли? Или таки требует реализацию каких-то методов (типа оператор вывода)?
Глаза у меня добрые, но рубашка — смирительная!
Re[15]: Неоднозначность
От: Qbit86 Кипр
Дата: 02.04.12 11:44
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>logstream("at:" << point);


Такой код перестанет компилироваться, как только разработчики структуры Point добавят свой собственный вывод в поток (обнаруживаемый через ADL) — будет неоднозначность. Или, скажем, такой оператор уже есть, просто неподходящий, а нам нужно своё форматирование.
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: Google code style
От: MasterZiv СССР  
Дата: 02.04.12 12:05
Оценка: 1 (1) +2
если
> кто-то до сих пор продолжает использовать printf вместо потоков, он не понимает
> философии С++ и ему вообще писать на нем не следует. а тем более делать какие-то
> там стандарты С++ кода

Ага, засунь свою философию знаешь куда ?

С++ уже был нормальным языком лет десять, прежде чем эту потоковую библиотечку
изобрели, вместе с шаблонами.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: Google code style
От: __kot2  
Дата: 02.04.12 12:21
Оценка: :)
Здравствуйте, MasterZiv, Вы писали:
MZ>Ага, засунь свою философию знаешь куда ?
да ты я вижу крут, чувачок.

MZ>С++ уже был нормальным языком лет десять, прежде чем эту потоковую библиотечку

MZ>изобрели, вместе с шаблонами.
только вот я покруче тебя буду. я писал на С++ с тех пор когда еще stl не стандартизовали.
он тогда все равно был, но не стандартизован. вместо <iostream> писали <iostream.h>, не было namespace std, все было в глобальном и мелочи были типа не ios_base::in, а ios::in
stl появился почти сразу с С++, как только туда шаблоны добавили
Re[17]: STL
От: koodeer  
Дата: 02.04.12 12:27
Оценка: 1 (1) :)
Здравствуйте, night beast, Вы писали:

NB>однако заметь, я не рассказываю какое линк г*но, потому что синтаксис условий on убог, или потому что нет группировки по нескольким полям...


Группировка по нескольким полям:

group x by new { x.Field1, x.Field2}

Не?

Насчёт синтаксиса on. Сдаётся мне, вы пытаетесь использовать linq ненадлежащим образом. Сколько встречал опытных разработчиков баз данных, практически все пытаются переводить sql-запросы тупо один в один на linq-запросы. Но это неправильно! Это разные технологии.
Аналогично, например, программеры пытаются перенести свой опыт ООП из таких языков, как C++,C#,Java на JavaScript: плюются на дурацкое, с их точки зрения, прототипное ООП. Оно не дурацкое, оно другое!

Может, всё же стоит освоить linq?
Вот, например, кратенько-кратенько: http://www.linqpad.net/WhyLINQBeatsSQL.aspx Полагаю, некоторые предубеждения по прочтении развеются сами.
Вообще, для понимания LINQ рекомендую книги Албахари.
Re[15]: Форматные строки
От: koodeer  
Дата: 02.04.12 12:40
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Здравствуйте, Qbit86, Вы писали:


Q>>В нормальном API это выглядит так:

Q>>
Q>>Console.WriteLine(GetPointFormatString(), point); // Где GetFormatString() это «Current point: {0}.» или «Текущая точка: {0}.».
Q>>


SD>Стоп стоп стоп я популярно объяснил что пойнт консольке не знаком? Или надо еще раз. Читайте медленно — поинт это структура из программы.


В данном случае автоматически вызовется метод ToString. Если он не переопределён, то по умолчанию выведется что-то вроде:

MyNamespace.MyClass+Point


Стоит отметить, что перегрузка метода ToString — практически обязательное условие при написании нового класса/структуры. Таким образом, консольке point знаком в любом случае.
Re[16]: ICustomFormatter
От: Qbit86 Кипр
Дата: 02.04.12 12:43
Оценка:
Здравствуйте, koodeer, Вы писали:

K>Стоит отметить, что перегрузка метода ToString — практически обязательное условие при написании нового класса/структуры. Таким образом, консольке point знаком в любом случае.


Он, может, и знаком, но, возможно, делает не то, что нужно в конкретном синтетическом примере.

Однако функции форматирования содержат перегрузки, принимающие IFormatProvider. Достаточно его реализовать (вместе с ICustomFormatter'ом) требуемым образом.
Глаза у меня добрые, но рубашка — смирительная!
Re[5]: Google code style
От: MasterZiv СССР  
Дата: 02.04.12 13:12
Оценка:
> MZ>Ага, засунь свою философию знаешь куда ?
> да ты я вижу крут, чувачок.

Да, в общем, не дурак.

Ты извини уж, резковато получилось, но вот чего в С++ нет и никогда не было,
так это философии. Единственная его философия -- это компромис между
производительностью и типобезопасностью и другими безопасностями.

> MZ>С++ уже был нормальным языком лет десять, прежде чем эту потоковую библиотечку

> MZ>изобрели, вместе с шаблонами.
> только вот я покруче тебя буду. я писал на С++ с тех пор когда еще stl не
> стандартизовали.

Да я тоже писал.
Вообще-то с ... эээ ... с 1990-го где-то...
Posted via RSDN NNTP Server 2.1 beta
Re[16]: Неоднозначность
От: SleepyDrago Украина  
Дата: 02.04.12 13:17
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, SleepyDrago, Вы писали:


...

Q>
SD>logstream("at:" << point);


Q>Такой код перестанет компилироваться, как только разработчики структуры Point добавят свой собственный вывод в поток (обнаруживаемый через ADL) — будет неоднозначность. Или, скажем, такой оператор уже есть, просто неподходящий, а нам нужно своё форматирование.


поскольку диспетчеризуем по 2м аргументам то необязательно быть автором структуры чтобы в наш лог она выводилась однозначно. Проблемы только у тех кто гвоздями прибивает в коде единственно правильный поток

ps и принтэфы в цикле и print_point'ы все я успел повидать.
Re[17]: Неоднозначность
От: Qbit86 Кипр
Дата: 02.04.12 13:26
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

Q>>
SD>logstream("at:" << point);


Q>>Такой код перестанет компилироваться, как только разработчики структуры Point добавят свой собственный вывод в поток (обнаруживаемый через ADL) — будет неоднозначность. Или, скажем, такой оператор уже есть, просто неподходящий, а нам нужно своё форматирование.


SD>поскольку диспетчеризуем по 2м аргументам то необязательно быть автором структуры чтобы в наш лог она выводилась однозначно. Проблемы только у тех кто гвоздями прибивает в коде единственно правильный поток :beer:


Т.е. ты выводишь не в std::ostream, а в свой поток конкретного типа? Что такое logstream?

SD>ps и принтэфы в цикле и print_point'ы все я успел повидать.


В соседней ветке я описал, как это будет выглядеть в C#. Без обёрток типа print_point. Грубо говоря, аналогом плюсового оператора вывода будет реализация одного метода в ICustomFormatter.
Глаза у меня добрые, но рубашка — смирительная!
Re[18]: STL
От: night beast СССР  
Дата: 02.04.12 14:30
Оценка: +1
Здравствуйте, koodeer, Вы писали:

NB>>однако заметь, я не рассказываю какое линк г*но, потому что синтаксис условий on убог, или потому что нет группировки по нескольким полям...


K>Группировка по нескольким полям:


K>
K>group x by new { x.Field1, x.Field2 }
K>

K>Не?

возможно.

K>Насчёт синтаксиса on. Сдаётся мне, вы пытаетесь использовать linq ненадлежащим образом. Сколько встречал опытных разработчиков баз данных, практически все пытаются переводить sql-запросы тупо один в один на linq-запросы. Но это неправильно! Это разные технологии.


ага. это фича. знакомо.

K>Аналогично, например, программеры пытаются перенести свой опыт ООП из таких языков, как C++,C#,Java на JavaScript: плюются на дурацкое, с их точки зрения, прототипное ООП. Оно не дурацкое, оно другое!


то же можно сказать про stl, не?

K>Может, всё же стоит освоить linq?

K>Вот, например, кратенько-кратенько: http://www.linqpad.net/WhyLINQBeatsSQL.aspx Полагаю, некоторые предубеждения по прочтении развеются сами.

обычная агитка, ничего интересного.
веселье начинается когда начинаешь переносить рабочие запросы в шарп.

K>Вообще, для понимания LINQ рекомендую книги Албахари.
Re[7]: Google code style
От: GreyMan  
Дата: 02.04.12 15:46
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, Marty, Вы писали:


M>>Язык мог бы помочь, если бы элипсис преобразовывался к какому-то более-менее типизированному хранилищу.

std::initializer_list вместе с собственным лисапедом?
struct Var
{
    Var(const char a);
    Var(const int a);
    Var(const float a);
    Var(const double a);
    Var(const char* a);
    Var(const string&a);
};
void printm(const string s,const initializer_list<var>&list);

...

printm("Format string",{'a',1,2.3."aa"});
Re: Google code style
От: alex_public  
Дата: 02.04.12 17:50
Оценка:
Хы, одному мне кажется что потоки и контейнеры C++ тут обсуждают больше всего C# люди, которые уже "забыли всё" (или вообще не знали)? )))
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.