انتخاب زبان برنامه نویسی مناسب و برتر

فهرست مطالب
در اصل برنامه نویسی ستون اصلی ایجاد یا توسعه یک بلاک چین است. هر حرکتی از طریق برنامهنویسی در بلاکچین تعریف میشود. بنابراین تمامی امور از ایجاد دفتر کل غیرمتمرکز گرفته تا ساخت یک قرارداد هوشمند، همگی با برنامه نویسی مهیا میشوند.
واقعیت این است که هر برنامهای ویژگیها، مزایا و معایبی دارد و مناسب برای هدفی خاص است. به طور مثال، زبان برنامهنویسی سیمپلیسیتی (Simplicity) مخصوص قراردادهای هوشمند است.
برخی از محبوب ترین زبان های برنامه نویسی که برای توسعه بلاک چین استفاده می شوند عبارتند از زبان سی پلاس پلاس (++C)، سالیدیتی (Solidity)، پایتون (Python)، سیمپلیسیتی (Simplicity) و جاوا (Java). زبان سالیدیتی تنها زبان برنامه نویسی جدیدی است که برای نوشتن قراردادهای هوشمند مبتنی بر اتریوم طراحی شده است. زبان های دیگر، زبانهای برنامه نویسی رایج و محبوب هستند.
پلتفرمهای بلاکچین زیادی با استفاده از این زبانها برنامهنویسی شدهاند و هریک ویژگیها، مزایا و معایب خاص خود را دارند.
اگر بخواهم در آینده به یک توسعهدهندهی بلاک چین تبدیل بشوم از کجا باید شروع کنم؟ چه زبانی برای شروع برنامهنویسی بلاک چین بهتر است؟ اگر ایدهای در حوزهی ارزهای دیجیتال و سیستمهای توزیعشده داشته باشم با چه زبانی میتوانم آن را پیادهسازی کنم؟ اینها سؤالاتیاست که ممکن است این روزها به ذهن بسیاری از علاقهمندان فناوری بلاک چین برسد. در این مقاله سعی کردیم تا راهنمایی برای انتخاب زبان برنامهنویسی مناسب برای تازهواردان گردآوری کنیم.
بهترین زبان برای برنامهنویسی بلاک چین
پاسخ این است که زبان یکتایی وجود نداشته و بر اساس اینکه چه پروژهای میخواهید انجام دهید کاملا متغیر است. زبانهای برنامهنویسی متعددی برای اینکار وجود دارد. ابتدا باید ببینید کدامیک از ارزهای دیجیتال، پلتفرم پایهی پروژهی شما را تشکیل داده و چه عملکردی از آن انتظار دارید. شما میتوانید لیست محبوبترین زبانهای برنامهنویسی در سال ۲۰۱۸ را از وبسایتهای ieee و یا tiobe ببینید.
ممکن است توسعهدهندهای زبان C# را برای کار خود انتخاب کند درحالیکه توسعهدهندهی دیگری اسکریپتهای پایتون و یا جاوا اسکریپت همیشه محبوب را ترجیح دهد. میبینید کاملا بستگی به هدف شما دارد.
بخش های تحت پوشش برنامه نویسی بلاکچین
به طور کلی برنامهنویسی بلاکچین چهار بخش زیر را پوشش میدهد:
- راهاندازی یکICO
- ساخت یکقرارداد هوشمند و یا برنامه غیرمتمرکز (Dapp)
- ارتقاء یک بلاک چین موجود و یا ایجاد یک بلاک چین جدید
- ساخت یک دفتر کل غیرمتمرکز نظیرهایپرلجر فابریک (fabric)
اگر قصد برنامهنویسی در هر یک از حوزههای بالا را داشته باشید، ابتدا باید فناوری بلاک چین را کاملا درک کرده باشید. پیشنهاد میشود ابتدا مفاهیم پایهای بلاک چین و کاربردهای آن را مطالعه کرده و سپس حوزهی مورد علاقهی خود را انتخاب نمایید. ما دو کتاب زیر را برای آشنایی با مفاهیم کلی پیشنهاد میکنیم:
- تسلط بر بلاک چین: Mastering Blockchain by Imran bashir
- تسلط بر بیت کوین: Mastering bitcoin By Andreas M Antonopolos
پس از مطالعهی مبانی این کار، قادر به تصمیمگیری خواهید بود. اگر قصد توسعهی کامل یک بلاک چین جدید را داشته باشید، احتمالا به زبان برنامهنویسی ++C نیاز خواهید داشت. اما ممکن است تصمیم بگیرید به جای توسعهی یک بلاک چین از صفر، از پروژههای منبعبازی مانند بیت کوین و یا اتریوم استفاده کنید.
اگر قصد ساختن یک قرارداد هوشمند (Smart Contract) بر بستر اتریوم را داشته باشید، به یادگیری زبان برنامهنویسی سالیدیتی (Solidity) نیاز خواهید داشت. برای اینکار میتوانید به راهنمای ساخت قرارداد هوشمند رجوع کنید.برای توسعهی پروژههایی نظیر هایپرلجر فابریک، به زبانهای برنامهنویسیای نظیر زبان گو (Go) نیاز خواهید داشت
معیارهای انتخاب زبان
1- امنیت (Security)
دیوید شوارتز (David Schwartz) چه زیبا بیان کرده است که بلاکچینها باید همانند دژهای نظامی مستحکم باشند. نخست آنکه کد آنها عمومی بوده و برای همگان قابل مشاهده است. همه میتوانند کد مربوط به آنها را بررسی کرده و نقاط ضعف امنیتی و باگها را پیدا کنند. با این وجود برخلاف سایر پروژههای منبعباز (Opensource)، یافتن آسیبپذیری در یک بلاک چین تبعات زیانبار بیشتری دارد. پیدا کردن چنین باگهایی میتواند منجر به هک سیستم و سرقت میلیونها دلار شود. درست به همین دلیل پروسهی توسعهی یک بلاک چین معمولا بسیار آهسته پیش میرود.
2-مدیریت منبع (Resource management)
توسعه باید همگام با نیازهای شبکه باشد. نمیتوان این نیازها را از ابتدا در نظر نگرفته و بعدا به آنها پرداخت. شما باید به خوبی سیستم خود را برای پرسشهای (queries) محلی و از راه دور (Remote) آماده کنید.
3-کارایی (Performance)
یک بلاک چین باید همیشه بالاترین قابلیتهای خود را ارائه کند. برای این هدف زبان برنامهنویسی که انتخاب میشود باید بسیار انطباقپذیر باشد. نکتهی مهم اینجاست که بسیاری از دستورالعملهایی که در بلاک چین انجام میشوند قابلیت اجرا به صورت موازی را داشته و تعدادی از آنها فاقد چنین قابلیتی هستند.
یکی از وظایفی که قابلیت موازیسازی در بلاک چین را دارد، تایید امضای دیجیتال (digital signature) است چراکه تنها چیزی که برای تایید نیاز دارید یک کلید، یک تراکنش و یک امضا است. تنها با استفاده از سه داده، میتوانید تاییدات را به موازات وظایف دیگر انجام دهید.
تمام توابع یک بلاک چین، چنین خاصیتی ندارند به عنوان مثال اجرای یک تراکنش را در نظر بگیرید. چندین تراکنش برای جلوگیری از مشکلاتی نظیر دوبار خرج کردن (Double spend) نمیتوانند به صورت کاملا موازی اجرا شوند. برخی زبانهای برنامهنویسی برای پیادهسازی توابع به شکل موازی مناسبتر هستند.
4-جداسازی (Isolation)
رفتار قطعی (Deterministic)
اگر (A + B = C) باشد، بدون در نظر گرفتن هیچ پیششرطی، همواره عبارت (A+B) برابر با C خواهد بود. توابع هش (Hash function) نیز قطعی هستند و این بدین معنا است که هش متغیر A، همواره برابر با HA خواهد بود. بنابراین در یک بلاک چین،تمامی عملیات مربوط به تراکنشها باید قطعی باشند. یک تراکنش نمیتواند در دو روز رفتاری متفاوت داشته باشد. همچنین یک قرارداد هوشمند نیز نمیتواند در دو ماشین رفتاری متفاوت داشته باشد.
پیادهسازی چنین المانی تنها از طریق جداسازی و یا ایزوله کردن تراکنشها و قراردادهای هوشمند از عناصری است که عدم قطعیت در آنها وجود دارد.