Конференция "Прочее" » А зачем линуксоидам Delphi?
 
  • Городской Шаман (27.09.08 21:45) [0]
    Статистика по операционным системам посетителей ресурса
    Microsoft Windows   833   100%   98,58
    Linux   9   100%   1,07
    xBSD   3   100%   0,36
    http://top.mail.ru/oses?id=53505&period=0&date=2008-09-27#

    Статистика по браузерам посетителей ресурса
    Opera   347   100%   39,39%
    Netscape, Mozilla, Firefox, и т.д.   266   100%   30,19%
    IE и основанные на IE   248   100%   28,15%
    Основанные на KHTML: Konqueror, Safari, Google Chrome и т.д. 20   100%   2,27%
    http://top.mail.ru/browsers?id=53505&period=0&date=2008-09-27#
  • Zeqfreed © (27.09.08 21:46) [1]
    А флудить и из под линукса хорошо. Тут вообще все хорошо.
  • Anatoly Podgoretsky © (27.09.08 21:53) [2]
    Линуксоидам не только Дельфи, но и все не нужно.
    То что ты видишь - это не линуксоиды, это у них браузеры такие.
  • Игорь Шевченко © (27.09.08 22:01) [3]
    Как бы я иногда из-под линукса сюда хожу. И че ?
  • DVM © (27.09.08 22:17) [4]
    Я вообще из под Symbian каждый день сюда хожу. Под Symbian Delphi вообще без надобности.
    Ну а по большому счету, в Delphi был Kylix и FreePascal тоже для Delphi "родственник", а под Linux компилирует. Хотя только больной на голову (или человек с очень большим количеством свободного времени) будет писать на паскале под Linux, но тем не менее.
  • @!!ex © (27.09.08 23:19) [5]
    > [4] DVM ©   (27.09.08 22:17)

    Почему большим количеством времени? За неделю адекватный код с Delphi под FPC Linux портируется(это если вообще никогда раньше не писал под Линукс)
  • DVM © (27.09.08 23:48) [6]

    > @!!ex ©   (27.09.08 23:19) [5]


    > Почему большим количеством времени?

    Заголовочные файлы многие (многие это мягко сказано) отсутствуют для Pascal. Портировать из Си надо - много времени уйдет.
  • DVM © (27.09.08 23:56) [7]

    > За неделю адекватный код с Delphi под FPC Linux портируется

    Портируются относительно легко относительно несложные программы в основном прикладного характера, да и то если их создавали с учетом возможного портирования в nix. В противном случае портирование сведется к полному переписыванию кода.
  • @!!ex © (28.09.08 00:15) [8]
    > [7] DVM ©   (27.09.08 23:56)

    Никто и не говорит о портировании системных утилит.
    Также понятно, что возможность портирования нужно учесть заранее.
    Практический любой софт легко портируется в любую ОСь за короткий промежуток времени, если разработчики позаботились о том, чтобы платформозависимые вещи были выделены.
  • Anatoly Podgoretsky © (28.09.08 00:48) [9]

    > DVM ©   (27.09.08 23:48) [6]

    Любите Jedi
  • DVM © (28.09.08 00:57) [10]

    > @!!ex ©   (28.09.08 00:15) [8]


    > Никто и не говорит о портировании системных утилит.

    Да и не обязательно системных. Любое более-менее сложное ПО, например, использующее многопоточность (типа сервера какого нибудь многопользовательского) портируется очень со скрипом. Слишком большие различия у Windows и NIX в этом плане.


    > Anatoly Podgoretsky ©   (28.09.08 00:48) [9]


    > Любите Jedi

    А что Jedi переводит заголовочные файлы Linux API на Pascal? Не знал. Да и вряд ли они переведут все. Там стооолько понаписано, мама не горюй.
  • TUser © (28.09.08 09:03) [11]
    А я в компклассе под Линухом обычно. Потому что там есть оболочка неудобная, и студенты не будут из-под моего преподского аккаунта работать, пока я от компьютера убежал.
  • @!!ex © (28.09.08 09:33) [12]
    > Да и не обязательно системных. Любое более-менее сложное
    > ПО, например, использующее многопоточность (типа сервера
    > какого нибудь многопользовательского) портируется очень
    > со скрипом. Слишком большие различия у Windows и NIX в этом
    > плане.

    На мой взгляд(сугубо ИМХО) API у них очень похожи и все портируется без проблем.
    Те же потоки, что в винде 10 строчек кода, что в Линуксе - теже 10 строчек.
  • DVM © (28.09.08 17:39) [13]

    > На мой взгляд(сугубо ИМХО) API у них очень похожи и все
    > портируется без проблем.

    Да где же оно одинаково. Fork() в Windows вообще отсутствует, попробуй портируй в лоб код хоть с одним единственным таким вызовом. В свою очередь, поддержки потоков совсем еще недавно в Линукс попросу не было, т.к. не было в них особой нужды благодаря Fork() и гораздо более развитым чем в Windows средствам межпроцессного взаимодействия. Потом поддержку потоков добавили, но потоки в Линукс организоаны совсем по-другому. Вообще другая идеология. В Windows процесс это контейнер для потоков, в линукс каждый доп поток приводит к созданию специального доп процесса (вроде бы клона, но не такого как в результате вызова Fork). Взаимодействие между потоками и между процессами в Windows и Linux реализуется по-разному, хотя есть и схожие варианты. Короче, портировать можно, но если о возможности порта позаботились заранее, иначе много надо будет переделывать.
  • Johnmen © (28.09.08 17:52) [14]

    > А зачем линуксоидам Delphi?

    А тебе зачем?
  • @!!ex © (28.09.08 18:42) [15]
    > [13] DVM ©   (28.09.08 17:39)

    Мне надоело с вами спорить.
    Вот реально рабочий код, кроссплатформенного приложения. реализует интерфейс класса cThread для двух систем:
    BOOL CTHRead::StartThRead(BOOL IsSuspend){
       #ifdef __WINDOWS__
    DWORD dwTHID;
    if (IsSuspend){
          THRead=CreateThread(NULL,100000,(LPTHREAD_START_ROUTINE)&ObjectNewTHRead,this,CR EATE_SUSPENDED,&dwTHID);          
    }
    else{
        THRead=CreateThread(NULL,100000,(LPTHREAD_START_ROUTINE)&ObjectNewTHRead,this,0, &dwTHID);          
    }
    ;    
       #endif //ifdef __WINDOWS__
       #ifdef __UNIX__
           if (pthread_create(&THRead, NULL, (void*(*)(void*))&ObjectNewTHRead, this)){
            DebugCode(CDEBUG::printerrno(););
            THRead=0;
        }
    ;
       #endif //#ifdef __UNIX__
       ASSERT(THRead);
       return(0!=THRead);
    };

    CTHRead::CTHRead(BOOL IsSuspend){
       IsTerminated = FALSE;
       #ifdef __WINDOWS__
    if (IsSuspend){
        FStateTHRead=stSuspend;
    }
    else{
        FStateTHRead=stResume;
    }
    ;
    if (!StartThRead(IsSuspend)) FStateTHRead=stNONE;
       #endif //ifdef __WINDOWS__
       #ifdef __UNIX__
    if (IsSuspend){
        FStateTHRead=stCreateSuspend;
    }
    else{
        FStateTHRead=stResume;
        if (!StartThRead()) FStateTHRead=stNONE;
    }
    ;
       #endif //#ifdef __UNIX__
    };
    CTHRead::~CTHRead(void){
    Terminate();
    Wait();
    DebugPrint("CTHRead::~CTHRead");
    }
    ;

    void CTHRead::Wait(void){
       #ifdef __WINDOWS__
        if (stNONE!=StateTHRead()){
     WaitForSingleObject(THRead,INFINITE);
     //Тут можно уже на синхронизировать, т.к. поток уже умер
     CloseHandle(THRead);    
    }
    ;
       #endif //ifdef __WINDOWS__
       #ifdef __UNIX__
           if (stNONE!=StateTHRead()) pthread_join(THRead,NULL);
       #endif //#ifdef __UNIX__
       FStateTHRead = stNONE;
    };    

    void CTHRead::Suspend(void){
    Lock.Enter();
    if (stResume==FStateTHRead){
     #ifdef __WINDOWS__
      SuspendThread(THRead);
     #endif //ifdef __WINDOWS__
     #ifdef __UNIX__
      pthread_kill(THRead,SIGSTOP);
     #endif //#ifdef __UNIX__
     FStateTHRead = stSuspend;
    }
    ;
    Lock.Leave();
    };

    void CTHRead::Resume(void){
    Lock.Enter();
       if (stSuspend==FStateTHRead){
     #ifdef __WINDOWS__
         ResumeThread(THRead);
     #endif //ifdef __WINDOWS__
     #ifdef __UNIX__  
         pthread_kill(THRead,SIGCONT);
     #endif //#ifdef __UNIX__  
     FStateTHRead = stResume;
    #ifdef __UNIX__
        }
    else if (stCreateSuspend==FStateTHRead){
            FStateTHRead=stResume;
            if (!StartThRead()) FStateTHRead=stNONE;  
    #endif //#ifdef __UNIX__  
     }
    ;
    Lock.Leave();
    };

  • DVM © (28.09.08 18:57) [16]

    > @!!ex ©   (28.09.08 18:42) [15]
    >
    > > [13] DVM ©   (28.09.08 17:39)
    >
    > Мне надоело с вами спорить.

    Я вообще то не спорю, просто беседую. Обрывок кода, приведенноый выше, изначально создавался кроссплатформенным.
    Никто же не говорит, что это невозможно, возможно, но не всегда так тривиально. Как Fork() будет в Windows выглядеть?
  • @!!ex © (28.09.08 19:03) [17]
    > Как Fork() будет в Windows выглядеть?

    Я никогда не заикался о том, что портировать с Линукса на Винду легко.
    речь шла как раз о портировании с Винду под Линукс. Проблем с Fork в этом случае не может возникнуть по определению. :)
 
Конференция "Прочее" » А зачем линуксоидам Delphi?
Есть новые Нет новых   [134442   +15][b:0][p:0.002]