۱ دی ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Balerina: یک زبان برنامه نویسی برای ابر

Ballerina برای ساده‌سازی توسعه ریزسرویس‌های توزیع‌شده با آسان‌تر کردن ادغام APIها طراحی شده است. برای برنامه نویسان C، C++، C# و جاوا، خیلی چیزها آشنا هستند.

Ballerina برای ساده‌سازی توسعه ریزسرویس‌های توزیع‌شده با آسان‌تر کردن ادغام APIها طراحی شده است. برای برنامه نویسان C، C++، C# و جاوا، خیلی چیزها آشنا هستند.

Ballerina، که توسط WSO2 توسعه یافته و پشتیبانی می‌شود، به‌عنوان «یک زبان برنامه‌نویسی بومی ابری با تایپ استاتیک، منبع باز و ابری» نام‌گذاری شده است. زبان برنامه نویسی بومی ابری چیست؟ در مورد Ballerina، آن چیزی است که از شبکه و ساختارهای داده رایج اینترنتی پشتیبانی می کند و شامل واسط هایی برای تعداد زیادی پایگاه داده و خدمات اینترنتی است. Ballerina برای ساده‌سازی توسعه ریزسرویس‌های توزیع‌شده با آسان‌تر کردن ادغام APIها و انجام این کار به گونه‌ای طراحی شده است که برای برنامه‌نویسان C، C++، C# و جاوا احساس آشنایی داشته باشد.

در اصل، Ballerina یک زبان کامپایل شده شبیه C است که دارای ویژگی‌هایی برای JSON، XML، و داده‌های جدولی با جستارهای یکپارچه زبانی شبیه به SQL، همزمانی با نمودارهای توالی و رشته‌های مدیریت شده با زبان، نمودارهای توالی زنده همگام‌سازی شده با منبع است. کد، انواع منعطف برای استفاده هم در داخل برنامه ها و هم در رابط های سرویس، مدیریت خطاهای صریح و ایمنی همزمان، و شبکه های اولیه تعبیه شده در زبان.

دو اجرا از Ballerina وجود دارد. نسخه موجود در حال حاضر، jBallerina، دارای یک زنجیره ابزار پیاده سازی شده در جاوا، بایت کد جاوا کامپایل می شود، روی ماشین مجازی جاوا اجرا می شود و با برنامه های جاوا تعامل دارد. یک نسخه جدیدتر، منتشر نشده (و ناقص)، nBallerina، با استفاده از LLVM و یک رابط تابع خارجی C ارائه می کند. jBallerina در حال حاضر می تواند تصاویر بومی GraalVM را به صورت آزمایشی از CLI خود تولید کند و همچنین می تواند مصنوعات ابری برای Docker و کوبرنتیس Ballerina دارای ماژول های رابط برای پایگاه های داده PostgreSQL، MySQL، Microsoft SQL Server، Redis، DynamoDB، Azure Cosmos DB، MongoDB، Snowflake، Oracle Database و JDBC است.

برای توسعه، Ballerina یک افزونه Visual Studio Code برای ویرایش منبع و گرافیک و اشکال زدایی ارائه می دهد. یک ابزار خط فرمان با چندین ویژگی مفید. سندباکس مبتنی بر وب؛ و یک پوسته REPL (حلقه خواندن، ارزیابی، چاپ). Ballerina می تواند با طرحواره های OpenAPI، GraphQL و gRPC کار کند. دارای یک پلتفرم به اشتراک گذاری ماژول به نام Ballerina Central و یک کتابخانه بزرگ از نمونه ها. ابزار خط فرمان یک سیستم ساخت و یک مدیر بسته، همراه با تولیدکننده‌های کد و پوسته تعاملی REPL را فراهم می‌کند.

در نهایت، Ballerina یکپارچه‌سازی با Choreo، مدیریت API میزبانی ابری WSO2 و راه‌حل یکپارچه‌سازی را برای قابلیت مشاهده، CI/CD و devops، با هزینه ای ناچیز. بالرین خود منبع باز رایگان است.

هوش مصنوعی مولد شروع سختی دارد

زبان بالرین

زبان بالرینا عناصر آشنا از زبان‌های شبیه به C را با ویژگی های منحصر به فرد. برای مثال با استفاده از عناصر آشنا، در اینجا یک برنامه “Hello, World” با متغیرها وجود دارد:

import ballerina/io;
string greeting = "Hello";
public function main() {
    string name = "Ballerina";
    io:println(greeting, " ", name);
}

هر دو نوع int و float ۶۴ بیتی در Ballerina امضا شده اند. رشته ها و شناسه ها یونیکد هستند، بنابراین می توانند زبان های زیادی را در خود جای دهند. رشته ها تغییر ناپذیرند. این زبان از روش ها و همچنین توابع پشتیبانی می کند، به عنوان مثال:

// You can have Unicode identifiers.
function พิมพ์ชื่อ(string ชื่อ) {
    // Use \u{H} to specify character using Unicode code point in hex.
   io:println(ชื่\u{E2D});
}
string s = "abc".substring(1, 2);
int n = s.length();

در Ballerina، nil نام چیزی است که معمولاً null نامیده می‌شود. علامت سوال بعد از تایپ آن را باطل می کند، مانند سی شارپ. یک جفت پرانتز خالی به معنای nil است.

int? v = ();

آرایه‌ها در Ballerina از براکت‌های مربع استفاده می‌کنند:

int[] v = [1, 2, 3];

Ballerina نقشه‌ها ساختارهای کلیدی-مقدار انجمنی هستند، شبیه به فرهنگ لغت Python:

map<int> m = {
    "x": 1,
    "y": 2
};

رکوردهای بالرین شبیه ساختارهای C هستند:

record { int x; int y; } r = {
    x: 1,
    y: 2
};

شما می توانید انواع و رکوردهای نامگذاری شده را در Ballerina، شبیه به C typedefs تعریف کنید:

type MapArray map<string>[];
MapArray arr = [
    {"x": "foo"},
    {"y": "bar"}
];
type Coord record {
    int x;
    int y;
};

شما می توانید یک اتحاد از انواع مختلف با استفاده از کاراکتر | ایجاد کنید:

type flexType string|int;
flexType a = 1;
flexType b = "Hello";

Ballerina از استثناها پشتیبانی نمی کند، اما از خطاها پشتیبانی می کند. کلمه کلیدی بررسی مختصری برای بازگشت است اگر نوع آن خطا باشد:

function intFromBytes(byte[] bytes) returns int|error {
    string|error ret = string:fromBytes(bytes);
    if ret is error {
        return ret;
    } else {
        return int:fromString(ret);
    }
}

این همان تابعی است که از check به جای اگر ret خطا است { return ret استفاده می کند:

function intFromBytes(byte[] bytes) returns int|error {
    string str = check string:fromBytes(bytes);
    return int:fromString(str);
}

شما می توانید با کلمه کلیدی panic خطاهای غیرعادی را کنترل کرده و آنها را کشنده کنید. با استفاده از نویسه _ شبیه پایتون می توانید مقادیر و خطاهای بازگشتی را نادیده بگیرید.

بالرین دارای یک نوع هر، کلاس و شی است. ایجاد شی از کلمه کلیدی new مانند جاوا استفاده می کند. انواع enum بالرین، بر خلاف C، میانبرهایی برای اتحادیه های ثابت های رشته هستند. عبارت match مانند switch case است. بیانیه در C، فقط انعطاف پذیرتر است. Ballerina اجازه استنتاج نوع را به یک کلمه کلیدی var می دهد. توابع در Ballerina انواع درجه یک هستند، بنابراین Ballerina می تواند به عنوان یک زبان برنامه نویسی کاربردی استفاده شود. Ballerina از برنامه نویسی ناهمزمان با کلیدواژه های start، future، wait و cancel پشتیبانی می کند. اینها در رشته‌ها اجرا می‌شوند که رشته‌های منطقی هستند.

سی شارپ محبوبیت زبان جاوا را به چالش می کشد

Ballerina خدمات شبکه متمایز ارائه می‌کند، جدول و انواع XML، همزمان و تراکنش، و ویژگی های پیشرفته مختلف. همه اینها ارزش کاوش دقیق را دارند. چیزهای زیادی وجود دارد که بتوانم در اینجا خلاصه کنم. برنامه در تصویر زیر باید به شما احساس برخی از آنها را بدهد.

ballerina 01

این مثال در صفحه اصلی Ballerina، کد و نمودار توالی برنامه‌ای را نشان می‌دهد که مسائل GitHub را از یک مخزن بیرون می‌کشد و هر شماره را به عنوان یک ردیف جدید به صفحه Google اضافه می‌کند. کد و نمودار پیوند داده شده است. تغییر در یکی، دیگری را به روز می کند. توکن‌های دسترسی باید قبل از اجرای برنامه در علامت‌های سوال پر شوند و ballerinax/googleapis.sheets باید از Ballerina Central خارج شود، یا با استفاده از عملکرد کد “Pull unresolved modules” در VS Code یا با استفاده از bal دستور pull را از CLI بکشید.

کتابخانه‌ها و برنامه‌های افزودنی استاندارد Ballerina

بیش از هزار بسته در مخزن مرکزی Ballerina وجود دارد. آنها شامل کتابخانه استاندارد Ballerina (ballerina/*)، برنامه های افزودنی نوشته شده توسط Ballerina (ballerinax/*) و چند نسخه نمایشی و برنامه های افزودنی شخص ثالث هستند.

کتابخانه استاندارد اینجا مستند شده است. برنامه‌های افزودنی نوشته‌شده توسط Ballerina معمولاً به محصولات شخص ثالث مانند پایگاه‌های داده، سیستم‌های مشاهده‌پذیری، جریان‌های رویداد و APIهای وب متداول مانند GitHub، Slack و Salesforce متصل می‌شوند.

هرکسی می‌تواند سازمانی ایجاد کند و بسته‌ای را به Ballerina Central منتشر کند. توجه داشته باشید که تمام بسته های موجود در این مخزن عمومی هستند. البته می توانید کد خود را به GitHub یا مخزن کد منبع دیگری متعهد کنید و دسترسی به آن را کنترل کنید.

نصب Ballerina

می توانید با دانلود بسته مناسب برای سیستم Windows، Linux، یا macOS خود، Ballerina را نصب کنید و سپس اجرا کنید. نصب کننده گزینه های نصب دیگری نیز وجود دارد، از جمله ساختن آن از کد منبع. سپس bal version را از خط فرمان اجرا کنید تا نصب موفق را تأیید کنید.

علاوه بر این، باید افزونه Ballerina را برای Visual Studio Code نصب کنید. می‌توانید با اجرای View -> Command Palette -> Ballerina دوباره بررسی کنید که برنامه افزودنی به درستی در VS Code نصب شده است. شما باید حدود ۲۰ فرمان را ببینید.

خط فرمان bal

خط فرمان bal ابزاری برای مدیریت کد منبع Ballerina است. که به شما در مدیریت بسته ها و ماژول های Ballerina، تست، ساخت و اجرای برنامه ها کمک می کند. همچنین شما را قادر می سازد تا به راحتی بین توزیع های Ballerina نصب، به روز رسانی و جابجا شوید. تصویر صفحه زیر را ببینید، که بخشی از خروجی bal help را نشان می‌دهد، یا به اسناد.

TypeScript نقطه درد باریک شدن نوع را تسکین می دهد

ballerina bal help lg

bal help دستورات فرعی مختلف موجود از خط فرمان Ballerina را نشان می دهد. این دستورات شامل کامپایل، بسته بندی، تولید داربست و کد و تولید مستندات است.

نمونه‌های بالرین

بالرین نمونه‌های بسیاری دارد. می‌توانید آنها را در صفحه یادگیری Ballerina by Example و همچنین در VS Code با اجرای دستور Ballerina: Show Examples. مرور مثال‌ها راه دیگری برای یادگیری برنامه‌نویسی Ballerina است. این مکمل خوبی برای آموزش ها و مستندات است و از کشف بدون ساختار و همچنین جستجوهای عمدی پشتیبانی می کند.

یک احتیاط در مورد مثال‌ها: همه آنها به خودی خود توضیحی نیستند، گویی کارآموزی که محصول را می‌شناخت بدون اینکه به یادگیرندگان فکر کند یا نظر کاربران ساده لوح را داشته باشد، آنها را نوشته است. از سوی دیگر، بسیاری از ها خود توضیحی هستند و/یا دارای پیوندهایی به اسناد و کد منبع مربوطه هستند.

به عنوان مثال، در مرور نمونه‌ها متوجه شدم که Ballerina یک چارچوب آزمایشی دارد، Testarina ، که در ماژول ballerina/test تعریف شده است. ماژول test حاشیه نویسی لازم را برای ساخت مجموعه آزمایشی تعریف می کند، مانند @test:Config {} و اظهارات ممکن است انتظار داشته باشید اگر با JUnit، تست‌های واحد Rails، یا هر چارچوب آزمایشی مشابه، برای مثال ادعای test:assertEquals(). ماژول test همچنین راه‌هایی را برای تعیین توابع راه‌اندازی و حذف، مشخص کردن توابع ساختگی، و ایجاد وابستگی‌های آزمایشی تعریف می‌کند.

نمونه‌های بالرین

نمونه‌های بالرین، همانطور که از دستور Ballerina: Show Examples در VS Code مشاهده می‌شود. عملکرد مشابه آنلاین در دسترس است.

به طور کلی، Ballerina یک زبان برنامه نویسی مفید و غنی برای هدف مورد نظر خود است که برنامه نویسی ابر محور است و منبع باز رایگان است. این سریعترین ماژول‌های زمان اجرا را که تا به حال استفاده کرده‌ام تولید نمی‌کند، اما این مشکل هم توسط تصاویر بومی آزمایشی GraalVM و هم برنامه‌ریزی‌شده nBallerina، که به کد بومی کامپایل می شود.

در این مرحله، Ballerina ممکن است ارزش پذیرش پروژه‌های داخلی را داشته باشد که خدمات اینترنتی را ادغام می‌کنند و نیازی به اجرای سریع یا زیبا بودن ندارند. مطمئناً قیمت مناسب است.

هزینه: Ballerina Platform و Ballerina زبان: منبع باز رایگان تحت مجوز آپاچی ۲.۰. میزبانی Choreo: 150 دلار به ازای هر مؤلفه در ماه پس از پنج مؤلفه رایگان، به اضافه هزینه‌های زیرساخت.

پلتفرم: Windows، Linux، macOS؛ کد ویژوال استودیو.