سی شارپ یا ویژوال بیسیک دات نت

VB.NET VS C#

خیلی ها می‌گویند که ویژوال بیسیک دات نت بهتر است یا سی شارپ که در نهایت انتخاب خیلی ها سی شارپ است بهتر است بگویم که هر برنامه ای که شما با سی شارپ نوشته اید با ویژوال بیسیک هم می‌توانید بنویسید خیلی ها بر این باورند که سی شارپ نسبت به ویژوال بیسیک دات نت خیلی بهتر است اما این فکر بسیار غلطی است دلیل اینکه خیلی ها سی شارپ را انتخاب میکنند اینست که قبل قرار گرفتن سر دو راهی ویژوال بیسیک دات نت و سی شارپ با زبان هایی مثل پایتون،جاوا،سی پلاس پلاس یا زبان های دیگری که syntax مانند زبان سی دارند کار کرده اند و سینتکس زبان سی برایشان جذاب تر و راحت تر است اما کسانی که از همان اول با ویژوال بیسیک دات نت کار کرده اند ویژوال بیسیک دات نت را به سی شارپ یا هر زبان دیگری ترجیح میدهند.

فرق بین ویژوال بیسیک با ویژوال بیسیک دات نت چیست؟

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

ویژوال بیسیک از نسخه هفت به بعد بر پایه چارچوب دات نت عرضه شد و قابلیت های سی شارپ را داراست.

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

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

نوشته سی شارپ یا ویژوال بیسیک دات نت اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

پایار آکادمی، دوره‌های آنلاین و فایل پروژه

اواخر سال ۱۳۹۹ بود که تصمیم گرفتیم با همکاران‌مون، ماجراجویی جدید رو آغاز کنیم که خودمون هم ازش بهترین بهره رو بتونیم ببریم. هم سواد و علم‌مون بره بالا و هم بتونیم دوستان بیشتری پیدا کنیم. یک ایده ساده اما پر چالش که سرانجام اون شد سامانه پایار آکادمی!

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

اما این دوره ها تنها نیستند! ما در کنار بالا بردن سطح کیفی و کمیت دوره‌ها، فایل‌های پروژه‌های مختلف هم براتون فراهم کردیم تا با دیدن پروژه‌های حرفه ای، سطح خودتون رو ببرید بالاتر.

منتظر امدنت به پایار آکادمی هستیما!

نوشته پایار آکادمی، دوره‌های آنلاین و فایل پروژه اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

تعریف گنو لینوکس GNU Linux

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

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

در یک سیستم GNU//Linux در واقع Linux سیستم عامل ما و در نقش هسته یا Kernel فعالیت می کند. اما باقی اجزای این سیستم شامل برنامه های متنوعی می باشد که اکثر آنها تحت لیسانس یا تابع قوانین GNU هستند که ما از این به بعد آن را با عنوان پروژه GNU می شناسیم . اما چرا ما همیشه با عنوان GNU//Linux این پروژه را نام می بریم ؟ دلیل این موضوع این است که سیستم عامل لینوکس بدون داشتن نرم افزارهایی که توسط پروژه GNU ایجاد شده اند تقریبا هیچ کار خاصی نمی تواند انجام دهد بنابراین ما همیشه Linux را در کنار پروژه GNU قرار می دهیم تا با همدیگر یک مجموعه کامل را تشکیل دهند.

فرض کنید سیستم عامل ویندوز را نصب کرده اید و هیچ نرم افزار جانبی بر روی آن نصب نشده است ، حتی مجموعه Notepad ، Paint ، Media Player و … را در این سیستم عامل ندارید ! این دقیقا شرایطی است که شما زمانیکه لینوکس را بصورت خام نصب می کنید برای شما به وجود می آید اما GNU یعنی اضافه شدن Office ، Photoshop ، Outlook و … به سیستم عامل خام … البته مثال را با لینوکس جلو ببریم بهتر است و فقط برای مثال ویندوز را گفتیم که تصویر بهتری از موضوع داشته باشید.

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

پروژه GNU چیست و FSF به چه معناست؟

