Другие языки программирования и технологии
Как я понял, в ЯП есть функции, используя которые программист выполняет задачи. А что, если какой-то функции нет?
Вот все программы, которые у нас на ПК: игры, граф. редакторы, звук. редакторы, браузеры, ОС - все это на "стандартных" функциях ЯП написано? Получается, программист только изучивает все, а дальше пишет то, что изучил. Но бывают же, наверное, случаи, когда чего-то не хватает. Что делают в таком случае?
Реализует свои функции, основываясь на базовых функциях ОС. В Windows это WinAPI, например.
Вношу ясность.
Компьютер - это вычислительная машина. Она умеет быстро и точно считать. Больше она ничего не умеет, все остальные ее кажущиеся умения - это только интерпретация ее базового умения быстро и точно считать.
В рамках этой модели архитектура ПК предоставляет более чем достаточное количество команд: ничего нового изобретать не нужно. А если твой компьютер не умеет варить кофе - ну так и не используй его для варки кофе, для этого существуют другие устройства.
Компьютер - это вычислительная машина. Она умеет быстро и точно считать. Больше она ничего не умеет, все остальные ее кажущиеся умения - это только интерпретация ее базового умения быстро и точно считать.
В рамках этой модели архитектура ПК предоставляет более чем достаточное количество команд: ничего нового изобретать не нужно. А если твой компьютер не умеет варить кофе - ну так и не используй его для варки кофе, для этого существуют другие устройства.
функции тоже кто-то писал. Если какой-то функции не хватает - программист ее пишет и пользуется.
Александр Тягай
А как ее писать? На нулях и единицах?
Тогда программист пишет нужную функцию самостоятельно. Нормальная программа как раз построена из функций и их вызовов, большинство которых написано самим программистом.
Язык программирования обычно предоставляет программисту только самые простые и употребительные функции, чтобы не приходилось каждый раз изобретать велосипед ;)
Язык программирования обычно предоставляет программисту только самые простые и употребительные функции, чтобы не приходилось каждый раз изобретать велосипед ;)
Функции ЯП написаны для удобства, чтобы не тратить время на написание своих. Их не обязательно использовать. Можно свои написать, или использовать кем то другим написанные.
Для работы с конкретной задачей есть функции, например рисование 3д объектов.
Есть функции для этого рисоватьТреугольники, установитьТекстуру, ещё пару.
И из них нужно собирать свою конструкцию чтобы можно было рисовать 3д модельки быстро
типа РисоватьАвтомобиль (МакЛарен П1, обычная_текстура, чёрный_цвет, металлик )
Например код игры выглядит вот так
ПРОГА "ИГРА"
НАЧАЛО
СоздатьОкно ()
Инициализировать3DAPI()
ИнициализироватьАудио ()
ИнициализироватьФизику ()
ИнициализироватьОстальное ()
ЗагрузитьРесурсы ()
БЕСКОНЕЧНЫЙ_ЦИКЛ
НАЧАЛО
ПроверкаНажатияКнопкиИМыши ()
ОбновитьФизику ()
ОбновитьИгровуюЛогику () //незнаю как правильно назвать, ну тут обновляются данные об игре в связи с изменениями - нажатие кнопки, обновлением физики
ОбновитьИскуственныйИнтеллект () // так же после действий игрока и физики
РисоватьИгру ()
КОНЕЦ
ВыгрузитьРесурсыИзПамяти ()
КОНЕЦ
Всё это собственные функции.
Внутри каждой функции есть вызовы других собственных функций.
например функция
СоздатьОкно ()
НАЧАЛО
ПолучитьНастройкиОкнаИзXMLФайла ("game_window.xml") //сами пишем
RegisterClassEx() //функция windows перед созданием окна
CreateWindowEx(её параметры) //вызвали функцию Windows чтобы создать окно
КОНЕЦ
так примерно.
если нужны координаты мышки, то нужно использовать функции виндовс либо библиотек.
если нужно чтобы зомби умирал от выстрела то пишем свою функцию. должна быть внутри ОбновитьИскуственныйИнтеллект ()
Для работы с конкретной задачей есть функции, например рисование 3д объектов.
Есть функции для этого рисоватьТреугольники, установитьТекстуру, ещё пару.
И из них нужно собирать свою конструкцию чтобы можно было рисовать 3д модельки быстро
типа РисоватьАвтомобиль (МакЛарен П1, обычная_текстура, чёрный_цвет, металлик )
Например код игры выглядит вот так
ПРОГА "ИГРА"
НАЧАЛО
СоздатьОкно ()
Инициализировать3DAPI()
ИнициализироватьАудио ()
ИнициализироватьФизику ()
ИнициализироватьОстальное ()
ЗагрузитьРесурсы ()
БЕСКОНЕЧНЫЙ_ЦИКЛ
НАЧАЛО
ПроверкаНажатияКнопкиИМыши ()
ОбновитьФизику ()
ОбновитьИгровуюЛогику () //незнаю как правильно назвать, ну тут обновляются данные об игре в связи с изменениями - нажатие кнопки, обновлением физики
ОбновитьИскуственныйИнтеллект () // так же после действий игрока и физики
РисоватьИгру ()
КОНЕЦ
ВыгрузитьРесурсыИзПамяти ()
КОНЕЦ
Всё это собственные функции.
Внутри каждой функции есть вызовы других собственных функций.
например функция
СоздатьОкно ()
НАЧАЛО
ПолучитьНастройкиОкнаИзXMLФайла ("game_window.xml") //сами пишем
RegisterClassEx() //функция windows перед созданием окна
CreateWindowEx(её параметры) //вызвали функцию Windows чтобы создать окно
КОНЕЦ
так примерно.
если нужны координаты мышки, то нужно использовать функции виндовс либо библиотек.
если нужно чтобы зомби умирал от выстрела то пишем свою функцию. должна быть внутри ОбновитьИскуственныйИнтеллект ()
Например тебе надо вывести Hello World,но при условии что без ОС. На си написать printf не получится, так как эта штука вызывает функции ОС
надо писать свой printf.Видеокарта выводит значение памяти по 0xB8000,значит делаем примерно так
void print_string(const char* string)
{
char* video_ram = (char*)(0xB8000);
for(...;video_ram;...)
{
video_ram[...] = string[...];
}
}
____________________________________________________
Вот пример без ОС, а когда есть ОС можно вызывать ее функции. Ее функции это прерывания на pc,поэтому перед всем этим неплохо бы почитать страуструпа.
____________________________________________________
Стандартные возможности языка тоже ведь кто то написал)
В ассемблере вообще ничего нет из 'коробки'
никаких print,fopen,...
надо писать свой printf.Видеокарта выводит значение памяти по 0xB8000,значит делаем примерно так
void print_string(const char* string)
{
char* video_ram = (char*)(0xB8000);
for(...;video_ram;...)
{
video_ram[...] = string[...];
}
}
____________________________________________________
Вот пример без ОС, а когда есть ОС можно вызывать ее функции. Ее функции это прерывания на pc,поэтому перед всем этим неплохо бы почитать страуструпа.
____________________________________________________
Стандартные возможности языка тоже ведь кто то написал)
В ассемблере вообще ничего нет из 'коробки'
никаких print,fopen,...
Если нужно выполнить действие "внутри" программы, например, провести сложный расчёт - то пишется своя функция.
Или ищется библиотека.
Если нужна связь с "внешним миром", например, управление устройствами, то гуглится библиотека и подключается.
Если библиотеки нет, то придётся писать библиотеку, используя системные функции. Тут уже соображать надо.
А если и у системы нет таких функций, то тогда надо либо закатать губу и умерить хотелку, либо засесть за серьёзную учёбу программизму и начать писать свою систему - через годков дцать можно свою альтернативу линуксу запилить.
Но может оказаться, что у железа нет таких функций.
Или ищется библиотека.
Если нужна связь с "внешним миром", например, управление устройствами, то гуглится библиотека и подключается.
Если библиотеки нет, то придётся писать библиотеку, используя системные функции. Тут уже соображать надо.
А если и у системы нет таких функций, то тогда надо либо закатать губу и умерить хотелку, либо засесть за серьёзную учёбу программизму и начать писать свою систему - через годков дцать можно свою альтернативу линуксу запилить.
Но может оказаться, что у железа нет таких функций.
Александр Тягай
"Тут уже соображать надо" - а при обычном программировании что, не соображают?
Похожие вопросы
- Программисты, объясните, пожалуйста, как компьютер выполняет задачу случайного выбора числа из ряда чисел?
- Какой ЯП решает больше всего проблем программиста?
- Почему для программиста который решает прикладные задачи нужна физика?
- Как называется функция php, которая запоминает авторизацию на сайте?
- Всегда ли можно прочитать и понять чужой код если код читает оптытный программист?
- Люди помогите, как удалить вирус, который бликирует диспетчер задач, без переустановки системы
- Скажите мне истинные программисты, стоит ли изучать Assembler, если ты знаешь другие ЯП?
- PASCAL. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции?
- Программисты подойдет ли Scheme как первый ЯП и SICP как учебник для начинающего?
- На работе мне дают задачи по технологиям, которые не были указаны в вакансии? Это нормально в работе программистом?