Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Интегрируя набежавшее в разных темах, призываю - сжечь еретиков! Если ты пишешь на ассемблере - ты видишь прямой результат твоего кода, Если ты пишешь на Си, С-- ты представляешь в уме прямой результат твоего кода. Если ты пишешь на С с классами, Obj Pascal, Oberon - ты представляешь в уме прямой результат твоего кода с поправкой на косвенные вызовы. Если ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге. // Навеяно Майерсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2016, 01:19 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Siemargl// Навеяно Майерсом. Не могу всерьез воспринимать советы по программированию от человека с прической солиста диско-группы 70-х ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2016, 02:01 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Советы надо рассматривать критически. Одним из ярких примеров сокрытия сложности является "легкость" алгоритма сортировки на функциональном языке. Где накладные расходы превышали выгоду алгоритма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2016, 02:14 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
ФП не очень пригодны для написания утилитарных вещей. А я сортировку считаю больше утилитой чем алгоритмом. Согласно классификации Душкина само ФП предназначено для синтаксических трансляторов, эквивалентных преобразований программ, различного рода DSL и описателей, и для доказательств существования какого-то свойства программы. Тоесть сортировка в ФП - (как впрочем и расчет факториала и "Ханойские башни") это просто неудачный наглядный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2016, 11:52 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
SiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.Ну, как бы, что-то получаем взамен чего-то. Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 06:05 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
SiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.так не используйте! мне это кажестя глупым. ведь именно в этом суть абстракции - черный ящик. тут нужно выбрать - либо ты пишешь на машинных кодах и знаешь все, либо ты используешь абстракцию и намеренно скрываешь от себя какие-то знания, чтоб сосредоточится на чем-нибудь другом. намеренно - если ты хочешь скрыть от себя детали, нужна абстракция, если хочешь углубится в детали - абстракция не нужна, лезь в детали. она так работает. кстати, шаблоны тоже давольно предсказуемы в том, что получится на выходе. они больше вроде синтаксического сахара для компилятора, что бы можно было себя проверять. в реале отличие будет в основном в адресах функций. больше отличий может быть при специализации шаблона, но в этом случаи нужно просто знать эти специализации. например: type_traits в результируем файле нет, он просто определяет когда какую специализацию использовать. а вот std::basic_string будет там, код будет одинаков, только за разницей используемого типа, вот и все. у вас так часто возникает ситуация когда нужно лезть в ассемблер чтобы понять что не так? или просто интересно знать что сделал компилятор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 10:40 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
CEMbSiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.Ну, как бы, что-то получаем взамен чего-то. Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора. Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя. alexy_blackSiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.так не используйте! мне это кажестя глупым. ведь именно в этом суть абстракции - черный ящик. тут нужно выбрать - либо ты пишешь на машинных кодах и знаешь все, либо ты используешь абстракцию и намеренно скрываешь от себя какие-то знания, чтоб сосредоточится на чем-нибудь другом. намеренно - если ты хочешь скрыть от себя детали, нужна абстракция, если хочешь углубится в детали - абстракция не нужна, лезь в детали. она так работает. кстати, шаблоны тоже давольно предсказуемы в том, что получится на выходе. они больше вроде синтаксического сахара для компилятора, что бы можно было себя проверять. в реале отличие будет в основном в адресах функций. больше отличий может быть при специализации шаблона, но в этом случаи нужно просто знать эти специализации. например: type_traits в результируем файле нет, он просто определяет когда какую специализацию использовать. а вот std::basic_string будет там, код будет одинаков, только за разницей используемого типа, вот и все. у вас так часто возникает ситуация когда нужно лезть в ассемблер чтобы понять что не так? или просто интересно знать что сделал компилятор? У шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =) Производительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто. Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 11:45 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
SiemarglCEMbпропущено... Ну, как бы, что-то получаем взамен чего-то. Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора. Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя. подразумевалось, что, например, при переключении программ, не надо вручную менять частоту принимаемого сигнала, и вообще ничего про частоту и внутренности знать не надо. На выходе нам важно получить изображение текущего канала и знать какие кнопки нажимать. Всё, чистый ООП.SiemarglУ шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =)typedef?SiemarglПроизводительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто. Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп).1. не использовать смартпоинтеры 2. move 3. explicit, delete(оператора и конструктора) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 11:58 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
CEMbSiemarglпропущено... Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя. подразумевалось, что, например, при переключении программ, не надо вручную менять частоту принимаемого сигнала, и вообще ничего про частоту и внутренности знать не надо. На выходе нам важно получить изображение текущего канала и знать какие кнопки нажимать. Всё, чистый ООП.SiemarglУ шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =)typedef?SiemarglПроизводительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто. Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп).1. не использовать смартпоинтеры 2. move 3. explicit, delete(оператора и конструктора) ? Не так просто. Телевизор у меня еще ютуб и торренты умеет. typedef'у нужно выучить написать те же самые требуемые типы. Смартпойнтеры приходится использовать из-за неконтролируемого процесса копирования внутрях. Без них будет копироваться по значению - еще "лучше". Вместе с move() это как раз костыли, подпирающие абстракцию, просто не чугунные а алюминиевые. Ок, давай попробуем засунуть более-менее сложный класс с запрещенными конструктором и деструктором куда нибудь, например в set и пробежаться меняющим алгоритмом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:12 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
SiemarglВот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя. Я подозреваю что у тебя современная плазма типа Smart-TV. Если ты подключен на цифру - то тормоз при переключении каналов никак не связан с Андроидом. Это лаг передающего оборудования. Я могу предположить что оно в 1 момент времени транслирует тебе всего 1 канал и чтобы переключить на другой его надо скоммутировать на другой источник и в соотв с "их" протоколами подождать "наполнения буфера". 0.5 - 2 сек в зависимости от качеста ИМХО. Я подчеркну что я на самом деле не знаю как работают современные провайдеры цифрового ТВ. И это есть моё предположение. Но если-бы ты требовал гарантий быстрого переключения между Fox и Sport к примеру (ну пока идёт реклама на матче - ты быринько смотришь новую серию "Наруто") то в таком случае ТВ-провайдер должен транслировать тебе СРАЗУ 2 сетевых потока. Думаю это технически реализуемо но ИХ сетевое слегка ОФИГЕЕТ и просядет от такой услуги. Ну да бох с ним. А если ты счастливый обладатель старого доброго аналогового ТВ (антена на балконе) то фактически все OVER 100 каналов принимаешь одновременно и лаг между переключениями связан просто с "гашением экрана" в современных ТВ тюнерах я думаю это для предотрващения неприятного эффекта "дёргания" кадровой развертки и вообще для кошерности и красивости. Данный артефакт почти незаметен. Ну я по крайней мере его вообще не замечаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:12 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Для проверки насколько Андроид вреден - можно ради прикола найти еще более старый цифровик где всместо андроида "фирменная прошивка" от производителя - жлобский интерфейс который показывает "вырвиглазную табличку" и список каналов и попробовать попереключать. Я думаю лаг будет точно такой-же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:16 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
mayton, полминуты на запуск апплета "yuotube" и еще секунд 15 до этого на загрузку панельки апплетов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:23 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Siemarglmayton, полминуты на запуск апплета "yuotube" и еще секунд 15 до этого на загрузку панельки апплетов Это хреново чел. А кликни версию Андроида. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:29 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Siemargltypedef'у нужно выучить написать те же самые требуемые типы. непонимание. Там ты один раз тип определяешь как шаблон, потом ты забываешь про тип, который в шаблоне использовал. Хотя я что-то не догоняю точно, у меня не было проблем с "запоминанием" типа шаблона, так как он получается из головы по контексту. о__о Смартпойнтеры приходится использовать из-за неконтролируемого процесса копирования внутрях. Без них будет копироваться по значению - еще "лучше". Вместе с move() это как раз костыли, подпирающие абстракцию, просто не чугунные а алюминиевые. можно же определить конструктор копирования и оператор присваивания. Ок, давай попробуем засунуть более-менее сложный класс с запрещенными конструктором и деструктором куда нибудь, например в set и пробежаться меняющим алгоритмом.ну если не присваивать прям экземпляры класса, то всё ок должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 12:32 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
авторЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге. STL не проблема, да и boost наверное тоже (он слишком большой чтобы я говорил за него весь) Но в целом, тенденция развития языка мне совершенно не нравится. Слишком редко применяемые фичи добавляются. Но это не boost и STL, это абстранирование большее. Вот например недавно на хабре статья про DI: https://habrahabr.ru/company/infopulse/blog/248879/. Там, в частности, приводится код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. и тут же говорится что это аналог Код: plaintext 1. Но ведь можно же просто написать return 42; ! Шаблоны как явление вовсе не плохи, сами по себе, плохо (имхо) когда они нагромождаются один на другой, и чтобы понять где падает (или просто не то значение в отладчике видно), надо изучить огромную массу кода, чтобы понять, что править. Пока не поймешь не знаешь, надо где-то в цепочке шаблонов другой флаг поставить, или алгоритм переделывать. Причем код этот часто неочевидный, не простой, и изучить его быстро практически нереально. При нехватке времени начинается импровизация и костылирование. Все эти навороты вроде бы и оправданы чем-то, но поднимают требования к способностям головы, а она не молодеет, да и тупо затрудняют визуальное восприятие. Мысль читается легко, когда она краткая. А это ничего не кратко. Хотел написать об этом раньше, но подумал, что может быть это мало кому проблема. Мне все-таки уже 40, нередко говорят, что возраст для профессии непригоден. Думаю, что преодолевать нагромождения на пустом месте да, уже не интересно, нет былого задора. Я не представляю себе увеличения объема исходного кода вдвое, причем кода логики, не вижу оправданий. Впрочем, может быть это опять же мое личное, еще в студенчестве отказался изучать Паскаль после Си сразу после знакомства с begin и end - зачем язык, который тратит 8 символов на то, что можно сделать в 2. Мой первый код на С++ был на Borland 3.1. В начале 2000х столкнулся с ATL и лично наткнулся на то, что быстро исправить код на ней не могу, мне надо понимать все, что скрыто за шаблонами, а это долго. То что предлагается сейчас, это еще больший масштаб раздувания кода. И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать. Все эти годы я был уверен, что С++ это круто, и я бы знакомил с ним детей как с передовым. А после этой статьи возникло ощущение, что я не хочу этим грузить сына. Потому что не хочу грузить его фигней. Потому что сплошное шаблонизирование это уже над-С++-ный язык, обладающий совсем иными свойствами. Это не то, что я брался изучать 20 лет назад и с чем работал и работаю. Мне кажется, возможности шаблонов используются идеологически не для того что было задумано изначально. И что это нехорошо не только для меня, но и для языка в целом. Неправильный это путь. Огромная мощь была в небольшом количестве фич, каждую из которых можно было многократно повторить и программно решить любую задачу, оставаясь с логически краткой и понятной программой и высокой производительностью. А сейчас создается много фичек, каждая из которых служит весьма узкой цели, но значительно раздувают и язык и исходный код. И было бы идеологически неправильно массово применять такие фичи в разработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 17:19 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
teo609Но в целом, тенденция развития языка мне совершенно не нравится. Слишком редко применяемые фичи добавляются. Но это не boost и STL, это абстранирование большее. Вот например недавно на хабре статья про DI: https://habrahabr.ru/company/infopulse/blog/248879/. Причем здесь левая статья на хабре к развитию языка в целом? teo609Мой первый код на С++ был на Borland 3.1. В начале 2000х столкнулся с ATL и лично наткнулся на то, что быстро исправить код на ней не могу, мне надо понимать все, что скрыто за шаблонами, а это долго. Если человека в молодости били и насиловали, то у него тоже будет некоторое мнение об окружающих, но несколько скажем так далекое от действительности. teo609И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать. А мне, к 40 годам наоборот, все больше нравится. Вывод: дело не в возрасте, а в том что наверно не тем занимаетесь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 17:57 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Мне с самого начала не нравится что плавает сам предмет спора. Оба полюса мнений касаются С++ и С++. Хотя по сути спор идёт в разрезе С++ и Процессор шаблонов в С++. По сути все нарекания касаются не самого С++ а его ПРОЦЕССОРА ШАБЛОНОВ и ЮЗКЕЙСОВ которые были созданы на его базе за всю историю существования языка. Хочется спросить. Ну если не процессор шаблонов то ЧТО ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 18:08 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
maytonМне с самого начала не нравится что плавает сам предмет спора. Оба полюса мнений касаются С++ и С++. Хотя по сути спор идёт в разрезе С++ и Процессор шаблонов в С++. По сути все нарекания касаются не самого С++ а его ПРОЦЕССОРА ШАБЛОНОВ и ЮЗКЕЙСОВ которые были созданы на его базе за всю историю существования языка. Хочется спросить. Ну если не процессор шаблонов то ЧТО ? А мне кажется что коллеги Siemargl и Anatoly Moskovsky и тд по топику берут формулы вычисления площади абстрактной дыры абстракции из разных справочников и доказывают друг другу чья формула круче... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 18:57 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
д0k, Все в рамках темы )) Но вообще конечно реальных альтернатив С++ не существует. Иначе бы при таком количестве ворчунов все они на эти альтернативы уже бы перешли. Но вместо этого они ходят по С++ форумам и плачутся, как им трудно с С++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 19:30 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
teo609То что предлагается сейчас, это еще больший масштаб раздувания кода. И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать. Все эти годы я был уверен, что С++ это круто, и я бы знакомил с ним детей как с передовым. А после этой статьи возникло ощущение, что я не хочу этим грузить сына. Потому что не хочу грузить его фигней. Не хочешь - не грузи. Загрузи чем считаешь нужным, с остальным сам разберется. Лично я недавно узнал что то что я называл С++ оказывается называется С с классами, а С++ целиком мне просто не надо. Вместо плюсов есть куча других высокоуровневых ЯП, куда можно сделать вставки на голом С, если надо производительность или низкий уровень (WinAPI и т.д.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 19:37 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Siemarglполминуты на запуск апплета "yuotube" и еще секунд 15 до этого на загрузку панельки апплетов Андроид тут не причем. У тебя просто слабая аппаратная начинка для используемого апплета YouTube. У меня на телефоне когда-то давно YT запускался почти мгновенно. А теперь запускается секунд 10, а потом еще минуту видео идет с лагами. Телефон один и тот же, просто сам YouTube обновился и для комфортной работы требует более мощное железо. Так что проблема с долгим запуском YouTube решается (на пару лет) заменой телевизора на современный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 20:19 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
У меня где-то валяется Minix Android Box. Это внешняя smart-tv приставка. Похожа на эту. Щас не помню точно модель но вроде X7. MINIX NEO X7 Процессор: Rockchip RK3188, ARM Cortex-A9 Quad core, 1.6-1.8GHZ; GPU: Quad Core Mali 400 (Open GL ES2.0/1.1, Open VG1.1, Flash 11.1) Операционная система: Google Android 4.2.2 Оперативная память (ОЗУ): 2 GB, DDR3 Встроенная память: 16 GB Я к чему это. Во первых давайте сравним ARM Cortex-A9 с вашими бортовыми Intel. Я не спец по процессорам но КМК архитектура и тактовая частота будет существенно отставать. Видео H264 воспроизводится? Ну дай бох. А что вам еще надо от эконом-проца? Или вы хотите толкать Intel в каждый утюг? И вообще разумны ли обвинения которые Зямя предъявляет в адрес Андроид? Я не знаю. По мне так это обычный себе Линукс. А видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности там или вызовов OS API. Что мы ругаем? Что ругаем-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 20:52 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
maytonА видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности там или вызовов OS API. Если не путаю: видеокодеки вообще воплощают в железе. Я к тому что это не то пример чтобы сравнивать ОСы и ЯП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 21:29 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima Tвидеокодеки вообще воплощают в железе. а топологию и микропрограммы - дух святой приносит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 22:05 |
|
||
|
Пятничный бунт
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonА видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности там или вызовов OS API. Если не путаю: видеокодеки вообще воплощают в железе. Я к тому что это не то пример чтобы сравнивать ОСы и ЯП. Ну а если завтра будет устаканен H266 то нам придется выкинуть на свалку наши Смарт-Телевизоры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2016, 22:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39271634&tid=2018472]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 183ms |

| 0 / 0 |
