بایگانی برچسب: الگوریتم‌ها

آموزش برنامه‌نویسی – بخش دوم – الگوریتم‌ها در برنامه‌نویسی

پیش‌نوشت: این متنی که توی پادکست می‌گم (و البته چیزی که تو پادکست گفته شده کمی متفاوته چون موقع خوندن عوض می‌شه!). دلیل برای اضافه‌کردن جزئیات نمی‌بینم. حدود ۱۴ دقیقه‌ست که البته ۶ دقیقه‌ی آخرش هم آهنگه (Rango Suit کاری از هانس زیمر!) و شما هم می‌تونید پادکست رو با حجم ۱۲ مگابایت از مدیافایر یا از مگا (مگا از مدیافایر خوشگل تره!) دانلود کنید(بازم ببخشید که چندتا کیفیت نزاشتیم. از دفعه‌ی بعد جبران می‌کنیم!).

می‌تونید همه‌ی پادکست‌های آموزش برنامه‌نویسی ما رو توی مدیافایر ببینید. خوب بریم سراغ پادکست:

سلام.

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

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

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

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

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

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

تا قسمت بعد (که همین الانش تقریبا آماده شده!) خدانگهدار!