LINUX.ORG.RU

Ответ на: комментарий от shty

>лицензия не велит (вроде?)

сорри, про проприетарщину не подумал

annulen ★★★★★
()
Ответ на: комментарий от shty

>дело не в этом, а в том что когда ты пишешь либу, которая весит 100 Кб

извиняюсь за нескромный вопрос, но нах в либе локализация, особенно в либе такого размера? локализация должна сидеть в программе-фронтенде, использующей либу (а эти программы обычно больше или по-крайней мере могут позволить себе роскошь иметь системные зависимости)

annulen ★★★★★
()
Ответ на: комментарий от annulen

>дело не в этом, а в том что когда ты пишешь либу, которая весит 100 Кб

извиняюсь за нескромный вопрос, но нах в либе локализация, особенно в либе такого размера? локализация должна сидеть в программе-фронтенде, использующей либу (а эти программы обычно больше или по-крайней мере могут позволить себе роскошь иметь системные зависимости)

1) честно говоря, я даже боюсь задать этот вопрос знатоку который мне затирает про то что потоки - это плохо потому, что нет локализации :)

2) есть таки задачи, так или иначе связанные с обработкой текстовой информации, там нужна, правда, не локализация, но работа с разными кодировками

shty ★★★★★
()
Ответ на: комментарий от shty

1. Открою страшную тайну — в printf'е тоже нет локализации, однако обернуть его tr'ом или gettext'ом вообще ничего не стоит, в отличие от ...

2. А как тебя потоки спасут?

Reset ★★★★★
()
Ответ на: комментарий от JackyTreehorn

>Быдлокодер детектед.

На самом деле каждый байт в библиотеке iostreams - это говно. Конечно, сам язык С++ это тоже не фонтан какой ЯП, но iostreams это прямо таки полюс говняности С++. Можно делать наглядным пособием на тему того как не надо проектировть абстракции.

Absurd ★★★
()
Ответ на: комментарий от Reset

1. Открою страшную тайну — в printf'е тоже нет локализации, однако обернуть его tr'ом или gettext'ом вообще ничего не стоит, в отличие от ...

да что Вы к интернационализации так привязались? printf - не является объектно ориентированным, не является безопасным - уже достаточно

потоки же, вполне легальный инструмент в C++, гибкий и безопасный, имеющий более читаемый синтаксис (вспомним обучающихся) и я не пойму что конкретно Вас не устраивает в потоках кроме того что лично Вам они не нравятся

и да, тащить за собой Qt, знаете ли, далеко не всегда выход

2. А как тебя потоки спасут?

вот ведь мастер передёргивания, ну да ладно - std::wcout, если вы про это

shty ★★★★★
()
Ответ на: комментарий от shty

> имеющий более читаемый синтаксис

не имеет он более читаемый синтаксис

вспомним обучающихся

это не имеет отношения к читаемому синтаксису, обучаемые не пишут сложных строк, максимум cout << a, им вероятно сложно запомнить, что %i это int, а %f это float :)

того что лично Вам они не нравятся

Не только мне, я вообще живьем не видел ни одного человека, которому бы нравился этот ужас, поэтому могу только сделать вывод, что Вы троллите.

не является объектно ориентированным, не является безопасным - уже достаточно

решения имеющие понятный синтаксис аналогичный printf'у и не обладающие этими недостатками я привел

ну да ладно - std::wcout, если вы про это

бугага, wstring еще и некроссплатформенный ужас, проще glib взять или написать свой парсер utf-8, благо пишется быстро и просто.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> имеющий более читаемый синтаксис

не имеет он более читаемый синтаксис

это всего лишь Ваши слова, не подкреплённые ничем

> вспомним обучающихся

это не имеет отношения к читаемому синтаксису, обучаемые не пишут сложных строк, максимум cout << a, им вероятно сложно запомнить, что %i это int, а %f это float :)

и снова это Ваши предположения пояснить же в чём страх сложных строк Вы не можете, кроме того что Вам на них страшно смотреть

Не только мне, я вообще живьем не видел ни одного человека, которому бы нравился этот ужас,

и что это доказывает?

поэтому могу только сделать вывод, что Вы троллите.

глупо

> не является объектно ориентированным, не является безопасным - уже достаточно

решения имеющие понятный синтаксис аналогичный printf'у и не обладающие этими недостатками я привел

во-первых синтаксис аналогичный printf провоцирует небезопасность, ибо __VA_ARGS__

во-вторых не всегда удобно тащить с собой толстые либы

> ну да ладно - std::wcout, если вы про это

бугага, wstring еще и некроссплатформенный ужас,

