На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Страницы: (17) « Первая ... 14 15 [16] 17  все  ( Перейти к последнему сообщению )  
    > Мастер-класс виртуозного программирования, откровения потомственного хакера
      Цитата Суровый @
      Потом добрых можно будет разделить на более и менее добрых...
      К Маклауду классику ведёте?.. ;)
        Цитата Славян @
        К Маклауду классику ведёте?..

        Возможно, не исключаю.
        Я веду к тому, что в обществе всегда будут отклонения в ту или иную сторону. Всегда среди хороших можно найти самых хороших, на фоне которых просто хорошие не будут казаться уже хорошими. И через какое-то время более добрые будут считаться просто добрыми, а менее добрые будут злыми.
          prografix, вот ты скажи, я злой?

          Добавлено
          ТС поудалял все свои посты, кроме первого и последнего. Есть надежда, пусть и исчезающе малая, что после прочтения этого топика он стал умнее.
          Цитата TheMachine @
          т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
            Цитата shm @
            я злой?
            вот и ответ:
            Цитата shm @
            ТС поудалял все свои посты, кроме первого и последнего.
            Самое время начать задумываться...
              Цитата Славян @
              Самое время начать задумываться...

              Над чем? Из каких побуждений он это сделал?
              Цитата TheMachine @
              т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                Цитата shm @
                Из каких побуждений он это сделал?
                Ага.
                  Цитата shm @
                  ТС поудалял все свои посты, кроме первого и последнего
                  ЕС на горшок ещё не удалили? :whistle:
                  Цитата shm @
                  Из каких побуждений он это сделал?
                  Из каких побуждений он этот флуд затеял?
                    вот так навсегда теряется уникальный контент
                    Цитата usrjava @
                    Технологии в основе, которых по-сути лежит javascript в расширенном так сказать виде
                      Цитата #SI# @
                      Я ж и спросил, бо старый я уже! Мы зачёт по вычтеху (Алгол-60) сдавали на бумажке
                      Я га девять лет позже учился (может семь, предполагаю, что ты в институте учился сразу после школы), но нам приходилось сво бумажки в ВЦ таскать, чтобы их там прогнали и зачёты мы сдавали уже с распечатками.
                      Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                        Цитата amk @
                        нам приходилось сво бумажки в ВЦ таскать, чтобы их там прогнали
                        Для начала - девочка на (от ЕС ЭВМ ХХХ до ...) получала от тебя шоколадку и заправляла в железу нужную ленту (набор перфокарт етс...) :D .
                          Цитата shm @
                          prografix, вот ты скажи, я злой?

                          Ты не не сильно злой и писал полезную информацию. Тут есть персонажи похлеще.
                          Мой сайт - prografix.github.io
                            Цитата prografix @
                            Ты не не сильно злой и писал полезную информацию.
                            Это специальное двойное 'не', чтобы кто как хотел так и подумал? :D
                              Запоздалая критика мастер-класса виртуозного программирования, любезно продемонстрированного потомственным хакером Серохвостовым Антоном в посте #1

                              Рассмотрим первую функцию Mark (возможно наиболее виртуозную - не знаю, т.к. дальше не смотрел):
                              1) Название функции нельзя отнести к "интуитивно понятным идентификаторам", т.к. слово Mark обычно используется в значении "отмечать", "делать пометки" и т.п. Правильнее было бы назвать ее Replace\Correct\Fix\и т.п. Signs.
                              2) Комментирование - мягко говоря, странное. Нет ни одного комментария по сути выполняемых действий, зато изобилие бестолковых комментов к тривиальным переменным (типа счетчика цикла) и завершающим end, которые имеет смысл писать только для достаточно больших и разветвленных блоков кода, а для малых вполне достаточно правильного форматирования.
                              3) Реализация - просто ужасная, супер-виртуозная со знаком минус. Во-первых, в блоке while возможен выход за пределы диапазона при i = 0 (условие i>=1 должно идти первым, а не последним). Во-вторых, использование функции Pos в подобных задачах анализа строки вообще не эффективно (лучше использовать цикл по символам строки), а уж ее многократные вызовы для поиска одного и того же вхождения (до 4-х раз для '*-') и, особенно, связка i:=Pos('*-', S); Delete(S, Pos('*-', S)+1, 1) вместо Delete(S,i+1,1) - это ва-аще нечто ...

                              Без претензий на "виртуозность" и "мастер-класс" эту функцию можно переписать примерно так:
                              ExpandedWrap disabled
                                {$B-} {гарантируем короткие вычисления условий в if, while и т.п.}
                                {коррекция знаков выражений, содержащих сочетания операторов *-, /-, +- и --}
                                Function ReplaceSigns(S: String): String;
                                var
                                   i,j:integer;
                                begin
                                   i := Length(S);
                                   while i > 1 do {анализ символов строки от конца к началу}
                                   begin
                                     if (S[i] = '-') and (S[i-1] in ['*','/','+','-']) then
                                     begin
                                       Delete(S,i,1); {удаляем знак -}
                                       if S[i-1] = '+' then {заменяем +- на -}
                                         S[i-1] := '-'
                                       else
                                       if S[i-1] = '-' then {заменяем -- на +}
                                         S[i-1] := '+' {после этой строки можно добавить dec(i), но не обязательно}
                                       else      
                                       begin {для *- и /- переносим знак минус в начало выражения}
                                         j:=i-2;
                                         while (j >=1) and (S[j] <> '+') and (S[j] <> '-') do
                                           Dec(j);
                                         Insert('-', S, j+1);
                                       end;
                                     end;
                                     Dec(i);
                                   end;
                                   ReplaceSigns:=S;
                                end;
                              Сообщение отредактировано: leo -
                                Цитата Славян @
                                Цитата prografix @
                                Ты не не сильно злой и писал полезную информацию.
                                Это специальное двойное 'не', чтобы кто как хотел так и подумал? :D

                                Нет, просто я ошибся.
                                А вообще я вижу эту историю так. Пришёл на форум молодой парень полный сил и с желанием сделать этот мир лучше, помочь людям без всякой корысти. Он наивно думал, что является хорошим программистом и может кого-то этому научить. Старательно писал длинные тексты, снабжал их картинками. В результате его раскритиковали в грубой форме и отбили желание делать людям добро. По крайней мере на этом сайте.
                                А могло бы быть по другому. Можно было бы по доброму указать на его ошибки, за чтобы он был благодарен. Можно было подискутировать на философские темы. Кому это интересно получил бы удовольствие. Кому нет - тусовался бы в других темах. Идиллия.
                                Мой сайт - prografix.github.io
                                  Цитата prografix @
                                  А вообще я вижу эту историю так. Пришёл на форум молодой парень полный сил и с желанием сделать этот мир лучше, помочь людям без всякой корысти. Он наивно думал, что является хорошим программистом и может кого-то этому научить. Старательно писал длинные тексты, снабжал их картинками. В результате его раскритиковали в грубой форме и отбили желание делать людям добро. По крайней мере на этом сайте.
                                  А могло бы быть по другому. Можно было бы по доброму указать на его ошибки, за чтобы он был благодарен. Можно было подискутировать на философские темы. Кому это интересно получил бы удовольствие. Кому нет - тусовался бы в других темах.
                                  +100500! :yes-sad:
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script Execution time: 0,1796 ]   [ 17 queries used ]   [ Generated: 17.09.19, 07:27 GMT ]