Informatii generale
- Categorie: Utilitar
- Judetul: București
- Surse: GitHub - mcostn/pvb · GitHub
Descriere
PVB este un limbaj de programare vizual bazat pe un editor cu blocuri. Programele sunt construite prin conectarea blocurilor în locul scrierii codului, ceea ce facilitează experimentarea, prototiparea și înțelegerea fluxului unui program. Proiectele pot fi transpilate în cod sursă, în prezent fiind suportate limbajele C++ și Python.
Tehnologii
PVB a fost dezvoltat cu un număr redus de dependențe externe, majoritatea funcționalităților fiind implementate special pentru acest proiect. Printre acestea se numără sistemul de reprezentare și gestionare a blocurilor, generatorul de cod pentru limbajele suportate, mecanismul de transpilație, precum și infrastructura de testare automată. Bibliotecile externe sunt utilizate aproape exclusiv pentru realizarea interfeței grafice și a comunicării cu sistemul de operare.
Biblioteci externe
PVB este dezvoltat în C++20 și utilizează sistemul de build CMake pentru configurarea și compilarea proiectului. Aplicația se bazează pe următoarele biblioteci externe:
- GLFW
- OpenGL
- Dear ImGui
- ImGuiFileDialog
- ImGuiColorTextEdit
Arhitectură
Aplicația este organizată modular, fiecare modul având o responsabilitate bine definită.
Core
Biblioteca core reprezintă nucleul aplicației și conține logica independentă de interfața grafică. Aceasta include:
- definirea și înregistrarea blocurilor disponibile;
- conversia și validarea conexiunilor dintre blocuri;
- reprezentarea internă a programului;
- generarea codului sursă prin intermediul backend-urilor dedicate pentru C++ și Python;
- funcții auxiliare, precum gestionarea fișierelor de configurare.
Acest modul poate fi utilizat independent de interfața grafică și este testat separat.
UI
Modulul ui implementează interfața grafică folosind Dear ImGui. Ea este responsabilă pentru:
- desenarea blocurilor și a conexiunilor dintre acestea;
- gestionarea canvas-ului de editare;
- afișarea paletei de blocuri;
- administrarea proiectelor;
- editorul principal;
- afișarea codului generat;
- definirea blocurilor personalizate.
Acest modul comunică exclusiv cu biblioteca core, fără a implementa logică de generare a codului.
Testare
Proiectul include un executabil separat (test_runner) destinat testării automate a componentelor din modulul core (unit test).
Cerinte sistem
Aplicația a fost testată atât pe Windows 10/11, cât și pe Linux (X11 și Wayland).
Hardware:
- procesor x86-64;
- minimum 4 GB RAM;
- placă grafică cu suport OpenGL;
- aproximativ 10 MB spațiu pe disc pentru executabil.
Software:
- compilator compatibil cu C++20 pentru compilarea proiectului (a fost testat cu GCC, Clang și MSVC);
- CMake 3.20 sau mai nou;
- drivere grafice cu suport OpenGL.
Rularea codului generat:
- pentru programele transpilate în Python este necesar un interpretor Python;
- pentru programele transpilate în C++ este necesar un compilator C++.
Codul generat utilizează exclusiv construcții standard ale limbajelor și evită caracteristicile introduse în versiunile recente, astfel încât acesta este compatibil cu majoritatea compilatoarelor și interpretoarelor moderne.
Realizatori
Matei Stefan Costan
- Scoala: Colegiul Național “Ion Luca Caragiale”
- Clasa: 11
- Judet: București
- Oras: Sector 1
Screenshots


