Video: What is a computer language?
Що є суттю комп'ютерного мови? Навіщо він потрібен комп'ютерів? Чому в світі так багато комп'ютерних мов?
Як для розуміння принципів роботи двигуна не потрібно водити машину, так і для розуміння відповіді на ці питання не потрібно програмувати. Але для того, щоб поліпшити своє знання теми, необхідно зрозуміти як працює комп'ютер. Тут дається коротке пояснення.
Комп'ютери є цифровою електронікою. Їх сприйняття даних полягає в наявності або відсутності напруги в проводах. Відсутність напруга виглядає для комп'ютера як нуль, наявність - як одиниця. Насправді, комп'ютери не знають інших цифр, так що в підсумку йому доводиться комбінувати 0 і 1 для складання чисел.
Раніше, особливі перемикачі використовувалися для завантаження одиниць і нулів в комп'ютерну пам'ять. На цій картинці, що належить Wikimedia Commons , зображений Altair 8800. Перемикачі на передній панелі використовувалися для завантаження програми. Вогні показували результат. Монітора не було.
Кожен набір з перемикачів вдає із себе номер. Кожен номер являє дані або інструкцію, яку з ними повинен зробити комп'ютер. Ця система, яка використовує тільки нулі і одиниці для репрезентації чисел називається бінарною (двійковій) системою числення. Цей тип комп'ютерного мови називається 1GL, або мова програмування першого покоління.
Числа в двійковій системі числення найчастіше представлені в комбінаціях з чотирьох цифр. наприклад:
1010 0010 0011
Удосконаленням введення через перемикачі був початок використання шістнадцятирічних кодів. Десяткові числа, використовувані в посведневной життя, складаються з цифр 0-9. Шістнадцяткова система обчислення складається з цифр 0-9, а також із символів від A до F для репрезентації набору чотирьох перемикачів, з можливими значеннями 0-15.
Двійкова |
десяткова |
Шістнадцяткова |
0 |
0 |
0 |
1 |
1 |
1 |
10 |
2 |
2 |
11 |
3 |
3 |
100 |
4 |
4 |
101 |
5 |
5 |
110 |
6 |
6 |
111 |
7 |
7 |
1000 |
8 |
8 |
+1001 |
9 |
9 |
1010 |
10 |
A |
1011 |
11 |
B |
1100 |
12 |
C |
1 101 |
13 |
D |
1110 |
14 |
E |
1111 |
15 |
F |
1 0000 |
16 |
10 |
1 0001 |
17 |
11 |
Наступне відео трохи докладніше пояснює, як працює система обчислення:
Video: Decimal, binary, and hexadecimal systems
Для полегшення введення програм, більш пізні комп'ютери дозволяли вводити програми за допомогою мови assembly. Кожна команда використовувала мнемоніку, а програма, яка називається компілятором, перетворювала мнемоніки в числа, що позначають команди. Такий тип мови називається 2GL, або мову другого покоління.
Нижче Превед частина програми на мові assembly, надано Wikimedia Commons .
Figure 2.2: Приклад мови assembly
Хоча це було поліпшенням, цього все ще було недостатньо для того, щоб зробити процес програмування легким. Наступне покоління мов надало абстракції вищого рівня. Перші мови третього покоління: ( COBOL , FORTRAN і LISP ) були набагато простіше для розуміння і програмування.
Мови другого і третього покоління використовували програму, яка називається компілятор . Компілятор бере програму, введену користувачем (так званий вихідний код ) і перетворює її в машинний код. Програміст запускає машинний код. Оригінальний вихідний код не запускається.
Якщо програма використовує вихідний код з різних джерел, вони можуть бути пов'язані один з одним в один за допомогою програми, званої linker (линкер, редактор зв'язків, компонувальник) . Редактор зв'язків працює з машинним кодом, що згенерував компілятором, для створення фінальної версії програми. Ця фінальна версія - то, що запускає користувач. Вихідний код для цього не потрібен.
Figure 2.3: Компілятори та редактори зв'язків
Недоліком машинного мови є те, що програма буде працювати тільки на певних типах комп'ютера. Програми, скомпільовані для комп'ютерів з Windows швидше за все не будуть працювати на комп'ютерах Apple Macintosh і навпаки.
Тому що весь процес компіляції і зв'язку може бути складним для початківців програмістів, деякі мови стали використовувати інтерпретатори . Ці програми спотр на вихідний код і перетворять його в машинний код на ходу. Це також дозволяє одним і тим же програмам запускатися на Windows, Mac, Unix комп'ютерах, в разі, якщо на кожній з цих платформ є доступ до інтерпретатора.
Недоліком використання інтерпретатора є те, що він повільніше, ніж оригінальний, машинний мову.
Python є прикладом інтерпретується мови. Легше писати на Python'е, ніж на C, але Python працює повільніше і вимагає інтерпретатора для успішної роботи.
Мови начебто Java використовують систему, де програми компілюються в машинний код, який, замість самої операційної системи комп'ютера, потім запускається на Java Virtual Machine ( JVM ). C # , іспольщуєт Common Language Infrastructure ( CLI ), - інший популярний мову, який робить те ж саме, запускаючи себе на віртуальній машині Virtual Execution System ( VES ). Хоча навчання цим мовам не є метою цієї книги, ви сміливо можете з ними ознайомитися.
На сьогоднішній день існує дуже багато мов програмування. У зв'язку з тим, що комп'ютери здатні виконувати так багато різних функцій, кожна мова спеціалізується на окремих типах завдання. Так, наприклад, мова C використовується для операційних систем і програмування пристроїв. Інші мови, на зразок PHP , підходять для створення сторінок в інтернеті. В цілому, Python є мовою загального призначення, що спеціалізуються на простоті використання.
Компанія Tiobe стежить за популярністю різних мов програмування на своєму сайті , який оновлюється щомісяця. Можна стежити за цими тенденціями, разом з дошками оголошень на DICE , щоб скласти загальну картину того, які мови потрібні роботодавцям на даний момент.
Більшість мов мають кілька спільних елементів, так що освоївши одну мову програмування, не важко вивчити іншу, застосовуючи в ньому схожі принципи програмування.
Якщо вас цікавить більш докладна історія інформатики в цілому, рекомендую ознайомитися з наступними фільмами:
Я також рекомендую книгу Accidental Empires , якщо вам подобається читати більше, ніж дивитися фільми.