На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (32) « Первая ... 14 15 [16] 17 18 ...  31 32  ( Перейти к последнему сообщению )  
> Язык для обучения программированию
    Цитата D_KEY @
    цикл паука

    Что это?
      Цитата OpenGL @
      Цитата D_KEY @
      цикл паука

      Что это?

      Это расширение цикла Дейкстры :lol:

      Добавлено
      Во, на вики есть.
      Дейкстра:
      ExpandedWrap disabled
         do
           P1 → S1,
             …
           Pn → Sn
         od

      Паук:
      ExpandedWrap disabled
         do
           P1→S1,
             …
           Pn→Sn
         out
           Q1→T1,
             …
           Qn→Tn
         else
           E
         od
      Сообщение отредактировано: D_KEY -
        Друзья что тут спорить. История выбрала победителя.
          Цитата D_KEY @
          Не надо ничего выворачивать. Ты еще про какой-нибудь цикл паука вспомни. Это не нужно.
          В крайнем случае напиши while True и break по условию. Будет тебе repeat...until

          Мне-то нахрен это все? Ты это расскажи ученику, если он спросит: "В структурном программировании есть термин "цикл с постусловием" (я уже читал). Почему в Паскале можно, в Си, Перле, Lua можно (я проверял), а в Питоне - нужно велосипедить, чтобы этого добится?. Нахрена мне такой язык для обучения?" И тут ты начнешь ему лить на уши то, что льешь о простоте и звездатости питона уже которую страницу. Но к обучению это не имеет ни малейшего отношения :)

          Цитата OpenGL @
          Почему именно в питоне они ужас-ужас?

          Потому, что они кроме программирования - насилуют рассово-правильным форматированием. Ты прикинь, если бы мне в С++ запретили Java-style расстановку фигурных скобок?! Я бы точно ссал кипятком. Ну а в Питоне ... там мне пофик на местных мазохистов ;)

          Добавлено
          Цитата OpenGL @
          Ну и что? Можно подумать, что цикл с постусловием необходимая сущность в программировании.

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

          Добавлено
          Цитата OpenGL @
          Вон в расте тоже его не сделали, например.

          Но там есть loop, который эту идиому эмулирует не "выворачивая мозги", т.е. без предварительного while(true).

          Добавлено
          Цитата D_KEY @
          Вот ты как программирование изучал?

          Первое мое знакомство с программированием было на базе "Электроника МК-54". Парень показал, что в этой "коробочке" можно записать ряд команд, и они сами могут выполняться последовательно! И всякие условия в момент вычислений учитывать. Для меня это была - БОМБА!!! 1986г. Армия. Наряд на КПП :lol: Потом, спустя некоторое время, поступил в институт. Там "плакал, но ел кактус - гребаный PL/I". Преподавание было - дерьмо! Учили не программированию, а синтаксису этого уродства. А у меня уже появился доступ на пару-тройку часиков в день к EC-1841, а в книжном магазине книжка по Turbo Pascal 4.0. Только в комп я нашел 5.0. Но правдами и неправдами я его самостоятельно асилил. И уже спустя 2-3 года, когда в институте начали читать курс "системного программирования" на Паскале - я вовсю, с завязанными глазами, расчехлял БИОС по строкам, в видеопамять писал, в порты клавы ... Но, надо сказать, к тому времени я и TASM самостоятельно изучил. Так, что право иметь свое мнение - имею! :lol: Если бы мне не лили это дерьмо PL/1, а прочитали бы темы по Структурному программированию - я бы сэкономил на самообучении точно бы год-два. Но, надо бы конечно и уточнить, после второго курса, после сдачи курсовой - я устроился к своему преподу на работу в качестве техника-программиста. Когда-то это - Институт Технической Кибернетики АН БССР. И тамошние мои коллеги-программеры мне помогали, чем могли. Сами то они писали на Си и Модула-2, но советы по Паскалю получались ценными.

          Киляяя, заступай на дежурство!!! Я все, на сення наверное пост сдал :lol:
            Цитата JoeUser @
            Ты это расскажи ученику, если он спросит: "В структурном программировании есть термин "цикл с постусловием" (я уже читал). Почему в Паскале можно, в Си, Перле, Lua можно (я проверял), а в Питоне - нужно велосипедить, чтобы этого добится?. Нахрена мне такой язык для обучения?"

            "Это мелочи, и скоро ты сам убедишься, почему" :D

            Цитата JoeUser @
            Потому, что они кроме программирования - насилуют рассово-правильным форматированием.

            Никто тебя им не насилует. Хочешь - ставишь отступы в 2 пробела, хочешь - в 4. А то, что ты не можешь в пределах одного блока написать с разными отступами наподобие этого
            ExpandedWrap disabled
              if (something) {
                 foo();
                         bar();
                    joe_user_is_wrong();
              }

            минусом не является.

            Цитата JoeUser @
            Для целей обучения он должен быть, раз упоминается в разделах Структурного программирования.

            Из второй части этой твоей фразы первая не следует.

            Цитата JoeUser @
            Но там есть loop, который эту идиому эмулирует не "выворачивая мозги", т.е. без предварительного while(true).

            И что? loop точно так же эмулирует и while(...), и цикл по коллекции. Так что нужно или признать, что они лишние, или признать, что цикл с постусловием как отдельная сущность не обязателен.
              Т.е. Питон такое захавает?

              ExpandedWrap disabled
                if (something) {
                  foo(
                    "11111111111111",
                    "22222222222222"
                  ) || Die();
                  bar();
                  joe_user_is_alpha();
                }


              Добавлено
              Цитата OpenGL @
              минусом не является

              потому как Питон сам минусом является :lol:
                Цитата esperanto @
                Друзья что тут спорить. История выбрала победителя.

                Чувак, я уже 20 лет наблюдаю как история выбирает победителей, которые канут в лету. :lool:
                Сообщение отредактировано: Gonarh -
                  Цитата OpenGL @
                  И что? loop точно так же эмулирует и while(...), и цикл по коллекции. Так что нужно или признать, что они лишние, или признать, что цикл с постусловием как отдельная сущность не обязателен.

                  Сначала появилось Структурное программирование, ну а потом уже Раст. СП - это фундамент множества языков, а Раст - это всего лишь попытка "перевернуть мир к лучшему".
                    Цитата OpenGL @
                    Никто тебя им не насилует. Хочешь - ставишь отступы в 2 пробела, хочешь - в 4.

                    А в один? А в три? А вообще выполнение двух функций в одной строке типа
                    Цитата
                    foo();bar();
                      Цитата Gonarh @
                      Чувак, я уже 20 лет наблюдаю как история выбирает победителей, которые канут в лету.

                      Люто, бешено, плюсую! Они просто не знают ценность Перловского оператора "1;" :lool:
                        Цитата JoeUser @
                        ExpandedWrap disabled
                            foo(
                              "11111111111111",
                              "22222222222222"
                            ) || Die();

                        Ахах, перловка

                        :D

                        Добавлено
                        Цитата JoeUser @
                        Они просто не знают ценность Перловского оператора "1;" :lool:

                        Классы описывал? :lol:
                        Сообщение отредактировано: Gonarh -
                          Цитата JoeUser @
                          Т.е. Питон такое захавает?

                          И не подавится

                          Добавлено
                          Цитата Gonarh @
                          А в один? А в три? А вообще выполнение двух функций в одной строке типа

                          И в 1, и в 3.
                          Чтобы в одной строке несколько функций вызвать, напиши их через запятую

                          Добавлено
                          Насколько я понимаю, 4 пробела это просто рекомендуемый стандарт, с которым, например, написана и стандартная библиотека. Основное же условие "внутри блока инструкции должны быть на одном уровне". Если это не так, то поправьте :)
                            Цитата Gonarh @
                            *.pm'ы писал?

                            Ага) Что-то типа этого:
                            Скрытый текст
                            ExpandedWrap disabled
                              package ConsultantPlusDocuments;
                               
                               require Exporter;
                               @ISA = qw(Exporter);
                               @EXPORT = qw(New Load LoadLines);
                               
                               sub New {
                                my $type = shift;
                                my $self = {};
                                bless $self;
                                $self->{'FileName'} = shift;
                                $self->{'FieldsText'} = ();
                                $self->{'FieldsDesc'} = ();
                                $self->{'FieldsNumb'} = ();
                                bless $self;
                               }
                               
                               sub Load {
                                my $type = shift;
                                my $self = {};
                                bless $self;
                                $self->{'FileName'} = shift;
                                $self->{'FieldsText'} = ();
                                $self->{'FieldsDesc'} = ();
                                $self->{'FieldsNumb'} = ();
                                $self->ReadData();
                                bless $self;
                               }
                               
                               sub LoadLines() {
                                my $type = shift;
                                my $self = {};
                                bless $self;
                                $self->{'FileName'} = "";
                                $self->{'FieldsText'} = ();
                                $self->{'FieldsDesc'} = ();
                                $self->{'FieldsNumb'} = ();
                                $self->LoadData(shift);
                                bless $self;
                               }
                               
                               sub Field() {
                                my ($self,$num,$ret) = @_;
                                $ret = $self->{'FieldsText'}{$num};
                                1 while (chomp($ret));
                                return $ret
                               }
                               
                               sub SetField() {
                                my ($self,$num,$val) = @_;
                                ${$self->{'FieldsText'}}{$num} = ${$val};
                               }
                               
                               sub SetFileDir() {
                                my ($self,$val,$w) = @_;
                                $w = $self->{'FileName'};
                                $w =~ s/(.*\/)(.+)/$2/;
                                $w =~ s/(.*\\)(.+)/$2/;
                                $self->{'FileName'} = $val.$w;
                               }
                               
                               sub SetFileName() {
                                my ($self,$val,$w) = @_;
                                $w =  $self->{'FileName'};
                                $w =~ s/(.*\/)(.+)/$1/;
                                $w =~ s/(.*\\)(.+)/$1/;
                                $self->{'FileName'} = $w.$val;
                               }
                               
                               sub ReadData() {
                                my ($self,$buf) = (shift);
                                if (open(FD, $self->{'FileName'})) {
                                 $buf = join("",<FD>);
                                 close(FD);
                                 $buf =~ s/(\n\$\$\n\n)(.*)/$2/s;
                                 while ($buf =~ /\$(\d+)(\s+)(.+?)(\n)(.*?)\n(?=\$|\n\n-{60,}\n$|$)/s) {
                                  ${$self->{'FieldsText'}}{$1} = $5;
                                  ${$self->{'FieldsDesc'}}{$1} = $3;
                                  push @{$self->{'FieldsNumb'}}, ($1);
                                  $buf = $';
                                 }
                                }
                               }
                               
                               sub LoadData() {
                                my ($self,$buf) = @_;
                                $buf = join("",@{$buf});
                                $buf =~ s/(\n\$\$\n\n)(.*)/$2/s;
                                while ($buf =~ /\$(\d+)(\s+)(.+?)(\n)(.*?)\n(?=\$|\n\n-{60,}\n$|$)/s) {
                                 ${$self->{'FieldsText'}}{$1} = $5;
                                 ${$self->{'FieldsDesc'}}{$1} = $3;
                                 push @{$self->{'FieldsNumb'}}, ($1);
                                 $buf = $';
                                }
                               }
                               
                               sub WriteData() {
                                my ($self,$buf,$i,$w) = @_;
                                if (open(FD, ">".$self->{'FileName'})) {
                                 $buf = "\n\$\$\n\n";
                                 foreach $i (@{$self->{'FieldsNumb'}}) {
                                  ${$self->{'FieldsText'}}{$i} =~ s/(.*?)(\s*\Z)/$1/s;
                                  $buf .= "\$".$i." ".${$self->{'FieldsDesc'}}{$i}."\n".${$self->{'FieldsText'}}{$i}."\n\n";
                                  $j++;
                                 }
                                 $buf .= "\n".("-" x 68)."\n";
                                 seek(FD,0,0);
                                 truncate(FD,0);
                                 print FD $buf;
                                 close(FD);
                                }
                               }
                               
                               sub Build($@) {
                                my ($self,$tpl,$i) = @_;
                                foreach $i (@{$tpl}) {
                                 ${$self->{'FieldsText'}}{${$i}[0]} = "";
                                 ${$self->{'FieldsDesc'}}{${$i}[0]} = ${$i}[1];
                                 push @{$self->{'FieldsNumb'}},(${$i}[0]);
                                }
                               }
                               
                               sub DelRefs($%) {
                                my ($L,%Del) = @_;
                                my @W = split("",${$L});
                                my $Len = scalar(@W);
                                my ($i,$first,$in,$no) = (0,1,0,0);
                                for($i=0;$i<$Len;$i++) {
                                 if (($W[$i] eq " ") || ($W[$i] eq " ") || ($W[$i] eq " ")) {
                                  if ($first) {
                                   if ($W[$i] eq " ") {
                                    $in = 1;
                                    $W[$i] = " " if ($Del{$no} eq "1");
                                   }
                                   elsif ($W[$i] eq " ") {
                                    $W[$i] = " " if ($Del{$no} eq "1");
                                    $no++;
                                   }
                                   else {
                                    $W[$i] = " " if ($Del{$no} eq "1");
                                    $no++;
                                    $first = 0;
                                    redo;
                                   }
                                   $first = 0;
                                   } else {
                                   if ($W[$i] eq " ") {
                                    return 0 if ($in);
                                    $W[$i] = " " if ($Del{$no} eq "1");
                                    $in = 1;
                                   }
                                   elsif ($W[$i] eq " ") {
                                    return 0 unless ($in);
                                    $W[$i] = " " if ($Del{$no} eq "1");
                                    $in = 0;
                                    $no++;
                                   }
                                   else {
                                    if ($in) {
                                     $W[$i] = " " if ($Del{$no} eq "1");
                                     $in = 0;
                                     $no++;
                                     redo;
                                     } else {
                                     $W[$i] = " " if ($Del{$no} eq "1");
                                     $in = 1;
                                    }
                                   }
                                  }
                                 }
                                }
                                ${$L} = join("",@W);
                                return 1;
                               }
                               
                              1;
                              Цитата OpenGL @
                              И в 1, и в 3.
                              Чтобы в одной строке несколько функций вызвать, напиши их через запятую

                              https://ideone.com/vVjFYP не выходит каменный цветок
                                Цитата OpenGL @
                                И не подавится

                                :lool:
                                Вот так:

                                ExpandedWrap disabled
                                  foo(
                                      "11111111111111",
                                      "22222222222222"
                                    ) or die()

                                Он выводит
                                ExpandedWrap disabled
                                  We are died :(
                                  JoeUser is wrong :(

                                Но вот так:

                                ExpandedWrap disabled
                                  foo
                                    (
                                      "11111111111111",
                                      "22222222222222"
                                    ) or die()

                                Только:

                                ExpandedWrap disabled
                                  JoeUser is wrong :(

                                И спрашивается хто из нас Вронг? ;)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (32) « Первая ... 14 15 [16] 17 18 ...  31 32


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0696 ]   [ 15 queries used ]   [ Generated: 18.06.25, 12:54 GMT ]