پروژه گاه‌شمار

خب، من در گروه های تلگرامی این پیام رو میذاشتم :

دوستی مدتی پیش (که خیلی هم ازش نگذشته ) یک چالش رو بعنوان تمرین برنامه نویسی پیشنهاد داد، و اون هم نوشتن یک API بود برای دریافت ساعت و تاریخ.
من هم وارد این چالش شدم و یک API با روبی و سیناترا نوشتم، روی گیتهاب هم قرارش دادم ولی الان دپلویش کردم که اگر شما هم خواستید بتونید ازش استفاده کنید :
https://gahshomar-api.herokuapp.com/

خب، این هم پروژه ای بود که محسن بعنوان تمرین خواست که ما یه API بنویسیم، من هم این رو با Sinatra نوشتم و الان دپلوی شده و در دسترسه! امیدوارم ازش لذت ببرید :)

FacebookTwitterGoogle+Share

رضایت و نارضایتی، از دربستی های موبایلی

uber-login-signup

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

 

 

 

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

بیایید توییت های بیشتری رو بررسی کنیم و ببینیم که مردم دیگه از چه چیزی توی این سرویس ناراضی هستند :

خب، این توییت نارضایتی از قیمته. شاید الگوریتم قیمت گذاری تغییر کرده که بازی رو برد-برد کنه. مثلا شده که مسیری رو با ۱۴ هزار تومن رفتم، و موقع برگشت (که ساعت ترافیک دار بوده) هزینه رفته روی ۱۵ یا ۱۶ هزار تومن. البته هنوز مطمئن نیستم که این بخاطر موقعیت من در مبدا برگشت بوده، یا بخاطر ترافیک زیاد.  

در این توییت هم شاهد نارضایتی از ماشین نداشتن، و غیرقابل اعتماد بودن هستیم. در واقع ایشون بیان کردن (برداشت من البته!) که در ساعتی که ایشون نیاز مبرم به ماشین داشته، احتمالا اسنپ ماشین نداشته. شاید آژانسی که معمولا ازش ماشین میگیره، ماشین نداشته و نزدیک ترین شریان اصلی و ایستگاه تاکسی برای دربست گرفتن هم ازش خیلی دور بوده. خب این مشکل رو به همین راحتیا نمیشه حل کرد و باید زیرساختی تر حل بشه. نه تنها آموزش درست و با کیفیت میخواد، بلکه نیروی کار سازمان یافته بیشتری هم نیاز داره.

 

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

و اما … در کل، میزان رضایت بیشتره یا نارضایتی؟

به عنوان یک کاربر سرویس، شخصا بیشتر ناراضیم تا راضی. چرا که :

  1. در ساعتای شلوغ و پرترافیک، کم پیش میاد که با همون بار اول درخواست اسنپ دادن، ماشینی پیدا شه که اکسپت کنه.
  2. راننده های نزدیک، زودتر پیام رو دریافت نمیکنن، و نتیجه میشه این که راننده ای که در میدان نور (تقاطع کاشانی – ستاری) حضور داره، مسافری رو از شهر زیبا (منتهی علیه غربی کاشانی 😐 ) رو اکسپت کنه و این خودش معطلی برای مسافر هست
  3. خیلی از مشکلات کلاسیک مردم با راننده ها حل نشده. یک نمونش راه بلد بودن هست، نمونه دیگرش پرچونگی و پرحرفی راننده ها، که اگر هشتگی مثل «راننده»، «مسافر کش» یا «راننده تاکسی» رو در توییتر سرچ کنید، میرسید به این مشکلات.

و با گشت و گذار در توییتر هم بیشتر به ناراضی ها میرسیم. میشه گفت که مردم وقتی راضی باشن فیدبک نمیدن یا خیلی کم پیش میاد که فیدبک بدن. اما مردمی که ناراضی هستند معمولا خیلی سریع عدم رضایت خودشون رو جایی که میدونن پشتیبانی اون سرویس فعال هست، منتشر میکنن تا فیدبک بگیرن (مثل اولین توییتی که بررسی کردیم). حالا مهم نیست که کدوم بیشتره، مهم اینه که چرا انقدر ناراضی داره این سرویس؟! چرا با سرچ هشتگ، بیش از این که به معرفی و … برسیم، به نارضایتی رسیدیم؟! این ها سوالاتی هست که باهاش مواجه هستیم. سوالاتی که برای یک بیزنس میتونن بسیار بسیار مهم باشن.

ریشه مشکل کجاست؟ چاره چیه؟!

خب، ریشه مشکل میتونه احتمالا عدم وجود زیرساخت، و نداشتن دانش مدیریتی و تجاری کافی باشه. با حالت مافیایی ای که بازار به خودش گرفته، عده ای خاص (که عموما سواد درست و حسابی هم ندارند) میشن CTO و مدیر روابط عمومی و مدیر داخلی و این عناوین خوشگل رو میگیرن. حالا مهم نیست که این اتفاق افتاده، بریم سراغ زیرساخت. ما میدونیم که عموم افرادی که توی کشورمون اسمارتفون های گرون گرون میخرن، یک دلیل بیشتر نداره، اونم اینه :

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

با اصلاح مواردی که در این متن گفته شد، میشه تا حد زیادی به مشکلات رسیدگی کرد. آموزش درست راننده و مسافر، داشتن یک نرم افزار User-friendly تر و با UX بهتر و … همش میتونه به بهتر شدن و افزایش میزان رضایت مشتری، کمک کنه!

در آخر هم ممنونم که این پست بلند و بالای من رو خوندید! در مورد Uber هم در تصویر اول متن بگم که همینطوری خواستم بذارم، چون مشابهش رو برای اسنپ پیدا نکردم 😀 

موفق باشید :)

FacebookTwitterGoogle+Share

دوستی با محصول جدید اتودسک

اکثرا میدونیم که شبیه سازی و استفاده از بردهای آردوینو و AVR و … ، برای کاربران لینوکس خیلی مشکله. حتی شبیه سازی ساده مدارهای الکتریکی و الکترونیکی هم مشکلیه که اکثرا کاربران لینوکس باهاش روبرو هستند. اما امروز، میخوام ابزاری رو معرفی کنم، که هم رایگانه و هم تحت وب. به شما امکان کد زدن روی آردوینو و تست کردن مدارهای مجتمع، ساختن مدارهای دیجیتال و آنالوگ رو میده.

شرکت اتودسک که پیش تر با محصولاتی مثل اتوکد و مایا شناخته شده بود، الان اومده محصولی به اسم 123D Circuits رو ارائه کرده که با ساختن یک اکانت و عضویت درش، میتونید به راحتی آزمایشات الکترونیکی خودتون رو انجام بدید.

این هم نمونه مداری که بستم، یک آی سی 7408 هست که داره دو ورودی رو با هم AND میکنه :

کافیه روی start simulation کلیک کنید و بعد با کلید ها بازی کنید تا تغییرات توی ولت متر و LED قرمز رنگ روی برد بورد رو شاهد باشید.

FacebookTwitterGoogle+Share

نسخه اسپرانتوی وبسایت!

خب یک مدت طولانی بود که دوست داشتم زبان دوست داشتنی، کاربردی و البته فراساخته اسپرانتو رو یاد بگیرم، و این اتفاق هم افتاد. بعد از این، به ذهنم رسید که شده یک صفحه استاتیک هم که شده، توی سایتم به این زبان داشته باشم و خودم رو معرفی کنم! و این اتفاق افتاد و از این لینک میتونید استفاده کنید برای رسیدن به نسخه اسپرانتوی وبسایت شخصیم!

 

FacebookTwitterGoogle+Share

سرطان علم

