EVIA Paradigma

Նկարեք ծրագիրը։
Ընտրեք նրա լեզուն։

EVIA Paradigma-ն տեսողական ծրագրավորում է նրանց համար, ովքեր ուզում են տեսնել, թե ինչ է ստանում մեքենան։ Սխեման ինքն է ծրագիրը, իսկ լեզուն ընդամենը կարգավորում է։ Միացրեք բլոկները կտավի վրա, գործարկեք դրանք, ապա ընտրեք, թե ինչ դառնան՝ C99-ից մինչև C++20 (Clang կամ GCC), Arduino սքեթչ, bare-metal C՝ AVR կամ PIC32 չիպի համար, կամ SystemVerilog, Verilog կամ VHDL՝ FPGA-ի համար։

Ներբեռնել 0.6.7 Կոդը GitHub-ում

Windows և Linux. macOS-ի տարբերակները կվերադառնան ավելի ուշ։ Անվճար, բաց կոդ, MIT լիցենզիա։

Բլոկ-սխեմա՝ Start, Set n = 3, For ցիկլ 1-ից n, որը տպում է քայլը և կանչում c.add(i)-ը Counter օբյեկտի վրա, հետո c.show() և End։

      
Ձախ կողմի սխեման՝ այնպես, ինչպես այն գրում է գեներատորը։ Բոլոր 32 տարբերակները տպում են նույնը, ինչ ներկառուցված ինտերպրետատորը։

Ինչ է անում ծրագիրը

Ծրագիրը բլոկներ և կապեր է

Start, Set, Input, Print, If/Else, For, While և Do-While բլոկներ են, իսկ դրանց միջև կապերը որոշում են կատարման հերթականությունը։ Սեղմեք Run, և կատարվող բլոկը լուսավորվում է։ Արտահայտություններն աշխատում են թվերի և տեքստի հետ՝ && || !, համեմատություններ և սովորական թվաբանություն։

Բլոկներից հավաքված For ցիկլը և դրա ելքը՝ step 1, step 2, step 3։

Դասեր, օբյեկտներ և մոդուլներ

Դասն ունի սկզբնական արժեքներով դաշտեր, կոնստրուկտոր և մեթոդներ, և յուրաքանչյուր մեթոդ առանձին բլոկ-սխեմա է՝ Enter-ից մինչև Exit։ Յուրաքանչյուր Exit դառնում է կանչող բլոկի ելք։ Նույն օբյեկտի անունով բլոկներն աշխատում են մեկ օբյեկտի հետ։ Դասերը կարելի է պահել որպես մոդուլներ (.eviam) և ներմուծել այլ ծրագրերում։

Counter դասի պատուհանը՝ դաշտերի, կոնստրուկտորի և մեթոդների ներդիրներով, add(x) մեթոդը x-ը գումարում է this.total-ին։

Մեկ սխեմա՝ տասնչորս լեզու

Սխեման ասում է, թե ծրագիրը ինչ է անում, ոչ թե ինչով է գրված։ Նույն կտավը դառնում է C-ի և C++-ի ութ ստանդարտ, Arduino սքեթչ, bare-metal C՝ AVR կամ PIC32 համար, կամ SystemVerilog, Verilog-2001 և VHDL՝ FPGA-ի համար, իսկ Run-ը կատարում է հենց սխեման, որպեսզի դրա արդյունքը կարողանաք համեմատել դրանցից ցանկացածի հետ։ Եթե նպատակը չի կարող պահել բլոկը, սխալը նշում է այդ բլոկը՝ փոխանակ լուռ փոխի ծրագրի իմաստը։

Բացված Code Language and Mode ընտրացանկը՝ C99-ից մինչև C++20, Arduino, AVR C, PIC32 C, SystemVerilog, Verilog-2001 և VHDL, իսկ դրանց տակ՝ հոսքը և արժեքները։

C-ի և C++-ի ութ ստանդարտ, գրելու երկու եղանակ

Գործիքագոտուց ընտրեք C99, C11, C17, C++98, C++11, C++14, C++17 կամ C++20։ Structured-ը գրում է if/else, ցիկլեր և switch, իսկ Goto-ն յուրաքանչյուր բլոկ դարձնում է նշիչ, յուրաքանչյուր կապ՝ անցում։ Safe արժեքները պահում են տեքստը և ինտերպրետատորի բոլոր ստուգումները, իսկ Fast արժեքները պարզ double-ներ են՝ առանց կատարման ժամանակի ստուգումների։ C-ի runtime-ը պարունակում է միայն այն, ինչ օգտագործում է ծրագիրը, ուստի կոդը կոմպիլյացվում է առանց նախազգուշացումների -Wall -Wextra -Wpedantic -Werror-ով։

