Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

Холивар темы: Может ли быть спагетти-код не на основе goto?

05.05.2025, 08:43. Показов 6900. Ответов 149
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Холивар вынесенный из темы Может ли быть спагетти-код не на основе goto?


2автор: для начала нужно определиться, пишешь для себя или для некоего коллектива. Если для коллектива, то без вариантов нужно писать так как принято в профессиональных сообществах как бы вам там что-то не нравилось. А если пишете для себя, то пишите так как нравится лично вам, не издевайтесь над собой.

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

Как бы всё красиво не звучало, но вы нигде не найдёте единого мнения о том как же именно лучше всего оформлять код. Я иногда вставляю код с этого форума от "великих знатоков ООП" на других ресурсах и этот код обсирают ровно так же, как мой код здесь. Так что угодить всем-всем-всем вы всё равно не сможете. Но можно конечно выбрать для себя например оформление MSDN и работать строго в этом векторе, хотя вам часто так же будут говорить про индусский код, о котором вы и пишете в этой теме.

goto - это не оператор говна, это такой же инструмент как if или for, главное тут уместность его применения. У меня изредка он бывает, в основном для выхода из вложенных циклов или когда сильно проще просто воткнуть goto на время разработки, не вижу как именно goto повлияет на читаемость, ведь вызов любой функции это точно такой же goto (если возвращаться к Бейсику, то это GOSUB), и вам тут же в этой теме совершенно нормально пишут что читаемость кода с кучей методов вдруг становится лучше, непонятно почему вызов метода это хорошо а переход по goto - это уже плохо. И в любом случае в ассемблере все ветвления так или иначе сделаны через goto, которых заметно больше, так как там скорее конструкции (IF условие GOTO). Любая итерация цикла это goto, просто не явный.

И какую бы книжку вы не читали всегда есть вероятность что её или не читали другие или они не разделяют те же принципы что там описаны.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2025, 08:43
Ответы с готовыми решениями:

Может ли быть спагетти-код не на основе goto?
Согласно Википедии: То есть подразумевается, что спагетти не обязательно только из goto. Ниже...