это не всегда критично, но что уж говорить - есть такое

проще glib взять или написать свой парсер utf-8, благо пишется быстро и просто.

да, именно так, но к теме std::cout vs printf это отношения не имеет

shty ★★★★★
()
Ответ на: комментарий от shty

> это всего лишь Ваши слова, не подкреплённые ничем

Еще раз для тех кто в танке — в случае printf'а выводимое СРАЗУ видно по строке форматирования.

Удобство и читабельность iostream'а ничем не подтверждена, от Вас не было НИ ОДНОГО аргумента насчет читабельности, кроме того, что Вам это якобы удобно.

во-первых синтаксис аналогичный printf провоцирует небезопасность, ибо __VA_ARGS__

4.2 , в QString __VA_ARGS__ не используется.

это не всегда критично, но что уж говорить - есть такое

критично, тем более синтаксис команд преобразования ужас похлеще синтаксиса iostream

Reset ★★★★★
()
Ответ на: комментарий от Absurd

Прочитайте уже http://yosefk.com/c fqa/io.html

что это? похоже на исповедь лузера-неосилятора и, кагбэ, фраза «C++ classes look pretty surreal» на то непрозрачно намекае (дальше не стал читать)

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

и покиньте тред

не говорите мне что делать и я не скажу куда Вам идти (с)

Кроме того, я на ЛОР-е писал собственные соображения о дизане iostreams, можно

после того феерического в своей бредовости троллинга который ты привёл по ссылке можешь их оставить себе, разрешаю

shty ★★★★★
()
Ответ на: комментарий от Reset

>случае printf'а выводимое СРАЗУ видно по строке форматирования.

В случае cout выводимое прекрасно видно. Гораздо лучше, чем бессмыслица в стиле перла в printf.

Как это сделать со (f)scanf и (f)printf?

template<typename T>
class X
{
  T t;
  Vector v; 
  Quaternion q;

////////////////
 void Read(istream& is)
  {
    is >> t >> v >> q;
  }
  void Write(ostream& os)
  {
    os << t << v << q;
  }
};

anonymous
()
Ответ на: комментарий от anonymous

> В случае cout выводимое прекрасно видно.

Вы идиот или прикидываетесь?

Как это сделать со (f)scanf и (f)printf?

Это я буду делать с помощью других средств.

Reset ★★★★★
()
Ответ на: комментарий от shty

>похоже на исповедь лузера-неосилятора и, кагбэ, фраза «C++ classes look pretty surreal» на то непрозрачно намекае

Какая исповедь? Убогость iostreams отлично показана в примерах.

после того феерического в своей бредовости троллинга который ты привёл по ссылке

Ты не понимаешь что такое троллинг. То что я пишу вещи которые не нравятся лично тебе не означают что я пытаюсь тебя как-то обидеть или спровоцировать флейм. Я наоборот хочу заткнуть этот тред достигнувший неприличного размера в пять страниц разгромив аргументацию любителей непрактичной и бесполезной библиотеки.

Absurd ★★★
()
Ответ на: комментарий от Reset

> это всего лишь Ваши слова, не подкреплённые ничем

Еще раз для тех кто в танке — в случае printf'а выводимое СРАЗУ видно по строке форматирования.

это плюс, но формат записи - это минус

Удобство и читабельность iostream'а ничем не подтверждена, от Вас не было НИ ОДНОГО аргумента насчет читабельности, кроме того, что Вам это якобы удобно.

читать Вы не умеете, но для Вас персонально (!) повторю, люди изучающие программирование считают синтаксис потоков куда более читаемым, нежели синтаксис формата printf

и это не потому что они не имеют опыта, а потому что они не не так предвзято смотрят на вещи, как некоторые

> во-первых синтаксис аналогичный printf провоцирует небезопасность, ибо __VA_ARGS__

4.2 , в QString __VA_ARGS__ не используется.

oh yeah? а это что?

QString("%1 %2 %3").arg(1).arg(2).arg(3)

полный и прямой аналог

что и следовало ожидать, как и положено троллю - в вопросе Вы не разбираетесь

синтаксис команд преобразования ужас похлеще синтаксиса iostream

it's only in your head, baby (c)

shty ★★★★★
()
Ответ на: комментарий от Reset

>Это я буду делать с помощью других средств.

Опиши эти средства если ты не идиот, а только им прикидываешься.

anonymous
()
Ответ на: комментарий от shty

> но формат записи - это минус

Только дебил не в состоянии понять этот формат записи, но для них придумали облегченные форматы, наподобие того, что используется в QString.

для Вас персонально (!) повторю, люди изучающие программирование считают синтаксис потоков куда более читаемым, нежели синтаксис формата printf

