LINUX.ORG.RU

Valgrind 3.8.0

 , , , ,


3

2

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

  • Поддержка свежих дистрибутивов Linux (gcc-4.7, glibc-2.16).
  • Поддержка платформы MIPS32/Linux, в обоих форматах: BE и LE.
  • Начальная поддержка x86/Android.
  • Начальная поддержка MacOSX 10.8.
  • Поддержка инструкций Intel AVX и AES.
  • Поддержка инструкций для десятичных чисел с плавающей запятой для архитектуры POWER.
  • Добавлена поддержка реализаций malloc(), находящихся не в libc.so. Это даёт возможность использовать альтернативные реализации malloc() такие как TCMalloc и JEMalloc при запуске в Memcheck, Massif, DRD, Helgrind.
  • Для инструментов, подменяющих вызовы функции malloc() и ей подобных, добавлена опция --redzone-size=<кол-во байт>, которая позволяет задать размер специальных запретных зон вокруг выделяемых блоков памяти. Чем больше размер этих зон, тем больше шанс поймать выход за границы выделенной памяти.
  • Для инструментов, работающих с потоками, добавлен новый планировщик потоков, основанный на алгоритме round-robin. Этот планировщик является более честным и обеспечивает лучшую отзывчивость интерактивных многопоточных программ, а также даёт лучшую воспроизводимость результатов в Helgrind и DRD.
  • Улучшение производительности при наличии большого количества правил для подавления ошибок.
  • Улучшена поддержка формата Dwarf (поддержка DWARF4 и алгоритма сжатия отладочной информации DWZ).
  • В Memcheck сокращено потребление памяти для программ, выделяющих большое количество блоков памяти.
  • В Memcheck увеличена производительность обнаружения утечек памяти.
  • Во встроенный GDB-сервер добавлено несколько полезных команд для работы с Memcheck.
  • В Memcheck под MacOSX 10.6, 10.7 уменьшено количество ложных срабатываний, которые вызваны особенностями кода, генерируемого LLVM/Clang.
  • Множество других улучшений и исправлений ошибок.

Официальный сайт

>>> Подробности

★★★

Проверено: maxcom ()
Последнее исправление: Silent (всего исправлений: 1)

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

Если ты так хочешь этого функционала от валгринда, то да - он выдаст тебе и стактрейс.

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

Ничего особенного:

$ valgrind valgrind
==12153== Memcheck, a memory error detector
==12153== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==12153== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==12153== Command: /usr/bin/valgrind
==12153== 
==12153== Warning: invalid file descriptor -1 in syscall close()
==12156== 
==12156== HEAP SUMMARY:
==12156==     in use at exit: 10,472 bytes in 55 blocks
==12156==   total heap usage: 63 allocs, 8 frees, 13,656 bytes allocated
==12156== 
==12156== LEAK SUMMARY:
==12156==    definitely lost: 0 bytes in 0 blocks
==12156==    indirectly lost: 0 bytes in 0 blocks
==12156==      possibly lost: 0 bytes in 0 blocks
==12156==    still reachable: 10,472 bytes in 55 blocks
==12156==         suppressed: 0 bytes in 0 blocks
==12156== Rerun with --leak-check=full to see details of leaked memory
==12156== 
==12156== For counts of detected and suppressed errors, rerun with: -v
==12156== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
valgrind: no program specified
valgrind: Use --help for more information.
Работает и valgrind valgrind valgrind и далее (пробовал до шести уровней). В valgrind, по его утверждениям, утечек памяти, да и вообще ошибок работы с памятью нет.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

Задача: Пусть у нас есть набор документов (бухгалерские, определенный набор). Нужна система для обработки данных. Как будем обрабатывать - пока не известно, какие данных из документов будет обрабатывать - тоже неизвестно.

Не силён в бухгалтерии, так что пусть будет примитивная учётка платежей от клиентов и их покупок.

struct Product
{
	String name;
	Decimal price;
};

struct DealPosition
{
	Product &product;
	unsigned count;
};

struct Deal
{
	List<DealPosition> positions;
	Decimal discount;
	Decimal getAmount()
	{ Decimal s(0); for (DealPosition &p: positions) { s += p.product.price * p.count;} return s*discount;}
};

struct Payment
{
	DateTime datetime;
	Decimal amount;
};

struct Client
{
	List<Deal> deals;
	List<Payment> payments;
	Decimal getBalance(DateTime dt = DateTime(DT_NOW))
	{ /* суммируем раздельно сделки и платежи на указанную дату, возращаем разницу*/}
};
LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

Не силён в бухгалтерии, так что пусть будет примитивная учётка платежей от клиентов и их покупок.

Вот опорные точки. Заостри внимание на них.

..набор документов
..определенный набор
..система...обработки данных...

Далее следуют подробности задачи: как будем обрабатывать - пока не известно, какие данных из документов будет обрабатывать - тоже неизвестно.

Пригоден предложенный вами код? Если да - то для чего?

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

я знаю ответ!

reduce(func, data)

Ну или fold если ты штангист.

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

Для маппинга в сиквель, конечно же. Я, надеюсь, очевидно, что для реальной работы у нас есть некие данные - списки как продукции, так и клиентов. По этим данным можно посчитать обороты за периоды по клиентам. Через задницу (т.е. - полный перебор клиентов) можно еще и по-товарам. Посмотреть балансы у клиентов на дату.

Мне из «бухгалтерских» нужд ничгео больше в голову не приходит, не бухглатер я.

Ты, как я понимаю, хотел что-то противопоставить объектной системе? Ну вот её примитивный скелетон.

«..набор документов + ..определенный набор» - ничего не говорит. Что за «документ»? В контексте бухгалтерии «документом» будет любой инвойс или счет-фактура. В любой нормальной системе их генерят на основе проводок. Я могу накидать план счетов + проводки по счетам. Только зачем лепить наколеночный недосиквель и при чём тут будет ООП и С++?

«..система...обработки данных...» - пустое определение, поскольку пока не ясно ни с какой целью эти данные обрабатываются, ни какими способами - это бессмысленное словосочетание. Кластерный анализ по стат.данным - это обработка данных. И дефрагментация фс - тоже обработка данных. Что «данные», что «обработка» в этих случаях не имеют друг с другом ничего общего.

В общем, либо «доработай ТЗ», либо смени предметную область на что-то более знакомое широкой публике. Желательно такое, чтобы «данные» и «обработка» обрели хоть какую-нибудь плоть и кровь.

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

Аанондеооворит...

Только вот не надо с водой ребенка — не ООП как способ реализации плохо, а обобъектвление всего на стадии анализа; после этого, вычеркивая data hiding/interfaces, получаем, что никого ООП и нет больше :)

anonymous
()
Ответ на: Аанондеооворит... от anonymous

Да плевать мне на «способы реализации». Я говорю про OOP/OOD как парадигму проектирования. А на уровне реализации это всего лишь убогие недомодули и паршивенький dynamic dispatch в большинстве «ОО»-языков. Эти фичи можно и к чему-либо более полезному приспособить, чем «объекты» и «сообщения».

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

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

Вообще не вижу, каким боком тут ООП.

Ну а во-вторых хотел бы видеть реализацию «умных указателей», лучшую, чем ООП-шная.

Хотел бы я посмотреть на ООП-реализацию умных указателей. Все, что я видел - generic programming и прочие разновидности метапрограммирования. Никаких объектов и тому подобной дряни.

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

Да все ясно, все, кто хотел, поняли.

One can write X in any language, как гов-ся.

Ваша основная претензия к «все есть объект, на том ваяли и ваять будем наш UML» — с этим многие солидарны.

К статистически большей выгодности использования Data Hiding (по Дэвиду Парнасу, и пока без всяких ОО) претензий, как я понимаю, нет?

Помните, Брукс писал в очередном издании MMM: ~«Why Parnas was right and I was wrong on data hiding»?

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

скажи уже что-нибудь умное

Зачем? Тут и так весело %) Один считает, что десяток мест выхода из функции - это «естественно», и при этом считает RAAI свойством ООП (а как же Ява?!!11); другой глубокомысленно вещает про преобразование матмоделей (при этом «какие данные - неизвестно, как их обрабатывать - тоже»); третий вообще вспомнил Datalog (вау). Но, при всем веселье, как-то не видно полезных ссылок на описание волшебных методов работы.

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

Ты, как я понимаю, хотел что-то противопоставить объектной системе? Ну вот её примитивный скелетон.

