بسیاری از زبانهای مختلف برنامه نویسی رایانه در برنامه نویسی cryptocurrency به کار می روند.
در این مقاله ، ما به پروژه های cryptocurrency و زبانهایی که آنها استفاده می کنند ، می پردازیم.
ما به طور خلاصه در مورد هر زبان در حالی که ویژگی های اصلی آنها ، دشواری یادگیری و نحوه استقرار آنها در پروژه های مختلف نرم افزاری Crypto را مورد بحث قرار می دهیم ، بحث می کنیم.
هاسکل
هاکل تنها هدف کلی برنامه نویسی کاملاً کاربردی (FP) در جهان است. گویشهای کاملاً کاربردی دیگری نیز وجود دارد ، اما آنها معمولاً محدود به برنامه های خاص دامنه هستند.
در این واقعیت بی نظیر است که بر خلاف زبانهای عملکردی/شی گرا مانند Scala و OCAML ، هیچ استثنائی در الگوی برنامه نویسی کاربردی امکان پذیر نیست. این خلوص کاربردی باعث می شود هاکل به زبان مورد علاقه ریاضیدانان ، منطقیان و علاقه مندان به FP باشد. رمزنگاران معمولاً از این زمینه های تحصیلی ناشی می شوند ، بنابراین هاکل به آرامی در زمینه توسعه رمزنگاری در حال رشد است.
کاملاً کاربردی
چرا الگوی کاملاً کاربردی در توسعه نرم افزار رمزنگاری و blockchain مطلوب است؟دلایل زیادی برای این امر وجود دارد ، اما ما به برخی از مهمترین موارد نزدیک خواهیم شد.
در مرحله اول ، برنامه نویسی کاملاً کاربردی به این معنی است که داده ها تغییر ناپذیر هستند و فقط توابع می توانند ورودی را دستکاری کرده و خروجی متفاوتی تولید کنند. در هاکل شما نمی توانید بگویید که یک متغیر برابر با شماره 3 است و سپس می گویید برابر با شماره 10 استواداین یک ویژگی بسیار خاص در سیستم های غیرمتمرکز است. خود blockchain تغییر ناپذیر است و هنگامی که میلیون ها کاربر به طور همزمان پردازش داده ها را پردازش می کنید ، تضمین تغییر ناپذیری مهم است تا پردازش موازی این داده ها بدون توجه به جایی که اتفاق می افتد ، نتیجه مشابهی را تولید کند. میلیون ها گره معاملات blockchain را به طور همزمان پردازش می کنند و همه آنها باید به یک اجماع یکسان برسند. بنابراین داده های برنامه نویسی کاربردی ناپایدار بودن یک ویژگی بسیار مطلوب در برنامه های غیرمتمرکز موازی است.
تأیید نرم افزار رسمی
ثانیاً ، سیستم های نرم افزاری به طور رسمی تأیید شده ، مانند دستیار اثبات COQ ، به زبانهای برنامه نویسی کاربردی نوشته شده اند. این به این دلیل است که تأیید رسمی از مفاهیم ریاضی استفاده می کند و زبانهای عملکردی بسیار نزدیک به اصول ریاضی هستند. در حقیقت ، ریاضیدانان معمولاً در خانه کار با FP احساس می کنند ، به ویژه هنگامی که مفاهیم برنامه نویسی را که مستقیماً از ساختارهای جبری مانند موناد ، عملکردهای جزئی ، تنظیم مفاهیم نظری و غیره استفاده می کنند ، استفاده می کنند.
منحنی یادگیری شیب دار
منحنی یادگیری Haskell ، به ویژه برای افراد غیر گرا ، شیب دار است. برنامه نویسان شیء گرا یا ساختار یافته با تجربه با تجربه طولانی در این پارادایم ها معمولاً با یادگیری هاسکل با مشکل روبرو می شوند. برخی از آموزش های Haskell با گفتن "فراموش کنید که قبلاً در مورد برنامه نویسی آموخته اید" را فراموش کنید و این هیچ تفاهدی نیست. Haskell به یک دیدگاه کاملاً متفاوت از توسعه نرم افزار نیاز دارد تا آنچه در اکثر زبانهای برنامه نویسی محبوب دیگر استفاده می شود.
Cardano ADA از زبان برنامه نویسی Haskell برای فناوری اصلی خود استفاده می کند.
جاذب
JavaScript (JS) یک زبان اسکریپت تمام هدف است که نحو آن را از جاوا گرفته است.(در غیر این صورت به هیچ وجه به جاوا مربوط نمی شود.) JS برای مرورگر وب Netscape Navigator در دهه 1990 ساخته شد. به معنای این بود که صفحات وب پویاتر شود و در ابتدا برای کارهای بسیار ناچیز مانند فشار دکمه های متحرک و سایر لک های گرافیکی زمان مورد استفاده قرار می گرفت. یک نبرد کوتاه بین جاوا اسکریپت و جاوا اپلت ها وجود داشت ، اما اپلیکورهای سابق وون و جاوا اکنون فقط در برنامه های بسیار خاص استفاده می شوند.
سست تایپ شده
JavaScript با فراز و نشیب با محبوبیت روبرو شد و با گذشت زمان سهم خود را از انتقادات متحمل شد ، به خصوص در مورد سیستم نوع بسیار سست آن که به اعداد اجازه می داد تا به انواع دیگری از مقادیر در تبدیل های ضمنی تبدیل شوند که گاهی اوقات نتایج غیر شهودی را به وجود می آورد.
بیشتر انتقادات هنگامی که گوگل جاوا اسکریپت را پذیرفت ، از بین رفت و تصمیم گرفت آن را به آنچه امروز JS می شناسیم ، توسعه دهد.
node. js را وارد کنید
موتور JavaScript Google بعداً از مرورگر Chrome استخراج شد و به یک مترجم مستقل JS تبدیل شد و جامعه کاملاً جدیدی از توسعه دهندگان را در اطراف پروژه Node. js برانگیخت.
گره به همان سرعت یا سریعتر از سایر زبانهای برنامه نویسی شد و JavaScript یک جایگزین جدی برای سایر محیط های برنامه نویسی سمت سرور شد. فیس بوک آتش JS را با React. JS ، یک چارچوب جلوی و Google نیز به راه حل جلوی خود با Angular. js ارائه داد. کتابخانه jQuery برنامه نویسی مرورگر DOM را بسیار ساده و میلیون ها کاربر به دست آورد.
آسان برای یادگیری
منحنی یادگیری JavaScript بسیار کم عمق است. این یک زبان آسان برای یادگیری است. البته این دارای اشکالاتی است ، زیرا به دلیل سیستم شل از نوع شل که به اعداد ، رشته ها ، اشیاء و هر چیز دیگری اجازه می دهد تا با هم در هم آمیخته شوند و به طور قابل ملاحظه ای استفاده می شود ، با استفاده از JS بسیار آسان است و به آنها امکان می دهد تا با هم مخلوط شوند و به طور قابل ملاحظه ای استفاده کنند و با بسیاری از تبدیل های ضمنی که در آن اتفاق می افتد استفاده می شود. پس زمینه.
در جهان cryptocurrency ، وقتی JavaScript را می شنوید ، ممکن است Ethereum را نیز بگویید. اگرچه بسیاری از پروژه های رمزنگاری در مقیاس بزرگ از JavaScript استفاده می کنند ، Ethereum اولین کسی بود که یک جلوی کامل را که در JavaScript منتشر شده از C ++ بیت کوین (که تا آن زمان توسط اکثر سکه ها استفاده می شد) مستقر کرد. ارزهای رمزپایه جدید همه از JavaScript به یک روش یا روش دیگر استفاده می کنند.
اوج
OCAML یک زبان برنامه نویسی کاربردی است که از ML مشتق شده است.
همانطور که در بخش در مورد هاکل اشاره کردیم ، معمولاً زبانهای برنامه نویسی عملکردی می توانند به طور رسمی تأیید شوند. در حقیقت ، دستیار اثبات COQ ، که برای تأیید نرم افزار رسمی استفاده می شود ، می تواند 100 ٪ کد OCAML صحیح را تولید کند.
OCAML کاملاً مناسب است و می تواند برای هر نوع برنامه نویسی ، از توسعه سطح سیستم گرفته تا باکترهای سیستم تجاری مبتنی بر داده ها استفاده شود.
cryptocurrency tezos در OCAML نوشته شده است و دارای اجزای رسمی تأیید شده است.
اگر می خواهید Tezos را گسترش یا اصلاح کنید ، ممکن است بخواهید OCAML را یاد بگیرید.
منحنی یادگیری OCAML
یادگیری OCAML می تواند دشوار باشد ، به خصوص اگر قبلاً هرگز به یک زبان کاربردی برنامه ریزی نکرده اید.
همان مشاهداتی که در مورد هاکل انجام دادیم در اینجا معتبر است. در حقیقت بیشتر زبانهای برنامه نویسی عملکردی از نظر مفهوم مشابه هستند. برای برنامه ریزی در یک الگوی کاربردی ، شما باید بسیاری از آنچه را که در نظریه زبان ضروری آموزش داده می شود ، "رها کنید".
به غیر از این ، OCAML یک زبان تمیز و ظریف است که قطعاً ارزش آن را در زرادخانه شما دارد.
Rust یک زبان برنامه نویسی در سطح سیستم نسبتاً جدید است که در توسعه cryptocurrency شروع به دستیابی به زمین می کند.
برخی از مؤلفه های جدید Cardano ، مانند اجرای کامل گره Jormungandr ، در Rust نوشته شده است.
منظور از زنگ زدگی پایین است در حالی که ویژگی های زبان مدرن را در خود جای داده است. کاربرد اصلی آن جایگزینی C++ به عنوان زبان توسعه سیستم های سطح پایین است.
سیستم های نوشته شده در Rust نیازی به مدیریت دستی حافظه و اشاره گرها ندارند. اما برخلاف جاوا، Rust به ماشین مجازی زمان اجرا نیاز ندارد. استراتژی مدیریت حافظه همراه با برنامه های Rust کامپایل شده است، به طوری که سربار زمان اجرا بسیار کمی وجود دارد. به همین دلیل، Rust برای توسعه ارزهای دیجیتال ایده آل است، زیرا روال های رمزنگاری را می توان به زبانی سریع و امن پیاده سازی کرد.
منحنی یادگیری زنگ
یادگیری زنگ نسبتا سخت است.
مانند C++، برای توسعه سیستم ها در نظر گرفته شده است. بنابراین شامل اهرم ها و سوئیچ های زیادی است که باید یاد بگیرید که با آنها کار کنید تا برنامه های کارآمد بنویسید.
در سطح پایه، نحو آن بسیار شبیه ترکیبی بین C و Scala است. می توانید راه حل های اصلی Rust را بدون دانستن کل زبان برنامه ریزی کنید.
همانطور که در ویژگی های زبان عمیق تر می شوید، Rust شروع به نشان دادن قدرت واقعی و تطبیق پذیری خود می کند. این زمانی است که شروع به متمایز شدن از سایر زبان ها می کند.
Go یک زبان برنامه نویسی سیستمی است که توسط راب پایک در گوگل توسعه یافته است.
در واقع Go به این دلیل نامگذاری شده است زیرا پیشوندی برای گوگل است. این یک زبان برنامه نویسی سطح پایین است که قصد دارد بسیار سریع باشد، مفاهیم مدرن را ارائه دهد اما نزدیک به ماشین بماند.
زبان Go برای برنامه نویسی رمزنگاری مناسب است، که معمولاً برای بهره برداری از بهینه سازی های آن نیازمند نزدیکی به سخت افزار کامپیوتر است.
منحنی یادگیری شیب دار: زبان سیستم ها
منحنی یادگیری Go می تواند شیب دار باشد. برای برنامه نویسان زبان C نسبتاً آشنا به نظر می رسد، اما این فقط به صورت سطحی است. توسعه دهندگانی که قصد ورود به حوزه Go را دارند، باید قبل از اینکه به خوبی در این زبان مسلط شوند، برای یادگیری بسیاری از مفاهیم پایه جدید آماده شوند.
Go زبانی است که در کلاینت فراگیر geth Ethereum استفاده می شود.
استحکام
Solidity یک زبان کامل تورینگ است که به طور خاص برای توسعه قراردادهای هوشمند طراحی شده است.
سینتکس آن بسیار شبیه به جاوا اسکریپت است، اما این زبان برخی از جنبه های پایتون و سی پلاس پلاس را نیز در خود جای داده است.
اتریوم اولین سیستمی بود که Solidity را از طریق فناوری EVM خود (ماشین مجازی اتریوم) به کار گرفت.
آسان برای یادگیری
یادگیری Solidity نسبتا آسان است.
نحو آن بصری است، به خصوص اگر با زبان های مبتنی بر C مانند جاوا یا جاوا اسکریپت آشنا باشید. Solidity همچنین نشانگر یا الزامات مدیریت حافظه پیچیده ای ندارد. EVM از تمام مدیریت حافظه برای ما مراقبت می کند.
بزرگترین چالش در توسعه قراردادهای هوشمند خود زبان نیست، بلکه منطق قراردادهای هوشمند است. جزئیات بسیار ظریف در طراحی قراردادهای هوشمند می تواند به مهاجمان اجازه دهد وجوه را سرقت کنند (به هک DAO مراجعه کنید).
Solidity در اتریوم، اتریوم کلاسیک و اکثر ارزهای رمزنگاری شده از اینها استفاده می شود.
freeCodeCamp یک دوره آموزشی برای شروع برنامه نویسی Solidity ارائه می دهد:
اگرچه در دنیای ارزهای دیجیتال بزرگ نیست، اما بر اساس شاخص TIOBE، جاوا محبوب ترین زبان برنامه نویسی جهان است.
تاریخچه مختصر جاوا
جاوا توسط جیمز گاسلینگ، مهندس مشهوری که در Sun Microsystems کار می کرد، به عنوان جایگزینی برای C++ ایجاد شد. در ابتدا (در داخل Sun) Project Oak نام داشت، اما بعداً برای انتشار عمومی به جاوا تغییر نام داد.
اولین نسخه در دسترس عموم از این زبان در سال 1995 راه اندازی شد و زلزله ای را در دنیای مهندسی نرم افزار ایجاد کرد. جاوا دستور C++ را با تغییراتی پذیرفت و به برنامه نویسان C++ اجازه داد راحت تر مهاجرت کنند.
شعار اولیه آن «یک بار بنویس، هر جا اجرا کن» بود که برای سال ها، تنها تا حدی صادق بود، زیرا جاوا روی چندین پلتفرم خیلی پایدار نبود. برای اینکه برنامه های جاوا در هر جایی اجرا شوند، Sun ماشین مجازی جاوا را معرفی کرد. این کامپیوتر مجازی لایه ای از سازگاری بین ماشین و برنامه های جاوا بود.
بایت کد: یک بار بنویسید، هر جا اجرا کنید
یک برنامه جاوا به زبان کامپیوتر فیزیکی کامپایل نشده است، بلکه به زبان واسطه ای به نام بایت کد کامپایل شده است.
بایت کد تولید شده یک بار می تواند توسط هر ماشین مجازی جاوا در هر مکانی تفسیر شود. اما این مرحله تفسیر بسیار کند بود و باعث شد که جاوا به دلیل کندی و نفخ نرم افزار شهرت اولیه پیدا کند. ویرایشگرهای مبتنی بر جاوا مانند Eclipse کندتر از Emacs و سایر ویرایشگرهای بومی بودند، برنامه های اولیه مبتنی بر جاوا مانند JBuilder نیز بسیار کند بودند.
بعداً این با استفاده از JIT (Just in Time Compilation) و سایر ترفندها بهینه شد تا برنامه های جاوا تقریباً به سرعت نرم افزارهای بومی شوند. امروزه، با موازی سازی و سایر بهینه سازی های موجود در اکثر CPUهای مدرن، عملکرد جاوا تقریباً با کدهای اصلی برابری می کند.
جامعه قوی
جاوا یک جامعه عظیم در پشت خود دارد، بنیاد آپاچی ده ها پروژه شگفت انگیز بر اساس جاوا تولید می کند و همه این کتابخانه ها می توانند آزادانه در پروژه های شما استفاده شوند. این در واقع یک زبان شگفت انگیز با یک جامعه درخشان در پشت آن است.
ما این بیگگی را برای آخرین بار ترک کردیم. C ++ نیز ممکن است مادر همه پروژه های رمزنگاری باشد. البته این زبانی است که توسط Bitcoin Core استفاده می شود و هر رمزنگاری نسل اول یا کد C ++ را اقتباس کرده یا ایده های بیت کوین C ++ را به زبانهای دیگر ترجمه کرده است (به این ترتیب کد GPU که باعث کشته شدن استخراج بیت کوین CPU شده است).
در اوایل تاریخ ارزهای رمزنگاری شده ، که توسط بیت کوین برانگیخته شده است ، بیشتر پروژه ها در C ++ با جلوی نوشته شده با استفاده از چارچوب QT همه جا اجرا می شوند. بهترین نرم افزار معدن و بیشتر کیف پول های بومی همه در روزهای اولیه رمزنگاری در C ++ نوشته شده است.
زبان بزرگ
C ++ یک زبان بسیار پیچیده است.
برخی از افراد به عنوان "C پیشرفته" به آن نزدیک می شوند ، در این صورت نوشتن برنامه های C در C ++ کاملاً خوب است زیرا اولی زیر مجموعه ای از دومی است.
هر برنامه C فقط در زیر کامپایلر C ++ کاملاً خوب کامپایل می شود ، که باعث می شود بسیاری از توسعه دهندگان این دو زبان را مخلوط کنند. اما خود را فریب ندهید. معانی C ++ بسیار پیچیده تر از C است.
C ++ اجازه می دهد تا میراث متعدد ، که خود می تواند تله ای برای توسعه دهندگان جدید باشد و هنگام طراحی سلسله مراتب کلاس باید با دقت مورد استفاده قرار گیرد.
منحنی یادگیری شیب دار
با گفتن این موضوع ، منحنی یادگیری C ++ می تواند بسیار شیب دار باشد.
اگر از آن مانند C استفاده می کنید ، شروع به تولید برنامه های کاری می تواند سریع باشد. اما هنگامی که به پیچیدگی های C ++ ، به ویژه C ++ مدرن فرو رفتید ، قبل از اینکه کاملاً پیچیدگی های این زبان را درک کنید ، برای بلعیدن چند کتاب آماده شوید.
C ++ در توسعه cryptocurrency
پروژه های cryptocurrency که از C ++ استفاده می کنند شامل بیت کوین و همانطور که قبلاً ذکر شد ، بیشتر سکه های نسل اول از آن خارج شده اند ، یا بر اساس مفاهیم از بیت کوین ساخته شده اند.
Ripple از C ++ استفاده می کند. سایر پروژه هایی که از C ++ استفاده می کنند شامل Dogecoin ، Litecoin ، Bitcoin Cash ، Dash ، Monero ، EOS و C ++ Ethereum Client ETH است.
Stellar از زبان C استفاده می کند ، که ما به منظور این مقاله در زیر چتر C ++ قرار خواهیم داد.
نتیجه
چندین زبان برنامه نویسی دیگر در توسعه cryptocurrency استفاده می شود اما در اینجا ما اصلی ترین موارد را پوشش داده ایم.
ما امیدواریم که این تور مختصر از طریق زبانهای اصلی برنامه نویسی مورد استفاده در برنامه نویسی Cryptocurrency به شما کمک کند تا در این زمینه جدید هیجان انگیز اطلاعات بیشتری در مورد توسعه نرم افزار کسب کنید!
لینک
درباره نویسنده ای که توسط Crypto Bill منتشر شده است - بیل نویسنده ، گیک ، پلی هوریست رمزنگاری ، بهترین دوست سگ و معتاد قهوه است. کارشناس امنیت اطلاعات ، نرم افزار رمزگذاری با علاقه به شبکه P2P ، برنامه های غیر متمرکز (DAPP) ، قراردادهای هوشمند و راه حل های پرداخت مبتنی بر رمزنگاری. درباره ما بیشتر بدانید
همچنین ببینید
طرحواره SQL BICKCHAIN SQL برای MySQL این طرح SQL برای جعبه ابزار crypto. bi ایجاد شده است. از همان یا مشابه ، SQL Schema می تواند توسط هر کسی که بیت کوین را با کمک MySQL RDBMS کاوش می کند ، استفاده شود. اگرچه ما این SQL را با سایر RDBM ها آزمایش نکردیم ، اما باید کاملاً با MariaDB و هر سیستم مشتق از MySQL کاملاً سازگار باشد. چگونه داده ها درج شده/از […]
Bitcoin Blockchain to MySQL ETL Tool Crypto.BI Toolbox comes with an ETL tool that allows you to extract data from the block DAT files and import the blockchain into MySQL. If you got the blocks directory configuration set up correctly, then you can run the ETL tool. Go to the Crypto.BI Toolbox installation directory and run: $ ./toolbox/db/blocks_to_sql>این […]
ساخت گره Haskell Cardano در Linux TL ؛ DR ؛پرش مستقیم به دستورالعمل های ساخت ، جزئیات را که منتظر Maiet Haskell است ، قدم بعدی در پروژه Cardano ، من شروع به کاوش در اجرای Cardano-Node Haskell کردم. من می دانم که اگر واقعاً تماشای برنامه را برای مدتی تماشا کنید ، کاوش در کد منبع بسیار ساده تر است. بنابراین ، اولین چیزی که یک توسعه دهنده […]
Building Bitcoin Toolbox MySQL Blockchain Inserter from source Here you’ll find instructions on how to build Bitcoin Toolbox from source code. Build Requirements Bitcoin Core>= 0.18.99 Boost Libraries>= 1.71.0 CMake>= 3.5 g++>= 9. 2 تقویت کتابخانه ها ساخت یا بارگیری باینری کتابخانه های تقویت کننده. به دایرکتوری Root Boost توجه داشته باشید (جایی که Boost/ یافت می شود). ما با این فهرست […] تماس خواهیم گرفت