اما چیزی که ما امروزه به عنوان پروژه GNU می شناسیم از سال 1983 توسط شخصی به نام ریچارد استالمن با معرفی یک سیستم عامل رایگان به نام GNU شروع شد که یک سیستم عامل شبیه به Unix بود. بعدها چیزی که امروزه ما به عنوان GNU//Linux می شناسیم در سال 1984 معرفی شد و تقریبا یکسال بعد از معرفی GNU بود که این دو چیز با هم یکپارچه شدند. پروژه GNU در حقیقت پروژه ای است که در آن نرم افزارهای رایگان برای سیستم عامل های رایگانی مثل لینوکس طراحی و تولید می شود و بصورت کاملا رایگان برای استفاده عموم قرار می گیرند.اگر نرم افزاری توسط لیسانس یا با استفاده از نام پروژه GNU تولید شود به این معناست که شما می توانید سورس کدهای این نرم افزار را بصورت رایگان دریافت کنید ، تغییرات دلخواه خود را بر روی آن انجام دهید و یا حتی کدهای آن را بصورت دلخواه تغییر دهید.

در حال حاضر برنامه نویس ها ، شرکت ها و حتی ارگان های زیادی بر روی پروژه لینوکس کار می کنند اما در حال حاضر فقط یک محل است که بر روی پروژه GNU بصورت متمرکز کار می کند و ما آن را به عنوان Free Software Foundation یا FSF می شناسیم ، این بنیاد بیشتری ابزارهای موجود در لینوکسی که در حال حاضر استفاده می کنیم را تولید و پشتیبانی می کند ، فراموش نکنید که لینوکسی که استفاده می کنیم بدون FSF به مشکلات زیادی می خورد و به همین دلیل است که FSF باعث پیشرفت و گسترش لینوکس شده است و فلسفه لینوکس که سیستم عامل سورس باز در کنار نرم افزار سورس باز است با این بنیاد کامل می شود.

اولین هسته لینوکس در سال 1991 توسط یک فارق التحصیل دانشگاهی رشته کامپیوتر به نام لینوس توروالدز ایجاد شد و فقط یک هسته سیستم عامل بدون نرم افزار بود ، هدف اصلی لینوس توروالدز ارائه کردن یک سیستم عامل رایگان و قابل تغییر بود اما برای این سیستم عامل نرم افزار نیز لازم بود و در آن زمان نرم افزار رایگان چندان عمومیت نداشت و در همین موقع بود که او با ریچارد استالمن همکار شد ، این شروع پروژه GNU//Linux بود ، یعنی سیستم عامل رایگان در کنار نرم افزار رایگان قرار گرفت.

بنیاد نرم افزارهای رایگان یا همان Free Software Foundation در سال 1985 شروع به کار کرد. FSF به کاربران این اجازه را می داد که بتوانند نرم افزارهای کامپیوتری را بصورت رایگان استفاده کنند ، کپی کنند ، تغییر دهند و در نهایت توزیع کنند. FSF به شدت باعث ترویج داده شدن فرهنگ تولید و توسعه نرم افزارهای رایگان و آزاد متن که در اصطلاح Open Source گفته می شوند شد و امروزه شاهد این هستیم که بیشتر نرم افزارهایی که برای لینوکس نوشته می شوند از طریق این بنیاد و تحت پروژه GNU//Linux معرفی می شوند. برای کسب اطلاعات بیشتر در خصوص FSF و GNU می توانید به وب سایت های www.gnu.org و www.fsf.org مراجعه کنید.

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

  • آزادی شماره 0 : آزادی و اختیار کامل در اجرای نرم افزار با هر هدفی ( حتی اهداف مخرب )
  • آزادی شماره 1 : آزادی و اختیار کامل در خصوص مطالعه در خصوص نحوه اجرای یک نرم افزار و تغییر دادن آن بر اساس نیاز خود ، طبیعی است که برای داشتن آزادی شماره 1 در این بنیاد دسترسی به سورس کدهای نرم افزار یک پیش شرط است.
  • آزادی شماره 2 : آزادی و اختیار کامل برای توزیع کپی های نرم افزار برای دیگران
  • آزادی شماره 3 : آزادی و اختیار کامل برای توسعه نرم افزار و ارائه کردن نسخه تغییر یافته نرم افزار برای عموم ، طبیعی است برای این موضوع نیز داشتن دسترسی کامل به سورس کدهای نرم افزار یک پیش شرط است

نوشته تعریف گنو لینوکس GNU Linux اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

مدیریت خطا

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

چرا exception ها به پیچیدگی می افزایند؟

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

