Фунция (X^D)%M
- Войдите на сайт для отправки комментариев
Чт, 28/04/2016 - 21:03
Доброго времени суток. Есть функция для возведения в степень и взятия подуля ((X^D)%M), для большого результата X^D. Функция написана на C#. Помогите переписать под Arduino. Огромное спасибо за помощь. Я новичок.
int Pow(int x, int d, int m) { int y1 = x % 10; int y2 = (x / 10) % 10; int y3 = x / 100; int[] p = new int[860]; p[0] = y1; p[1] = y2; p[2] = y3; int[,] s = new int[3,3]; int t1 = 0; int t2 = 0; int t3 = 0; int d1, d2, d3; int ost = 0; int sn,j; int a = 4; for (int i = 1; i<d; i++) { for (j = 0; j<a; j++) { d1 = p[j] * y1 + t1; s[0,2] = d1 % 10; t1 = d1 / 10; d2 = p[j] * y2 + t2; s[1,1] = d2 % 10; t2 = d2 / 10; if (y3 != 0) { d3 = p[j] * y3 + t3; s[2, 0] = d3 % 10; t3 = d3 / 10; } int sum = s[0,2] + s[1,2] + s[2,2] + ost; p[j] = sum % 10; ost = sum / 10; s[1, 2] = s[1, 1]; s[2, 2] = s[2, 1]; s[2, 1] = s[2, 0]; } sn = t1+ s[1, 2] + s[2, 2]+ ost; p[j] = sn % 10; sn = t2 + s[2, 1] + (sn / 10); p[j + 1] = sn % 10; sn = t3 + (sn / 10); p[j + 2] = sn % 10; p[j + 3] = sn / 10; a = a + 3; } int c = 0; for (int i = a; i > 0; i--) { if (p[i] == 0) c = c + 1; else break; } int res = 0; int ost_tab = 1; for (int count = 0; count <= a - c; count++) { res += p[count] * ost_tab; ost_tab = (ost_tab * 10) % m; } res = res % m; return res; }
1. А что, собственно, не получается?
2. Вы уверены, что у Ардуино хватит памяти для таких манипуляций?
Я не знаю хватит ли памяти. Это как можно определить?
Я не знаю хватит ли памяти. Это как можно определить?
Смотрите на
new
int
[860]
Ну там не заметны требования к памяти более 1 килобайта .. почему "не хватит"-то? Даже у УНы 2 кила. Да и флеша не так много потребуется. Вообще не вижу проблем в переписывании под Ардуину.
Если кто-то может помочь, я был бы очень благодарен.
Так я чего тут "помогать"? Замените то, на что ругается кумпилятор на верные текстовки определений и операторов и всё. Алгоритм - он и в африке олгаритмом останется.
Или Вы не знакомы с "С/С++"? Тогда в раздел "Ищу исполнителя".
Ну там не заметны требования к памяти более 1 килобайта .. почему "не хватит"-то? Даже у УНы 2 кила. Да и флеша не так много потребуется. Вообще не вижу проблем в переписывании под Ардуину.
1. Мне очень интересно, как Вы собираетесь упихать 890 int в 1К памяти.
2. Вы всерьез считаете, что когда ЕДИНСТВЕННАЯ процедура отъедает 87% всей памяти, оставляя 13% на стек, кучу и все остальные процедуры, - это нормально?
А проблему я вижу в первую очередь в том, что не могу представить, для чего бы Ардуине могла понадобиться подобная процедура. Вряд ли для того, чтобы мигать светодиодом. Значит, понадобятся какие-то библиотеки, которым, как показывает практика, тоже нужна память.
Возможно я ошибаюсь, но после компеляции у меня занято всего 8 процентов от всей памяти.
Возможно я ошибаюсь, но после компеляции у меня занято всего 8 процентов от всей памяти.
Она занята статическим переменными. Динамические расходуют память уже по мере выполнения программы. В 7-й строке сразу 860*2 байт памяти оттяпается. Кстати, я не заметил где потом память освобождается при завершении процедуры.
Во-первых, конечно 2*860, недосмотрел .. ну отъест примерно 2кб. У Atmega2560 её 8 килов, все равно с запасом влезет. На управление аппаратным железом, все равно много - не требуется .. от силы байт 200-500 по моей практике, если "буферами не разбрасываться". По-любому влезет.
Вроде как ТС не уточнял в какую конкретно ему Ардуину надо втиснуть этот алгоритм. Ну и опять жеж .. у целого ряда кристаллов есть расширенный интерфейс памяти .. так что вопрос "не влезает" - он как-бы и вообще не стоит у Ардуин.
Просто не надо брать то, что для таких задач не предназначено. Хотя и можно микроскопом забывать гвозди, но вот молотком наблюдать за биопрепаратами - ни палучица. :)
Кстати, я не заметил где потом память освобождается при завершении процедуры.
И неудивительно - это, вообще-то, C#.
Просто не надо брать то, что для таких задач не предназначено.
Это, конечно, верно.
Вот у сеня и сложилось впечатление, что Ардуина в принципе предназначена для управления каким-нибудь несложным железом, но совершенно не предназначена для вычислений больших чисел.
Ну и по поводу вычислений - в алгоритме не разбирался, но, похоже, вычисления проводятся в 10-чной системе так, что для хранения одного десятичного разряда отводится два байта. Т.е. следовало бы переписать алгоритм в менее расточительной с точки зрения памяти форме. Да и куча целочисленных делений на процессоре, у которого нет аппаратнорй операции деления - тоже сомнительное решение.
В общем, на мой взгляд, такие алгоритмы в принципе не следует делать на Ардуине, а если уж совсем без этого никак (кстати, ТС, поделтсь, зачем такой алгоритм потребовался на Ардуине?), то надо было бы хотя бы переписать его более вменяемым образом.
Я не смотрел сам алгоритм, но думаю что раз на С#, то явно его можно пооптимизировать и сильно, соглашусь.
Насчет "длинных" вычислений не согласен. В реальности да, поуправлять железом - для Атмела "большого ума", в смысле памяти не требуется. Ни оперативной ни программной. Всё сделано просто на высшем уровне. Но, замечу, что у меги2560, тем не менее, флеша аж на 256 килов, что прямо просит запиховывать в него разного рода таблицы и делать шустрое "табличное исчисление". Я так делал преобразование координат для лабиринта, предварительно рассчитывая "таблички Брадиса" для тригонометрии. И, в этом варианте, её 8 килов - вполне достаточно для такого рода алгоритмов .. не конкретно для этого, ибо не вникал, а для похожих.
Оно конешна, для обработки видео или работы с графикой - ни один Атмел не проходит по своим ТТХ, и то что тут пытаются в него напихать - скорее от бедности, чем из желания достичь невероятного. :)
Я не смотрел сам алгоритм, но думаю что раз на С#, то явно его можно пооптимизировать и сильно, соглашусь.
А я вот не соглашусь: когда алгоритм чудовищный, совершенно без разницы, на каком языке он написан.
https://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5...
https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82...
Кстати, я не заметил где потом память освобождается при завершении процедуры.
И неудивительно - это, вообще-то, C#.
В C# не принято память освобождать?
И неудивительно - это, вообще-то, C#.
В C# не принято память освобождать?
Да, не принято, ибо там есть менеджер памяти. Можно освобождать и вручную, если объект наследует интерфейс IDisposable, но в общем случае - нет необходимости вручную освобождать.
Именно про эти случаи вам и говорят - не показывайте своё невежество в том предмете, которым не владеете вовсе. Вам ведь лишь бы чего-то вставить, отписаться, отметиться. Вот и в данном конкретном случае опять сели в лужу.
faeton, пишет: "В C# не принято память освобождать?"
Ну что Вы, право .. это же Микрософт, пардон .net! Ну какое может быть освобождение памяти, когда коды аллокаторов дырявые, начиная с 3.1 винды. :)
Иван, колитесь, зачем Вам это надо?
И неудивительно - это, вообще-то, C#.
В C# не принято память освобождать?
Да, не принято, ибо там есть менеджер памяти. Можно освобождать и вручную, если объект наследует интерфейс IDisposable, но в общем случае - нет необходимости вручную освобождать.
Именно про эти случаи вам и говорят - не показывайте своё невежество в том предмете, которым не владеете вовсе. Вам ведь лишь бы чего-то вставить, отписаться, отметиться. Вот и в данном конкретном случае опять сели в лужу.
Когда на борту 8гиг, например, в PC, понятное дело можно забить на небольшой массивчик в памяти, пусть даже и не один экземпляр - освобидится операционкой при завершении программы. Захламление памяти устоявшаяся традиция в PC. Но ту же речь идёт о весьма ограниченных ресурсах.
И каким образом упомянутый менеджер памяти с C# принимает решение самостоятельно освобождать память, подскажите? Откуда ему знать, что некий кусок памяти, запрошенный по new более не нужен?
Иван, колитесь, зачем Вам это надо?
Вам уж обязательно надо свой бабский нос сунуть и ляпнуть херь не по теме - севершенно определённо! :)))
faeton, пишет: "В C# не принято память освобождать?"
Ну что Вы, право .. это же Микрософт, пардон .net! Ну какое может быть освобождение памяти, когда коды аллокаторов дырявые, начиная с 3.1 винды. :)
Я могу чего-то не знать и не понимать, может быть, интеллект C# достиг уровня телепатии... Но, если это не очередное заявления чайника о неком менеджере памяти (который ещё со времён DOS в PC вообще-то есть и сверху которого компилятор своё управление кучей добавляет), то какой может быть признак для освобождения ранее полученной памяти? Ну, можно предположить, что по локальности указателя в процедуре не только сам указатель из стека выкатить, но и кусок памяти, на который он указывает освободить. Но ведь этот кусок памяти может быть передан другому процессу для работы. Например, интеловским серверным сетевушным драверам давали куски памяти, куда они для своих нужд что-то складывали и это никому, кроме них не надо было, но сами почему-то стеснялись отхватить памяти - было такое.
Или я безнадёжно отстал от жизни?
Вот как раз таки да .. видимо отстали ещё во времена ДОСа. Как раз в ДОСе аллокатор был кузявый (сам копал), ибо ДОС разработан НЕ мелкософтом, а только им куплен у фирмы Digital Research, работой программистов которой восхищался долгое время. Пока их не купила "дочка" мелкософта - Novell и не закрыла нафиг, разогнав команду .. (это они с виду "конкуренты" .. прямо как в СССР "соцсеровнование промеж отделов")
А вот самолично, мелкософт тужился сделать винду (да так толком и не смог, пока не купил у DEC Windows Not Tested) .. но кривой аллокатор от 3.1 находил и в поздних версиях. Как понимаю, "самоличного" и удачного у них .. только первый Бейсик от Билла.
шо за хуйня тут творится?
И каким образом упомянутый менеджер памяти с C# принимает решение самостоятельно освобождать память, подскажите? Откуда ему знать, что некий кусок памяти, запрошенный по new более не нужен?
В принципе существуют два подхода (с С# используются оба в разных местах).
1. Немедленное освобождение при достижении счётчиком использования значения 0, как это обычно делают с указателями на интефейсы в технологии COM в Windows
2. Отложенное освобождение, т.н."сборка мусора" (garbage collection).
Теперь, Вы знаете ключевые слова, гуглите, изучайте.
если это не очередное заявления чайника о неком менеджере памяти
Или я безнадёжно отстал от жизни?
Лет на 50-60!
ЕвгенийП, не трожьте "это" - оно, как из лужи мордочку высовывает, пытается опять доказать, что разбирается во всём-всём-всём. Ну, как свинья в апельсинах примерно.
А вы тут про сборку мусора, счётчик ссылок распинаетесь...
.
Ну, как свинья в апельсинах примерно.
Вы так не шутите! Свиньи они много в чём разбираются! Насчёт апельсинов точно не скажу, а вот в бананах - отличные специалисты. У меня знакомый фермерствует недалекj от Бремерхафена и рассказывал, что когда приходит корабль с бананами, если они хоть чуток пожелтели (должны быть зелёными!), их продают почти задаром на корм скоту. И мой приятель, как и другие фермеры, с удовольствием покупает. Так говорит, что свиньи чётко отличают сорт бананов и жрут их совершенно по-разному. Одни сорта прямо в драку кидаются, а другие - там неохотно хрумкают :)
И каким образом упомянутый менеджер памяти с C# принимает решение самостоятельно освобождать память, подскажите? Откуда ему знать, что некий кусок памяти, запрошенный по new более не нужен?
В принципе существуют два подхода (с С# используются оба в разных местах).
1. Немедленное освобождение при достижении счётчиком использования значения 0, как это обычно делают с указателями на интефейсы в технологии COM в Windows
2. Отложенное освобождение, т.н."сборка мусора" (garbage collection).
Теперь, Вы знаете ключевые слова, гуглите, изучайте.
Круто! Я действительно не знал о таком чудном источнике глюков и тормозов. :) И этим пользуются часто, насколько я понимаю? Какой может быть счётчик использования, достигающий нуля, у куска памяти, видимо, мне не вкурить, да и признак мусора для того же куска памяти... Что в мире твориться... :)))
Круто! Я действительно не знал о таком чудном источнике глюков и тормозов. :) И этим пользуются часто, насколько я понимаю? Какой может быть счётчик использования, достигающий нуля, у куска памяти, видимо, мне не вкурить, да и признак мусора для того же куска памяти... Что в мире твориться... :)))
Для того, чтобы это начать понимать - надо сделать над собой усилие и почитать официальную спецификацию того же С++, например. Тогда таких вопросов не возникало бы в принципе. Вкратце если:
Вполне себе штатная инструкция в С++. Добавим в класс переменную-счётчик ссылок на объект, и пару функций - AddRef и Release: в первой будем увеличивать счётчик, во второй - уменьшать, и как только счётчик достигнет нуля - удаляем себя, вот и вся сказка.
Про фабрики классов и прочее COM-добро - я не буду уже, речь не об этом. Речь о том, что если делать управление памятью грамотно, а не так как с Java получилось - то всё работает нормально и без тормозов. Не знаю, где вы эту грязь выискиваете, разве что специально - уж лет дцать как ооочень многое в компе из того, чем вы пользуетесь, юзает COM-технологию. А из неё много чего было взято в тот же до-диез.
Круто! Я действительно не знал
И мы это заметили. Вы никогда не упускаете возможности продемонстрировать свою некомпетентность. Вот, скажите, у Вас задание отписаться абсолютно по каждому вопросу, независимо от уровня знаний о нём? Вам за это платят? Есть же темы в которых Вы разбираетесь, ну и пишите о них, чего во все дырки-то затычкой лезть?
Какой может быть счётчик использования, достигающий нуля, у куска памяти, видимо, мне не вкурить, да и признак мусора для того же куска памяти...
Ну, я ж Вам посветовал погуглить, почитать. Послушали бы совета, сейчас бы знали больше, чем вчера, а так просто ещё раз свою некомпетентность продемострировали. Зачем?
Да, это понятно все, что "юзается" .. и чем говенней продукт - тем активней. Сколько замечательных идей и решений, в т.ч. и воплощенных в жизнь ушло на "свалку истории", задавленное откровенным гамном .. тот же IBM PC .. сколько убытков принес IBM-у на начальной стадии! Да хоть тот же 1985й год взять .. ваще в какой-то момент все поголовно пророчили скорую смерть этому дерьму.. а оно тутаньки!
А с операционками? Сколько петиций писано в IBM (до сих пор где-то там народ пишет!) чтобы они возобновили работу над OS/2 для писюков .. фигушки. А ведь было время, когда эксель на виндовом эмуляторе полуоси работал на 15% быстрей чем родная винда на той же самой машинке. С ребятишками (тогда ещё студентами) из ЦФТ сами замеряли и ржали.. графический оконный менеджер полуоси сам настраивал и запускал в 4 метрах оперативы .. работал вполне сносно. Скока там чичас винде требуется, ась? :) А кто помнит чем кончился суд над директором по маркетингу от IBM, на котором акционеры его обвинили в получении взятки от Мелкомягких за утопление продаж полуоси, чем там дело кончилось? А претензии DRDOS-овцев к мелкомягким за тыренье кода и спец вставки в код, препятствующий исполнению офиса не на мелкомягкой ДОС .. и ВЫИГРАННЫЙ суд .. чем кончился, ась? Внезапно "мировым соглашением"..
А догадываетесь почто так? Банально, как сказал один директор завода бытовой техники: "Ну вот, понимаешь .. не могу я ваш пылесос поставить на поток. У него срок гарантии только 25 лет, а сколько он в реальности проработает, 100? Ну выпущу я пусть даже миллиард таких .. а потом, что прикажете - завод закрыть? А люди что кушать будут?"
Вот она - главная мысля копроэкономики. Экономики дерьма. Отсюда и все эти С++ с его наворотами и прочие языки с "низким порогом вхождения" .. надо, очень надо, чтобы качество программного обеспечения было НИЗКИМ. Иначе, что будут кушать работники микроэлектронной промышленности? :)
Вот и получается, что учат говнокодерству .. такие же говнокодеры. И это, для копроэкономики в целом - ПРАВИЛЬНО. :)
Круто! Я действительно не знал о таком чудном источнике глюков и тормозов. :) И этим пользуются часто, насколько я понимаю? Какой может быть счётчик использования, достигающий нуля, у куска памяти, видимо, мне не вкурить, да и признак мусора для того же куска памяти... Что в мире твориться... :)))
Для того, чтобы это начать понимать - надо сделать над собой усилие и почитать официальную спецификацию того же С++, например. Тогда таких вопросов не возникало бы в принципе. Вкратце если:
Вполне себе штатная инструкция в С++. Добавим в класс переменную-счётчик ссылок на объект, и пару функций - AddRef и Release: в первой будем увеличивать счётчик, во второй - уменьшать, и как только счётчик достигнет нуля - удаляем себя, вот и вся сказка.
Про фабрики классов и прочее COM-добро - я не буду уже, речь не об этом. Речь о том, что если делать управление памятью грамотно, а не так как с Java получилось - то всё работает нормально и без тормозов. Не знаю, где вы эту грязь выискиваете, разве что специально - уж лет дцать как ооочень многое в компе из того, чем вы пользуетесь, юзает COM-технологию. А из неё много чего было взято в тот же до-диез.
Погодите, погодите... Речь ведь шла о массиве, о куске памяти. int[] p = new int[860]; Понятно, что коли безразмерный массив, то p уже не просто адрес, а является объектом. Допустим, счётчик ссылок на этот кусок памяти есть, и когда переменная p пропадает при завершении процедуры, счётчик ссылок можно крутить в минус. Но, если этот кусок памяти отдан куда-то во внешнюю среду? Другой программе, драйверу для буффера и т.п.?
Круто! Я действительно не знал
И мы это заметили. Вы никогда не упускаете возможности продемонстрировать свою некомпетентность. Вот, скажите, у Вас задание отписаться абсолютно по каждому вопросу, независимо от уровня знаний о нём? Вам за это платят? Есть же темы в которых Вы разбираетесь, ну и пишите о них, чего во все дырки-то затычкой лезть?
Какой может быть счётчик использования, достигающий нуля, у куска памяти, видимо, мне не вкурить, да и признак мусора для того же куска памяти...
Ну, я ж Вам посветовал погуглить, почитать. Послушали бы совета, сейчас бы знали больше, чем вчера, а так просто ещё раз свою некомпетентность продемострировали. Зачем?
[/quote][/quote]
Я как нормальный человек без претензий на чью-то компетентность подсказал человеку:
----------------------------------------------
Ivan Tiko пишет:
Возможно я ошибаюсь, но после компеляции у меня занято всего 8 процентов от всей памяти.
Она занята статическим переменными. Динамические расходуют память уже по мере выполнения программы. В 7-й строке сразу 860*2 байт памяти оттяпается. Кстати, я не заметил где потом память освобождается при завершении процедуры.
-----------------------------------------------------------------------
Речь шла о скетче, где никаких СОМ и в помине нет. Потом удивился скромно что это неприянто в большом т.с. программировании... Тут же на меня набросились. Я действительно никогда не лазил в СОМ - оно мне нафиг не сдалось, я далеко не лучшим образом знаю C и уж тем более C# с его наворотами - оно мне тоже нафиг не сдалось. Я конкретно, лаконично и по сути вопроса ответил человеку в соответствующих условиях, на конкретный вопрос. Я не эксперт во всех вопросах, в отличии от больших знатоков СОМ. Меня некоторые вещи удивляют: как для лени программистов (гуивозил мышастых) налепили много... Мышь катать и ляпять, а потом мусор собирать... Стало интресно, прежде всего механизм, а не маркетинго-рекламные лозунги о том, что это круто. Ну, а о том уже как оно работает и говорить то что? Оно видно как работает - глюк на глюке, тормоз на тормозе.
памяти есть, и когда переменная p пропадает при завершении процедуры, счётчик ссылок можно крутить в минус. Но, если этот кусок памяти отдан куда-то во внешнюю среду? Другой программе, драйверу для буффера и т.п.?
Вы - милый и смешной человек.
Я привык верить людям и у меня нет оснований сомневаться, что Вы действительно что-то и где-то програмировали. Но как Вас миновала теория???!!! Вы никогда не писали свою "сборку мусора"? Никогда не писали свою "кучу" и хеш-таблицы? Слово "дефрагментация" напоминает Вам только о чистке диска в ДОСе и ранних Виндах?
Есть одна версия, правдоподобная, не хочу Вас обидеть - Вы в програмировании совсем самоучка? Академического образования по прикладной математике нет? Ответьте честно! Это не обидно - просто многое прояснится.
памяти есть, и когда переменная p пропадает при завершении процедуры, счётчик ссылок можно крутить в минус. Но, если этот кусок памяти отдан куда-то во внешнюю среду? Другой программе, драйверу для буффера и т.п.?
Вы - милый и смешной человек.
Я привык верить людям и у меня нет оснований сомневаться, что Вы действительно что-то и где-то програмировали. Но как Вас миновала теория???!!! Вы никогда не писали свою "сборку мусора"? Никогда не писали свою "кучу" и хеш-таблицы? Слово "дефрагментация" напоминает Вам только о чистке диска в ДОСе и ранних Виндах?
Есть одна версия, правдоподобная, не хочу Вас обидеть - Вы в програмировании совсем самоучка? Академического образования по прикладной математике нет? Ответьте честно! Это не обидно - просто многое прояснится.
При чём тут моя личность, моё образование, дырки и складвание кусков ровно? Ещё раз напомню - человек спрашивал о скетче. Да меня удивило и для меня неведомо что там в СОМ. Какого-то логического решения вольного распределения памяти я не заметил. Стало интересно насколько это надёжно.
Если интересная моя личность, могу рассказать в отдельной теме.
Ну .. во-первых, так бывает. И отсутствие академического образования, тоже не аргумент ни разу. Зачастую наличие регалий, как раз скрывает полную профанацию знаний, что мы тут тоже регулярно наблюдаем.
Мой перерыв в программирования, в частности пришелся как раз на тот период, когда разного рода гуру надоело втолковывать азы неучам, и было предложено несколько "технологий", позволяющих минимизировать как архитектурные ошибки, так и ошибки программирования. Ктож знал, что это ТЕПЕРЬ называется "паттерн"? :) Хорошо помню конференцию в Севастополе в годах 1989-1990 .. где дискутировали на тему "какая часть программ должна озаботится проверками параметров?" (один из докладов там был и мой в т.ч.) .. и? А теперь это MVC зовется. Или хранение переменного количества свойств в реляционной БД "повдоль" таблицы .. так этож EAV Тенцера, о как! Придуман аж в туманном 2001 году .. а то что БД на Парадоксе у моего родственника (тоже программист - математик) датирована .. 1997годом, а писана в 1995-1996 .. так это так, мелочи. Главное теперь знать абревиатуру EAV ..
.. так же может и с вашим "сборщиком мусора" и знаниями faeton оказаться.
Знание абревиатур, терминов и наличие регалий .. ни разу не аргумент в споре. И желание указивкивать на незнание оппонентом этих "терминов" .. только выдает "бездаря-тролля с головой". И только.
Погодите, погодите... Речь ведь шла о массиве, о куске памяти. int[] p = new int[860]; Понятно, что коли безразмерный массив, то p уже не просто адрес, а является объектом. Допустим, счётчик ссылок на этот кусок памяти есть, и когда переменная p пропадает при завершении процедуры, счётчик ссылок можно крутить в минус. Но, если этот кусок памяти отдан куда-то во внешнюю среду? Другой программе, драйверу для буффера и т.п.?
Ну вы же ни разу ничего не знаете про C#, не так ли? Если бы знали, то подобные вопросы не возникали бы. int[] p = new int[860] - это ни разу не простой кусок памяти, вот в чём вся фишка.
"если этот кусок памяти отдан куда-то во внешнюю среду" - для этого существуют различные подходы, в том же COM - используются всякие аллокаторы и пр. Без отрыва от конкретики обсуждение запрошенного поведения - бессмысленно: вы и в С++ просто так не передадите кусок памяти другой программе, ибо адресные пространства разные, со всеми вытекающими. Поэтому и были придуманы разные механизмы, вроде shared memory, memory mapped files и пр.
дискутировали на тему "какая часть программ должна озаботится проверками параметров?" (один из докладов там был и мой в т.ч.) .. и? А теперь это MVC зовется.
Каким боком "какая часть программ должна озаботится проверками параметров" соотносится с паттерном MVC, не проясните? В MVC, чтоб вы знали - валидация данных может быть и на стороне View, и на стороне Controller, и на стороне Model - и архитектуре MVC всё это противоречить не будет никоим образом. Потому как MVC - это такая вполне себе абстракция, не более того. И в случае клиент/серверного приложения (например, на ASP.NET MVC) валидация данных вовсю юзается на стороне View, в клиентских скриптах. При это всё это продолжает быть MVC.
В общем, вижу, что и вы немного плаваете в подобных вопросах.
Мой перерыв в программирования, в частности пришелся как раз
Если Ваш с Фаэтоном перерыв в программировании пришёлся как раз на 1960 год, когда появилась сборка мусора и вы о ней ничего не знаете, само по себе это не страшно. Все мы чего-то не знаем.
Но когда вместо того, чтобы спросить то, чего не знает, человек начинает кидаться заявлениями типа "очередное заявления чайника о неком менеджере ...", то это хамство, за которое он теперь и огребает.
вы немного плаваете в подобных вопросах.
Завидую Ваше выдержке и вежливости.
Погодите, погодите... Речь ведь шла о массиве, о куске памяти. int[] p = new int[860]; Понятно, что коли безразмерный массив, то p уже не просто адрес, а является объектом. Допустим, счётчик ссылок на этот кусок памяти есть, и когда переменная p пропадает при завершении процедуры, счётчик ссылок можно крутить в минус. Но, если этот кусок памяти отдан куда-то во внешнюю среду? Другой программе, драйверу для буффера и т.п.?
Ну вы же ни разу ничего не знаете про C#, не так ли? Если бы знали, то подобные вопросы не возникали бы. int[] p = new int[860] - это ни разу не простой кусок памяти, вот в чём вся фишка.
"если этот кусок памяти отдан куда-то во внешнюю среду" - для этого существуют различные подходы, в том же COM - используются всякие аллокаторы и пр. Без отрыва от конкретики обсуждение запрошенного поведения - бессмысленно: вы и в С++ просто так не передадите кусок памяти другой программе, ибо адресные пространства разные, со всеми вытекающими. Поэтому и были придуманы разные механизмы, вроде shared memory, memory mapped files и пр.
Теперь более-менее понятно. Спасибо. Собственно, это и предположил. А уж тут дейсвительно любой хип-хоп, хоть с наглым освобождением памяти, если кому-то сильно надо.
В С разных клонов относительно современных наворотов не знаю, совершенно верно. Особенно в части всех этих взаимодействий с библиотеками, ой, простите, фреймворками. :) И аббревиатуры многие для меня не более набора букв. Но, как человек, некоторую часть жизни трудившийся в сфере маркетинге, хорошо знаю назначение аббревиатур в продвижении товара. :)
Тем не менее, МК до нелогичных, противоречащих классике программированя приёмов ещё не доросли в большей своей части. И память освобождать в коде этой темы требуется вручную. Хоть в этом я прав? :)
Мой перерыв в программирования, в частности пришелся как раз
Если Ваш с Фаэтоном перерыв в программировании пришёлся как раз на 1960 год, когда появилась сборка мусора и вы о ней ничего не знаете, само по себе это не страшно. Все мы чего-то не знаем.
Но когда вместо того, чтобы спросить то, чего не знает, человек начинает кидаться заявлениями типа "очередное заявления чайника о неком менеджере ...", то это хамство, за которое он теперь и огребает.
Да что Вы сос своим мусором носитесь? Не надо мусорить и собирать его не придётся. :)))
И фразы мои кусочками цитировать тоже не надо, там ещё слово "если" было и смайлик. Мало того, что обидчивая девочка, так ещё и невнимательная, шуток не понимающая. :)))
Дискуссия относится напрямую конкретно к этой модели. То что существуют тонкие и толстые контроллеры, то что в нарушение модели данные проверяются и перепроверяются не там где это положено делать, да и собственно говоря это несколько ИНЫЕ данные (одно дело входной поток и иное дело проверка результата модели для выбора формы представления вывода) .. ни разу не отменяет главное положение паттерна: "контроллер предназначен для проверки входного набора данных".
Дискуссия была конечно же не про этот паттерн .. его тогда "в природе не существовало", как понимаю. Речь шла о том, что в случае построения развесистых систем с многоуровневым вложением библиотек кто должен проверять параметры: библиотека или вызывающий код? Так вот, мои реализации arhat.h как раз и сделаны на базе "ещё тех" изысканий: нифига и ничего не проверяется в коде библиотеки. Все проверки корректности параметров должен делать только вызывающий код - то бишь в терминах MVC - контроллер. Сильный аргумент "за": "вызов библиотечной функции в цикле без изменения ключевых параметров за побочным эффектом". Расходы на проверку параметров - накладные и избыточные.
ЕвгенийП, ты достал уже брехло тупое. Свали и постарайся не отвечать на мои посты. В свою очередь обещаю тебе молчать на твой ущербный троллизм. Надоел хуже горькой редьки. Иди поучись уже, студент хренов.
ЕвгенийП, ты достал уже брехло тупое. Свали и постарайся не отвечать на мои посты. В свою очередь обещаю тебе молчать на твой ущербный троллизм. Надоел хуже горькой редьки. Иди поучись уже, студент хренов.
У-у-у как Вас понесло. Обратитеьс к доктору, я Вам уже советовал.
ЕвгенийП, ты достал уже брехло тупое. Свали и постарайся не отвечать на мои посты. В свою очередь обещаю тебе молчать на твой ущербный троллизм. Надоел хуже горькой редьки. Иди поучись уже, студент хренов.
готов предоставить платные услуги нейтрального посредника между двумя непримиримыми интеллектами форума.
Да ладно, какие услуги посредника. Я - всего лишь "зеркало", тех кто ко мне обращается. Перечитайте посты и посмотрите в зеркало. Это мое тяжелое наследие 8-и летней работы продажником "всего и вся" в т.ч. и черту ладана. Привычка - вторая натура. :)
Короче, до чего договорились? До того, что надо переписывать функцию, чтоб работала под дуней или - что не надо? А то мы щас в такие теордебри залезем, ой-ёй-ёй :)