همایش روز آزادی نرم‌افزار

پوستر همایش
پوستر همایش

خب ۲۷ شهریور که گذشت روز ازادی نرم‌افزار بود و من هم عضو تیم اجرایی و مجری بودم. حالا اینکه روز آزادی نرم‌افزار چیه با یک سرچ خیلی ساده میتونید پیدا کنید پس من دربارش حرف نمیزنم تا الکی سرتونو درد نیارم.چیزی که میخوام بنویسم بیشتر درباره کار های اجرایی هست و اینکه چطوری یک کار رو اصولی جلو ببرید. نه اینکه ما اصولی جلو برده باشیم ها!! 🙂 فقط یادگرفتیم که چجوری اصولی باشه. حالا تا دفعات بعدی استفاده کنیم.

مورد اول:

هیچ وقت امیدوار نباشید که کسی که میتونه بدون کار کردن هم پول در بیاره کار شمارو راه بندازه!

پس باید حسابی براش بدو بدو داشته باشید پس از دو سه ماه قبل کار هارو شروع کنید!

مورد دوم:

هر پروژه ای که انجام میدید، چه کوچیک چه بزرگ، حتما روی سیستم RACI مدیریتش کنید.

سیستم RACI یک سیستم هست برای مدیریت پروژه تا بتونید مسئولیت هارو تقسیم کنید. میتونید توی صفحه ویکیپدیای مربوط بهش اطلاعات مفیدی رو پیدا کنید.شاید بعدا دربارش یک متن کامل نوشتم.

مورد سوم:

مجری نباید صدای کلفت و داشته باشه و یک مریضی که هی سرفه کنه 😐

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

مورد آخر:

هیچ وقت به آمار اعتماد نکنید!

ما ثبت نام رو روی سیستم ایوند قرار دادیم تا آمار شرکت کننده هارو داشته باشیم.خب اصلا تعداد با شرکت کننده ها انطباق نداشت. یکسری ثبت نام میکنند ولی نمیان( چون رایگانه!‌ ) یکسری هم ثبت نام نمیکنن و میان چون بدون ثبت نام هم میتونن شرکت کنن. پس کلا قابل پیش بینی نیست که چند نفر میان!

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

تیغ اوکام

william_ockham
William Ockham

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

ویلیام اوکام فیلسوف و منطق‌دان انگلیسی که ۷ قرن پیش زندگی میکرده. از عمده دلایل شهرتش اینهمه سال پس از مرگ، «اصل تیغ اوکام» یا با اسم دیگه «اصل اختصار تبیین» هست.

حالا این تیغ اوکام چی هست و چی میگه؟

ویکیپدیا میگه به شکل ترجمه عامیانه از لاتین تیغ اوکام این رو میگه:

در توضیح و توصیف، بخش‌های ناضروری را حذف کن.

ولی این که حالا این یعنی چی باز ویکی پدیا اینو میگه:

میان دو نگره که توان توصیف و پیش‌بینی یکسانی دارند، ساده‌ترین را بگزین.

خب فکر کنم یکم مشخص شده باشه که چی میگه.

تا اینجا که تمام استنادمون به ویکیپدیا بوده پس از همونجا یک مثال هم میارم براتون:

چرا در یخچال خانه هیچ غذایی نیست؟! آیا گروهی ازسارقان بین‌المللی آن را خالی کرده‌اند؟ آیا یخچال شیئی ساخته فضایی هاست که هر غذایی را ناپدید می‌سازد؟ یا اینکه دلیل خالی بودن یخچال، این است که هم اتاقی من و دوستانش دیشب گرسنه بوده‌اند؟

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

ولی ایرادات زیادی به تیغ اوکام وارده که یکی از مهمتریناش معیار سادگی هست. وقتی که گفتیم «میان دو نگره که توان توصیف و پیش‌بینی یکسانی دارند، ساده‌ترین را بگزین.» ساده ترین اصلا کدوم یکی هست؟ ما به چی میگیم ساده؟!

تا اینجای داستان برای همه بود و هر کسی میتونست بخونه و ازش استفاده کنه. ولی از اینجا دیگه مربوط میشه به کامپیوتر و برنامه نویسی…

خب مثالمو با زبان برنامه نویسی CPP میزنم.

یک برنامه ای رو اجرا میکنید و خروجی Hello World رو دریافت میکنید. به نظر شما برنامه نویس توی سورس برنامه چی نوشته که خروجیش این شده؟ خط اول، دوم یا سوم کد زیر؟

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

گفتیم که از ایرادات وارد به تیغ اوکام بررسی سادگی هست. ولی خب شاید بتونیم توی برنامه نویسی معیار های خوبی برای سادگی بیاریم.

مثلا میشه به نظر من اینارو معیار های خوبی قرار داد و به اونهایی که این ویژگی هارو دادند برنامه های ساده تر گفت:

  • تعداد حلقه های کمتر
  • تعداد شرط های کمتر
  • تعداد متغیر های کمتر
  • خطوط کوتاهتر
  • و…

ابته منظورم از خطوط کوتاهتر خطوط کمتر نیست ها!! منظورم طول هر خط هست. به نظر من تعداد خطوط معیار مناسبی برای سادگی نیست.

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

اندر مزایای پایگاه داده های گراف محور و OrientDB

در روز های اخیر کاری داشتم که نیاز داشتم یکسری اطلاعات رو که باهم ارتباط دارند مدل کنم.بعد از کلی تفکر تونستم اونارو روی گراف وزن دار جهت دار مدل کنم.بعد اومدم توی برنامه ازش استفاده کنم.از قبل میدونم که گراف رو میتونم روی ماتریس مجاورت مدل کرد تا راحت تر ذخیره کنم ولی وقتی دقت کردم دیدم که از نظر حجم اطلاعات و سرعت بازیابی به مشکلات زیادی میخورم.همون موقع بود که یادم افتاد برای ذخیره اطلاعات به اشکال غیر مرسوم میتونم از NoSQL ها استفاده کنم.

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

خلاصه اینکه یک نوع از این پایگاه داده های جدید هم پایگاه داده های گراف محور یا Graph Based هستند.از معروف ترین این دیتابیس ها میشه به NEO4j اشاره کرد. ولی خب دیتابیس هایی هم هستند که از چند نوع از ساختار های NoSQL پشتیبانی میکنند مثل OrientDB که هم از حالت گراف پشتیبانی میکند و هم از سند-گرا که یکی دیگر از ساختار های NoSQL است.

خلاصه این که برای کار خودم از پایگاه داده OrientDB استفاده کردم تا گراف رو داخلش ذخیره کنم.خب قبل از این من توی C# به MS-SQL و توی PHP به MySql متصل شده بودم و باهاشون کار کرده بودم.ولی خب تا حالا با Java به هیج دیتابیسی وصل نشده بودم. پس این کار برای من دوتا جنبه تازه داشت. اول اینکه برای اولین بار داشتم توی جاوا به پایگاه داده متصل میشدم و دوم اینکه اولین تجربه من با دیتابیس OrientDB و در کل یکی از زیر شاخه های جنبش NoSQL بود.

خب اولین کاری که باید میکردم ساختن یک دیتابیس محلی در آدرسی هست که خودم میخوام تا برنامه بتونه باهاش در ارتباط باشه.

فقط برنامه برای کار کردن به چند تا از کتابخانه های OrientDB نیاز داره که توی پوشه /lib خود دیتابیس میتونید پیداشون کنید.

خب من به این فایل ها برای کتابخانه نیاز دارم و اونارو به اپلیکیشن خودم اضافه میکنم.

خب حالا بریم سر برنامه. اول از هر چیزی من نیاز دارم تا ایمپورتشون کنم:

