Re[32]: MSVC2010 + C99
От: Piko  
Дата: 26.06.12 21:26
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>>>>>У меня только один вопрос, откуда такой мистический страх перед void* и макросами?

P>>>>страха нет.
P>>>>это тупо не type-safe, разве не очевидно? (есть и другие, но менее важные причины)
AS>>>Нет не очевидно. Type-safe это что такое магическое заклинание? Не, не слышал ))))
P>>а type rich interfaces?

AS>Это когда можно попить кофе пока а-цатаи процессорный монстер компилирует несколько строчек


в грубом приближении — да. но, почему бы не делегировать часть своей работы этому монстрику?

AS>и код раздувается до эпических размеров...


нет

P>>>>может ли компаратор сравнивающий double, скомпилироваться вместе с int массивом?

AS>>>Вот можно в С++ лёгким росчерком пера нарваться нарушение ODR, и скомпилировать код пользующиий совсем не ту структуру какую хотелось? Да легко. Чем монструознее софтина и больше программеров. И куда интересно подевалась это хвалёная типа безопасность?
P>>мастер ухода от ответа 4го разряда
AS>А ты думал.

я думал ты ответишь:
P>>>>может ли компаратор сравнивающий double, скомпилироваться вместе с int массивом?
-------
AS>Однако, куда таки девается 'типА безопасность'?

when used in proper style
Re[32]: MSVC2010 + C99
От: Alexéy Sudachén Чили  
Дата: 26.06.12 21:39
Оценка:
Здравствуйте, Piko, Вы писали:

P>а теперь протираем глаза, и читаем:

P>http://www.rsdn.ru/forum/flame/4784642.1.aspx
Автор: Piko
Дата: 19.06.12


И видим что ты придумал веру в void* и низкокачественных программистов. И чего?

P>я не считаю эту дискуссию бесполезной.

P>1. я как уже сказал, всё больше убеждаюсь что с другой стороны объективных аргументов нет. после вдалбливания, и разжёвывания что и почему является P>2. больше людей будут aware -> будет больше хорошего кода -> мир, зелёная травка

Типа пророк, популизатор, просветитель и борец с язычеством и ересью? Возвращатель заблудших душ в лоно веры страуса... бывает, да. Книжку написать не пробовал?

Каких аргументов ты хочешь, если для тебя 'типА безопастность' это бог, а тривиальщина а-ля std::sort евангилье? Ты разве готов слушать что-то выходящие за рамки правильной картины мира, построенной в догматах C++. Так что считай — не считай, но дискуссия бесполезна. Да и не дискуссия это. Ну на самом деле, с кем ты дискутировать то собрался? Тот всего несколько человек с тобой будут 'дискутировать' и то по приколу.
Re[35]: MSVC2010 + C99
От: Erop Россия  
Дата: 26.06.12 21:58
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

CC>В нормальных это в каких? По мне так эта часть достаточно крупная чтоб заколебать через некоторое время. Всё то, что на плюсах делается контейнерами, RAII и прочими простыми упрощениями жизни тут приходится колбасить вручную каждый раз. Или делать на макросах, отлаживать которые потом то ещё развлечение.

А и не надо на макросах. Надо честно писать. а то что работа вообще штука тяжёлая -- ну так тут никто не спорит.
Мало того, ты сейчас написал, только другими словами, что на С++ прогать более ПРИКОЛЬНО, чем на С. Так это и не оспаривается. Просто, насколько я понимаю, есть идея, что когда прогать прикольно, прогеры склонны раздувать код, а когда неприкольно -- склонны сокращать...


E>>>>У большинства это от недостатка опыта, и постепенно проходит, но у некоторых не проходит никогда...

CC>>>Оставь этот менторский тон. Он не действует как ты рассчитываешь.
ПО существу, тем не менее, ты со мной согласился...


E>>Я думаю, что он злит коллег, которые обсуждают персоны, а не идеи...

CC>Значит он способствует скатыванию темы в простой срач.
CC>Тем более оставь.
Месье имеет власть мне приказывать?..
тогда предъявите звезду, мой шериф!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[33]: MSVC2010 + C99
От: Piko  
Дата: 26.06.12 22:02
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