можете еще 100000 раз повторить, Вы некомпетентны, если вы преподаете, то я бы вас гнал сцаными тряпками.

полный и прямой аналог

Количество аргументов заранее известно, типы аргументов тоже заранее известны, поэтому тут Вы опять обосрались по полной.

Reset ★★★★★
()
Ответ на: комментарий от Absurd

Убогость iostreams отлично показана в примерах.

во-первых фраза про классы («C++ classes look pretty surreal») уже характеризует человека как неосилятора

а во-вторых все т.н. доказательства приведённые по ссылке в основном связаны со спекуляциями и нечестными приёмами спора

про убогость iostream (кстати что такое iostreams? плохо знаешь то что обсуждаешь потому как с ним работаешь, да?) я ничего не увидел, возможно потому что прекратил читать после феерической фразу про классы, но уж извините данный человек себя дискредитировал

Ты не понимаешь что такое троллинг. То что я пишу вещи которые не нравятся лично тебе не означают что я пытаюсь тебя как-то обидеть или спровоцировать флейм.

не знаю что ты там себе думаешь, но пока что ты меня только посмешил :)

Я наоборот хочу заткнуть этот тред

матрос Железняк?

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

хотеть не вредно - вредно не хотеть, пока ты только осилил показать своё неосиляторство, дав ссылку на человека который сильно предвзято разбирает то в чём не разобрался

shty ★★★★★
()
Ответ на: комментарий от anonymous

Еще один «умник» ? За iostream'ом в примере стоит переопределение операторов <<, >> внутри которых делаются сложные вещи, так какой же тогда смысл использовать именно iostream и в чем тут простота?

Для этого boost::serialization есть вообще-то, который сложные вещи сделает за тебя.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

А что на scanf/printf свет клином сошелся? Универсальных решений нет естественно.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Есть ещё готовые программы, которые сложные вещи уже сделают за тебя и без использования тобой C++ и прочих языков. Значит не будет примера? Слив засчитывать, «умник»?

anonymous
()
Ответ на: комментарий от Reset

> но формат записи - это минус

Только дебил не в состоянии понять этот формат записи, но для них придумали облегченные форматы, наподобие того, что используется в QString.

только дебил не в состоянии понять что ему говорят даже с 5-го раза

Вы некомпетентны

пруф или GTFO

если вы преподаете, то я бы вас гнал сцаными тряпками.

если Вы бы так же мудро выступали - Вас бы теми самыми тряпками и погнали бы

PS беседую с Вами и не нарадуюсь на своё адекватное начальство

shty ★★★★★
()
Ответ на: комментарий от shty

> пруф или GTFO

Вы специально не читаете что я пишу? Как же ловко вы обосрались с QString и arg ? А до этого с локализацией в iostream ? Этого всего не было ?

Reset ★★★★★
()
Ответ на: комментарий от Reset

Примера у тебя нет потому что ты примера не обещал. А что ты тогда тут делаешь? У тебя вообще с логикой всё в порядке?

anonymous
()
Ответ на: комментарий от shty

>во-первых фраза про классы («C++ classes look pretty surreal») уже характеризует человека как неосилятора

Ну в Жаве классы это рантаймовая сущность. Так что с точки зрения программиста на жаве это так, например. В CLOS классы тоже немного помощней. Или плюсовое понимание ООП и классов - единственно верно?

во-вторых все т.н. доказательства приведённые по ссылке в основном связаны со спекуляциями и нечестными приёмами спора

Приведи хотя бы один пример нечестного ведения спора там.

хотеть не вредно - вредно не хотеть, пока ты только осилил показать своё неосиляторство

Неосиляторством клеймят только плюсовые неофиты.

Absurd ★★★
()
Ответ на: комментарий от Reset

Итак, есть класс-шаблон и есть абстракная сущность для ввода и вывода в неё. Напиши пример без потоков С++ в рамках стандартного С++ чтобы всем было понятно какая замечательная вещь твои scanf и printf.

template<typename T> 
class X 
{ 
  T t; 
  Vector v;  
  Quaternion q; 
  int i;
  double d;
 
//////////////// 
 void Read(istream& is) 
  { 
    is >> t >> v >> q >> i >> d; 
  } 
  void Write(ostream& os) 
  { 
    os << t << v << q << i << d; 
  } 
};

anonymous
()
Ответ на: комментарий от Absurd

>Ну в Жаве классы это рантаймовая сущность. Так что с точки зрения программиста на жаве это так, например. В CLOS классы тоже немного помощней.

Опа, лисперы щас расскажут (в теме про С++) какая замечательная вещь этот лисп? Сегодня у Кащенко день открытого интернета?

anonymous
()
Ответ на: комментарий от Absurd

>во-первых фраза про классы («C++ classes look pretty surreal») уже характеризует человека как неосилятора

Ну в Жаве классы это рантаймовая сущность. Так что с точки зрения программиста на жаве это так, например.

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

В CLOS классы тоже немного помощней. Или плюсовое понимание ООП и классов - единственно верно?

вообще-то и обратное тоже верно

и да, С++ действительно не единственный язык в котором есть классы, но ничего уж такого инопланеТЯНского ;) там нет, или не согласны?

в той же java отсутствие const порой сильно смущает, но это не является поводом называть java быдлоязычком с корявым синтаксисом, или нет?

shty ★★★★★
()
Ответ на: комментарий от anonymous

>>Ну в Жаве классы это рантаймовая сущность. Так что с точки зрения программиста на жаве это так, например. В CLOS классы тоже немного помощней.

Опа, лисперы щас расскажут (в теме про С++) какая замечательная вещь этот лисп? Сегодня у Кащенко день открытого интернета?

Речь идет о том «что такое класс». В разных языках эта вещь понимается по разному.

Absurd ★★★
()
Ответ на: комментарий от anonymous

Зачем такие сложности, если с более простым примером ты сядешь в лужу:

struct X
{
   double m;
   void read(istream & is)
   {
       is >> m;
   }
   void write(ostream & os)
   {
       os << m;
   }
};
вот это работать не будет, а теперь ответь почему

Reset ★★★★★
()
Ответ на: комментарий от shty

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

Reset ★★★★★
()
Ответ на: комментарий от annulen

>>На самом деле каждый байт в библиотеке iostreams - это говно

Я не изучал их код, но пользоваться удобно

Что такое «удобно»? Удобство локализации приложения - это важный фактор?

Absurd ★★★
()
Ответ на: комментарий от shty

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

Ты пиши конкретно: что он не осилил в С++?

в той же java отсутствие const порой сильно смущает

const не работает ни как хинт оптимайзера ни как диагностическое утверждение.

Absurd ★★★
()
Ответ на: комментарий от Absurd

Приведи хотя бы один пример нечестного ведения спора там.

смотрите

(1) Why is type safety a good thing here - because we gain performance?

(2) The last time I checked, we didn't really gain any - your typical iostream implementation is slower and bulkier than your typical stdio implementation.

(3) Anyway, isn't I/O the bottleneck here?

нечестный метод - это

(1) зная заранее ответ говорить глупости про производительность

(2) говорить про то что когда я последний раз смотрел iostream он был медленней (когда он это последний раз смотрел? в 1999 или 2009, а может в 1980 году?), на каких задачах он смотрел? и что означает громоздкий (bulkier) - «more women, more wine» (с)? или ещё что?

(3) после пронзительных и драматичных рассуждений слиться сказав что на самом деле всё это не важно (но сомнение то уже мы заронили в том что iostream фигня, не так ли? жаль что действуют такие методы только на людей находящихся в начале пути)

shty ★★★★★
()
Ответ на: комментарий от Reset

Выводит 15. Долго от тебя ещё примера ждать со scanf и printf ?

#include <sstream>
#include <iostream>

using namespace std;

struct X
{
   double m;
   void read(istream & is)
   {
       is >> m;
   }
   void write(ostream & os)
   {
       os << m;
   }
};

int main(void)
{
	istringstream r("15");
	X x;
	x.read(r);
	x.write(cout);
	return 0;
}

anonymous
()
Ответ на: комментарий от anonymous

Если на одном примере работает, то это не значит, что работает всегда, иди учись дальше, студентишко.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Слив засчитан, можешь валить. Если за ночь найдешь ошибку в моем примере, то приходи, продолжим разговор.

Reset ★★★★★
()
Ответ на: комментарий от shty

>зная заранее ответ говорить глупости про производительность

На ЛОР-е скорость iostream меряли, он слил.

и что означает громоздкий (bulkier) - «more women, more wine» (с)?

Под виндой статически собранный HW с iostream у меня занимал ~800 Кб. Intel C++ compiler + sgi iostream library из stlport.

Absurd ★★★
()
Ответ на: комментарий от Absurd

>зная заранее ответ говорить глупости про производительность

На ЛОР-е скорость iostream меряли, он слил.

я что, сказал обратное где-то?

>и что означает громоздкий (bulkier) - «more women, more wine» (с)?

Под виндой статически собранный HW с iostream у меня занимал ~800 Кб.

и?

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.