Нет, не так было дело. Кто бы чего не наговаривал но противопоставлять ООП более лучшее решение я не собирался (вспомни: обезьяне гранату не дам). А условия задачи были сформулированы чтобы предемонтрировать «особую» технику использования ООП.

Теперь насчет условии задачи. Реализация частного случая сейчас не интересует (видится несколько глупым сейчас тратить время на детали реализации когда нас интересуют концепты; но вы об этом почему-то не подумали). Далее. Задача предельно ясно сфорулирована без частностей. Мне кажется несколько странным что этих условии задачи для меня уже достаточно чтобы модель построить а вам - нет. Вместо того чтобы рассуждать ты пытаешься делать заключения со своей колокольки так и не распарсив до конца суть вопроса (как мы видим, эта беда у большинства рефлексирующих быдлокомментаторов).

А теперь я тебе немного продемонстрирую что условии задачи достаточно. Цитирую условия задачи:

Пусть у нас есть набор документов (бухгалерские, определенный набор). Нужна система для обработки данных. Как будем обрабатывать - пока не известно, какие данных из документов будет обрабатывать - тоже неизвестно.

«..система...обработки данных...» - пустое определение, поскольку пока не ясно ни с какой целью эти данные обрабатываются, ни какими способами - это бессмысленное словосочетание.

Если думать то мы приходим к следующему. Есть набор документов с заранее известными форматами (определенный набор). Способ представления не обозначен и вовсе не обозначено что данные хранятся структурированно в базе. Далее говорится что нужна система для обработки данных. Это значит что данные будут поступать в нашу программу для обработки (ручная или полу/автоматическая - это не суть). С какого носителя/источника будут поступать данные - это не имеет значения. Ну и логично что конечные данные будут на выходе (иначе смысл обработки?). Форма представления конечных данных тоже пока не определена (это тоже частности). Что тут тебе не ясно? Мне уже достаточно деталей чтобы начать реализовывать задачу. Если же тебе недостаточно то тебе следует сначала задуматься над задачей и потом (если не получится ничего) уже надо думать над уровнем своей квалификацией посольку для меня в условиях уже есть достаточность, тогда как для тебя ее нет. А я пока попытаюсь оценить стоит ли мне время тратить на тебя?

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

Зачем? Тут и так весело %) Один считает, что десяток мест выхода из функции - это «естественно», и при этом считает RAAI свойством ООП (а как же Ява?!!11); другой глубокомысленно вещает про преобразование матмоделей (при этом «какие данные - неизвестно, как их обрабатывать - тоже»); третий вообще вспомнил Datalog (вау). Но, при всем веселье, как-то не видно полезных ссылок на описание волшебных методов работы.

Ты не понял ни одного из комментирующих зато уже принимаешься высмеивать. Вот я вижу сейчас рефлексию (высмеивание) односложного быдла в тебе. И я даже не поленюсь тебе довести что ты быдло. Итак, я заявляю что ты быдло поскольку у тебя идет тупая рефлексия (с результатом в виде высмеивания) со своего примитивного уровня суждения не разобравшись в сути вопроса. Результат рефлексии - это ваше (вышепроцитированное мной) сообщение на наши нити рассуждении на форуме. Если я покажу что уровень твой примитивный и ты не разобрался в сути вопроса - то я докажу что ты быдло. То что уровень примитивный - тут все просто: ты тупо не допускаешь вариант того что я (я буду говорить только по отношению к себе) действительно могу обладать эффективной техникой транформации моделей. Следовательно, если я тебе покажу что обладаю техникой то твой примитивность твоего подхода будет обоснована. Остается последний момент: показать тебе что даже не обладая подробными знаниями можно прийти к обоснованияю возможности существования иных техник (не только моей - мне это ясно с самого начала). Но есть риск что ты вообще ничего не поймешь (до тебя тупо не дойдет) либо сработает еще раз рефлексы в момент когда должен был переключится мозг на аналитику с достаточной вычислительной мощностью. Неважно. Приступим.

