1   2   3   4   5   6   7   8   9   10
Ім'я файлу: магіст-Данещук-фініш-АПДЕЙТ.docx
Розширення: docx
Розмір: 1908кб.
Дата: 18.11.2021
скачати
Пов'язані файли:
2 diplom - гаврилов.doc



1.4 Аналіз типового інтернет-додатку управління підприємством


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



Рисунок 6. Головна сторінка Інтернет-магазину Rozetka.com.ua

На даному рисунку зображено діалогове вікно Головної сторінка Інтернет-магазину Rozetka. На ній розміщується пошукова панель по сайту, розділи різних товарів, недавно переглянуті вами товари,акції які можуть зацікавити покупця.



Рисунок 7. Компютерна техніка

Обравши найбільш відвідуваний розділ «Компьтеры и ноутбуки», перед нами з’являються підрозділи різних ноутбуків, комп’ютерів, комплектуючих, програмного забезпечення, організаційної техніки



Рисунок 8. Огляд товару

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

Після того як покупець натискає на кнопку «Купить» у нього з’являється вікно «Корзина» у ній він має змогу побачити який товар обрано, кількість товару і суму яку має оплатити за товар.

Придбання товару можна продовжити або оформити замовлення.



Рисунок 9. Огляд товару перед купівлею



Рисунок 10. Оформлення замовлення

Для оформлення замовлення нам потрібно ввести свої данні такі як: прізвище ім’я по батькові, телефон (мобільний, домашній, робочий на вибір), спосіб доставки, оплата (готівкова, безготівкова на вибір), електрону адресу, також можливо підписатися на новини, акції Інтернет-магазину.

Оформивши замовлення слід зачекати, дзвінка від представників Rozetka.com.ua.

РОЗДІЛ 2. ОГЛЯД ТЕХНОЛОГІЙ, ІНСТРУМЕНТІВ ТА ЗАСОБІВ

ДЛЯ РОЗРОБКИ ВЕБ-ДОДАТКУ


2.1. Вибір мови програмування Ruby



Зупинимось детальніше на сучасних мовах програмування та, провівши аналіз, аргументуємо вибір мови Rubi.

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

Парадигма (від грецької Παράδειγμα, «приклад, модель, зразок») - це сукупність теорій, стандартів і методів, які разом представляють спосіб організації наукових знань.

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

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

- Імперативна (процедурне програмування);

- Декларативна

- функціональне програмування

- логічне програмування

- Структурна

- модульне програмування

- об'єктно-орієнтоване програмування

- Метапрограмування

- генерація коду

- самомодифікуючий код

Розглянемо ці моделі більш докладно.

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

Декларативна модель. Декларативна модель - це парадигма програмування, що характеризується принципом, в якому щось описується, а не способом його створення. Існує кілька підходів до реалізації декларативної моделі програмування:

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

  • Логічне програмування - засноване на автоматичному доведенні теореми, з використанням механізмів умовиводу інформації з використанням даних фактів та правил умовиводу на основі формального числення. Логічне програмування ґрунтується на теорії та апараті математичної логіки з використанням математичних принципів дозволів.


Структурна модель

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

  1. Будь-яка програма являє собою структуру, побудовану з базових конструкцій.

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

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

Є кілька підходів реалізують структурну модель програмування:

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

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

Клас - це тип, що описує пристрій об'єктів. Це в чистому вигляді абстрактний тип даних, створюваний програмістом.

Об'єкт - сутність в адресному просторі обчислювальної системи, що з'являється при створенні екземпляра класу.

Поняття «клас» має на увазі деякий поведінку і спосіб представлення. Поняття «об'єкт» має на увазі щось, що володіє певною поведінкою і способом представлення.

Метапрограмування.

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

Є кілька підходів реалізують модель метапрограмування:

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

Шаблони. Вирішують завдання, якщо дотримання «правил» зводиться до вставки в програму повторюваних (або майже повторюваних) шматків коду. Крім цього, мають ще ряд переваг: наприклад, допомагають повторному використанню.

Зовнішньо-мовні засоби. Застосовуються у випадках, якщо простих засобів зразок шаблонів недостатньо. Мова генератора складається так, щоб автоматично або з мінімальними зусиллями з боку програміста реалізовувати правила парадигми або необхідні спеціальні функції. Фактично, це - більш високорівнева мова програмування, а генератор - не що інше, як транслятор. Генератори пишуться, як правило, для створення спеціалізованих програм, в яких дуже значна частина стереотипного, або для реалізації складних парадигм.
Основні парадигми і підходи до вирішення завдань в сучасних мовах програмування представлені у таблиці.


Таблиця - Парадигми та підходи мов програмування

Мова
програмування



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



Основні підходи
програмування



Java

імперативна
структурна

об'єктно-орієнтований


