Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разница в программировании


Автор: Romikgy 26.5.2006, 12:20
Может ктото пояснит мне велика ли разница в программировании под разными осями? Вынь и лина?
Есть ли аналоги в лине типа WinAPI? 

Автор: ZeusAtVingrad 26.5.2006, 14:01
в ПРОГРАММИРОВАНИИ - никакого.
в КОДИРОВАНИИ - абсолютно другая платформа.
Сокеты только одинаковые, наследованные от Unix. 

Автор: Replicator 26.5.2006, 15:51
Смотря на чем программировать (а если различать понятия, как в посте выше, то кодировать).

API-функции разные, это раз. Никакого mfc под Линуксом нет, это два. Но и без первого и без второго при написании прикладного ПО можно обойтись. Так что можно считать, программиривание под обе платформы ничем не отличается. 

Автор: ZeusAtVingrad 26.5.2006, 16:04
Я под программированием им ею ввиду проектирование ПО, алгоритмизацию.
А остальное - кодирование.
ИМХО. 

Автор: Romikgy 26.5.2006, 16:10
Цитата(Replicator @  26.5.2006,  14:51 Найти цитируемый пост)
Смотря на чем программировать

на С++
Цитата(Replicator @  26.5.2006,  14:51 Найти цитируемый пост)
API-функции разные, это раз.

Где о них почитать / посмотреть? 

Автор: Kuber 26.5.2006, 16:26
Цитата

API-функции разные, это раз


Никогда не слышал о таких в линуксе, можно ссылку.

Цитата

 Так что можно считать, программиривание под обе платформы ничем не отличается.


Не думаю, различий может нет в стандартных алгоритмах, библиотеках, OpenGl, и т.п...которые есть и под Win32 и *nix.

(Марк Митчел, Джеффри Оулдем) Программирование для Линукс. Профессиональный подход
  

Автор: likehood 26.5.2006, 17:11
Цитата(Kuber @  26.5.2006,  17:26 Найти цитируемый пост)
API-функции разные, это раз
    

Никогда не слышал о таких в линуксе, можно ссылку.


Там они называются системными вызовами. 

Автор: MAKCim 26.5.2006, 18:59
Цитата

Там они называются системными вызовами.  

причем их гораздо меньше чем API функций
и они стандартизованы POSIX-ом 
Цитата

API-функции разные, это раз. Никакого mfc под Линуксом нет, это два. Но и без первого и без второго при написании прикладного ПО

API в Linux нет, есть системные вызовы
явно или неявно, но они необходимы для работы почти всех программ, прикладных в том числе 

Автор: Replicator 26.5.2006, 19:41
Вообще-то, системные вызовы в Линуксе - это и есть его API.

API - Application Programming Interface = Программный Интерфейс Приложения, он же Интерфейс Прикладного Программирования. Из определения:
Цитата
API - интерфейс приклодного программирования. Предназначен для использования прикладными программами системных ресурсов ОС и реализуемых ею функций. API описывает совокупность функций и процедур, принадлежащих ядру и надстройкам ОС.



Цитата(MAKCim @  26.5.2006,  18:59 Найти цитируемый пост)
явно или неявно, но они необходимы для работы почти всех программ, прикладных в том числе

Неявно нас не касается, так как программисту об этом даже знать не обязательно. Он использует себе спокойно привычные функции и ни о чем не думает. А что там внутри - проблемы разработчиков библиотек. 

Автор: NextAlex 26.5.2006, 19:50
Romikgy, ты сказал бы что именно ты собираешься писать - получился бы более предметный разговор ...
А вообще разница не такая уж и большая, кроме того для некоторых вещей вполне можно использовать кроссплатформенные библиотеки. 

Автор: MAKCim 26.5.2006, 19:56
Цитата

API - Application Programming Interface = Программный Интерфейс Приложения, он же Интерфейс Прикладного Программирования. Из определения:
API - интерфейс приклодного программирования. Предназначен для использования прикладными программами системных ресурсов ОС и реализуемых ею функций. API описывает совокупность функций и процедур, принадлежащих ядру и надстройкам ОС.

Для этого существуют библиотеки функций, которые являяются обертками над системными вызовами. Их вот и можно назвать API 

Автор: Replicator 27.5.2006, 17:02
Ну и ты хочешь сказать, что для Линукса нету этих самых библиотек функций? А если они есть и их можно называть API, то к чему тогда вот это:
Цитата(MAKCim @  26.5.2006,  18:59 Найти цитируемый пост)
API в Linux нет
? 

Автор: MAKCim 27.5.2006, 17:10
Цитата

Ну и ты хочешь сказать, что для Линукса нету этих самых библиотек функций? А если они есть и их можно называть API, то к чему тогда вот это:

 smile 
ну да
просто с API сразу Windows ассоциируется потому и не подумал в начале
да и Linux API, имхо, не очень распространенное словосочетание  smile  