قبلا خیلی دوست داشتم یه پست کامل و جامع در مورد استارتاپ ها ( و شاید دید کاملا تجاری) داشته باشم! بدون شک هممون میدونیم در دنیایی داریم زندگی میکنیم که دور و برمون رو استارتاپ ها اشغال کردند. از ایده های کاملا جدید پخش غذای خونگی بگیریم و بریم تا سیستم های مشابه آژانس و تاکسیرانی!

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

12-reglas-steve-jobs-2خب بدون شک میشناسیدش! استیون پل جایز که به اسم «استیو جابز» معروفه. از بنیانگذاران شرکت اپل، و یکی از مدیرعامل های اپل که زمان مدیریتش، ترکوند! خب میگم ترکوند چرا که تونست شرکت تقریبا ورشکست شده رو به یک شرکت میلیارد دلاری تبدیل کنه و این کار ارزشمندیه. اما آیا این کار یک مهندس/محقق کامپیوتره!؟ مسلما خیر. استیو جابز یک مغز تجاری و یک نابغه تجاری بود، نه یک مهندس کامپیوتر. کاری که کرد، فروش چیزایی بود که مهندس کامپیوتر ساخته بود.

خب، یک بررسی ساده کردیم. حالا برسیم به موضوع خودمون.

چرا استارتاپ ها سرطان علم هستند؟ به نوبه خودشون نیستن، و اصلا ساخته نشدن که باشن. موضوع مهم، دید غلط جامعه نسبت به این موضوعه. در واقع، کسی که وارد دانشگاه میشه از همون ترم اول به فکر این میفته که برای خودش کاری دست و پا کنه، در صورتی که هیچ تجربه فنی و پروژه ای نداره. یکم که میگذره، یک ایده تقریبا ناپخته به ذهنش میرسه و اون رو تبدیل به استارتاپ میکنه. و این هم یک مشکل بزرگ تره. حالا ببینیم اصلا با «ایده» باید چه کنیم؟! به نظرم اولین کار اینه که ایده رو جست و جو کنیم، ایده های مشابه رو ببینیم، و ببینیم که چند نفر قبل از ما چند بار اون رو پیاده کردن، چون شخصا معتقدم که یک ایده نباید بیشتر از دوبار اجرا بشه و وقت گذاشته شه روی کارهای بهتر! حالا میتونیم اینطوری نتیجه گیری کنیم :

به واسطه تفکر غلط، مردم همیشه دنبال راه های پول درآوردن هستند، نتیجتا فعالیت های زود بازده رو به فعالیت دانش بنیان ترجیح میدن

خب، حالا بیایم از این جمله یک وضعیت رو تحلیل کنیم :

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

خب، اینجا یک چالش مطرح میشه : جناب آقای تجاری، اگر این شخص روی پروژه (مثلا یه CPU جدید) کار نکنه، نسل بعدی کامپیوتر ها چی میشن؟! یا اگر امثال شخص علمی توی داستان نباشن، آیا امکاناتی که امروز داریم (مثل همون چیزایی که آقای جابز بهتون میفروخت!) بودن؟!؟!

در نهایت، توصیه میکنم که اگر تفکرتون تجاری هست، یک بار این مطلب رو بخونید و تحلیل کنید، و حتی جواب بدید. بی صبرانه منتظرم!

موفق باشید :-)

FacebookTwitterGoogle+Share

FreeBSD 11.0-RC1 – نخستین دیدار

امروز بعد از مدتها به وبسایت محبوب و معروف دیستروواچ سر زدم و دیدم که یکی از سیستم عامل های محبوبم یعنی FreeBSD یک نسخه نامزد انتشار منتشر کرده!

خب با خوشحالی تمام دانلودش کردم.

اولین چیزی که در FreeBSD 11 برام جالب شد، این بود که توی نصاب خیلی ریز شده بودن و سوال پرسیده بودن، یعنی عمده پیکربندی رو جزئی از نصاب کردن که این خودش یک پوئن مثبت در نوع خودش محسوب میشه. و یک پیشرفت خیلی بزرگ، چون عمده کاربران FreeBSD مدیران سیستم ها هستند، پس این تیپ پیکربندی هنگام نصب بدرد میخوره.

خب، بعد نصب، تصمیم گرفتم اول pkg رو راه بندازم. بعد nano رو نصب کردم (ادیتور محبوب من در CLI ! یه چیز تنبل پسند و عالی!) ، بعدش تصمیم گرفتم دسکتاپ رو راه اندازی کنم. دیدم توی هندبوک، به gnome3 اشاره شده، اونجا بود که فهمیدم احتمالا گنوم شل دوست داشتنیمون هم اومده به FreeBSD . پس gnome3 رو نصب کردم و این خطوط رو به rc.conf افزودم :

کد   
dbus_enable="YES"
hald_enable="YES"
 
#Running GNOME and GDM services
 
gdm_enable="YES"
gnome_enable="YES"

و بعد از یک ریبوت، چشممون به جمال گنوم شل با 3D Acceleration روشن شد :

و این عکس هم به جهت تایید اصالت سیستم عامل :

در مورد این دسکتاپ، که خب یک دسکتاپ مدرن محسوب میشه و تا مدتها در FreeBSD پیداش نبود، میشه گفت که با اضافه شدنش بدون مشکل به سیستم عامل، میتونه به پیشرفت این سیستم عامل در حوزه دسکتاپ کمک کنه. البته، در کل 11 نرم تر از ۹ و ۱۰ بود که قبل تر تست کرده بودم و حتی به عنوان سیستم عامل اصلی ازشون استفاده میکردم.

موفق باشید :)

FacebookTwitterGoogle+Share

تجربه استفاده از اسنپ

unnamed

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

نقاط مثبت :

  • هزینه مناسب : اگر از دم در ورودی دانشگاه (که جدیدا ایستگاه تاکسی شده 😐 ) میخواستم ماشینی رو کرایه کنم، باید حدود ۲۰ هزار تومن، اگر از میدون پونک میخواستم ماشین کرایه کنم حدود ۱۵ هزار تومن باید میدادم. این در صورتیه که با اسنپ همون مسیر رو ۱۱ هزار تومن پرداخت کردم (نزدیک ۹ هزار تومن صرفه جویی، دقیقا از همونجایی که سوار شدم!)
  • کولر : خب، تابستونه و هوا گرم، و اکثر راننده ها به بهونه مصرف بالا و قیمت بنزین، کولر رو روشن نمیکنن (واقعا استهلاک مغز و پوست و گرمازدگی و ….، به اندازه بنزین مهم نیست یعنی؟‌ 😀 ). در صورتی که ماشین اسنپ، از همون اول که سوارش شدم کولرش روشن بود، و خب این توی تابستون یک نقطه مثبت به شمار میاد.
  • مسیر : درسته که مسیر رو از روی نقشه انتخاب کرده بودم، ولی خب راننده هم راه های احتمالی رسیدن به مقصد رو بررسی کرد، و از من خواست که بهینه ترینش رو بهش معرفی کنم. به نظرم این دو حالت داره : اول این که شاید راننده یک مسیر بهتر در نظر داره، و دیگری این که شاید مسیری که من میگم رو راننده به خاطر میسپاره تا مسافر بعدی رو از این مسیر (که از چیزایی که توی ذهن خودش هست، بهینه تره) به مقصد برسونه.

نقاط ضعف :

  • نقشه : اسنپ از نقشه درستی استفاده نمیکنه. اسم خیلی از محله ها، درست وارد نشده، در صورتی که اگر از نقشه گوگل استفاده میکردن، این مشکل پیش نمیومد (حتی میشد مسیر پیشنهادی رو هم از همونجا داد بهشون!)
  • مسیرهای پرکاربرد : به نظرم، باید مسیرهایی که یک مسافر به تعداد زیاد سفر میکنه (مثلا از خونه به دانشگاه و برعکس) ، توی اسنپ سیو بشه، اینطوری راحت میتونیم بگیم میخوایم به فلان مسیر بریم، و خب این خودش یک پوئن مثبته (البته یک بخش «آدرس های منتخب» دارن ولی باز هم این کار رو نمیکنه)

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

FacebookTwitterGoogle+Share

بررسی معماری MIPS

خب، همونطور که داریم سلسله آموزش های ساخت کامپیوتر ساده در Logisim رو دنبال میکنیم، گفتم این وسط یه توضیحی هم در مورد معماری MIPS داشته باشیم. در واقع MIPS یکی از ساده ترین و کم دستور ترین معماری های ممکنه، و البته پیاده سازی دوبارش در نرم افزارهایی مثل Logisim بسیار ساده. میشه.

این یک ALU بسیار ساده بر اساس میپس هست (که البته یک بیتی پیاده شده) :

MIPS

در اینجا، برای تفریق مدار جداگانه ای در نظر نگرفته، بلکه مقدار B رو با یک، XOR کرده (هوشمندانه به نظر میرسه، نه؟) و از less هم برای مقایسه، از یک مالتی پلکسر ۸ به ۱ هم برای انتخاب عملیات استفاده شده (به جای استفاده از دیکدر و گیت های AND )، در کل میشه یک ساختار خیلی قشنگ براش قائل شد، البته بهتر از این هم میشد الگوریتم هایی مثل تفریق رو هم پیاده کرد (مثلا با استفاده از یه mux میشد انتخاب کرد که خود B نیازه یا نقیضش؟ و البته نیاز بود که cin هم حتما روشن شه که مکمل ۲ گرفته شه).

زبان ماشین این ALU هم خیلی سادس، به ازای مقدار ۰ ، عملیات AND ، به ازای ۱ عملیات OR ، به ازای ۲ عملیات XOR ، به ازای ۳ عملیات NOR ، به ازای ۴ عملیات ADD و به ازای ۵ عملیات مقایسه رو انجام میده (البته برای مقایسه هم میشه از XNOR استفاده کرد و تساوی رو سنجید).

امیدوارم که این مطلب به دردتون خورده باشه، همچنین میتونید این معماری رو پیاده کنید و نتیجش رو حتی روی برد بُرد بیارید :) .

موفق باشید.

FacebookTwitterGoogle+Share

ساخت یک کامپیوتر ساده در Logisim – قسمت دوم (مجموعه دستور العمل ها)

در قسمت قبلی، چالش رو مطرح کردیم که کامپیوتر هشت بیتی خودمون رو بسازیم. ببینیم چه مداراتی نیاز داریم؟!

خب ما دو ورودی هشت بیتی A و B رو خواهیم داشت، پس به این موارد نیاز داریم :

  1. مداری برای NOT کردن ورودی A
  2. مداری برای NOT کردن ورودی B
  3. مداری برای AND کردن هر دو ورودی
  4. مداری برای OR کردن هر دو ورودی
  5. مداری برای جمع کردن دو ورودی
  6. مداری برای تفریق دو ورودی

خب، چون ما از یک قطعه به اسم «دیکدر» برای انتخاب دستورات استفاده میکنیم، و دیکدرها هم یک ورودی با سایز n میگیرن، و خروجی اونها «دو به توان n» هست، و ما اینجا «مجموعه دستور العمل» یا Instruction Set مون دارای ۶ دستور هست، بهینه ترین حالت استفاده از یک دیکدر ۳ به ۸ هست. خب، با این حساب، باید کد عملیات ها یا Operation Code ها رو به این شکل تعریف کنیم :

Operation Code
NOT A 000
NOT B 001
AND A, B 010
OR A, B 011
ADD A , B 100
SUB A, B 101

