Udav repository has Ukrainian 🇺🇦 and English 🇬🇧 localizations
Мова програмування Удав - це жартівлива мова програмування, створена на основі Python. Ідея виникла, коли мій друг, не програміст, назвав Python "Удавом". З тих пір у нас в компанії ходив прикол про "Удава".
Коли я вирішив створити щось більш менш серйозне, я вирішив провести маленьку підготовку та випробування своїх знань, написавши мову програмування Удав. Я намагався не напружуватися і просто отримати задоволення від процесу створення, оскільки це все ще лишається жартом.
За основу я взяв синтаксис Python перекладений на українську. Це означає, що код на Удав можна відтворити багато разів, оскільки він автоматично перекладається на Python. Крім того, Удав підтримує усі python модулі.
Як ви вже зрозуміли мова програмування називається Удав, тож логічно буде, якщо код цією мовою писався з застосуванням snake_case
Швидкий перехід між розділами:
Цей розділ надасть вам інструкції, щодо встановлення, ініціалізації та деініціалізації компілятора Удав.
Щоб запустити компілятор Удава, вам необхідно буде виконати наступні дії:
- Клонуйте репозиторій з GitHub:
git clone https://github.com/NikitaBerezhnyj/Udav.git
- Перейдіть в теку з проектом:
cd Udav/'Programming Language'/src
- Відкомпілюйте C++ файл:
g++ compiler.cpp -o udav
Після завершення компіляції в теці з проектом буде створений виконуваний файл udav. Після ініціалізації цей файл можна буде використовувати для запуску програм мовою Удав з будь-якої теки.
Ініціалізація компілятора Удав необхідна для того, щоб можна було використовувати його з будь-якої теки на вашому комп'ютері. Для цього виконайте наступну команду:
./udav -i
або
./udav --init
Після ініціалізації компілятора файл udav буде скопійовано в теку з іншими утилітами, що дасть можливість використовувати його для запуску програм мовою Удав з будь-якої теки.
Деініціалізація компілятора Удав необхідна, якщо ви більше не плануєте використовувати його. Для цього виконайте наступну команду:
./udav --u
або
./udav --uninit
Це видалить Удав з теки з утилітами, але залишить його у теці з проєктом, тому ви зможете використовувати його і потім, якщо забажаєте
Синтаксис Удав є перекладом мови Python на українську, для більшої простоти навчання та програмування українських розробників, тому синтаксиси цих двох мов майже не відрізняються.
Створення коментарів
# Це коментар, його компілятор не бачить
Вивід тексту на екран
# Вивід звичайного тексту
друк("Привіт, Світ!")
# Вивід змінної
а = 10
друк(а)
Оголошення змінних
# Цілочисельна змінна
інт = 10
# Дійсна змінна
флоат = 10.5
# Рядкова змінна
стрінг = "Рядок"
# Булева змінна
бул = правда
Ввід користувача
# Записується рядок
рядок_вводу = ввід()
# Записується ціле число
число_вводу = ціле(ввід())
# Записується ціле число
дріб_вводу = дійсне(ввід())
Оголошення масивів
# Оголошення масиву цілих чисел
цілий_масив = [0, 1]
# Оголошення масиву дійсних чисел
дробовий_масив = [0.5, 1.001]
# Оголошення масиву рядків
рядковий_масив = ["привіт", "світ"]
# Оголошення масиву булевих виразів
булевий_масив = [правда, правда, брехня]
Умови if (якщо), else if (інакшеЯкщо) та else (інакше)
# Умова якщо
якщо а < 5:
друк("<5")
# Умова якщо-інакше
якщо а < 5:
друк("<5")
інакше:
друк(">8")
# Умова якщо-інакшеЯкщо-інакше
якщо а < 5:
друк("<5")
інакшеЯкщо а > 5 та а < 8:
друк("<5 and >8")
інакше:
друк(">8")
Оголошення циклу while (поки)
# Приклад циклу while (поки)
лічильник = 0
поки лічильник < 10:
лічильник += 1
друк(лічильник)
Оголошення циклу for (для)
# Приклад циклу for (для)
для л до діапазон(10):
друк("Привіт, Світ!")
Оголошення функції
# Приклад функції
функція Привіт_світ():
рази = ціле(ввід("Введіть кількість повторів: "))
друк(рази)
для i до діапазон(рази):
друк("Привіт, Світ!")
Робота з сторонніми модулями
# Приклад роботи з datetime
отримати datetime
поточна_година = datetime.datetime.now()
друк("Поточна дата та час: ", поточна_година)
# Приклад роботи з random
отримати random
число = random.randint(1, 100)
друк(число)
Приклад коду з стандартних конструкцій
отримати random
функція Гра(кількість_спроб, випадкове_число):
для спроба до діапазон(кількість_спроб):
друк("Введіть будь ласка число від 1 до 10:")
користувацьке_число = ціле(ввід("Введіть число: "))
якщо користувацьке_число < випадкове_число:
друк("Переможне число більше")
інакшеЯкщо користувацьке_число > випадкове_число:
друк("Переможне число менше")
інакшеЯкщо користувацьке_число == випадкове_число:
друк("Ви виграли!")
повернути 0
інакше:
продовжити
друк("Ви програли")
друк(f"Переможне число: {випадкове_число}")
випадкове_число = random.randrange(1, 10)
кількість_спроб = ціле(ввід("Скільки ви хочете спроб:"))
Гра(кількість_спроб, випадкове_число)
Приклад коду в ООП парадигмі
клас Тварина:
функція __init__(своє , прізвисько, вік):
своє.прізвисько = прізвисько
своє.вік = вік
функція Голос(своє):
викинути ПомилкаВіртуальногоМетоду("Метод реалізується у підкласах")
клас Собака(Тварина):
функція Голос(своє):
повернути "Гав!"
клас Кіт(Тварина):
функція Голос(своє):
повернути "Няв!"
пес = Собака("Лорд", 3)
кішка = Кіт("Плюша", 2)
друк(пес.прізвисько + " каже:" + пес.Голос())
друк(кішка.прізвисько + " каже: " + кішка.Голос())
Власне IDE: https://github.com/NikitaBerezhnyj/NUB_IDE
Розширення для VS code: https://github.com/NikitaBerezhnyj/Udav_Language_Support_for_VS_Code
Документація по проєкту: https://nub-project-docs.netlify.app
Programming language Udav is a comic programming language based on Python. The idea came about when a non-programmer friend of mine called Python "Boa". Since then, we've had a joke about Boa in our company.
When I decided to create something more or less serious, I decided to do a little training and test my knowledge by writing a programming language called Boa. I tried to take it easy and just have fun with the process of creating it, since it was still a joke.
I took the Python syntax translated into Ukrainian as a basis. This means that the code in Udav can be reproduced many times because it is automatically translated into Python. In addition, Udav supports all python modules.
As you have already understood, the programming language is called Udav, so it would be logical if the code in this language was written using snake_case
Quick transition between sections:
This section will provide you with instructions on how to install, initialize, and uninitialize the Udav compiler.
To run the Udav compiler, you will need to perform the following steps:
- Clone the repository from GitHub:
git clone https://github.com/NikitaBerezhnyj/Udav.git
- Change to the project folder:
cd Udav/'Programming Language'/src
- Compile the C++ file:
g++ compiler.cpp -o udav
After the compilation is completed, the udav executable file will be created in the project folder. After initialization, this file can be used to run Udav programs from any folder.
Initialization of the Udav compiler is necessary in order to use it from any folder on your computer. To do this, run the following command:
./udav -i
or
./udav --init
After the compiler is initialized, the udav file will be copied to the folder with other utilities, which will make it possible to use it to run programs in Udav from any folder.
You need to deinitialize the Udav compiler if you no longer plan to use it. To do this, run the following command:
./udav --u
or
./udav --uninit
This will remove Udav from the utilities folder, but leave it in the project folder, so you can use it later if you want to.
Syntax Udav is a translation of Python into Ukrainian, for ease of learning and programming for Ukrainian developers, so the syntaxes of these two languages are almost identical.
Creating comments
# This is a comment, the compiler does not see it
Display text on the screen
# print simple text
друк ("Привіт, Світ!")
# print a variable
а = 10
друк (а)
Declaration of variables
# integer variable
інт = 10
# float variable
флоат = 10.5
# string variable
стрінг = "Рядок"
# boolean variable
бул = правда
User input
# the string is written
рядок_вводу = ввід()
# an integer is written
число_вводу = ціле(ввід())
# A float is written
дріб_вводу = дійсне(ввід())
Declaration of arrays
# Declaration of an array of integers
цілий_масив = [0, 1]
# Declaring an array of floats
дробовий_масив = [0.5, 1.001]
# Declaring an array of strings
рядковий_масив = ["привіт", "світ"]
# Declaring an array of booleans
булевий_масив = [ правда , правда , брехня ]
If, else if, and else conditions.
# Condition if
якщо а < 5:
друк ("<5")
# Condition if-else
якщо а < 5:
друк ("<5")
інакше:
друк(">8")
# Condition if-elif-else
якщо а < 5:
друк ("<5")
інакшеЯкщо а > 5 та а < 8:
друк ("<5 and >8")
інакше:
друк (">8")
Declaring a while loop
# An example of a while loop
лічильник = 0
поки лічильник < 10:
лічильник += 1
друк (лічильник)
Declaring a for loop
# An example of a for loop
для л до діапазон(10):
друк ("Привіт, Світ!")
Function declaration
# An example of a function
функція Привіт_світ():
рази = число (ввід("Введіть кількість повторів: "))
друк(рази)
для i до діапазон(рази):
друк("Привіт, Світ!")
Working with third-party modules
# An example of working with datetime
отримати datetime
поточна_година = datetime.datetime.now()
друк("Поточна дата та час:", поточна_година)
# An example of working with random
отримати random
число = random.randint(1, 100)
друк(число)
Example code from standard constructions
отримати random
функція Гра(кількість_спроб, випадкове_число):
для спроба до діапазон ( кількість_спроб ):
друк("Введіть будь ласка число від 1 до 10:")
користувацьке_число = ціле(ввід("Введіть число: "))
якщо користувацьке_число < випадкове_число:
друк("Переможне число більше")
інакшеЯкщо користувацьке_число > випадкове_число:
друк ("Переможне число менше")
інакшеЯкщо користувацьке_число == випадкове_число:
друк ("Ви виграли!")
повернути 0
інакше:
продовжити
друк ("Ви програли")
друк (f"Переможне число: {випадкове_число}")
випадкове_число = random.randrange(1, 10)
кількість_спроб = число ( ввід ("Скільки ви хочете спроб:"))
Гра(кількість_спроб, випадкове_число)
A sample code in the OOP paradigm
клас Тварина:
функція __init__(своє , прізвисько, вік):
своє.прізвисько = прізвисько
своє.вік = вік
функція Голос(своє):
викинути ПомилкаВіртуальногоМетоду("Метод реалізується у підкласах")
клас Собака(Тварина):
функція Голос(своє):
повернути "Гав!"
клас Кіт(Тварина):
функція Голос(своє):
повернути "Няв!"
пес = Собака("Лорд", 3)
кішка = Кіт("Плюша", 2)
друк (пес.прізвисько + " каже:" + пес.Голос())
друк (кішка.прізвисько + " каже: " + кішка.Голос())
Custom IDE: https://github.com/NikitaBerezhnyj/NUB_IDE
Extensions for VS code: https://github.com/NikitaBerezhnyj/Based_Language_Support_for_VS_Code
Project documentation: https://nub-project-docs.netlify.app