~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 0B8FB226DEC373CCF3B2DEB2D366A065__1710614460 ✰
Заголовок документа оригинал.:
✰ Programming language design and implementation - Wikipedia ✰
Заголовок документа перевод.:
✰ Проектирование и реализация языка программирования — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Programming_language_design ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/0b/65/0b8fb226dec373ccf3b2deb2d366a065.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/0b/65/0b8fb226dec373ccf3b2deb2d366a065__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:45:04 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 16 March 2024, at 21:41 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Проектирование и реализация языка программирования — Википедия Jump to content

Проектирование и реализация языка программирования

Из Википедии, бесплатной энциклопедии

Языки программирования обычно создаются путем разработки формы представления компьютерной программы и написания реализации разработанной концепции. [1] обычно интерпретатор или компилятор . Интерпретаторы предназначены для чтения программ, обычно в некоторых вариантах текстового формата , и выполнения действий на основе прочитанного, тогда как компиляторы преобразуют код на более низкий уровень. [2]

Дизайн [ править ]

При разработке языка программирования необходимо учитывать множество факторов. Некоторые факторы могут быть взаимоисключающими (например, безопасность и скорость). Может возникнуть необходимость рассмотреть, будет ли язык программирования лучше интерпретироваться или компилироваться, должен ли язык быть динамически или статически типизирован, будет ли использоваться наследование, а также общий синтаксис языка. [3] Многие факторы, связанные с разработкой языка, могут определяться целями, стоящими за языком. Важно учитывать целевую аудиторию языка, его уникальные особенности и предназначение. [4] Хорошей практикой является изучение того, чего не хватает существующим языкам или чего они затрудняют, чтобы убедиться, что язык служит определенной цели. [4]

Различные эксперты предложили полезные принципы проектирования:

  • В последнем абзаце статьи, опубликованной в 1972 году, Тони Хоар дал несколько общих советов для любого программного проекта: [5]
«Итак, мой совет разработчикам и разработчикам программного обеспечения будущего в двух словах:
не решайте точно, что вы собираетесь делать, пока не знаете, как это сделать;
и не решайте, как это сделать, пока не оцените свой план по всем желаемым критериям качества.
А если вы не можете этого сделать, упрощайте свой дизайн до тех пор, пока не сможете».
  • На симпозиуме SIGPLAN в 1973 году Тони Хоар довольно подробно обсудил различные аспекты языка. [6] Он также указывает на ряд недостатков современных языков программирования.
«Язык программирования — это инструмент, который должен помогать программисту в самых сложных аспектах его искусства,
а именно: проектирование программ, документация и отладка».
«Объективные критерии хорошего языкового дизайна можно сформулировать в пяти крылатых фразах:
простота, безопасность, быстрый перевод, эффективный объектный код и читаемость».
«Абсурдно проводить сложные проверки безопасности при отладке, когда результатам не доверяют, а затем удалять их при производстве, когда ошибочный результат может быть дорогостоящим или катастрофическим. Что бы мы подумали об энтузиасте парусного спорта, который носит его спасательный жилет во время тренировок на суше, но он снимает его, как только выходит в море?»
  • На конгрессе ИФИП 1974 года Никлаус Вирт , разработчик языка Паскаль , представил доклад «О разработке языков программирования». [7] Вирт перечислил ряд противоречивых предложений, в первую очередь то, что язык должен быть простым в изучении и использовании, его можно использовать без добавления новых функций, компилятор должен генерировать эффективный код, компилятор должен быть быстрым и что язык должен быть совместим с библиотеками, системой, в которой он работает, и программами, написанными на других языках.

Реализация [ править ]

Переводчики [ править ]

Интерпретатор — это программа, которая читает другую программу, обычно в виде текста. [4] как это видно в таких языках, как Python . [2] Интерпретаторы читают код и непосредственно выдают результат. [8] Интерпретаторы обычно читают код построчно и анализируют его, чтобы преобразовать и выполнить код как операции и действия. [9]

Компиляторы [ править ]

Компиляторы — это программы, которые читают программы, также обычно в виде текста, и преобразуют код в более низкого уровня . машинный код или операции [4] Скомпилированные форматы, созданные компиляторами, сохраняют действия нижнего уровня в виде файла. [2] Скомпилированные языки, преобразованные в машинный код , обычно работают намного быстрее, поскольку операции более низкого уровня легче выполнять, а результаты можно предсказать и скомпилировать заранее. [9]

