ЗМАГАННЯ ЗАВЕРШЕНО
Білексична мова програмування
Конкурс:
Відкритий конкурс м.Києва з Інформаційних Технологій
Номінація:
Програмна розробка
Автор:
Андрій Сенько
Команда:
 
Завдання

Створити програмну розробку на вільну тему

В назві проекту необхідно вказати назву програмної розробки.
В аватарку проекта  необхідно завантажити зовнішній вигляд головної сторінки (printscreen).
В описові до роботи необхідно вказати:

1.  програми, які використовувалися при створені роботи, наприклад Visual Studio 2008, Delphi тощо;
2.  опис роботи, переваги, інструкції до роботи, інструкції до установки, які на думку автора слід знати членам журі для кращого розуміння та оцінювання роботи;

В додаток до роботи необхідно завантажити  zip-архів, який містить

1. Папку з вихідними файлами програмної розробки.
2. Скомпільований файл програмної розробки з розширенням *.exe.

Розмір zip-архіву не повинен бути більшим, ніж 20 Мб.
Інші технічні вимоги до програмних розробок читайте у пункті 5.6. чинного Положення конкурсу.


ОПИС РОБОТИ:

Загальні відомості

Розробка проекту ведеться на операційній системі Linux (Ubuntu 13.10 та 14.04, 64-bit) у середовищі програмування QtCreator на чистому C++ (без бібліотеки QT та інших) з використанням компілятора GCC версії 4.8.2.

Проект (фреймворк) складається з двох програм:

  • компілятор uac - перетворює вихідний код програми у байт-код віртуальної машини;
  • віртуальна машина uavm - виконує байт-код.

Інсталяція і запуск

Для систем що базуються Debian - встановити інсталяційний пакет "ualang_0.1-1_amd64.deb" з архіву. Пакет знаходиться у директорії Framework.
Встановити пакет можна командою sudo dpkg -i ualang_0.1-1_amd64.deb з терміналу або відкривши пакет програмою GDebi. Використовувати для інсталяції програму Ubuntu Software Center не рекомендується.
Після інсталяції програми uac і uavm інтегруються в систему.

Для інших Linux систем - розархівувати програмні файли uac і uavm, вони знаходяться у папці Framework.

Після цього програми можна запускати з терміналу.

Компілятор uac

Він транслює вихідний код програми у байт-код.
Формат запуску:

uac [-o output] [--locale=<eng|ukr|укр>] <file.sky>

Параметри у квадратних дужках - опціональні, у  кутових дужках - обов'язкові.

Параметр -o дозволяє явно вказати вихідний файл. За замовченням вихідний файл знаходиться у тій же директорії та має ту саму назву, що і вхідний і розширення .sem або .slm.
Параметр --locale дозволяє явно вказати синтаксис вхідного файлу файлу. Приймає такі аргументи engukr або укр.
Параметри -h та -v показують довідку та версію відповідно. Крім того довідку можна отримати по команді man uac якщо попередньо було встановлено інсталяційний пакет.

Приклади:

uac calc.sky

uac -o /home/user/mycalc.sem calc.sky

uac --locale=eng helloworld.sky 

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

Компілятор підтримує директиви для управління процесом компіляції - зазначення точки входу, переключення синтаксису, зазначення типу модуля, імпортування модулів, зазначення типу доступу до функції.

Віртуальна машина uavm

Він транслює вихідний код програми у байт-код.
Формат запуску:

uavm [-l] <file.sem>

Параметри у квадратних дужках - опціональні, у  кутових дужках - обов'язкові.

Параметр -l включає вивід діагностичної інформації (log). Ця інформація виділяеться синім кольором.
Параметри -h та -v показують довідку та версію відповідно. Крім того довідку можна отримати по команді man uavm якщо попередньо було встановлено інсталяційний пакет.

Приклади:

uavm calc.sem

uavm -l /home/user/mycalc.sem

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

Білексична Мова Програмування