حالا دیگه تمام چیزی که نیاز دارم این یک خط کده تا کل گراف رو وارد آبجکت graph بکنم:

همچنین باید هروقت کارم با دیتابیس تموم شد متود shutdown رو از گرافم اجرا کنم تا ارتباط قطع بشه.خب پس به صورت اصولی تر میام از ساختار try finally استفاده میکنم.

حالا میتونم داخل بخش try کد های مربوط به کار کردن با گرافم رو بنویسم. تقریبا کاری دیگه نمونده.

به مثال های زیر در کار با گراف دقت کنید تا دیگه من شرح ندم:

از نکات خیلی جالبش اینه که نیاز به sync کردن نیست و هر کاری میکنید مستقیما توی پایگاه داده اعمال میشه.همچنین OrientDB از زبانی شبیه به SQL برای Query های خودش استفاده میکنه که بیشتر فقط زمانی که میخوایم بر اساس یک الگوی خاص دنبال یک چیزی بگردی ازش استفاده میکنیم. برای استفاده از اون هم میتونید به صورت زیر استفاده کنید:

سعی کردم اینجا خیلی خلاصه به اصول کلی اشاره بکنم. اگه میخواستید بیشتر مطالعه کنید یا مثلا توی زبان های دیگه از این دیتابیس استفاده کنید میتونید به مستندات خودشون مراجعه کنید که آدرسشو اینجا میگذارم:

http://orientdb.com/docs/master/index.html

Geek Pride Day

خب شنوندگان(خوانندگان) عزیز امروز ۲۵ می سال ۲۰۱۶! روز افتخار، روز سرافرازی و روز غرور جمعیت گیک های کره زمین هستش!

روز ۲۵ می از سال ۲۰۰۶ به روز Geek Pride Day معروف هست و روزی هست که گیک ها برای خودشون جشن میگیرن.این روز برای اولین بار توی اسپانیا با این عنوان برپاشد و از سال ۲۰۰۸ در آمریکا به شکل جدی‌تری به کارش ادامه داد!

Geek-Pride-Day-Wish-Photoخب برای اونایی که نمیدونن گیک یعنی کی، باید بگم که گیک ها افرادی هستند که علاقشون به یک چیز توی زندگی روزمرشون اثر گذاته و این اثرات معمولا عجیب و غریب هستند!

و چیزی که جالبه اینکه معمولا افرادی که گیک یک چیزی هستند گیک چیز های دیگه هم هستند!

مثلا من خودم در اولین مرتبه گیک کامپیوترم:D ولی در ادامه باید بگم که گیک داستان های کمیک و ابرقهرمانی، گیک غذا و گیک غذا هم هستم 😀

البته بعضی چیزا هم هستند که بین گیک و نرد ها مشترک هستند مثل Book Worm بودن که البته در تلاشم که به اون مرحله برسم و هنوز کار داره تا به این درجه نایل بشم!

حالا چرا این روز؟ احتمالا به خاطر سالگرد انتشار اولین نسخه از فیلم جنگ ستارگان! خب بلاخره خیلی از گیکا دوستش دارند!

و نکته جالب ینکه این روز با روز حوله Towel Day همزمانه! کلا مناسبت های جالبی توی دنیا هستند.

خب وظیفه ما اطلاع رسانی درباره این روز فرخنده و خجسته بود و حالاکه کارمون تموم شد دیگر حرفی نیست جز خداحافظی 😀

برنامه های تابستان

خب دیگه به شروع ماه گریه و خون یعنی خرداد رسیدیم 😀 یعنی فکر نمیکنم کسی باشه که از خرداد دل خوشی داشته باشه!

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

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

ولی بحث زیبای پروژه ها! خب توی تابستونی که میاد باید منتظر چه چیزایی باشید؟ اول از همه پروژه سیستم مدیریت محتوایی هست که برای وبسایت های خبری طراحی شده و هنوز اسمی نداره که بخوام با اون معرفیش کنم.ولی خب این پروژه تقریبا تکمیله. از نکاتی که این سیستم رو متمایز میکنه ساختار کاملا منعطف و خیلی سادشه که خیلی ساده میتونید همه چیز رو به عنوان پلاگین به سیستم اضافه کنید.کلا چیز باحالیه 😀

پروژه بعدی که احتمالا با کمک یکسری از دوستان شروع بشه پروژه ای هست که فعلا اسمشو گذاشتم دودویی یا همون مبنای دوی خودمون.این پروژه یک وبسایته که قراره روی آموزش تمرکز داشته باشه.سیستمش کاملا اصولیه و سعی شده تا همه چیز خیلی مرتب و طبقه بندی شده توش قرار بگیره.هنوز ظاهرش یکم کار داره و اینکه مطالب اولیش باید آماده بشن.این یکیو خیلی دوست دارم چون یکبار که خوابم نمیبرد ساعت فکر کنم ۶ یا ۷ صبح به سرم زد و یکم اولشو نوشتم تا خوابم بیاد 😀

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

نظریه های یادگیری به خصوص هال!

theoriesofhumanlearningچند وقتی میشه که شروع کردم به خوندن کتاب نظریه های یادگیری انسان نوشته گی آر. لفرانسوا که آقای سید محمدی ترجمش کردن.

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

شاید در حین خوندنش اگه چیزای جالبی دیدم اینجا دربارشون بنویسم و یکم نظرمو دربارشون بگم.

الآن تقریبا چهار فصل از این کتابو خوندم و میشه گفت که وسطاشم. شاید قسمت جالب کارم الآن.توی فصل قبلی بخشی بود درباره کلارک لئونارد هال و نظریه جالبش.

گفتم شاید اگه اینجا یکم دربارش بنویسم خوب باشه.

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

کلارک لئونارد هال

با این وجود آقای هال اومدن و سعی کردن که برای این یادگیری فرمول های ریاضی تعریف کنند و روابط بین اونهارو با متغیر های ریاضی و توابع وابسته به همدیگه تعریف کردن. اگه اینو بدونیم که هال تا سن ۶۸ سالگی زندگی کرده و در سال ۱۹۵۲ چشم از این دنیای شوم بسته متوجه میشیم که خیلی جلوتر از زمان خودش داشته فکر میکرده.

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

راستش برای من به عنوان کسی که به برنامه نویسی و الگوریتم ها علاقه دارم چیزی که باعث شد نظریه هال برام جالب باشه اینه که اومده درواقع یک الگوریتم برای یادگیری انسان طرح کرده.

حالا دیگه من میرم تا ادامه این کتابم بخونم و اگه بازم به نظرم چیز جابی بود اینجا مینویسم.

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

چرا UX انقدر مهمه؟

شاید خیلی درباره UI شنیده باشیم.UI یا همون User Interface که ترجمش میشه رابط کاربری خیلی مهمه چون اینکه نرم‌افزار شما چقدر بتونه با ظاهرش کاربر رو مجذوب خودش کنه مشخص میکنه که شما چقدر کاربر دارید.

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

چیزی که باعث شد این رو اینجا بنویسم وبسایت جام شهید مدنی بود.وبسایت رو که باز میکنیم با ظاهر قابل قبولی روبرو میشیم که بد نیست.یعنی درواقع از نظر UI میشه گفت که مشکل خاصی نداره.(البته اگه از ترکیب رنگ ها و مشکل منوها بگذریم)

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

اهمیت تجربه کاربری خیلی زیاده.شاید حتی از رابط کاربری هم یبشتر.چون شما خیلی وقتا از سایتی که ظاهر درستی داره استفاده میکنید ولی از سایتی که اعصابتونو خورد کنه استفاده نمیکنید.حداقل من که نمیکنم 🙂

روز جهانی عدد پی

امروز چهارده مارس هست و روزی که به اسم عدد پی نامگذاری شده.دلیلشم اینه که عددپی به طور تغریبی چیزی نزدیک به ۳٫۱۴ هست و امروز هم که ۳/۱۴ هست یعنی روز چهاردهم ماه سوم!

π = ۳٫۱۴۱۵۹۲۶۵۳۵

خب به عنوان یک برنامه نویس باید به روش خودمون برای این روز یک کاری انجام بدیم دیگه 😀

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

هپی پی دی 😀

Happy Pi day

مسابقه چالش هوش مصنوعی شریف

در روز هایی که گذشت بخش غیر حضوری هفتمین دوره مسابقه Sharif Ai Challenge تموم شد و ماهم توی این مسابقات شرکت داشتیم.البته باز هم کار خاصی نکردیم ولی اینبار از خودمون خیلی راضیم.به چند دلیل:Sharif AI Challenge

  • اولین برنامه ای که با جاوا نوشتم بعد از Hello World برنامه همین مسابقه بود که خب واقعا به نظر خودم خیلی کمکم کرد تا دستم توی جاوا راه بیوفته.
  • باعث شد تا برم درباره یکسری از الگوریتم ها و مفاهیم هوش مصنوعی مطالعه بکنم(هرچند که توی برناممون ازشون استفاده نکردم)
  • رتبه ای هم که کسب کردیم نسبت به این که اولین بار بود داشتیم برنامه ای توی این سبک مینوشتیم رضایت بخش بود.(۶۷ ام شدیم درحالی که نزدیک به ۴۲۰ تیم از سطح جهان توی مسابقه شرکت داشتند)

هدف توی این مسابقات اینه که برنامه ای بنویسید که بازی طراحی شده توسط تیم فنی مسابقات رو بازی بکنه و بقیه رقیب هارو ببره.

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

از تمام مشکلات و ایرادات که بگذریم باید گفت که با یکی از سبک های خیلی زیبای مسابقات مواجه هستیم که برای خود من شرکت توی این مسابقه خیلی جذاب بود.مخصوصا که این مسابقه باعث یکسری اتفاقات خاصی شد که حسابی روی من اثر گذاشتن و زندگی رو هیجان‌انگیزتر کردن 😀

مشکل اصلی در تدریس زبان های کامپیوتر

سالهاست که کامپیوتر ها به زندگی ما انسان ها کمک میکنند و به همین دلیل هم همیشه دوره هایی برای یادگیری زبان های کامپیوتر از جمله برنامه نویسی و نشانه گذاری(Markup) وجود داشته.ولی معمولایک مشکل بزرگ دامن‌گیر مدرس میشود که باعث کند شدن روند یادگیری میشود.

مشکلی که از آن حرف میزنیم شروع نکردن به تدریس از جایی است که اول داستان است.معمولا در زمان تدریس یک یا دو مبحث را در ابتدا به صورت حفظی پیش میبریم و در نهایت میگوییم که بله فلان ها بهمان بودند 😐

مثلا در برنامه نویسی C یا C++ قالبی به این شکل را در ابتدا میگوییم که حفظ کنید:

یا مثلا در زبان نشانه گذاری HTML در ابتدا قالب زیر معرفی میشود:

خب حالا باید مثلا چیکار کنیم؟

جواب اینه که باید از یک قدم عقبتر شروع کنیم!مثلا قبل از اینکه قالب C رو معرفی کنیم بگیم که مفهوم تابع چیه، تابع چجوری تعریف میشه حالا INCLUDE چیه و چرا انجامش میدیم حالا بیایم بگیم که تابع main رو تعریف میکنیم به فلان شکل و ادامه ماجرا.

یا مثلا توی html باید اول بیایم مفهوم تگ رو بشناسونیم.بگیم که تگ html نشانگر چیه، تگ body چیه و باز هم ادامه ماجرا.

البته خوشبختانه خیلی جاها اینا رعایت میشن ولی خب لازم بود تا گفته بشه.