411
Поговоріть на машині: як ваш комп'ютер і телефон знати що ви хочете Тем
Що відбувається при натисканні чисел в калькуляторі або введіть повідомлення в месенджері? Молодший вчений Сергій Лісицин розповів, як перекладачі з людини в машині, а саме компілятори, і як принцип їх роботи може допомогти нам дізнатися дві мови або більше.
Що потрібно знати Заповнювати своє життя. Згідно з різними оцінками, в даний момент з двох і наполовину до десяти тисяч мов програмування - формальні реєстраційні системи. З їх допомогою записується програма - набір кроків, які повинні виконувати машину.
За будь-яким з наших дій в комп'ютері, планшеті та телефоні є багато мов, в яких суворо визначені правила описують все, що ми можемо потенційно зробити. І тільки невелика кількість таких мов може спілкуватися безпосередньо з комп'ютером, тобто взаємодіяти безпосередньо з машинним кодом, що складається з нулів і тих.
Всі інші мови, такі як C++ або Java, вимагають перекладачів, щоб переписати нашу програму в комп'ютерну форму. Одним з таких типів перекладачів називають компілятор.
Не дивно, що компіляція та написання перекладачів є цілою наукою, надзвичайно актуальною та універсальною. Перед його зовнішнім виглядом життя програмістів було важко і неприпустимо: фахівці мали написати свої програми у вигляді машинного коду, тобто набору нулів або тих. Дуже важко прочитати, значно менше правила. Але код машин був замінений на мови програмування, з якими набагато простіше пояснити завдання на комп'ютер. Для цих мов потрібні перекладачі.
Перший перекладач в СРСР – або, як його ще називають, ПП, програмування – було написано в 1954 році. Сьогодні перекладачі дуже різні: безкоштовно для завантаження і редагування (або відкритого джерела) і оплати, які не можна регулювати.
Отримання ролі компілятора
Переклад мови програми на комп'ютерну мову може відрізнятися. Існує можливість взяти кожну лінію окремо і пояснити її на комп'ютер, але часто більш правильно читати всю програму, обробити її, зробити її більш оптимальним для комп'ютера, щоб зрозуміти, а потім влаштувати його у вигляді машинного коду. Перекладачі першого типу називають перекладачами і компіляторами другого типу.
Є також багато проміжних форм. Легко використовується для ролі компілятора або перекладача, які вражають себе як перекладач, наприклад, з кореневої до російської мови. Ви можете переписати текст на іншу мову, перекладаючи кожен вирок окремо, або ви можете прочитати всю книгу, подумайте про це, подумайте про те, як інші засоби виразу краще звучать в іншій мові. Якщо ваша мета полягає в тому, щоб передати основне повідомлення, ви навіть можете видалити непотрібні розділи на вашу думку і викликати символи іншими іменами. Все залежить від поставленого завдання перекладачу.
Тим не менш, потрібно бути уточненим. Якщо ви є перекладачем, ви переможете кожен рядок для кожного читання. Іншими словами, немає книг на полиці з остаточним перекладом з корейської на російську мову.
Якщо ви є відповідальним перекладачем, фрукти вашої роботи - переклад - робиться в окрему книгу, яку можна покласти на полицю, милуватися, відпиляти і отримати в будь-який зручний час. У комп'ютерній мові така книга, написана мовою, машина може зрозуміти, називається виконуваний файл. Однак, якщо після мислення про текст, автор книги, який ви перекладаєте, вирішив зробити пару більш вироків або додаткового коми, вам доведеться зробити все знову: читати повністю нову книгу, усвідомити, подумати і покласти на полицю поруч зі старого перекладу нового обсягу. Крім того, два отримані роботи можуть навіть не відрізнятися один від одного, але чітко дізнатися, що вам доведеться перевести все знову.
Далі Що всередині компілятора або як працюють професійні перекладачі? Компілятор може бути розділений на три частини: передній, середній і задній. Дякуемо!
Frontend працює безпосередньо з мовою, з якої ми хочемо перевести книгу. І це неймовірно зручно (читець зрозуміє, чому пізніше). Компілятор виробляє лексичний, синтактичний і семантичний аналіз. На мові книг, вироки розбиті на слова, присуд і суб'єкт знаходиться, з'єднання встановлюється між частинами вироку і іншими вироками.
Тепер повірте ще одну цікавою. Повідомляємо, що ви перекладаєте корейську книгу на російську мову, і ви є французькою. Ваше завдання на першому етапі полягає в тому, щоб читати корейський тест і перевести його на французьку, яка більш зручна для вас, щоб працювати на. Повернення на комп'ютери, мова, в якій представлена інформація в компіляторі, відрізняється як від мови виконуваний файл (книжка російською мовою) і з мови програми, яку ви хочете перевести (книжка в корейці). Ця мова називається проміжною мовою представлення.
На другому етапі – посередині – ви думаєте про та трансформуєте текст на рідну мову (у нашому випадку французькою мовою), щоб вона стала зрозумілою, тобто ви граєте роль не тільки перекладача, але й редактора. Якщо це аналітична стаття журналу, половина складається з «водних» , на середній стадії з перекладу в французьку текст видалите всі зайві і залиште тільки сеймантичні компоненти.
Ви не повинні редагувати автора. Що більше, якщо ви думаєте, що ви не розумні, щоб розповісти йому, що справа і що не, ви не можете редагувати текст на всіх. Таким чином, комп'ютер не може оптимізувати або змінити код автора, перекладений на проміжний вигляд, може це зробити з деякими обмеженнями, або може бути повністю на свій розсуд. Оптимальний шлях залежить від ситуації.
Повністю неоптимізований код, особливо тих, які написані новачками, часто сповільнюється і неефективно. Тому рекомендуються деякі елементи оптимізації. Але не завжди варто оптимізувати код абсолютно або – наприклад, в C, де програміста може керувати пам'яттю на власний розсуд, враховуючи наступні завдання: це фактор, який комп'ютер не може бути здійснений.
Нарешті, в останній частині компілятора, в задній частині, ми переводимо переглянуті або збережені версії книги з французької на кінцеву мову - російською. Або, на мові програмістів, ми перекладаємо з проміжної мови виконання на мову виконуваного файлу. Такий виконуваний файл зберігається незалежно від оригінальної програми в пам'яті і може працювати стільки разів, скільки ми бажаємо.
Компілятори як сутність прогресу
Нові мови постійно створюються і старі мови. Архітектура комп'ютера постійно поліпшується - спосіб машини сприймає і читає інформацію. Чи потрібна будь-яка зміна архітектури або мови? Ноп.
Все це вимагає величезної кількості грошей і зусиль від програмістів після кожного невеликого зміни, і прогрес просто не зможе зберегти темпи. Для того, щоб обрізати цю проблему, так зручно застосувати вищевказану схему трьох етапів. Справа в тому, що при створенні нової або реворкінгу старої мови потрібно писати тільки передньою - перший етап, який взаємодіє безпосередньо з мовою програми і перекладає її на проміжну мову презентації. Після цієї дії, інші дві частини, що працюють з проміжним виглядом та мовою виконуваних файлів, обробляють код таким же чином, як і раніше.
Те ж саме, коли архітектурні зміни. З останнього кроку, бекенд, працює з перекладом з проміжного вигляду до кінцевого коду, змінюється тільки частина його достатньо, щоб зробити компіляторні роботи під різною архітектурою. Повернувшись до аналогії з літературними перекладачами, при навчанні нової мови, наприклад івриту, досить запам'ятати переклад всіх слів з івриту на французьку, а потім перевести їх на будь-яку іншу мову. Дуже зручно. Це випадок для всіх з більш ніж двома мовами.
Клас науково-технічних завдань постійно зростає, нові мови є письмовими, нові стандарти видаються для старих і змін в комп'ютерній архітектурі. Все це вимагає зусиль від програмістів написання компіляторів. Методи оптимізації, які використовуються для поліпшення коду при компіляціях, також постійно оновлюються математиками. У обмін досвідом, комп’ютерна наука є дуже корисними відкритими ресурсними проектами, коли будь-який розвиток надходить на публічний дисплей і може вільно використовуватися для всіх. В цілому компілятори уважно стежать за програмами і комп'ютерами, і без них в даний момент неможливо розвивати будь-яку комп'ютеризовану галузь. Видання
Автор: Сергій Лісицин
P.S. І пам'ятайте, що просто змініть наше споживання – разом ми змінюємо світ!
Приєднуйтесь до нас на Facebook, VKontakte, Odnoklassniki
Джерело: теоріяandpractice.ru/posts/12435-compilers
Що потрібно знати Заповнювати своє життя. Згідно з різними оцінками, в даний момент з двох і наполовину до десяти тисяч мов програмування - формальні реєстраційні системи. З їх допомогою записується програма - набір кроків, які повинні виконувати машину.
За будь-яким з наших дій в комп'ютері, планшеті та телефоні є багато мов, в яких суворо визначені правила описують все, що ми можемо потенційно зробити. І тільки невелика кількість таких мов може спілкуватися безпосередньо з комп'ютером, тобто взаємодіяти безпосередньо з машинним кодом, що складається з нулів і тих.
Всі інші мови, такі як C++ або Java, вимагають перекладачів, щоб переписати нашу програму в комп'ютерну форму. Одним з таких типів перекладачів називають компілятор.
Не дивно, що компіляція та написання перекладачів є цілою наукою, надзвичайно актуальною та універсальною. Перед його зовнішнім виглядом життя програмістів було важко і неприпустимо: фахівці мали написати свої програми у вигляді машинного коду, тобто набору нулів або тих. Дуже важко прочитати, значно менше правила. Але код машин був замінений на мови програмування, з якими набагато простіше пояснити завдання на комп'ютер. Для цих мов потрібні перекладачі.
Перший перекладач в СРСР – або, як його ще називають, ПП, програмування – було написано в 1954 році. Сьогодні перекладачі дуже різні: безкоштовно для завантаження і редагування (або відкритого джерела) і оплати, які не можна регулювати.
Отримання ролі компілятора
Переклад мови програми на комп'ютерну мову може відрізнятися. Існує можливість взяти кожну лінію окремо і пояснити її на комп'ютер, але часто більш правильно читати всю програму, обробити її, зробити її більш оптимальним для комп'ютера, щоб зрозуміти, а потім влаштувати його у вигляді машинного коду. Перекладачі першого типу називають перекладачами і компіляторами другого типу.
Є також багато проміжних форм. Легко використовується для ролі компілятора або перекладача, які вражають себе як перекладач, наприклад, з кореневої до російської мови. Ви можете переписати текст на іншу мову, перекладаючи кожен вирок окремо, або ви можете прочитати всю книгу, подумайте про це, подумайте про те, як інші засоби виразу краще звучать в іншій мові. Якщо ваша мета полягає в тому, щоб передати основне повідомлення, ви навіть можете видалити непотрібні розділи на вашу думку і викликати символи іншими іменами. Все залежить від поставленого завдання перекладачу.
Тим не менш, потрібно бути уточненим. Якщо ви є перекладачем, ви переможете кожен рядок для кожного читання. Іншими словами, немає книг на полиці з остаточним перекладом з корейської на російську мову.
Якщо ви є відповідальним перекладачем, фрукти вашої роботи - переклад - робиться в окрему книгу, яку можна покласти на полицю, милуватися, відпиляти і отримати в будь-який зручний час. У комп'ютерній мові така книга, написана мовою, машина може зрозуміти, називається виконуваний файл. Однак, якщо після мислення про текст, автор книги, який ви перекладаєте, вирішив зробити пару більш вироків або додаткового коми, вам доведеться зробити все знову: читати повністю нову книгу, усвідомити, подумати і покласти на полицю поруч зі старого перекладу нового обсягу. Крім того, два отримані роботи можуть навіть не відрізнятися один від одного, але чітко дізнатися, що вам доведеться перевести все знову.
Далі Що всередині компілятора або як працюють професійні перекладачі? Компілятор може бути розділений на три частини: передній, середній і задній. Дякуемо!
Frontend працює безпосередньо з мовою, з якої ми хочемо перевести книгу. І це неймовірно зручно (читець зрозуміє, чому пізніше). Компілятор виробляє лексичний, синтактичний і семантичний аналіз. На мові книг, вироки розбиті на слова, присуд і суб'єкт знаходиться, з'єднання встановлюється між частинами вироку і іншими вироками.
Тепер повірте ще одну цікавою. Повідомляємо, що ви перекладаєте корейську книгу на російську мову, і ви є французькою. Ваше завдання на першому етапі полягає в тому, щоб читати корейський тест і перевести його на французьку, яка більш зручна для вас, щоб працювати на. Повернення на комп'ютери, мова, в якій представлена інформація в компіляторі, відрізняється як від мови виконуваний файл (книжка російською мовою) і з мови програми, яку ви хочете перевести (книжка в корейці). Ця мова називається проміжною мовою представлення.
На другому етапі – посередині – ви думаєте про та трансформуєте текст на рідну мову (у нашому випадку французькою мовою), щоб вона стала зрозумілою, тобто ви граєте роль не тільки перекладача, але й редактора. Якщо це аналітична стаття журналу, половина складається з «водних» , на середній стадії з перекладу в французьку текст видалите всі зайві і залиште тільки сеймантичні компоненти.
Ви не повинні редагувати автора. Що більше, якщо ви думаєте, що ви не розумні, щоб розповісти йому, що справа і що не, ви не можете редагувати текст на всіх. Таким чином, комп'ютер не може оптимізувати або змінити код автора, перекладений на проміжний вигляд, може це зробити з деякими обмеженнями, або може бути повністю на свій розсуд. Оптимальний шлях залежить від ситуації.
Повністю неоптимізований код, особливо тих, які написані новачками, часто сповільнюється і неефективно. Тому рекомендуються деякі елементи оптимізації. Але не завжди варто оптимізувати код абсолютно або – наприклад, в C, де програміста може керувати пам'яттю на власний розсуд, враховуючи наступні завдання: це фактор, який комп'ютер не може бути здійснений.
Нарешті, в останній частині компілятора, в задній частині, ми переводимо переглянуті або збережені версії книги з французької на кінцеву мову - російською. Або, на мові програмістів, ми перекладаємо з проміжної мови виконання на мову виконуваного файлу. Такий виконуваний файл зберігається незалежно від оригінальної програми в пам'яті і може працювати стільки разів, скільки ми бажаємо.
Компілятори як сутність прогресу
Нові мови постійно створюються і старі мови. Архітектура комп'ютера постійно поліпшується - спосіб машини сприймає і читає інформацію. Чи потрібна будь-яка зміна архітектури або мови? Ноп.
Все це вимагає величезної кількості грошей і зусиль від програмістів після кожного невеликого зміни, і прогрес просто не зможе зберегти темпи. Для того, щоб обрізати цю проблему, так зручно застосувати вищевказану схему трьох етапів. Справа в тому, що при створенні нової або реворкінгу старої мови потрібно писати тільки передньою - перший етап, який взаємодіє безпосередньо з мовою програми і перекладає її на проміжну мову презентації. Після цієї дії, інші дві частини, що працюють з проміжним виглядом та мовою виконуваних файлів, обробляють код таким же чином, як і раніше.
Те ж саме, коли архітектурні зміни. З останнього кроку, бекенд, працює з перекладом з проміжного вигляду до кінцевого коду, змінюється тільки частина його достатньо, щоб зробити компіляторні роботи під різною архітектурою. Повернувшись до аналогії з літературними перекладачами, при навчанні нової мови, наприклад івриту, досить запам'ятати переклад всіх слів з івриту на французьку, а потім перевести їх на будь-яку іншу мову. Дуже зручно. Це випадок для всіх з більш ніж двома мовами.
Клас науково-технічних завдань постійно зростає, нові мови є письмовими, нові стандарти видаються для старих і змін в комп'ютерній архітектурі. Все це вимагає зусиль від програмістів написання компіляторів. Методи оптимізації, які використовуються для поліпшення коду при компіляціях, також постійно оновлюються математиками. У обмін досвідом, комп’ютерна наука є дуже корисними відкритими ресурсними проектами, коли будь-який розвиток надходить на публічний дисплей і може вільно використовуватися для всіх. В цілому компілятори уважно стежать за програмами і комп'ютерами, і без них в даний момент неможливо розвивати будь-яку комп'ютеризовану галузь. Видання
Автор: Сергій Лісицин
P.S. І пам'ятайте, що просто змініть наше споживання – разом ми змінюємо світ!
Приєднуйтесь до нас на Facebook, VKontakte, Odnoklassniki
Джерело: теоріяandpractice.ru/posts/12435-compilers