Меню

Классы языков программирования таблица



Классификация языков программирования

Историю компьютерных наук в известной степени можно представить как историю языков программирования, начало развития которых приходится на XIX в., когда английский ученый Чарльз Бэббидж разработал механическую вычислительную машину. Программу для нее, как вам известно, написала леди Ада Лавлейс. Языки программирования в современном понимании фактически начали развиваться с появлением электронных вычислительных машин.

Язык программирования (англ. Programming language) — это искусственный язык, созданный для разработки программ, предназначенных для выполнения на компьютере.

Компьютерная программа (англ. Computer program) — это последовательность команд (инструкций), которые обеспечивает реализацию на компьютере конкретного алгоритма.

Команда (инструкция) — это указание, которое определяет, какое действие (операцию) следует выполнять.

Сегодня можно насчитать более 2 тыс. различных языков программирования и их модификаций, однако лишь отдельные получили широкое признание. Все языки программирования можно условно классифицировать по некоторым основным признакам. Ниже приведена краткая классификация языков программирования:

  1. По степени зависимости от аппаратных средств
    • Языки низкого уровня
    • Языки высокого уровня
  2. По принципам программирования
    • Процедурные
    • Непроцедурные
    • Объектно-ориентированные
  3. По ориентации на класс задач
    • Универсальные
    • Специализированные

Рассмотрим подробно классификацию и составные части языков программирования.

По степени зависимости от аппаратных средств

Языки программирования низкого уровня (машинно-ориентированные) — языки, в которых команды и данные учитывают архитектуру компьютера. Такие языки ориентированы на конкретный тип компьютера и учитывают его аппаратные особенности.

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

Программы для первых ЭВМ разрабатывали именно на «машинных» языках. Это был сложный процесс, поэтому вскоре появились языка символьного кодирования. Команды подавались уже не двоичным кодом, а символами. Преобразование символьного кода в машинные команды осуществляется автоматически.

Обычно команды современных языков программирования записывают английскими буквами с использованием символов, содержащихся на клавиатуре. Но в компьютере хранятся и выполняются команды, которые представлены физическими сигналами (например, двумя уровнями окончательной магнитной индукции, двумя значениями электрического напряжения, наличием и отсутствием светового луча и т.д.). Значение физических сигналов отождествляются с математическими значениями 0 и 1, то есть двоичными символами.

Программы, которые представлены совокупностью 0 и 1, называют машинными или машинным кодом. Он указывает, какую именно действие следует выполнить процессору.

Используются различные структуры команд. Чаще всего команды состоят из операционной и адресной частей. В операционной части отмечается, действие (операцию) следует выполнить, а в адресной — выполнить над какими именно данными.

Упрощенно команду двоичным или шестнадцатеричным кодом можно записать соответственно так:

  • 10100011 10110111 11000101
  • АЗ В7 С5

В нашем случае код АЗ может быть операционной частью и означать, например, операцию Добавить, а В7 и С5 — адресной частью, которая определяет место хранения данных, над которыми следует выполнить операцию.

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

Процесс разработки программ несколько облегчился, когда к языкам символьного кодирования начали включать макрокоманды, реализуемые последовательностью из нескольких машинных команд. К разновидностям языков символьного кодирования принадлежат языки ассемблер и машинных кодов.

Языки программирования высокого уровня (машинно-независимые) — языки, на которых программы могут использоваться на компьютерах различных типов и которые более доступны человеку, чем языки низкого уровня.

Первым языком высокого уровня, который получил широкое признание среди программистов мира, был Fortran. Он был разработан корпорацией IBM (США) в 1954 году. Язык Фортран приближен к языку алгебры и ориентирован на решение вычислительных задач. В 1960 году группой ученых разных стран создан язык Algol-60, тоже ориентированный на решение вычислительных задач.

По принципам программирования

По принципам программирования различают процедурные, непроцедурные языки и языки объектно-ориентированного программирования.

Процедурные языки основаны на описании последовательной смены состояния компьютера, то есть значения ячеек памяти, состояния процессора и других устройств. Они манипулируют данными в пошаговом режиме, используя пошаговые инструкции. В процедурных языках выдерживают четкую структуризацию программ, поэтому их еще называют языками структурного программирования. К таким языкам относятся Fortran, Algol, Pascal, BASIC и др.

Процедурные языки полностью удовлетворяют потребности разработки небольших программ и программ средней сложности. Но в начале 80-х годов XX века объем и сложность программ достигли уровня, который требовал новых концептуальных подходов к программированию.

Непроцедурные языка эффективны для программирования поиска данных в больших объемах, а также для программирования задач, процесс решения которых невозможно описать точно (перевод, распознавание образов). В этих языках сама процедура поиска решения встроена в интерпретатор языка. К таким языкам относятся языки функционального и логического программирования.

В конце XX в. была презентована новая методика программирования, получила название объектно-ориентированного программирования (ООП). То есть начали развиваться языки, содержащие конструкции, позволяющие определять объекты, принадлежащие к классам и имеющие средства для работы с абстрактными типами данных. К таким языкам относятся C ++, Java, C #, Python и др. Сегодня языки ООП практически вытеснили с рынка профессионального программирования процедурные языки.

По ориентации на класс задач

Языки программирования делятся на универсальные и специализированные.

Универсальные языки предназначены для решения широкого класса задач. К таким языкам относятся PL/1, Algol, Pascal, С и др. Особым классом универсальных языков является визуальные среды программирования: VisualBasic, Delphi и др.

Специализированные языки учитывают специфику предметной области. В настоящее время существуют десятки специализированных языков программирования, например, языки веб-программирования, языки скриптов и др. Язык скриптов используется для создания небольших вспомогательных программ, например Javascript — для создания динамических объектов на веб-страницах. Языки разметки содержат шаблоны и средства описания содержания, структуры и формата электронных документов, например язык HTML обеспечивает разметку гипертекстового документа. Языка для работы с базами данных обеспечивают создание и сопровождение баз данных.

Отметим, что не все из перечисленных языков в классическом понимании являются языками программирования. Так, язык HTML является языком разметки гипертекста, но его также часто называют языком программирования.

День программиста отмечается в 256-й день года (в високосный год это 12 сентября, а в не-високосный — 13 сентября). Выбор объясняется тем, что это число символическое, оно тесно связано с компьютерами, но не ассоциируется с конкретными лицами или кодами специальностей. Число 256 соответствует количеству символов, которые можно представить с помощью одного байта.

Начиная с 60-х годов XX века развитие языков программирования происходит как путем специализации, так и путем универсализации.

Одним из первых специализированных языков был COBOL, разработанный в США в 1961 году и ориентированый на решение экономических задач. Впоследствии появились десятки различных специализированных языков, например, Simula — язык моделирования, LISP — язык для информационно-логических задач, RPG — речь для решения учебных задач и тому подобное.

Составляющие части языка программирования

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

Алфавит

Набор символов, из которых образуются команды программы и другие конструкции языка.

Каждый язык имеет свой алфавит. Но большинство из них содержит английские буквы, цифры, знаки арифметических операций (+, *, -, /), знаки отношений (больше, равно и др.), синтаксические знаки (точка, точка с запятой и др.).

Синтаксис

Совокупность правил записи команд и других конструкций языка.

Нарушение правил синтаксиса определяется автоматически, о чем программист получает сообщение.

Семантика

Совокупность правил толкования и выполнения конструкций языка программирования.

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

Источник

Языки программирования — виды, классификация и общая характеристика

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

Процедурное и непроцедурное программирование

Сначала нужно узнать общие виды языков программирования и их назначение.

Все они подразделяются на две категории:

  • процедурные;
  • непроцедурные.

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

Процедурные языки отличаются тем, на кого в первую очередь направлены: на машину или человека. Они подразделяются на две категории:

  • низкого уровня (или машинно-ориентированные);
  • высокого уровня.

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

Высокоуровневые языки более понятны для человека. Соответственно, программировать на них гораздо проще и удобнее. В них не учитываются особенности конкретных типов процессоров, поэтому такие программы легко переносятся с одной платформы на другую.

Для этого используют специальные программы-трансляторы.

Непроцедурные языки включают две основные языковые группы:

  • объектно-ориентированные;
  • декларативные.

Объектно-ориентированные состоят из ряда независимых объектов, которые функционируют как отдельные компьютеры. С помощью этих блоков можно решать задачи, не вникая во «внутреннюю кухню» их работы.

Работа с декларативным языком подразумевает установление взаимосвязей между исходными информационными структурами и свойствами конечного результата. При этом в нём не существует понятия «команда», а программист не создаёт алгоритмы.

Декларативные языки подразделяются на два семейства:

  • логические;
  • функциональные.

Логическое программирование описывает проблемы в виде фактов и формул, а система решает их посредством механизмов логического вывода. Функциональное, в свою очередь, формулирует задачу как совокупность определённых функций.

Десять самых популярных языков

Теперь от общей классификации можно перейти к обзору ключевых современных языков программирования, а именно самых популярных и любимых профессионалами.

Их всего десять в списке:

  1. C++.
  2. Python.
  3. Visual Basic.
  4. PHP.
  5. Delphi.
  6. Java.
  7. JavaScript.
  8. Ruby.
  9. ActionScript.
  10. Nemerle.

У каждого из них есть свои характерные особенности, недостатки и преимущества, которые можно увидеть в описаниях ниже.

С++ (Си-плюс-плюс)

С++ появился очень давно, но до сих пор пользуется большой популярностью у профессионалов, которые считают владение им практически обязательным. Изучать его как первый язык программирования не нужно, но приобретение профессионализма характеризуется тем, что человек начинает использовать С++ на постоянной основе. Со времени создания он прошёл несколько процедур стандартизации и обновления, поэтому сохраняет актуальность и по сей день.

Главным его плюсом является то, что он полностью универсален. На С++ можно писать всё что угодно, именно это и обеспечило ему любовь профессионалов. Кроме того, он относительно прост в освоении — тому, кто уже изучил С, Python или Java, будет нетрудно разобраться и в С++. Верно и обратное, так что С++ часто представляют как своего рода универсальную формулу и некий ключик к миру программирования вообще.

В то же время критики отмечают неудобный синтаксис и слишком длинный, громоздкий программный код, который часто появляется в результате работы на С++. Однако эта проблема уже отчасти исправлена с помощью дополнительных шаблонов.

Существуют разные точки зрения на этот счёт, но факт в том, что С++ пользуется неослабевающей популярностью на протяжении почти 30 лет.

Python (Пайтон или Питон)

Python — весьма популярный в наше время язык, созданный с целью как можно более простого написания сложных программ. Он был образован на основе ранних разработок и впитал в себя все их достижения. При этом постоянно выходят новые обновления, с каждым из которых он становится всё совершеннее.

К основным плюсам Python относятся простота и многофункциональность. Однако за многофункциональностью скрывается низкая скорость исполнения, а за простотой — невнятный системный код, зачастую содержащий множество ошибок. Но, несмотря на это, у Python сейчас достаточно почитателей.

Visual Basic (Вижуал Бейсик)

Вряд ли найдётся тот, кто не слышал об этом продукте от Microsoft, ведь многие программисты именно на нём познавали азы программирования. Visual Basic простой, многофункциональный и подходит для быстрого прототипирования.

VB даёт широкие возможности по созданию программного кода, а также позволяет разрабатывать UI (пользовательский интерфейс) программ. Именно его чаще всего используют специалисты Microsoft для создания таблиц с данными.

Впрочем, не обошлось и без недостатков, таких как отсутствие комментариев и доступ к памяти компьютера на низком уровне. Кроме того, у этой программы невысокая скорость работы, использовать её можно только на ОС Windows и macOS.

Читайте также:  Что такое миопия таблица

PHP (Пи-эйч-пи)

Расшифровывается как Personal Home Page Tools («инструменты для создания личной странички в интернете»). Чаще всего PHP применяют веб-мастера для разработки сайтов. В настоящее время он наиболее популярен в среде хостов (интернет-провайдеров), которые следуют тенденции использовать и поддерживать PHP, в чём и заключается его огромное преимущество. Но одним интернетом его функциональность не ограничивается.

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

Delphi (Делфи)

Delphi — императивный объектно-ориентированный язык, разработанный на основе высокоуровневого Object Pascal.

Он широко распространён благодаря многофункциональности, а также множеству компиляторов и диалектов, среди которых программист найдёт именно то, что подходит под его конкретные задачи.

С помощью Delphi написано много программ, включая плееры, файловые менеджеры, мессенджеры и многое другое. Диалектное богатство одновременно является и достоинством, и недостатком. Дело в том, что программа, написанная на одном из его видов, скорее всего, просто не откроется на другой версии.

Java (Джава)

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

К подводным камням Java относится медлительность написанных на нём программ и их «прожорливость» (то есть они задействуют оперативную память в большом объёме).

Зато у Java есть несколько модификаций, которые характеризуются собственными библиотеками данных и структурой, заточенной под специальные задачи.

JavaScript (Джава-скрипт)

Это язык прост, многофункционален и уже давно стал неотъемлемым атрибутом большинства современных интернет-браузеров. Обычно его используют для придания сайтам большей интерактивности, то есть возможности пользователя взаимодействовать с контентом.

JavaScript применяется где только можно — это браузеры, плагины, прикладное программное обеспечение, офисные и серверные приложения. Дополнительную популярность ему обеспечили специальные высокоабстрактные библиотеки.

Однако JavaScript довольно небезопасен, а написанные на нём приложения обычно пестрят ошибками. Любой пользователь интернета с ними сталкивался, причем не раз. Но стереть его из истории пока что нельзя, ведь браузеры без него попросту перестанут работать.

Ruby (Руби)

Кроссплатформенный и по-настоящему универсальный скриптовый язык, относящийся к сфере объектно-ориентированного программирования. Его синтаксис прост и лаконичен, благодаря чему новичкам будет несложно его освоить. Профессионалы любят его за бережливость по отношению к компьютерным ресурсам.

Ruby часто хвалят за динамизм и хорошую сбалансированность, где красота не принесена в жертву удобству и наоборот. Кроме того, он абсолютно открыт для использования, изменения, копирования и распространения, а ещё у него довольно много разных библиотек, которые обновляются одна за другой и позволяют решать разные задачи.

ActionScript (Экшн-скрипт)

ActionScript — это мультимедийный скриптовый язык, который предназначен для написания объектно-ориентированных программ, а именно Flash-приложений.

Его заточенность под конкретные задачи является одновременно и плюсом, и минусом, так как в пределах Flash он отличается многофункциональностью, но ничего другого на нём написать практически невозможно.

Кроме того, его характеризует гибкость, позволяющая решать задачи разными и порой нестандартными способами, но иногда такой код трудно понять кому-либо, кроме самого автора. Однако даже и он через время может запутаться в своём коде, а ведь это чревато трудностями с отладкой, обновлениями и повторным использованием.

Nemerle (Немерле)

Это высокоуровневый гибридный язык, в котором сочетаются элементы функционального и объектно-ориентированного программирования. Он появился не так давно и вобрал в себя лучшие наработки языков-предшественников, но при этом дал и реальный вклад в программирование — возможность создания метапрограмм.

Этот метод заключается в выработке алгоритмов, которые в процессе своей работы создают возможные сценарии для дальнейшего образования исполняемых файлов. Проще говоря, в Nemerle соединились лучшие и самые полезные черты предыдущих языковых поколений. Это пример языка, который совмещает в себе новизну и универсальность.

Советы для начинающих

Все языки программирования не перечислить, здесь были приведены только самые популярные из них. У каждого есть свои плюсы и минусы, потому что они ориентированы на разные сферы. Какой-то язык подходит для написания Flash-анимации, но не годится для работы с браузерами, какой-то — в точности до наоборот.

Так что нужно крепко подумать перед тем, как браться за изучение определённого языка.

Обычно программисты либо начинают с языков попроще, а потом постепенно выбирают самый подходящий под свои задачи и специализируются в этой области, либо же становятся многоязычными и продолжают потихоньку пользоваться каждым из них.

Эксперты рекомендуют новичкам начинать обучение с Visual Basic, потом переходить на С++, а уже после этого выбирать язык, который покажется самым интересным, удобным и полезным.

Источник

Классификация языков программирования

Существует множество критериев, по которым можно классифицировать языки программирования. Частые варианты классификации включают:

  • По парадигме (декларативные, императивные, структурированные и т.п.)
  • По системе типов (динамические, статические, сильно- и слаботипизированные, нетипизированные и т.п.)
  • По уровню абстракции (высокого, низкого уровня)
  • По модели исполнения (компилируемые, интерпретируемые)
  • По “поколению”

Чёткой классификации не существует, по той простой причине, что существуют буквально тысячи ЯП, и в любой категории классификации обнаруживается практически непрерывный спектр.

По системе типов

Наиболее категоричное разделение ЯП по системе типов на типизированные и нетипизированные.

Нетипизированные языки позволяют производить любую возможную операцию над любыми данными. Это обычно какие-либо языки ассемблера, которые работают непосредственно с двоичным представлением данных в памяти.

С точки зрения теории типов очень немногие из современных языков являются типизированными в полном смысле этого слова. Большинство являются типизированными в некоторой мере. Так, многие языки позволяют выходить за пределы системы типов, принося типобезопасность в жертву более точному управлению исполнением программы.

Типизированные языки определяют типы данных, с которыми работает любая операция. Например, операция деления работает над числами – для строк эта операция не определена.

Типизированные языки, в свою очередь, могут классифицироваться по моменту проверки типов и по строгости этой проверки.

По моменту проверки типов ЯП делятся на статически и динамически типизированные (или просто, статические и динамические).

Статически типизированные языки

При статической типизации, типы всех выражений точно определены до выполнения программы, и обычно проверяются при компиляции. Языки со статической типизацией, в свою очередь могут быть явно типизированными (manifestly typed) или типовыводящими (type-inferred).

Явно типизированные языки

требуют явного указания типов. К ним относятся, например, C, C++, C#, Java.

определяют (выводят) типы большинства выражений автоматически, и требуют явного аннотирования только в сложных и неоднозначных случаях. К ним относятся, например, Haskell и OCaml.

Надо заметить, что многие явно типизированные языки умеют выводить типы в некоторых случаях (например, auto в С++11), поэтому чёткую грань здесь провести можно не всегда.

Динамически типизированные языки

производят проверку типов на этапе выполнения. Иначе говоря, типы связаны со значением при выполнении, а не с текстовым выражением. Как и типовыводящие языки, динамически типизированные не требуют указания типов выражений. Помимо прочего, это позволяет одной переменной иметь значения разных типов в разные моменты исполнения программы. Однако, ошибки типов не могут быть автоматически обнаружены, пока фрагмент кода не будет выполнен. Это усложняет отладку и несколько подрывает идею типобезопасности в целом. Примерами динамически типизированных языков являются Lisp, Perl, Python, JavaScript и Ruby.

По строгости типизации языки делятся на сильно и слабо типизированные.

Слабо типизированные языки

неявно конвертируют один тип в другой, скажем, строки в числа и наоборот. Это может быть удобно в некоторых случаях, однако многие программные ошибки могут быть пропущены. Усложняется отладка.

Сильно типизированные языки

не позволяют неявную конверсию, и требуют явной. Дают сильные гарантии типобезопасности, но код может становиться крайне многословным.

В целом, чёткую грань провести оказывается опять-таки достаточно сложно, поскольку неявное преобразование типов в той или иной мере производится в большинстве языков. Однозначно к слабо типизированным относят Perl, JavaScript и C (в силу свободной конверсии void* ). К сильно типизированным относят C++, Java, Haskell, и другие.

По уровню абстракции

Классификация по уровню абстракции сильно зависит от современных представлений о “высоком уровне абстракции”.

Языки по-настоящему низкого уровня – это машинный код и языки ассемблера, все остальные – в некотором смысле языки высокого уровня. Тем не менее, многие сейчас считают C и C++ языками низкого уровня.

Java, Python, Ruby и т.п. сейчас общепринято считаются языками высокого уровня.

Языки высокого уровня могут значительно упрощать реализацию сложных алгоритмов, однако, написанные на них программы потенциально менее производительны (абстракция не бесплатна).

По модели исполнения

ЯП может быть компилируемым, транс-компилируемым или интерпретируемым.

Интерпретируемые языки исполняются непосредственно, без этапа компиляции. Программа, называемая интерпретатором, читает каждое выражение, определяет сообразное действие, и совершает его. Гибридный вариант может генерировать машинный код “на лету” и исполнять его.

Интерпретируемые языки: PHP, Perl, Bash, Python, JavaScript

Компилируемый язык компилируется, т.е. переводится в исполнимую форму до выполнения.

Компиляция может производиться непосредственно в машинный код, или в какое-либо промежуточное представление (байт-код), которое потом интерпретируется виртуальной машиной.

Компилируемые языки (машинный код): С, С++, Algol, Fortran, Haskell Компилируемые языки (байт-код): Python, Java

Транс-компилируемые языки – это языки, которые для компиляции или выполнения транслируются в другой язык. Частой целью для транс-компилируемых языков является C. Также последнее время популярной целью является JavaScript (как единственный язык, исполняемый в браузере).

Транс-компилируемые языки: C++ (исторически, в C), Haskell (исторически, в С), Fortran (иногда, в С), Fay (в JavaScript)

Линии сильно размыты, поскольку существуют компиляторы для традиционно интерпретируемых языков, и, напротив, интерпретаторы для традиционно компилируемых.

Классификация по “поколению”

Поколение – несколько условная характеристика, которая в значительной мере связана с историей появления современных языков программирования.

Языки первого поколения

1GL – это машинные языки. Исторически, программы на этих языках вводились при помощи переключателей на передней панели ЭВМ, либо “писались” на перфокартах и позже перфолентах. Программа на 1GL состоит из 0 и 1 и сильно привязана к конкретному железу, на котором она должна исполняться.

Языки второго поколения

Это общая категория для различных языков языков ассемблера. С одной стороны, код языков 2GL может читать человек, и он должен быть конвертирован в машино-читаемую форму (этот процесс называется ассемблированием, или сборкой). С другой стороны, этот язык специфичен к процессору и прочему аппаратному окружению.

Языки третьего поколения

Более абстрактные, чем 2GL, это языки, которые перекладывают заботу о непринципиальных деталях с плеч программиста на плечи компьютера. Fortran, ALGOL и COBOL являются первыми 2GL. C, C++, Java, BASIC и Pascal так же могут быть отнесены к 3GL, хотя в общем 3GL подразумевает только структурную парадигму (в то время как C++, Java работают в том числе в ООП)

Языки четвертого поколения

Определение несколько расплывчато, однако в целом сводится к еще более высокому уровню абстракции, чем 3GL. Однако, подобный уровень абстракции часто требует сужения области применения. Так, например, FoxPro, LabView G, SQL, Simulink являются 4GL, однако находят применение в узкой специфической области. Некоторые исследователи считают, что 4GL являются подмножеством DSL (domain specific language, язык, специфичный к области).

Языки пятого поколения

В конце 80-х – начале 90-х была попытка разработать класс языков, которые “пишут программы сами”. По идее, программист должен был описывать как программа должна себя вести, а остальное должен был делать компьютер. К примерам можно отнести Prolog, OPS5, Mercury. Хотя эти языки остаются интересными с теоретической точки зрения, широкого практического применения они не нашли.

Парадигмы программирования

Определение

Вообще строгого определения нет, но по сути “парадигма программирования” определяет стиль написания исходного кода программ.

В некоторой степени “стиль” диктует так же способ формализации алгоритмов.

Императивное программирование

Императивное программирование характеризуется в основном:

  • в исходном коде программы записываются инструкции (команды);
  • инструкции должны выполняться последовательно;
  • каждая инструкция может изменять некое глобальное “состояние” программы

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

Читайте также:  Международная система единиц или си таблица

Практически всё аппаратное обеспечение в основе своей императивное.

Неструктурное программирование

Характерно для наиболее ранних языков программирования.

В основном характеризуется:

  • строки как правило нумеруются
  • из любого места программы возможен переход к любой строке

Характерной особенностью неструктурного программирования является сложность реализации рекурсии.

Структурное программирование

В отличие от неструктурного программирования, характеризуется:

  • ограниченным использованием условных и безусловных переходов
  • широким использованием подпрограмм и прочих управляющих структур (циклов, ветвлений, и т.п.)
  • блочной структурой

Концепция структурного программирования основана на теореме Бёма-Якопини:

Любая вычислимая функция может быть представлена комбинацией трёх управляющих структур:

  • Последовательности
  • Ветвления
  • Итерации

Последовательность – это выполнение сначала одной подпрограммы, затем другой.

Ветвление – это выполнение либо одной, либо другой подпрограммы в зависимости от значения некого булева (логического) выражения.

Итерация – это многократное выполнение подпрограммы пока некое булево выражение истинно.

Процедурное программирование

Процедурное программирование можно рассматривать как небольшую вариацию на тему структурного программирования, основанную на концепции вызова процедуры.

Основная идея заключается в том, чтобы сделать подпрограммы более модульными за счёт:

  • локальных переменных
  • относительно простой рекурсии

Оба этих пункта реализуются за счёт использования стека вызовов.

Объектно-ориентированное программирование

Объектно-ориентированное программирование основано на концепции “объекта”.

Объекты могут содержать данные (поля, свойства, аттрибуты) и поведение (код, процедуры, методы).

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

Одной из альтернатив является прототипное наследование. Прототипное наследование не использует классов. Вместо этого, одни объекты могут быть объявлены “прототипами” других объектов – при этом методы и поля прототипа становятся доступны как методы и поля нового объекта (если, конечно, новый объект их не переопределяет)

Декларативное программирование

Декларативное программирование — это парадигма программирования, в которой задаётся спецификация решения задачи, то есть описывается, что представляет собой проблема и ожидаемый результат. Противоположностью декларативного является императивное программирование, описывающее на том или ином уровне детализации, как решить задачу и представить результат.

Как следствие, декларативные программы не используют понятия состояния, то есть не содержат переменных и операторов присваивания.

К подвидам декларативного программирования также зачастую относят функциональное и логическое программирование — несмотря на то, что программы на таких языках нередко содержат алгоритмические составляющие.

“Чисто декларативные” компьютерные языки зачастую не полны по Тьюрингу — примерами служат SQL и HTML — так как теоретически не всегда возможно порождение исполняемого кода по декларативному описанию. Это иногда приводит к спорам о корректности термина “декларативное программирование”.

Функциональное программирование

  • отсутствие неявных побочных эффектов
  • ссылочная прозрачность
  • отсутствие неявного состояния
  • данные и функции – это концептуально одно и то же

Основано на лямбда-исчислении

Аппликативное

Аппликативное программирование — один из видов декларативного программирования, в котором написание программы состоит в систематическом осуществлении применения одного объекта к другому. Результатом такого применения вновь является объект, который может участвовать в применениях как в роли функции, так и в роли аргумента и так далее. Это делает запись программы математически ясной. Тот факт, что функция обозначается выражением, свидетельствует о возможности использования значений-функций — функциональных объектов — на равных правах с прочими объектами, которые можно передавать как аргументы, либо возвращать как результат вычисления других функций.

Комбинаторное

Комбинаторное программирование (англ. function-level programming) — парадигма программирования, использующая принципы комбинаторной логики.

Является особой разновидностью функционального программирования, но, в отличие от основного его направления, комбинаторное программирование не использует λ-абстракцию.

На практике это выливается в отсутствие “переменных”, содержащих данные.

Логическое программирование

Логическое программирование — парадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

Самым известным языком логического программирования является Prolog.

Источник

Какие бывают языки программирования?


Студенты периодически спрашивали меня какой язык программирования учить чтобы получить хорошую работу и зарплату. Конечно, я не мог сказать учите этот язык, а этот не учите и будет вам счастье. Но зато мог дать информацию о языках программирования чтобы этот выбор был легче. Проклассифицируем языки программирования с семи сторон: Модные и не модные • Компилируемые и интерпретируемые • Универсальные и специализированные • Алгоритмические и языки описания данных • Низкоуровневые и высокоуровневые • Объектно-ориентированные и языки структурного программирования • Сопутствующие Фреймворки, Библиотеки и Технологии.

Первый способ классификации, в котором есть доля шутки: Модные или популярные языки программирования, и вышедшие из моды или активного применения

Почему некоторые языки становятся модными, а о других почему-то забывают? Во-первых, смена технологий. Например, во времена операционной системы MS DOS, которая работала на 16-битных процессорах Intel, огромной популярностью пользовались языки Турбо C и Турбо Паскаль. А владеющие Ассемблером программисты считались элитой. Но, по понятным причинам, мы теперь не пользуемся ни этими устаревшими процессорами, ни системой MS DOS, так что языки отпали сами собой. Хотя мне, например, они до сих пор очень нравятся.

Другая ситуация с языком Delphi, который был продолжением Турбо Паскаля, и который был очень популярен во времена первых 32-х битных версий Windows, однако не выдержал конкуренции с другими языками программирования, в том числе от компании Microsoft, которые развивались более активно.

Это может быть и победа в конкуренции двух аналогичных языков, например, таких как JScript от Microsoft для веб-браузеров и JavaScript, первоначально представленный компанией Netscape. Популярным JavaScript стал за счет большей открытости и поддержки большим числом компаний разработчиков.

Языки С и С++ долгое время остаются популярными благодаря мнению о высокой эффективности программ, которые написаны на них. В общем, так оно и есть. Однако, постепенно другие языки программирования стали приобретать популярность не только за эффективность выполнения, но и за легкость в изучении, написании и поддержке программ, чего нельзя с уверенностью сказать о C++.

За большие возможности и гибкость С++ требует от программиста дисциплины и культуры программирования, иначе, как шутят программисты, он может превратиться из языка написания программ в язык для написания ошибок.

Несмотря на провозглашаемый стандарт языков C и C++, программы, написанные для компиляторов разных фирм редко когда бывают полностью совместимы по исходным кодам. Эту особенность тоже надо учитывать при его изучении.

Один из конкурентов C++, язык С# (читается ‘си шарп’) появился и стал популярным с приходом новой технологии от Microsoft — .Net.

А язык TypeScript получил популярность в качестве ответа на проблему сложности поддержки программ написанных на JavaScript, языке, который сам по себе достаточно популярен.

Из современных популярных языков стоит отметить Python из-за сравнительной простоты изучения, открытости, и возможности применения в различных предметных областях, таких как веб, искусственный интеллект, компьютерные игры.

Практически у каждого языка программирования есть своя группа фанатов, хотя популярность сегодня совсем не означает популярность в ближайшем будущем или что популярный язык обязательно станет полезен именно вам. В общем, выбор всегда за вами.

2. Компилируемые и Интерпретируемые

Компилируемые: С, С++, Pascal
Интерпретируемые: Visual Basic Script (VBScript), JavaScript, Python, PHP
Условно компилируемые: C# и остальные языки .Net, Java для Java-машины

Любая программа на языке программирования это прежде всего текст. Текст понятен человеку, и сравнительно легко может быть обработан компьютером, потому что буквы и другие текстовые символы в компьютере представлены некими целыми числами, их еще называют кодами символов. Программа, которая обрабатывает текст на языке программирования и создает по нему последовательность команд микропроцессора называется компилятор. То есть компилятор переводит числа, которые человек воспринимает как текст в другие числа, которые компьютер воспринимает как команды микропроцессора.

Языки, для которых требуется компилятор, называются компилируемыми. Чтобы запустить такую программу, мало просто написать ее. Надо еще прогнать ее через компилятор, получить исполняемый модуль, например, в операционной системе Windows это файл с расширением .exe, и только после этого запустить его на выполнение.

Такая схема, конечно, не всех устраивала и программисты придумали языки, которым не требуется компилятор. Для таких языков перевод текста в команды микропроцессора происходит незаметно сразу после запуска текстовой программы. Правда, для этого текстовая программа должна запускаться под управлением другой уже готовой программы, которая называется Интерпретатор. Интерпретатор и делает эту незаметную компиляцию. Языки для которых требуется интерпретатор назвали Интерпретируемыми.

Главное отличие компилируемых языков от интерпретируемых в скорости выполнения программ. Считается, что программы написанные на компилируемых языках выполняются быстрее чем на интерпретируемых. Но сам процесс написания и тестирования интерпретируемой программы проходит проще, так как нет необходимости в промежуточном шаге компиляции.

Для некоторых языков, таких как С#, компиляция проходит особым образом в два этапа. Дело в том, что в среде .Net программа на C# после компиляции становится не набором команд микропроцессора, а преобразуется в программу на еще одном промежуточном языке CIL — Common Intermediate Language, (ранее называвшийся MSIL — Microsoft Intermediate Language), которая для запуска передается на вход Just-In-Time (JIT) компилятору .Net. Такая последовательность преобразований из одного языка в другой позволяет не заботиться о типе микропроцессора установленного в компьютере и дает большую универсальность для работы программ.

Похожим образом, программа на TypeScript сначала компилируется в текстовую программу, или, как говорят, в код на JavaScript, который затем уже может быть выполнен интерпретатором JavaScript. Такое усложнение позволяет воспользоваться преимуществами строгой типизации данных и отловом ошибок на этапе компиляции, которые доступны в TypeScript.

3. Универсальные и специализированные

Классификация говорит сама за себя. Есть языки, на которых можно в принципе написать любую программу, но не всегда это можно сделать, например, быстро. Или такая программа не обязательно будет оптимально быстро работать. Типичный универсальный язык всех времен и народов: С++. И в этом его большой плюс. А, может, даже два плюса )).

Специализация в языках программирования касается, как правило, либо предметной области, например, математические вычисления (Fortran, F#), искусственный интеллект (LISP), веб-разработка (PERL, PHP), компьютерные игры (Unity, Lua), бухгалтерия (1С) и т.д., либо какой-то технологии программирования, например, многопоточность как в языке Cи-Омега (Cw) или способ записи операторов как в F#.

Для разных областей приложений создаются свои языки или скрипты. Особенно это относится к компьютерным играм, в которых переплетаются сразу несколько видов искусства, науки и технологии. Но системы разработки игр также используют и уже известные языки, например, Python в системе нарративных игр Ren’Py или язык Swift для устройств Apple.

Универсальные: семейство Pascal/Delphi, C/C++, C#, Java
Специализированные:
Математические вычисления: Fortran, F#
Математическое моделирование: MatLab, Wolfram (Mathematica)
Искусственный интеллект: LISP,
На основе передачи сообщений: Small Talk,
Многопоточные приложения Cw,
Веб-разработка: Perl, PHP, JavaScript
Базы данных: SQL
Компьютерные игры: Lua, Unity, Godot, Twine
Компьютерная графика: MEL (Maya), MAX Script (3ds Max)
Бухгалтерия: 1С

4. Алгоритмические и Языки описания данных

Алгоритмические: Pascal, C++, Java, C#
Языки описания данных: XML, XAML, JSON, HTML, DDL SQL

Алгоритмические языки, конечно, тоже умеют описывать данные, но в основном предназначены для создания больших и сложных программ, которые описывают действия, то есть алгоритмы.

Языки же описания данных предназначены только для описания данных для разных типов приложений. Эти языки можно считать необходимой нагрузкой к обычным алгоритмическим языкам. Например, если вы учите JavaScript для разработки веб-приложений, то скорее всего вам придется также изучить и синтаксис каскадных таблиц стилей CSS и язык описания данных JSON, в формате которого удобно передавать данные между веб-сервером и клиентом.

Или, например, язык работы с базами данных SQL, по сути является языком для обработки и получения данных, но также включает в себя раздел Data Definition Language или Язык Описания Данных.

Вообще, на способы описания и управления данными сейчас разработчикам приходится обращать внимания, пожалуй, не меньше чем на описание алгоритмов.

5. Низкоуровневые и Высокоуровневые

Низкоуровневые: Assembler, CIL,
Высокоуровневые: любой объектно-ориентированный или поддерживающий сложные типы данных язык.

Этот тип классификации, хоть и немного теряет актуальность, поскольку подавляющее большинство языков теперь можно отнести к высокоуровневым, но все еще имеет место, поскольку низкоуровневые языки существуют.

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

Читайте также:  Активные галактики масса размер светимость состав таблица

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

Язык CIL, который уже упоминался выше, это в некотором смысле аналог ассемблера, но для системы .Net. Команды CIL преобразуются JIT-компилятором .Net в наборы инструкций микропроцессора в зависимости от типа самого микропроцессора, на котором установлен .Net. Как правило, программа на CIL это результат компиляции программы написанной на одном из языков высокого уровня .Net.

Кроме того, CIL это особый язык. Писать программу непосредственно на нем может оказаться слишком долго. Программы на этом языке генерируются компиляторами и используются программным обеспечением платформы .Net. Поэтому он считается языком программирования скорее для машины чем для человека.

6. Объектно-Ориентированные и Структурные языки программирования

Появление объектно-ориентированного программирования, сокращенно ООП, примерно со второй половины 80-х годов 20-го века стало настоящей технологической революцией. Это был буквально переворот, сейчас объясню почему. До ООП были популярны языки структурного программирования. И программисты были вполне счастливы писать программы на структурных языках высокого уровня, потому что в свое время это тоже было колоссальным шагом вперед.

Дело в том, что компьютер удалось создать только после титанических усилий таких гениев как Алан Тьюринг, который разработал свою теорию — машину Тьюринга, на основе которой и работают все числовые компьютеры в наши дни. Принцип машины Тьюринга, вкратце, состоит в том, что в оперативной памяти записана последовательность команд микропроцессора, в том числе команд условных или безусловных переходов на другие команды. Эти переходы на ассемблере называются JMP (англ.: jump — прыжок, переход), а в языках высокого уровня обозначаются командой GOTO (англ.: go to — перейти к чему-л.).

Для программирования компьютера первоначально существовал язык Ассемблер, команды которого почти один в один соответствуют командам микропроцессора. Теоретически, на Ассемблере можно написать любую программу, но практически перенос абстракций прикладных задач на него совсем не простое дело.

Для программирования прикладных задач, примерно с начала 70-х годов 20-го века и появилось структурное программирование, для создания которого потребовались усилия других гениев, таких как Никлаус Вирт, создатель языка Паскаль и Эдсгер Дейкстра, который первым написал о необходимости избавляться от оператора GOTO в языках высокого уровня и предложил решение как это сделать с помощью трех типов операторов и функций.

На практике это вылилось в появление языков программирования, таких как Basic, С, Паскаль, Algol, Cobol, Fortran, PL1. Разработка программ методом «сверху вниз» в структурном программировании превратилась в сплошное удовольствие. Суть ее состояла в написании набора функций, содержащих подфункции, которые можно вызывать, подставляя на вход нужные данные и получая соответствующий результат.

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

Для небольших задач типа сортировки данных или нахождения кратчайшего пути структурное программирование подходило идеально. Были найдены решения для большинства сложных алгоритмических задач. Появились фундаментальные труды, такие как многотомник “Искусство программирования” Дональда Кнута, который до сих пор считается настольной книгой для программистов.

Однако, увеличение сложности программ в результате привело к появлению и бо́льших шансов на внесение ошибок в программы, так как возможность подставлять любые данные на вход процедурам и функциям влекло за собой побочные эффекты. Так, например, в 1999 году космический аппарат NASA «Mars Climate Orbiter» потерпел крушение в из-за ошибки в программе — подстановки неправильных данных.

В результате появилась новая концепция объектно-ориентированного программирования, в котором во главу угла ставится, как я его называю, принцип актуальности данных, а функции становятся как бы приложением к данным, которые они должны обрабатывать. Объект это, в первую очередь, набор данных со своими функциями. В ООП вводятся ограничения на доступ функций к «чужим» данным, что уменьшает возможность непреднамеренного изменения данных и резко повышает надежность программ.

После появления объектно-ориентированных языков программирования, таких как С++, Object Pascal, Java, С#, а также новых аппаратных возможностей компьютеров, объемы программ и данных для них увеличились многократно, если не на порядки, что легко оценить хотя бы по объемам дистрибутивов программ, которые перестали помещаться сначала на дискеты, а потом и на компакт диски. А программирование снова как бы встало с головы на ноги.

Update 24.02.2021
См. также видео-версию этой главы.

7. Сопутствующие Фреймворки (Frameworks), Библиотеки и Технологии

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

Примеры: платформа или фреймворк .Net. Языки программирования, такие как C#, F#, работают только на этой платформе и понимание особенностей платформы важно для понимания того как работают программы, написанные на этих языках.

Для использования языка С++ от Microsoft для первых 32-х битных версий Windows программистам для создания оконных приложений также приходилось изучать библиотеку MFC.

Для разработки веб-приложений с помощью технологии MVC от Microsoft программистам также потребуется язык разметки веб-страниц Razor.

Для создания современных приложений на универсальной платформе Microsoft может потребоваться язык разметки XAML.

Другие примеры:
Ruby on Rails — серверная платформа разработки веб-приложений.
Для компьютерных игр, такие как Unity, Cocos, Unreal Engine.
Для 3D графики: OpenGL, DirectX.

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

Выводы

В принципе, чем больше языков знает программист, тем увереннее себя чувствует как профессионал. Но в наше скоростное время возможно и такое, что версия языка может потерять свою актуальность буквально за полтора-два года. Например, у языка TypeScript c 2015 по 2019 год, то есть примерно за 5 лет, было выпущено, внимание, более 20-ти обновлений.

Если человек уже определился с прикладной областью, с операционной системой, с компанией в которой будет работать, то выбор языка программирования упрощается. Правда, компании могут иметь довольно экзотические требования, от которых у начинающих может просто рябить в глазах. Например, такой стек языков и технологий в описании вакансии одной из крупных российских компаний: .Net Core 3.1, Java 14, Kotlin, ElasticSearch, Lucene, Kafka, Redis, PostgreSQL, MSSQL, Airflow, Spark, Kubernetes, GitLab CI, Prometheus, Graylog, Jaeger, Grafana. Этот набор так или иначе затрагивает по крайней мере четыре языка программирования: Java, Kotlin, SQL и Lua.

Если же с компанией еще не определились, то можно начать с одного из универсальных языков программирования. Из-за повсеместного проникновения интернета, для программиста желательно хотя бы в общих чертах представлять себе что такое язык HTML, а также сопутствующие языки описания данных типа XML и JSON. Желательно также иметь представление о языке управления базами данных SQL.

Прошло то время, когда работать с одной и той же версией языка программирования можно было десятилетиями. В наше время особенность работы программиста состоит в постоянном изучении новых языков и технологий. Курсы по программированию могут быть хорошим трамплином, но основной опыт программисты получают в процессе работы, как бы учась и работая одновременно.

И напоследок, буквально за несколько лет как грибы после дождя стали появляться системы визуального программирования без программистов, например для создания веб-сайтов, такие как WordPress, Wix, Bitrix24. Для обычных пользователей они позволяют выбрать дизайн, подключиться к данным и самому запрограммировать бизнес-процессы.

Глядя на эти системы может сложиться впечатление, что программисты скоро окажутся не нужны. Но отгадайте, кто создает все эти системы программирования без программистов? Те же программисты с помощью все тех же обычных языков программирования.

Источник

Какой язык программирования выбрать исходя из требований к проекту?

Выясним, какой язык программирования нужно выбрать начинающим любителям электроники, оценивая требования к проекту с помощью простого метода.

Выбор языка, на котором вы пишете программы, невероятно важен — он поможет определить, будет ли проект успешным или нет. В этой статье мы рассмотрим общие требования к проектам и языкам, которые соответствуют этим проектам.

Планирование наперед

При первом запуске проекта очень легко увлечься, но это часто приводит к неудачному итогу. Такие ошибки, которые могут привести к отсутствию планирования, включают:

  • потраченное время на обучение,
  • неправильное проектирование,
  • увеличение форм-фактора,
  • постоянные правки,
  • повреждение деталей.

Но в этом всем есть точно одна проблема, которой не уделяется особое внимание на старте — какой язык программирования следует использовать. Ваш следующий проект может использовать компьютер и микроконтроллер, а вам обязательно потребуется что-то запрограммировать, так какой язык вы выберете?

Многие новички сразу бегут в поисковики и там набирают свои вопросы:

  • Какой самый хороший язык программирования?
  • Является ли C лучше, чем Java?
  • Какой язык мне лучше учить?
  • и т.д.

Эти вопросы довольно правильные, но они не обязательно дают правильные ответы, когда вы только начинаете. Почему? Ответ прост. Сравнение таких языков похоже на сравнение молота с настольной пилой. Один инструмент будет хорош для набивки гвоздей, в то время как другой хорош для резки дерева!

Итак, какой язык вы должны использовать для проекта? Ниже приведен метод оценки требований вашего проекта, чтобы определить, какой язык может быть лучше для вас.

Таблица сравнения языков

Чтобы помочь выбрать язык, вы можете использовать приведенную ниже таблицу в которой перечислены некоторые из наиболее распространенных языков, их преимущества, а также области, которые создают больше проблем.

  • Шаг 1. Выпишите свои требования
  • Шаг 2. Оцените свои приоритетные требования по баллам в таблице
  • Шаг 3. Оцените свои требования с низким приоритетом по баллам в таблице
  • Шаг 4. Суммируйте свои баллы и сравните лучшие 2 языка

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

Затем, используя таблицу, оценивайте каждый язык в соответствии с требованиями проекта, а язык с наивысшим баллом, скорее всего, будет оптимальным.

Опытные программисты знают, как заставить язык работать под требования, но наше руководство предназначено для тех, кто еще мало в этом разбирается и хочет на старте выбрать правильное направление.

Оценка языка программирования

Скорость обработки: как быстро программа будет выполнена.

Читаемость: насколько сложно будет читать код.

Простота: насколько легко будет работать и использовать библиотеки.

GUI (графический интерфейс пользователя): как легко будет работать с приложением графического интерфейса пользователя.

Графика (2D): простота использования 2D-графики и ее скорости.

Графика (3D): простота использования 3D-графики и ее скорости.

Кросс-платформенность: как легко будет запускать программу на разных платформах (Windows, Mac).

Специальный процессор: насколько полезен язык для устройства, такого как микроконтроллер.

Суммируем полученные баллы

Самый простой метод использования таблицы включает в себя поиск ваших требований, а затем суммирование баллов, чтобы посмотреть, какой язык выходит на первое место.

Однако некоторые требования могут быть более важными, чем другие, поэтому вы также можете добавить вес к значениям оценки в зависимости от важности критериев.

Например, если скорость обработки в два раза важнее, чем читаемость, вы умножаете показатели скорости обработки на 2.

Примечание. Почему Python имеет низкий показатель удобочитаемости? Некоторым читателям может быть интересно, почему у Python довольно низкий балл читаемости в сравнении с другими языками. Для этого есть причина!

Многие языки программирования используют фигурные скобки для разделения кода и имеют четкие точки входа (например, main()). Однако Python этого не делает, и это может сделать код похожим на блоки текста, которые гораздо труднее прочитать. Скобки четко показывают код-блок, а точка с запятой в конце строк, указывают, что код на этой строке является инструкцией вместо описания. В то время как Python гордится своей читабельностью, читатели должны знать, что большие программы на Python могут стать сложными для чтения.

Одним из последних моментов на Python является использование «self». Если вы когда-либо программировали классы на любом другом языке вы поймете о чем речь.

Источник

Adblock
detector