P>>а теперь протираем глаза, и читаем:

P>>http://www.rsdn.ru/forum/flame/4784642.1.aspx
Автор: Piko
Дата: 19.06.12

AS>И видим что ты придумал веру в void* и низкокачественных программистов. И чего?

а то, что я про void* говорил в контексте C++, но ты этого не заметил...

AS>Каких аргументов ты хочешь,


объективных

AS>если для тебя 'типА безопастность' это бог,


возможность сэкономить время

AS>а тривиальщина а-ля std::sort евангилье?


маленький пример C++style в контексте сравнения с C.
и кстати, эта тривиальнщина далеко не для всех тривиальщина. многие думают(и в этом топике в том чилсе) что более абстраный код <-> более медленный.

AS>Ты разве готов слушать что-то выходящие за рамки правильной картины мира, построенной в догматах C++.


конечно

AS>Так что считай — не считай, но дискуссия бесполезна. Да и не дискуссия это. Ну на самом деле, с кем ты дискутировать то собрался? Тот всего несколько человек с тобой будут 'дискутировать' и то по приколу.


ну так я тоже тут, "по приколу", бывает интересные мысли проскакивают
и ты не поверишь, но мне некоторые из твоих идей тоже интересны, не смотря на то, что они спрятаны за фасадом ... не знаю, как лучше назвать это фасад, пусть просто будет фасад
Re[31]: MSVC2010 + C99
От: Erop Россия  
Дата: 26.06.12 22:44
Оценка:
Здравствуйте, Piko, Вы писали:

P>ок, но сначала ответь, желательно с аргументами: qsort vs std::sort

P>1. что быстрее
Зависит от задачи и от программиста

P>2. что надёжней

Зависит от задачи и от программиста

P>3. что безопасней

Зависит от задачи и от программиста

P>4. что более абстрактно

std::sort

P>?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[32]: MSVC2010 + C99
От: Piko  
Дата: 26.06.12 23:36
Оценка: :)
Здравствуйте, Erop, Вы писали:

P>>ок, но сначала ответь, желательно с аргументами: qsort vs std::sort

P>>1. что быстрее
E>Зависит от задачи и от программиста

в каких случаях qsort, по твоему мнению, быстрее?

P>>2. что надёжней

E>Зависит от задачи и от программиста

в каких случаях qsort, по твоему, мнению надёжней?

P>>3. что безопасней

E>Зависит от задачи и от программиста

в каких случаях qsort, по твоему, мнению безопасней?
Re[36]: MSVC2010 + C99
От: CreatorCray  
Дата: 27.06.12 01:54
Оценка: +1
Здравствуйте, Erop, Вы писали:

CC>>В нормальных это в каких? По мне так эта часть достаточно крупная чтоб заколебать через некоторое время. Всё то, что на плюсах делается контейнерами, RAII и прочими простыми упрощениями жизни тут приходится колбасить вручную каждый раз. Или делать на макросах, отлаживать которые потом то ещё развлечение.

E>А и не надо на макросах. Надо честно писать. а то что работа вообще штука тяжёлая -- ну так тут никто не спорит.
Дык это получается почти копипаст. Что есть error prone и опять таки плохо поддерживаемо.

E>Мало того, ты сейчас написал, только другими словами, что на С++ прогать более ПРИКОЛЬНО, чем на С.

Более удобно. Мне достаточно написать один раз шаблонную обёртку, чтоб потом парой движений обеспечить схожий функционал в сотнях мест, где он нужен. На С для облегчения жизни у меня есть только макросы, у которых дофига ограничений и подводных камней.

E>Просто, насколько я понимаю, есть идея, что когда прогать прикольно, прогеры склонны раздувать код, а когда неприкольно -- склонны сокращать...

У меня таких идей нет. Да и идея мягко говоря странная. Мне когда "прикольно" хочется код написать максимально корректным (читай "без хаков"), простым и понятным. Когда "не прикольно" — абы скорее заработал как надо и забыть про него.

E>>>>>У большинства это от недостатка опыта, и постепенно проходит, но у некоторых не проходит никогда...

