- 1
- 2
- 3
- 4
- 5
- 6
std::vector<int> data;
// ...
for (int i = 0; i < data.size(); ++i) {
int item = data.begin()[i];
// ...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+33
std::vector<int> data;
// ...
for (int i = 0; i < data.size(); ++i) {
int item = data.begin()[i];
// ...
}
byss 22.02.2013 16:02 # 0
guest 22.02.2013 23:02 # 0
Dummy00001 22.02.2013 23:25 # 0
HaskellGovno 22.02.2013 23:29 # +3
Dummy00001 22.02.2013 23:37 # 0
это старое сишное "правило": a[b] == b[a] == *(a + b).
и RandomAccessIterator, к которым относится итератор вектора, поддерживают арифметику - подобно старой доброй арифметике указателей.
HaskellGovno 22.02.2013 23:48 # +2
Ещё раз повторюсь: Итератор не обязан быть указателем.
Dummy00001 23.02.2013 00:02 # 0
Ещё раз повторюсь: синтетическим подсластителям это по барабану. Указатель не указатель - это уже семантика.
не работает на GCC (ни begin()[i] ни i[begin()]) это скорее всего потому что они скорее всего старые Сшные хаки на объекты не распростаняют. что как бы и логично.
но на каких коммерческих/древних компиляторах меня не сильно удивит если это будет компилироватся и работать.
absolut 23.02.2013 09:29 # +2
как это? http://liveworkspace.org/code/2uCj4s$0
Все дело в random access итераторе. У него есть оператор []
myaut 23.02.2013 00:47 # +1
Ну то есть после перегрузки операторов operator+ и operator[] - принципиально уже две разные сущности
HaskellGovno 23.02.2013 11:07 # +1
http://liveworkspace.org/code/code/2JOia2$11
myaut 23.02.2013 12:49 # +1
Это требование стандарта (Секция 24.1.5 в редакции 2003 года)
o2n3e 23.02.2013 04:15 # −5
Вы можете сказать, что только лох не умеет переберать стлконтейнеры? Да, это так, но.
Вся эта мура с прятаньем указателей, вся эта байда с тысичями методов для индексации и т.п. Просто не помогает, а мешает. Когда-то неосиляторы сказали, что "указатели ненужны, они не безопасны и ваще говно нечитаемое". Поколение книгагрызов, высошее на одной книжке и у их потомков уже в генах подсознательная нанависть и боязнь указателей.
Если добавить к этому ООП говного мозга у 95% приплюснутых да и тот факт, что сейчас "программирование" как таковое на дне морском, то блин у этих новоявленных плюсовиков(да он идиот, но не это главное) просто ступор в башке.
Ну что бы вы мне говорили - я не верю, что без прямого досконального понимания указателей и указательное магии пациент сможет нормально юзать стл. Так и будут массивы перебирать фором со счетчиком, как в детсаде( а 95% плюсовиков, да и сишников так делают).
Поэтому, ясчитаю, что любой приплюснутый должен вначале осилить сишку на уровне "указатель и я" - брат за брата за основу взято, либо идти в жабисты, пхпписты, сишарперы и иную тину болотную. И тогда, даже самый тупые бездари и немощи такие перлы не напишут. И да, стл - говно.
myaut 23.02.2013 09:16 # +1
o2n3e 23.02.2013 16:33 # −9
Про copy для массива и связного списка. Что такое кольцевые списки ты конечно же не знаешь, и что copy_ll(head, head) писать быстрее, чем твою stl-байду, ты тоже не осилил, а уж про memcpy и вариации я тебе и говорить не буду.
Просто ты живёшь в мире кубиков, сделаных для тебя дядей страуструпом, при этом ничего не зная о Си-мире. Твоё мышление ограничего кубиками - вот сиди и играйся.
myaut 23.02.2013 16:52 # +3
Шире надо смотреть шире, а незашориваться системным Си (я кстати на нем в основном и пишу)
o2n3e 23.02.2013 19:07 # −4
Работают на уровне кубиком только рабсила, а инженер работает на уровне материала. Хотя сейчас и инжинеры пытаются работать на уровне кубиков, как и "программисты". Я думаю не надо тебе рассказывать, что из этого вышло?
Понимаешь такую штуку, бетон как материал меня в форме не ограничивает, а вот готовая бетонная плита ещё как. В данном случае материал - сиасм, но ты же о5 сливаешь на какое-то мистическое "системное Си". Прикладухи пишется не меньше.
bormand 23.02.2013 19:44 # +6
Кроссплатформа? Не, не слышал. С радостью посмотрел бы на виндекапец, но пока жива винда - увы, придется думать о кроссплатформе.
> а инженер работает на уровне материала.
Ну зачем же так толсто? Инженер, вместо того чтобы применить в проекте стандартный винт М5х12 должен каждый раз разрабатывать его конструкцию с нуля, на уровне материала?
guest6 14.09.2023 20:53 # 0
а бухгалтер работает по другой линии — по линии библиотекаря.
roman-kashitsyn 23.02.2013 16:53 # +6
Сишники не осилили, к примеру, реализовать возможность написать функцию, которая компирует элементы из произвольного контейнера в другой произвольный, требуя от контейнеров лишь семантики указателей. Мне бы очень хотелось посмотреть, как memcpy осилит скопировать массив в связный список.
Не то, чтобы это была большая проблема для С, препроцессор и пара хаков с адресами, а также пара десятков великов всегда делали своё дело.
А Posix-API мне сложно назвать изящным API, ибо он наполовину состоит хлама, провоцирующего race-conditions без нужды.
o2n3e 23.02.2013 19:13 # −5
Как я уже говорил. Мешают массивы и связные списки только неосиляторы и бездари. Списки в 99% случаев не нужны, ибо их реализации на маллоке - тормазное говнище( а уж приплюснутые их реализации только в прикладухе и живут).
Это не хаки и препроцессор - это не хак. Это изяшное средство ЯП. Для меня твой стал и шаблоны - хаки, ты же с эитм не согласен? Ну и да, как я уже писал выше - это не нужно.
Суть не в том, что что-то плохо, а суть в том, что лучше нету. А если есть, то это узкаспециализировано( и это круто), либо студподелка на бумажке, которая лучше только на бумажке, а не в реальном мире( это ООП стайл, ибо ООП на 95% состоит из теорий, мистификаций и непонимания).
Рабство совместимость - это бич, но в мире говнорей и бездарей от этого никуда не деться.
roman-kashitsyn 23.02.2013 17:16 # 0
Кубики, о которых идёт речь, были разработаны в основном дядей-учителем-математики Степановым не без помощи тёти-студентки Ли, правда, много других дядей из американских телефонных и не очень компаний тоже помогали.
o2n3e 23.02.2013 19:13 # −4
absolut 23.02.2013 09:32 # +9
Никогда не мог удержаться, когда так просят.
Vindicar 23.02.2013 09:38 # +2
Любой интсрумент можно использовать через жопу. Хороший инструмент отличается от плохого тем, что плохой иначе как через жопу и не использовать.
И при всем моем настороженном отношении к сям (любым), я сомневаюсь что они попадают под это определение.
>идти в жабисты, пхпписты, сишарперы и иную тину болотную
илита такая илита.
o2n3e 23.02.2013 16:49 # −7
Для тебя, детсадовца, что-то сложнее, чем положить кубик на кубик - это через жопу. Хорошее оправдание. Ах какой несправедливый нижний уровень, что там всё через жопу, а мой "нечерезжопный" ООП-мирок, реализован через жопу. Ты не чувствуешь тут лёгкий запах деления на ноль?
Понимаешь в чем дело. Есть 2 типа ЯП, как 2 типа мышления - это ограниченый(плоское мышление) во все сторы ЯП( это как молоток, который работает только "от себя" аргументируя это тем, что "можно ударить себя в рыло". Только вот такого молотка хватит только на гвоздь в стену, а пряморукий человек себе и обычным молотком в рожу не попадёт).
Это как щас модно - зачем мне что-то знать о мире, об обществе и т.п. Я живу в своём мире( дом, друзья-идиоты, дорога до офиса->работа за еду->дорога домой->первый канал(соцветь, игрулечка, говнокодик потроллить)) - мне всё ок.
Так же и тут - у меня есть жава, GC и индексы - нахрен мне что-то? Для деревенского интерпрайза хватит, раб Сишник мне напишет jvm, OS, и всё низкоуровневую байду, а я илита - я строю нахрен интерпрайзЪ, "хайлоад", ваще труЪ пацан - создаю труЪ системы.
Я до сих пор верю в алгоритмическую оптимизацию( мне так дядя в школе говорил). И черезжопность Си. Верую, вера единственное, что вас держит на плаву.
LispGovno 23.02.2013 18:37 # +3
http://bfolder.ru/_ph/50/2/494769787.jpg
А окружающие просто не осилили такой мощный функциональный язык K&R Си.
Vindicar 23.02.2013 19:40 # +4
Т.е. аргументов по существу нету? Так и запишем.
>Ах какой несправедливый нижний уровень, что там всё через жопу
Сдается мне, тебе приглючилось что я наехал на священную корову си.
Попробуй для разнообразия читать ответы твоих оппонентов.
>Только вот такого молотка хватит только на гвоздь в стену
<КО>Разные ЯП - это разные инструменты, которые подходят для различного списка задач.</КО>
Причем в число критериев выбора входит и такой милый показатель как скорость и стоимость разработки.
Никто не спорит что программа, написанная на сях может при прочих равных работать быстрее чем на более абстрагированном ЯП. Цена этого - необходимость держать в голове гораздо больше посторонних фактов, что напрямую влияет на скорость (=стоимость) разработки. Приемлемая программа сейчас и хорошая через полгода - это лучше, чем идеальная, но только через год.
Дьявол, как обычно, в мелочах: абстрагированность инструмента не освобождает от необходимости думать головой как при его выборе, так и при использовании.
Незначительная потеря производительности из-за еще одного уровня абстракции - это невеликая цена за то, что программой можно пользоваться для решения поставленных задач на полгода раньше и сразу на нескольких платформах.
Но если кто-то раздувает вычислительную сложность на пустом месте (при условии что проект уже вышел из стадии прототипа) - то хоть на асме пиши, это не оправдывает. И, кстати, умение писать на ассемблере не означает умения не писать на нем хуйню.
А там где потеря производительности из-за абстракций критична или где нужна максимальная предсказуемость кода (читай - делать все самому) - вот там для низкоуровнего си раздолье.
Нужно просто (хотя вообще-то это не так просто) думать, что делаешь. Всегда. А ЯП тут не причем.
P.S.: Прозреваю ответ типа "ололо идиотина", ну да что ж поделаешь.
o2n3e 23.02.2013 23:00 # −2
О5 жалкие опрадания. Чуть быстрее - это тебе рассказал сосед по парте? Давай я тебе расскажу о реальным цифра - это порядки, причем десятичные.
Нет, дешевость разработки на ООПЯП с низким порогов хождения - это не их скорость разработки, а дешивезна программистов как таковых( они дешевые как грязь) + переизбыток рынка, а переизбыток предложения дают спросу производить выгодные манипуляции, давай я тебе поясню:
Есть контора А и контора Б. В первой конторе есть 3 сишника по допустим 10к$, которые выполняют ту же задачу, что 1сишник за 10к$ и 5-10макак за 1-2к$. Теперь давай посчитаем, нам нужно выкатить программу цикл разработки которой 3-5месяцев. После этого её надо поддерживать, а выкатывать что-то принципиально новое нам не надо ещё год-два.
Разработка конторам обошласть( допустим) в одинаковую сумму. В конторе А код прекрасен и нуждается в минимуме усилий для сопровождения. В конторе 2 говно и нужно дохрена усилий( 2-3тела в фултайме). Казалось бы всё круто? Но, как ты оворил - детали.
Сишников мало и уволив одного - ты его хрен найдёшь, ибо они либо хомядячие динозавры, либо вымирли уже. Т.е. смишника уволить никак нельзя, ибо спроса больше, а предложения мало. Стоимость штата для конторы А 30к$.
Сколько стоит штак конторы Б? 13-16к$, правильно. Почему? Потомучто в штате остаётся Сишник и 1-3тела для клепания говнокода. Остальных можно уволить не боясь, ибо они год тебе не понадобятся, а понадобятся - на следующий день прибежит к тебе голодных жабистов.
Выгода? Выгода. Но зачем об этом знать? Лучше верить в быстроту разработки.
Abbath 24.02.2013 03:45 # +1
Я твой дом труба шатал. Совсем из ума человек выжил.
o2n3e 24.02.2013 17:02 # −1
eth0 24.02.2013 14:02 # +3
Вот что си животворящий делает!
o2n3e 24.02.2013 16:56 # −3
eth0 24.02.2013 17:05 # +1
o2n3e 24.02.2013 17:55 # −5
Это как брать среднестатистического гентушнего и вантузятника, вроде разницы нет? Но она есть. Так же и тут. Среднестатистический сишник, а особенно высококлассный скилованней не потому, что иные тупые, а его жизнь заставила. Так же и гентушнек скилованней не потому, что венда говно, а потому, что а) их мало. б) жизнь заставила.
Твоя логика на дне морском, спорить только с соседями по парте тебе надо.
Vindicar 24.02.2013 19:15 # +2
Ты выбери что-то одно, потому что высококлассный - это не среднестатистический. Сишники не боги, и тоже подчиняются нормальному распределению.
>соседями по парте
Рыбак рыбака?
o2n3e 23.02.2013 23:12 # −3
А макаки, типа "я программист, а не админ", "я программист, а не електрик" - этих надо в утиль. Любой более-менее нормальный низкоуровневый специалист( специалист, не тот который дипломированный, а реальный) минимум средний електронщик, админ, знаем и понимает устройство ОС на которой работает и устройство железа с которым работает. Это основы.
Понимаешь, ты не замечаешь причинноследственной связи. Сишник для написание чего-то сложнее калькулятара должен минимально понимать архитекстуру, а вот писать истерпрайз на жаве - может любая домохозяйка. Это ВИНА НЕ ЯП, А ЕГО ЦА И КОНТЕНГЕНТА. Это надо понимать.
Производительность теряется не из-за абстракций. Производительность - это на 95% использование особенностей железа и на 5% алгоритм. Абстракции изначальные слабые умы вообще отучают от низкого уровня и производительность падает, причем падает на порядки. Они начинают верить в О-натацию, сравнивают что быстрее список или вектор и т.п.
ЯП тут какразтаки притом, что ЯП не должен ограничивать тебя в реализации. Хочу переполнение и безнаковые типы в жаве, причем не эмуляцией. С полными св-вами низов. Нельзя? В том и суть.
bormand 23.02.2013 23:46 # +3
Вы так говорите, как будто так делать не надо. В очень многих местах правильно выбранный под задачу контейнер/алгоритм даст выигрыш в производительности гораздо больший чем байтоебства, отличное знание железа, но наивный или не эффективный в данной ситуации алгоритм.
Другое дело что алгоритм с лучшим О работает быстрее алгоритма с худшим О не сразу, а после определенного N, и для некоторых алгоритмов это N достаточно большое... И если в нашей задаче типичные значения n намного ниже этого порогового числа - есть смысл позадрачивать реализацию с худшим О, иначе - однозначно взять алгоритм с лучшим О, и не париться с микрооптимизациями.
o2n3e 24.02.2013 00:17 # −3
Про контейнеры. В 90% задач банального malloc(100500*100500) хватит и всяких фичей векторов/списков там не надо. Это будет понятней, проще, и минимум раза в 2быстрее.
Использование malloc()-стайл аллокаторов убивает весь профит от связного списка. И именно этот факт делает бесполезных все цикл-стайл тестирование контейнеров. Добавте к этом юзанье кучи каждый чих( какэ то можно в ООП и в плюсах в частности).
Всё это превращает елементы списка не соседями по офсету, а соседями по страницам, что печально. А ещё пичально то, что в ООП-стайле модно юзать 2больших объекта в куче. Поэтому в бенчмарке вектор мог влезть в тлб, а в реальной жизни нет - привет фейл.
Поэтому в реальном мире рулит только минимальная узкаспециализированая реализация для хранения одного типа данных, со своим пулом и зарание выделеным адресным пространством.
Abbath 24.02.2013 03:55 # +2
TarasB 24.02.2013 21:02 # 0
Abbath 24.02.2013 23:34 # 0
TarasB 25.02.2013 09:35 # 0
defecate-plusplus 25.02.2013 09:47 # +2
ой, прости, Тарас
"проще говоря, STL - результат бактериальной инфекции" (с) Stepanov
absolut 25.02.2013 10:29 # +1
defecate-plusplus 25.02.2013 10:54 # +3
absolut 25.02.2013 12:35 # +1
TarasB 25.02.2013 11:12 # +1
LispGovno 24.02.2013 10:26 # +1
LispGovno 24.02.2013 10:29 # 0
o2n3e 24.02.2013 00:17 # −3
Вот, ещё одна вещь. Правильно, только вот для того, чтобы понимать примерное время исполнения реализации с лучшим О и также понимать время на одно n в худжем - надо знать микрооптимизацию, надо знать низы.
И вот к чему мы пришли: Для человека, который не знает низы, не разбирается в микрооптимизации, не знает свою архитектуру, ОС, конпелятор(вм, интерпритотор, etc) О-натация абсалютно бесполезна и будет сродни русской рулетке, ибо будет работать как повезёт.
А вот человеку который разбирается - ему не нужна О-нотация, ибо он примерно понимает как будет работать хорошая реализация одного "алгоритма" и как будет работать реализация второго. И он просто выберет самую лучшую, простую, удобную для реализации вещь, при прочих равных.
Abbath 24.02.2013 03:52 # +1
пойду с бомжами поговорю
govnomonad 24.02.2013 07:03 # +4
TarasB 24.02.2013 21:03 # +4
myaut 24.02.2013 00:01 # +2
> 3 сишника по _допустим_ 10к$
А реальные цифры где?
> 95% использование особенностей железа
Особенности железа умеет использовать JVM и без меня. А вот какие особенности вы собрались использовать в Amazon EC2 - для меня загадка. Ну и опять же - где доказательство _реальности_ этих самых 95%?
o2n3e 24.02.2013 00:23 # −3
>Особенности железа умеет использовать JVM и без меня.
Не смеши мои тапки, пожалуйста. Про особенности ты сам загуглишь, да и не нужно это говни никому.
>Ну и опять же - где доказательство _реальности_ этих самых 95%?
Берёшь любую числодробилку жадную до памяти - реализует её на жаве, сравниваешь скорость - наберёшь хотябы 50% - я тебя похвалю. Хотябы 5 набери.
И не забывай, что овер 50% работы будет делать jvm, которая написана так, как я гвоорил выше, а именно не криволапыми макаками. Попробуй реализовать её вообще без дерганья готового( как это сделанно там, что ты будешь реализовывать). Ты даже и 5% не наберёшь.
myaut 24.02.2013 00:28 # 0
o2n3e 24.02.2013 01:01 # −5
Бенчмарки уровня *=2 в цикле ты соседу по парте будешь показывать. Ты да, пиши реальную числодробилку жадную до памяти и хотябы 50% производительности сиасма, я уж не говорю о 70%.
Да что говорить, даже сишка сливает сиасму вплоть до порядков. А уж жава. Срочно в школу.
Abbath 24.02.2013 03:57 # 0
он в любом месте говно.
bormand 24.02.2013 07:25 # +2
А вот так говорить не надо. Оставьте такие "аргументы" для школоты. Хороший код, равно как и говно, есть абсолютно на любом языке.
Abbath 24.02.2013 23:35 # 0
govnomonad 24.02.2013 07:29 # +1
Тесты в студию
bormand 24.02.2013 08:36 # +4
А связка си-асм нормально работает только в гцц. Во всех остальных компиляторах (ну насчет icc не в курсе) асмовставка это инородное тело, которое мешает компилятору оптимизировать код вокруг нее, и, если она маленькая, потери могут стать выше чем профит от вставки... А переписывать на асме большие куски вместе с циклами - привет радостям поддержки.
govnomonad 24.02.2013 07:22 # +5
Твое байтоебство позволят выиграть в лучшем случае 10-15% за счет ухудшения читабельности, стабильности и поддержки. Сравни затраты на работу программистов и на новый комп.
roman-kashitsyn 24.02.2013 13:46 # +2
С моей точки зрения - это как лечить симптомы болезни таблетками. Почему бы, к примеру, не разнести статистику по разным потокам и мёржить её по запросу? Да и содержимое кэша бы зазря не пропадало.
Вот вроде люди "знают низы", но вместо того, чтобы придумать высокоуровневый метод решения проблемы, ищут хаки...
Поправьте меня, если я не прав. Такое извращение нужно, чтобы два потока, инкрементящие счётчики на разных ядрах, не давали лишних проблем с когерентностью кэша. Этот filler работает и даёт прирост производительности примерно в 30%.
bormand 24.02.2013 14:18 # 0
Там треды поди почти не выполняют полезной работы между инкрементами этого счетчика?
Как вариант - мелкие тики считать в локальной переменной, а после выполнения достаточно большого куска полезной работы - прибавить результат к главному счетчику. Маловероятно, что нужна именно реалтайм статистика.
roman-kashitsyn 24.02.2013 14:21 # 0
bormand 24.02.2013 15:58 # +1
32 бита рядом - 2.4нс
32 бита разнесены - 2.3нс
64 бита рядом - 6.2нс
64 бита разнесены - 2.7нс
Для атомарного __sync_fetch_and_add (гцц компилит их в lock add и cmpxchg8b соотвественно):
32 бита рядом - 32нс
32 бита разнесены - 7нс
64 бита рядом - 42нс
64 бита разнесены - 16нс
Если полезная работа между инкрементами счетчика идет дольше 1мкс - на интерференцию явно можно забить т.к. даже в атомарных инкрементах 64 битного числа выигрыш от разнесения будет в пределах 3%.
bormand 24.02.2013 16:17 # +3
guest6 14.09.2023 20:41 # 0
bormand 24.02.2013 12:43 # +4
Здравствуйте o2n3e, я хочу сыграть с вами в игру...
Придумайте небольшую memory-intensive задачку, которую можно реализовать за час - пару часов и выложите ее условие, к примеру, отдельным ГК. Вы реализуете ее на сиасме, я же займу сторону джавистов, и попробую реализовать ее на жабе.
P.S. Т.к. комп у меня не особо новый, а покупать подходящее железо и ставить операционки мне очень влом, желательно чтобы программа работала на i686 линухе и укладывалась в гиг памяти и минут 5-10 процессорного времени. Мультитрединг не запрещается. Компилятор, по возможности, gcc или clang.
Challenge accepted?
LispGovno 24.02.2013 17:16 # +1
Зассал.
bormand 24.02.2013 18:23 # 0
А вдруг пишет пример?
Abbath 24.02.2013 23:38 # +3
bot-minurast 25.02.2013 00:45 # +1
Abbath 25.02.2013 03:07 # +1
LispGovno 25.02.2013 07:29 # 0
http://films.imhonet.ru/element/194852/
LispGovno 25.02.2013 07:29 # 0
guest6 14.09.2023 20:05 # 0
ахахаха, такой большой, а в сказки веришь
Vindicar 24.02.2013 01:22 # +4
Опять и снова: читаем ответы оппонентов, а не додумываем. Я такого не писал.
>Человек с прекрасным знанием и пониманием
>Сишник для написание чего-то сложнее калькулятара должен минимально понимать архитекстуру
Понижение планки вхождения, имхо, есть не что иное как побочный эффект от повышения уровня абстрагирования от деталей реализации. Я что-то очень сомневаюсь, что большинство тех, кто действительно разработал свой инструментарий, делали его с мыслью "чтобы осилил даже имбецил". Делали программисты для программистов, чтобы можно было меньше думать о реализации и больше о задаче, просто результатом оказались способны пользоваться и люди без соответствующего образования.
Кстати, очень занятная аналогия получается. Похожие аргументы высказывались когдв Генри Форд налаживал конвейерное производство, успешно заменив нескольких профи массой низкоквалифицированной рабочей силы. И таки пришел к успеху. Так же и тут, вместо единичных шедевров ручной работы, которые остаются предметом роскоши - массовое производство пусть посредственных, но доступных каждому вещей.
Vindicar 24.02.2013 01:22 # +4
Неправда. Это просто зуд, желание впихнуть максимум байтоптимизаций во все что можно. Тогда как это просто не нужно в большинстве случаев. Не окупится.
Не говоря уже о том, что привязка к особенностям платформы вообще и железа в частности делает код непортируемым. А если хочешь портируемости - изволь либо поддерживать зоопарк нижележащих платформ сам, либо абстрагироваться от них и предоставить это разработчикам
промежуточной плафтормы.
Выбор правильного представления данных (причем представления на уровне "дерево против хэш-таблицы", а не "слово против байта") плюс алгоритма их обработки (если представление типовое или сводится к таковому) решает гораздо больше, и для него отнюдь не всегда нужно знать особенности платформы.
>Это ВИНА НЕ ЯП, А ЕГО ЦА И КОНТЕНГЕНТА.
Ну хоть в чем-то мы согласны. Фигня начинается когда задачу пытаются решить не тем инструментом.
>ЯП не должен ограничивать тебя в реализации
Единственный язык абсолютно без ограничений в реализации - ассемблер. Точка.
Все остальные абстрагируют тебя от деталей реализации ценой утраты этих самых деталей - или непосредственно на уровне языка, как питон/ява, или на уровне библиотек, как Си/плюсы. Механизмы "падения" на нижний уровень нередко есть (асмовставки в си и паскале, сишные модули в питоне) но это костыли по сути своей, и писать только через них бессмысленно. Проще сразу взять ЯП с нужным уровнем абстракции.
Попытка же создать язык, работающий на многих уровнях абстракции, весьма рискованна, так как в итоге может получиться химера, не дающая ни скорости и предсказуемости на низком уровне, ни удобства и безопасности на высоком.
guest6 14.09.2023 20:40 # 0
Хуечка. Асемблер может не уметь какие-то новые мнемоники, и придется использовать машинные коды напрямую
guest6 15.09.2023 04:58 # 0
LispGovno 24.02.2013 10:16 # +5
>ограниченый
>електрик
>електронщик
>калькулятара
>натацию
>какразтаки
Abbath 23.02.2013 22:46 # +1
Вера в киоске работает продавщицей.
Abbath 23.02.2013 22:41 # −2
roman-kashitsyn 23.02.2013 13:09 # 0
absolut 23.02.2013 13:19 # 0
LispGovno 23.02.2013 14:06 # +2
std::next используй.
roman-kashitsyn 23.02.2013 19:20 # 0
LispGovno 23.02.2013 20:18 # +1
roman-kashitsyn 23.02.2013 21:01 # 0
bormand 23.02.2013 21:33 # +1
absolut 24.02.2013 08:29 # 0
LispGovno 24.02.2013 10:39 # 0
absolut 24.02.2013 11:23 # 0
bormand 24.02.2013 11:36 # +1
absolut 24.02.2013 12:34 # 0
LispGovno 24.02.2013 17:18 # 0
Потому в с++11 без сомнений добавили std::next
LispGovno 01.03.2013 16:02 # +1
http://liveworkspace.org/code/241HdL$0
http://liveworkspace.org/code/241HdL$1
LispGovno 01.03.2013 16:06 # 0
defecate-plusplus 01.03.2013 16:43 # +3
удивлен, что в libstdс++ решили эту проблему вот так элегантно
хотя чему тут удивляться, у них size() для std::list операция O(n)
LispGovno 01.03.2013 19:50 # 0
Это не я. Это всё она, бес попутал - функция std::next!
TarasB 24.02.2013 20:51 # +1
А вообще хуле спорить.
С говно
С++ говно
Паскаль рулез
А где его фич будет не хватать (очень редко), там можно написать удобную для себя надстройку, работающую через трансляцию в цланг.
absolut 24.02.2013 22:13 # +4
передний привод - говно;
задний привод - говно;
полный привод - полное говно.
Vindicar 24.02.2013 23:11 # +2
Комп говно
Мозг рулез
А где его скорости будет не хватать, выведем ментатов.
3.14159265 04.03.2013 16:43 # +1
>С++ говно
>Паскаль рулез
Minus. Потому что жыр залл мне пол клаватуры и чать клавш не работает.
3.14159265 01.03.2013 15:24 # +2
Всё пропустил, всё проспал...
guest6 14.09.2023 20:56 # 0
дрына.рф
дрючить.рф
дрючиться.рф
дрючка.рф
дуплиться.рф
дуроёб.рф
ебака.рф
ебало.рф
ебальник.рф
ебальныегода.рф
ебальныйстанок.рф
ебанатик.рф
ебанашка.рф
ебанутый.рф
ебануть.рф
ебануться.рф
ебаришко.рф
ебатория.рф
ебать.рф
ебаться.рф
ебачь.рф
ебельница.рф
ебёнамать.рф
ебёнть.рф
ебивашумать.рф
ебистика.рф
ебистос.рф
ебись.рф
ебитвашу.рф
ебитесь.рф
ебитскаясила.рф
ебическаясила.рф
еблематика.рф
ебле.рф
ебливщина.рф
ебливый.рф
ебломщелкать.рф
ебло.рф
еблысь.рф
ебля.рф
еблясперископом.рф
ебляс
Desktop 14.09.2023 21:24 # 0
guest6 14.09.2023 22:18 # 0
https://i.postimg.cc/KjB7CYdr/image.png *
Чото понимает. Но в сложной питушне может и заппутаться, ведь ты же знаешь, что https://rtraba.files.wordpress.com/2015/05/cppturing.pdf
*Errata: не str, а int конечно: там спецификация шаблона