У тебя если с русским языком проблемы - ты скажи, а то повторение моих фраз с разбавлением их потугами острить, не говоря уже про ошибки, смотрится убого. Раскрой уже свой возраст, что ли, раз ты им так бравируешь - просто интересно уже, хотя глупость возраста не имеет, конечно... А ты тут что-то сказал? Кроме потуг с умным видом нести ахинею разве что... Наставления тут вообще никому не нужны, особенно от великовозрастных "малтшиков". Вот эту фразу старайся не менее 100 раз в день повторять, как мантру мне такие расказчики и даром не нужны, наставитель ты наш на путь истинный )
_DEN_ Ждем примера кода на сях, который на асме никто не сможет сделать быстрее. Только не надо постить код с апи вызовами и.т.п. галиматень. Только чистые вычисления.
... а с RichEdit почему-то не работает - не создаётся окно. из MSDN>>> If you are using a rich edit control in a dialog box , you must call !!! AfxInitRichEdit !!! once before the dialog box is displayed.
Ms Rem Мне кажется - это неправильный подход, в решении подобного спора эксперементальным путём, хотя и самый распространённый. Я имею ввиду часть про "исходник на си". В моей практике постоянно туча сложных (для меня разумеется) задач, кое-как справляюсь. Но не помню чтобы среди них была "переписать на ассемблере исходник сделанный на си". IMHO должна быть просто задача. Лучше выбрать независимого арбитра, которому на мыло будут посылаться решения. Чтобы участники не подглядывали у друг друга. И задача не должна быть тупой, а будучи достаточно простой предпологать разнообразные решения. У меня есть такая задача. Достаточно простая для понимания. Не решаемая законченной формулой математически, т.е. предпологающая некоторое количество циклов. Но количество этих циклов будет сильно зависить от подхода к решению.
The Svin Спор идет о производительности кода на си против кода на асме написаного вручную. Поэтому я считаю, что надо не решать задачу на алгоритмизацию (т.к. плохой алгортм написаный на асме может быть медленнее хорошего на VB), а брать конкретный реализовыный алгоритм, и оптимизировать только код, ни в коем случае не трогая сам алгоритм. Ну а если решение задачи было сделано двумя разными алгоритмами, то оно не будет доказательством в этом споре. Необходимо показать, что в оптимизации кода, человек обгонит компилятор.
Не любой. Например while (1); никак не сократить ни по скорости ни по размеру. Но большинство достаточно сложных алгоримтов можно.
Канечно, для процов имеющих более 100 регистров (ака Мутаниум64 и ево псевдо-ассемблерные 64битные клоны ака АМД) использовать команды ассемблера это гемор (велика вероятность тово что попутаешь регистры да и вообще сьедет крыша). Другое дело IA32 архитектура, кодить под которую на АСМЕ довольно несложно. А в целом, у компилеров иногда бывает чему поучиться. А вообще - оно все геморно... p.s Чувак, успешной сдачи курсача!
while (1) это типа Sleep ? Мне ещё два года назад Black_mirror показывал как на каждом вызове API можно сократить 3 байта, или С умеет использовать расстояние до импорта?
Ms Rem Во первых между понятиями "исходник на Си" и "алгоритм" нет эквивалентности. Почему тогда к примеру не давать алгоритм на асме, и пусть сишник пытается восоздать изоморфные ему на Си? Во вторых машинный код и Си не изоморфны и результаты компиляции\декомпиляции не биекты. И мы просто погрязнем в рассуждениях "следовал ассемблист алгоритму или не следовал" из-за этого. Так что это просто обречено на провал кроме самых тривиальных случаев. В простейшем правильном варианте мы даже функцию не должны задавать, мы должны задавать функциональное отношение. В третьих алгоритм - это последовательность команд, у нас команды разные, поэтому невозможно провести эквивалентностность и справедливо рассудить. В четвёртых - средства которые есть у алгоритмиста очень сильно влияют на алгоритм, и для меня к примеру это определяющий фактор почему я пользуюсь низкоуровневыми средствами. В пятых - ну не интересно мне кто лучше скомпилирует исходник на Си. Нет у меня таких задач, компилировать в ручную какую-то фигню, написанную на бесполезном для меня языке. И решение кто оказался лучше в такой задаче - мне по барабану. Людям которые платят за мой труд по барабану. Людям которые пользуются моим трудом - тоже по барабану. Вобщем скучно это будет для меня, и не докажет ничего и нового ничего не скажет. Это интересно только тем кто не уверен, в том чем он занимается. И надеится что язык на котором он пишет "спасёт" его или "погубит". Не знаю трудно\не трудно писать на ассемблере по сравнению с другими языками, но на само непосредственное кодирование у меня уходит 5-10% времени, и это самая лёгкая часть работы. Другое дело что стиль моего кодирования накладывает отпечаток на то как решается остальные 90-95% работы. И вот это-то единственно интересно, как мышление искажённое\изменённое от использования того или иного языка определяет подход к проблеме в целом.
Нет. Это типа jmp $. Бесконечный цикл. О каком именно приеме ты говоришь? Если в сях импорт обьявлен как _declspec(dllimport), то переходники не создаются, и вызов всегда идет как call dword ptr [import], если импорт определен обычным способом, то для него создаются переходники, и вызываться они будут как call _imp_import. Если идет несколько вызовов одной функции подряд, то часто используется помещение адреса апи в регистр и вызов через него (что порядочно байт экономит). Жалть только компиляторы не могут помещать в региср адрес одного из импортов, в другие потом вызывать по смещению, типа call [esi+4], но зато часто оптимизируются вызовы на конце функций, где вместо call [api], ret делаеться просто jmp [api] В любом случае, ничего не мешает использовать эти приемы (а также множетсво других, незнакомых компиляторам)вручную.
apple спасибо, попробую - просто интерфейс делался на скорую руку а с окошками я особо никогда не заморачивался. trash - спасибо.
masquer Ms Rem Я не участвую в спорах детей в песочнице. А предложениями типа "давайте напишем две прги на разных языках и померяемся" я еще на первом курсе переболел. Извини, masquer, я все же считаю что весь штат программистов Microsoft, тесно сотрудничающих со всем штатом Intel и AMD, разбираются в оптимизации гораздо лучше меня и тебя. Если ты все же ставишь себя выше - тогда незнаю, попробуй написать письмо в Microsoft, может они тебя на работу возьмут. А то такой талант пропадает...
вообще-то речь не только (и даже не столько) обо мне, хотя я достаточно разбираюсь в оптимизации, чтобы написать на асме код, который в общем случае будет не хуже как минимум, компиляторы тоже люди пишут, почему я априори должен себя ставить ниже всех? кто сказал, что он пропадает? кроме того вряд ли меня в MS зарплата заинтересует, разве что на руководящей должности
masquer В разработке скольких камней ты принял участие? А сколько компиляторов сопровождал? Десятки и сотни людей этому годы посвящают, вкладывая свои суммарные знания в один продукт. А ты тут заявляешь. Это примерно то же самое что если бы я начал говорить что знаю С++ лучше чем комитет по стандартизации. Вобщем весь этот спор - глупая и бессмысленная трата времени. Ты не переубедишь меня, я не переубежу тебя. Да собственно и незачем. Надеюсь чувство превосходство над всем миром тебе поможет в жизни.
Эээ, у тебя явно с логикой какие-то проблемы. Эти примерно то же самое, что утверждать, что только повар с соотв. образованием может сказать - было это блюдо вкусное или нет. Ты себе вбил в голову что ты суть "тварь дрожащая" супротив компилятора и с этой точки зрения споришь, а я (и не только я) считаю что человек вполне может любой самый оптимизирующий компилятор обойти на большей части серьезных вычислений. Справедливости ради хороший компилятор выдает очень неплохой в плане оптимизации код, но не непобедимый в общем случае. Спасибо, помогает - проверено )
То что ты удтверждаешь весьма спорно, и если не хочешь чтобы тебя считали пустозвоном, то это надо доказывать на практике. Пока же кроме слов ничего не было. Или может тебе жаль расставаться со своими предубеждениями. Короче, этой фразой ты окончательно подписался в своей некомпетентности. После такого позорного ответа, я думаю многие будут считать тебя пустозвоном. З.Ы. Хотя наверно единственное в чем ты прав, это то, что ТЫ не сможешь написать код лучше компилятора...
нет, это не примерно то же самое. Это вообще сбоку. Во-первых, разговор не про "знаю", а "умею пользоваться", а, во-вторых, не с комитетом по стандартизации, или сотней людей писавших компилятор надо меряться, а с компилятором, и людьми, которые этим компилятором пользуются. Разработчики компиляторов, даже если они и гении, они взяли на себя работу гораздо более сложную, чем оптимизация конкретной программы, они хотят научить компьютер оптимизировать любую программу. А машина дура. А люди, которые пользуются компилятором... глянь сюда: http://shootout.alioth.debian.org/ Даже ради того, чтобы померяться письками, они не могут подобрать опции оптимизации для gcc, в результате чего такие языки как haskell обходят C на всяких рекурсиях или вычислениях fpu.
То что количество человек в разработке системы может перейти в качество не подтверждается ни эмпирически ни аналитически. Разрабатывает в основном 1 человек, - остальные ассистируют. Типа "зажим", "спирт". Ядро DOS разрабатывал 1 человек, и ему никто ни ассистировал. NT - 1 человек и ему ассистировали 3е. Чикаго - 2 человека (и она в результате сдохла) и мало того из-за путаницы и не согласованности (результат увеличения "решающих" всего до 2х!) получилось несогласованность между группой Катлера и Чикаго, в результате которой программисты Win32 API имели гемор до тех пор пока 9x не начала потихоньку отбрасывать копыта. Мозги - не суммируются. Для того чтобы группа из 13 (чёртовой дюжины) человек смогла творчески обменятся идеями и учесть мысли друг друга как один организм нужна обработка 6227020800 связей. Обработать такое количество связей нереально живыми людьми. Поэтому при 13и равноправных участниках "мозгового штурма" если бы они пытались учесть мнения-мысли друг друга результат был бы хуже чем это сделал бы любой один из них по отдельности. В реальности они и разваливаются на 1, 2 человека. И просто имеют возможность подсматривать у друг друга, а решает какой-то один из них. Как только они попытаются "думать большей группой" - результат резко ухудшается. В результате на всё что создаёт MS находится что-то лучше и быстрее на стороне. И вся сила этой компании проявляется ни в том что она придумывает что-то лучше - она просто покупает или ворует это. А то в чём она хоть как-то себя оправдала было сделано 1м 2мя программистами в конкретных задачах. Разумеется полтора человека создавших С знают С лучше любого члена комиссии по стандартизации. Так же как Эвклид разбирался в собственной геометрии лучше любого из прошлых настоящих и будущих миллиардов преподователей Эвклидовой геометрии. А мыслей\фактов\инструментов и интеллектуальных приёмов она содержит больше чем ничтожная по этим критериям собрание идей воплощённых в MS Windows. Делать корреляцию между объёмом труда и его качеством - это всё равно говорить что Эйнштейн был глупее кучи рабов на каменоломне, поскольку если бы его заставили перетащить такую тучу камней - он бы надорвался. Туча камней - это миллионы строчек кода в Windows, по количеству которых ты пытаешься доказать, что некий "корпоративный" мозг MS по этому количественному определению "умнее" любой отдельно взятой головы. Даже Геракл (известный своей силой) не стал в подобной ситуации с авгеевыми конюшнями решать это количественным методом, таская г"вно на горбу. Решил её интеллектуально. Оказавшись умнее, "коллективного подхода" тех кто это г!вно разгрести так и не смог. Фу какой убогий критерий Это что же получается док. Кнут, глупее Гейтса только потому что отклонил предложение работать на MS? Даже Гейтс не считает, что его компания "умнее" проффессора Вобщем - случай клинический.
Да _DEN_ кроме пустых слов, в большей части глупых, ничего путного не сказал. Обвиняя и поливаяя грязью всех, кто по его мнению "идиоты" ибо компиллер лучше. Может будем молиться на компилятор тогда ? "Не печалься, что тебя не знают люди, печалься , что ты не знаешь людей". (с) Дзен. Да, именно так и есть - Вы критикует и делает какие-то необоснованные мнения о человеке, которого даже не знает. А потом кидаетесь грязью, что вы не спорили, и не хотите ничего доказывать. Как это назвать ? PS. ИМХО еще чувствуется , что _DEN_ Очень хочет работать в MS, но его туда не пускают.. вот он и начал ))