Quote:
Originally Posted by origmas
Может я не прав - хотелось-бы быть не правым .. НО..
Не в обиду тем кто програмит на Атоите, действительно язык этот характеризуется как "Интерпретатор" команд .. Он скриптовый и в большей степени напоминает Basic. Конечно его создатели вложили в него возможность вставки кодов на Ассемблере и обращение к процессам других приложений это его достоинства, так-же куча операторов для работы с окнами и элементами управления. В конечном итоге он формирует EXE файл, то-есть машинный код. Все вроде-бы как у Языков Высокого уровня, таких как Дельфи, Визул С++ Борланд С++.
Но дело в том что Код его машинный (псевдо-код) - управляет не машиной а средствами Системы Windows ее WinApi функциями, вызовами и т.п. - то есть интерпретирует скриптовые операторы в команды манипулирования системой а та уже в свою очередь управляет процессором.
Языки высокого уровня компилируют настоящий машинный код - лучше которого на этой планете еще не придумали.. Они не мешают системе -
Не отвлекают ее не дергают ее за веревочки - поэтому настоящий продукт програмного обеспечения должен быть написан на них ..
Я тоже начал с Ботом с Автоита, ........оОчень можно что сделать но
попробывав его на практике - решил перевести проект на VC++ - не потому что я не достиг того чего хотел - нет, потому-что это не практично для системы и .... стыдно - писать серъезную вещь на скрипте ..
|
Вот чушь написал. :)
Языки высокого уровня так же работают с API (не только WinAPI, а вобще с очень много какими API). И точно так же для управления окнами, доступом в память чужого процесса "дёргают систему за ниточки". :)
Единственная принцпиальная разница между нормальным языком, код которого компилируется сразу в машинный и скриптового, - это то что основные (базовые) операции компилируются в исполняемый машинный код. А в скриптовых языках либо парсится скрипт и исполняется команда за командой, либо сначала текст программы переводится в промежуточный байт-код и потом этот байт-код исполняется.
В AutoIt как раз используется байт-код. Т.е. экзешник написанный на автоите состоит из 2-х частей:
- самого интерпретатора и исполнителя байт-кода,
- а так же твоей программы превращённой в байт-код.
Если посмотришь бинарник программы, то увидишь, что после манифеста в ней и таблицы используемых dll, идёт:
последоватльность байт: A3 48 4B BE 98 6C 4A A9 99 4C
визуально смотрится в Far как: ?HK??lJcTL
Вот с этого места и до конца файла зашифрованный байт-код программы на AutoIt.
Кстати, байт-код используют такие платформы как Java и .Net. :)
Там твоя программа так же превращается из текста в байт-код. Только вот есть небольшие отличия в современном развитии этих платформ. В момент первого вызова некоего кода (метода обычно, там же всё построенно на классах) в них - он динамически компилируется в машинный код и тут же исполняется. При повторном вызове уже используется данный компилированный код. Ну это до тех пор пока программу не закрыл и она у тебя в памяти.