Կոդի պատուհանը՝ ծրագիրը C11-ով, կոմպիլյացված Clang-ով և գործարկված։

Ցանկացած բլոկի կոդը

Սեղմեք բլոկի վրա մկնիկի աջ կոճակով և ընտրեք View source code։ Կբացվի գեներացված ֆայլը, որտեղ ընդգծված են հենց այն տողերը, որոնց վերածվել է բլոկը։ Նույնն աշխատում է ամբողջ մեթոդի կամ դասի համար՝ ձեր ընտրած ցանկացած լեզվով։ Compile & Run-ը անմիջապես կառուցում է կոդը Clang-ով կամ GCC-ով, իսկ Windows-ում ծրագիրն ինքն է տեղադրում llvm-mingw կամ WinLibs GCC, Visual Studio պետք չէ։

Գեներացված C++՝ c.add(i) բլոկի ընդգծված տողերով, կոմպիլյացված Clang-ով և գործարկված։

Arduino և ESP32 տախտակներ

Pin Mode, Digital Write և Read, Analog Read և Write, Delay և Millis նույնպես բլոկներ են։ Մեկ Arduino սքեթչ կառուցվում է Uno, Nano, Mega 2560, Leonardo, Micro և Pro Mini, ինչպես նաև ESP32, ESP32-S2, -S3, -C3, -C6 և -H2 տախտակների համար։ Run-ը համակարգչի վրա նմանակում է Uno-ն և ցույց է տալիս պինների յուրաքանչյուր փոփոխություն, այնպես որ ծրագիրը կարող եք փորձել դեռ մինչև տախտակը ձեռքի տակ ունենալը։ UART-ը, SPI-ը, I2C-ն և MQTT-ն նույնպես բլոկներ են։

blink օրինակը՝ Board բլոկները գունապնակում, ելքում երևում է, թե ինչպես է նմանակված 13-րդ պինը փոխարկվում 500 մվ-ն մեկ։

Առանց Arduino-ի՝ ուղիղ ռեգիստրներով

AVR C-ն ծրագիրը գրում է ATmega328P, ATmega2560 կամ ATmega32U4-ի համար՝ առանց Arduino միջուկի. պորտերը, թայմերները, PWM-ը, ԱԹՓ-ն և UART-ը կարգավորվում են ընթեռնելի C-ով։ avr-gcc-ն այն կառուցում է մոտ 4 ԿԲ-ով, իսկ Upload-ը avrdude-ով բեռնում է այն տախտակի վրա։ Յուրաքանչյուր օրինակ գործարկվում է simavr սիմուլյատորում և համեմատվում ինտերպրետատորի հետ։

Նորություն 0.5-ում. PIC32 C-ն նույնն անում է ինը PIC32MX չիպի համար Microchip-ի XC32-ով, իսկ UART-ը, SPI-ն և I2C-ն դարձել են բլոկներ՝ Run-ում և տախտակների բոլոր երեք լեզուներում։ PIC32-ի կոդը ստուգվել է Microchip-ի վերնագրային ֆայլերով, բայց դեռ չի կառուցվել XC32-ով և չի աշխատել չիպի վրա։

Նորություն 0.6-ում՝ FPGA աջակցություն։ SystemVerilog, Verilog-2001 և VHDL նույն սխեման դարձնում են սարքակազմ Artix-7 (Nexys A7, Arty A7, Basys 3) և Cologne Chip GateMate տախտակների համար։ Արդյունքը սիմուլացվել է Run-ի համեմատ և սինթեզվել բաց գործիքներով, բայց չի անցել Vivado-ով և չի բեռնվել տախտակի մեջ։

Նորություն 0.6.5-ում՝ MQTT։ Հինգ բլոկ ծրագրի թվերը հրապարակում են բրոքերին և կարդում հրամաններ՝ PIC32MX-ի վրա UART2-ի WiFi մոդուլով, ESP32-ի վրա սեփական WiFi-ով, իսկ Run-ում՝ ձեր համակարգչի բրոքերով։ Ստեղծված հաճախորդը ստուգվում է իրական բրոքերով. ոչ WiFi մոդուլ, ոչ չիպ այդ ստուգման մաս չեն եղել։ Դրան ուղեկցում են երկու օրինակ, որոնցից մեկը՝ PIC32 Ethernet Starter Kit II-ի համար։ Նորություն 0.6.7-ում՝ միջերեսն ինքը անգլերեն, ռուսերեն կամ հայերեն է՝ ընտրվում է Կարգավորումներում։

blink ծրագիրը AVR C-ով՝ առանց Arduino-ի, կառուցված avr-gcc 14-ով Arduino Uno-ի համար՝ 4032 բայթ կոդ։

Մասշտաբ և կտավի տեղափոխում մկնիկով

Պտտեք անիվը սխեմայի վրա՝ մասշտաբը 25%-ից 300% փոխելու համար՝ դեպի ցուցիչը։ Բլոկները, տեքստը և կապերը մնում են հստակ, և խմբագրել կարելի է ցանկացած մասշտաբով։ Ctrl+0-ն վերադարձնում է 100%-ը, Ctrl+9-ը տեղավորում է ամբողջ սխեման։ Նորություն 0.6.1-ում՝ պահեք մկնիկի միջին կոճակը և քաշեք՝ կտավը տեղափոխելու համար՝ դատարկ տեղից կամ բլոկից։

Սխեման՝ 161% մասշտաբով։

Նախագծեր, Git և GitHub

File, New Project-ը ստեղծում է թղթապանակ՝ ծրագրով, մոդուլների թղթապանակով, README-ով և Git պահոցով։ Commit, push և pull՝ Git ընտրացանկից։ Connect to GitHub-ը հրապարակում է նախագիծն այն հաշվով, որն արդեն օգտագործում է ձեր git-ը։ Ծրագիրը երբեք գաղտնաբառ չի խնդրում և չի պահում։

Connect to GitHub պատուհանը՝ sbrutyan01/CounterDemo պահոցի անունով։

Առաջին ծրագիրը ութ քայլով

Բոլոր սքրինշոթներով ամբողջական քայլ առ քայլ ուսուցումը հասանելի է PDF-ով յոթ լեզվով՝ English, Русский, Հայերեն, Deutsch, 简体中文, 繁體中文, 日本語։ Այն հասանելի է նաև ծրագրի Help, Tutorial ընտրացանկում և README-ում։

  1. Ստեղծեք նախագիծ

    File, New Project։ Թողեք Create a Git repository-ն նշված։

  2. Կառուցեք ցիկլ

    Քաշեք Set, For և Print բլոկները կտավի վրա, միացրեք դրանք և սեղմեք Run։

  3. Ստեղծեք դաս

    Edit, New Class։ Counter դասին տվեք total և calls դաշտերը։

  4. Օգտագործեք դասը

    Քաշեք Counter.add(x)-ը ցիկլի մեջ և օբյեկտն անվանեք c։

  5. Տեսեք կոդը

    Աջ սեղմում բլոկի վրա, View source code։

  6. Ընտրեք լեզուն

    Անցեք C11-ի կամ C++-ի ցանկացած ստանդարտի, և կոդը նորից կգեներացվի։

  7. Commit և հրապարակում

    Git, Commit, ապա Connect to GitHub։

  8. Շարունակեք

    Մոդուլներ, օրինակներ և ուղեցույց (F1)։

Ձեր առաջին FPGA ծրագիրը չորս քայլով

Նույն թարթման սխեման դառնում է սարքակազմ Artix-7 և GateMate տախտակների համար։ Ամբողջական ձեռնարկը՝ քայլ 10, վերևի PDF-ում է, իսկ ուղեցույցում կա FPGA թեմա (F1)։

  1. Ընտրեք լեզու և տախտակ

    Լեզու՝ SystemVerilog, Verilog-2001 կամ VHDL։ Տախտակ՝ Nexys A7, Arty A7, Basys 3 կամ GateMate տախտակ։

  2. Բացեք Blink օրինակը

    File, Open Example, FPGA Boards, Blink։ Կոնտակտները անուններ են՝ LED0, SW3, BTNC, JA1։

  3. Ստեղծեք կոդը

    Սեղմեք F7։ Կոնտակտների սահմանափակումները առաջին մեկնաբանության մեջ են, իսկ հրամանի տողը դրանք գրում է առանձին ֆայլում։

  4. Կառուցում և բեռնում

    Vivado կամ բաց գործիքներ՝ ընտրվում է Կարգավորումներում։ Upload-ը ծրագրավորում է տախտակը։

java -jar evia-paradigma.jar --gen examples/fpga/blink.evia --lang sv --board nexys-a7-100t -o blink.sv
# writes blink.sv and blink.xdc
java -jar evia-paradigma.jar --gen examples/fpga/blink.evia --lang vhdl --board olimex-gatemate -o blink.vhd
# writes blink.vhd and blink.ccf

Ստուգված է սիմուլյացիայով՝ ինտերպրետատորի հետ համեմատած, և սինթեզով բաց գործիքներով։ Դեռ չի անցել Vivado-ով և չի փորձարկվել իրական տախտակի վրա։

Ներբեռնել EVIA Paradigma 0.6.7

Յուրաքանչյուր տեղադրիչ ունի իր Java միջավայրը, ուստի ուրիշ ոչինչ տեղադրել պետք չէ։ Գեներացված կոդը կոմպիլյացնելու համար անհրաժեշտ է Clang կամ GCC (Windows-ում ծրագիրն ինքն է տեղադրում դրանցից ցանկացածը)։

ՀամակարգՖայլՆշումներ
Windows 10 / 11, x64 EVIA-Paradigma-0.6.7-windows-x64.exe Դեռ թվային ստորագրություն չունի. SmartScreen-ի զգուշացման մեջ ընտրեք More info, ապա Run anyway։
Ubuntu 22.04+ / Debian 12+ evia-paradigma_0.6.7_amd64.deb sudo apt install ./evia-paradigma_0.6.7_amd64.deb
Ցանկացած համակարգ Java 25-ով evia-paradigma-0.6.7.jar java -jar evia-paradigma-0.6.7.jar

Բոլոր թողարկումները և դրանց նշումները

Ստուգված սեփական ինտերպրետատորով

Յուրաքանչյուր փոփոխության ժամանակ CI-ն գեներացնում է բոլոր օրինակներն ու թեստային ծրագրերը լեզվի, հոսքի և արժեքների բոլոր 32 համակցություններով, կոմպիլյացնում է՝ նախազգուշացումները համարելով սխալներ, գործարկում և համեմատում stdout-ը, stderr-ը և ելքի կոդը ինտերպրետատորի հետ։

ՈրտեղԿոմպիլյատորՀամընկնում է ինտերպրետատորի հետ
Linux, C-ի և C++-ի բոլոր 8 ստանդարտներըClang 23416 / 416
Linux, C-ի և C++-ի բոլոր 8 ստանդարտներըGCC 13416 / 416
Windows, C99, C17, C++98, C++14, C++20llvm-mingw Clang 23, ստատիկ260 / 260
Windows, C99, C17, C++98, C++14, C++20WinLibs GCC 16, ստատիկ260 / 260
Տախտակների օրինակներ, AVR C առանց Arduino-ի simavr-ում (ATmega328P, 2560, 32U4)avr-gcc 1430 / 30
Arduino Uno և Mega 2560 սքեթչներ simavr-ումarduino-cli, arduino:avr15 / 15
FPGA նախագծերը սիմուլյացիայում (SystemVerilog, Verilog-2001, VHDL)Icarus Verilog, GHDL27-ից 27

Arduino սքեթչները կառուցվում են նաև բոլոր 12 տախտակների համար, այդ թվում՝ ESP32 (70 կառուցում՝ առանց նախազգուշացումների)։ PIC32-ի օրինակները կոմպիլացվում են (միայն շարահյուսություն) Microchip-ի վերնագրերով (144-ից 144)։ FPGA-ի յուրաքանչյուր օրինակ և թեստ սինթեզվում է yosys-ով Artix-7-ի համար, իսկ GateMate նախագծերը տեղակայվում, երթուղավորվում և փաթեթավորվում են բիթսթրիմների մեջ. Vivado-ն, openXC7-ը և իրական տախտակները CI-ում չեն։ MQTT հաճախորդը կառուցվում է կառուցման մեքենայի վրա և ստուգվում իրական բրոքերով։ Ինչպես նաև հավելվածի, մոդուլների, նախագծերի, Git-ի, մասշտաբավորման և կտավի տեղափոխման ստուգումներ իրական պատուհանում։ Մանրամասները՝ GitHub Actions-ում։

Փաստաթղթեր

java -jar evia-paradigma.jar --run program.evia
java -jar evia-paradigma.jar --gen program.evia --lang c11 -o program.c
clang -std=c11 -O2 -o program program.c -lm