Мова подібна до Асемблера, є Тьюрінг-повною, підтримує два синтаксиси: український та англійський. Характеристика:

  • Функції, процедури та мітки
  • Стек та регістри: рег1рег1рег3рег4рег5рр (регістр результату), раі (регістр адреси інструкції), рс (регістр стеку) та рфл (регістр флагів)
  • Модульність
  • Прості типи: буль (bool), байт (byte), коротке (short), ціле (int), довге (int64), подвійне (double), рядок (string) та пустий тип - воід (void)
  • Одновимірні масиви
  • Глобальні змінні
  • Динамічне виділення та звільнення пам'яті під масиви
  • Директиви компілятора

Реалізована підтримка таких операцій:

  • Арифметичні
  • Інкременту та декременту
  • Зі стеком
  • Пересилання даних між регістрами, стеком та змінними
  • Логічні операції
  • Бітові зсуви
  • Введення-виведення (зі стандартного потоку введення та у стандартний потік виведення відповідно)
  • Порівняння
  • Безумовного та умовного переходів
  • Виклику підпрограм та повернення
  • Динамічного виділення та звільнення пам'яті для масивів

Синтаксис, операції та характеристики більш детально описані у файлах Concept.docx, Keywords.docx і Presentation.pptx з архіву.

Project.zip Project.zip

ОБГОВОРЕННЯ:
2014-03-08 11:51 Микита Озеракін:
А где разработка приложений? :((
2014-03-08 11:52 Микита Озеракін:
И олимпиада программистов?
2014-03-11 16:47 Владислав Урсул:
Вже додали
2014-03-12 21:29 Антон Власюк:
Я працюю з pascal. На який конкурс подавати заявку?
2014-03-13 23:36 Прасковья Теребий:
хочу запитати, коли з`явиться положення щодо того, яким чином правильно завантажити роботу(яка максимальна кількість мб на кожну роботу, яким архівом відправляти і т.д.)?
2014-03-15 21:58 Дмитро Дегтяр:
Видео не загружается!!!!!
2014-03-17 17:32 Павло Шатило:
Я працював над темою «Інноваційні технології майбутнього»! В цій презентації я розповів про декотрі технології які мабуть будуть в не далекому майбутньому!
2014-03-17 18:49 Pasha Shatilo:
Я працював над темою «Інноваційні технології майбутнього»! В цій презентації я розповів про декотрі технології які мабуть будуть в не далекому майбутньому!
2014-03-17 21:24 Дмитро Дегтяр:
Не могу загрузить роботу уже 3-й день!!!!
2014-03-17 23:25 Прасковья Теребий:
Дмитро Дегтяр, сьогодні запитала адміністрацію щодо цієї проблеми. максимум через 2 дні все буде працювати і ми зможемо завантажувати роботи.
2014-03-18 10:15 Адам Голота:
А в якому форматі потрібно робити презентацію? Відео можна? Чи тільки відео і потрібно?
2014-03-19 09:43 Олександр Громовий:
Доброго дня! Завдання додані, можна прикріпляти відповіді. Формати відповідей дивіться у завданнях.
2014-03-19 13:28 Адам Голота:
Хмм... Тобто презентацію не можна представити просто як відео? Обов`ясково через PowerPoint?
2014-03-20 22:13 Олег Кураченко:
Панове, а коли власне пройде заочний тур олімпіади програмістів?
2014-03-21 21:57 Кирило Зайцев:
Будь ласка, підкажіть, чому не відображається відеогалерея?
2014-03-22 10:37 Евгений Сухенко:
Проект создан в программе Scratch поддерживающую только *exe розширение. могу ли я принимать участие?
2014-03-22 15:33 Олександр Громовий:
Заочного туру олімпіади програмістів не буде, буде тільки очний 5-ого квітня на базі КПДЮ.
2014-03-22 15:33 Олександр Громовий:
Євгене, у якій номінації exe розширення?
2014-03-22 20:00 Олександр Громовий:
За проханнями учасників, час прийому робіт продовжено до понеділка.
2014-03-23 00:06 Андрій Сенько:
Чи можливо подати проект написаний для ОС Linux (Ubuntu)? Просто розробка або перенесення такого проекту на ОС Windows є фактично неможливим через обмеження самої Windows.
2014-03-24 13:56 Іван Коломієць:
2 Андрій Сенько: За правилами не можна, т.я. ваш проект повинен відкриватися на Win XP x84 (32 бітній), але особисто мені, як користувачеві Ubuntu Linux, приємно бачити, що хтось прагне розробляти під неї ПЗ. Втім я не зовсім розумію чому в 21 сторіччі, коли є десятки кросплатформенних технологій створення ПЗ, ними так мало користуються.
2014-03-24 14:40 Андрій Сенько:
Іван Коломієць, у мене низькорівневий проект і критичний до часу виконання, тому робити його зараз кросплатформеним не дуже доцільно. А на Windows він не може бути перенесений через те, що вона не підтримує українську мову в командному рядку (зокрема замість "і" та "ї" виводить "?"). А середовище термінала Linux підходить як найкраще.
2014-03-24 20:01 Олег Кураченко:
буде тільки очний 5-ого квітня на базі КПДЮ... о котрій годині?
2014-03-25 01:08 Олександр Громовий:
Про точний час початку змагання 5-ого квітня на базі КПДЮ буде повідомлено пізніше. В попередні роки було 2 запуски - 10:00 та 13:00.
2014-03-28 19:08 Іван Коломієць:
Микита Мацко, «Сонячна система» — http://neography.com/experiment/circles/solarsystem/ Не знаю как оценивать.
2014-03-28 19:27 Іван Коломієць:
Анастасія Гомнова, «сайт-довідник на тему "Електронні таблиці"» — http://www.mantisatemplates.com/template-preview/psd/simple-personal/frame.php http://www.mantisatemplates.com/mantis-a-templates-psd.php
2014-03-28 19:32 Іван Коломієць:
Анастасія Войцехівська, «Сайт-довідник "Електронні таблиці"» — http://www.mytemplatez.com/view/88/Template/CSS-Templates/Category/Business/Colorus.html
2014-04-02 09:20 Марйам Абдул Рахман:
Здраствуйте, я хотіла би дізнатися коли будуть результати оцінювання в конкурсі 2- D графіки фантастичний персонаж?
2014-04-02 11:35 Vlad Buinytski:
Як подати на апеляцію?
2014-04-02 18:21 Олександр Громовий:
Доброго дня! За вимогою журі конкурсу, з конкурсу зняті роботи Микити Мацко, Анастасії Гомнової та Анастасії Войцехівської за використання готових шаблонів. Дивіться коментарі Івана Коломійця вище.
2014-04-02 18:22 Олександр Громовий:
Щоб подати на апеляцію - напишіть будь-ласка свої аргументи у цю стрічку коментарів. Завтра будуть збори суддівської комісії о 10:00 та усі звернення будуть розглянуті.
2014-04-02 18:24 Олександр Громовий:
Також завтра, 03.04.2014 після 12:00 будуть опубліковані можливі зміни в оцінках спірних робіт після колегіального розгляду. Це також стосується і 2D-графіки
2014-04-03 08:12 Андрій Сенько:
За якими критеріями оцінюється структура і навігація у програмі командного рядка, яка в принципі не може мати графічного інтерфейсу і контактує з користувачем через аргументи командного рядка?
2014-04-03 10:50 Олександр Громовий:
Андрію, доброго дня - вас направлено на очний захист, тому в неділю у вас буде шанс презентувати роботу суддівському журі.
2014-04-03 10:55 Олександр Громовий:
Усі переможці першого заочного етапу, які запрошуються до участі у 2-ому очному етапі, визначені. Запрошуємо переможців на 10:00 в неділю, 06.04.2014 в Центр дитячої та юнацької творчості Солом`янського району м. Києва за адресою - вул. Героїв Севастополя 35. Кожному учаснику буде надаватися 5 хв. для презентації своєї роботи перед суддівською комісією