همه چیز C++ نیست

فناوری بلاک چین بسیار جذاب و پرطرفدار شده است. مخصوصاً برای توسعه‌دهندگان، آنچه را که در مورد فناوری می‌دانید و درک کرده اید به چالش می‌کشد. بنابراین، فناوری بلاک چین خیلی زود من را جذب کرد. مانند تمام زمینه های فناوری، چیزی است که می توانیم از آن بیاموزیم. بنابراین، بلاک چین ها از کدام زبان های برنامه نویسی استفاده می کنند؟ و چه چیزی انتخاب آنها را توجیه می کند؟ بیایید ببینیم دنیای جدید چگونه ساخته می شود!

Cardano - Haskell

من عاشق بلاک چین کاردانو هستم. برای همین خیلی میخواستم بفهمم که از چه چیزی ساخته شده است. هنگام انجام این کار، من شگفت زده شدم: Haskell زبان برنامه نویسی است که کاردانو را با آن ساخته اند. تقریباً همه چیز، کیف پول، گره‌ها و زبان قرارداد هوشمند، بر اساس Haskell هستند. اما هاسکل چیست؟

حتما نام این زبان برنامه نویسی را شنیده اید. با این حال، بیشتر افراد نمی دانند چیست. تقصیر آنها نیست. Haskell به عنوان یک زبان برنامه نویسی چندان محبوب نیست.

پارادایم هسکل برنامه نویسی تابعی (Functional programming)است. این زبان شما را مجبور به نوشتن کد تابعی می کند. همه چیز حول توابع و داده های تغییرناپذیر می چرخد. بنابراین، به اصطلاح اثرات جانبی به سبک Haskell وجود ندارد. اثرات جانبی؟ این نام برای عملیاتی مانند تغییر مقدار یک متغیر سراسری از داخل یک تابع است.

مسلما نوشتن کدهای کاملا کاربردی حداقل برای من سخت است. با این حال، هر چیزی که بیشتر چالش برانگیز است، در جایی جواب می دهد. در مورد Haskell، ممکن است بپرسید کد نوشته شده شما چقدر قابل اعتماد است. دقیقاً به همین دلیل است که بلاک چین کاردانو Haskell را به عنوان محرک اصلی خود انتخاب کرد – آنها آن را به عنوان یک انتخاب عالی برای ساخت کد قابل اعتماد توصیف می کنند که برای ساخت یک بلاک چین ضروری است.

همچنین هاسکل در دنیای آکادمیک کاملاً مشهور است. به خصوص در بین ریاضیدانان، Haskell محبوبیت بیشتری پیدا می کند - بنابراین، یک انتخاب عالی برای تیم Cardano است که شامل تعداد زیادی دکترای ریاضی است.

Algorand - Go and C

الگوراند در چند وقت گذشته سر به فلک کشیده و در حال حاضر (زمان نوشتن این مقاله) در جایگاه 18 در ارزش بازار قرار دارد. همچنین، Algorand یکی از پروژه های بلاک چین مورد علاقه من است. جالب: زبان برنامه نویسی اصلی آن، Go نیز یکی از زبان های مورد علاقه من است. برای من، گولانگ همان کودکی است که اگر پایتون و سی بچه دار میشدند به وجود می آمد.

پایتون به دلیل سینتکس آسان و منحنی یادگیری شیب دار معروف است. گلانگ هم این را دارد. سینتکس بسیار خوانا است و با Go می توانید به سرعت وارد برنامه نویسی شوید. از طرف دیگر C یک زبان برنامه نویسی بسیار کارآمد و سطح پایین است. Go همچنین عملکرد خوب و برنامه نویسی سطح پایین را ارائه می دهد.

همچنین پارادایم C برنامه نویسی ضروری (Imperative programming) است که رایج ترین سبک در Go نیز می باشد.

Go از زمان انتشار خود به ویژه در دنیای سرورهای حرفه ای محبوبیت پیدا کرده است. برنامه نویسان Go که من می شناسم ادعا کردند که این زبان برای کار در تیم های بزرگتر حتی برای ساختن نرم افزارهای پیچیده خوب است.

Algorand به وضوح چنین موردی است. در حالی که Go به عنوان زبان اصلی استفاده می شود، از بستگان نزدیک آن نیز استفاده می شود. وقتی نگاهی به GitHub Algorand انداختم، متوجه شدم که بسیاری از کتابخانه‌ها و کدهای موجود برای رمزنگاری به زبان C نوشته شده‌اند. این ممکن است به دلیل وجود مقدار زیادی کد C برای اهداف بلاک چین باشد، و همچنین به دلایل عملکرد. ولی کد بسته بندی این کتابخانه ها Go است.