Спагетти код ???
Если я в представление использую foreach - то ето спагетти ??? Пример: @foreach (var i in...

С# vs vb.net Холивар или нехватка знаний?
Появилось свободное время, решил посмотреть, что за зверь такой C#... Жесть какая-то! Для...

149
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
06.05.2025, 16:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Катафалк Посмотреть сообщение
Иначе я не могу объяснить как разбирательства в коде может вызывать у вас такие проблемы
ок, даю вам сутки чтобы написать описание этой реализации
https://github.com/einar-saukas/ZX0/tree/main/src

я без особых проблем конвертировал её на C# и могу использовать внутри своих проектов, но как именно это работает я не знаю, то есть метод для меня - черный ящик.
В корне проекта есть описание сути алгоритма, но не описание реализации, можете читать.
Только не отмазывайтесь тем что это Си и что тут нет ООП.

Ну а вообще когда ищешь реализацию какого-то алгоритма на C#, то в 90% случаев находится что-то что вообще никак не прикрутить никуда, либо реализация в один метод пишется классом на 20 файлов по 100 строк в каждом - в чем тут удобство - непонятно.

Добавлено через 12 минут
Цитата Сообщение от Wolfdp Посмотреть сообщение
все несогласные с вами либо работают программистами и пишут программы на .net, либо очень плотно изучали эту clr
а я где-то спорю с этим? я вроде бы за весь форум пишу, а не за 5 человек.

Цитата Сообщение от Wolfdp Посмотреть сообщение
начинаете доказывать ненужность ООП
что-то я не припомню такого, можете процитировать?

Цитата Сообщение от Wolfdp Посмотреть сообщение
git
мне кажется в теме git я довольно ёмко описал его плюсы и минусы и даже меня поддержали в этом вопросе и я ни слова не сказал, что git не нужен. вы уж желаемое за действительное не выдавайте.

Цитата Сообщение от Wolfdp Посмотреть сообщение
оформление кода
и здесь бы хорошо увидеть мою цитату где я пишу "оформление кода не нужно", иначе вы смело можете взять себе медальку - брехло.

Цитата Сообщение от Wolfdp Посмотреть сообщение
складывается впечатление что вам интересно именно идти против системы
а система это кто, вы? я могу написать что-то против заносчивых хмырей которые себя возомнили лидерами мнений, да, такое я могу. Но причем тут система?

Цитата Сообщение от Wolfdp Посмотреть сообщение
а не узнавать что-то новое и учиться
я каждый день узнаю что-то новое и учусь, только в отличии от 15-тилетних я делю знания на полезные и бесполезные еще на входе. В мои 50 лет всё подряд в себя засовывать неразумно. Плюс, это же просто хобби, я изучаю только то что интересно мне в конкретный момент. GIT я протестировал и не увидел для себя никаких преимуществ.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Отдельно меня умиляет что если спрашивает условный студент, то якобы ничего сложнее if-else предлагать уже нельзя
можно, если вопрос это подразумевает. ВУЗы разные как и преподаватели.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Не судите по себе -- некоторые как раз хотят учиться
А я составляю какую-то конкуренцию студентам? Особенно интересно как вы студенту непрофильной специальности начинаете загонять что-то про корпоративные стандарты, а у него будет два семестра с лабами уровня А+Б и через 4 года он будет максимум в эксельке циферки вбивать, а вы ему про космические борозды загоняете, бред же.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Плюс данные темы читает не только автор вопроса, а те кто таки умеет пользоваться гуглом. И вот им как раз критично узнать "как правильно".
Угу, видимо поэтому за некропостинг даже модеры начинают наезжать, видимо тоже беспокоятся чтобы зашедшие с гугла узнали по теме что-то (нет). Я об этом имел беседу как с Элд Хасп так и с админами и все в едином порыве сказали "пшёлнафиг", так что для начала, если вы уж такой бдун полезностей для загугленных - договоритесь об этом с администрацией форума.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 16:31
Цитата Сообщение от belalugoci Посмотреть сообщение
ок, даю вам сутки чтобы написать описание этой реализации
https://github.com/einar-saukas/ZX0/tree/main/src
А зачем ему это? Да и вообще - если кто-то написал что-то (библиотеку/функцию/метод...) и это работает, то какой смысл ковыряться в этом коде? Ну, конечно, если не интересует что-то конкретное и хочется портировать это на др. язык, например..

Сходил по ссылке - ничего волшебного там не нашел. Если меня бы заинтересовал какой-л. метод там - расковырял бы до ниточки..
0
 Аватар для Andrey-MSK
3371 / 2257 / 388
Регистрация: 14.08.2018
Сообщений: 7,647
Записей в блоге: 4
06.05.2025, 16:49
Цитата Сообщение от belalugoci Посмотреть сообщение
Угу, видимо поэтому за некропостинг даже модеры начинают наезжать, видимо тоже беспокоятся чтобы зашедшие с гугла узнали по теме что-то (нет).
А с какого боку тут некропостинг? Привёл поисковик на эту тему, зашел гость, почитал, узнал что хотел, ушел.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 16:53
На всякий случай:

«Невежда» — малообразованный человек, который не хочет узнавать новое, но ведёт себя так, как будто всё знает и понимает. Такой человек любит рассуждать о том, в чём не разбирается, и даже может давать советы.

      
4
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16154 / 11275 / 2890
Регистрация: 21.04.2018
Сообщений: 33,153
Записей в блоге: 2
06.05.2025, 17:48
Цитата Сообщение от Wolfdp Посмотреть сообщение
Воу, а можно поподробней?
Цитата нашего эксперта:
Цитата Сообщение от kolorotur Посмотреть сообщение
Либо в таблицу безусловных переходов, либо в цепочку if/else, либо в словарь делегатов — в зависимости от того, что свитчится и от настроения компилятора.
Добавлено через 31 секунду
По цитате можете перейти в тему где это обсуждалось.
1
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
06.05.2025, 17:56  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
А с какого боку тут некропостинг?
с такого, если бы админами модерами и вами двигали бы помыслы о том придет ли кто-то с гугла и прочитает ли, то и за некропостинг наездов не было бы. Ведь я указал решение в старой теме, на которой сам и пришел с гугла. Нашел решение - оставил на форуме ДЛЯ ДРУГИХ.

Цитата Сообщение от wizard41 Посмотреть сообщение
А зачем ему это?
ну человек же должен хоть иногда за свои слова отвечать?

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

Цитата Сообщение от wizard41 Посмотреть сообщение
Ну, конечно, если не интересует что-то конкретное и хочется портировать это на др. язык, например..
ну портирование как раз вполне себе происходит без понимания, я это сделал не напрягаясь.

Цитата Сообщение от wizard41 Посмотреть сообщение
Сходил по ссылке - ничего волшебного там не нашел
ну расскажите что именно вы там нашли, расскажите как именно происходит сжатие и зачем те или иные части кода? Я вот построчно гонял, в клеточках в тетрадке записывал и так и сяк, но так и не смог разобраться в этой реализации.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 19:15
Цитата Сообщение от belalugoci Посмотреть сообщение
расскажите как именно происходит сжатие и зачем те или иные части кода?
Вы и впрямь наивно полагаете, что я буду тратить на это время, ради того, чтобы доказать вам что-то? Зря.
Цитата Сообщение от belalugoci Посмотреть сообщение
в полку $%#$болов прибыло?
Вы, как умудренный опытом годами человек - знаете, наверное, на чем пишут программисты встраиваемых систем? Это С (Си) и С++. Я один из таких специалистов. В Си/++ разбираюсь. А у кого и в каком полку там у вас прибыло - меня не волнует..
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,235
06.05.2025, 19:24
Цитата Сообщение от wizard41 Посмотреть сообщение
Это С (Си) и С++

Не по теме:


Rust еще, не забывайте про Rust.
PS: Rust.


2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 19:38
Цитата Сообщение от IamRain Посмотреть сообщение
Rust еще
Ага, но это уже современное...

belalugoci, вот у меня есть некоторые сомнения по поводу того, как и что вы там портировали "без понимая"...
В частности, как без понимания совладали с методами типа:
C++
1
void assign(BLOCK **ptr, BLOCK *chain);
принимающими указатель на указатель.
Этот механизм не так то легко понять даже тем, кто реально занимается Си/плюсами. А вы прям такой молодей - бац, и все готово
Представляю, что у вас там вышло...
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16154 / 11275 / 2890
Регистрация: 21.04.2018
Сообщений: 33,153
Записей в блоге: 2
06.05.2025, 19:42
Цитата Сообщение от wizard41 Посмотреть сообщение
принимающими указатель на указатель.
Этот механизм не так то легко понять даже тем, кто реально занимается Си/плюсами.

Не по теме:

Тем кто балуется ассемблером - понять легче.

0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
06.05.2025, 20:10
Цитата Сообщение от belalugoci Посмотреть сообщение
ок, даю вам сутки чтобы написать описание этой реализации
https://github.com/einar-saukas/ZX0/tree/main/src
Обязательно. Как только покажете где я утверждал, что являюсь экспертом в алгоритмах сжатия.
Хотя, мог бы даже и попытаться. Но конечно же не за сутки и не за бесплатно

Добавлено через 1 минуту
Цитата Сообщение от belalugoci Посмотреть сообщение
Ну а вообще когда ищешь реализацию какого-то алгоритма на C#, то в 90% случаев находится что-то что вообще никак не прикрутить никуда, либо реализация в один метод пишется классом на 20 файлов по 100 строк в каждом - в чем тут удобство - непонятно.
Эээ... Каким образом реализация в виде 20 файлов мешает вам его куда-то прикрутить? Какое вообще вам дело, сколько там файлов, чтобы вызвать этот класс в своём коде?
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
06.05.2025, 20:24  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
вот у меня есть некоторые сомнения по поводу того, как и что вы там портировали "без понимая"
ну задача же портировать и на выходе получить такие же результаты как и оригинальная программа, а не повторить всё именно так как сделал автор.

Цитата Сообщение от wizard41 Посмотреть сообщение
void assign(BLOCK **ptr, BLOCK *chain);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public void SetNewBlockInArray(ref Block ptr, Block chain)
    {
        ptr = chain;
    }
 
    public class Block
    {
        public Block chain;
        public Block ghost_chain;
        public int bits;
        public int index;
        public int offset;
        public int references;
        public bool isempty;
    }
Цитата Сообщение от wizard41 Посмотреть сообщение
Вы и впрямь наивно полагаете, что я буду тратить на это время, ради того, чтобы доказать вам что-то?
я полностью уверен что делать вы ничего не станете, но будете рассказывать что оно вам не нужно, доказывать вы ничего не собираетесь и т.д. и т.п.

Цитата Сообщение от wizard41 Посмотреть сообщение
В Си/++ разбираюсь
ЯП тут вообще не при делах, мы говорим о том чтобы читая код понять логику работы. Товарищ утверждал что поймёт всё, но как и положено "специалисту" быстро слился сославшись на занятость. То есть трепаться со мной времени вагон, а написать какой участок кода за что отвечает - сразу времени нет. Типичный случай.

Цитата Сообщение от wizard41 Посмотреть сообщение
принимающими указатель на указатель
а в чем сложность понимания? у вас есть например матрица адресов, откуда брать спрайт, загружая в неё разные адреса вы можете на ходу менять спрайт не меняя кода исполнения. Указатель на указатель это типичное ассемблерное, то есть вы указываете на адрес в памяти откуда нужно взять не значение, а опять указатель, а значение уже будет дальше. Типа массив индексов дрогого массива.

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

Цитата Сообщение от Катафалк Посмотреть сообщение
Но конечно же не за сутки и не за бесплатно
вы очень странный специалист, говорите одно, в реальности уже какие-то условия, рамки, попахивает враньём.

Цитата Сообщение от Катафалк Посмотреть сообщение
Эээ... Каким образом реализация в виде 20 файлов мешает вам его куда-то прикрутить? Какое вообще вам дело, сколько там файлов, чтобы вызвать этот класс в своём коде?
как правило там нет реализации - типа создал класс, вызвал инит и вуаля. А учитывая что всё разбросано по разным файлам и методам, то собрать во что-то читаемое просто ДЛЯ МЕНЯ не реально. Я часто пользуюсь готовыми реализациями в один класс, там всё ничем не отличается от использования стандартных классов. К сожалению объяснить доходчиво не смогу. Если попадется что-то - покажу. Причем сам алгоритм вполне компактный, но зачем-то рассован на кучу методов.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 20:24
Цитата Сообщение от belalugoci Посмотреть сообщение
ЯП тут вообще не при делах
Ну как же не при делах? Если не знать хотя бы основы - как понять что там происходит? Стрелочки, буковки...
Цитата Сообщение от belalugoci Посмотреть сообщение
Указатель на указатель это
В целом верно, хм. Ну а что же тогда вам мешает понять что там написано?
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
06.05.2025, 20:32  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Ну как же не при делах? Если не знать хотя бы основы - как понять что там происходит? Стрелочки, буковки...
основы чего? Си? там половина кода с C# совпадает. С питона на C# и то куда больше фантазии нужно чтобы перенести чем с Си.

Цитата Сообщение от wizard41 Посмотреть сообщение
Ну а что же тогда вам мешает понять что там написано?
А я понимаю что там написано, я не понимаю как это работает. Там хитро определяются типы блоков, что позволяет генерировать оптимальное сжатие, в моей реализации я делал обход через BFS, но без повторных блоков, чтобы ввести повторные блоки я не смог придумать обсчёт такой, чтобы это не положило машину на лопатки. У Эйнара всё куда быстрее, хотя на фоне того же lz4 у него то же тормозилка педальная, и есть ещё другие реализации, которые поддерживают формат Эйнара, но пакуют сильно быстрее, ссылки есть внизу в README на его git. Но их я так же не смог понять.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
06.05.2025, 20:38
На вскидку, там делается несколько прогонов через сортировку и выборка наименьшей длины. Тормоза тут тоже будут, естественно.

Добавлено через 34 секунды
Но это вникать надо. Я этим пока не интересуюсь.
0
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
06.05.2025, 20:51
Цитата Сообщение от belalugoci Посмотреть сообщение
угу-угу, когда я пишу что быть экспертом во всем и понимать любой код не получится, то я тупой, а когда это пишете вы - воть, это бальзам.
но там не нужно быть экспертом в алгоритмах сжатия, так как это авторский алгоритм и прошлые знания вам не помогут, как не поможет вам и оформление кода.
Ок, процитирую в третий раз, что я писал на самом деле
Цитата Сообщение от Катафалк Посмотреть сообщение
Принципы оформления кода, паттерны и т.д. - все эти штуки облегчают опытному программисту - специалисту в определённой сфере разрабатывать, читать, понимать, тестировать, отлаживать код в этой самой сфере. И, частично, в смежных сферах тоже может работать.
Я нигде не утверждал, что являюсь экспертом в алгоритмах сжатия. Так что если хотите, чтобы я в этой теме разбирался - милости прошу обсудить мою мотивацию. Доказать что-то ноунейму на форуме на таковую никак не тянет
Цитата Сообщение от belalugoci Посмотреть сообщение
А учитывая что всё разбросано по разным файлам и методам, то собрать во что-то читаемое просто ДЛЯ МЕНЯ не реально.
И никому не нужно. Все просто берут готовую либу и подключают в свой проект.
А для удобной навигации по коду существуют IDE.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
06.05.2025, 22:44

Не по теме:

Цитата Сообщение от Катафалк Посмотреть сообщение
Хотя, мог бы даже и попытаться. Но конечно же не за сутки и не за бесплатно
А уже всё. Вас поставили на счётчик. Завтра в 16:28 ждём проект на гите. :D



Добавлено через 54 минуты
Цитата Сообщение от Катафалк Посмотреть сообщение
И никому не нужно. Все просто берут готовую либу и подключают в свой проект.
Технически может потребоваться ревью либы, например на предмет бэкдоров или банальных уязвимостей по незнанию автора. Это очень не частая работа, которую выполняют на проектах, где нужна максимальная безопасность. Не уверен что там прям побайтово разбирают, но погружаться нужно основательно.

Гораздо чаще разбирают не всю либу, а ищут конкретные проблемы. Допустим либа для long массивов в определённый момент начинает выводить ерунду. Подрубаешь исходники, смотришь -- а там в одном цикле провмыкали и использовали int.

Допускаю что ещё есть кейсы для погружения в либу.

-------------------

В любом случае я не особо понимаю как одно противоричит другому. Да, для разбора чужого кода ВСЕГДА нужно понимать контекст, без него даже простой код будет представлять тот ещё ребус. Очень грубо это можно сравнить когда очередной ТС скидывает тупо архив с winforms и просит "глянуть ошибку". Что делает форма, какая ошибка -- одна мудрейшая Хоро ведает. И не скажешь что там код прям сложный, но сидеть и час-другой расшифровывать архив особого желания нет.

Но кроме контекста не плохо бы чтобы код был оформлен по-человечески. Если я вижу очередной button_click в котором выполняется всё и вся -- уже понимаешь что придётся долго разбираться в дебрях и желание помогать резко улетучивается. Понятно что пишет студент, но блин -- на дворе 2025 год. Уже можно 100500 раз составить методички, которые бы позволяли обучать людей сразу писать адекватно.

Ну и проф-деформация никуда не делась. Элд Хасп выше уже писал что зачастую видишь код и сразу понимаешь что это фигня прям на автопилоте. Как бы особенность мозга -- быстро выявлять такие проблемы, а не каждый раз анализировать по полной цепочке "а почему так" (шо занятно это тянется ещё со времён выживания в дикой природе). Особенно если был непосредственный опыт "почему так лучше не делать" с негативным закреплением.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3453 / 2774 / 575
Регистрация: 04.09.2018
Сообщений: 8,725
Записей в блоге: 3
07.05.2025, 01:49
Цитата Сообщение от Wolfdp Посмотреть сообщение
Подрубаешь исходники, смотришь
Ага, особенно, когда их нет Либа глючит, но адекватных ексепшенов не шлет: не задумано, (или автор(ы) тупо не разбирались с такой-то проблемой). А ты сидишь и мучаешься, придумывая методы перехвата такого поведения.. ))

Добавлено через 3 минуты
Только вот с месяц назад всплыла такая проблема, млин... Дооооолго сидел, пытаясь отловить эту "Unacknowledged Error"... Вдруг от куда ни возьмись, как говорится
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
07.05.2025, 02:54
Цитата Сообщение от wizard41 Посмотреть сообщение
Либа глючит, но адекватных ексепшенов не шлет
Дык, классика же. Бонусом эта ошибка может падать в отдельном внутреннем thread. Удачи понять хотя бы на каких данных и в какой момент падает.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
07.05.2025, 08:30  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
На вскидку
навскидку и я могу сказать, толку с этого только ноль.

Цитата Сообщение от Катафалк Посмотреть сообщение
Я нигде не утверждал, что являюсь экспертом в алгоритмах сжатия
вы так можете уходить от темы регулярно, что у вас не спроси неудобное, вы всегда скажете что не являетесь специалистом в этой теме. Что, впрочем, не помешало вам не соглашаться с моими аргументами. Получается что вы не эксперт, доказательств своих же слов предоставить не можете, но мнение имеете? Ну кто бы спорил.

Цитата Сообщение от Катафалк Посмотреть сообщение
Все просто берут готовую либу и подключают в свой проект.
а если нет либы?

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

Цитата Сообщение от Wolfdp Посмотреть сообщение
Допустим либа для long массивов в определённый момент начинает выводить ерунду. Подрубаешь исходники, смотришь -- а там в одном цикле провмыкали и использовали int.
ну как раз поиск таких детских ошибок совсем не обязательно ведет к погружению в саму либу, так как восстановление алгоритма тут не потребуется. При желании такие ошибки даже можно искать автоматическим способом.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Как бы особенность мозга -- быстро выявлять такие проблемы, а не каждый раз анализировать по полной цепочке "а почему так" (шо занятно это тянется ещё со времён выживания в дикой природе). Особенно если был непосредственный опыт "почему так лучше не делать" с негативным закреплением.
Вы про оформление кода же, а я про него сейчас и не говорю - речь именно про восстановление логики. Поможет ли восстановлению логики оформленный код - поможет, никто с этим не спорит. Речь о том, что оформленный код не поможет в том случае если вы не знаете предметную область. Как в случае Катафалка который съехал с темы как запахло жареным. Он живое доказательство моих слов.