اگر با زبان هایی مثل #C یا Java کار کرده اید، احتمالا exception برای شما بخشی از syntax زبان است. در خواندن این نوشته، زبان را فراموش کنید و با مفهومِ exception، به صورتی که توضیح داده شد برخورد کنید.

چند مثال از دلایل اتفاق افتادن exception:

  • قطعه کدی که یک متد را صدا زده، ممکن است پارامترهای اشتباهی به آن پاس داده باشد.
  • متد ممکن است نتواند آن چه که پیاده سازی شده را انجام دهد. مثلا یک عملیات IO به دلیل پیدا نشدن فایل به مشکل می خورد یا یک منبع خارجی که متد می خواهد با آن کار کند، مثل دیتابیس، در دسترس نیست.
  • در سیستم های توزیع شده، packet های شبکه ممکن است گم شوند یا تاخیر داشته باشند یا ممکن است server در زمانِ مناسب پاسخ ندهد.
  • کد دچار bug شود یا با موقعیت هایی برخورد کند که برای رویارویی با آن ها آماده نیست.

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

وقتی یک exception اتفاق می افتد، برنامه نویس می تواند دو کار انجام دهد:

  1. به exception توجه نکند و کار را جلو ببرد. مثلا، اگر یک packet شبکه گم شد، آن را دوباره بفرستد. اگر دیتابیس در دسترس نیست، دیتای قدیمی تری که جای دیگری ذخیره شده را برگرداند (مثلا موقتا از cache بخواند، در حالی که می داند زمان انقضای آن گذشته است)

این روش مشکلاتی دارد. در مثالِ گم شدن packet، ممکن است که آن packet گم نشده بوده و تنها تاخیر داشته است. در این صورت، اگر از روشِ ارسالِ دوباره استفاده کرده باشیم، یک packet، دو بار به مقصد می رسد. در نتیجه، برای گیرنده ی packet، یک شرایط exception خیز فراهم کردیم و گیرنده باید آن را مدیریت کند. (برای مثال، چک کند که packet تکراری است یا نه، و در صورت تکراری بودن، تصمیم بگیرد که این شرایط را چطور مدیریت کند)

یا در مثالِ در دسترس نبودن دیتابیس، اگر دیتای قدیمی تر هم در دسترس نباشد چه؟ اگر همه ی کپی هایی که از دیتابیس داشتیم، از دسترس خارج شده بودند، چگونه exception را مدیریت کنیم؟

  1. روش دوم این است که هر جا exception اتفاق افتاد، عملیات را متوقف کند و exception را به سطح بالاتر انتقال دهد.

استفاده از این روش هم مشکلاتی دارد. ممکن است در آن نقطه که عملیات متوقف می شود، سیستم در یک وضعیت (state) نامناسب باشد. در این صورت، کدی که exception را مدیریت میکند، وظیفه ی برگرداندنِ وضعیت سیستم به یک وضعیت پایدار را هم دارد. مثلا شاید یک سری تغییرات که قبل از اتفاق افتادنِ exception اعمال شده بودند، باید rollback شوند.

همچنین، در زبان هایی که مکانیزم های مدیریت exception دارند (مانند C# و Java)، ممکن است خواندن کد سخت شود. قطعه کد زیر را در نظر بگیرید:

try   {
       ...
      }
catch (FileNotFoundException e) {
      // Do Something
}
catch (ClassNotFoundException e) {
       // Do Something
}
catch (EOFException e) {
       // Not a problem
}
catch (IOException e) {
       // Do Something
}
catch (ClassCastException e) {
       // Do Something
}

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

یک راه دیگر این است که برای هر قسمت از کد که امکانِ اتفاق افتادنِ خطا دارد، یک try جداگانه بنویسیم. در این صورت مشخص خواهد شد که exception دقیقا کجا رخ داده است. ولی هم خواندن کد سخت می شود و هم جریان اجرای کد مختل خواهد شد.

مساله ی دیگر این است که بسیاری مواقع، کدهایی برای مدیریت exception می نویسیم، ولی از کار کردن آن ها اطمینان حاصل نمی کنیم. مثلا خطاهای IO را نظر بگیرید. معمولا در محیط تست، این خطاها مشخص نمی شوند و کدی که exception مربوط به این بخش ها را مدیریت می کند هیچ وقت تست نمی شود.


یکی از عادت های بد برنامه نویس ها این است که، در هنگام مدیریت خطا، با تعریف exception های غیرضروری، اوضاع را بدتر می کنند. گویی آن ها معتقدند: “هرچقدر exception های بیشتری شناسایی شود، بهتر است”. به هر چیز کوچکی که مشکوک شوند، یکی exception تولید می کنند و این باعث می شود پیچیدگی سیستم بیشتر شود.

راه حل های بهتری هم وجود دارد. هر بار که اتفاق غیرنرمالی در سیستم می افتد، ناچار نیستیم حتما exception تولید کنیم. مثلا فرض کنید متدی داریم، و در بخشی از عملکرد آن، می خواهیم یک فایل را حذف کنیم. در این سناریو، شرایطِ نرمال این است که فایل وجود دارد، و نرم افزار به راحتی آن را حذف می کند. یکی از شرایط غیرنرمال، این است که فایل وجود نداشته باشد. برای مدیریت این شرایط غیرنرمال، دو راه حل می توانیم داشته باشیم:

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

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

در نوشته ی مربوط به برنامه نویسی ماژولار اشاره شد که هر ماژول دو نوع واسط می تواند داشته باشد:

  • واسط رسمی: آنچه که در ظاهر آن ماژول مشخص است. مثلا signature یک متد
  • واسط غیر رسمی: آنچه که به دنیای بیرون از ماژول مربوط است، ولی در رفتار ماژول پنهان شده است.

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

تولید یک exception ساده است و handle کردن آن سخت. بهترین راه برای کم کردن آسیب ناشی از exception ها، این است که تعداد قسمت هایی از کد که باید به exception رسیدگی کنند را کاهش دهیم.


در ادامه می خواهیم چهار روش را بررسی کنیم، که به ما کمک می کنند، نیاز به مدیریت خطا را در سیستم کاهش دهیم (در واقع، تعداد بخش هایی از سیستم، که باید به exception رسیدگی کنند را تا جای ممکن کم کنیم):

روش اول: حذف خطا

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

این روش را با یک مثال بررسی کنیم:

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

در سیستم عامل Unix، اگر کاربر بخواهد فایلی که در حال استفاده است را حذف کند، هیچ خطایی دریافت نمی کند و فایل هم در لحظه حذف نمی شود. در عوض، آن فایل برای حذف شدن علامتگذاری می شود و هیچ process دیگری نمی تواند آن را باز کند و تنها process هایی که از قبل آن را باز کرده اند می تواند write و read روی آن داشته باشند. به محض این که فایل بسته شد، سیستم عامل آن را حذف می کند.

رویکرد سیستم عامل Unix دو نوع خطا را حذف می کند:

1. آن process ای که می خواهد فایل را حذف کند، با exception مواجه نمی شود. عملیات حذف با موفقیت انجام می شود و فایل هم “در نهایت” حذف خواهد شد.

2. آن process که دارد از فایل استفاده می کند، با این خطا مواجه نمی شود که “فایل حذف شده است”، بلکه می تواند به کار خود ادامه دهد.

با این رویکرد، Unix توانسته، دو process را، از زحمتِ مدیریت exception در امان بدارد. شاید برای کسانی که با سیستم عامل windows بیشتر کار کرده اند، این روال عجیب باشد، ولی نکته ی اصلی در این مثال، این است که گاهی اگر به شرایط غیر نرمال، از نگاه دیگری بنگریم، روش های خوبی برای مدیریت آن پیدا می کنیم.

روش دوم: پوشاندن خطا

در این روش، شرایطی در کد که ممکن است به exception منتهی شوند، در ماژول های سطح پایین تر مدیریت می شوند، به گونه ای که کد سطح بالا، اصلا اطلاعی از این شرایط و exception های آن ندارد. این روش معمولا برای سیستم های توزیع شده مناسب است. برای مثال، پروتکل TCP، به جای این که زمانی که یک packet گم می شود، یک exception به سطح بالاتر پرتاب کند، خطا را می پوشاند و packet های گم شده را مجددا ارسال می کند. در واقع در این مثال، شرایطِ غیر نرمالی که در سطح پایین تر (یعنی شبکه) اتفاق افتاده، برای سطح بالاتر (مثلا نرم افزار) مزاحمتی ایجاد نمی کند.

روش سوم: تجمیع خطاها

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

برای مثال، فرض کنید تعدادی کلاس handler داریم که توسط یک کد سطح بالاتر استفاده می شوند. به جای این که exception ها را در کلاس های handler مدیریت کنیم، آن را به کد سطح بالاتر می سپاریم.

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

روش چهارم: توقف اجرا

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

برای مثال، خطای out of memory را در نظر بگیرید. زمانی که حافظه فضا ندارد، نرم افزار چه کاری می تواند انجام دهد؟ شاید بتوان با راه های عجیب، به نحوی این exception را مدیریت کرد، ولی احتمالا آن قدر که پیچیدگی به سیستم اضافه می کند، فایده ندارد. بنابراین بهترین کار، توقف اجرای برنامه و ایجاد exception است.


خلاصه

مهم ترین مساله در مدیریت شرایط غیرنرمال، این است که تعداد جاهایی که exception باید مدیریت شود را کاهش دهیم. در بسیاری مواقع، منطقِ یک عملیات می تواند طوری تغییر کند، که رفتار نرمال، همه ی شرایط را پوشش دهد و نیازی به کشف و مدیریت شرایط استثنا نباشد.


منبع

A philosophy of software design

نوشته مدیریت خطا اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

جاوا اسکریپت بجای HTML با یک مثال ساده

نمایش دادن “Hello World” روی یک صفحه وب زیاد طول نمی‌کشه. کافیه یه فایل html. درست کنید و این محتویات رو بریزید توش:

<html>
    <body>
        <div>Hello World</div>
    </body>
</html>

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

ولی اولین چالشتون یحتمل وقتی بوجود میاد که تصمیم می‌گیرید مثلاً وقتی روی همون متنِ “Hello World” ای که توی پاراگراف قبلی ساختیمش کلیک شد، متن عوض بشه و یه جمله جدید بهمون بده. مثلاً تغییر کنه به “You Clicked Me”.

خب برای اینکار لازمه که از یه زبان برنامه‌نویسی استفاده کنیم (HTML که مخففِ Hyper Text Markup Language هست، همونطور که از اسمش برمیاد، زبان نشانه گذاریه). و برای اینکار زبان جاوا اسکریپت رو داریم. مرورگر شما، کد HTML ای که نوشتید رو توسط یک موتور مخصوص (مثلاً اگر از chrome استفاده می‌کنید موتور V8) به شکل یک Object درمیاره و به جاوا اسکریپت تحویل میده. که اون Object رو بهش میگیم DOM (مخفف Document Object Model). اینطوری جاوا اسکریپت می‌تونه با کد HTML تون تعامل کنه؛ مثلاً‌ بهش node های جدیدی اضافه یا کم کنه. یا حتی محتوایات و ویژگی های node های فعلی رو عوض کنه. (توی جاوا اسکریپت به المان های HTML میگیم nodes و یا به طور کامل تر DOM nodes).

پس برای دسترسی به Hello World توی مثالمون و تغییر دادن متنش وقتی که رویداد کلیک اتفاق افتاد، کافیه که از جاوا اسکریپت و توابع از پیش تعریف شده ای که برای دستکاری DOM توی خودش داره استفاده کنیم. دسترسی به node ها با تعریف کردنِ ویژگیِ id واسشون خیلی ساده تر میشه:

<div id=&quotgreet&quot>Hello World</div>

بعد می‌تونیم توی خط بعدی از تگ برای ورود به دنیای جاوا اسکریپت، و برنامه نویسیِ تغییر جمله در پاسخ به رویداد کلیک، استفاده کنیم:


    let greetElement = document.getElementById(&quotgreet&quot);
    greetElement.addEventListener(&quotclick&quot, () => {
        return greetElement.textContent = &quotYou Clicked Me&quot
    });

پس نهایتاً نمای کلیِ فایلمون اینطوری میشه:

<html>
    <body>
        <div id=&quotgreet&quot>Hello World</div>
        
            let greetElement = document.getElementById(&quotgreet&quot);     
            greetElement.addEventListener(&quotclick&quot, () => {
                return greetElement.textContent = &quotYou Clicked Me&quot     
            }); 
        
    </body>
</html>

حتی می‌تونیم تگ div با id ی greet و مقدار اولیهٔ Hello World رو هم با جاوا اسکریپت تولید و روی صفحه نمایش بدیم:

<html>
     <body>
         
             let greetElement = document.createElement(&quotdiv&quot);
             greetElement.textContent = &quotHello World&quot
             document.body.append(greetElement);
             greetElement.addEventListener(&quotclick&quot, () => {
                 return greetElement.textContent = &quotYou Clicked Me&quot
             });
          
     </body>
</html>

بعد از ذخیره کردن، کافیه این فایل رو با هر مرورگری که می‌خواید باز کنید. روی صفحه Hello World خواهید دید که اگه روش کلیک کنید به You Clicked Me تغییر پیدا میکنه.

نوشته جاوا اسکریپت بجای HTML با یک مثال ساده اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

چطور یک دیباگ کننده‌ی حرفه‌ای بشیم؟

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

اما بیاید در مورد دیباگ حرف بزنیم، بذارید اول بگیم که دیباگ چیه و به چه کار میاد…

دیباگ چیه و چرا لازمه؟

دیباگ کردن یعنی شما بیایید تمام خطاها و باگ‌های برنامه و کد رو پیدا و اون‌ها رو رفع کنید، به همین سادگی!

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

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

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

به عنوان مثال مرورگر فایرفاکس و کروم، دیباگر دارن و با استفاده از اونها میتونید کدهای جاوا اسکریپت رو به راحتی دیباگ کنید.

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

توی این قسمت میخواهیم بهترین ابزارهای دیباگر مخصوص هر زبان برنامه نویسی رو معرفی کنیم، توی کپشن هم توضیحات بیشتری در مورد دیباگ کردن نوشتیم، حتما بخونید…

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

بهترین دیباگرها برای جاوا اسکریپت

  • ابزارهای مرورگرهای وب مثل Chrome Dev Tools
  • Postman
  • ESLint

بهترین دیباگرها برای پایتون

  • PDB
  • PyCharm
  • Pylint

بهترین دیباگرها برای C و C++

  • MSVC برای ویژوال استودیو
  • GDB

بهترین دیباگرها برای جاوا

JDP

NetBeans

Rookout

چندتا دیباگر همه فن حریف

  • دیباگر برای سرور: Lightrun
  • IDA Pro
  • CFF Explorer
  • API Monitor
  • WinHex
  • Visual Studio Debugger

تا حالا کدی رو دیباگ کردید؟ قسمت بعدی، نکات مهمی در مورد دیباگ کردن مینویسیم، همراه ما باشید…

5 نکته حرفه‌ای برای دیباگ کردن

تا حالا شده دقیقا موقع تحویل پروژه، به باگ بخورید و ندونید چیکار کنید؟

دیباگ اینجور مواقع به کمکتون میاد!

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

1- تغییرات تصادفی ایجاد نکنید!

اگه با خودتون گفتید “نمی‌دونم چی میشه و چی پیش میاد ولی فعلا اینو تغییر میدم امیدوارم کار کنه” یعنی دارید اشتباه بدی رو مرتکب میشید.

2- منبع خطا و ارور رو پیدا کنید.

اول باید منبعی که باعث شده خطا ایجاد بشه رو پیدا کنید و بعد تنظیمات اون رو تغییر بدید، جوری که بالاتر و پایین‌تر از حد مشخص شده رو وارد کنید و درنهایت مشکل رو پیدا و حل کنید.

3- محدوده کد رو کاهش بدید!

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

4- قبل از اینکه سراغ حل کردن و تعمیر مشکل برید، مشکل رو خوب بشناسید و درک کنید.

5- در آنِ واحد فقط یک تغییر ایجاد کنید!

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

این نکته‌ها رو میدونستید؟ تجربه‌های برنامه نویسی خودتون رو برای ما بنویسید…

نوشته چطور یک دیباگ کننده‌ی حرفه‌ای بشیم؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

۷ کانال یوتیوب که دوست داران جاوا اسکریپت باید دنبال کنند

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

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

Ben Awad

یه جوون ۲۳ ساله که جدیدا تند تند استارتاپ میسازه!

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

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

ویدیو های پیشنهادی:

DistroTube

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

اگر با ویم یا یه tiling window manager یا هر برنامه لینوکسی سر و کار دارید یا اینکه کلا لینوکس رو دوست دارید این کانال میتونه خیلی براتون جالب باشه.

ویدیو های پیشنهادی:

ری اکشن به ویندوز ۱۱ (باید ببینید)

راهنمای کامل استفاده از TWM
حتی یه پلی لیست فقط در مورد یه TWM داره!

Lee Robinson

ایشون توی شرکت vercel کار میکنه. همون شرکتی که پشت next.js هست در نتیجه بیشتر ویدیو هاش در مورد next.js هست و میتونه اطلاعات خوبی در اختیارتون قرار بده. بعضی وقتا هم استریم میکنه، حتی با سازندگان کتابخانه های معروف. در کل اگر با next.js سر و کار دارید کانال خوبیه.

ویدیو های پیشنهادی:

Hussein Nasser

بیشتر ویدیو های این کانال در مورد node.js و بک اند و دیتابیس ها هست. البته مباحث نسبتا پیشرفته تر. جدیدا یه سری ویدیو رو شروع کرده که امکانات کتابخونه خود node.js رو نشون میده که من خیلی دوست دارم. مثل http که هیچکس بهش توجه نمیکنه:)

SimonDev

میدونستید که با جاوا اسکریپت میشه بازی ساخت؟ من تا قبل از این کانال نمیدونستم. چیزی که این کانال رو برام جذاب کرده اینه که فرایند ساخت یه بازی ساده رو در حد ۱۵ دقیقه با کتابخانه ای به اسم three.js نشون میده. حالت آموزشی نداره که حوصلتون سر بره. من تصمیمی ندارم که گیم بسازم ولی دیدن ویدیو های این کانال و دیدن فرایند ساخته شدن یه بازی اونم با جاوااسکریپت خیلی برام جذابه.

بعضی وقتا هم در مورد Data strucures و اینکه چطور کد های جاوا اسکریپت رو سریع تر کنیم هم میگذاره که فکر کنم بیشتر برای گیم دولوپر ها مفید باشه ولی بازم جالبه.

چنتا از بازی هایی که ساخته:

PwnFunction

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

Jason Lengstorf

فعالیت این کانال بیشتر توی twitch هست و با همه و در مورد هر موضوعی استریم میکنه. سازنده های کتابخانه های معروف، آدم هایی که توی یه زمینه خیلی خاص کار میکنند، ویدیو های آموزشی با کسایی که کارشون هست و…

ویدیو های پیشنهادی:

نوشته ۷ کانال یوتیوب که دوست داران جاوا اسکریپت باید دنبال کنند اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

developer options چیست؟

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

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

به منوی تنظیمات بروید و build number (شماره ساخت) را پیدا کنید. با چند بار ضربه زدن روی این قسمت می توانید developer options (گزینه های توسعه دهنده) را در گوشی یا تبلت های اندرویدی باز کنید. ولی یادتان باشد که بسته به شرکت سازنده تلفن همراه شما، محل دقیق build number (شماره ساخت) ممکن است متفاوت باشد.

دسترسی به این گزینه در گوشی ها:

  • به Settings (تنظیمات) و سپس به About Phone (درباره تلفن) بروید.
  • روی گزینه Software Info (اطلاعات نرم افزار) و سپس روی Build Number (شماره ساخت) ضربه بزنید.
  • 7 بار پشت سر هم روی Build Number ضربه بزنید تا گزینه های توسعه دهنده باز شوند. ممکن است از شما خواسته شود که رمز عبور گوشی تان را وارد کنید. هنگامی که گزینه های توسعه دهنده یا همان developer options فعال شدند، پیامی به شما نشان داده می شود که به شما اعلام می کند گوشی تان الان در حالت توسعه دهنده قرار گرفته است.
  • حالا دوباره به Settings (تنظیمات) برگردید. در این قسمت Developer options (گزینه های توسعه دهنده) برای شما نمایش داده می شود.
  • روی آن ضربه بزنید و اگر فعال نیست تیک آن را روشن کنید. حالا می توانید از این قسمت تنظیمات مختلفی را روی گوشی تان اعمال کنید.

معمولا در گوشی هایی که اندروید 10 دارند، منوی About Phone (درباره تلفن) در Settings (تنظیمات) > System (سیستم) > About Phone (درباره تلفن) قرار دارد. بقیه مراحل بالا یکسان است. وقتی کارتان با گزینه های توسعه دهنده تمام شد و دیگر نیازی به آنها نداشتید به راحتی می توانید آن را غیر فعال کنید. اولین قدم برای انجام این کار این است که به قسمت Settings بروید، روی Developer Options کلیک کرده و Off را بزنید. همین! به همین سادگی Developer Options دوباره غیر فعال می شود و دیگر در منوی تنظیمات نمایش داده نمی شود. برای فعالسازی مجدد آن هم فقط کافیست مراحل گفته شده در بالا را دوباره انجام بدهید.

شما می توانید سایر تنظیمات پیشرفته تر را هم با استفاده از Developer Options یا همان گزینه های توسعه دهنده روی گوشی تان اعمال کنید؛ اما یادتان باشد که حالت توسعه دهنده در وهله اول برای اشکال زدایی برنامه و دستکاری پاسخ ها و عملکرد سیستم طراحی شده است. گزینه های موجود در حالت توسعه دهنده معمولاً شامل اشکال زدایی، شبکه، ورودی، ارائه سریع سخت افزار، رسانه، نظارت و برنامه ها است. اینکه تنظیمات مورد نظرتان را چطور سفارشی کنید به خودتان بستگی دارد چون می توانید با استفاده از این گزینه ها و بر اساس ترجیحات خاص خودتان تنظیمات گوشی تان را دسته بندی کنید.

همچنین بخوانید: معماری های برنامه نویسی اندروید

نوشته developer options چیست؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

قسمت اول: آموزش پایتون (نصب پایتون و نوشتن اولین کد)

سلام رفقا

امیدوارم که حالتون عاااااااالی باشه

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

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

نصب پایتون:

اول از همه وارد سایت www.python.org شوید

سپس نسخه مربوط به سیستم خود را دانلود و نصب نمایید

نصب pyCharm:

برای اجرای کدهای پایتون نیاز به یک IDE حرفه ای داریم که من نرم افزار pyCharm را به شما معرفی میکنم

برای نصب این نرم افزار وارد سایت www.jetbrains.com/pycharm شوید

سپس نسخه مربوط به سیستم خود را دانلود و نصب نمایید

چاپ متن در پایتون:

خُب خُب

حالا وقت نوشتن Hello world هست 🙂

در زبان پایتون علامت (” “) و (‘ ‘) هیچ فرقی باهم نداره و شما میتوانید از هر دو اینها استفاده کنید

ولی توصیه می شود برای چاپ متن از دابل کوتیشن (” “) استفاده کنید

نمونه کد چاپ متن:

print(&quotHello World&quot)
یا
print('Hello World')

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

نوشته قسمت اول: آموزش پایتون (نصب پایتون و نوشتن اولین کد) اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

باز شدن مدرسه و دانشگاه مانع یادگیری برنامه نویسی میشه؟!

یه جمله که این روزا خیلی میشنوم اینه که :

مدرسه و دانشگاهم داره شروع میشه نمیتونم فعلا سراغ یادگیری برنامه نویسی برم!

خب همین اول بگم تمام کسانی که این حرفه یا هر تخصص دیگه ای رو یادگرفتن آدمهای بیکاری نبودن که ۲۴ ساعت وقت آزاد داشته باشن ( زمان خواب هم حساب کردم )

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

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

دلیل اینکه ما احساس می کنیم نمیتونیم در کنار درس برنامه نویسی یادبگیریم اینه که :

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

خب همینجا معلوم شد مشکل اصلی چیه و چجوری میشه حلش کرد!

البته منم قبول دارم گفتنش آسونه و در عمل سخت! اما اگه بخوایم اینجوری به قضیه نگاه کنیم میبینیم که سه وعده غذا خوردن در روز هم سخته ( البته منظورم حاضری بخور ها نیست! )

تنها کاری که باید بکنیم در وحله اول اولویت بندیه !

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

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

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

بازهم تاکید می کنم که از کم شروع کنید که یهو زده نشید! ( توقع هم نداشته باشین توی نیم ساعت اول زبان C رو بفهمین! )

توصیه بعدیم اینه که با زبان های ساده تر شروع کنین مثل پایتون، یا حتی Html ( اساتید گرانقدر منم میدونم html زبان برنامه نویسی نیست، پیشاپیش از تذکر شما کمال تشکر را دارم ).

خب خوندن این مطبی هم کافیه از همین الان بعد از مرتب کردن اتاقتون ( این جمله برای جلب رضایت والدین بود! ) شروع کنین به این مطلب فکر کنین، بعد بهش عمل کنین.

برنامه نویس باشید و ازش لذت ببرین 🙂

نوشته باز شدن مدرسه و دانشگاه مانع یادگیری برنامه نویسی میشه؟! اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی