Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: API - что за зверь?  (Прочитано 22516 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Domra
Участник

ru
Offline Offline
Пол: Женский

« : 07-10-2009 07:23 » 

Подскажите, пожалуйста - хочу делать приложения на API, с чего мне начать? В программировании полный ноль, если не считать Basic в школе и TurboPascal в институте. Ну HTML немного.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 07-10-2009 07:33 » 

а API чего хочешь использовать ? Улыбаюсь Если честно, для начала об каком либо АПИ можно не думать, берёшь среду для нужного языка, ставишь , пишешь программы и читаешь книги.
Записан

Domra
Участник

ru
Offline Offline
Пол: Женский

« Ответ #2 : 07-10-2009 08:15 » 

А с какого языка лучше начать? API бывает для разных языков?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 07-10-2009 08:32 » 

Если речь идёт о WinAPI - то это набор функций, доступных при написании программ на различных языках.

Понятие API в целом более широкое - это всего лишь "Application programming interface". То есть, интерфейс к чему угодно, позволяющий использовать это что угодно при написании своих приложений.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 07-10-2009 08:35 » 

API - это программный интерфейс ОС (или какой либо другой системы). То есть, к языку вообще отношения не имеет. Из любого нормального языка всегда можно вызвать функции АПИ или использовать описанные там классы.

(Вад уже успел написать Улыбаюсь )

А какой язык выбрать - не знаю ) Ну, раз ты упомянул паскаль, попробуй Дельфи. Лично мне больше всего нравится C++
Записан

Domra
Участник

ru
Offline Offline
Пол: Женский

« Ответ #5 : 07-10-2009 09:07 » 

То есть грубо говоря - я ставлю оболочку любого языка, в нем пишу функции WinAPI, которые потом могу искпользовать в Windows, независимо от оболочки и языка, на котором они написаны?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 07-10-2009 09:12 » 

WinAPI - это уже имеющиеся функции API, которые нужно использовать при написании программ для Windows (непосредственно или через обёртки). Их пишет только Microsoft Улыбаюсь Документация на них есть в MSDN.
Создавать программы для Windows - в том числе, с применением WinAPI, - можно только в средах (оболочках), которые это поддерживают. Но чтобы это понятно объяснить, уже нужно углубляться в детали теории компиляции программ Улыбаюсь
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 07-10-2009 09:17 » 

WinAPI разработан до тебя и функции там уже написаны товарищами из Microsoft - ты их используешь в любой оболочке, если пишешь программы под Windows.
А для своей программы ты можешь разработать свой API, документировать его и давать возможность (например) используя этот API писать плагины для твоей программы. При этом действительно API не должен быть привязан к языку и оболочке.

Вад успел вперед Улыбаюсь
Записан
Domra
Участник

ru
Offline Offline
Пол: Женский

« Ответ #8 : 07-10-2009 09:32 » 

Среды (оболочки), которые поддерживают API - это языки программирования, такие, как Delphi, C++?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 07-10-2009 09:46 » 

Domra, обычно это называется SDK (software development kit). Сюда входят язык программирования (точнее, компилятор и всё остальное для этого языка), отладчик, набор библиотек для данного языка, и т.д.

Скажем, Delphi - это, в сущности, язык Object Pascal (компилятор, отладчик) + обширные библиотеки (VCL, кажется) + интегрированная среда разработки для всего этого. Для Windows и языка C++ похожими вещами являются Borland C++ Builder и MS Visual Studio. Есть и другие варианты (скажем, MinGW + Eclipse).
Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 07-10-2009 10:02 » 

Вад, небольшая несущественная поправка: язык для Delphi - это Delphi Language, основаный на Object Pascal (по-моему так стало с версии Delphi 5).
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #11 : 07-10-2009 16:27 » 

Kivals, тогда уж Delphi Pascal, как иногда называют object pascal имея в виду некоторые расширения VCL. сам по себе Delphi - это вообще не язык, это среда.

Domra, сама постановка вопроса "хочу писать на API" - неправильна. помимо API для любой существующей ОСи, существуют АПИ для сканеров, смарт-карт, видеокамер и др. все эти АПИ юзаются в тех или иных языках. как правило, АПИ представляет собой набор библиотек с описанием хидеров своих функций и правилами (если повезёт - примерами) их использования. Всё в совокупности это называется SDK - Software Develompent Kit.

на том же самом Турбо-Паскакале можно взять Win32 SDK, в котором будут описаны функции из системных библиотек винды, написать свой юнит, который импортирует эти функции, и в основной программе на паскале ты сможешь вывести на экран сообщение в классическом диалоговом message-box-е винды. преимущество использования продвинутых языков (object pascal, c++, etc.) равно как и навороченных сред для них (Codegear Delphi, Visual Studio C++) заключается в том, что:

1) для множества API они уже содержат свои обёртки, и тебе не надо писать их самому (на дельфи спокойно можно написать драйвер, а на VS C++ - приложение для КПК)
2) навороченные среды содержат множество готовых классов для решения типовых задач, что значительно ускоряет разработку.

в наше время сам по себе язык мало кому интересен. сейчас более/менее серьёзный проект невозможно написать одному и на каком-то "чистом" языке, это займёт слишком много времени чисто физически. поэтому следующий уровень абстракции после языка - это фрэймворк, совокупность технологий, позволяющих решать те или иные задачи в конкретной предметной области. поэтому выбирая язык программирования, следует думать не столько о самом языке, сколько о предоставляемых им фрэймворках.

по вышеизложенным причинам, очень не советую начинать с дельфи. при всей его кажущейся лёгкости, стать классным специалистом, действительно разбирающемся в программных технологиях, начинающему дельфисту крайне тяжело. а вот долбодуем, вопрошающим на форумах "каким компонентом объявить переменную?" - очень просто. Delphi скрадывает от разработчика 99,99% реально происходящего в его собственном проекте. чтобы написать пустую виндовую форму в С++ надо накарябать примерно страницу кода, создающего приложение, создающего форму, регистрирующую его, функцию, в цикле обрабатывающую сообщения от пользователя, и т.д. в Delphi же достаточно выбрать в меню New Application, и нажать F9. и на экране будет готовое приложение, а весь необходимый для неё код (по сути - тот же самый, что и в С++) среда сгенерирует сама.

подобная автогенерация кода приводит к тому, что большинство изучающих Delphi не понимают, что реально делает их программа на уровне именно того самого виндового API. поэтому я и саказал, что "лёгкость" дельфи именно кажущаяся. он идеален для прикладного программирования, но только при том условии, что человек идеально знает мат.часть. процент идиотов среди начинающих дельфистов, как ни прискорбно это константировать, намного выше, чем у сишников.

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

в то время как в других языках существует очень много библиотек практически под любые нужды. например, вы не найдёте для Дельфи готовой реализации работы с банковскими картами. для Java - их десятки. для Дельфи нет реализаций биометрических стандартов ICAO. для Java - они есть. и этот список можно продолжать до бесконечности. пока вы не особо уклоняетесь от прикладного и БД программирования (а это, надо сказать, просто гиганская сфера IT), на Дельфи вам будет писатся вполне себе бодро и весело. и быстро. как только вы полезете в сторону кроссплатформенности, поддержки неких новомодных технологий, типа кластерных вычислений или создания банковских приложений для смарт-карт, вы сразу обнаружите, что дельфи там как бы и ни при чём. на нём, конечно, можно писать и это, но зачем, когда есть миллионы строк готового кода?

подытоживая, начинающему программеру я бы советовал смотреть в сторону C# и Java (которые, в общем-то, во многом похожи).
Записан

Domra
Участник

ru
Offline Offline
Пол: Женский

« Ответ #12 : 08-10-2009 05:00 » 

Спасибо большое за ответы и за советы. Попробую смотреть в сторону Java и С#...
Записан
zubr
Гость
« Ответ #13 : 08-10-2009 06:20 » 

С#.Net - в плане легкости создания приложений почти аналогичен Borland (Delphi, C++ Builder) - это к вопросу "стать классным специалистом, действительно разбирающимся в программных технологиях". Изучение Java тоже врядли заставляет глубоко познавать программные технологии конкретной ОС. Стать классным специалистом, действительно разбирающимся в программных технологиях, скорее зависит от уровня, сложности, количества задач, выполняемых в процессе обучения, работы, а не от среды разработки и языка программирования, имхо.
Просто Java и С# на сегодняшний день наиболее "модные" и наверно перспективные направления. Я бы посоветовал сначала изучить C, C++, а в качестве среды разработки можно выбрать VS.NET. Затем определиться какое направление программирования ближе по душе (Web-программирование, прикладное, системное программирование) и или в каком направлении больше задач (к примеру, на фрилансе на сегодняшний день гораздо больше задач по Web-программированию, чем по прикладному или системному). В зависимости от выбора продолжить изучение:
Web-программирование - html, Java, PHP, ASP.Net
Прикладное - C#.Net
Благо знание C, C++ позволит легко перейти на вышеуказанные языки программирования.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 08-10-2009 06:58 » 

Благо знание C, C++ позволит легко перейти на вышеуказанные языки программирования.
Ну, как сказать. Для меня переход от C++ к C# и, тем более, к Java, был одновременно и лёгким, и полным боли и мучений Улыбаюсь Лёгким - потому что приятно наконец-то забыть про ручную работу с динамическими объектами. А полным боли - потому что, как ни крути, адекватной замены стандартной библиотеке и STL в частности - нет и в помине. В результате чего, любая работа с коллекциями и вводом-выводом - это ад Улыбаюсь Особенно в Java - там вообще почти полный неадекват по части работы с коллекциями и простыми целочисленными типами. Постоянное явное приведение типов, генерирующее исключение, заставляет меня нервничать Улыбаюсь Исключения, которые фреймворки генерят на каждый чих - тоже источник беспокойства.
« Последнее редактирование: 08-10-2009 07:00 от Вад » Записан
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 08-10-2009 08:35 » 

x77
Offtopic:
именно Delphi programming language - официальное название

Что касается
Цитата
стать классным специалистом, действительно разбирающемся в программных технологиях, начинающему дельфисту крайне тяжело.
то в принципе согласен, но не обязательно: достаточно просто интересоваться исходным кодом компонент VCL: там используется чистый WinAPI.
(Только упаси Боже понимать мои слова как предложение новичку садиться на Дельфи - я просто знаю его намного лучше других здесь упомянутых языков, и потому не могу провести сравнительный анализ)
Записан
zubr
Гость
« Ответ #16 : 08-10-2009 09:08 » 

Вад, я подразумевал легко с точки зрения синтаксиса языка. А классы и фреймворки естественно придется изучать.
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #17 : 08-10-2009 11:32 » 

Что касается
Цитата
стать классным специалистом, действительно разбирающемся в программных технологиях, начинающему дельфисту крайне тяжело.
то в принципе согласен, но не обязательно: достаточно просто интересоваться исходным кодом компонент VCL: там используется чистый WinAPI.
(Только упаси Боже понимать мои слова как предложение новичку садиться на Дельфи - я просто знаю его намного лучше других здесь упомянутых языков, и потому не могу провести сравнительный анализ)

скажем так: проблема не в Delphi, а в современных методиках обучения Delphi. уродам, пишущим шняги, типа "Delphi для чайников за 21 день" надо отрывать не только руки, но и яйца, чтобы, упаси бог, не вздумали размножаться.
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #18 : 08-10-2009 12:21 » 

x77, согласен. Книга Рея Конопки "Создание оригинальных компонент в среде Delphi" была (а возможно и есть) уникальна в своей идее показать внутренние механизмы Дельфи. Хотя писалась еще для Delphi 1 под Win 3.X, но до выпуска Delphi 5 ничего подобного больше не было (потом просто перестал следить).
Но к сожалению книги "Как стать чайником в (подставьте любую тему сюда) за 21 день" всегда оставляют желать лучшего Улыбаюсь
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #19 : 08-10-2009 12:26 » 

Kivals, ну, хорошие вещи есть и сейчас: Пачеко, Кэнту и др. только вот в ВУЗах учат не по ним, видимо, кабинетные дельфисты из минобраза, пишущие учебные программы, считают себя намного умнее.

но это отдельная тема Улыбаюсь
Записан

Domra
Участник

ru
Offline Offline
Пол: Женский

« Ответ #20 : 09-10-2009 07:48 » 

Скажите, пожалуйста, вот Java-игры, которые к мобильным телефонам, написаны на Java?
Записан
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #21 : 09-10-2009 21:23 » 

да.
Записан

Кузьмин
Новенький

md
Offline Offline

« Ответ #22 : 11-10-2009 10:07 » 

Я так понимаю что главная задача это выучить API.
Но для практики нужна среда программирования, которая желательно должна быть простой.
Могу порекомендовать PureBasic

Вот пример создания окна с сообщением с помощью API функции
Код:
MessageBox_(0,"Текст","Заголовок",0)

ЗЫ
Тоже самое, но работающее в  Windows х86, Windows х64, Linux, MacOS X и AmigaOS можно сделать с помощью кроссплатформенной функции среды
Код:
MessageRequester("Заголовок", "Текст")
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 11-10-2009 11:00 » 

Могу порекомендовать PureBasic
Снова этот PureBasic Улыбаюсь Человек, рекламировавший его в прошлый раз, так и не смог внятно объяснить, в чём заключается простота Улыбаюсь Как-то сразу много сложностей повылезло из обсуждения примеров кода.
Записан
Кузьмин
Новенький

md
Offline Offline

« Ответ #24 : 11-10-2009 11:19 » 

Могу порекомендовать PureBasic
Снова этот PureBasic Улыбаюсь Человек, рекламировавший его в прошлый раз, так и не смог внятно объяснить, в чём заключается простота Улыбаюсь Как-то сразу много сложностей повылезло из обсуждения примеров кода.
А можно ссылочку на обсуждение?

PS.
PureBasic вполне адекватный язык, уж незнаю чем он так вам не понравился.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #25 : 11-10-2009 11:34 » new

гы...

Могу порекомендовать C++ ,

Вот пример создания окна с сообщением с помощью API функции Код:

::MessageBox(0,"Текст","Заголовок",0);

(почти (с))

Отлично
Записан

Кузьмин
Новенький

md
Offline Offline

« Ответ #26 : 11-10-2009 12:17 » 

А где подключение заголовочных файлов, фигурные скобки и прочие "прелести"?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 11-10-2009 14:45 » 

А можно ссылочку на обсуждение?
PS.
PureBasic вполне адекватный язык, уж незнаю чем он так вам не понравился.

Ссылочкой, боюсь, не могу поделиться. Скорее всего, тема была удалена администраторами из-за явной рекламы: помнится, ссылки на сайт purebasic-а появились тогда сразу в двух темах, и их оставлял свежезарегистрированный пользователь. В общем, реклама была налицо, но на вопросы он успел немного поотвечать.
Впрочем, возможно, тема и выжила. Однако поиском я её найти не могу.

Я не говорю, что язык невменяемый. Просто по опыту общения с предыдущим агитатором, как только речь выходит за пределы примера с hello world, всё оказывается не так просто, и степень вменяемости решений оказывается ничуть не выше, чем, скажем, в C++ или Delphi Улыбаюсь А простоты оказывается не больше.

По большому счёту, вообще странно говорить о вменяемости того или иного языка, если речь заходит об использовании WinAPI Улыбаюсь По сравнению с ковырянием в нюансах WinAPI, задача научиться ставить нужные скобки или использовать #include <header> или import package - вообще плёвое дело. Вот CommonLisp - вообще простейший язык, практически элементарнейший синтаксис. Тоже можно ведь WinAPI вызывать. Почему-то его никто не советует Улыбаюсь
« Последнее редактирование: 11-10-2009 14:46 от Вад » Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #28 : 15-10-2009 12:51 » 

Поскольку
Цитата
Basic в школе и TurboPascal в институте.
может быть посмотрев эту статью решитесь углубить свои институтские знания?
https://club.shelek.ru/viewart.php?id=295

MessageBox(0,"Хеллоу уорд!","My cool programm",0); - конечно очень крутая программа "чистейшего" API, но все несколько прозаичнее, Улыбаюсь
например - http://www.firststeps.ru/mfc/winapi/winapi1.html хотя тут уже "C".
« Последнее редактирование: 15-10-2009 14:31 от Oldy » Записан

С уважением, Oldy.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines