Існує три дуже різні типи "виконуваних" файлів:
"Двійкові" файли
"Бінарний" - неправильна назва, але найчастіше використовується. Зазвичай вони мають .exe
розширення для Windows, і зазвичай це не розширення для Unix / Linux (але іноді ви можете бачити a .bin
). Ці файли містять код, безпосередньо виконуваний процесором, безпосередньо використовуватимуть сервіси операційної системи (наприклад, для читання / запису файлів або відображення речей користувачеві), і вони повинні бути у певному форматі, щоб операційна система могла завантажувати та виконувати їх. Тому вони різні для кожної операційної системи. Зазвичай вони записуються на С або С ++. На практиці вам не потрібно знати ...
"Інтерпретовані" файли
Виконані файли - це просто "просто текстові" файли (їх можна створити / редагувати за допомогою простого текстового редактора). Щоб їх виконати, вони повинні бути завантажені та інтерпретовані програмою, що називається "інтерпретатор" (цей перекладач потрапляє до категорії "двійкові" вище). Ви можете мати конкретні версії інтерпретатора для кожної операційної системи, тому ви можете запускати ці файли в будь-якій операційній системі, для якої є перекладач. Типові мови: Python ( .py
), Perl ( .pl
), JavaScript ( .js
).
Файли "байт-код"
Ці файли потрапляють десь між двома іншими. Замість створення програми для конкретного типу машини або операційної системи створюється "двійкова" програма для деякої гіпотетичної "віртуальної машини". Для його виконання ви використовуєте іншу "двійкову" програму, яка імітує / емулює цю віртуальну машину у вашій операційній системі. Код, написаний таким чином, може працювати в будь-якій операційній системі, для якої існує реалізація віртуальної машини. Типовою мовою, що використовує це, є Java ( .jar
).
Хоча теоретично "інтерпретовані" та "байт-коди" файли теоретично можуть працювати скрізь, щоб мати можливість це робити, вони повинні бути написані обережно - не покладатися на деяку поведінку / функціональність, яка існує лише в певній конкретній операційній системі. Далеко не всі вони мають ідеальну агностичну систему.