Автор: DeadSoul 27.5.2006, 18:16
Цитата(Replicator @  26.5.2006,  15:51 Найти цитируемый пост)
Никакого mfc под Линуксом нет, это два

Это не является отличием. Это скорее подпункт первого пункта.

Я сейчас пишу под винду и не использую MFC 

Автор: Romikgy 29.5.2006, 09:08
Цитата(NextAlex @  26.5.2006,  18:50 Найти цитируемый пост)
Romikgy, ты сказал бы что именно ты собираешься писать - получился бы более предметный разговор ...А вообще разница не такая уж и большая, кроме того для некоторых вещей вполне можно использовать кроссплатформенные библиотеки. 

Да все собираюсь писать, но пока я ОЧЕНЬ мало знаю линукс, и только начал собирать инфу по программированию в лине,
попытался сделать простой проект типа привет мир smile да вот и там даже косяки, под разными дистрибутивами ведет ся по разному smile компилится и сразу выдает ошибку в каком то файле с расширением *.m4 и не хочет далее идти , что это за файл? Да и вообще файлов в проекте немеренно для чего все они? под виндой такой проект состоял до 10 файлов, а здесь .... уууу, да и как с гуи обстоят дела?
Вроде слышал есть чтото типа дельфи под линукс, а вот есть ли чтото типа такого но на С? 

Автор: ZeusAtVingrad 29.5.2006, 09:21
Странно.
У меня "проект" hello world состоит из одного файла: hello.cpp 

Автор: Romikgy 29.5.2006, 09:27
А у меня нет smile 

Автор: MAKCim 29.5.2006, 09:31
Цитата

А у меня нет

пишешь
Код

cat << end > hello.c && gcc hello.c -o hello && chmod u+x hello && ./hello

далее
Код

> #include <stdio.h>
>
> int main()
> {
> printf("Hello, World!");
> }
> end

 smile   

Автор: Romikgy 29.5.2006, 10:39
Цитата(MAKCim @  29.5.2006,  08:31 Найти цитируемый пост)
cat << end > hello.c && gcc hello.c -o hello && chmod u+x hello && ./hello

Что это? 

Автор: MAKCim 29.5.2006, 17:42
Цитата

Что это?  

команды Shell

вот к этому
Цитата

Да все собираюсь писать, но пока я ОЧЕНЬ мало знаю линукс, и только начал собирать инфу по программированию в лине,
попытался сделать простой проект типа привет мир smile да вот и там даже косяки, под разными дистрибутивами ведет ся по разному 

в любом дистре такое скомпилируется и запустится 

Автор: ZeusAtVingrad 29.5.2006, 19:27
Издевается он над тобой smile

1. Запускаешь любой текстовый редактор
2. Набираешь примерно такой код:
Код

 #include <stdio.h>
int
main()
{
 printf("Hello, World!");
}


3. Сохраняешь под каким-то именем (пусть hello.c)
4. Компилируешь: gcc hello.c
Компилятор создаст исполняемый файл a.out, который можно запустить.

С остальным потом разберёшься. 

Автор: MAKCim 29.5.2006, 21:03
Цитата

Издевается он над тобой

чуть-чуть  smile 
(по доброму) 

Автор: bsa 29.5.2006, 21:20
Romikgy, вопросы про Linux - в другую ветку.

m4 - это такой язык макросов. Используется automake & autoconf для создания configure и Makefile'ов в проекте. Ты небось первым делом в KDevelop'е что-то решил написать? Ну и по делом тебе. smile Но с другой стороны, очень грамотная система, необходимая для больших проектов.

Delphi под Linux называется Kylix. Он же C++ Builder для Linux (зависит от того, каким исполняемым выйлом ты его запускаешь). Очень кривая прога. Мне ничего не удалось им откомпилировать, даже пустую (дефолтную) форму.

А программирование на уровне STL, iostream и printf/scanf ничем не отличается. Отличия начинаются при работе с графикой - нет в Linux win32 API (wine не в счет). 

Автор: MAKCim 29.5.2006, 21:50
Цитата

А программирование на уровне STL, iostream и printf/scanf ничем не отличается.

согласен 

Автор: Romikgy 30.5.2006, 09:05
Цитата(ZeusAtVingrad @  29.5.2006,  18:27 Найти цитируемый пост)
Компилятор создаст исполняемый файл a.out, который можно запустить.

Спасибо попробую smile
Цитата(MAKCim @  29.5.2006,  20:03 Найти цитируемый пост)
чуть-чуть

Жук... рррр...
Цитата(bsa @  29.5.2006,  20:20 Найти цитируемый пост)
 Ну и по делом тебе

почему?
Цитата(bsa @  29.5.2006,  20:20 Найти цитируемый пост)
нет в Linux win32 API

и как тогда общатся с системой? 

Автор: MAKCim 30.5.2006, 09:17
Цитата

почему?

KDevelop довольно неплохая система, но, как уже сказал bsa, для больших проектов
для начала вполне хватит gcc/g++   +   shell
Цитата

и как тогда общатся с системой?  

есть системные вызовы, напрямую ты скорее сможешь ими воспользоваться на ассемблере
а так есть стандартная библиотека и стандартные функции (вообще то их можно назвать API для *ix) которые по сути являются обнртками над сис. вызовами
read, write, open, close, creat, pipe, mmap ...  

Автор: Romikgy 30.5.2006, 11:14
Цитата(MAKCim @  30.5.2006,  08:17 Найти цитируемый пост)
являются обнртками над сис. вызовами

где о них можно почитать? 

Автор: MAKCim 30.5.2006, 12:42
Цитата

где о них можно почитать?  

Linux Programmer's Manual
Код

man 2 read
man 2 write
man 2 pipe
...

естественно набирать в командной строке 

Автор: Romikgy 30.5.2006, 14:53
MAKCim, сиба  smile  

Автор: Disabled 1.6.2006, 19:45
привет.
если писать прикладные программы, то, наверное, придётся воспользоваться вызовами X Windows.
а, разве, это не "Linux API" :}} ? 

Автор: MAKCim 1.6.2006, 20:07
Цитата

если писать прикладные программы, то, наверное, придётся воспользоваться вызовами X Windows.

вызовы X Windows - это вызовы X Windows  smile 
на нижнем уровне все равно все идет через стандартные функции
Цитата

а, разве, это не "Linux API" :}} ? 

Графическая система - не часть ядра Linux, это вообще просто пользовательская программа, потому эти вызовы не могут быть Linux API 

Автор: Disabled 1.6.2006, 20:45
насколько я осведомлён (никогда под X win не писал :-} ), X-win общаются непосредственно с железом.
а что, касается терминов, то, не думаю, что X-win нельзя назвать, например, 
GAPI (Graphical API), если говорить о графическом сервере, даже, если он не входит в ядро.
кроме того, X windows не "пользовательская программа", если уж точно придерживаться терминов, 
а программная среда.  

Автор: MAKCim 1.6.2006, 21:34
Цитата

X windows не "пользовательская программа"

X представляет собой обычный процесс, работающий в пользовательском режиме
Цитата

X-win общаются непосредственно с железом.

а для чего нужна тогда операционная система (применительно к *ix ядро)?  

Автор: Disabled 1.6.2006, 21:44
вы хотите сказать, что Х использует сисстемные вызовы *nix?
честнго говоря, я не представляю как через полторы сотни входов можно реализовать все
ф-ии (в смысле "операции") Х. хотя, могу и ошибаться 

Автор: MAKCim 1.6.2006, 22:33
Цитата

вы хотите сказать, что Х использует сисстемные вызовы *nix?

А как иначе? Действовать в обход ядра X не может хотя бы потому, что, повторяюсь, это - всего лишь процесс и его контролирует ядро
X предоставляет библиотеку Xlib для доступа к своим функциям, но это только обертка. Реализация библиотеки все равно идет через стандартные функции. 
Различные оконные среды (GNOME, KDE,...) представляют собой еще один уровень абстракции. По сути это - клиенты системы X. Они посылают X команды и т. д 

Автор: regis 2.6.2006, 10:59
Цитата(Disabled @ 1.6.2006,  21:44)
вы хотите сказать, что Х использует сисстемные вызовы *nix?
честнго говоря, я не представляю как через полторы сотни входов можно реализовать все
ф-ии (в смысле "операции") Х. хотя, могу и ошибаться

Естественно, X использует системные вызовы U*X! А как иначе происходит чтение/запись служебных файлов, или обмен информацией с X клиентами (через обычные сокеты)?
Другое дело -- как происходит реализация работы с видео и устройствами ввода (как я понял, это имелось в виду?). Хотя и тут возможны вариации. Насколько я понимаю, только для работы с видео (доступ к видеопамяти, и особенно к реализуемым карточкой функциям аппаратного ускорения) требует каких-то манипуляций непосредственно с железом. С клавиатурой и мышью X-сервер работает через обычные системные вызовы (open/close, read/write, ioctl...). Во всяком случае, XFree под Linux так делает.

 

Автор: Disabled 2.6.2006, 11:13
так, разве, нельзя назвать X win API, если, как вы сказали, Xlib
только обёртка (повторюсь, никогда не писал под Х), хоть и разработанная сторонним
производителем. ведь, собственно, API и представляет собой "обёртку". или я не прав? 

Автор: MAKCim 2.6.2006, 13:56
Цитата

так, разве, нельзя назвать X win API, если, как вы сказали, Xlib
только обёртка

пусть функции Xlib будут API системы X, но не системы в целом
Если проводить какую-то аналогию с Win то 
read, write, close, pipe, mmap, fork, lseek, ...  (и другие из unistd.h) будут API *ix 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)