Скелетное программирование - это стиль компьютерного программирования, основанный на простых высокоуровневых программных структурах и так называемом фиктивном коде . Каркасы программ напоминают псевдокод , но позволяют анализировать , компилировать и тестировать код. Фиктивный код вставляется в каркас программы для имитации обработки и предотвращения сообщений об ошибках компиляции . Он может включать в себя пустые объявления функций или функции, возвращающие правильный результат только для простого тестового примера, когда известен ожидаемый ответ кода.
Скелетное программирование способствует нисходящему подходу к проектированию, когда разрабатывается и кодируется частично функциональная система с полными высокоуровневыми структурами, а затем эта система постепенно расширяется для выполнения требований проекта. Каркасы программ также иногда используются для высокоуровневых описаний алгоритмов . Каркас программы также может использоваться в качестве шаблона, отражающего синтаксис и структуры, обычно используемые в широком классе задач.
Скелетные программы используются в шаблоне проектирования метода шаблонов, используемом в объектно-ориентированном программировании . В объектно-ориентированном программировании фиктивный код соответствует абстрактному методу , заглушке метода или фиктивному объекту . В номенклатуре вызова удаленного метода Java (Java RMI) заглушка взаимодействует на стороне клиента со скелетом на стороне сервера. [1]
Класс скелет является скелетом из класса , который используется в программной инженерии . Он содержит описание ролей класса и описывает цели переменных и методов , но не реализует их. Позже класс реализуется из каркаса. Каркас также может быть известен как интерфейс или абстрактный класс с языками, которые следуют полиморфной парадигме.
Программное обеспечение, используемое сегодня в компьютерах [2] , часто бывает сложным по целому ряду причин. Это может означать, что не только один программист может разработать его, или что другие модули или части должны быть импортированы отдельно. Программы также могут быть слишком сложными сами по себе, некоторые из них имеют несколько методов, одновременно обращающихся к одной переменной или даже генерирующих пиксели для дисплеев. Скелетный код используется, чтобы помочь программистам разработать свой код с наименьшим количеством ошибок во время компиляции .
Скелетный код чаще всего встречается в параллельном программировании , но также применяется в других ситуациях, например, в документации на языках программирования . Это помогает упростить основные функции потенциально сбивающего с толку метода. Его также можно использовать для того, чтобы небольшая функция в более крупной программе работала временно без полной функциональности. Этот метод программирования проще, чем написание полной функции, поскольку эти скелетные функции не обязательно должны включать основные функции и вместо этого могут быть жестко запрограммированы для использования во время разработки. Обычно они включают синтаксически правильный код для описания метода, а также комментарии, указывающие на работу программы. Это не всегда необходимо для вызова фрагмента кода скелета текста.
Псевдокод чаще всего встречается при разработке структуры нового программного обеспечения . Это простое английское изображение определенной функции в более крупной системе или даже может быть представлением всей программы. Псевдокод похож на каркасное программирование, однако отличается тем, что псевдокод является в первую очередь неформальным методом программирования. [3] Фиктивный код также очень похож на этот, где код используется просто как заполнитель или для обозначения предполагаемого существования метода в классе или интерфейсе.
Компьютерные программисты чрезвычайно зависимы от псевдокода, настолько, что он оказывает ощутимое влияние на их психику . [3] Типичный программист настолько привязан к идее написания упрощенного кода каким-либо образом, будь то написание псевдокода или скелетного кода, или даже просто рисование диаграммы, что это оказывает измеримое влияние на то, насколько хорошо они могут писать свои окончательная реализация. Это было обнаружено в ряде приложений, когда разные программисты работали на разных языках и с разными парадигмами программирования .
Этот метод разработки программ также чаще всего выполняется ручкой и бумагой, что еще больше отодвигает текст от того, что на самом деле должно быть реализовано. Скелетное программирование имитирует это, но отличается способом написания в интегрированной среде разработки или текстовых редакторах . Это способствует дальнейшему развитию программы после начальной стадии проектирования . Скелетные программы также позволяют работать с упрощенными функциями, если они запущены.
Скелетное программирование может быть реализовано в ряде различных программных приложений.
Все, если не большинство языков программирования, имеют скелетный код, используемый для помощи в определении всех встроенных функций и методов . Это предоставляет простые средства для начинающих программистов, чтобы понять синтаксис и предполагаемую реализацию написанных методов.
Java , объектно-ориентированный язык , в значительной степени ориентирован на структурированную страницу документации с полностью разделенными методами для каждой объектной части пакетов Java. [4] Объектно-ориентированные языки ориентированы на иерархическую структуру своих реализаций, а не на простой нисходящий подход, характерный для других языков. «Объекты» хранят в себе данные и переменные, что позволяет писать более эффективную программу. У этих объектов есть отдельные функции, которые могут обращаться к внутренним переменным, известным как методы.
Каждый метод определяется в одном и том же формате, при этом имя метода, а также синтаксис, который будет использоваться в интегрированной среде разработки, четко видны в верхней части блока. Поскольку в Java особое внимание уделяется области видимости , типам данных и наследованию , этот синтаксис чрезвычайно полезен для начинающих, если не для всех программистов. Далее следует подробное объяснение работы метода с указанием ошибок ниже.
Python имеет аналогичный подход к документированию своих встроенных методов, однако имитирует отсутствие фиксации языка на области видимости и типах данных. [5] В этой документации есть синтаксис каждого метода, а также краткое описание и пример типичного использования метода или функции. Скелетный код, представленный в примере, дает программистам быстрое понимание функции.
Классы, написанные сторонними разработчиками, в основном как часть библиотек, также демонстрируют свое программирование в виде скелетного кода. Это помогает информировать всех, кто плохо знаком с библиотекой, о том, как работают функции и методы. P5.Js использует этот формат на своей странице документации, чтобы объяснить предполагаемое использование определенных включенных функций. [6] Тем не менее, это отличается от документации по языку программирования, где для отображения параметров используется скелетный код, а не все возможные варианты использования метода.
Интерфейсы естественного языка (NLI) чаще всего встречаются в ситуациях, когда программисты пытаются принять ввод , обычно называемый в разговорной речи (без использования специального жаргона языка программирования ), и использовать его для создания программы или метода. Реализация этого использует небольшой набор скелетного кода для обозначения функции, работающей в фоновом режиме. [7]
Другие формы NLI используют разные формы ввода, от других пользователей, говорящих на разных языках, до ввода на основе жестов для получения очень похожего результата. Поскольку языки программирования разрабатываются и пишутся в основном на английском языке, людям, говорящим на других языках, сложно разрабатывать новое программное обеспечение. NLI использовались в некоторых исследованиях [8], чтобы помочь людям в таких ситуациях. В исследовании были показаны классы, написанные на Java с использованием NLI. Это устранило необходимость изучения синтаксических правил, однако означало, что класс был написан с использованием базового набора скелетного кода.
Полиморфизм - это идеология, которая следует парадигме объектно-ориентированного программирования , где методы могут быть переопределены или перегружены (методы с тем же именем в дочернем классе, которые будут иметь приоритет над методом, написанным в родительском классе). Определение методов основано на каркасной структуре, определяемой синтаксисом языка. [9]
Очень похоже на реализацию класса, скелетный код может использоваться для определения методов, которые являются частью интерфейса . Интерфейс - это, по сути, план класса, который позволяет строго объектно-ориентированным языкам (таким как Java ) использовать классы из разных пакетов без необходимости полного понимания внутренних функций. Интерфейсы просто определяют методы, которые должны присутствовать в классе, позволяя любому другому использовать эти методы или реализовать класс для своих личных нужд.
общедоступный скелетExample ();
Абстрактный класс почти такой же , как реализации класса, однако в зависимости от языка, по меньшей мере , один метод определен как абстрактный. Это означает, что любые дочерние элементы этого класса (любые классы, которые расширяют или реализуют) должны иметь для этого определенный метод. Абстрактные классы имеют очень похожий стиль определения на интерфейсы, однако ключевое слово «abstract» обычно используется для определения того факта, что его необходимо реализовать в дочерних классах.
публичный абстрактный скелетExample ();
В этих примерах используется синтаксис Java.
Параллельное программирование - это одновременная работа нескольких функций, которая чаще всего используется для повышения эффективности. Как правило, это самые сложные для разработки типы программ из-за их сложности и взаимосвязанности с рассматриваемым оборудованием . Многие разработчики пытались писать программы с этой базовой функциональностью [10], однако это приводило к различным результатам.
Структуры алгоритмического каркаса используются в параллельном программировании для абстрактного описания рассматриваемых методов для дальнейшей разработки. Фреймворки не ограничиваются одним типом, и каждый из этих типов имеет разные цели для повышения эффективности программы разработчика. Их можно разделить на три основных типа: данные параллельных , задача параллельных и разрешения. [10]
Эти скелетные алгоритмы используются для разработки программ, которые работают с программным обеспечением на основе больших данных, обычно выявляя связи между данными для последующего использования. Алгоритмы параллельных данных включают «карты», «вилки» и «сокращение» или «сканирование».
Эти операции, как следует из их названия, работают над задачами. Каждый тип алгоритма в этом случае отличается из-за изменения поведения между задачами. Алгоритмы параллельного выполнения задач включают «последовательности», «фермы», «каналы», «если», «для» и «пока».
Эти скелеты сильно отличаются от типичных скелетов, найденных выше. Алгоритмы «разрешения» используют комбинацию методов для решения указанной проблемы. Данная проблема алгоритма может быть «семейством проблем». [10] Есть два основных типа этих скелетов: «разделяй и властвуй» или «заклейми и сковывай».
|journal=
( помощь )