Цитата Сообщение от wizard41 Посмотреть сообщение
Дооооолго сидел, пытаясь отловить эту "Unacknowledged Error"
Ну или мой пример с heghload.fun, сервер выдал ошибку, хотя локально ошибок нет, ошибка банальная - индекс массива вышел за пределы, но где и почему? Навтыкал эксепшенов, поймал место, но почему там ошибка если локально всё работает? Пишу генератор входных данных и запускаю на ночь, ловлю это состояние и потом пошагово ищу почему же индекс уходит. Оказывается что когда перевод строки попадает точно на конец буфера, то он же переносится в начало буфера как хвост данных и у нас появляется элемент нулевой длины (придумал, но примерно так).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2025, 08:30

Какие альтернативы goto можете предложить?
ситуация следующая. есть главное меню: 1. Список Блюд 2. Список напитков 3. Выход При...

Чем можно заменить конструкцию On Error GoTo
Здравствуйте! Чем можно заменить данную конструкцию? Интересует больше как Метки(Этикетки)...

c# и goto
поразительно но опять какаято странная ошибка. компилятор ругается, если я ставлю метку(для...

goto есть ли такое и как им пользоваться
Добрый день, если такая возможность перескакиветь в ходе выполнения программы из одной строки в...

Чрезмерное употребление оператора goto
Сделал небольшую программку, подсчитываем доходы и расходы Часто где использовал оператор goto,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Закрытая тема Создать тему
Новые блоги и статьи
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru