На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 19 20 [21] 22 23 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    Profi, boost.org
      Цитата Астарот @
      Цитата Hryak @
      Какие жизненные строчки тут есть

      А целиком можно? :)

      Зачем целиком? Достаточно и этого, чтобы охарактеризовать то, что Делфи с программистам делает. Не со всеми, конечно, некоторые находят в себе силы сопротивляться - собственно, этому сопротивлению и посвящен остаток той недосказанной цитаты.
        Цитата archimed7592 @
        Profi, boost.org

        А-а, ну понятно! Опять template! Ладно, сейчас что-нибудь придумаем.
          Цитата Profi @
          Ладно, сейчас что-нибудь придумаем.
          да так, чтобы это было универсально (можно подсунуть любой итератор) и чтобы связывалось всё это на этапе компиляции... сомневаюсь <_<

          Добавлено
          прелесть в том, что в эту ф-цию можно засовывать любой объект отвечающий требованиям, определённым для InputItertator, даже, если по сути, итератором он не является ;)
            Цитата Hryak @
            Зачем целиком? Достаточно и этого, чтобы охарактеризовать то, что Делфи с программистам делает. Не со всеми, конечно, некоторые находят в себе силы сопротивляться - собственно, этому сопротивлению и посвящен остаток той недосказанной цитаты.

            Ой, ты знаешь, что мне напомнил? Тут HoIm как-то писал тему о быдлокодерах, так суть сводилась к тому, что быдлокодер помешан на том, что бы соблюсти все "так будет правильно", и вообще сделать все по науке, за счет чего сроки горят, и все такое, а нормальный специалист помешан на том, что бы решить задачу, за счет чего при нарушении всех "так будет правильно" в кратчайшие сроки получает готовый и стабильный продукт, который первым и продает :) Вот сдается мне, что недосказанная цитата чем-то сильно перекликается ;)
              Вот что вышло:
              ExpandedWrap disabled
                program Project1;
                 
                {$APPTYPE CONSOLE}
                 
                uses
                  SysUtils,
                  Classes,
                  Variants;
                 
                Type
                  TAr=array of variant;
                  PAr=^TAr;
                  TParam=procedure(a:Tar);
                 
                Type
                  Ts_TestSignal=class
                    fList:TList;
                    pList:TList;
                    procedure connect(aParam:TParam; arg:PAr);
                    procedure Run;
                  end;
                 
                { Ts_TestSignal }
                 
                procedure Ts_TestSignal.connect(aParam: TParam; arg:PAr);
                begin
                    fList.Add(@aParam);
                    pList.Add(arg);
                end;
                 
                Procedure Handler1(a:tar);
                begin
                  WriteLn('Handler 1 called');
                end;
                 
                Procedure Handler2(a:Tar);
                begin
                  WriteLn('Handler 2 called. Passed string: ',string(a[0]));
                end;
                 
                Procedure Handler3(a:tar);
                begin
                  WriteLn('Handler 3 called. Sum of arguments: ',integer(a[0])+integer(a[1]));
                end;
                 
                 
                procedure Ts_TestSignal.Run;
                var
                  i: Integer;
                  H:TParam;
                  a:PAr;
                begin
                  for I := 0 to fList.Count - 1 do begin
                    @h:=fList.Items[i];
                    a:=pList.Items[i];
                    h(a^);
                  end;
                end;
                 
                var
                  s_testSignal:Ts_testsignal;
                  h:TParam;
                  ar:Par;
                begin
                  s_testsignal.fList:=TList.Create;
                  s_Testsignal.pList:=TList.Create;
                  s_testsignal.connect(Handler1,@ar);
                  new(ar);
                  SetLength(ar^,1);
                  ar^[0]:='Test string 1';
                  s_testsignal.connect(Handler2,ar);
                  new(ar);
                  SetLength(ar^,1);
                  ar^[0]:='Test string 2';
                  s_testsignal.connect(Handler2,ar);
                  new(ar);
                  SetLength(ar^,2);
                  ar^[0]:=10;
                  ar^[1]:=20;
                  s_testsignal.connect(Handler3,ar);
                  new(ar);
                  SetLength(ar^,2);
                  ar^[0]:=20;
                  ar^[1]:=30;
                  s_testsignal.connect(Handler3,ar);
                  s_testsignal.Run;
                  s_testsignal.fList.Free;
                  s_testsignal.pList.Free;
                  readln;
                end.

              Результат:
              ExpandedWrap disabled
                Handler 1 called
                Handler 2 called. Passed string: Test string 1
                Handler 2 called. Passed string: Test string 2
                Handler 3 called. Sum of arguments: 30
                Handler 3 called. Sum of arguments: 50


              Добавлено
              Перевести можно? Можно!
              На С++ проще? Проще!
              Мой прогноз работает!
                :offtop:
                Цитата Flex Ferrum @
                См. мой пост №279. Вполне себе законченная программа на плюсах. Переведи на дельфи. :)

                Вы все еще юзаете костыли? Тогда мы идем к вам!
                ExpandedWrap disabled
                  (defun handler-1 ()
                    (format t "Handler 1 called~%"))
                   
                  (defun handler-2 (a-string)
                    (format t "Handler 2 called. Passed string: ~a~%" a-string))
                   
                  (defun handler-3 (a b)
                    (format t "Handler 3 called. Sum of arguments: ~a~%" (+ a b)))
                   
                  (defmacro append-signal-to-chain (chain &rest handler)
                    `(setf ,chain (append ,chain (list ,@handler))))
                   
                  (defun emit-signal-chain (chain)
                    (dolist (handler chain)
                      (funcall handler)))
                   
                  (let ((test-signal nil))
                    (append-signal-to-chain test-signal
                                            #'handler-1
                                            #'(lambda () (handler-2 "Test string 1"))
                                            #'(lambda () (handler-2 "Test string 2"))
                                            #'(lambda () (handler-3 10 20))
                                            #'(lambda () (handler-3 10 30)))
                    (emit-signal-chain test-signal))

                ExpandedWrap disabled
                  linuxfan@tme ~ $ clisp signal.lisp
                  Handler 1 called
                  Handler 2 called. Passed string: Test string 1
                  Handler 2 called. Passed string: Test string 2
                  Handler 3 called. Sum of arguments: 30
                  Handler 3 called. Sum of arguments: 40

                P.S.: не пытайтесь сделать из императивного языка функциональный
                P.P.S.: append-signal-to-chain в принципе не особо нужна -- так, для понта :D
                P.P.P.S.: в дельфях, по крайней мере, вложенные функции обеспечивают подобие заглушек, а в плюсах с этим совсем туго.

                Добавлено
                Слабо поднять холивар C++ vs Lisp? Я тут пару месяцев назад «On Lisp» вкурил :)
                  А вот простейший пример на Delphi:
                  ExpandedWrap disabled
                    program Project1;
                     
                    {$APPTYPE CONSOLE}
                     
                    var
                      i:integer;
                      v:boolean=false;
                    const
                      pr:array [0..9] of string=('Морковь','Картофель','Помидоры',
                                                  'Огурцы','Капуста','Яблоки','Груши',
                                                  'Сливы','Персики','Абрикосы');
                     
                    begin
                      while not v do begin
                        WriteLn('Выберите продукт:');
                        for I := 0 to 9 do
                          Writeln(i,'. ',pr[i]);
                        try
                          ReadLn(i);
                          v:=true;
                          case i of
                            0..4:WriteLn('Вы выбрали овощи!');
                            5..9:WriteLn('Вы выбрали фрукты!');
                            else begin
                              WriteLn('Введенное число не входит в список!');
                              v:=false;
                            end;
                          end;
                        except
                          WriteLn('Вы ввели не число!');
                        end;
                      end;
                      ReadLn;
                    end.

                  Кто сделает на C++ с case'ом и без break'ов?
                    Цитата Астарот @
                    а нормальный специалист помешан на том, что бы решить задачу, за счет чего при нарушении всех "так будет правильно" в кратчайшие сроки получает готовый и стабильный продукт

                    Маленькая поправка - готовый, стабильный и неподдерживаемый продукт. Гнать таких спецов надо в шею, ИМХО...
                      Цитата Red XIII @
                      Цитата Астарот @
                      а нормальный специалист помешан на том, что бы решить задачу, за счет чего при нарушении всех "так будет правильно" в кратчайшие сроки получает готовый и стабильный продукт

                      Маленькая поправка - готовый, стабильный и неподдерживаемый продукт. Гнать таких спецов надо в шею, ИМХО...

                      Вот здесь согласен, но с поправкой на то, что для каждого языка свои "так будет правильно"!
                        Цитата Red XIII @
                        Маленькая поправка - готовый, стабильный и неподдерживаемый продукт. Гнать таких спецов надо в шею, ИМХО...

                        Я бы тебе поверил, если бы сам не работал в поддержке :) Поверь на слово старому Чингачгуку - можно написать прекрасно поддерживаемый продукт положив на массу рекомендованных правил.
                          Цитата Астарот @
                          Я бы тебе поверил, если бы сам не работал в поддержке :) Поверь на слово старому Чингачгуку - можно написать прекрасно поддерживаемый продукт положив на массу рекомендованных правил.

                          Но вынужден согласиться и с этом.
                            Цитата Red XIII @
                            Маленькая поправка - готовый, стабильный и неподдерживаемый продукт.

                            Не всегда.
                              Цитата Profi @
                              Кто сделает на C++ с case'ом и без break'ов?

                              ExpandedWrap disabled
                                cout<<'Вы выбрали "<<(i<4?"овощи!":"фрукты!")

                              остальное переписывать надо или и так понятно?
                                Цитата trainer @
                                ExpandedWrap disabled
                                  cout<<'Вы выбрали "<<(i<4?"овощи!":"фрукты!")

                                остальное переписывать надо или и так понятно?

                                И где же тут case? Плюс ко всему условие выполниться и при i<0 и i>9!
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 19 20 [21] 22 23 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0596 ]   [ 15 queries used ]   [ Generated: 14.08.25, 22:59 GMT ]