C

імперативна

процедурний


C + +


мультипарадигмальна
метапрограмування

процедурний
об'єктно-орієнтований


PHP

мультипарадигмальна

процедурний
об'єктно-орієнтований


C #


мультипарадигмальна
імперативна


процедурний
об'єктно-орієнтований


Python


імперативна
декларативна
структурна


процедурний
функціональний
об'єктно-орієнтований


Visual Basic


імперативна
структурна

процедурний
об'єктно-орієнтований


Objective C

мультипарадигмальной


процедурний
об'єктно-орієнтований


Perl


мультипарадигмальной
декларативна


функціональний
об'єктно-орієнтований


Rubi


імперативна
структурна


процедурний
об'єктно-орієнтований


Сучасні мови програмування не обмежуються жодною парадигмою, але використовують кілька з них, або навіть мають багатопарадигму. Це пов’язано з бажанням розробників розширити сферу використання мови, зробити її мовою загального призначення, а не зосередженою на вирішенні вузького кола проблем. Використання майже у всіх мовах об'єктно-орієнтованого підходу поряд із "класичним" процедурним пов'язане із зростаючою складністю сучасних проблем. Створення великих розподілених систем просто неможливе без створення структурної моделі, а робота з об'єктами в будь-якому їх прояві значно полегшує розробку та налагодження таких систем.

Транслятори.

Оскільки текст, написаний мовою програмування, незрозумілий для комп'ютера, необхідно перевести його в машинний код. Такий переклад програми з мови програмування на мову машинного коду називається перекладом, і виконується він спеціальними програмами - перекладачами. Перекладач - це допоміжна програма, яка перетворює вихідну програму, що надається мовою програмування на вхід, у робочу програму, яка надається мовою об’єктів. В даний час перекладачі поділяються на дві основні групи: упорядники та перекладачі.

Компілятори.

Компілятор - це допоміжна програма, яка переводить на машинну мову програму, написану мовою програмування-джерела. Компілятор перетворює програму з однієї мови на іншу (найчастіше - на мову конкретного комп’ютера). У той же час команди вихідної мови істотно відрізняються за організацією та потужністю від команд машинної мови. Є мови, якими одна інструкція вихідної мови перекладається на 7-10 машинних інструкцій.

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

Інтерпретатори.

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

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

Переваги:

- Більша портативність інтерпретованих програм

- програма буде працювати на будь-якій платформі, що має відповідний інтерпретатор.

- Як правило, більш досконалі та наочні засоби діагностики помилок у вихідних кодах.

- спрощення налагодження вихідних кодів програм. Інтерпретатор дозволяє розпочати обробку даних після написання навіть однієї команди.

- Менші розміри коду порівняно з машинним кодом, отриманим після звичайних компіляторів.

Недоліки:

- інтерпретована програма не може бути виконана окремо без програми інтерпретатора. У цьому випадку сам перекладач може бути не дуже компактним.

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

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



Мова
програмування


Транслятор


Java


компіляція в байт-код інтерпретатор


C


компілятор


C + +


компілятор


PHP

компіляція в байт-код інтерпретатор


C #


компіляція в MSIL-код
інтерпретатор


Python


компіляція в байт-код інтерпретатор


Visual Basic


компіляція в MSIL-код
інтерпретатор,
компілятор


Objective C

компілятор


Perl

компіляція в байт-код інтерпретатор


Rubi


компілятор


Сучасні мови програмування однаково використовують компіляцію та інтерпретацію. Широке використання компіляторів пояснюється високою швидкістю програм, а також можливістю повноцінно використовувати всі можливості конкретних платформ і створенням "машинно-залежних" розділів коду та програм.

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

Типізація даних.

Тип - це відносно стабільний і незалежний набір елементів, який можна розрізнити в усьому розглянутому наборі. Математично тип можна визначити двома способами: Набір усіх значень належить до типу. Функція предиката, яка визначає, чи є об’єкт даним типом.

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

Так, наприклад, навіть у x86-асемблері розрізняють типи "ціле число" та "дійсне число". Це пов’язано з тим, що для номерів розглянутих типів виділяється різний обсяг пам’яті, використовуються різні регістри процесорів, а для операцій з ними використовуються різні інструкції асемблера та різні ядра процесора. У мовах програмування типи даних не завжди суворо відповідають подібним математичним типам.

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

Найчастіше використовуються типи даних:

Прості:

  • Індекс тип. Зберігає значення прямо зазначені в його описі.

  • Цілочисельний тип. Ціле число зі знаком і без знака.

  • Дійсний тип. Дійсне число з комою і з плаваючою крапкою.

  • Символьний тип. Зберігає один символ в різних кодуваннях.

  • Безліч. Збігається зі звичайним математичним поняттям безлічі.

  • Логічний тип. Приймає два значення брехня = 0 і істина = 1.

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

Компоненти (складні):

  • Масив. Зберігає індексований набір елементів одного типу.

  • Рядковий тип. Зберігає рядок символів.

  • Запис (структура). Набір різних елементів (полів), що зберігається як єдине ціле.

  • Файловий тип. Зберігає тільки однотипні значення, доступ до яких здійснюється тільки послідовно.

  • Клас, метаклассом, інтерфейс. Абстрактні типи даних в об'єктно-орієнтованому програмуванні (ООП).

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

Існує два типи перевірки типу:

Статичне введення - при якому змінна, параметр підпрограми, повертає значення функції, прив'язана до типу під час оголошення, і тип не може бути змінений пізніше. Змінна або параметр приймає, а функція повертає лише цей тип.

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

Визначення відповідності типу також є важливим моментом, для цього використовуються наступні два підходи:

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

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

Динамічна типізація.

Оскільки змінна пов'язана з типом під час присвоєння і може змінювати свій тип під час виконання програми, на етапі проектування неможливо контролювати відповідність такої змінної функціям і методам, що для цього вимагаються. Тому перекладач будує в програмі операції, пов’язані з динамічною перевіркою типу. Звідси очевидні недоліки динамічного набору тексту: Повільна швидкість виконання, пов'язана з динамічною перевіркою типу змінної перед кожним використанням. Помилки, пов’язані з помилками при використанні імені змінної.

Існує багато можливостей для простих помилок "ненавмисно", для виявлення яких потрібно, принаймні, виконати цей фрагмент коду. В об’єктно-орієнтованих мовах він нічого не робить або працює з обмеженнями автозаповнення: важко або неможливо зрозуміти, який тип змінної, і вивести набір її полів і методів. Враховуючи ці недоліки, написання складного коду вимагає особливої ​​культури програмування: угорська нотація, модульне тестування. Крім того, в таких мовах програмування немає частини інтерфейсу модуля (описи типів, заголовки процедур тощо - те, що відповідає розділу інтерфейсу в Pascal та h-файлу в C), що саме є важливою частиною документації, а іноді дозволяє взагалі обійтися без документації.

У той же час, відсутність перевірки типу на етапі написання та перекладу програми призводить до деяких переваг: Робота компілятора прискорюється, а це означає, що цикл "писати - перевіряти", що може бути значним для великих проектів. Підвищується гнучкість мови. Функція може бути реалізована, обчислює значення виразу довільного типу. Немає додаткових рядків з в'язаних з визначенням типу і навіть з оголошенням змінних. Немає операцій кастингу. Відповідно, стає простіше писати прості програми. Динамічна перевірка типу реалізується по-різному в різних мовах програмування. Завдяки цьому в деяких мовах недоліки цього типу друку можуть бути зведені до нуля, іншими способами, а також переваги.
Статична типізація.

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

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

Що стосується динамічної перевірки типу, то статична перевірка типу в мовах програмування реалізується різними способами, що за умови сильного або слабкого набору тексту може створити ряд додаткових переваг та недоліків. Типи набору тексту в сучасних мовах програмування представлено в таблиці нижче.
Таблиця - Стандартизація в мовах програмування

Мова
програмування


Типізація


Java


статична, сувора


C

статична


C + +

статична


PHP

динамічна


C #

статична, строга


Python


динамічна, строга


Visual Basic


динамічна


Objective C


статична / динамічна


Perl


динамічна


Rubi


статична


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

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

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

У звязку з вище наведеним оглядом мов програмування та провівши аналіз переваг та недоліків було обрано мову програмування Rubi.

Мова програмування Rubi.

Рубі - це інтерпретована мова. Це означає, що вихідний код програми виконується безпосередньо, а не спеціально підготовлені файли з наборами машинних інструкцій, як у випадках використання компілятора. Перекладач має ту перевагу, що є простим у використанні та незалежним від машини, оскільки на виході немає машинного коду. Таким чином, програма, створена в одній операційній системі, буде працювати незмінною в іншій. Однак зауважте, що програма, яка використовує інтерпретатор для свого виконання, як правило, значно повільніша (програма Ruby буде виконуватися приблизно в 300 разів довше, ніж аналогічна програма C).

Рубі - це ретельно збалансована мова. Її творець Юкіхіро Мацумото, відомий як "Мац", об'єднав частини своїх улюблених мов (Perl, Smalltalk, Eiffel, Ada та Lisp), щоб сформувати нову мову, в якій парадигма функціонального програмування збалансована принципами імперативного програмування. Він часто говорив, що "намагається зробити Рубі природною, але не простою" мовою, яка відображає життя. Матц спочатку подивився на інші мови для ідеального синтаксису. Згадуючи своє дослідження, він сказав: "Мені потрібна була мова сценаріїв, яка була б потужнішою, ніж Perl, і більш об'єктно-орієнтована, ніж Python".

Рубі поглинає їх найкращі сторони. У Ruby все є об’єктом. Кожна інформація або код може мати свої властивості та дії. В об’єктно-орієнтованому програмуванні властивості називаються об’єктними змінними, а дії методами. Найчистіший об'єктно-орієнтований підхід Ruby можна продемонструвати за допомогою декількох рядків коду, які діють на число і виводять рядок 5 times {print "університет це моя Альма Матер!" }

У багатьох мовах числа та інші примітивні типи даних не є об’єктами. Ruby під впливом Smalltalk дозволяє визначити методи та змінні об’єкта для всіх типів даних. Це робить Ruby простішим у використанні, оскільки правила застосовуються до об’єктів - вони стосуються всіх Ruby. Ruby - це дуже гнучка мова, яка дозволяє користувачам вільно міняти певні частини. Основні частини Ruby можна видалити або перевизначити за бажанням. А наявні деталі можна модифікувати. Рубі намагається ні в чому не обмежувати користь. Крім того, додавання виконується операцією плюс (+). Але, якщо ви хочете використовувати для цього більш читабельне слово плюс, ви можете додати такий метод безпосередньо до Numeric, внутрішнього класу мови Ruby.

Клас Числовий def plus (x) self. + (x) end end y = 5.плюс 6 # y 11

Оператори в Ruby - це синтаксичний баланс для методів. Ви також можете замінити їх. Блоки, справді виразний дизайн Рубі блоки також є чудовим джерелом гнучкості. Програміст може додати закриття до будь-якого методу, описуючи, як повинен діяти метод. Закриття називається блоком і є однією з найпопулярніших конструкцій для тих, хто прийшов у світ Ruby зі світу імперативних мов програмування, таких як PHP або Visual Basic. Створення блоків було натхнене функціональними мовами програмування. Матц сказав: "З Рубі я хотів віддати належне культурі мови Ліспа".

Значна кількість методів у Ruby залишають відкритим шлях для програміста для написання власного блоку коду, детально розповідають методу, що вони повинні робити. На відміну від багатьох об’єктно-орієнтованих мов, Ruby навмисно забезпечує лише одиночне успадкування. Але Ruby також надає концепцію модулів (Викликаються категорії в Objective-C). Класи можуть вільно втручатися в модуль і отримувати всі його методи. Наприклад, будь-який клас, який реалізує кожен метод, може змішати модуль Enumerable, який додасть купу методів, використовуючи кожен для створення циклів. клас MyArray включає Enumerable end В основному, рубісти вважають це більш прозорим, ніж багаторазове успадкування, яке може бути досить складним і мати будь-які обмеження. Оскільки розділові знаки часто зустрічаються рідко в Ruby, а англійські слова зазвичай використовуються як ключові слова, деякі розділові знаки використовуються для прикраси Ruby.

Ruby не вимагає оголошень змінних. Він використовує прості конвенції іменування для відокремлення області дії змінних var може бути локальною змінною @var об'єктною змінною $ var global smin. Ця символіка підвищує читабельність, дозволяючи програмісту легко визначити роль кожної змінної. Це також дозволяє уникнути нудної самості. для кожного об’єкта. У Ruby багато інших функцій та конструкцій, і ось деякі з них:

● Ruby має такі конструкції, як обробка винятків, такі як Java або Python, які полегшують вирішення помилок.

● Ruby забезпечує справжній збирач сміття для розмітки та розгортання всіх об’єктів Ruby. Не потрібно вручну відстежувати кількість посилань у сторонніх бібліотеках. Як каже Мац: "Це краще для вашого здоров'я".

● Написати розширення C в Ruby простіше, ніж у Perl або Python, з дуже елегантним API для виклику Ruby з C. Він включає виклики для вбудування Ruby в програмне забезпечення, щоб його можна було використовувати як мову сценаріїв. Також доступний інтерфейс SWIG.

● Ruby може динамічно завантажувати сторонні бібліотеки, якщо це дозволяє операційна система.

● Ruby реалізує незалежні від операційної системи потоки. Таким чином, на будь-яких платформах, де ви запускаєте Ruby, ви також можете використовувати багатопоточність, незалежно від того, підтримує система потоки чи ні. Ви можете використовувати багатопотокові можливості навіть у MS-DOS!

● Ruby є надзвичайно портативним: він був розроблений переважно на GNU / Linux, але працює на багатьох типах UNIX, Mac OS X, Windows 95/98 / Me / NT / 2000 / XP / Vista / 8, DOS, BeOS, OS / 2 тощо.


1   2   3   4   5   6   7   8   9   10

скачати

© Усі права захищені
написати до нас