Языки программирования низкого и высокого уровня. — КиберПедия 

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Языки программирования низкого и высокого уровня.



К языкам самого низкого уровня относят машинные языки. Их относят к первому поколению языков программирования. Вскоре после них появились языки второго поколения — так называемые «языки ассемблера». В одних случаях они представляют собой не более чем мнемонику над машинным языком, в других имеют весьма развитый макроязык. Языки первого и второго поколения позволяют тонко контролировать, как требуемая функциональность будет исполняться на данном процессоре с учётом особенностей его архитектуры. С одной стороны, это обеспечивает высокое быстродействие и компактность программ, но с другой, для переноса программы на другую аппаратную платформу её нужно перекодировать (а порой и перепроектировать) с нуля. Большинство ассемблеров являются бестиповыми, но существуют и типизированные ассемблеры, нацеленные на обеспечение минимальной безопасности>>> низкоуровневых программ.

К 1970-м годам сложность программ выросла настолько, что превысила способность программистов управляться с ними, и это привело к огромным убыткам и застою в развитии информационных технологий. Ответом на эту проблему стало появление массы языков высокого уровня, предлагающих самые разные способы управления сложностью (подробнее см. парадигма программирования и языки для программирования в мелком и крупном масштабе). Термин «язык высокого уровня» в этом смысле предполагает, что семантическая модель языка в большей степени учитывает особенности мышления человека, нежели машины. Как следствие, программы гораздо легче модифицируются и совсем легко переносятся с компьютера на компьютер. На практике, наибольшее распространение получили языки третьего поколения, которые лишь претендуют на звание «высокоуровневых», но реально предоставляют лишь те «высокоуровневые» конструкции, что находят однозначное соответствие инструкциям в машине фон-Неймана.

Языки четвёртого и пятого поколения нацелены преимущественно на выражение того, что должна делать программа (см. декларативное программирование). На таких языках в большинстве случаев достаточно просто перекомпилировать программу под определенную компьютерную архитектурную и операционную систему. Кроме того, для них не редкость компиляция в язык третьего поколения (в большинстве случаев это Си, но иногда в роли целевых платформ выступают Java, JavaScript, Ada и др.).

Язык Си изначально позиционировался как «высокоуровневый ассемблер»; его также часто называют «языком среднего уровня». Он позволяет в значительной степени контролировать способ реализации алгоритма с учётом свойств, типичных для весьма большого числа аппаратных архитектур. Однако, есть платформы, под которые реализации Си (даже с в нестандартном виде) отсутствуют по причине принципиальной невозможности или нецелесообразности их создания. Со временем появились и другие языки среднего уровня, например, LLVM, C--.



В большинстве случаев языки высокого уровня порождают машинный код большего размера и исполняются медленнее. Однако, некоторые языки высокого уровня для алгоритмически и структурно сложных программ могут давать заметное преимущество в эффективности, уступая низкоуровневым лишь на небольших и простых программах (подробнее см. эффективность языков). Иначе говоря, потенциальная эффективность языка меняется с повышением его «уровня» нелинейно и вообще неоднозначно. Однако скорость разработки и трудоёмкость модификации, устойчивость и другие показатели качества в сложных системах оказываются гораздо важнее предельно возможной скорости исполнения — они обеспечивают различие между программой, что работает, и той, что нет — так что экономически более целесообразна эволюция аппаратного обеспечения (исполнение большего числа инструкций в единицу времени) и методов оптимизирующей компиляции (более того, последние десятилетия эволюция аппаратного обеспечения движется в направлении поддержки методов оптимизирующей компиляции для языков высокого уровня). К примеру, автоматическая сборка мусора, присутствующая в большинстве высокоуровневых языков программирования, считается одним из важнейших улучшений, благотворно повлиявших на скорость разработки.

Поэтому в наши дни языки низкого уровня используются только в задачах системного программирования. Как следствие, сам термин «низкоуровневый язык программирования» многими людьми понимается исключительно как «предоставляющий возможность решать задачи системного программирования». В действительности этому определению отвечают и многие языки, требующие значительных преобразований до получения машинного кода. Более того, языки C# и Limbo используются именно в роли системных в операционных системах с повышенной отказоустойчивостью. Язык BitC является представителем четвёртого поколения (функциональной парадигмы программирования), но целиком и полностью ориентирован именно на системное программирование и уверенно конкурирует по скорости с Си. Таким образом, его классификация как языка «низкого» или «высокого» уровня оказывается весьма субъективной.



 






Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...





© cyberpedia.su 2017 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.005 с.