CC>>>>Оставь этот менторский тон. Он не действует как ты рассчитываешь.
E>ПО существу, тем не менее, ты со мной согласился...
Тебе похоже хочется выдать желаемое за действительное.
Говорю прямым текстом: я с тобой не согласен, и считаю что ты это написал троллинга ради.

E>>>Я думаю, что он злит коллег, которые обсуждают персоны, а не идеи...

CC>>Значит он способствует скатыванию темы в простой срач.
CC>>Тем более оставь.
E>Месье имеет власть мне приказывать?
Советовать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[32]: MSVC2010 + C99
От: CreatorCray  
Дата: 27.06.12 01:54
Оценка: :)
Здравствуйте, Alexey Sudachen, Вы писали:

AS>Java.

Хреновый из тебя тролль. Очень уж толсто, на пределе трещания по швам.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[34]: MSVC2010 + C99
От: CreatorCray  
Дата: 27.06.12 01:54
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

AS>С++ настолько же надёжен и безопасен как и ассемблер.

Пацталом. Ты что то там про знания С++ говорил? Щас похоже ты нам их продемонстрируешь.

AS> Это факт установленный эмперически

Где можно ознакомиться с этими эмпирически установленными фактами?

AS> просто существуют разные мифы что путём некоторых заклинаний можно сделать код абстрактно надёжно-безопасным. От только корка, как истина в последней инстанции, показыает что это именно что миф.

Пруф или GTFO!

AS>Абстрактность вообще в статическую типизацию не то чтобы плохо лжится, но весьма с трудом запихивается.

Какими ещё глубинами "знанимй" нас порадуешь?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[32]: MSVC2010 + C99
От: CreatorCray  
Дата: 27.06.12 01:54
Оценка: +1 :)
Здравствуйте, Erop, Вы писали:

Ты не улыбки ставь а на вопросы ответь.
А то блаблабла ты умеешь, как насчёт аргументированного и развёрнутого ответа, базирующегося исключительно на проверяемых фактах?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[32]: MSVC2010 + C99
От: CreatorCray  
Дата: 27.06.12 01:54
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

AS>Это когда можно попить кофе пока а-цатаи процессорный монстер компилирует несколько строчек и код раздувается до эпических размеров... да что-то такое слышал.

Интересу ради, какой у тебя там год на календаре?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[33]: MSVC2010 + C99
От: Alexéy Sudachén Чили  
Дата: 27.06.12 02:24
Оценка:
AS>>Java.
CC>Хреновый из тебя тролль. Очень уж толсто, на пределе трещания по швам.

Ну для теба похоже самое то, ты же на это ведёшся )))
Re[33]: MSVC2010 + C99
От: Alexéy Sudachén Чили  
Дата: 27.06.12 02:39
Оценка:
P>>>ок, но сначала ответь, желательно с аргументами: qsort vs std::sЗort
P>>>1. что быстрее
E>>Зависит от задачи и от программиста
P>в каких случаях qsort, по твоему мнению, быстрее?

#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <time.h>

using namespace std;

struct X {
  vector<long> q_;
  X(int n) { q_.resize(n); for ( int i=0; i < q_.size(); ++i ) q_[i] = rand(); }
  X(const X &x) { for( int i=0; i < x.q_.size(); ++i ) q_.push_back(x.q_[i]); }
};

int N_sum(const vector<long> &q) { int N = 0; for ( int i = 0; i < q.size(); ++i ) N += q[i]; return N; }

struct Y{
  int N;
  Y(const X x) { N = N_sum(x.q_); }
};

bool operator < (const Y& a, const Y b){
  return a.N < b.N;
}

int X_sum_comp(const X *a,const X *b) {
  return N_sum(a->q_) - N_sum(b->q_);
}