Polkadot - Rust

من واقعا پولکادوت را درک کردم. به نظر می رسد هدف اصلی آن یک بلاک چین برتر است که سایرین می توانند بر روی آن بلاک چین خودرا بسازند. شبکه اصلی Polkadot زنجیره رله نامیده می شود. بلاک چین های ایجاد شده توسط کاربر، پاراچین نامیده می شوند. من این را ذکر می کنم زیرا برای درک زبان برنامه نویسی Polkadot به آن نیاز داریم.

بنابراین، برای اجازه دادن به کاربران برای ساخت بلاک چین های سفارشی، یک پیش نیاز لازم است : چارچوبی برای ساخت یک بلاک چین. تیم توسعه Polkadot این چارچوب را ارائه می دهد: Substrate.

اما اصلاً چرا این چارچوب؟ خوب، Substrate را می توان مانند هر کتابخانه یا چارچوبی در دنیای فناوری در نظر گرفت - React، NumPy، Express.js و غیره. هدف آنها: ارائه کد کاربردی به کاربر برای ایجاد پروژه خود بدون اختراع مجدد چرخ. Substrate شبکه سازی، اجماع، رای گیری بلوک و موارد دیگر را ارائه می دهد. سعی می کند همه چیز را برای ساختن یک بلاک چین کاربردی پوشش دهد.

برای رسیدن به این هدف، Substrate بر روی یک سندباکس یک WebAssembly برای زمان اجرا می‌سازد. WebAssembly؟ بله، قالب کد ماشین برای وب - خوب، در ابتدا برای وب. مزیت WASM این است که پلتفرم آگنوستیک است - می تواند دستورالعمل های یکسانی را در همه ماشین ها اجرا کند. این یک مزیت بزرگ در هنگام ساختن چنین نرم افزارهای پیچیده و توزیع شده ای مانند بلاک چین است.

در نهایت، Rust وارد بازی می شود. زبان برنامه نویسی واقعاً کارآمد است و برای ساخت برنامه های سطح سیستم استفاده می شود. همچنین Rust یک زبان برنامه نویسی عالی برای کامپایل شدن در WebAssembly است.

Bitcoin - C++

این یکی سخته در حالی که می‌توانیم درباره اظهارات نویسندگان بلاک چین برای انتخاب یک زبان برنامه‌نویسی تحقیق کنیم، در مورد بیت کوین نمی‌توانیم این کار را انجام دهیم. هیچ کس نمی داند ساتوشی ناکاموتو کیست، و او تغییر این موضوع را آسان نمی کند.

من نتوانستم هیچ اظهاراتی از طرف او پیدا کنم که چرا C++ را برای بیت کوین انتخاب کرد. حدس زدن تنها کاری است که می توانیم انجام دهیم. خوشبختانه، چند دلیل خوب برای استفاده از C++ وجود دارد - حداقل به گفته برخی از افرادی که زبان را با جزئیات می دانند (من نمی دانم).

C++ یک زبان برنامه نویسی واقعاً شناخته شده است. تقریباً 40 سال است که وجود دارد و در پروژه های زیادی مورد استفاده قرار می گیرد. سیستم‌عامل‌ها، بازی‌های ویدیویی، وب سرورها، میکروکنترلرها و غیره - C++ همه جا وجود دارد.

به دلیل این استفاده، C++ همچنین مجموعه‌ای از کتابخانه‌ها را ارائه می‌کند که می‌توان از آنها برای ساخت یک بلاک چین استفاده کرد - به خصوص وقتی صحبت از رمزنگاری به میان می‌آید.

در کنار همه کدهای شخص ثالث، C++ همچنین عملکرد عالی را ارائه می دهد و ویژگی هایی برای عملکرد بهتر کد ارائه می دهد. برخی ادعا می کنند، قابلیت های مدیریت حافظه سطح پایین، نوشتن نرم افزار قابل اعتماد را آسان تر می کند. دیگران ادعا می کنند، استفاده نادرست از مفاهیم پیشرفته مانند آنچه در C++ ارائه می شود آسان است - و بنابراین، یک مشکل بزرگ برای قابلیت اطمینان است.

احتمالاً هرگز نخواهیم فهمید که چرا ساتوشی C++ را انتخاب کرد.

 

 

منبع :betterprogramming.pub