Вторник, 16.04.2024
Ukrainiancontet.at.ua
Меню сайта
Категории раздела
Програмування [35]
Мови веб-програмування [5]
О компании [0]
Новости игры
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2015 » Октябрь » 25
Автоматное програмування — це парадигма програмування, при використанні якої програма або її фрагмент осмислюється як модель якогось формального автомата.

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

Визначальними для автоматного програмування є наступні особливості:
часовий період виконання програми розбивається на кроки автомата, кожна з яких являє собою виконання певної (однієї і тієї ж для кожного кроку) секції коду з єдиною точкою входу; така секція може бути оформлена, наприклад, у вигляді окремої функції і може бути розділена на підсекції, відповідні окремим станам або категорій станів
передача інформації між кроками автомата здійснюється лише через явне безліч змінних, званих станом автомата; між кроками автомата програма (або її частина, оформлена в автоматном стилі) не може містити неявних стану елементів, таких як значення локальних змінн ... Читать дальше »
Категория: Програмування | Просмотров: 488 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Сервіс-орієнтована архітектура (SOA, англ. service-oriented architecture) — модульний підхід до розробки програмного забезпечення, заснований на використанні розподілених, слабо пов'язаних (англ. loose coupling) замінних компонентів, оснащених стандартизованими інтерфейсами для взаємодії за стандартизованими протоколами.

Програмні комплекси, розроблені відповідно до сервіс-орієнтованою архітектурою, зазвичай реалізуються як набір веб-служб, взаємодіючих за протоколом SOAP, але існують і інші реалізації (наприклад, на базі jini, CORBA, на основі REST).

Інтерфейси компонентів в сервіс-орієнтованої архітектури інкапсулюють деталі реалізації (операційну систему, платформу, мова програмування) від інших компонентів, таким чином забезпечуючи комбінування і багаторазове використання компонентів для побудови складних розподілених програмних комплексів, забезпечуючи незалежність від використовуваних платформ та інструментів розробки, сприяючи масштабованості і керов ... Читать дальше »
Категория: Програмування | Просмотров: 491 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Реактивне програмування — парадигма програмування, орієнтована на потоки даних та розповсюдження змін. Це означає, що повинна існувати можливість легко висловлювати статичні і динамічні потоки даних, а також те, що нижележащая модель виконання повинна автоматично поширювати зміни завдяки потоку даних.

Наприклад, імперативний програмуванні присвоювання a := b + c буде означати, що змінної a буде присвоєно результат виконання операції b + c, використовуючи поточні (на момент обчислення) значення змінних. Пізніше значення змінних b і c можуть бути змінені без будь-якого впливу на значення змінної a.

У реактивному ж програмуванні значення a буде автоматично перераховано, ґрунтуючись на нових значеннях.

Сучасні табличні процесори являють собою приклад реактивного програмування. Комірки таблиці можуть містити рядкові значення або формулу виду «=B1+C1», значення якої буде обчислено виходячи з значень відповідних комірок. Коли значення одного із залежних клі ... Читать дальше »
Категория: Програмування | Просмотров: 515 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Подієво-орієнтоване програмування (англ. event-driven programming; надалі СОП) — парадигма програмування, в якій виконання програми визначається подіями — діями користувача (клавіатура, миша), повідомленнями інших програм і потоків, подіями операційної системи (наприклад, надходженням мережевого пакету).

СОП можна також визначити як спосіб побудови комп'ютерної програми, при якому в коді (як правило, в головній функції програми) явним чином виділяється головний цикл програми, тіло якого складається з двох частин: вибірки події та обробки події.

Як правило, в реальних завданнях виявляється неприпустимим тривале виконання обробника події, оскільки при цьому програма не може реагувати на інші події. У зв'язку з цим при написанні подієво-орієнтованих програм часто застосовують автоматное програмування.

Подійно-орієнтованого програмування, як правило, застосовується в трьох випадках:
при побудові користувальницьких інтерфейсів (в тому ч ... Читать дальше »
Категория: Програмування | Просмотров: 440 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

В інформатиці паралелізм — це властивість систем, при якій кілька обчислень виконуються одночасно, і при цьому, можливо, взаємодіють один з одним. Обчислення можуть виконуватися на декількох ядрах одного чіпа витісняють з поділом часу потоків на одному процесорі, або виконуватися на фізично окремих процесорах. Для виконання паралельних обчислень розроблено ряд математичних моделей, у тому числі мережі Петрі, обчислення процесів, моделі паралельних випадкових доступів до обчислень і моделі акторів.

Слід зазначити, що в англомовній літературі для опису поняття паралелізму в комп'ютерних науках використовуються два терміни: Concurrency (одночасність) і Parallelism (паралелізм). Між ними є деяка відмінність, про що буде сказано нижче. У російськомовній літературі для обох цих термінів використовується тільки один переклад: паралелізм, що створює певні термінологічні труднощі.

Оскільки обчислення в паралельних системах взаємодіють один з одним, число можливих шл ... Читать дальше »
Категория: Програмування | Просмотров: 431 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

В інформатиці відображення або рефлексія (холоним інтроспекції, англ. reflection) означає процес, під час якого програма може відслідковувати і модифікувати власну структуру і поведінку під час виконання. Парадигма програмування, покладена в основу відображення, називається рефлексивним програмуванням. Це один з видів метапрограммирования[].

У більшості сучасних комп'ютерних архітектур програмні інструкції (код) зберігаються як дані. Різниця між кодом і даними в тому, що виконуючи код, комп'ютери обробляють дані. Тобто інструкції виконуються, а дані обробляються так, як наказано цими інструкціями. Однак програми, написані з допомогою деяких мов, здатні обробляти власні інструкції як дані і виконувати, таким чином, рефлексивні модифікації. Такі самомодифицирующиеся програми в основному створюються з допомогою високорівневих мов програмування, що використовують віртуальні машини (наприклад, Smalltalk, скриптові мови). У меншій мірі рефлексія використовується у мовах ... Читать дальше »
Категория: Програмування | Просмотров: 413 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Автоматизація процесу програмування — відсторонення людини від процесу написання програмного коду, як повністю, так і частково. Досягається шляхом:
розробки інструментарію для формулювання і постановки завдання від людини машині (людино-машинну мову),
поданням коштів даного інструменту в термінах області спеціалізації людини-оператора,
розробки аналізатора вхідних даних (отриманих засобами інструментарію описаного вище) і генерації коду кінцевого мовою машинного рівня,
інтеграції систем обліку і корекції допущених помилок (системи ШІ).
Категория: Програмування | Просмотров: 386 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Мовно-орієнтоване програмування (ЯОП) (англ. Language Oriented Programming), також Расходящаяся розробка (англ. middle out development), також метаязыковая абстракція[en], Розробка, яка спирається на предметно-специфічну мову (англ. DSL-Based Development)[] — парадигма програмування, полягає в розбитті процесу розробки програмного забезпечення на стадії розробки предметно-орієнтованих мов (DSL) та опису власне рішення завдання з їх використанням. Стадії можуть вестися послідовно або паралельно, одноразово або рекурсивно; DSL можуть бути реалізовані залежно або незалежно від базової мови[⇨] і мати одну або безліч реалізацій.

ЯОП призначений для поділу складнощів: машино-орієнтована частина коду (низькорівнева функціональність) і людино-орієнтована (власне рішення прикладної задачі) розробляються незалежно один від одного, що виключає експонентний ріст результуючої складності розробки всього проекту і вирішує проблему складності як фундаментальну проблему програмува ... Читать дальше »
Категория: Програмування | Просмотров: 424 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Метапрограмування — вид програмування, пов'язаний зі створенням програм, які породжують інші програми як результат своєї роботи[1] (зокрема, на стадії компіляції їх вихідного коду), або програм, які змінюють себе під час виконання (самомодифицирующийся код). Перше дозволяє одержувати програми при менших витратах часу і зусиль на кодування, ніж якщо б програміст писав їх вручну цілком, друга дозволяє поліпшити властивості коду (розмір і швидкодія).

При цьому підході код програми не пишеться вручну, а створюється автоматично програмою-генератором на основі іншої, більш простої програми.

Такий підхід набуває сенс, якщо при програмуванні виробляються різні додаткові правила (більш високорівневі парадигми, виконання вимог зовнішніх бібліотек, стереотипні методи реалізації певних функцій тощо). При цьому частина коду втрачає змістовний сенс і стає лише механічним виконанням правил. Коли ця частина стає значною, виникає думка задавати вручну лише змістовну частину ... Читать дальше »
Категория: Програмування | Просмотров: 423 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Програмування потоків даних (англ. dataflow programming) — підхід до програмування, при якому програма моделюється у вигляді орієнтованого графа потоку даних між операціями, подібного діаграми потоку даних. Розвивається в програмної інженерії з 1970-х років[].

Природне візуальне уявлення поряд з підтримкою паралелізму є двома привабливими для розробників властивостями даної парадигми[]. Зрозуміло, програмування потоків даних необов'язково пов'язане з інструментами візуального програмування.

Програмісти Unix знайомі з програмуванням потоків даних, так як в командній оболонці цієї системи застосовуються іменовані канали та інші подібні засоби межпроцессного взаємодії

Основою роботи програм потоків даних (dataflow) є активація обчислень на вузлах (node), які можна вважати чорними ящиками, що викликається змінами, оновленнями вхідних даних. Вузол (моделі — вершина графа) представляє з себе елемент, який здійснює обробку даних на вході, перетворюючи їх в ... Читать дальше »
Категория: Програмування | Просмотров: 445 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Програмування в обмеженнях (або програмування обмеженнями) є парадигмою програмування, в якій відношення між змінними вказані у формі обмежень. Обмеження відрізняються від загальних примітивів мов імперативного програмування тим, що вони визначають не послідовність кроків для виконання, а властивості шуканого рішення. Це робить програмування в обмеженнях формою декларативного програмування. Обмеження, які використовуються в програмуванні в обмеженнях, бувають різних видів: ті, які використовуються в задачі задоволення обмежень (наприклад, «А або В істинно»), ті, які вирішуються симплекс-алгоритму (наприклад, «x ≤ 5») та інші. Обмеження, як правило, вбудовані в мову програмування або здійснюються через окремі програмні бібліотеки.

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

Програмування в обмеженнях почалося з ... Читать дальше »
Категория: Програмування | Просмотров: 465 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

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

Найвідомішим мовою логічного програмування Prolog є.

Першою мовою логічного програмування мова Planner (див. огляд Шапіро (Ehud Shapiro) [1989]), у якому була закладена можливість автоматичного виводу результату даних і заданих правил перебору варіантів (сукупність яких називалася планом). Planner використовувався для того, щоб знизити вимоги до обчислювальних ресурсів (з допомогою бэктрекинга — пошуку з поверненням) і забезпечити можливість виводу фактів, без активного використання стека. Потім був розроблений мовою Prolog, який не вимагав плану перебору варіантів і був, в цьому сенсі, спрощенням мови Planner.

Ві ... Читать дальше »
Категория: Програмування | Просмотров: 458 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

РЕФАЛ (Рекурсивних Функцій Алгоритмічний) — один з найстаріших функціональних мов програмування, орієнтований на символьні обчислення: опрацювання символьних рядків (наприклад, алгебраїчні викладення); переклад з однієї мови (штучного чи природного) на інший; вирішення проблем, пов'язаних з штучним інтелектом. Поєднує в собі математичну простоту з практичною спрямованістю на написання великих і складних програм.

Відмінною рисою мови є використання зіставлення зі зразком і переписування термів як основного способу визначення функцій.

Програма на Рефале може складатися з одного або декількох модулів (файлів), кожен з яких, у свою чергу, складається з функцій.

Рефал-функція являє собою упорядкований набір речень, що складаються із зразка та шаблону. На вхід функції подається деякий вираз; обчислення функції полягає в зіставленні вираження почергово зразками, взятими з першого, другого і т. д. пропозицій. Якщо чергове зіставлення проходить успішно, то на ... Читать дальше »
Категория: Програмування | Просмотров: 445 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Продовження (англ. continuation) являє стан програми в певний момент, який може бути збережено і використано для переходу в цей стан. Продовження містять всю інформацію, щоб продовжити виконання програми з певної точки. Стан глобальних змінних зазвичай не зберігається, однак для функціональних мов це несуттєво (вибіркове збереження/відновлення значень глобальних об'єктів в Scheme досягається окремим механізмом dynamic-wind). Продовження схожі на goto Бейсика або setjmp/longjmp Сі, так як також дозволяють перейти в будь-яке місце програми. Але продовження, на відміну від goto, дозволяють перейти тільки на ділянку програми з певним станом, яке має бути збережено заздалегідь, у той час, як goto дозволяє перейти в ділянку програми з неинициализированными змінними.

Scheme був першим промисловим мовою, в якому реалізовані повноцінні продовження. Bruce Duba ввів продовження в Standard ML.

Формально, callcc — це функція вищого порядку, що дозволяє абстрагува ... Читать дальше »
Категория: Програмування | Просмотров: 421 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Комбінаторне програмування (англ. function-level programming) — це парадигма програмування, не вимагає явного згадки аргументів визначається функції (програми) і використовує замість змінних комбінатори і композицію функцій (але не λ-абстракція). Таким чином комбінаторне програмування можна вважати особливою різновидом функціонального. Різновидом комбінаторного можна вважати конкатенативное програмування.

У мовах J і K (сучасних різновидах APL) цей підхід відомий як неявне програмування (англ. tacit programming).

Ось класичний приклад на мові J — визначення функції (в термінах J — дієслова) для обчислення середнього арифметичного:

avg =. +/ % #

Тут +/ — монада (унарная операція) підсумовування списку, % діада (бінарна операція) розподілу, а # діада взяття довжини списку. Дана конструкція (пропозиція мови J) читається «середнє є сума, поділена на довжину». Подібні конструкції з трьох функцій-дієслів у J прийнято називати «в ... Читать дальше »
Категория: Програмування | Просмотров: 402 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Аппликативное програмування — один з видів декларативного програмування, у якому написання програми полягає в систематичному здійсненні застосування одного об'єкта до іншого. Результатом такого застосування знову є об'єкт, який може брати участь в застосуваннях як у ролі функції, так і в ролі аргументу і так далі. Це робить запис програми математично ясною. Той факт, що функція позначається виразом, свідчить про можливість використання значень функцій — функціональних об'єктів — на рівних правах з іншими об'єктами, які можна передавати як аргументи, або повертати як результат обчислення інших функцій.

Моделі апплікатівного програмування ґрунтуються, як правило, на комбінаторної логіки або λ-численні. У комбінаторної логіки єдиний метаоператор — аплікація, забезпечує застосування одного об'єкта до іншого, λ-числення, крім аплікації, є метаоператор λ-абстракції, за допомогою якого можливо побудова функцій, виразів, які, в свою чергу, можна застосовувати до інших об' ... Читать дальше »
Категория: Програмування | Просмотров: 417 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Чистота (щодо мови програмування) — відсутність побічних ефектів. Мова програмування є чистим у тому випадку, якщо всі функції в програмах цієї мови є чистими.

Програми, написані на чистих мовах програмування, простіше налагоджувати, верифікувати, в них простіше виявляти помилки, які не вдалося виявити за допомогою тестування. Програми на чистому мовою програмування простіше переписувати, уникаючи внесення помилок. У той же час, сам процес планування програми з розрахунком на чистоту складніше.

Ще однією важливою перевагою чистих функціональних мов є паралелізм. Оскільки всі функції для обчислень використовують тільки свої параметри, можна організувати обчислення незалежних функцій у довільному порядку або паралельно, на результат обчислень це не вплине. Паралелізм може бути організований не тільки на рівні компілятора мови, але і на рівні архітектури технічних засобів. Існують експериментальні комп'ютери, засновані на подібних архітектур, наприклад Lisp-ма ... Читать дальше »
Категория: Програмування | Просмотров: 388 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Функціональне програмування — це розділ дискретної математики і парадигма програмування, в якій процес обчислення трактується як обчислення значень функцій у математичному розумінні останніх (на відміну від функцій як підпрограм в процедурному програмуванні).

Протиставляється парадигмі імперативного програмування, яка описує процес обчислень як послідовна зміна станів (у значенні, подібному такому в теорії автоматів). При необхідності, у функціональному програмуванні вся сукупність послідовних станів обчислювального процесу представляється явним чином, наприклад, як список.

Функціональне програмування передбачає обходитися обчисленням результатів функцій від вхідних даних і результатів інших функцій, і не передбачає явного зберігання стану програми. Відповідно, не припускає воно і змінюваність цього стану (на відміну від імперативного, де однією з базових концепцій є змінна, що зберігає своє значення і дозволяє змінювати його по мірі виконання алгоритму). ... Читать дальше »
Категория: Програмування | Просмотров: 578 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Аспектно-орієнтоване програмування (АОП) — парадигма програмування, заснована на ідеї поділу функціональності для поліпшення розбиття програми на модулі.

Методологія АОП була запропонована групою інженерів дослідницького центру Xerox PARC під керівництвом Грегора Кичалеса (Gregor Kiczales). Ними було розроблено аспектно-орієнтоване розширення для мови Java, що отримало назву AspectJ — (2001 рік).

Існуючі парадигми програмування — процедурне, модульне, об'єктно-орієнтоване програмування (ООП) і предметно-орієнтоване проектування — надають певні способи поділу та виділення функціональності: функції, модулі, класи, але деяку функціональність за допомогою запропонованих методів неможливо виділити в окремі сутності. Таку функціональність називають наскрізний (від англ. scattered — розкиданий або англ. tangled — переплетений), так як її реалізація розподілена по різних модулів програми. Наскрізна функціональність призводить до рассредоточенному і заплутаному кодо ... Читать дальше »
Категория: Програмування | Просмотров: 432 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Модульність в мовах програмування — принцип, згідно з яким програмний засіб (ПС, програма, бібліотека, веб-програми та ін) поділяється на окремі іменовані суті, називаються модулями. Модульність часто є засобом спрощення задачі проектування ПС і розподілу процесу розробки ПС між групами розробників. При розбитті ПС на модулі для кожного модуля вказується, що реалізовується ним функціональність, а також зв'язку з іншими модулями.[]

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

Програмний код часто розбивається на декілька файлів, кожен з яких компілюється окремо від інших. Така модульність програмного коду дозволяє значно зменшити час перекомпіляції при змінах, що вносяться лише невелика кількість вихідних файлів, і спрощує групову розробку. Також це можливість заміни окремих компонентів (таких як jar-файли, so або dll бібліотеки) кінцев ... Читать дальше »
Категория: Програмування | Просмотров: 635 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)



Структурне програмування — методологія розробки програмного забезпечення, в основі якої лежить подання програми у вигляді ієрархічної структури блоків. Запропонована в 1970-х роках Е. Дейкстрой та ін.

Згідно з цією методологією будь-яка програма будується без використання оператора goto з трьох базових управляючих структур: послідовність, розгалуження, цикл; крім того, використовуються підпрограми. При цьому розробка програми ведеться покроково, методом «зверху вниз».

Методологія структурного програмування з'явилася як наслідок зростання складності розв'язуваних завдань на комп'ютерах, і відповідно, ускладнення програмного забезпечення. У 1970-ті роки обсяги і складність програм досягли такого рівня, що традиційна (неструктурована) розробка програм перестала задовольняти потреб практики. Програми ставали занадто складними, щоб їх можна було нормально супроводжувати. Тому потрібна систематизація процесу розробки та структури програм.

Методолог ... Читать дальше »
Категория: Програмування | Просмотров: 571 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Процедурне програмування; програмування на імперативний мовою, при якому послідовно виконувані оператори можна зібрати в підпрограми, тобто більш великі цілісні одиниці коду, за допомогою механізмів самої мови[].

Процедурне програмування є відображенням архітектури традиційних ЕОМ, яка була запропонована фон Нейманом в 1940-х роках. Теоретичною моделлю процедурного програмування служить абстрактна обчислювальна система під назвою машина Тюрінга.

Виконання програми зводиться до послідовного виконання операторів з метою перетворення вихідного стану пам'яті, тобто значень вихідних даних, заключне, тобто результати. Таким чином, з точки зору програміста є програма і пам'ять, причому перша послідовно оновлює вміст останньої.

Процедурний мова програмування надає можливість програмісту визначати кожен крок у процесі рішення задачі. Особливість таких мов програмування полягає в тому, що завдання розбиваються на кроки і вирішуються крок за кроком. Використову ... Читать дальше »
Категория: Програмування | Просмотров: 443 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Імперативне програмування — це парадигма програмування, яка, на відміну від декларативного програмування, описує процес обчислення у вигляді інструкцій, що змінюють стан даних. Імперативна програма дуже схожа на накази, виражаються владним нахилом у природних мовах, тобто це послідовність команд, які повинен виконати комп'ютер.

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

Першими імперативними мовами були машинні коди — рідна мова програмування для комп'ютера. У цих мовах інструкції були вкрай прості, що знижувало навантаження на комп'ютери, однак утруднювало написання великих програм. У 1954 році з'явився перший «людський» високорівнева мова програмування — FORTRAN, розроблений Джоном Бэкусо ... Читать дальше »
Категория: Програмування | Просмотров: 903 | Добавил: Admin | Дата: 25.10.2015 | Комментарии (0)

Вход на сайт

Поиск
Интернет
Здоровье
Афиша
Ситуация на восток
Религия
Архив записей
Каталог сайтов Всего.RU
Рейтинг@Mail.ru
Copyright Ukrainiancontet.at.ua © 2024
uCozЯндекс.Метрика