پیاده سازی بلاک چین

من چند وقتی رو سر بلاک چین مطالعه کردم و به جاهایی باحالی رسیدم. این وسط یه مشکلی که موقع مطالعه داشتم این بود که کد ساده ای نبود که بتونم اجرا کنم و حداقل یه دمو ساده ببینم یا چیزی مثل این. به یکی دو مورد رسیدم که با کد بلاک چین رو توضیح داده بودن. کد یکی از اونا رو کش رفتم ؛) یکم باحاش ور رفتم و کاری کردم که صرفن توی ترمینال بشه ازش یه خروجی قابل درک گرفت. گذاشتمش روی گیت‌هاب. اگر به بلاک چین علاقه دارید برید ببینیدش: یک بلاک چین ساده با پایتون. اگر نظری درمورد بهتر کردنش هم دارید برام به آدرس resa.keshavarz در جیمیل ارسال کنید(به املای آدرس لطفن دقت کنید) تا ازش بتونیم یه چیز ساده و قابل درک برای آدمای علاقه مند دربیاریم. این جا موند: این بلاک چین ساده با پایتون نوشته شده. چیز خاصی هم نباید براش نصب کنید. برای درکشم صرفن یه ایده‌ی کلی از تکنولوژی بلاک چین و کمی دانش برنامه نویسی و همینطور یه آگاهی سطحی از هش ها کفایت می‌کنه. یه سری توضیحات هم به انگلیسی اونجا هست. ساده نوشته شده که قابل درک باشه. اگر سوالی هم بود با همون آدرس بالا برام بفرستید. همین.

بلاک چین تکنولوژی پشت بیت کوین

قبلن هم توی بلاگ درمورد بلاک چین نوشته بودم. مثل مطلب بلاک چین چیه و چجوری کار می‌کنه و همینطور مطلب چرا بیت کوین مهمه که درمورد بیتکوین، یعنی اولین محصول مبتنی بر بلاک چین.

چرا پایتون؟

۱. سوالی که خیلی وقتها از من پرسیده می‌شه اینه: چرا پایتون؟ چرا پی اچ پی نه؟ چرا دات نت نه؟ چرا جاوا نه؟ خب جوابهای متنوعی هست که می‌شه به این سوال داد. این جا یکیش رو می نویسم و امیدوارم که فرصت بشه از هر زاویه‌ای بررسیش کنم.

لوگو زبان برنامه نویسی پایتون

۲. پایتون زبان جدیدی نیست. در واقع از نظر قدمت تقریبن هم سابقه جاوا حساب می‌شه و از دات نت و سی شارپ هم پیرتره. اما تا حدودی گم نام تر از الباقیه. بارها اتفاق افتاده که آدم ها بدون آگاهی داشتن، من رو متهم کنن به استفاده از زبان گمنام و بدون کاربرد. اما پایتون شاید معروف نباشه(که داره می‌شه)‌ اما اصلن بدون کاربرد نیست.

۳. شاید در برخورد اول، سینتکس یک زبان مهم‌ترین چیزیه که می‌شه بهش توجه کرد و اینجا هم به همین قضیه بسنده می‌کنم. پایتون از نظر ظاهری شبیه زبان‌های رایج نیست. درواقع دقت اگر بکنید می بینید که اکثر زبان‌هایی معروف به شدت از روی سی الگو برداری کردن. ولی توی پایتون قضیه فرق داره. اینجا خبری از سمی کالن نیست. خبری از کرلی بریس(آکولاد) نیست. خیلی جاها حتی از پرانتز هم استفاده نمی‌شه. مثلن شرط ها و حلقه ها به پرانتز احتیاج ندارن. این باعث می‌شه برنامه نویس تا حد زیادی از شر اون دکمه‌های اعصاب خورد کن و پرتکرار که همه‌شون هم توی قسمت‌های ناجور کیبوردن، خلاص بشه.

۴. کد‌های زیر رو نگاه کنید:

پایتون در مقابل سی و جاوا

مثال معروف سلام دنیا که توی سی و جاوا به اون هم نوشتن نیاز دارن توی پایتون با یه خط قابل انجام دادنه. البته که نمی‌شه نتیجه گرفت که مثلن یه برنامه ۱۰۰۰ خطی توی جاوا، با پایتون توی ۲۰۰ خط قابل انجامه. اما چیزی که می‌شه نتیجه گرفت اینه که پایتان به شدت ما رو از نوشتن قسمت‌های زاید و حوصله سر بر برنامه خلاص می کنه. این خوبه. واقعن خوبه. این به برنامه‌نویس این امکان رو می‌ده که روی قضیه‌ی اصلی تمرکز کنه. این به شدت سرعت توسعه نرم افزار رو بالا می  بره.

۴. توی مطالب بعدی احتمالن برم سراغ گستردگی حوزه‌هایی که پایتون توشون قابل استفاده‌س. همینطور اینکه کجا و چرا باید پایتون رو به مثلن جاوا ترجیح داد و چیزای دیگه‌ای از این دست. اگر برنامه‌نویس و مخصوصن برنامه‌نویس پایتون هستید ممنون می‌شم تجربیاتتون درمورد پایتون رو برام کامنت کنید یا توی به جیمیل resa.keshavarz بفرستید (به املای ادرس حتمن دقت کنید). شاید بتونیم با همفکری پایتون رو جور بهتری معرفی کنیم به تازه برنامه‌نویس ها یا اونایی که هنوز از پایتان زیاد آگاه نیستن.

 

  •  درواقع تلفظ درست اسم این زبان می‌شه پایثان. ث هم به صورت تلفظ عربیش منظورمه. ولی خب از اونجایی که این صامت توی زبان فارسی زیاد رایج نیست به ت بسنده شده. پس تلفظ معقول می‌شه پایتان. ولی خوب یا بد پایتون رایج تره و اینجا هم یکی درمیون از هردو اسم استفاده کردم که یکی به میخ و یکی به نعل خورده باشه.

اوپن سورس معنیش این نیست که همین الان می‌تونم عوضش کنم

۱. من نرم‌افزار‌های اوپن‌سورس رو ترجیح می‌دم. یکی از دلایلی که آدم‌ها برای استفاده از نرم‌افزار‌های متن‌باز می‌ارن اینه که می‌شه این نرم افزار‌ها رو بسته به نیاز و سلیقه، شخصی سازی کرد. ولی اینجا یه چیز برای خیلی‌ها مبهمه، مخصوصن برای غیر‌کامپیوتری‌ها. نکته اینه: من این امکان رو دارم که سورس کد این نرم‌افزار‌ها رو تغییر بدم، اون‌هم با استفاده از دانش برنامه‌نویسی. این معنیش این نیست که من می‌تونم در‌ همون آن می‌تونم تغییرش بدم. البته بخاطر اون طرز فکری که باعث اوپن‌سورس شدن نرم‌افزار شده، کاربر‌نهایی احتمالن امکان یک‌سری شخصی سازی ها رو خواهد داشت، ولی این معنیش این نیست که دارم سورس اون برنامه رو تغییر می‌دم.

اوپن سورس - متن باز

۲. یکم فنی‌تر: پروسه‌ی تولید یک نرم‌افزار تقریبن اینجوریه:

  • من برنامه رو با استفاده از یک زبان برنامه‌نویسی (مثلن پایتون) می‌نویسم. زبان برنامه‌نویسی‌ای که من استفاده می‌کنم یه زبان سطح بالاست. یعنی یه چیزیه شبیه زبان انگلیسی که توش یک‌سری علامت هم استفاده می‌شه،‌ همون علامتایی که تو عبارت‌های ریاضی باهاشون آشنا شدیم قبلن.
  • من برنامه‌ای که نوشتم رو باید کامپایل کنم( یا ترجمه، تفسیر، اینترپرت. اینا یه سری تفاوت دارن ولی کلیت ماجرا یه چیزه). برنامه‌ وقتی کامپایل می‌شه، درواقع داره از یه زبان سطح بالا که برای من و شما قابل درکه‌(مثلن پایتون)‌ به یه زبان سطح پایین ترجمه می‌شه. منظور زبان سطح پایین چیه؟ یعنی زبانی که برای کامپیوتر قابل درکه. بهش می‌گیم کد ماشین. کد ماشین چیه؟ همون صفر و یک معروف. فکر کنم شنیدین که توی کامپیوتر همه‌چیز با صفر و یک پیاده سازی می‌شه. اینجا قضیه همونه.
  • این کد ماشین تولید شده رو ما می‌تونیم روی دستگاهی که می خوایم اجرا کنیم.

۳. نکته درواقع اینه: کد ماشین قابل ویرایش نیست(می‌شه درواقع ولی خیلی خیلی سخت و پردردسره) . برنامه‌های بسته(مخالف متن‌باز ها منظورمه) این فایل نهایی رو در اختیار کاربر می‌ذارن. اوپن سورس ها اما، کد تولید شده توی مرحله‌ی اول رو هم به‌صورت عمومی منتشر می‌کنن. این یعنی چی؟ یعنی مثلن من که با برنامه‌نویسی آشنام می‌تونم این کد رو بردارم و تغییر بدم و کامپایل کنم و اجرا کنم. ولی این به هیچ وجه معنیش نیست که می‌تونم اون برنامه‌ای که همین الان روی کامپیوترم نصبه رو تغییر بدم. به هیچ وجه.

 

 

  • احتمالن بازم برم سراغ این جور مطالب که برای آدم‌های نسبتن مبتدی و نااشنا به دنیای کامپیوتر‌ها مفید باشه. گیک‌ها تکلیفشون معلومه: این مطلب چیزی براشون نداره. بی‌علاقه‌ها به دنیای کامپیوتر هم همینطور: حوصله‌شون سر‌میره. مخاطب این متن اونایی‌ان که تازه دارن وارد دنیای قشنگمون می‌شن وهنوز یه سری ابهام براشون وجود داره.