Итак, у нас есть ООП парадигма и есть такие вещи как паттерны (и антипаттерны) программирования. Тебе понятно что паттерны/антипаттерны являются моделями? Если нет то значит ты должен считать что они являются ее отображением (реализацией) и это сразу доказывает что ты быдло (обратную цепь рассуждении построишь сам). Что случится если мы для задачи изменим свойство какого-либо паттерна под наши нужды? - Верно, будет случай трансформации модели. А даже скажу больше, некоторые паттерны являются результатом трансформации других паттернов (сможешь отследить или нет - не суть). Итак, внезапно оказалось что в ООП у нас есть модели (паттерны) и я рассказал про технику трансформации этих моделей. Но я заявлял про мат. модели и их трансформацию. Все нормальные инженеры-программисты знают, как минимум, про конечный автомат и графы. А это ли не математические модели? Берем детерминированный конечный автомат и адаптируем под случай когда требуется недетерминированный. Ой, внезапно мы получили недетерминированный из детерминированного. Что произошло? - Верно, трансформация детерминированного через технику обобщения (именно так и получается недетерминированный, если что). Итак, продемонстрирован случай трансформации математической модели.

Итого: ТЫ - БЫДЛО. Иди и «клубись» с себе подобными. Тебе не место в программировании и иных инженерных дисциплинах.

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

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

Я считаю это крайне маловероятным.

если я тебе покажу что обладаю техникой

Ты не покажешь.

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

Этот набор банальностей называется «эффективной техникой транформации моделей»? Анон, ты упорот.

я вижу сейчас рефлексию (высмеивание) односложного быдла в тебе

ты быдло

я докажу что ты быдло

Итого: ТЫ - БЫДЛО

О как тебя штырит O_o

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

Вообще не вижу, каким боком тут ООП.

Ты сначала разберись, что такое ООП, а потом уже кричи «не нужно».

Хотел бы я посмотреть на ООП-реализацию умных указателей.

C++ - Boost::intrusive_prt<>, Boost::shared_ptr<>, ну и всевозможные самопальные шаблонные классы, реализующие счетчики ссылок.

Все, что я видел - generic programming и прочие разновидности метапрограммирования.

Оно и видно.

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

Этот набор банальностей называется «эффективной техникой транформации моделей»? Анон, ты упорот.

Да, это общеизвестный пример (!) случая трансформации мат. модели. Чуть выше в сообщении я тебе провел аналогию с общеизвестными моделями ООП (паттернами). Моей целью было показать твою быдловатость не раскрывая техники. Именно поэтому я взял общеизвестные случаи. Но ты этого всего не увидел/не понял посольку мышление у тебя быдлопотреблядское. Не лезь больше со своими глупостями к мне. Таких как ты - хоть лопатой греби. Вы - не интересны. Есть более достойные и развитые люди.

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

Не лезь больше со своими глупостями к мне.

Вообще-то это ты полез ко мне %) А я и не собирался лезть к тебе - ты всё равно не можешь сказать ничего интересного.

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

Вообще-то это ты полез ко мне %) А я и не собирался лезть к тебе

Вчитайся в то что ты писал:

...другой глубокомысленно вещает про преобразование матмоделей (при этом «какие данные - неизвестно, как их обрабатывать - тоже»)...

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

- ты всё равно не можешь сказать ничего интересного.

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

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

Ты сначала разберись, что такое ООП, а потом уже кричи «не нужно».

Деточка, я-то прекрасно разбираюсь, что такое ООП. А вот ты, очевидно, настолько туп и безграмотен, что даже такую примитивную чушь понять не в состоянии.

Итак, деточка, потрудись объяснить, какое отношение ООП имеет к RAII?

C++ - Boost::intrusive_prt<>, Boost::shared_ptr<>, ну и всевозможные самопальные шаблонные классы, реализующие счетчики ссылок.

Где там ООП, придурок? Это generic programming. А generic programming злостно нарушает все основные принципы ООП (и правильно делает).

Ничего не может быть отвратительнее ламера, имеющего мнение.

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

К статистически большей выгодности использования Data Hiding (по Дэвиду Парнасу, и пока без всяких ОО) претензий, как я понимаю, нет?

А это ни разу не прерогатива ООП.

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

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

Ну хорошо хоть, что не в твой мозг.

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

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

То у них ООП оказывается способом организации кода ... то инкапсуляцию себе присваивают.

Всё это пустой трёп не по сути. Ты только что понял что мир не делится на чёрное и белое и что ЯП тырят идеи друг у друга.

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

Ты сейчас тупо ерепенишься со всякой ерундой как школотролль.

Я пытаюсь вытащить из тебя хоть какую-то полезную информацию. Но всё без толку, да.

Речь была про трансформацию и модели и я тебе разжевал что к чему.

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

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

