<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های حمیدرضا کلباسی</title><link>https://virgool.ir/feed/@hamid.6.11.79</link><description></description><language>fa</language><pubDate>2026-11-12 06:33:02</pubDate><image><url>https://files.virgool.ir/upload/users/49957/avatar/jqNNEC.png</url><title>حمیدرضا کلباسی</title><link>https://virgool.ir/@hamid.6.11.79</link></image><item><title>این پست آخرین پست من در ویرگول است</title><link>https://virgool.ir/@hamid.6.11.79/این-پست-آخرین-پست-من-در-ویرگول-است-cqxeazlznont</link><description>لوگوی پلوملینک های به حساب پلوم رو پاک کردم چون ویرگول ادعا کرده بود که به دلیل لینک سازی پست من رو حذف کرده. ببینیم پست بدون لینک پاک می شه یا نهاز این به بعد من را می توانید در پلوم دنبال کنید.چرا؟ویرگول یک بستر وبلاگ نویسی زیبا، با سئوی خوب و کاربران زیاد بود که به  من کمک می کرد تا مطالبم را راحت تر منتشر کنم و بیشتر دیده شود. کاری که  با یک بستر وبلاگ نویسی عادی به سختی ممکن بود.پس مشکل چیست؟ مشکل این است که ویرگول انحصاری است. ویرگول به دنبال منفعت خودش است (یا لااقل منفعت خودش برایش اولویت دارد) و  در این بستری که وجود دارد قدرت مطلقا دست ویرگول است. و ترکیب این دو  موضوع ممکن است به ضرر شما تمام شود.ویرگول می تواند تمام فعالیت شما را بررسی کند و علایق شما را کشف کند و در  اختیار دیگران بگذارد. یا چیز هایی که مشاهده می کنید را شخصی سازی کند تا  سلیقه شما را تغییر دهد. حتی ویرگول می تواند پست های شما را پاک کند و  شما در برابر آن هیچ کاری نمی توانید بکنید. حتی اگر ویرگول از این  اختیاراتش استفاده نکند یا به نحو خوبی استفاده کند من ترجیح می دهم که توسط هیچ کس کنترل نشوم تا این که توسط گروه خوبی کنترل  شوم.راه حل چیست؟اما با همه معایب، نهایتا با راه اندازی یک وبلاگ در سایت شخصی مان نمی توانیم به تمام چیز هایی که ویرگول به ما می دهد برسیم. اما راهی در وسط وجود دارد. وبلاگ های فدرالی.این وبلاگ ها شبکه ای از سرور های متصل به هم هستند که شما در یکی از آن  سرور ها عضو می شوید و پست می گذارید اما هر کسی از هر سروری می تواند شما  را دنبال کند. عموما کد سرور به صورت متن باز منتشر شده و شما می توانید  خودتان یک سرور بسازید و اختیار و قوانین آن را خودتان تعیین کنید و در عین  حال به شبکه متصل باشید.من از پلوم (plume) استفاده می کنم. می توانید در یکی از سرور های آن عضو شوید.</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Sat, 23 May 2020 15:49:08 +0430</pubDate></item><item><title>DGit</title><link>https://virgool.ir/@hamid.6.11.79/dgit-wwtuddpqjxzi</link><description>قطع شدن اینترنت من را در وضعیت غیر منتظره‌ای قرار داد. من حقیقتا هیچ وقت به این فکر نکرده بودم که اگر اینترنت قطع شود چه وضعیتی به وجود می‌آید ( و این برایم عجیب بود، چون مثلا به این که اگر دولت آب را قطع کند فکر کرده بودم ) و به نظرم تجربه جالبی بود ( دیگه داره از جالب تبدیل به ناراحت کننده می شه :( وصلش کنید! ) در این زمان که خیلی از کار های روزمره‌ام متوقف شده بود، مدتی از وقتم را به فکر کردن درباره شرایط موجود و مشابه گذراندم.یکی از سایت هایی که من به شدت از آن استفاده می کردم، سایت گیت‌هاب بود و این موضوع که دسترسی من به آن بسته شد، من را به این فکر فرو برد که اگر روزی گیت‌هاب تصمیم بگیرد که دسترسی من به آن را محدود کند، همان گونه که قبل تر این کار را برای مخازن خصوصی انجام داده است و خیلی دور از ذهن نیست ، یا اصلا کل سرور هایش را ببندد و از جهان خداحافظی کند، چه بلایی سر این حجم عظیم از داده آزاد می‌آید؟ چرا باید یکی از بزرگ‌ترین پایگاه‌های داده آزاد جهان یک شرکت انحصاری باشد؟ این موضوع باعث شد که به جایگزینی برای گیت‌هاب فکر کنم و نتیجه این افکار این نوشته است.نام این جایگزین DGit است. DGit که مخفف Distributed Git یا Decentralized Git است، یک شبکه غیر متمرکز است ( مثل شبکه تورنت ). کار این شبکه این است که یک رپوزیتوری گیت را نگهداری کند که تمامی پروژه های جهان درون این مخزن که یک درختی ( یا گرافی ) از کامیت هاست نگهداری می شود. ( در ادامه به این درخت درخت جهانی می‌گوییم ). هر کسی می تواند به این درخت جهانی راس اضافه کند ( کامیت جدیدی در آن ایجاد کند ). مثلا برای ایجاد یک پروژه جدید می توان از راس خالی ( یا یک راس تمپلیت ) شروع کرد و فایل های جدید را به آن اضافه کرد. چون درخت جهانی خود یک مخزن گیت است هر پروژه تمامی قابلیت های گیت ( مثل ایجاد کامیت یا برنچ ) به علاوه عمده افزونه های آن ( مثل ایجاد فورک ) را دارا است.برای ساخت یا ویرایش یک پروژه، رئوسی ( کامیت هایی ) به درخت جهانی اضافه می کنیم سپس تغییرات مان در درخت جهانی را در یکی از سید ( سید یا بذر کامپیوتری است که بخشی از ترافیک خود را صرف آپلود داده های شبکه می کند ) های شبکه DGit ( مثلا کامپیوتر خودمان ) اعمال می کنیم. حال برای این که کسی بتواند پروژه را در جای دیگری از جهان کلون کند، باید هش کامیتی که متناظر با شاخه مستر پروژه ماست را در اختیار داشته باشد ( مثلا می توان این هش را به عنوان یک لینک در سایت شخصی، شبکه های اجتماعی یا ... گذاشت ). سپس از یکی از سید هایی که کامیت های متناظر با این هش تا ریشه ( راس خالی ) را در اختیار دارد کامیت ها را دریافت می کند. سپس هش آن‌ها را چک کند تا درست باشد ( ممکن است کامپیوتر سید شیاد باشد ) و اگر کامیت ها معتبر بود به وسیله آن ها فایل ها را تولید کند. بعد از این کار خود او می‌تواند از این به بعد به عنوان سید این داده ها را در اختیار دیگران بگذارد.ممکن نیست که هش دو راس از درخت تکراری شود؟اگر طول هش را به اندازه کافی بلند ( مثلا ۵۱۲ بیت ) بگیریم احتمال این اتفاق در طول عمر بشر تقریبا ۰ است ( دقیقا نزدیک به دو به توان منفی صد است ).چگونه یک کامیت یا یک مخزن را پاک کنیم؟برای پاک کردن یک پروژه یا یک راس یا هر چیز دیگر از درخت جهانی، باید آن را از تمام کامپیوتر های عضو شبکه پاک کنید که این کار عملا ناممکن است. توجه کنید که این موضوع یک مزیت است. ساختار غیر قابل تغییر درخت جهانی باعث می شود تا این درخت قابل اعتماد باشد. مثلا اگر یک مخزن یک کتابخانه که جز وابستگی های پروژه شماست روی DGit باشد شما می توانید مطمئن باشید که هیچ کس اعم از نویسنده کتابخانه، یک کمپانی سوم شخص مثل گیت‌هاب یا حتی دولت ها نمی توانند آن کتابخانه را پاک کرده یا تغییر دهند.هر کسی می تواند به شاخه پروژه من رئوس جدید اضافه کرده و آن را تغییر دهد؟هر کسی می تواند به پروژه شما رئوس جدیدی اضافه کند اما این به معنی تغییر پروژه شما نیست. در نهایت این شما هستید که تعیین می کنید پروژه شما متناظر با کدام راس و کدام مسیر از درخت است، چون شما هش کامیت متناظر را در سایت پروژه یا جایی شبیه به این می گذارید. رئوسی که دیگران از روی پروژه شما ایجاد می کنند مانند فورک در گیت‌هاب هستند. شما می توانید آن‌ها را ببینید و در صورت تمایل با پروژه خود ترکیب کنید. همچنین آن ها می‌توانند خود به پروژه های جدایی تبدیل شوند.آیا مشابه DGit وجود دارد؟این سوالیست که من هم خیلی کنجکاوم جوابش را بدانم اما متاسفانه اینترنت قطع است :(نظر شما در این مورد چیست؟ آیا DGit یا چیزی مشابه آن می‌تواند جایگزین گیت‌هاب شود؟ سوالی درباره عملکرد یا پیشنهادی برای بهبود آن دارید؟</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Sat, 23 Nov 2019 00:21:49 +0330</pubDate></item><item><title>داده‌های آزاد: حرکت به سوی پیشرفت همگانی</title><link>https://virgool.ir/rayanesh/دادههای-آزاد-حرکت-به-سوی-پیشرفت-همگانی-vt9erzxwfnka</link><description>منظور از داده آزاد، داده‌ای است که استفاده از آن به هر منظوری ( از جمله تغییر و تکثیر ) آزاد است.در گذشته‌ای نه چندان دور، تولید به میزان زیادی وابسته به نیروی انسانی بود. انسان ها عمده زمان خود را صرف یک کار روزمره و معین الگوریتمی می کردند و در نتیجه آن فرایند یک محصول تولید می شد. به عبارت دیگر انسان ها باید در دوره هایی منظم، فعالیت هایی تکراری را انجام می دادند تا محصول بدست بیاورند.اما امروزه این نیاز کم‌تر و کم‌تر شده است و در بعضی موارد به صفر رسیده است. ماشین ها کار های تکراری را با دقت، بدون خستگی و با مصرف کم‌تر انجام می دهند و می‌توانند تعداد نیروی انسانی لازم برای تولید را کم کنند و حتی به صفر برسانند.پس انسان‌ها چگونه کسب درآمد می‌کنند؟ چرا کالاها ارزان نمی شوند و به قیمت مواد اولیه‌شان نمی‌رسند؟ پول ما خرج چه می شود؟ پاسخ اطلاعات است.شما امروزه پول خود را خرج اطلاعات می کنید. نرم‌افزارها، کتاب‌ها، فیلم‌ها، آهنگ‌ها، بازی‌ها و ... همه می‌توانند به رایگان در اختیار شما باشند. مواد اولیه ماشین آلات و دستگاه‌ها تقریبا هزینه ناچیزی نسبت به قیمت آن‌ها دارند و این هزینه یکی صرف حمل و نقل نتایج مختلف مراحل تولید می شود و دیگری خرج داده نحوه تولید می شود. اگر داده‌ها آزاد باشند می توان تمام مراحل را در یک مکان انجام داد و چون همه نحوه تولید محصول را بلدند دیگر نمی توان آن را انحصار کرد و قیمتش به قیمت مواد اولیه‌اش می رسد.ناهار مجانی وجود ندارد!ممکن است این جمله معروف در اقتصاد را شنیده باشید. استدلال پشت این جمله این است که فرض کنیم ناهار مجانی وجود داشته باشد. در آن صورت شخصی می تواند همه ناهار های مجانی را به قیمت مجانی خریداری کند تا جایی که دیگر ناهار مجانی در جهان وجود نداشته باشد. سپس همه این ناهار ها را به قیمت ابسیلون بفروشد. ( طبیعتا ممکن است همه ناهارها فروش نروند. ) این شخص بدون هیچ هزینه ای، سود کرده است. پس قطعا شخصی این کار را می کند و به این ترتیب همه ناهارهای مجانی نابود می شوند.اما این استدلال برای داده های مجانی درست نیست. داده های مجانی را می توان با هزینه ( تقریبا ) صفر تکثیر کرد. و این موضوع باعث می شود تا هیچ کس نتواند همه داده ها را خریداری کند. در نتیجه اگر داده‌ی آزادی تولید شود، این داده تا ابد برای همه آزاد و در نتیجه مجانی خواهد بود.پیش به سوی عدالتهر چه داده‌های بیشتری در جهان آزاد باشند، امکانات در جهان به نحو مساوی تری تقسیم می‌شوند و اختلاف طبقاتی کمتر می‌شود. داده‌های آزاد به همه جامعه سود می‌رساند اما داده‌های انحصاری فقط به انحصارکننده سود می‌رسانند. داده‌های آزاد به اقشار ضعیف جامعه قدرت می‌دهند، آن‌هایی که در حالت معمولی نیازمند سرمایه‌داران هستند و نیازشان روز به روز سرمایه‌داران را قدرت‌مندتر و خودشان را ضعیف‌تر می‌کند. داده‌های آزاد این چرخه را از بین می‌برد و عدالت را به‌وجود می‌آورد.اما چه کسی داده آزاد تولید می‌کند؟ این کار برایش چه سودی دارد؟در یک نوشته جداگانه به این موضوع می‌پردازم. اما اگر می‌خواهید از امروز به حرکت داده‌های آزاد کمک کنید، نیازی نیست که داده‌آزاد تولید کنید، بلکه می‌توانید از قسمت دیگر که توجیه منطقی نیز دارد به داده‌های انحصاری حمله کنید. یعنی سعی کنید تا جای ممکن از داده‌های انحصاری استفاده نکنید و به انحصار کننده سود نرسانید. این کار علاوه بر این که به طور مستقیم به داده‌های انحصاری ضربه می‌زند، شما را با گروه‌هایی که داده آزاد تولید می‌کنند نیز آشنا می کند و می‌توانید آنجا جواب این سوال را پیدا کنید.پس به دنبال رد داده‌های انحصاری در زندگی خود بگردید و سعی کنید که آن‌ها را با مشابه‌های آزادشان جایگزین کنید. شاید نتوانید درصد زیادی از آن‌ها را جایگزین کنید اما همین یک گام کوچک می تواند قطره‌ای باشد که در آینده تبدیل به دریایی بزرگ شود.</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Wed, 16 Oct 2019 13:25:15 +0330</pubDate></item><item><title>بیایید یک کامپیوتر بسازیم ( قسمت چهارم: ALU )</title><link>https://virgool.ir/@hamid.6.11.79/بیایید-یک-کامپیوتر-بسازیم-قسمت-چهارم-alu-olpeshccgf2o</link><description>در قسمت قبل با نحوه ساخت رجیستر ها آشنا شدیم. در این قسمت واحد منطق ریاضی ( arithmetic logic unit ) را می سازیم.واحد منطق ریاضی یک مدار در پردازنده کامپیوتر است که اعمال ریاضی را انجام می دهد. در کامپیوتر ما این قسمت فقط توانایی عملیات های جمع و تفریق را دارد، اما در کامپیوتر های پیشرفته مانند کامپیوتر یا موبایل شما سطح گسترده ای از عملیات ها مانند ضرب و تقسیم و باقیمانده یا انواع شیفت ها و چرخش ها را انجام می دهد.کامپیوتر ما نیز می تواند ضرب و تقسیم و هر کار محاسبه پذیری را انجام دهد ( بدون در نظر گرفتن محدودیت رم ) اگر برنامه آن را به کامپیوتر بدهیم، اما اگر این کار به صورت سخت افزاری توسط ALU انجام شود، در مقدار ثابتی از از زمان انجام می شود ( به عبارت دیگر O(1) واحد طول می کشد. ) اما اگر توسط برنامه انجام شود مقداری که طول می کشد به الگوریتم ما بستگی دارد و ممکن است با بزرگ شدن اعداد ورودی، زمان بیشتری برای محاسبه طول بکشد و زمان اجرا به ورودی بستگی داشته باشد. مثلا اگر شما برنامه ای بنویسید که با فراخوانی ALU ضرب را حساب کند، اجرا شدن برنامه تان مستقل از اعداد ورودی مثلا ده کلاک طول می کشد؛ اما اگر همین کار را به این صورت انجام دهید که تا زمانی که عدد اول ۰ نیست، متغیری را با عدد دوم جمع کنید و از عدد اول یک واحد کم کنید، این کار مثلا دو برابر عدد اول کلاک طول می کشد.پس چرا همه کار ها مداری در ALU ندارند؟ چون در این صورت پردازنده شما پیچیده تر و در نتیجه گران تر می شود! ALU تنها باید کار های بسیار متداول را انجام دهد و بقیه کار به وسیله برنامه ها انجام بگیرد. در گذشته توابعی مانند توابع مثلثاتی سینوس و کسینوس نیز به وسیله واحد ریاضی انجام می شدند اما امروزه این کار انجام نمی شود چون استفاده کامپیوتر تغییر کرده و دیگر سرعت محاسبه آن ها ارزش قیمت بیشتر پردازنده را ندارد. یا مثلا بعضی از دوربین ها و تجهیزاتی از این دست مجهز به مداری برای تبدیل فوریه هستند که انجام آن به وسیله برنامه بسیار طول می کشد و با توجه به استفاده آن ها، این مدار به صرفه تشخیص داده شده است.اعداد چگونه در کامپیوتر نگه داشته می شود؟در قسمت قبل گفتیم که رجیستر های آ و ب می توانند ۸ بیت داده را ذخیره کنند. اما چگونه به این ۸ بیت به عنوان یک عدد نگاه کنیم؟ مثلا یک روش می تواند این باشد که تعداد بیت های با ولتاژ بالا یا ۱ را به عنوان عدد متناظر با آن نگاه کنیم، مثلا عدد ۱۰۰۱۱۰۰۰ برابر ۳ می شود. این گونه می توانیم یک عدد از ۰ تا ۹ را درون ۸ بیت ذخیره کنیم.اما روش بالا بهینه نیست، زیرا اعداد نمایش های تکراری دارند. مثلا ۰۱۱۰۰۰۰۰ و ۰۰۱۰۰۰۱۰ هر دو نمایش دهنده عدد ۲ هستند. به وسیله نمایش اعداد در مبنای دو، می توان 256 عدد مختلف را نمایش داد. ( ابتدا می خواستم مبنای دو را در این نوشته توضیح دهم، اما به این نتیجه رسیدم که اگر ویکی‌پدیا را تر و تمیز کنم افراد بیشتری از آن استفاده می کنند، پس اگر نمی دانید مبنای دو چیست، لینک را ببینید ).جمعجمع دو عدد در مبنای دو مانند جمع دو عدد در مبنای ده است که در دبستان یاد گرفته ایم. با فرض این که ویکی‌پدیا را دیده اید یا با مبنای دو آشنایی دارید، مستقیما سراغ پیاده سازی آن می رویم.مدار جمع کننده کامل ( Full Adder )در مدار بالا A و B دو رقمی هستند که می خواهیم جمع بزنیم، Cin رقم حمل شده یا دو بر یک است، S نتیجه و Cout مقداری است که باید به جایگاه بعدی حمل شود. با ترکیب n نسخه از این مدار، می توان یک جمع کننده n بیتی ساخت که دو عدد n رقمی را جمع بزند.این مدار دو عدد ۴ بیتی A و B را جمع زده و آن را به عنوان S خروجی می دهدتفریقتفریق اگرچه ظاهرا با جمع بسیار تفاوت دارد، اما می توانیم از همان مدار جمع برای تفریق نیز استفاده کنیم. با کمی دقت در می یابیم که مدار جمع ما برای اعداد بزرگ به درستی کار نمی کند. اگر جمع دو عدد بزرگ تر از محدوده اعداد ما باشد ( در کامپیوتر ۸ بیتی ما ۲۵۶ و در کامپیوتر ۶۴ بیتی شما چیزی در حدود هیجده میلیارد میلیارد ) مقدار حمل شده توسط مدار آخر یک می شود، اما از آن استفاده ای نمی شود و مقدار آن از دست می رود. مثلا اگر ما در کامپیوترمان ۲۵۰ را با ۱۰ جمع بزنیم، جواب ۴ می شود! به این اتفاق overflow می گویند.مدار ما در حقیقت دو عدد را جمع نمی زند، بلکه آن ها را جمع می زند و سپس نتیجه را به پیمانه محدوده ( در این جا ۲۵۶ ) اعلام می کند. از این خاصیت پیمانه ای می توانیم برای عمل تفریق استفاده کنیم.می دانیم:a - b = a - b + p = a + ( p - b )          ( mod p )پس می توانیم به جای تفریق دو عدد، اولی را با ۲۵۶ منهای دومی جمع بزنیم. اما چگونه ۲۵۶ منهای یک عدد را در مبنای دو حساب کنیم؟ ساده است. اگر تمام بیت های یک عدد هشت بیتی را برعکس کنیم، برابر ۲۵۵ منهای آن عدد می شود ( درستی را خودتان بررسی کنید ) سپس این عدد را با یک جمع می زنیم و ۲۵۶ منهای آن به دست می آید.توجه کنید که اگر نتیجه مثبت باشد تفریق ما درست کار می کند اما اگر منفی باشد، نتیجه یک عدد مثبت بزرگ خواهد بود؛ زیرا کامپیوتر ما از اعداد منفی پشتیبانی نمی کند :) . اما اگر علاقه مندید که اعداد منفی در کامپیوتر چگونه پشتیبانی می شود، روش مکمل دو را ببینید.در کامپیوتر های امروزی نیز همین روش ها برای نگه داری اعداد صحیح استفاده می شود، اما از روش های دیگری مانند روش نقطه شناور برای نگه داری اعداد حقیقی نیز در کامپیوتر ها استفاده می شود که اگر علاقه مند باشید می توانید درباره آن ها تحقیق کنید و حتی مطلبی بنویسید تا ما هم استفاده کنیم :)پیاده سازیمدار ALUدر این جا ورودی های A و B به طور مستقیم مقدار رجیستر های آ و ب را به واحد ریاضی منتقل می کند. پین SU که از واحد کنترل می آید، تعیین می کند که باید جمع زده شود یا تفریق انجام شود ( ولتاژ زیاد برابر تفریق است ) . قطعه های 74LS283 یک جمع زننده چهار بیتی هستند که با ترکیب دو تا از آن ها یک جمع زننده ۸ بیتی ساخته ایم. SU با تمام بیت های B ایکس اور گرفته می شود تا اگر در حالت تفریق بودیم، تمام بیت های B برعکس شوند و به ورودی حمل کردن در جمع زننده وصل می شود تا در حالت منها جواب به اضافه یک شود. ورودی EO نیز کنترل می کند که جواب در باس نوشته شود یا خیر. این ورودی نیز توسط مدار کنترل تعیین می شود.در قسمت بعد هم می توانیم به بررسی و طراحی رم بپردازیم و هم مدار منطق کنترل، اگرچه رم مقدم است و باید وجود داشته باشد تا مدار کنترل بتواند برنامه اش را از آن بخواند، اما به نظر من مدار کنترل جذاب تر است و می توان بررسی رم را به بعد موکول کرد. نظر شما چیست؟ رم یا مدار کنترل؟</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Tue, 18 Jun 2019 21:56:40 +0430</pubDate></item><item><title>بیایید یک کامپیوتر بسازیم ( قسمت سوم: رجیستر ها )</title><link>https://virgool.ir/@hamid.6.11.79/بیایید-یک-کامپیوتر-بسازیم-قسمت-سوم-رجیستر-ها-ydfo1yah46jd</link><description>در قسمت قبل یاد گرفتیم که چگونه می توانیم داده را در یک مدار ذخیره کنیم. مثلا چگونه یک بیت داده را در یک D-latch ذخیره کنیم. در این قسمت رجیستر های کامپیوترمان را می سازیم.رجیستر چیست؟رجیستر در طراحی کامپیوتر، سریع ترین حافظه است. رجیستر باید توانایی این را داشته باشد که در یک کلاک، داده هایش را به باس منتقل کند یا از باس بخواند. از دیگر حافظه ها می توان به ترتیب سرعت به حافظه کش سی‌پی‌یو، حافظه رم و حافظه دیسک سخت کامپیوتر اشاره کرد. هر چه حافظه ما بخواهد سریع تر عمل کند پیچیدگی ساخت آن بیشتر و در نتیجه گران تر است. به همین دلیل کامپیوتر های ما از حافظه های سریع تر، مقدار کم تری در اختیار دارند. مثلا کامپیوتر من در سال ۱۳۹۸، ۶ مگابایت کش، ۱۲ گیگابایت رم و یک ترابایت، حافظه دیسک سخت دارد.در سی پی یو های واقعی که سرعت شان بسیار بالاست، حافظه های دیگر نمی توانند در یک کلاک، داده ها را به باس منتقل کنند ( مثلا کامپیوتر من که فرکانس سی پی یو اش، 2.6GHz است، رجیستر باید بتواند در کمتر از ۰.۴ نانو ثانیه این کار را انجام دهد ) و از این رو، مجبور به جدا کردن رجیستر هستیم. اما در کامپیوتر ما که محدودیت های دیگر، باعث می شود تا سرعتش بسیار کم تر باشد، نیازی به جدا کردن رجیستر نداریم و می‌توانستیم از رم به عنوان رجیستر استفاده کنیم ( طبعا کمی تغییرات در قسمت های دیگر نیاز است ) اما برای سادگی در طراحی و شبیه شدن کامپیوترمان به یک کامپیوتر واقعی، این کار را نمی کنیم.ساخت رجیستر آ و بشمای بیرونی رجیستر آرجیستر آ و ب رجیستر هایی هشت بیتی هستند که با واحد پردازش ریاضی در ارتباط هستند. برای این که دو عدد را با هم جمع بزنیم یا تفریق کنیم، باید آن ها را در رجیستر های آ و ب لود کنیم. در ادامه خصوصیات رجیستر آ و نحوه ساخت آن را بررسی می کنیم. ( رجیستر ب هم مشابه است ).پین های BUS_0 تا BUS_7 برای خواندن و نوشتن از باس استفاده می شوند. به این صورت که اگر AO مقدارش ۱ باشد ( پین هایی که علامت بار دارند ( بالایشان خط است ) یعنی با نقیض مقدارشان کار می‌کنند؛ به عبارت دیگر اگر به پتانسیل کم وصل شوند، مقدارشان ۱ و اگر به پتانسیل زیاد وصل شوند مقدارشان ۰ می‌شود. این پین های نقیض شده به این علت هستند که پیاده سازی اصلی از قطعاتی استفاده می کند که آن ها به نقیض مقدار این پین نیاز دارند و به جای این که با یک گیت NOT این مساله را حل کنیم، در تمام قسمت های کامپیوتر با نقیض این پین ها کار می کنیم و یک گیت NOT صرفه جویی می کنیم. اگر از نرم افزار های شبیه ساز برای پیاده سازی کامپیوتر استفاده می کنید یا فقط می خواهید با آن به صورت تئوری آشنا شوید، می توانید آن‌ها را در نظر نگیرید. اما اگر واقعا در حال پیاده سازی آن هستید برای جزییات بیشتر قطعات مورد استفاده، به فیلم ها مراجعه کنید. ) رجیستر مقدار خودش را درون باس می نویسد و اگر AI مقدارش ۱ باشد و موج ساعت در لبه بالا رونده باشد ( اگر نمی دانید لبه بالارونده ساعت چیست، قسمت اول را بخوانید ) مقدار باس درون رجیستر نوشته می شود.چرا خواندن از باس هنگام لبه بالارونده ساعت انجام می شود؟فلسفه وجود ساعت در کامپیوتر، راحت کردن زمان بندی کار هاست. بدون ساعت نیز می توان یک کامپیوتر ساخت اما کار به مراتب سخت تر می شود. فرض کنید می خواهیم عدد رجیستر آ را درون رجیستر ب کپی کنیم. اگر ساعت نبود و هر موقع که AI برابر ۱ بود رجیستر مقدارش را از باس می خواند، باید ابتدا AO برابر ۱ می شد، سپس BI برابر ۱ می شد، سپس BI برابر ۰ می شد، سپس AO برابر ۰ می شد و سپس بقیه کار ها انجام می شد. اگر ترتیب این کار ها را بهم بزنیم نتیجه دلخواه را نمی گیریم. مثلا اگر AO را قبل از ۰ کردن BI، برابر ۱ کنیم، مقدار B از باسی خوانده می شود که هیچ کس چیزی در آن نمی نویسد؛ که این مطلوب ما نیست.اما اکنون می توانیم میان دو لبه بالارونده، هم زمان ( یعنی با ترتیب دلخواه ) AO و BI را 1 کنیم و فقط منتظر ساعت باشیم تا کپی انجام شود، و در کلاک بعدی، کار دلخواهی دیگر ( مثلا کپی از ‌B به A ) را انجام دهیم. این موضوع هنگام بررسی منطق کنترل که هنگام لبه پایین رونده ساعت، پین های کنترلی مثل همین AI یا BO را تنظیم می کند، ملموس تر می شود.ساخت یک فلیپ - فلاپفلیپ فلاپ نیز همانند لچ، برای ذخیره داده به کار می رود، با این تفاوت که مقدار فلیپ فلاپ، در لبه بالارونده ورودی ساعتش، برابر داده ورودی می شود. برای ساخت یک فلیپ فلاپ، باید لبه بالارونده ساعت را تشخیص دهیم.تشخیص دهنده لبه بالارونده ساعتدر این مدار در حالت عادی خروجی همیشه ۰ است. چون ورودی و نقیض آن به یک گیت AND وصل شده اند. اما بیایید موقع تغییر ولتاژ ورودی از زیاد به کم و از کم به زیاد، با دقت بیشتری خروجی را بررسی کنیم.در قسمت قبل گفتیم که همه تجهیزات، حتی سیم ها مقداری تاخیر دارند. این تاخیر در گیت ها مثل گیت NOT بسیار بیشتر ( اما باز هم بسیار کم و در حد نانو ثانیه ) است. این تاخیر باعث می شود تا هنگامی که ساعت از ۱ به ۰ تغییر می کند، برای مدت کوتاهی هر دو سر سیم ۰ شوند و وقتی ساعت از ۰ به ۱ تبدیل می‌شود، هر دو سر سیم ۱ شوند. این اتفاق باعث می شود تا خروجی این مدار، پالس کوچکی در هنگام لبه بالارونده ساعت درست کند. اگر این پالس را با ورودی ENABLE دی-لچ اند بگیریم، یک دی-فلیپ فلاپ ساخته می شود. دی-فلیپ فلاپ، مانند دی-لچ است با این تفاوت که مقدار آن، فقط وقتی تغییر می کند که ساعت در لبه بالارونده باشد و مقدار ENABLE آن یک باشد.با گذاشتن هشت فلیپ فلاپ در کنار هم می توانیم یک رجیستر بسازیم.ساخت رجیستردر طرح بالا، قطعه های U8 و U9 را می توانید معادل 4 عدد D-flip flop در نظر بگیرید و U7 قطعه ایست که کنترل می کند تا خروجی در باس نوشته شود یا خیر. این قطعه را در قسمت بررسی باس بیشتر بررسی خواهیم کرد. از طریق قسمت پایین، مقدار ذخیره شده در رجیستر به قسمت پردازش ریاضی منتقل می شود. ال ای دی ها نیز برای تست و اشکال زدایی کامپیوتر هست و اجباری در گذاشتن آن ها نیست.با ساخت رجیستر به صورت کلی آشنا شدیم و رجیستر های آ و ب را بررسی کردیم. رجیستر دستورالعمل نیز مشابه همین رجیستر هاست اما از آن صرفا برای انقال دستورالعمل به منطق کنترل استفاده می کنیم. رجیستر آدرس حافظه یک رجیستر ۴ بیتی است ( بقیه رجیستر ها ۸ بیتی بودند ) که از آن برای تعیین آدرس در حال استفاده رم استفاده می کنیم. رجیستر آدرس مکانیزمی برای تعیین دستی نیز دارد، که از آن برای تغییر مقدار های رم به صورت دستی برای ذخیره کردن برنامه روی رم استفاده می کنیم.در قسمت بعد واحد پردازش ریاضی را می سازیم و رجیستر های آ و ب را به آن وصل می کنیم. پس این سری را دنبال کنید.</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Wed, 05 Jun 2019 10:07:45 +0430</pubDate></item><item><title>بیایید یک کامپیوتر بسازیم ( قسمت دوم: نگهداری وضعیت )</title><link>https://virgool.ir/@hamid.6.11.79/بیایید-یک-کامپیوتر-بسازیم-قسمت-دوم-نگهداری-وضعیت-k7wh7jnp2cg7</link><description>در قسمت اول با طرح کلی کامپیوترمان آشنا شدیم. در این قسمت مستقیما قسمتی از کامپیوتر را طراحی نمی کنیم. بلکه با مدار هایی آشنا می شویم که می توانند برحسب ورودی هایشان، وضعیت خود را تغییر دهند.بار دیگر به طراحی کامپیوترمان نگاه کنید. رم، رجیستر ها و حتی شمارنده برنامه، همه به نوعی نگهدارنده وضعیت هستند. اما چگونه می توان وضعیت را نگه داشت؟ آیا به وسیله فیزیکی خاصی نیاز داریم؟ ما این کار را با گیت های منطقی انجام می دهیم.یک مثال سادهیک نگهدارنده ساده وضعیت با استفاده از گیت یادر ابتدا کلید باز و چراغ، خاموش است. اگر کلید را ببندیم، چون یکی از پایه های گیت یا ۱ می شود، خروجی نیز ۱ می شود و در نتیجه، چراغ روشن می شود. حال اگر کلید را مجددا باز کنیم، چه اتفاقی می افتد؟ چراغ هم چنان روشن می ماند! چون خروجی ۱ بوده پس ورودی دیگر گیت یا ۱ می شود. در نتیجه از این به بعد مستقل از این که ورودی ای که با کلید تعیین می شود چه باشد، خروجی ما یک خواهد بود. یعنی ما می توانیم یک شدن ورودی در گذشته را ذخیره کنیم و ۱ شدن ورودی، وضعیت درونی مدار را تغییر می دهد. اگرچه این مدار به نوعی یک حافظه یکبار مصرف است و عملا کاربرد خاصی ندارد، اما یک شروع خوب است!وصل کردن خروجی به ورودی بی معنی نیست؟نباید به گیت های منطقی به چشم توابع در ریاضی نگاه کنید که باید تمام ورودی ها معین باشند تا عبارت ریاضی ما معنی دار شود. گیت های منطقی، در عمل متشکل از یک سری شئ فیزیکی مانند سیم و ترانزیستور هستند و این اشیاء خود در مدار ما نقش یک خازن را بازی می کنند؛ یعنی باعث تاخیر در اتفاقات می شوند ( تاخیری در حد نانو ثانیه ). یعنی بعد این که ورودی گیت ۱ شد، مدت زمان ناصفری زمان بعد هنوز خروجی گیت ۰ است و بعد از چند نانو ثانیه این خروجی یک می شود. از این موضوع می توانیم استفاده کنیم و بگوییم مثلا ورودی اول ۱ می شود، سپس خروجی ۱ می شود، سپس ورودی دوم ۱ می شود و ... . اگر با این دید به گیت های منطقی نگاه کنیم، دیگر مشکلی با وصل کردن ورودی به خروجی نخواهیم داشت.ذخیره یک بیتیک SR-latch تشکیل شده از دو گیت NORاگر در مدار بالا، کلید بالا را ببندیم، چراغ پایین روشن می شود و اگر کلید پایین را ببندیم و کلید بالا را باز بگذاریم برعکس، اما اگر هر دو کلید را باز بگذاریم، مدار وضعیت قبلی خود را حفظ می کند. ( چرا ؟ )از این مدار می توانیم برای ذخیره یک بیت استفاده کنیم. اگر پین بالا را یک کنیم، مقدار حافظه مان ست شده و ۱ می‌شود و اگر پین پایین را یک کنیم، مقدار آن ریست شده و ۰ می شود. به همین دلیل به این مدار، یک SR-latch یعنی latch با قابلیت set و reset می گویند.از این مدار می توان به صورت زیر نیز استفاده کرد:در این جا اگر کلید پایین بسته باشد، وضعیت خروجی ( چراغ ) برابر وضعیت کلید بالا می شود، اما اگر کلید پایین را باز کنیم، مستقل از این که کلید بالا چه باشد، مدار وضعیت قبلی خود را حفظ خواهد کرد. به این مدار یک D-latch یعنی latch که می تواند یک بیت داده ( Data ) را نگه دارد.مثلا می توان برای نگهداری یک عدد 8 بیتی، ۸ تا از این D-latch ها را کنار هم بگذاریم، پین پایینشان را به یک ورودی با نام WE یا حالت نوشتن فعال، وصل کنیم، سپس ۸ سیم را به ۸ پین بالا وصل کنیم. حال هر وقت که بخواهیم می توانیم WE را یک کنیم و یک عدد دلخواه را در حافظه مان ذخیره کنیم. و هر وقت که WE را ۰ کنیم، حافظه مان وضعیت قبلی خودش را حفظ می کند.در قسمت بعد با همین مدار ها رجیستر های کامپیوترمان را می سازیم. پس این سری را دنبال کنید.  </description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Mon, 03 Jun 2019 20:55:50 +0430</pubDate></item><item><title>بیایید یک کامپیوتر بسازیم ( قسمت اول )</title><link>https://virgool.ir/@hamid.6.11.79/بیایید-یک-کامپیوتر-بسازیم-قسمت-اول-z0ge91tfxoyo</link><description>از بچگی به کامپیوتر به چشم یک دستگاه جادویی نگاه می کردم. کامپیوتر، بر خلاف سایر وسیله ها مثل مبل، میز یا صندلی یا حتی وسایل برقی مانند جاروبرقی، همزن یا تلویزیون، یک وسیله پیچیده بود. درباره سایر وسیله ها آشنایی کمی با طرز کارشان داشتم، و بیش از آن دیگر مرا کنجکاو نمی کرد؛ مثلا می دانستم که جاروبرقی با چرخش موتورش، هوا را مانند نی می مکد و آشغال ها هم با هوا به درون جارو می آیند. اما دیگر برایم مهم نبود که مثلا چگونه موتور می چرخد. اما کامپیوتر، وسیله ای بود که هیچ ایده ای راجع به طرز کار آن نداشتم.بعد ها که بزرگتر شدم و با برنامه نویسی آشنا شدم، موضوع به جای این که بهتر شود، بدتر شد. من می توانستم برنامه ای بنویسم که هر چیز دلخواهی روی مانیتور نمایش دهد، ماوس را تکان دهد، یک فایل پاورپوینت بسازد یا سی دی خوان را باز و بسته کند. اما این علاوه بر این که چیزی از جادویی بودن آن کم نمی کرد، بلکه به آن می افزود. کاری که من می کردم این بود که در یک فایل متنی، با قواعد خاصی می نوشتم &#34;ماوس را تکان بده&#34; یا &#34;فلان چیز را نمایش بده&#34;. اما چیزی که آن را واقعا اجرا می کرد، کامپیوتر جادویی و دستیار آن، سیستم عامل بود.این موضوع ادامه داشت تا این که آن را با یکی از دوستانم در میان گذاشتم، و او به من این فیلم ها را معرفی کرد. فیلم هایی که قطعه گم شده پازل ذهن من بود، و کامپیوتر را از یک جعبه جادویی، به چیزی تبدیل کرد که تا جزئیات بسیار ریز آن را می توانستم بفهمم.هدف این سری نوشته، تبدیل فیلم های انگلیسی به متن فارسی است. اگرچه فیلم ها از جهاتی بهتر هستند، مثلا حسی که دیدن کار کردن یک کامپیوتر در فیلم به ما می دهد را از دست می دهیم، اما در عوض از جزییات پیاده سازی که ممکن است برای برخی ( مثل من ) خسته کننده باشد راحت می شویم و با سرعت بیشتری به سراغ اصل مطلب می رویم.اگر فیلم دیدن را از خواندن بیشتر دوست دارید یا دوست دارید کار کردن کامپیوتر را ببینید یا این که من تنبلی کردم و دیر می نوشتم یا روزی تصمیم گرفتم که ادامه سری را ننویسم، می توانید فیلم ها را از این لینک ببینید.کامپیوتر چیست؟کامپیوتر یک ماشین محاسبه است. همین متنی که الآن می خوانید، متشکل از پیکسل هاییست که رنگشان جایی در کامپیوتر شما در حال محاسبه شدن است. اما فرق کامپیوتر با یک ماشین حساب معمولی این است که می توان به آن برنامه داد. ماشین حساب تنها اعمال از پیش تعیین شده، مانند جمع، ضرب یا لگاریتم را انجام می دهد اما یک کامپیوتر، می تواند همه آن کار ها و همه کار های قابل محاسبه ( همه کار هایی که روشی معین و غیر خلاقانه دارند و از یک سری دستور العمل تشکیل شده اند ) را بدون این که سخت افزاری برای آن داشته باشد، انجام دهد.طبق این تعریف، همه وسایل قابل برنامه ریزی، مانند کامپیوتر شخصی، موبایل، شاید خودرو، مودم اینترنت و هر وسیله دیگری می تواند یک کامپیوتر باشد.قرار است دقیقا چه بسازیم؟چیزی که قرار نیست انجام دهیم، سر هم کردن یک کیس است. قرار نیست یک چیز کاربردی بسازیم و هدف آموزش است. قرار است پیاده سازی هر جزء را تا مرحله سیم و ترانزیستور شرح دهیم. یعنی شما می توانید با مقدار متناهی سیم و ترانزیستور، این کامپیوتر را بسازید. اما جزییات بیشتر پیاده سازی و تجهیزاتی که می‌توانند راحت تر و ارزان تر پیاده سازی را انجام دهد را می توانید از خود فیلم ببینید. و هدف اصلی این نوشته ها توضیح چگونگی کارکرد است، نه واقعا ساختن آن.اما قرار است محصول ما چه باشد؟ دقیقا این:طرح کلی کامپیوتر مااین یک کامپیوتر ۸ بیتی با 16 بایت رم است. ( بعدا این اصطلاحات را بررسی خواهیم کرد. )قسمت های مهم کامپیوتر ما که در بالا می بینید عبارت اند از:منطق کنترل: قسمتی است که دستور العمل ها را از قسمت رجیستر دستورالعمل دریافت می کند و بر اساس آن، تعیین می کند که اکنون باید چه اتفاقی بیفتد. مثلا کامپیوتر متوقف شود، مقدار رم در رجیستر آ نوشته شود، مقدار رجیستر ب، آدرس خانه آماده به کار رم را تعیین کند و ... . او این کار را توسط ایجاد اختلاف پتانسیل یا همان ۰ و ۱ کردن خروجی هایش که با سیم به قسمت های مختلف کامپیوتر ما وصل شده اند، انجام می دهد.رم: حافظه کامپیوتر ماست. از طریق قسمت های A0 تا A3 می توانیم یک عدد ۴ بیتی در مبنای دو ( از ۰ تا ۱۵ ) را به آن بدهیم و با آن، آدرسی را که می خواهیم با آن کار کنیم را تعیین کنیم. ( در نتیجه ۱۶ بایت در رم در اختیار داریم ) سپس مقدار آن را در باس بنویسیم یا مقدار درون باس را درون آن ذخیره کنیم ( از طریق ۰ و ۱ کردن RI و RO ). از حافظه رم در نگهداری دستورالعمل ها ( برنامه ) و هم چنین حافظه ای برای استفاده برنامه از آن ( یعنی همان متغیر های برنامه ) استفاده می کنیم.ساعت: از ساعت برای تولید یک موج مربعی استفاده می کنیم. یعنی در هر 2t ثانیه، در t ثانیه اول ولتاژ خروجی ساعت زیاد و در t ثانیه دوم کم است. از این موج برای زمان بندی کار ها در کامپیوتر استفاده می کنیم. مثلا مقدار رجیستر ها در لبه بالا رفتن موج ( وقتی ولتاژ از ۰ به ۱ تبدیل می شود ) تغییر می کنند.یک موج مربعی. برای اطلاعات بیشتر، سیگنال ساعت را ببینید.خروجی: این قسمت عدد درون باس را به صورت قابل فهم برای انسان ( یک عدد از -۱۲۸ تا ۱۲۷ به صورت مبنای ده توسط سون سگمنت ) نمایش می دهد.واحد پردازش ریاضی ( ALU ): این قسمت می تواند جمع و تفریق اعداد ذخیره شده در رجیستر های آ و ب را محاسبه کند و در صورت فرمان واحد کنترل، آن را به باس انتقال دهد.باس: این قسمت فقط شامل ۸ سیم است که اجزای کامپیوتر می توانند با آن یک عدد ۸ بیتی را به هم انتقال دهند.شمارنده برنامه این قسمت یک عدد ۴ بیتی را در خود نگه می دارد که در هنگام لبه بالا رفتن ساعت، مقدارش یک واحد زیاد می شود. از این قسمت برای نشان دادن آدرسی که دستورالعمل باید از آن برداشته شود استفاده می کنیم.چیزی سر در نیاوردید؟ باید هم همین طور باشد. این قسمت معرفی چیزی است که در انتها قرار است آن را بسازیم. اما چیزی بدون توضیح نمی ماند. آن قدر جلو می رویم تا در هر قسمت به سیم و ترانزیستور برسیم. پس این سری را دنبال کنید.</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Mon, 03 Jun 2019 05:43:18 +0430</pubDate></item><item><title>رقابت جواب می دهد؛ اما بهینه نیست!</title><link>https://virgool.ir/rayanesh/رقابت-جواب-می-دهد؛-اما-بهینه-نیست-ixdjbz1qkueu</link><description>برای نگه داشتن یک طناب، نیازی به این همه زور نیست!شما در طول روز با آدم های بسیاری رقابت می کنید. اما چرا؟ آیا واقعا نیازی به رقابت با دیگران دارید؟ آیا باید از همه برتر باشید؟ زندگی خوب شما دست دیگران است و باید آن را از چنگشان در آورید؟ بیایید رقابت را با هم بیشتر بررسی کنیم.فرض کنید شما یک کشاورز هستید و با یک کشاورز دیگر در دو واحد از زمین های من زندگی می کنید. شما در زمین ها کشاورزی می کنید و در عوض من ملزومات زندگی شما ( غذا، مسکن و ... ) را فراهم می کنم و بقیه اش را در جیبم می گذارم ( چه ناعادلانه )سود من در بیشینه کردن سود زمین است. اما تاثیر من در آن کم است. پس من از روش معمول ایجاد رقابت استفاده می کنم. مثلا می گویم هر که زمینش کمتر محصول داشت، یک روز در میان غذا می خورد. ( یا کمی سخاوت مندانه تر، هر که زمینش بیشتر محصول داشت، مثلا خانه اش بزرگ تر می شود. )رقابت ناسالمشما که انسان کوشایی هستید تلاش بسیار می کنید و زمین را بسیار پربار می کنید. رقیب شما که این وضعیت را می بیند، می فهمد که توانایی اش از شما کمتر است و به طور عادی از شما شکست می خورد. پس او چه می کند؟ با بیلش پای شما را می شکند. او در رقابت پیروز شده، اما من نه تنها به هدفم که سود بیشینه بود نرسیدم، بلکه احتمالا از حالت عادی نیز کمتر سود کردم.کسی در بد بودن رقابت ناسالم شکی ندارداما آیا مشکل فقط رقابت ناسالم است؟ فرض کنید من مشکل رقابت ناسالم را حل کردم. مثلا یک پلیس کنار شما آوردم، یا دوربین گذاشتم، یا به هر طریقی جلوی خطا کردن شما را گرفتم. اکنون دیگر وضعیت بدتر از حالت عادی نمی شود؛ اما آیا من به هدفم که سود بیشینه بود رسیدم؟ خیر.همکاری بسیار بهتر از رقابت استفرض کنید که محصول شما هر روز به آبیاری نیاز دارد و همچنین کلاغ ها محصول شما را می خورند. و فقط همین دو معیار میزان محصول شما را تعیین می کند. شما یک دستگاه کلاغ پران دارید که وقتی پشت آن نشسته اید می توانید کلاغ ها را بپرانید. و مشکل این است که هنگام آبیاری، پشت دستگاه نیستید و کلاغ ها از همین زمان استفاده می کنند و به شما آسیب می زنند.آیا شما حاضرید هنگامی که شخص دیگر در حال آبیاری مزرعه اش است، کلاغ هایی که به مزرعه او می آیند را هم با دستگاه هدف قرار دهید؟ عقل سلیم می گوید که این کار را نباید بکنید. این مصداقی از رقابت ناسالم هم نیست و علاوه بر این که منطقیست، انسانی هم هست. شما هیچ وظیفه ای در قبال مزرعه شخص دیگر ندارید. اما من با این روش در ضررم.پس من به جای این که هدف شما را رقابت بگذارم، هدفی می گذارم که با همکاری بتوانید به آن برسید. مثلا اگر جمع محصولتان از حد معینی بیشتر شد، من به شما پاداش می دهم وگرنه مجازاتتان می کنم.شما تعیین کننده بازی هستیداما اگر از مثال مزرعه بیرون بیاییم، شما خودتان را در رقابت هایی می بینید که کسی شما را در آن قرار نداده است. بلکه به طور طبیعی در آن‌ها قرار گرفته اید. اگر کمی به جهان پیرامون خود دقت کنید، می بینید که بسیاری از توان انسان ها صرف رقابتی کاملا غیر مولد ( مثل آزمون ها، مسابقه ها، جنگ ها یا حتی رقابت بر سر بازاریابی یا فروش و ... ) و بسیاری دیگر صرف تولیدی ناکارآمد مانند مثال مزرعه می شود.برای کنار گذاشتن رقابت، باید ابتدا هدف اصلی را پیدا کنید. مثلا اگر در مثال مزرعه کسی به عنوان صاحب مزرعه وجود نداشت شما باید خودتان به صورت مجازی آن را می ساختید و خودتان به این نتیجه می رسیدید که همکاری برای شما بهتر است. شما باید به این درک برسید که لزومی برای ماکسیمم کردن منفعت شخصی نیست و خود را جزئی از یک کل بزرگتر ببینید ( مثلا عضو یک تیم، عضو یک سازمان، عضو یک کشور، عضو یک دین یا حتی عضو جامعه انسان ها ) و سعی کنید منافعتان را به لایه های بالاتر ببرید. ( مثلا به جای این که منفعت خود را در این ببینید که من امشب باید شام بخورم، در این ببینید که همه هم محله ای هایم باید در امشب شام بخورند ) و این طرز نگاه شما را از این که ناهار هم محله ایتان را بردارید که یک رقابت غیر مولد است دور نگه می دارد.رقابت در عمل از بین نمی رودرقابت، پایه های تمدن بشر است و اگر آن را حذف کنیم، می ریزد.رقابت، یکی از پایه های زیرین تمدن بشر امروز است. به طوری که اگر آن را حذف کنید، تمدن فرو می ریزد و آن قدر فشار برآن زیاد است که شاید همه انسان ها با هم نیز نتوانند آن را حتی ذره ای تکان دهند. اگر کمی با دقت بیشتر به پیرامون نگاه کنید بسیاری از چیز هایی که حتی فکر نبودشان را هم نمی توانید بکنید، حاوی درصد بالایی از رقابت غیر مولد هستند. مثلا فروش کتاب یا برنامه و قفل گذاشتن روی آن ها و منع مردم از استفاده آزاد از آن، کاری غیر مولد است که ریشه در رقابت دارد.پس اگر نمی توان رقابت را حذف کرد، من چرا این متن را نوشتم؟ چون اگرچه نمی توانید آن را به طور کامل از زندگی خود و دیگران کنار بگذارید ( و در خیلی از موارد جزئی نیز نمی توانید. عمدتا به خاطر این که اگر با دیگران رقابت نکنید، آن ها با شما رقابت می کنند ) اما می توانید آن را از هدف گذاری تان حذف کنید و هر چه قدر آدم های بیشتری به دنبال گریز از رقابت باشند، نقش رقابت در زندگی ما کم تر می شود. پس این را به اشتراک بگذارید و مانند آن را تولید کنید؛ شاید نوادگان ما از شر رقابت خلاص شوند.</description><category>حمیدرضا کلباسی</category><author>حمیدرضا کلباسی</author><pubDate>Fri, 31 May 2019 00:13:00 +0430</pubDate></item></channel></rss>