Процесс [ править ]

Процессы создания языка программирования могут отличаться от разработчика к разработчику; однако вот общий процесс создания языка программирования, включающий общие концепции:

  • Дизайн: рассматриваются такие аспекты дизайна, как типы, синтаксис, семантика и использование библиотек для разработки языка. [10]
  • Рассмотрение: учитываются синтаксис, реализация и другие факторы. Такие языки, как Python, интерпретируют код во время выполнения, тогда как такие языки, как C++, используют подход, основанный на C. компиляторе [11]
  • Создайте реализацию: пишется первая реализация. Компиляторы конвертируют в другие форматы, обычно заканчивая столь же низкоуровневым, как ассемблер, даже до двоичного. [12]
  • Улучшите свою реализацию. Реализации следует улучшать. Расширьте язык программирования, стремясь к тому, чтобы он имел достаточную функциональность для начальной загрузки , когда язык программирования способен написать собственную реализацию.
  • Начальная загрузка: при использовании компилятора разработчик может использовать процесс начальной загрузки, при котором компилятор языка программирования переписывается сам по себе. [13] Это полезно для проверки ошибок и подтверждения его возможностей. [14] Преимущество начальной загрузки также заключается в том, что с этого момента вам нужно будет только запрограммировать язык сам по себе.

Ссылки [ править ]

  1. ^ Томассетти, Федерико (8 мая 2019 г.). «Как бы я начал создавать язык программирования?» . Струмента . Проверено 3 марта 2023 г.
  2. ^ Перейти обратно: а б с «Компилятор против интерпретатора» . Гики для гиков . 17 января 2022 г. Проверено 3 марта 2023 г.
  3. ^ «Языки программирования и обучение» . Вашингтонский EDU . Университет Вашингтона . Проверено 2 марта 2023 г.
  4. ^ Перейти обратно: а б с д «Как создаются языки программирования» . GoNoCode . 8 декабря 2021 г. Проверено 2 марта 2023 г.
  5. ^ Хоар, ЦАР (1972). «Качество программного обеспечения» . Программное обеспечение: практика и опыт . 2 (2): 103–105. дои : 10.1002/спе.4380020202 . S2CID   62662609 .
  6. ^ «Советы по проектированию языков программирования» (PDF) . 1973 год . Проверено 7 марта 2023 г.
  7. ^ «О проектировании языков программирования» (PDF) . 1974 год . Проверено 9 марта 2023 г.
  8. ^ Дайвер, Лоуренс (7 декабря 2021 г.). «Опубликовано 7 декабря 2021 г. Интерпретация правил кода: производительность, производительность и производство» . Отчет MIT по вычислительному праву .
  9. ^ Перейти обратно: а б Рати, Мукул (31 марта 2017 г.). «Как я написал свой «правильный» язык программирования» . мукулрати . Проверено 2 марта 2023 г.
  10. ^ Чучанян, Вик. "Языки программирования" . Калифорнийский государственный университет в Нортридже . Проверено 2 марта 2023 г.
  11. ^ Страуструп, Бьерн. «История C++: 1979−1991» (PDF) . Архивировано (PDF) из оригинала 2 февраля 2019 года . Проверено 18 июля 2013 г.
  12. ^ Фергюсон, Эндрю. «История языков программирования» . Университет Брауна . Проверено 2 марта 2023 г.
  13. ^ Глюк, Роберт (2012). «Загрузка генераторов компиляторов из частичных вычислителей». В Кларке, Эдмунд; Вирбицкайте Ирина; Воронков, Андрей (ред.). Перспективы системной информатики: 8-я Международная конференция памяти Андрея Ершова, PSI 2011, Новосибирск, Россия, 27 июня – 1 июля 2011 г., Переработанное избранное . Конспекты лекций по информатике. Том. 7162. Спрингер. стр. 125–141. дои : 10.1007/978-3-642-29709-0_13 . Начало работы представляет собой проблему курицы и яйца, знакомую по конструкции компилятора: для начальной загрузки компилятора нужен компилятор, и загрузка генераторов компиляторов не является исключением.
  14. ^ «Установка GCC: Сборка» . Проект GNU — Фонд свободного программного обеспечения (FSF) .
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 0B8FB226DEC373CCF3B2DEB2D366A065__1710614460
URL1:https://en.wikipedia.org/wiki/Programming_language_design
Заголовок, (Title) документа по адресу, URL1:
Programming language design and implementation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)