Я пытаюсь вытащить из тебя хоть какую-то полезную информацию. Но всё без толку, да.

Конечно. Я уже говорил что не раздаю «обезьянам гранаты».

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

Я тебе сформулировал из публично-доступных сведении в контексте рассуждения мысль которая отражает суть. Этого достаточно.

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

Смешной ты со своими «гранатами». Ты тут не один такой кто делает вид что постиг дзен и инопланетные технологии. Во всём нужна мера, ты уже явно переигрываешь.

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

Смешной ты со своими «гранатами».

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

Ты тут не один такой кто делает вид что постиг дзен и инопланетные технологии.

Какие инопланетные технологии? Иди и читай труды Кнута и Дейкстры до просветления.

Во всём нужна мера, ты уже явно переигрываешь.

Мера с быдловатостью? - Не будет такого (уже кому-кому но точно не таким как ты меня жизни учить).

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

Трудно что-то раздавать, когда у тебя ничего нет.

Ты - мудак.

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

Тупой, деточка?

:)
Очканул и перешёл на ругню.
Жидковатый анон пошёл :(

Раньше на пару страниц хватало перед тем как начинал на говно исходить :)

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

Goto тоже бывает полезен. Реверсните байткод Java и вы будете удивлены (промолчу про дизассемблированный листинг который пестрит всякими jmp/jz/jne

..).

Goto
jmp/jz/jne

...Рассказывает тут всем какой он сверхпрограммист. Нервно закурил

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

Хотел написать, что многабукав, но потом прочел таки. Эта пять! Молодец. Зачем нужен Valgrind, когда есть ЛОР? :)

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

Рассказывает тут всем какой он сверхпрограммист. Нервно закурил

У тебя проблемы.

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

Что плохого в «десятке мест выхода из функции»? Я не тот анон и я не тролль, в самом деле интересно.

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

Что плохого в «десятке мест выхода из функции»? Я не тот анон и я не тролль, в самом деле интересно.

Труднее понимать, неудобно в отладке, больше шансов сделать ошибку.

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

Спасибо за ответ. Я думал проблема «техническая».

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

Але, мразь, тебе было велено читать Степанова. Ты ж херню ляпнул, не я. Тебе и клеймо позора нести.

Хороший стиль в C++ с ООП вообще абсолютно несовместим. И, похоже, кроме тебя, все уже давно это знают. Вылезай из анабиоза, мразь.

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

Але, мразь, тебе было велено читать Степанова.

Хехе.
Совсем на говно изошёл бедолага.

Что не понимают вас на ЛОРе?

Тяжело вам жить, неспособному освоить что-то новое. Но вы не переживаейте.

Каждой божьей твари есть место под солцем :)

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

Что не понимают вас на ЛОРе?

Да, ожидается что где-то 95% населения не понимают нас. Не исключено что и на лоре процент непонимающие стремится к 95%.

Тяжело вам жить, неспособному освоить что-то новое. Но вы не переживаейте.

Новое? Да вы кажется запутались совершенно. Вот как раз мы после ООП освоили новые парадигмы, а вы - нет. Ваша (и других комментаторов) логика только подтверждает заявление предыдущего анонима: «любители ООП просто невменяемая грязь». Но более точно было бы так: "Все быдловатые любители ООП просто невменяемая грязь" (поскольку потенциально могут быть адекваты но временными любителями ООП, которые пока еще только идут по пути развития).

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

Ты невменяем. Все любители ООП просто невменяемая грязь.

Хехе.
К дерьму добавилась вера в свои телепатические способности :)

Прогресс на лицо.

Жду перехода к следующей фазе :)

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

Да, ожидается что где-то 95% населения не понимают нас.

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

Вот как раз мы после ООП освоили новые парадигмы

Сказки и сказочники.
20 лет назад кричали что вы всё на ассембере напишете, сечас вы всё на С напишете.
Ну пишите.
Зачем говнометанием заниматься?
Я пишу когда нужно и на С и на Perl на Scheme и не вижу причин переживать.
Вы бы к псионалаитику что-ли сходили, чтобы он вам комплекс ущербности подлечил изза которого вы всех вокруг пытаетесь унизить чтобы хоть на секунду себя человеком почуствовать.

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

Все любители ООП просто невменяемая грязь.

Есть не только «любители», но и профессионалы.

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