int main(int argc, char **argv){
  if ( argc < 2 ) exit(-1);

  int n = strtol(argv[1],0,0);
  vector<X> x;

  for ( int i = 0; i < n; ++i ) x.push_back(X(n));

  vector<X> y = x;
  double c0 = clock();
  sort(x.begin(),x.end());
  double c1 = clock();
  qsort(&y[0],y.size(),sizeof(y[0]),(int(*)(const void*,const void*))X_sum_comp);
  double c2 = clock();

  printf("sort: %.3f, qsort: %.3f\n",(c1-c0)/CLOCKS_PER_SEC,(c2-c1)/CLOCKS_PER_SEC);
}



P>>>2. что надёжней

E>>Зависит от задачи и от программиста
P>в каких случаях qsort, по твоему, мнению надёжней?
P>в каких случаях qsort, по твоему, мнению безопасней?

Критерии для надёжности и безопасности пожалуйста в студию. Иначе можно с таким же успехом спрашивать что и них пушистее и овальнее.
Re[35]: MSVC2010 + C99
От: Alexéy Sudachén Чили  
Дата: 27.06.12 02:46
Оценка:
AS>>Абстрактность вообще в статическую типизацию не то чтобы плохо лжится, но весьма с трудом запихивается. )))
P>STL статически типизирован(практически полностью), и при этом абстрактен

Ой ли! Ну то есть я могу сделать вектор содержащий строку, число и другой вектор?! Крута, да!
Критерий абстрактности в студию, пожалуйста!
Re[34]: MSVC2010 + C99
От: Alexéy Sudachén Чили  
Дата: 27.06.12 03:11
Оценка:
AS>
int main(int argc, char **argv){
AS>  if ( argc < 2 ) exit(-1);
AS>  int n = strtol(argv[1],0,0);
AS>  vector<X> x;

AS>  for ( int i = 0; i < n; ++i ) x.push_back(X(n));
AS>


Для тех, кто не понял что этот код делает, и получает краш на больших числах =) чуток поменяйте строчку и будет счастье. На суть проблемы это всёравно не влияет, но вот память действительно не резиновая.

for ( int i = 0; i < n; ++i ) x.push_back(X(n%101));
Re[37]: MSVC2010 + C99
От: Erop Россия  
Дата: 27.06.12 04:05
Оценка:
Здравствуйте, CreatorCray, Вы писали:

E>>>>>>У большинства это от недостатка опыта, и постепенно проходит, но у некоторых не проходит никогда...

CC>>>>>Оставь этот менторский тон. Он не действует как ты рассчитываешь.
E>>ПО существу, тем не менее, ты со мной согласился...
CC>Тебе похоже хочется выдать желаемое за действительное.
CC>Говорю прямым текстом: я с тобой не согласен, и считаю что ты это написал троллинга ради.
Не затруднит пояснить с чем конкретно ты не согласен и почему? Ну кроме тона...

CC>Советовать.

IMHO, советую как-то иначе, в иных тонах и наклонениях и т. п...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[34]: MSVC2010 + C99
От: Piko  
Дата: 27.06.12 09:02
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

P>>>>ок, но сначала ответь, желательно с аргументами: qsort vs std::sЗort

P>>>>1. что быстрее
E>>>Зависит от задачи и от программиста
P>>в каких случаях qsort, по твоему мнению, быстрее?

AS> X(const X &x) { for( int i=0; i < x.q_.size(); ++i ) q_.push_back(x.q_[i]); }

AS> qsort(&y[0],y.size(),sizeof(y[0]),(int(*)(const void*,const void*))X_sum_comp);

шутник, UB'шник

P>>>>2. что надёжней

E>>>Зависит от задачи и от программиста
P>>в каких случаях qsort, по твоему, мнению надёжней?
P>>в каких случаях qsort, по твоему, мнению безопасней?
AS>Критерии для надёжности и безопасности пожалуйста в студию. Иначе можно с таким же успехом спрашивать что и них пушистее и овальнее.

уже писал.
вкратце: надёжность — больше ошибок(классов ошибок) ловится compile-time. безопасность — менее подверженность vulnerabilities.
но это вкратце
Re[36]: MSVC2010 + C99
От: Piko  
Дата: 27.06.12 09:04
Оценка:
Здравствуйте, Alexéy Sudachén, Вы писали:

AS>>>Абстрактность вообще в статическую типизацию не то чтобы плохо лжится, но весьма с трудом запихивается. )))

P>>STL статически типизирован(практически полностью), и при этом абстрактен

AS>Ой ли! Ну то есть я могу сделать вектор содержащий строку, число и другой вектор?! Крута, да!

AS>Критерий абстрактности в студию, пожалуйста!

http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F

Абстра́кция (от лат. abstractio — отвлечение) — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков; абстрагирование; теоретическое обобщение как результат такого отвлечения.

Re[33]: Звезда Ф ШОКЕ!!!
От: Erop Россия  
Дата: 27.06.12 09:29
Оценка:
Здравствуйте, Piko, Вы писали:

P>в каких случаях qsort, по твоему мнению, быстрее?


Слушайте, люди, вы меня правда пугаете.
Ты сам не можешь написать пример в котором qsort порвёт std::sort?
Хочешь совет? Напиши пример где функция сравнения ДОЛГАЯ.
Например, у тебя есть массив неотрицательных чисел,
чтобы сравнить два, ты от каждого вычисляешь exp( x / x_max ), с точностью 1 000 000 знаков, и потом в лексографическом с конца порядке сортируешь. Ну и чисел тысяч 10 хотя бы в массиве

Вот, что бы лучше думалось, попробуй угадать, что вернёт функция RN_test:
class RandNum {
    int body;
    static int countCpp;
    static int countC;
public:
    RandNum() : body( rand() ) {}

    bool operator < ( const RandNum& other ) const 
        { countCpp++; return body < other.body; }
    static int CmpImpl( const RandNum* arg1, const RandNum* arg2 )
        { countC++; return arg1->body - arg2->body; }
    static int Cmp( const void* arg1, const void* arg2 ) { return CmpImpl( (const RandNum*) arg1,  (const RandNum*) arg2 ); }

    static const int CppCount() { return countCpp; }
    static const int CCount() { return countC; }
};

int RandNum::countC = 0;
int RandNum::countCpp = 0;

int RN_test( int n = 1000 )
{
    std::vector<RandNum> arrCpp;
    for( int i = 0; i < n; i++ ) {
        arrCpp.push_back( RandNum() );
    }
    std::vector<RandNum> arrC( arrCpp );

    qsort( &arrC[0], arrC.size(), sizeof( RandNum ), RandNum::Cmp );
    std::sort( arrCpp.begin(), arrCpp.end() );

    return RandNum::CppCount() * 100 / RandNum::CCount();

}
у меня, например, возвращает 182%

P>в каких случаях qsort, по твоему, мнению надёжней?

По моему мнению для всех. Ещё надёжнее, будет если её немножко шаблонно обернуть, но даже в чистом С-варианте она неверно работает только если передать не так буфер или напутать с типами. В std::sort способов накрячится есть просто невообразимое множество

P>>>3. что безопасней

E>>Зависит от задачи и от программиста

P>в каких случаях qsort, по твоему, мнению безопасней?

А что значит "безопаснее"? Какая модель угроз?

Не, ну правда, скажите, что вы просто в полемическом запале немного троллили, а не на полном серьёзе считали, что std::sort быстрее qsort'а?
Я же совсем веру в коллег потеряю!
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[35]: MSVC2010 + C99
От: Piko  
Дата: 27.06.12 09:47
Оценка: :)
Здравствуйте, Piko, Вы писали:

P>>>>>ок, но сначала ответь, желательно с аргументами: qsort vs std::sЗort

P>>>>>1. что быстрее
E>>>>Зависит от задачи и от программиста
P>>>в каких случаях qsort, по твоему мнению, быстрее?
AS>> X(const X &x) { for( int i=0; i < x.q_.size(); ++i ) q_.push_back(x.q_[i]); }
AS>> qsort(&y[0],y.size(),sizeof(y[0]),(int(*)(const void*,const void*))X_sum_comp);
P>шутник, UB'шник

добавляем
bool operator < (const X& a, const X &b){
  return  N_sum(a.q_) - N_sum(b.q_);
}
void swap(X &l,X &r){
    swap(l.q_,r.q_);
}

и sort рвёт qsort, и при том без UB
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.