Текущий архив: 2008.11.30;
Скачать: CL | DM;
ВнизА зачем линуксоидам Delphi? Найти похожие ветки
← →
Городской Шаман (2008-09-27 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 © (2008-09-27 21:46) [1]А флудить и из под линукса хорошо. Тут вообще все хорошо.
← →
Anatoly Podgoretsky © (2008-09-27 21:53) [2]Линуксоидам не только Дельфи, но и все не нужно.
То что ты видишь - это не линуксоиды, это у них браузеры такие.
← →
Игорь Шевченко © (2008-09-27 22:01) [3]Как бы я иногда из-под линукса сюда хожу. И че ?
← →
DVM © (2008-09-27 22:17) [4]Я вообще из под Symbian каждый день сюда хожу. Под Symbian Delphi вообще без надобности.
Ну а по большому счету, в Delphi был Kylix и FreePascal тоже для Delphi "родственник", а под Linux компилирует. Хотя только больной на голову (или человек с очень большим количеством свободного времени) будет писать на паскале под Linux, но тем не менее.
← →
@!!ex © (2008-09-27 23:19) [5]> [4] DVM © (27.09.08 22:17)
Почему большим количеством времени? За неделю адекватный код с Delphi под FPC Linux портируется(это если вообще никогда раньше не писал под Линукс)
← →
DVM © (2008-09-27 23:48) [6]
> @!!ex © (27.09.08 23:19) [5]
> Почему большим количеством времени?
Заголовочные файлы многие (многие это мягко сказано) отсутствуют для Pascal. Портировать из Си надо - много времени уйдет.
← →
DVM © (2008-09-27 23:56) [7]
> За неделю адекватный код с Delphi под FPC Linux портируется
Портируются относительно легко относительно несложные программы в основном прикладного характера, да и то если их создавали с учетом возможного портирования в nix. В противном случае портирование сведется к полному переписыванию кода.
← →
@!!ex © (2008-09-28 00:15) [8]> [7] DVM © (27.09.08 23:56)
Никто и не говорит о портировании системных утилит.
Также понятно, что возможность портирования нужно учесть заранее.
Практический любой софт легко портируется в любую ОСь за короткий промежуток времени, если разработчики позаботились о том, чтобы платформозависимые вещи были выделены.
← →
Anatoly Podgoretsky © (2008-09-28 00:48) [9]
> DVM © (27.09.08 23:48) [6]
Любите Jedi
← →
DVM © (2008-09-28 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 © (2008-09-28 09:03) [11]А я в компклассе под Линухом обычно. Потому что там есть оболочка неудобная, и студенты не будут из-под моего преподского аккаунта работать, пока я от компьютера убежал.
← →
@!!ex © (2008-09-28 09:33) [12]> Да и не обязательно системных. Любое более-менее сложное
> ПО, например, использующее многопоточность (типа сервера
> какого нибудь многопользовательского) портируется очень
> со скрипом. Слишком большие различия у Windows и NIX в этом
> плане.
На мой взгляд(сугубо ИМХО) API у них очень похожи и все портируется без проблем.
Те же потоки, что в винде 10 строчек кода, что в Линуксе - теже 10 строчек.
← →
DVM © (2008-09-28 17:39) [13]
> На мой взгляд(сугубо ИМХО) API у них очень похожи и все
> портируется без проблем.
Да где же оно одинаково. Fork() в Windows вообще отсутствует, попробуй портируй в лоб код хоть с одним единственным таким вызовом. В свою очередь, поддержки потоков совсем еще недавно в Линукс попросу не было, т.к. не было в них особой нужды благодаря Fork() и гораздо более развитым чем в Windows средствам межпроцессного взаимодействия. Потом поддержку потоков добавили, но потоки в Линукс организоаны совсем по-другому. Вообще другая идеология. В Windows процесс это контейнер для потоков, в линукс каждый доп поток приводит к созданию специального доп процесса (вроде бы клона, но не такого как в результате вызова Fork). Взаимодействие между потоками и между процессами в Windows и Linux реализуется по-разному, хотя есть и схожие варианты. Короче, портировать можно, но если о возможности порта позаботились заранее, иначе много надо будет переделывать.
← →
Johnmen © (2008-09-28 17:52) [14]
> А зачем линуксоидам Delphi?
А тебе зачем?
← →
@!!ex © (2008-09-28 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 © (2008-09-28 18:57) [16]
> @!!ex © (28.09.08 18:42) [15]
>
> > [13] DVM © (28.09.08 17:39)
>
> Мне надоело с вами спорить.
Я вообще то не спорю, просто беседую. Обрывок кода, приведенноый выше, изначально создавался кроссплатформенным.
Никто же не говорит, что это невозможно, возможно, но не всегда так тривиально. Как Fork() будет в Windows выглядеть?
← →
@!!ex © (2008-09-28 19:03) [17]> Как Fork() будет в Windows выглядеть?
Я никогда не заикался о том, что портировать с Линукса на Винду легко.
речь шла как раз о портировании с Винду под Линукс. Проблем с Fork в этом случае не может возникнуть по определению. :)
Страницы: 1 вся ветка
Текущий архив: 2008.11.30;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.005 c