خب الان ما میدونیم که کامپیوتر محترم باید چه دستوراتی رو اچرا کنه. در واقع، وقتی میگیم ۰ ، کامپیوتر اون رو به دیکدر میده و میفهمه که باید نقیض A رو بهمون بده. وقتی ۱ رو فراخوانی میکنیم، باید نقیض B بهمون داده شه، وقتی میگیم ۵ در واقع مقدار B رو از A کم میکنیم و … . با توجه به این که الان، ما یک دیکدر ۳ به ۸ در مدار «واحد محاسبه و منطق» داریم، میتونیم ۴ دستور العمل دیگه هم بهش اضافه کنیم (با شما :) ). در قسمت بعدی این آموزش، میرسیم به این که ورودی ها و خروجی ها رو چطوری مدیریت کنیم. بعدش هم در مورد ساختار کلی ALU صحبت میشه و بعد از چند پست دیگه، یک ALU کامل با هم خواهیم داشت. پس فعلا در مورد بلاهایی که سر ۸ بیت ورودی میشه آورد فکر کنید و شاد باشید :)

FacebookTwitterGoogle+Share

ساخت یک کامپیوتر ساده در Logisim – قسمت اول

بالاخره یه سری پست جدید تصمیم گرفتم بنویسم، و خب این سری قراره که مرحله به مرحله پیش بریم تا یک کامپیوتر ساده بسازیم. تنها دانشی که شما برای این سری از پست ها نیاز دارید :

۱. دونستن کمی مدار منطقی (که قبلا در وبلاگ راجع بهش حسابی صحبت کردم)

۲. بلد بودن کار با Logisim (که میشه گفت مثل نقاشی کشیدن میمونه و همین پست ها رو دنبال کنید یاد میگیرید.).

راه اندازی محیط کار

برای این که بتونیم مداراتمون رو طراحی و آزمایش کنیم، نیاز داریم که نرم افزار Logisim رو داشته باشیم. یه نسخه خوب از این نرم افزار به اسم Logisim Evolution طراحی شده که کار ما رو به شدت ساده تر کرده، خروجی گرفتن ازش بی دردسر تره، و همچنین مدارات و ویژگی هاشون دقیق تر طراحی شده. برای دانلود و نصب و روش راه اندازیش میتونید به اینجا برید. فقط هم نیازه که جاوا روی سیستمتون نصب باشه.

چالش های پیش رو

خب، برای این که بیایم یک کامپیوتر بسیار ساده طراحی کنیم نیاز داریم که یک سری سوالات از خودمون بپرسیم و جواب بدیمشون، اینطوری راحت تر میتونیم مدارات مورد نیاز رو طراحی کنیم و از پیچیدگی محصول نهایی جلوگیری کنیم.

کامپیوتر ما باید چه عملیاتی انجام بده؟

یک کامپیوتر ساده که بتونه به راحتی قابل درک هم باشه، هم باید Word Size کوچیکی داشته باشه (توی آموزش ها با ۸ بیت میریم جلو) و هم Instruction Setش باید کوچیک باشه. یک سری دستور پایه هست که هر کامپیوتری میتونه انجامش بده، ما کامپیوترمون رو اینطور طراحی مکنیم که AND, OR, NOT رو بتونه انجام بده، علاوه بر اون بتونه جمع و تفریق هم بکنه. پس باید :

  1. مداری طراحی کنیم که بتونه ۸ بیت رو NOT کنه
  2. مداری طراحی کنیم که بتونه ۸ بیت رو OR کنه
  3. مداری طراحی کنیم که بتونه ۸ بیت رو AND کنه
  4. و مدار(ها)ی طراحی کنیم که بتونن ۸ بیت رو جمع و تفریق کنن.

حالا به سادگی میتونیم بفهمیم که چی میخوایم. البته این صرفا واحد محاسبه و منطق هست، ما باید یک واحد حافظه، یک واحد کنترل و چند واحد حافظه موقتی و کوچک هم طراحی کنیم که با چسبوندنشون به هم، بتونیم به کامپیوتر کامل برسیم.

در پست های بعدی، زیرمدارهای کامپیوتر خودمون رو میسازیم. در این پست صرفا با کامپیوتر ساده و کوچیکمون آشنا شدیم :)

FacebookTwitterGoogle+Share