<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>پست‌های انتشارات اینترن پلاس پلاس</title>
        <link>https://virgool.io/intern-plus-plus/feed</link>
        <description>مجله اینترنتی برای کسایی که میخوان برنامه نویس شن.
توی اینترن پلاس پلاس ما تجربه های شخصیمون رو با منابع علمی قاطی میکنیم و چیزایی بهتون میگیم که توی مسیر برنامه نویس شدن شما رو کمک میکنه و سردرگمی شما رو کم میکنه</description>
        <language>fa</language>
        <pubDate>2026-06-16 13:58:04</pubDate>
        <image>
            <url>https://files.virgool.io/upload/publication/mfab4r7qlusy/wl7oga.png</url>
            <title>اینترن پلاس پلاس</title>
            <link>https://virgool.io/intern-plus-plus</link>
        </image>

                    <item>
                <title>چالش برنامه نویسی</title>
                <link>https://virgool.io/intern-plus-plus/%DA%86%D8%A7%D9%84%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-zy0tjgvuifjg</link>
                <description>سلام حالتون چطوره؟امروز میخوام شما ویرگولی های عزیز رو به یه چالش دعوت کنم.چالشی که توش هر هفته یسری سوال از کوئرا انتخاب میکنم و همه میریم حل میکنیم و راه حل هامون رو برای هم توی گروه تلگرام میفرستیم.بعععععععععععععدددددکد همدیگه رو review میکنیم. یعنی میبینیم و ایراداتش رو میگیم.خلاصه که کلی کیف میده و تمرین خیلی خوبیه برای اینکه قدرت حل مساله خودمون رو بالا ببریم.اگه خواستید پاشید بیاید :)لینک گروه تلگرام:https://t.me/intern_plus_plus_group</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Fri, 18 Jun 2021 23:09:03 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر - قسمت یازدهم (کار با رنگ ها)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%82%D8%B3%D9%85%D8%AA-%DB%8C%D8%A7%D8%B2%D8%AF%D9%87%D9%85-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%B1%D9%86%DA%AF-%D9%87%D8%A7-hadyhbdymjvw</link>
                <description>سلام.حالتون چطوره؟توی این قسمت با استاندارد رنگ ها بیشتر آشنا میشیم و در ادامه با اطلاعاتی که به دست میاریم یسری جینگولک بازی (نوشتن انیمیشن و ترکیب دوتا رنگ و...) در میاریم و با دونسته هامون تفریح میکنیم.  این چنل تلگرام: https://t.me/intern_plus_plusاینم گروه تلگرام: https://t.me/intern_plus_plus_group اینم جاهای دیگه: https://internplusplus.irممنون میشم اگه ویدیو رو از یوتوب ببینید ولی هر جور راحتید. https://aparat.com/v/BiDr8 کد نوشته شده در این قسمت:&lt;body&gt;&lt;div id=&amp;quotitem1&amp;quot style=&amp;quotheight: 500;width: 500; background-color: #000000;&amp;quot&gt;&lt;/div&gt;&lt;div id=&amp;quotitem2&amp;quot style=&amp;quotheight: 500;width: 500; background-color: #000000;&amp;quot&gt;&lt;/div&gt;&lt;div id=&amp;quotitem3&amp;quot style=&amp;quotheight: 500;width: 500; background-color: #000000;&amp;quot&gt;&lt;/div&gt;&lt;/body&gt;function setColor(color,id){document.getElementById(id).style.backgroundColor = color}function r255(){return Math.random() * 255}function avg(color1,color2){var r = Math.round(color1[0] + color2[0]) / 2var g = Math.round(color1[1] + color2[1]) / 2var b = Math.round(color1[2] + color2[2]) / 2return [r,g,b]}var color1 = [r255(),r255(),r255()]var color2 = [r255(),r255(),r255()]var avgColor = avg(color1,color2)setColor(`rgb(${color1[0]},${color1[1]},${color1[2]})`,&amp;quotitem1&amp;quot)setColor(`rgb(${color2[0]},${color2[1]},${color2[2]})`,&amp;quotitem2&amp;quot)setColor(`rgb(${avgColor[0]},${avgColor[1]},${avgColor[2]})`,&amp;quotitem3&amp;quot)// let red = 255// let blue = 0// setInterval&#40;(&#41; =&gt; {//     red--//     blue++// }, 10);کد بقیه قسمت ها هم توی گیتهاب ما پیدا میشه: https://github.com/intern-plus-plus/Travel-to-depths-of-computer/blob/main/RGB/index.html پایدار باشید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Fri, 18 Jun 2021 22:58:29 +0430</pubDate>
            </item>
                    <item>
                <title>زمان توی کامپیوتر چطوری کار میکنه؟</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B2%D9%85%D8%A7%D9%86-%D8%AA%D9%88%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%DA%86%D8%B7%D9%88%D8%B1%DB%8C-%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C%DA%A9%D9%86%D9%87-hsqzfcvptdij</link>
                <description>سلام.️?️حالتون چطوره؟?با یه قسمت دیگه از سفر به اعماق کامپیوتر برگشتیم ولی این بار به صورت ویدیو کست.در مورد زمان توی کامپیوتر و نحوه محاسبات و ذخیره سازی و استاندارد هاش حرف میزنیم.که به زبون ساده و یک بار برای همیشه یاد بگیریمش.ویدیو رو میتونید از یوتوب یا آپارات ببینید های زیر ببینید: https://aparat.com/v/LaktW سوالی چیزی هم بود اینجا میتونید بپرسید: https://t.me/intern_plus_plus_groupباعث خوشحالی من میشه اگه این ویدیو رو به کسایی که فکر میکنید به دردشون میخوره بفرستید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Thu, 06 May 2021 19:16:56 +0430</pubDate>
            </item>
                    <item>
                <title>بریم تو کد - قسمت سوم (حلقه و آرایه)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%A8%D8%B1%DB%8C%D9%85-%D8%AA%D9%88-%DA%A9%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-%D8%AD%D9%84%D9%82%D9%87-%D9%88-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-s8noid66myz3</link>
                <description>بریم تو کد - قسمت سوم (حلقه و آرایه)سلام مجددامروز چطورید؟میتونید این ویدیو رو از این لینک های زیر ببینید:حواستون باشه که اگه دو قسمت قبلی رو ندیدید اول باید اونا رو ببینید.نظری؟ انتقادی؟ پیشنهادی؟ چیزی بود از هر راهی دوست داشتید به گوش من برسونید? https://aparat.com/v/JLlsM code pan link: https://codepan.egoist.sh/gist/7034e16cc9cabc55c1609d1a021b4b32youtube: https://youtu.be/9VBBT2AuRB4aparat: https://aparat.com/v/JLlsMwebsite: internplusplus.irtelegram: @intern_plus_plusپایدار باشید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Thu, 22 Apr 2021 18:25:09 +0430</pubDate>
            </item>
                    <item>
                <title>بریم تو کد - قسمت دوم (شرط)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%A8%D8%B1%DB%8C%D9%85-%D8%AA%D9%88-%DA%A9%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-%D8%B4%D8%B1%D8%B7-ijhc0b8aptmm</link>
                <description>سلااااااام.?️حالتون چطوره؟؟با قسمت دوم بریم تو کد برگشتم.سعی من بر اینه که هفته ای یه ویدیو رو داشته باشیم و بعد بریم تو کد هم که مطمئن شدیم همه ی شما اینا رو بلدید میریم سراغ بحث های خیلی باحال تر و جذاب تر در مورد کامپیوتر و اینکه هر چیزی چطوری کار میکنه.این قسمت رو میتونید از یوتوب یا آپارات ببینید (خیلی خوشحال میشم اگه یوتوب رو سابسکرایب کنید): https://aparat.com/v/QUBNP توی این قسمت از شرط صحبت میکنیم و ۵-۶ تا مثال هم حل میکنیم که دیگه کامل متوجه بشید.ادرس کد پن برای تمرین شما:https://codepan.egoist.sh/gist/7034e16cc9cabc55c1609d1a021b4b32موفق باشید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Thu, 15 Apr 2021 17:39:31 +0430</pubDate>
            </item>
                    <item>
                <title>بریم تو کد - قسمت اول (انواع داده و عملگر ها)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%A8%D8%B1%DB%8C%D9%85-%D8%AA%D9%88-%DA%A9%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D9%88-%D8%B9%D9%85%D9%84%DA%AF%D8%B1-%D9%87%D8%A7-e9lht2tt0dl6</link>
                <description>سلاااام.حالتون چطوره؟همونطور که قول داده بودم که میریم سمت ویدیوکست ساختن. امروز با اولین ویدیو کست اومدم.این ویدیو اولین قسمت از یه سری ۳-۴ قسمتی هست که توش قراره اصول برنامه نویسی رو بگیم. برای این کار از زبون جاوااسکریپت استفاده کردم ولی تمرکز اصلی رو اصول کد نویسیه.میتونید این ویدیو رو از این لینک توی یوتوب یا اپارات ببینید.  https://aparat.com/v/cVdGF سرفصل ویدیو:۱. تعریف متغیر.۲. عملگر انتصاب.۳. دیتا تایپ های جاوااسکریپت:numberstringboolean۴. عملگر های این دیتاتایپ ها:number : + , - , * , / , ** , ++ , - -string: +boolean: || , &amp;&amp;مقایسه ای: &gt; , &lt; , ==۵. تبدیل تایپ ها به هم۶. دیدن زبون های برنامه نویسی دیگه (شباهت ها و تفاوت ها)اگه سوالی بود از اینجا میتونید بپرسید.و اگر دوست دارید میتونید تو چنل تلگرام ما هم عضو شید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Thu, 08 Apr 2021 20:54:38 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر (سیستم عامل و api)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D8%B9%D8%A7%D9%85%D9%84-%D9%88-api-dtgd2vxerssi</link>
                <description>سلام.حالتون چطوره؟عیدتون مبارک.انچه در ادامه میخونید متن پادکست ما هست کی میتونید از اینجا گوش بدید همچنین میتونید مارو از اینجاها دنبال کنید. اگه توی کانال تلگرام ما هم عضو بشید خیلی خوبه چون از فعالیت های جدید ما با خبر میشیداینجا اینترن پلاس پلاسه . توی اینترن پلاس پلاس ما سعی می‌کنیم تجربه های شخصی خودمون رو با منابع علمی قاطی کنیم و چیزایی بهتون بگیم که توی راه برنامه نویس بهتری شدن کمکتون کنه و سردرگمی شما رو کم کنه.الانم  شما دارید به ششمین قسمت سری سفر به اعماق کامپیوتر گوش میدید.سفر به اعماق کامپیوتر هم یکی از سری پادکست های ماست که توش اصطلاحات فنی رو تعریف میکنیم.توی این قسمت من علی قهرمانی میخوام در مورد api و سیستم عامل صحبت کنم.اگه قسمت های قبلی این سری رو گوش نکردید اونارو هم گوش کنید. چون برای فهمیدن کامل این قسمت نیاز دارید یسری مفاهیم پایه تر رو بدونید.APIخوب بیاید از API شروع کنیم. API مخفف application programming interface هه. که یعنی واسط برنامه نویسی برنامه.حالا یعنی چی؟ببینید ما یه رابط کاربری داشتیم که توی قسمت های قبل در موردش صحبت کردیم که رابط بین یه کاربر با برنامه بود.حالا بعضی موقع ها خود برنامه ها نیاز دارن با هم ارتباط بگیرن یعنی به هم دیتا بفرستن و از هم دیتا بگیرن یا اتفاق افتادن چیزی رو به هم خبر بدن. عامیانه بخوایم بگیم برنامه ها نیاز دارن با هم حرف بزنن.حالا از نظر فنی بسترهای مختلفی برای حرف زدن دوتا برنامه با هم هست مثلا شبکه و خیلیای دیگه. ولی دقت کنید که ما اصلا با این بستر ها کاری نداریم. و واسط برنامه نویسی یه چیز دیگس.بیاید با یه مثال قضیه رو روشن کنیم.ببینید api مثل منوی رستوران میمونه توی منوی رستوران یه لیستی از غذا هارو با توضیحاتش میشه دید. حالا وقتی شما میاید از بین این غذا ها سفارش میدید اون رستوران اون غذا رو برای شما آماده میکنه. یه جورایی میشه گفت اون رستوران یسری منابع و عملکرد داره که نتیجه اش میشه اون غذا ها. حالا ما از طریق منوی رستوران میتونیم از این منابع و عملکرد ها استفاده کنیم.اوکی؟حالا من میام یه برنامه می نویسم که یکسری قابلیت رو ارائه میده. حالا میام لیستی از نحوه ی استفاده از قابلیت هارو با توضیحاتش میدم به برنامه نویسای دیگه. حالا اون برنامه نویسا میتونن از طریق api یا واسط برنامه نویسی برنامه ی من یه برنامه ای بنویسن که با برنامه ی من بتونه حرف بزنه.مثلا شنیدید میگن api تلگرام؟داستان اینه که شرکت تلگرام یه سرور داره و توش یه برنامه در حال اجراست.که در مورد اینکه سرور چیه توی سفر به اعماق کامپیوتر شبکه و اینترنت حرف زدیم و در مورد برنامه ای که توی سرور اجرا میشه هم توی سرکی به دنیای برنامه نویسی وب حرف زدیم.داستان اینه که شرکت تلگرام یه سرور داره که توی سرورش یه برنامه هست که داره گوش میده به درخواست هایی که از طریق شبکه میاد. و این درخواست دونه دونه میبینه و انجام میده. مثلا یه درخواست میگه این پیام رو بده به فلانی یه درخواست دیگه داره میگه عکس پروفایل منو عوض کن و…این درخواست ها از طریق اینترنت و از موبایل ها و کامپیوترهای کاربرا به دست سرور میرسه.نکته ی مهم اینه که همه ی این درخواست ها باید توی فرمت مشخصی به دست سرور برسن که سرور اونارو بفهمه.حالا اینجا تلگرام اومده لیست درخواست هایی که میشه به سرورش زد رو با جزئیات کامل منتشر کرده یعنی مثلا نوشته اگه میخوای پیام بفرستید باید یه درخواست با این فرم حاوی این اطلاعات به سرور من بفرستید که من پیامو بفرستم برای صاحبش.حالا منه برنامه نویس میتونم بیام یه برنامه بنویسم که از طریق این api ها با سرور تلگرام صحبت کنه. مثلا یه ربات بنویسیم یا یه برنامه اندروید برای تلگرام بنویسم. البته خود برنامه رسمی تلگرام هم از همین api ها استفاده میکنه.حالا اینجا به این api ها اصطلاحا web api میگن چون از طریق شبکه ی وب قابل دسترسیه. ولی همه ی api ها فقط توی وب نیستن.بخش زیادی از api هارو میتونید توی سیستم عامل ها پیدا کنید.مثلا توی همه ی سیستم عامل ها یه برنامه ای هست که زمان رو نگه میداره. هر موقع هر برنامه ی دیگه ای زمان رو بخواد بدونه باید از طریق api ای که برنامه نویس سیستم عامل در اختیارش گذاشته زمان رو از اون برنامه بپرسه و جوابش رو بگیره و استفاده کنه.یا مثلا توی سیستم عامل اندروید یه برنامه ای در حال اجراست که وظیفه اش مدیریت کردن نوتیفیکیشن هاست. برنامه های دیگه میتونن بیان بهش بگن این نوتیفیکیشن رو با این متن و این آیکون نشون بده. و تازه برنامه لانچر اندروید باید بیاد ازش بپرسه که کدوم برنامه ها نوتیفیکیشن جدید دارن که بغل آیکون اونا یه دونه دایره قرمز بیاره. اینجا برنامه ی مدیریت نوتیفیکیشن یه api مشخص داره که از طریق اون میتونه به بقیه برنامه ها سرویس بده.یا مثلا توی ویندوز یسری برنامه ها دکمه save as دارن. وقتی می زنید برنامه ی فایل منیجر ویندوز تون باز میشه و میتونید یه فولدری رو انتخاب کنید و یه اسم فایل هم مشخص کنید و بعد از زدن دکمه ی save همه ی این اطلاعات به برنامه اولیه داده میشه و برنامه میفهمه باید فایل رو کجا ذخیره کنه.و این قابلیتی که برنامه ی فایل منیجر در اختیار برنامه های دیگه میزاره و یه راه و فرم مشخصی برای استفاده ازش وجود داره که بهش میگن APIفکر کنم دیگه زیادی دارم مثال میزنم ولی خوب گستردگی موضوع زیاده. هر جا رو نگاه کنید API میبینید. و یه بخش جدانشدنی از برنامه نویسی هست.بریم یه موزیک گوش بدیم بیایم در مورد سیستم عامل صحبت کنیمسیستم عاملحالا بریم سراغ سیستم عامل.سیستم عامل یا Operating system یا OS یه برنامه اس که وظیفه اش اینه که سخت افزار و منابع کامپیوتر رو مدیریت کنه. در واقع میاد یه بستری رو برای اجرا شدن برنامه ها فراهم میکنه و سخت افزار رو توی یه لایه abstract میبره.گفتم abstract :)اشنا نیست؟توی قسمت قبلی پادکست که زهرا براتون از abstraction توی شئ گرایی حرف زد حالا ما abstraction رو اینجا هم داریم.داشتم میگفتم.اینکه سیستم عامل سخت افزار رو توی یه لایه abstract میبره یعنی اینکه برنامه ها مستقیم لازم نیست با سخت افزار کار کنن.بر فرض مثال من میخوام یه برنامه بنویسم که یه داده ای رو توی شبکه ارسال کنه. حالا اگر سیستم عامل نباشه باید بیام مستقیم برای کارت شبکه برنامه بنویسم. حالا این کارت شبکه ها هم که یکی دوتا نیستن. انواع دارن. کارت شبکه ی intel یجور کار میکنه واسه یه شرکت دیگه یه جور دیگه کار میکنه. حالا بعضی کارت شبکه ها وایرلس ان بعضیا سیم دار ان و در کل نابود میشم اگه بخوام واسه همه اینا جدا جدا کد بنویسم و تازه اگر هم بتونم همچین کاری رو بکنم. بعد از منتشر کردن برنامه یهو یه کارت شبکه جدید معرفی میشه و روی کامپیوتر های جدید دیگه برنامه من کار نمیکنه.حالا اگه بخوام یه برنامه بنویسم که توی یه سیستم عامل اجرا بشه و یه داده ای رو بفرسته تو شبکه خیلی راحت میام به سیستم عامل میگم داداچ این داده هارو بی زحمت بفرست به فلان آدرس اینجا سیستم عامله که همه ی اون پیچیدگی هارو هندل میکنه و منه برنامه نویس دیگه اصلا درگیر سخت افزار و جزئیاتش نمیشم.اگه قسمت قبل رو گوش کرده باشید شباهت مثال زهرا در مورد گاز و ترمز ماشین با سیستم عامل رو درک میکنید.حالا این فقط مربوط به شبکه بود حالا بیاید این مفهوم رو تعمیم بدیم به کل سخت افزار.مثلا دیسک. یه موقع ssd هه یه موقع hdd هه و رابط های مختلفی داره. بعد تازه دیسک اصلا فایل و فولدر نمیفهمه چیه که. یسری بلوک حافظه اس که توش میشه نوشت.حالا برنامه نویس از کجا میخواد بفهمه که توی کدوم بلوک دیسک باید بنویسه؟نکنه یجا شرو کنه نوشتن که قبلا یه برنامه دیگه اونجا یه چیزی نوشته بوده. و توی اجرا شدن اون برنامه اختلال ایجاد کنهحالا سیستم عامل میاد یسری مفهوم ساده تعریف میکنه مثل:فایل و فولدر و لینک و…بعد برنامه ای که روی سیستم عامل اجرا میشه میگه بیا توی این فولدر یه فایل بساز توش این داده هارو بنویس و اصلا برای برنامه مهم نیست که سیستم عامل این فایل هارو توی کدوم بلوک حافظه ی  دیسک ذخیره میکنه و این سیستم عامله که میاد مدیریت میکنه که کدوم فایل تو چه فولدری هست و کجای دیسک ذخیره شده و حواسش هم هست که یه جایی که یه فایل هست نیاد یه فایل دیگه روی اون بنویسه.حالا در مورد RAM هم همینطوره. وقتی یه برنامه اجرا میشه و نیاز به رم داره سیستم عامل میاد این رم رو در اختیار برنامه میزاره. تصور کنید که همزمان برنامه های دیگه هم توی سیستم عامل در حال اجرا هستن و اونا هم رم میخوان این سیستم عامله که میاد مدیریت میکنه این داستان رو.وظیفه ی بعدی سیستم عامل اصن مدیریت کردن این پردازش هاست.داخل پرانتز اینم بگم که برنامه وقتی که اجرا میشه بهش میگن پردازش.حالا اینکه هر لحظه کدوم هسته ی cpu در اختیار کدوم برنامه باشه چیزیه که سیستم عامل در موردش تصمیم میگیره و اگه پردازش ها زیاد شن میاد صف درست میکنه و براش زمان بندی میکنه که اجرا برنامه ها به سریع ترین و بهینه ترین شکل ممکن اتفاق بیفته. اصلا بعضی برنامه ها در حال اجرا هستن ولی اصلا cpu رو لازم ندارن و منتظر یه اتفاق هستن و سیستم عامل میاد cpu رو میده به بقیه برنامه ها تا اون اتفاق بیوفته. مثلا کاربر روی یه دکمه کلیک میکنه. بعد سیستم عامل میاد اون پردازش که منتظر بوده رو خبر میکنه و بهش cpu رو میده که کارش رو بکنه. هر پردازشی هم که کارش تموم شد رو از بین میبره و حافظه ای که گرفته بوده رو ازاد میکنه که بقیه استفاده کنن. حالا این وسط شاید یه پردازش یهو با ارور مواجه بشه. بازم این سیستم عامله که میاد ارور رو هندل میکنه. مثلا میاد اون برنامه رو میبنده و از به فنا رفتن کل سیستم جلوگیری میکنه.خلاصه که برنامه ای که روی سیستم عامل اجرا میشه اگه با هر تیکه سخت افزار بخواد ارتباط برقرار کنه از سیستم عامل کمک میگیره.هر تیکه از سخت افزار که فکرش رو بکنید.میکروفون و بلندگو و کیبورد و موس و صفحه نمایش و پرینتر و وبکم و خلاصه همه ی سخت افزار هارو اینجوری توی لایه abstract میبره و کار کردن باهاشون رو ساده میکنه و از تداخل برنامه ها جلوگیری میکنه.جا داره بگم سیستم عامل ها همه ی سخت افزار هارو ساپورت نمیکنن و بعضی موقع ها نیاز هست که ما بیایم درایور نصب کنیم.درایور هم یه برنامه اس که سازنده ی سخت افزار اونو مینویسه و قابل نصب روی سیستم عامله و عملکرد سیستم عامل رو توی کار با سخت افزار ها کامل میکنه.مثلا یه پرینتر جدید میخرید و سیستم عامل شما کار کردن با اون رو بلد نیست. اصطلاحا میگن پرینتر رو نمیشناسه. حالا شما می‌آید درایورش رو نصب میکنید بعد دیگه میشناسه.و حالا سیستم عامل برای همه ی این فرایند هایی که گفتیم میاد api ارائه میده به برنامه ها که از طریق این api ها چیزی که میخوان رو درخواست کنن.حالا بریم به چند تا سوالی که ممکنه پیش بیاد جواب بدیم.۱. سوال اول اینه که این api هارو از کجا پیدا کنیم؟جواب اینه که توی اینترنت.مثلا اگه بزنید android api میبینید که گوگل یه داکیومنت عظیم در مورد api های اندروید گذاشته توی سایتش. که با جزئیات خیلی زیاد کار کردن با هر بخش سیستم عامل اندروید رو توضیح داده.۲. سوال بعدی اینه که ایا همه ی کامپیوترها سیستم عامل دارن؟نههه.مثلا میکروکنترلر ها ندارن.اینا کامپیوتر های خیلی کوچولو و ارزون قیمت و ضعیفی هستن که واسه یه کار خاص معمولا تو حوزه ی اینترنت اشیا ازشون استفاده میشه.کلا یدونه برنامه قراره روش اجرا شه که یه کار ثابتی رو انجام بده و یسری ورودی و خروجی رو کنترل کنه. اینجور موقع ها نمیان سیستم عامل نصب کنن چون همه ی این کارایی که گفتیم پردازش میطلبه و رم اشغال میکنه. میان خود برنامه رو که معمولا با زبون های سطح پایینی مثل c یا c++ یا اسمبلی مینویسن. و مستقیم برای سخت افزار برنامه مینویسن.دقت کنید که سطح پایین فحش نیست. به زبونی که به زبون ماشین نزدیک باشه و جزئیات سخت افزار توش دخیل باشه میگن سطح پایین تازه این زبون های سطح پایین سرعت اجرا بیشتری هم دارن و حافظه ی کم تری اشغال میکنن که با توجه به اینکه پردازنده ی ما ضعیفه عملکرد بهتری رو ارائه میدن.داخل پرانتز بگم که بخش زیادی از سیستم عامل ها و درایور ها رو هم با همین زبونای سطح پایین مینویسن.نکته ی بین مریض سوسکی هم اینجا اینه که بعضی سیستم عامل ها مثل لینوکس و اندروید , نسخه های کوچولو و سبک مخصوص اینترنت اشیا دارن که روی سخت افزار های خیلی ضعیف هم قابل نصب شدن هستن.۳. سوال بعدی اینه که چرا بعضی برنامه ها فقط مخصوص یه سیستم عامل هستن. مثلا یه برنامه ی ویندوزی مثل فوتوشاپ چرا روی اندروید اجرا نمیشه؟جواب اینه که api های سیستم عامل ها با هم فرق داره وقتی یه برنامه مثل فوتوشاپ رو مخصوص ویندوز مینویسن میان توش کلی از api های ویندوز رو صدا میکنن. حالا اون api ها روی اندروید وجود ندارن واسه همین نمیتونه اجرا بشه.حالا یسری برنامه ها هم هستن که platform independent یا مستقل از محیط اجرا هستنند مثلا جاوا ایده اش اینه که شما برنامه ی جاوایی رو مینویسی و یه خروجی jar میگیری ازش و حالا میشه اون خروجی jar رو هم توی ویندوز هم توی لینوکس هم توی همه سیستم عامل های دیگه اجرا کرد.اما چجوری؟جاوا یه ماشین مجازی داره که واسه اینکه برنامه جاوایی کار کنه باید روی سیستم عامل نصب باشه. حالا این ماشین مجازی یسری توابع داره که کارایی که با سخت افزار داریم رو انجام میدن.حالا وقتی برنامه ای که روی ماشین مجازی داره اجرا میشه میخواد با سخت افزار کار کنه و ما میایم اون توابع رو صدا میزنیم و ماشین مجازی جاوا که روی لینوکس نصب شده میاد api های لینوکس رو صدا میزنه و ماشین مجازی که روی ویندوز نصب شده میاد api های ویندوز رو صدا میزنه.حالا یه زبون تفسیری مثل پایتون چطوری روی همه سیستم عامل ها اجرا میشه؟پایتون هم مثل جاوا برای اینکه اجرا بشه نیاز داره که مفسر پایتون نصب باشه و این مفسر پایتون هست که میاد برنامه ای که با پایتون نوشته شده رو اجرا میکنه حالا وقتی برنامه درخواست داره که با یه تیکه از سخت افزار ارتباط برقرار کنه این مفسره که میاد با توجه به سیستم عامل api های مربوط رو صدا میزنه.ولی این platform independent بودن یه مشکلی که داره اینه که شما مستقیم دیگه نمیتونید با همه ی بخش های سیستم عامل ارتباط برقرار کنید که اینجور موقع ها میتونید با زبون های سطح پایین تر مثل c برای زبون های سطح بالاتر لایبری بنویسید و از اون استفاده کنید.خوب دیگه حرفی نیست. الان دیگه دید کامل تر و بهتری نسبت به api و سیستم عامل و اینا دارید. خداروشکر.نکته ی خیلی آخرنکته ی خیلی آخر هم اینه که ما با شعار &quot;شنیدن کی بود مانند دیدن&quot; در کنار پادکست هامون میخوایم از این به بعد ویدیو کست هم منتشر کنیم. اگه از اپلیکیشن های پادکستی مارو دنبال میکنید. مطمئن شید که مارو توی جاهای دیگه هم دنبال کنید که ویدیو هارو از دست ندید. آدرس همه ی شبکه های اجتماعی ما توی وبسایتمون به ادرس internplusplus.ir هست.قسمت ششم پادکست سفر به اعماق کامپیوتر هم تموم شد.اگه سوالی داشتید میتونید توی گروه تلگرامی ما بپرسید.مارو به دوستاتون معرفی کنید و با این کار مارو خوشحال کنید.مرسی که این پادکست رو گوش دادید.عیدتون هم مبارک.خدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Mon, 22 Mar 2021 21:34:30 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر(شئ گرایی)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1%D8%B4%D8%A6-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-lynnqoscrfn5</link>
                <description>.سلاامامروز حالتون چطوره؟انچه در ادامه میخونید متن پادکست ما هست کی میتونید از اینجا گوش بدید همچنین میتونید مارو از اینجاها دنبال کنید. https://castbox.fm/episode/سفر-به-اعماق-کامپیوتر-(شئ-گرایی)-id2716424-id362795547?utm_source=website&amp;utm_medium=dlink&amp;utm_campaign=web_share&amp;utm_content=%D8%B3%D9%81%D8%B1%20%D8%A8%D9%87%20%D8%A7%D8%B9%D9%85%D8%A7%D9%82%20%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1%20(%D8%B4%D8%A6%20%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C)-CastBox_FM سلام.حالتون چطوره؟اینجا اینترن پلاس پلاسه . توی اینترن پلاس پلاس ما سعی می‌کنیم تجربه های شخصی خودمون رو با منابع علمی قاطی کنیم و چیزایی بهتون بگیم که توی راه برنامه نویس بهتری شدن کمکتون کنه و سردرگمی شما رو کم کنه.الانم  شما دارید به پنجمین قسمت سری سفر به اعماق کامپیوتر گوش میدید.سفر به اعماق کامپیوتر هم یکی از سری پادکست های ماست که توش اصطلاحات فنی رو تعریف میکنیم.توی این قسمت من که زهرا ام میخوام در مورد شی گرایی صحبت کنم.اگه قسمت های قبلی این سری رو نخوندید اونارو هم گوش کنید چون دید جزئی تری بهتون میده نسبت به کامپیوتر.خب ، دیدین بعضی موقع ها وقتی برای توضیح یه قضیه از متضاد یا مخالفش استفاده میکنن که بهتر جا بیوفته؟ مثلا اینکه تاریکی چیه؟ جوابشو میشه اینطوری داد جایی که نور نباشه تاریکیه :))الان منم میخوام همین روش رو در پیش بگیرمببینید در حالت غیر شی گرا یعنی پروسیجرال شما توی برنامه اتون یسری تابع و یسری متغیر دارید که کل برنامه ی شما رو تشکیل میدن که از یه جایی شروع میشه به اجرا شدن و میره جلو.حالا مشکل چیه؟مشکل اینه که وقتی برنامه بزرگ میشه یعنی حجم کد زیاد میشه شما کلی تابع دارید که دارن همدیگه رو صدا میزنن در نتیجه مدیریت کردن این کد ها خیلی سخت میشه چون اگر بخواید یه بخش رو تغییر بدید باید مواظب باشید که کل برنامه به فنا نره.که بهش میگن کد اسپاگتی که مثال خیلی بامزه ایه چون همانطور که شما به یه اسپاگتی نگاه میکنید و نمی فهمید که کجاش به کجاش وصله وقتی به یه کد اسپاگتی نگاه میکنید هم متوجه نمیشید سرو تهش کجاست.و این نه تنها ذهن شما رو شلوغ میکنه بلکه سرعت شما رو پایین میاره و کیفیت برنامه هم پایین میاد چون احتمال خطای شما و در نهایت باگ توش بیشتر میشه.حالا اینجاست که شی گرایی وارد میشهداستان اینجوری شد که اومدن یه شیوه جدیدی واسه برنامه نویسی درست کنن که به عملکرد مغز آدما نزدیک تر باشه.خب عملکرد مغز ما چجوریه:اینجوریه که هرچی دور و برمون هست رو به صورت یه شیء میشناسیم مثلا: درخت، میز، پرتقال، شیشه پاک کن و … این اشیاء الان تو محدوده‌ی دید من بود.حالا اومدن توی برنامه نویسی هم همین کارو کردن که مغز ما بهتر مدیریتش کنهبرنامه نویسی شی گرا یه روش برنامه نویسیه که توی اون اشیا یا آبجکت ها هستن که اجزای برنامه رو تشکیل میدن.خب حالا بریم سراغ اینکه کدا چجوری نوشته میشن.شی گرایی یه قابلیته که خیلی از زبانهای برنامه نویسی دارن و این اجازه رو میده که شما برنامه ی خودتون رو در قالب کلاس های مختلف بنویسید.یعنی برنامه ی شما میشه چند تا کلاس که هر کدوم یه مفهومی رو دنبال میکنند و کد های مربوط به اون مفهوم رو توی اون کلاس مینویسید و در نهایت میتونید این کلاسا رو به هم ربط بدید و برنامه ی خودتون رو کامل کنید.بعد موقع استفاده از کلاس میایم یه نمونه از اون کلاس درست میکنیم که به اون میگیم شی.یعنی اینجا میتونیم بگیم که کلاس مثل دستور پخت غذاست و ابجکت یا شی مثل خود غذاست.حالا این کلاس که گفتیم چه شکلیه؟بسته به زبون برنامه نویسی که کار میکنید ممکنه یکم متفاوت باشه ولی در کل یه کلاس توش میشه  یکسری متغیر و یکسری تابع نوشت که به هم ربط دارن و برای تشکیل دادن یه مفهوم تلاش میکنن.هر کلاس میتونه چند تا رفتار داشته باشه که در قالب تابع نوشته میشه و یک سری ویژگی هم میتونه داشته باشه که در قالب متغیر نوشته میشه.حالا وقتی تابع میره تو کلاس بهش میگن متد و همینطور به متغیری هم که تو کلاس باشه میگن پروپرتی یا صفت .تا الان به صورت کلی فهمیدید که چیه داستان ولی شی گرایی بر پایه ی چهار تا مفهوم اصلیه:Abstraction, انتزاعInheritance, ارث بریEncapsulation, مخفی سازیpolymorphism چندریختیحالا بریم ببینیم حرف حسابشون چیه.انتزاع (Abstraction)اول میریم سراغ abstraction که از همه باحال تره به حالتی میگن که یه کلاس &lt;مکث&gt; کد ها و پیچیدگی های توی خودش رو از دید شما که از بیرون کلاس میخواید ازش استفاده کنید مخفی میکنهکه به این کار میگن abstractionیه مثال خیلی کلیشه ای و معروف در مورد abstraction وجود داره که میریم با هم برسیش کنیم.شما توی یه ماشین نشستید.میدونید وقتی پدال گاز رو فشار میدید سرعت ماشین بیشتر میشه.و وقتی پدال ترمز رو فشار میدید سرعت ماشین کم تر میشه.ولی در واقع به همین سادگی نیست و پشت داستان کلی قطعات مکانیکی هستن که باعث میشن این اتفاق بیوفته که  شما متوجه هیچ کدوم نمی شید.شما در نهایت یه پدال گاز و ترمز رو میبینیدو اگه قرار باشه موقع رانندگی حواستون رو بدیید به همه ی اون پیچیدگی ها دیگه رانندگی نمیتونی بکنی.حالا توی برنامه نویسی هم ما به این abstraction نیاز داریم و شی گرایی ابزار خوبی برای پیاده سازی این مفهوم به ما میده.یعنی شما یه کلاس مینویسی و کلی توش پیچیدگی داری.بعد موقعی که میای از اون کلاس استفاده میکنی دیگه به پیچیدگی‌های داخل اون فکر نمیکنی چون میدونی که کد های داخل کلاس رو قبلا نوشتی و درست کار میکنن و مهم نیست که چطوری کار میکنن و ذهنت رو درگیر اون پیچیدگی ها نمیکنی.وراثت (inheritance)حالا بریم سراغ وراثت یا inheritance که بهمون اجازه میده از تکرار کد در کلاس ها جلوگیری کنیم و اینطوریه که کد هایی که میخوایم رو توی یه کلاس پایه می نویسیم و بعد وقتی کلاس های دیگه ی ما از اون کلاس ارث بری میکنن اون کد هایی که توی کلاس پایه نوشته بودید رو انگار تو کلاس فرزند نوشتید.فهمیدید دیگه اسمش برای چی ارث بریه دیگه چون در دنیای واقعی هم فرزند ها ویژگیهای پدر و مادرشون رو به ارث میبرن.در حالت عادی یعنی اگه این کارو نکنید باید کلی کد تکراری رو توی همه ی کلاس هایی که اون کد رو نیاز دارن کپی پیست کنید که اینجوری هم حجم برنامه زیاد میشه هم اگه بخواید یه تغییری بدید باید توی همه ی اون کلاس های فرزند اون تغییر رو بدید که وقت شما رو میگیره.مخفی سازی (encapsulation)حالا میریم سراغ  مخفی‌سازی یا encapsulation که میتونیم با این قابلیت بعضی از ویژگی‌ها یا رفتار‌های کلاس رو از بیرون کلاس غیر قابل دستیابی کنیم.تو زبون جاوا مثلا سه تا کلمه کلیدی هست به اسم: public, private, protectedکه اینا هر کدوم میتونن پشت یه متغیر، متد، کلاس و .. بیان و دسترسی به اونا رو تغییر بدنا public ها که از اسمش معلومه دسترسی رو برای عموم آزاد میزاره. یعنی از بیرون کلاس هم میشه یه تابع public رو صدا زد یا یه متغیر public رو مقدارش رو ریخت تو یه متغیر دیگه و یا مقدارش رو تغییر دادا private ها رو هم فقط میشه داخل کلاس خودشون بهشون دسترسی داشت و ینی از بیرون کلاس نمیشه صدا زد و تغییر داد و اینا.ا protected ها هم فقط از داخل کلاس خودشون و کلاس های فرزندشون میشه دسترسی داشت بهشون.اما مفهوم چهارم و اخرچند ریختی یا polymorphismما میتونیم چندتا متد رو با اسم یکسان تعریف کنیم که نوع یا تعداد ورودی هاش فرق کنه. در این صورت موقع صدا زدن با توجه به نوع و تعداد ورودی هایی که شما پاس می دهید تابع مناسب اجرا میشه که بهش overloading میگن.یه اصطلاح دیگه هم هست به اسم overriding که یعنی ما متدی که داخل کلاس پدر بوده رو دوباره تو کلاس فرزند تعریف میکنیم این باعث میشه که در کلاس فرزند از این به بعد این متد جدیده استفاده بشه و نه اونی که تو کلاس پدر بود.و به جز اینا شی گرایی باعث میشه که کد هاتون دسته بندی بهتر و مرتب تری داشته باشه و وقتی میخواید یه بخشی رو تغییر بدید با توجه به اینکه هر کلاسی مربوط به یه کاری میشه راحت تر اون بخشی که میخواید رو میتونید پیدا کنیدو در غیر این صورت پیدا کردن کدی که میخواید تغییر بدید یا پیدا کردن بخشی از برنامه که باگ داره خیلی سخت میشه و باید همه جا رو بگردیدبین این چهار تا به نظرم این abstraction مهم ترین چیزیه که برنامه نویسی شی گرا به شما میده.شی گرایی با توجه به زبون های برنامه نویسی مختلف فرق داره واسه همین دیگه بیشتر از این هم توضیح دادن در موردش سخت میشه.مخصوصا توی پادکست.بهتره اگه خودتون با توجه به چیزایی که گفتیم دیدید به دردتون میخوره برید سراغش و یادش بگیرید.حالا بریم ببینیم رابطه ی زبان های برنامه نویسی با  شی گرایی چجوریاس:بعضی زبونا از شی گرایی پشتیبانی نمی کنن مثل:C , pascalبعضیا ذاتا شی گرا هستن یعنی شما اصلا نمیتونی خارج از مفهوم کلاس کد بزنی مثل:Java , c#بعضی هام هستن که امکانات شی گرایی رو در اختیار شما میزارن و دست شما رو تو استفاده کردن یا نکردن ازاد میزارن مثل:Python , javascript و اکثر زبان های مدرناینم از شی گرایی.امیدوارم که پادکست امروز ما هم براتون مفید بوده باشه.خیلی مهمه که مارو به دوستاتون معرفی کنید.ما به این حمایت شما نیاز داریم تا بتونیم با قدرت تر ادامه بدیم.مارو میتونید از جاهای مختلفی دنبال کنید.تلگرام و اینستاگرام کست باکس و ویرگول و خیلی جاهای دیگه.و آدرس همه اینا توی سایت ما به ادرس internplusplus.ir هست.از هر جایی که دوست داشتید مارو دنبال کنید.تا اپیزود بعدی و یه آموزش دیگه خدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Wed, 10 Mar 2021 21:34:41 +0330</pubDate>
            </item>
                    <item>
                <title>سرکی به دنیای برنامه نویسی (موبایل)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D8%B1%DA%A9%DB%8C-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84-wlhkw8jwj0h3</link>
                <description>سلام =)امیدوارم که حالتون خوب باشه و سالم و سلامت باشید! انچه در ادامه میخوانید متن پادکستی هست که از اینجا ? میتونید گوش بدید و اگر هم تو کانال تلگرام ما عضو بشید باعث دلگرمیه ماس و این هم سایت ماست که توش آدرس شبکه های اجتماعی دیگه ما هست.در نهایت هم اگر سوالی داشتید میتونید توی این گروه بپرسید. اگه بلد باشیم جواب میدیم. https://castbox.fm/episode/سرکی-به-دنیای-برنامه-نویسی-(موبایل)-id2716424-id355842170?utm_source=website&amp;utm_medium=dlink&amp;utm_campaign=web_share&amp;utm_content=%D8%B3%D8%B1%DA%A9%DB%8C%20%D8%A8%D9%87%20%D8%AF%D9%86%DB%8C%D8%A7%DB%8C%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%DB%8C%20(%D9%85%D9%88%D8%A8%D8%A7%DB%8C%D9%84)-CastBox_FM سلام.حالتون چطوره؟اینجا که اینترن پلاس پلاسه.توی اینترن پلاس پلاس ما سعی می‌کنیم تجربه های شخصی خودمون رو با منابع علمی قاطی کنیم و چیزایی بهتون بگیم که توی راه برنامه نویس بهتری شدن کمکتون کنه و سردرگمی شمارو کم کنه.با یه قسمت دیگه از سرکی به دنیای برنامه نویسی اومدیم که در مورد برنامه نویسی موبایل صحبت کنیم.کلا اپیزود هایی که با اسم سرکی به دنیای برنامه نویسی منتشر میشن یه رشته ی برنامه نویسی رو معرفی میکنیم و نقشه راهش رو نشون میدیم.من علی ام و اگه دوست دارید در مورد برنامه نویسی موبایل بدونید شما رو به خوندن  ادامه ی این متن دعوت میکنم.خوب بریم سراغ اصل داستان.سال هاست که ما توی دنیای موبایل جنگ داریم سر پلتفرم ها و سیستم عامل ها.مثلا سیمبیان بود ویندوز فون و ویندوز موبایل بود.بلک بری برای خودش یه سیستم عامل داشت.یکم قبل تر از اینا یسری گوشی های جاوایی بودن. و خیلی های دیگهولی الان تقریبا دیگه میشه گفت که توی این جنگ سیستم عامل ها همه کشته شدن و فقط اندروید و ios زنده موندن. واصولا وقتی الان بحث از برنامه نویسی موبایل میشه همه ذهنشون میره سمت برنامه نویسی اندروید و ios.در وهله ی اول میریم سراغ راه های پیشنهادی خود گوگل و اپل برای برنامه نوشتن برای این سیستم عامل های دوست داشتنی و در ادامه میریم سراغ کراس پلتفرم ها و راه هایی غیر از راه های استاندارد هستن که مزایای خودشون رو دارن که با هم برسی میکنیم.برنامه نویسی اندروید (به صورت native)اول میریم سراغ اندروید که بالای ۸۰ درصد از سهم بازار رو دارهگوگل یه IDE رایگان داره (اگه نمیدونید IDE چیه ینی قسمت های قبلی سفر به اعماق کامپیوتر رو گوش نکردید)داشتم میگفتم.گوگل یه IDE رایگان در اختیار برنامه نویس های اندروید قرار داده که بهش میگن اندروید استودیو و توش میشه به زبان جاوا یا کاتلین برای سیستم عامل اندروید برنامه نوشت و تست کرد و آنالیز کرد و خروجی گرفت و خلاصه هر چیزی که یه برنامه نویس اندروید نیاز داره توی این IDE هست.راه استاندارد توسعه برنامه اندرویدی از نظر گوگل اینه. البته قبلا فقط جاوا به عنوان زبان برنامه نویسی اندروید بود ولی الان چند سالی میشه که زبون کاتلین معرفی شده و مستقیما از طرف گوگل توصیه میشه که به جای جاوا از این زبون جدید استفاده بشه چون زبون مدرنیه و کد نوشتن توش راحت تر و تر تمیز تر و کم باگ تر و در مجموع بهتره.یه نکته ی بی ربط به اپیزود: معمولا زبون هرچی جدیدتر باشه کد نوشتن باهاش راحت تر و تر تمیز تر و کم باگ تره.چرا؟چون زبون های جدید رو با توجه به مشکلاتی که زبون های قدیمی داشتن طراحی میکنن و syntax اونا رو جوری طراحی میکنن که خطا های رایجی که معمولا ادما میکنن توش سخت تر بشه و از طرفی از استایل های کد نوشتن مدرن تر هم بهره میبرن که حاصلش میشه کد های کم تر و تر تمیز تر و خوانا تر.برگردیم سر بحث اصلی.پس چی شد؟شما اگر بخواهید از راه استاندارد برنامه اندروید بنویسید تشریف میبرید اندروید استودیو رو دانلود میکنید.زبان جاوا یا کاتلین رو یاد میگیرید.کلی چیز هم نیازه که در مورد سیستم عامل اندروید و api هاش و چرخه ی حیاتش و… بدونیددر مورد api هم توی اپیزود های بعدی سفر به اعماق کامپیوتر صحبت میکنیم فقط همین قدر بگم که مثلا توی موبایل شما وقتی میخواید یه تیکه کدی بنویسید که گوشی ویبره بزنه یا نوتیفیکیشن بده یا لوکیشن رو بگیره یا با میکروفون یا بلندگو کار کنه یا اینکه برنامه های دیگه رو باز کنه و خیییییییلی چیزای دیگه باید از اندروید بخواهید که اون کارو براتون بکنه.و این ها چیزایی نیست که شما تو برنامه نویسی جاوا یا کاتلین یاد بگیرید و مربوط به خوده خوده سیستم عامل اندروید و قابلیت هایی که حین اجرا در اختیار برنامه ها قرار میده.کهتوی ورژن های مختلف اندروید یچیزایی تغییر میکنه و قابلیت های جدید اضافه میشه.و در نهایت شمام بعد از اینکه کدتون رو نوشتید از اندروید استودیو خروجی apk میگیرید و میتونید اون فایل رو تو وب سایت خودتون یا کافه بازار و گوگل پلی و… بزارید برای دانلود.ملت هم دانلود میکنن و نصب میکنن و لذت میبرن.حالا بریم سراغ مشکلاتی که ممکنه بهش بر بخورید.۱. نصب اندروید استودیو و sdk ها به خاطر تحریم های ظالمانه ی گوگل کار سختی هست.ولی خوب کلی راه برای دور زدنش هست.۲. برای انتشار برنامه ی خودتون تو گوگل پلی هم ممکنه یکم به مشکل بخورید چون هم تحریم هستیم هم کانال های مالی باز نیست که بخوایم پول بریزیم و اکانت دولوپر گوگل بخریم ولی خوب این هم چیز غیر ممکنه نیست.  در نهایت میتونید برنامه ی خودتون رو توی مارکت هایی غیر از پلی استور بزاریدبرنامه نویسی ios (به صورت native)حالا بریم سراغ راهی که اپل برای برنامه نویسی ios پیشنهاد میدهای او اس هم یه IDE داره به اسم xcode که باهاش میشه برنامه ios نوشت.از نظر زبون برنامه نویسی هم قدیما objective c بود ولی چندین ساله که اپل swift ‌رو اپل معرفی کرده که جایگزین objective c هست و همون داستانایی که در مورد جاوا و کاتلین داشتیم رو اینجا  هم داریم ینی اپل مستقیما توصیه میکنه که از swift برای برنامه نویسی ios استفاده کنید و بسیار ساده تر و مدرنتر از objective c است.نکته ناراحت کننده اینه که شما این محیط رو فقط میتوانید روی سیستم عامل OSX داشته باشید که سیستم عامل لپ تاپ ها و کامپیوتر های اپل است.پس اگر بخواید برنامه نویسی ios کنید باید یا یه مک بوک یا کامپیوتر اپل بخرید که خوب میدونید که………. گرونه :)اما راه دوم اینه که سیستم عامل OSX رو روی مجازی ساز روی سیستم عاملی که الان دارید بیارید بالا که کار خیلی راحتی نیست و بعد از بالا اورندش هم زیاد بازدهی خوبی نداره ولی خیلیا به راه اول ترجیح میدن که میتونید حدس بزنید چرا.راه سوم اینه که روی سیستم غیر اپلی خودتون بدون مجازی سازی سیستم عامل OSX رو نصب کنید که بهش میگن هکینگتاش. که این روش هم تا جایی که من فهمیدم اصلا آسون نیست و نیاز به دانش فنی داره. و تو شروع کار میتونه شمارو خسته و ناامید کنه از زندگی.اما نکته ی جذاب اینه که این سختی ها باعث شده که تعداد برنامه نویس های ios خیلی کمتر از اندروید باشه و این در حالی هست که اکثر برنامه های موبایلی که نوشته میشن ios هم میخوان و در نتیجه تقاضای ios خیلی هم کم تر از اندروید نیست و در نتیجه ی همه ی این حرف هایی که زدم میشه فهمید که استخدام شدن و کار گرفتن به عنوان برنامه نویس ios راحت تر از اندروید باشهحداقل این چیزیه که تو این سال ها از برنامه نویس های ios زیاد شنیدمتازه درآمد برنامه نویس ios هم به همین دلایلی که گفتم به صورت میانگین بیشتر از اندروید هست. عرضه و تقاضاس دیگه.پس یه دوره بکنیم:۱. شما سیستم عامل مک میخواید که روش xcode نصب باشه.۲. شما باید زبون برنامه نویسی swift رو بلد باشید.۳. شما باید api های ios رو بشناسید و همون قصه هایی که در مورد اندروید گفتم ولی این بار در ios.حالاااااااااااابریم سراغ انتشار اپلیکیشندر حالت عادیحالت عادی ینی حالتی که شما اونور آب های نیلگون خلیج فارس دارید زندگی میکنید.شما باید یه مبلغی رو به اپل پرداخت کنید که اکانت دولوپر اپل داشته باشید که الان که من دارم این پادکست رو ضبط میکنم ۹۹ تا پول رایج مملکت بلاد کفر رو شما باید سالیانه بپردازید که بتونید توی app store بزارید برنامه اتون رو.اما بریم سراغ حالت غیر عادی که توش اپل اپلیکیشن های ایرانی رو حذف کرده و امکان انتشار برنامه های ایرانی تو app store رو نداریم.البته امیدوارم که اون موقعی که شما دارید این پادکست رو گوش میدید این عزیزانی که مارو تحریم میکنن سر عقل اومده باشن.الان تو این حالت غیر عادی شما میتونید اپلیکیشن های خودتون رو توی مارکت های ایرانی منتشر کنید که اینکه چطوری کار میکنن و چه مزیت ها و مشکلات احتمالی میتونن داشته باشن یه پادکست جدا میتونه باشه ولی میتونید برید همین الان شرایطشون رو بخونید ببینید که حرف حسابشون چیه. کراس پلتفرم:اول پلتفرم رو تعریف کنیم:به محیطی که یه برنامه توی اون اجرا میشه میگن پلتفرم که ترجمه فارسیش میشه سکو.بیخیال.سکو؟حالا یه موقع به نوع خاصی از سخت افزار میگن پلتفرم.یه موقع به یه سیستم عامل میگن پلتفرم.یه موقع به مرورگر ها میگن پلتفرم.حتی جاوا چون برنامه هاش روی ماشین مجازی جاوا که توی اپیزود های قبلی در موردش صحبت کردیم اجرا میشه هم میگن پلتفرم جاوا.حالا کراس پلتفرم یا چند سکویی ینی اینکه شما با یک بار کد نویسی با یه زبون برنامه نویسی بتونید اون رو روی چند تا پلتفرم اجرا کنید.این اصطلاح فقط مخصوص موبایل نیست و ما تو برنامه نویسی دسکتاپ هم این اصطلاح رو داریم یا حتی توی بازی سازی که مثلا یعنی این بازی هم رو pc هم رو xbox هم رو playstation اجرا میشه.ولی خوب ما اینجا داریم در مورد برنامه نویسی موبایل صحبت می کنیم منظورم میشه سیستم عامل های موبایل که اندروید و ios بودنحالا این کراس پلتفرم ها چطوری کار میکنن:اینا میان یه محیط اجرا رو روی محیط اجرای اندروید میارن بالاحالا مشابه همین رو روی ios میارن بالاحالا یه کدی که بتونه روی اون پلفرمی که روی هر دو پلتفرم ios و android اجرا شده اجرا بشه در واقع میتونه روی هر دو سیستم عامل اجرا بشه.حالا مشکلش چیه:۱. هر چی این لایه های پلتفرمی که رو هم رو هم میاد بیشتر بشه سرعت اجرا برنامه میاد پایین یعنی اگه ما مستقیم برای پلتفرم سخت افزاری برنامه بنویسیم بیشترین سرعت رو میتونیم تجربه کنیم ولی ما میایم برای پلتفرم هایی که روی سخت افزار نصب شدن برنامه مینویسیم که اون جوری سرعتش کم تره حالا باز روی این پلتفرم ها اگه رو هم رو هم پلتفرم بیاریم بالا سرعت یا فنی تر بخوایم بگیم پرفورمنس میاد پایین.۲. مشکل دوم اینه که انجام کار های مختلف روی سیستم عامل های مختلف راه های مختلفی وجود داره مثلا برای اینکه توی ios یه فایل صوتی رو بخونیم و صداش رو پخش کنیم با حالتی که تو اندروید بخوایم این کار رو بکنیم فرق داره حالا بگذریم از اینکه تو دوتا نسخه اندروید هم ممکنه فرق داشته باشه.حالا باید چی کار کنیم؟دو راه داره:۱. یه لایبری پیدا کنیم که اون کار واحد رو به یه شکل ثابت توی هر دو سیستم عامل انجام بده و توابع اون رو صدا بزنیم۲. خودمون یه لایبری بنویسیم که اون کار ثابت رو به یه شکل توی هر دو سیستم عامل انجام بدهجا داره یادآوری کنم که هیچ کدوم از راه های برنامه نویسی کراس پلتفرم توصیه شده از طرف apple , google نیستن. و این دوتا کمپانی راه های استانداردی که در موردشون صحبت کردیم رو پیشنهاد میکنن ولی خوب چون با یه بار کد نوشتن میشه رو دوتا پلتفرم موبایلی اجرا شه خیلی از شرکت ها و استارت آپ ها به خاطر کاهش دادن هزینه ی تیم برنامه نویسی موبایل میرن سمت این کراس پلتفرم ها و خوب ایده خوبیه به شرطی که برنامه خیلی درگیر api های مختلف سیستم عامل نباشه که دردسر نشه چون اونجوری هزینه ی تولید نرم افزار بیشتر هم میشه. و البته همه چی هزینه نیست و کیفیت هم مهمه که معمولا اون دوتا راه استانداردی که گفتیم کیفیت نرم افزار خروجی بیشتری نسبت به کراس پلتفرم ها دارن.برنامه نویسی کراس پلتفرم رو از کجا شرو کنیم:حالا بریم سراغ اینکه برنامه نویسی کراس پلتفرم رو از کجا باید شروع کنیم.همون طور که گفتیم کراس پلتفرم یه اصطلاحه و پیاده سازی های مختلفی ازش برای زبون های برنامه نویسی مختلف وجود داره.و این کراس پلتفرم ها هم یکی دوتا نیستن که بخوایم در موردشون مثل اون دو تا حالت استاندارد کامل توضیح بدیم. و به نظرم این مفاهیمی که گفتم مهم تر بود از صرفا معرفی کردن چنتا فریمورک.نهایتا ما به چند تا از معروف هاش اشاره میکنیم:react native:اولیش react native هه که محصول فیسبوکه و یکی از خیلی معروف ها تو این زمینه است و جدای اینکه خود فیسبوک برنامه هاش خودش مثل اینستاگرام و واتساپ و… خیلی اپلیکیشن های معروف دیگه ای مثل دیسکورد و اسکایپ و… رو با این نوشتن.زبون اصلیش هم جاوا اسکریپته.flutter:دومین چیزی که میخوایم بهش اشاره کنیم flutter هست که محصول گوگل هست و به شدت داره رشد میکنه و طرفدار هاش روز به روز بیشتر میشن و فقط هم به اندروید و ios خلاصه نمیشه و میتونید چیزایی که با فلاتر میزنید رو روی وب و حتی دسکتاپ هم اجرا کنید.زبون برنامه نویسیش هم دارت هست.xamarin:سومی زامارینه که محصول ماکروسافته و با c# میتونید برنامه android , ios بنویسید که دات نت کار ها که تو ایران هم تعدادشون کم نیست خیلی دوست دارنش.به جز این سه تا, حالا بازم هست مثلا ionic و cordova و QT و خیلیای دیگه که واقعا هر کدوم حرفی برای گفتن دارن(مخصوصا QT).کلا هم به نظر من بحث کراس پلتفرم ها الان داغه و چند سال دیگه در جنگ بین کراس پلتفرم ها یکی یکی کشته میشن و چند تا دونه باقی میمونه که همه از اونا استفاده میکنن. همون اتفاقی که برای سیستم عامل های موبایل افتاد.خوب دیگه به اخر این قسمت رسیدیم و امیدوارم که مسیر راه برنامه نویسی موبایل رو تونسته باشم بهتون نشون بدم.نمیدونم این قسمت رو از کجا دارید گوش میدید ولی ما تو شبکه های اجتماعی مختلفی هستیم و آدرس همه ی اونا رو میتونید توی وبسایت ما به ادرس internplusplus.ir ببینید.خدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Tue, 16 Feb 2021 20:43:12 +0330</pubDate>
            </item>
                    <item>
                <title>سرکی به دنیای برنامه نویسی(هوش مصنوعی)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D8%B1%DA%A9%DB%8C-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C%28%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C%29-py4k8i1fau8g</link>
                <description>سلام =)امیدوارم که حالتون خوب باشه و سالم و سلامت باشید! ~___~انچه در ادامه میخوانید متن پادکستی هست که از اینجا ? میتونید گوش بدید و اگر هم تو کانال تلگرام ما عضو بشید باعث دلگرمیه ماس و این هم سایت ماست که توش آدرس شبکه های اجتماعی دیگه ما هست.در نهایت هم اگر سوالی داشتید میتونید توی این گروه بپرسید. اگه بلد باشیم جواب میدیم. https://castbox.fm/episode/%D8%B3%D8%B1%DA%A9%DB%8C-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C(%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C)-id2716424-id341737670?country=us اینجا اینترن پلاس پلاسه و شما دارید به یکی دیگه از قسمت های سری سرکی به دنیای برنامه نویسی گوش میدید.توی این قسمت من که زهرا ام قراره باهاتون کُلی راجع به هوش مصنوعی و مشتقاتش گپ بزنم.حالا اگه شما به این موضوع علاقه دارید و دوست دارید بدونید چه خبره و چی به چیه و دنیا دست کیه ، به گوش دادن به این قسمت ادامه بدید.?خب ، بیایم از اینجا شروع کنیم که هوش مصنوعی اصلا یعنی چی!هوش مصنوعی یا artificial intelligence یه شاخه از علوم کامپیوتریه که هدف اصلیش اینه ماشین های هوشمندی تولید کنه که بتونه کارهایی که نیاز به هوش انسانی داره رو انجام بده ، در واقع یه حالت شبیه سازی هوش انسانی برای کامپیوتره ؛ یه ماشینی که بتونه مثل انسان فکر کنه ، عمل کنه ، یاد بگیره و مسئله حل کنه و در حال حاضر یکی از شاخه‌ های ترند کامپیوتره که خیلی هم طرفدار داره!حالا شاید براتون جالب باشه که اصلا استارت این موضوع کِی خورد:موقع جنگ جهانی دوم ، وقتی که ارتش نازی برای رمزنگاری و ارسال امن پیام ها از ماشین enigma استفاده میکردن ، یه دانشمند بریتانیایی به اسم آلن تورینگ اومد سر از کار ارتش آلمان دربیاره و کدهاشونو دیکد یا رمزگشایی کنه :) که تونستن ماشین bombe رو بسازن و این ماشین enigma رو دیکد کرد.خب ، بریم راجع به سطوح هوش مصنوعی صحبت کنیم.اگه بخوایم مته به خشخاش بزاریم کلاً به ۳ سطح تقسیم میشه:هوش مصنوعی محدود (narrow)هوش مصنوعی عمومی (general)هوش مصنوعی سوپر (super)اینا نوع نیستنا! سطحن.هوش مصنوعی محدود artificial narrow intelligenceاین سطح رو بهش weak artificial intelligence هم میگن اتفاقا ، توی این سطح هوش مصنوعی فقط از اختیارات محدود و وظایف تعیین شده استفاده میکنه ، ماشین اینجا توانایی فکر کردن ندارهمثل چی؟siri , cortana , alexa , sofia the robot , auto-carو اینا ..هوش مصنوعی عمومی artificial general intelligenceاین یکی هم یه اسم دیگه داره که strong artificial intelligence گفته میشه ، و اینجا ماشین توانایی تصمیم گیری رو پیدا میکنه و توی این برهه‌ی زمانی هوش مصنوعی عمومی وجود نداره اما پیش بینیا حاکی از اینه که به زودی میان پیشمون!مثل دستیار پزشک ، البته اینکه الان پزشکا از هوش مصنوعی استفاده میکنن برای جراحی و تشخیص بیماری یه بحثه ، اینکه یکی باشه “مثل” پزشک که دنیای اطرافشو درک کنه و ظرفیت مشابه برای انجام فعالیت ها داشته باشه یه بحث دیگست!هوش مصنوعی عمومی تا حدودی میتونه نگران کننده هم باشه البتهبه قول خدابیامرز هاوکینگتوسعه‌ی هوش مصنوعی میتونه پایان نسل بشر رو رقم بزنه چون میتونه اختیار خودشو بگیره دستش و خودشو دوباره طراحی کنه!آخری هم هوش مصنوعی سوپر artificial super intelligenceتوی این سطح توانایی کامپیوترا از آدما میزنه جلو و بهش مسلط میشن!ولی نگران نباشید ، هنوز در حد یه فرضیست.یه مقایسه‌ی کلی بخوایم داشته باشیم از این ۳ تا اینجوری میشه:هوش مصنوعی ضعیف جاییه که فعلا ما قرار داریم ، عمومی آینده ایه که میخوایم بهش بریم و سوپر آینده ایه که برای هوش مصنوعی میبینیم.یادتونه گفتم اینا نوع نیستن سطحن؟حالا اینجا میخوایم بریم سر انواع هوش مصنوعی و اونارو دسته بندی کنیم!اینم در نظر بگیرید که این دسته بندی بر اساس کاربردهاییه که دارن.۴ تا نوع دارهماشین های واکنش‌گر یا انفعالی reactive machines aiهوش مصنوعی با حافظه‌ی محدود limited memory aiمبتنی بر تئوری ذهن theory of mind aiخود آگاه self-awareماشین های انفعالی:این ماشین بر اساس دیتاهایی که داره و در نظر گرفتن حالت فعلی ای که در اون قرار داره کارشو انجام میده ، منتها مشکلش اینه که حرکاتی که میزنه رو یادش نمیمونه ، یعنی تجربه هایی که کسب کرده رو نمیتونه ازشون استفاده کنههمین باعث میشه دست و پای انفعالیا بسته بشه و فقط تو موارد خاص کاربرد داشته باشنمثل وقتی که deepblue تو دهه‌ی ۹۰ ماشین تونست گری کاسپاروف که قهرمان شطرنج بود رو شکست بده :}هوش مصنوعی با حافظه‌ی محدود:اینم از اسمش تا حدودی معلومه چجوری کار میکنه ، برعکس قبلی تجاربشو ذخیره میکنه اماااا نه برای همیشه ، برای یه مدت محدود ؛ همین باعث میشه تصمیماتش بهینه و آگاهانه باشه.مثل ماشین های خودران که از طریق سنسور هایی که دارن میتونن عابر رو تشخیص بدن ، یا لاینی که داره توش رانندگی میکنه رو عوض کنه.کلاً دیتاها رو تا زمانی ذخیره میکنه که یه تصمیمی رو بخواد تو آینده‌ی نزدیک بگیره.ماشین مبتنی بر تئوری ذهن:این نوع از هوش مصنوعی به اون صورت تحقیقات تکمیلی انجام نشده براش و هنوز دارن روش کار میکنن ولی کلاً اساسش اینجوریه که تمرکزش روی هوش هیجانی افراده تا بتونه باور ها و افکار رو بهتر درک کنه و تاثیری که هرکدوم از اینا روی تصمیم گیریه یه فرد میذاره رو متوجه بشه.این نوع از ماشین میتونه تصمیم گیری رو درک و آنالیز کنه.ماشین خود آگاه:خب این یکی هم مثل قبلی هنوز وجود نداره ، چون این ماشین باید بتونه بدون دخالت انسان تصمیم گیری انجام بده و میتونن بفهمن توی چه حالتی هستن و بر اساس دیتاهایی که از بقیه دریافت میکنن میفهمن احساس بقیه راجع بهشون چیه!!حالا راجع به اینکه ماشین ها بتونن مثل انسانها رفتار کنن آلن تورینگ که راجع بهش صحبت کردیم اومد یه تستی رو انجام داد که اسمشم گذاشت تست تورینگ و تو سال ۱۹۵۰ مطرحش کرد.تست تورینگ اینو میگه که اگه یه دیوار رو در نظر بگیریم که یه طرفش ماشین باشه و یه طرف دیگش یه انسان قرار گرفته باشه ، اگه از طریق سؤال و جوابی که بین این ۲ تا صورت میگیره آدمه نفهمه اونی که پشت دیواره یه انسانه یا ماشین ، ماشین تست رو برنده میشه!حالا جالبه بدونید کانسپت هایی که ازشون کپچا حاصل میشه ، تست تورینگ معکوسه!برای تست تورینگ ماشین باید ۴ تا ویژگی رو داشته باشه:پردازش زبان طبیعی natural language processing:که بتونه محاوره داشته باشه و ارتباط برقرار کنه.بازنمایی دانش knowledge representation:که بتونه اطلاعاتی که دریافت میکنه رو ذخیره کنهاستدلال خودکار automated reasoning:اینجا از اون اطلاعات ذخیره شده استفاده میکنه و به سؤالا جواب میده و ممکنه این وسط به نتایج‌ جدیدی هم برسه حتی!یادگیری ماشین machine learning:برای انطباق با شرایط جدید و شناسایی و استخراج الگوها تا بتونه ازشون بعداً هم استفاده کنه.خب حالا بریم سر شاخه های هوش مصنوعی:تا اینجا یه سری تئوری های لازمو گفتیم که شما یه دیدی پیدا کنید نسبت به این داستاناز اینجا به بعد میتونید یدونه از ایناروانتخاب کنید و شروع به کار کنید!البته به همین سادگی هم نیست و شما نیاز دارید که پایه‌ی ریاضی نسبتاً خوبی داشته باشید ، علی الخصوص جبر خطی و آمار و احتمال.کلی هم بخوایم نگاه کنیم پایه‌ی این قضیه روی احتماله اصلا ، پس اینایی که گفتمو در نظر بگیرید.هوش مصنوعی رو میتونیم به شاخه های زیر تقسیم کنیم:Machine learningDeep learningNatural language processingRoboticsExpert systemFuzzy logicخب دوتاشون براتون آشنا بود ، machine learning و natural language processing!یادگیری ماشین:همونطور که گفتیم یادگیری ماشین یه علمیه که ماشینا یادمیگیرن تا بتونن برای پردازش و تجزیه و تحلیل دیتا ازش استفاده کنن.چجوری؟ سیستم از دیتا ها ، دستور العملا یا تجربه ها به یه سری الگو یا pattern میرسه و بر اساس اون شروع به تصمیم گیری و‌ حل میکنهکلا هدف یادگیری ماشین اینه که بدون کمک آدما ، کامپیوترا بتونن یادگیری داشته باشن و خب ۵۳۸۲۵ تا الگوریتم های مختلف وجود داره که اینا همشون بر اساس ۳ تا الگوریتم اصلینSupervised learning یادگیری با نظارتunsupervised learning  یادگیری بدون نظارتReinforcement learning یادگیری تقویتییه توضیح مختصر بخوام بدم راجع به این الگوریتما ، فرض کنید میخواید یه جوری به ماشینتون بفهمونید که فرق قناری و خروس چیه ، یه جوری که بعداً ازش سؤال پرسیدید با درصد خطای کمی بهتون جواب درست رو بدهخبمیتونید با این ۳ تا انجامش بدیدچجوری؟با نظارت اینطوریه که شما روی عکس یا هرچیزی لیبل گذاری میکنید و میگید این قناریه ، این خروسه بعد ماشین یاد میگیره.برای بدون نظارت ما هیچ lable یا برچسبی نمیزنیم.یکی از روش های بدون نظارت که بهش مصورسازی میگن ، شما یه تعداد زیااااادی عکس میدی به ماشین ، بعد ماشین خودش بر اساس اون الگوریتمی که داره باهاش پیاده سازی میشه ساختار عکسارو پیدا میکنه و دسته بندی میکنهیادگیری تقویتی دقیقاً مثل یه کودک نوپا میمونه که شما میخواید یه چیزی بهش یاد بدید ، بعد هی ازش سوال می پرسید ،اگه درست گفت ، بهش جایزه میدید ، مثلا یه آبنبات میدید بهش میگی آفرین ، یعنی چه با جواب درست چه غلط ، مراحل یادگیریش داره تکامل پیدا میکنهاینم دقیقا همونهمنتها دیگه آبنبات نمیدی ، یه سری راه ها وجود داره ، مثلا یه پالس سیگنال میدی بهش و اون میفهمه درست جواب داده یا نه.درکل هرکدوم از این بخشا پتانسیل اینو دارن که یه پادکست جدا بشنمیتونید بهمون بگید به کدوم بخش علاقه‌ی بیشتری دارید تا قسمت بعدی راجع به همون باشه =]یادگیری عمیق:اینم اتفاقا نوعی از یادگیری ماشینه که ایده‌ی طراحیش بر اساس یادگیری ذهن و شبکه‌ی عصبی انسانه.الگوریتماشم اینطوریه که با دیتاهای کم خیلی جواب درستی نمیده بهموناصولا با حجم بالاتر دیتا عملکردشم میره بالاتر ، بنابراین برای پیاده سازیش نیاز به کارت گرافیک های قوی داریمهرچی دیتا و زمان بیشتری بهش بدیم ، جواب بهتری هم بهمون میده.پردازش زبان طبیعی:همونطوری که گفتم استفاده‌ی nlp برای محاوره‌ی بین انسان و کامپیوترههدفش اینه که زبان انسان هارو بتونه بخونه و متوجه بشهفرض کنید یه انسان با یه ماشین صحبت میکنه ، ماشین صدای انسان رو دریافت میکنه و بعدم تبدیل به متنش میکنه ، حالا میاد روی متن پردازش انجام میده و تحلیلش میکنه ، جواب رو به صوت تبدیل میکنه و‌ به انسان برمیگردونهیا مثلا توییتر توییتی که مرتبط با خشونت یا تروریسم باشه رو حذف میکنه.اینجا دیگه فقط بحث text مطرحه.رباتیک:اینم دیگه کمو بیش آشنایی دارید باهاش ، روی کارکرد روبات ها تو دنیای واقعی تمرکز میکننمثل روبات سوفیا که گفتیم بالاترتو گوگل اگه سرچ کنید راجع به روبات سوفیا چیزای باحالی میبینید!منطق فازی:اینو ساده بخوام توضیح بدم ، منطق کامپیوتر بر چه اساسیه؟ آفرین ، صفر و یک.ولی خب این منطق کامل نیست دیگه ، چونکه خیلی از مسائل کاملا قطعی نیست و میتونن حدودی باشن. واسه همین لوکاسویچ که یه فیلسوف لهستانی بود بحث منطق فازی رو آورد وسطحالا فازی لاجیک بیشتر از ۲ تا حالت میتونه داشته باشهاین متد بر اساس نظریه‌ی degrees of truth یا سطوح درستیهیعنی مثلا من به جای اینکه بپرسم:این درسته یا غلط؟میپرسم:چقدر درست یا چقدر غلطه؟اینجوری.ازش هم برای حل مشکلات پیچیده‌ی پزشکی که شامل تصمیم گیریه استفاده میشه.سیستم های خبره:این سیستم هم میتونه یاد بگیره و هم میتونه تصمیم بگیره ، برای حل مسئله ها هم از if-then logic استفاده میکنندرکل گفتیم هدف هوش مصنوعی اینه که هوش انسانی رو بتونه شبیه سازی کنه دیگهحالا سیستم خبره الگوهای منطقی که یه متخصص انسانی بر اساس اونا تصمیم میگیره رو‌ شناسایی میکنه و بعدش بر اساس اون الگوها مثل انسان تصمیم میگیرهتو چه زمینه هایی کاربرد دارن؟تشخیص عیب خودرو ، تشخیص بیماری ، کنترل وضعیت بیمار و..جالب اینجاست که سیستم خبره میتونه با منطق فازی درهم تنیده بشه و اصلا یه چیز عجیب غریبی از کار در میادخب اینم از این.فکرکنم تا همینجا هم خیلی طولانی شد ، اگه علاقه مند بودید قسمتای بعدی سرکی رو همین فرمون با هوش بریم جلو ، که قسمت بعدی باشه چجوری و از کجا شروع کنیمکدوم فیلدو انتخاب کنیمبا کدوم زبانچگونهچطور..فایل pdf کتاب آقای راسل هم تو کانال تلگراممون همراه با این پادکست براتون گذاشتیم ، کتاب رفرنس هوش مصنوعی این کتابه ؛خلاصه این قسمتم تموم شد ، اگه فکرمیکنید ممکنه به درد کسی بخوره مارو بهش معرفی کنید.خدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Sun, 03 Jan 2021 20:20:23 +0330</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر (قسمت چهارم)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%82%D8%B3%D9%85%D8%AA-%DA%86%D9%87%D8%A7%D8%B1%D9%85-j8xdbl68kmm9</link>
                <description>.سلاامامروز حالتون چطوره؟انچه در ادامه میخونید متن پادکست ما هست کی میتونید از اینجا گوش بدید همچنین میتونید مارو از اینجاها دنبال کنید. https://castbox.fm/episode/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1(%D9%82%D8%B3%D9%85%D8%AA-%DA%86%D9%87%D8%A7%D8%B1%D9%85)-id2716424-id332336567?country=us سلام.حالتون چطوره؟اینجا که اینترن پلاس پلاسه.توی اینترن پلاس پلاس ما سعی می‌کنیم تجربه های شخصی خودمون رو با منابع علمی قاطی کنیم و چیزایی بهتون بگیم که توی راه برنامه نویس بهتری شدن کمکتون کنه و سردرگمی شمارو کم کنه.الانم  شما دارید به چهارمین قسمت سفر به اعماق کامپیوتر گوش میدید.سفر به اعماق کامپیوتر هم یکی از سری پادکست های ماست که توش اصطلاحت فنی رو تعریف میکنیم.اگه قسمت های قبلی این سری رو گوش نکردید اونارو هم گوش کنید.توی این قسمت من که فلانی ام با فلانیمون میخوایم در مورد لایبری و فریمورک که قبلا چند بار قولش رو داده بودیم صحبت کنیم و در بخش دوم پادکست هم میریم سراغ شی گرایی.«موزیک»خوب اول از همه میریم سراغ code reusability که ینی قابلیت استفاده ی مجدد از کد.دیگه اگه مارو دنبال کرده باشید میدونید که ما مستقیم نمی‌ریم سر اصل داستان.خیلی اصولی و ریشه ای میریم جلو که قشنگ مطلبو جا بندازیم.تعریف راحت ترش اینه که کدی که شما مینویسی چقدر راحته که ازش دوباره بتونی استفاده کنی؟برای مثال ما توی اکثر زبون های برنامه نویسی یه چیزی به اسم تابع داریم.شما وقتی یه تابع مینویسید در واقع دارید یه تیکه کُد reusable می‌نویسید که از جاهای مختلف برنامه میتونید صدا بزنیدش و ازش استفاده کنید. که این خیلی خوبه و خیلی کمک میکنه. که کد نوشتن براتون راحت تر بشه و مجبور نباشید کد های تکراری مشابه هم رو جاهای مختلف برنامه بنویسید.تازه اینجوری اگه اون تابع باگ داشته باشه رفع کردنش خیلی راحت تره تا اینکه بخواید برید ده جای برنامه دونه دونه اصلاح کنید. و این دونه دونه اصلاح کردن ها علاوه بر وقتی که ازتون میگیره احتمال خطا رو هم بالا میبره و قطعا یه روز گندش در میاد.از ما گفتن بود.حالا این تابع که گفتیم یه سطح پایینی از reusability هست. بعد از اون سوال بعدی که میتونید از خودتون بپرسید اینه که آیا من میتونم این تابع رو کپی پیست کنم تو یه برنامه ی دیگه ام ازش استفاده کنم؟قبل از جواب دادن به این سوال میریم سراغ مفهوم دیگه ای به اسم dependency یا وابستگی.جواب این سوال دقیقا تو همینه.ینی باید از خودتون بپرسید که چیزای مورد نیاز برای اجرا شدن تابع من چقدر وابسته به برنامه ی منه.اگه خیلی وابسته به برنامه شما باشه نمیتونید زارتی بدون هیچ تغییری کپی پیست اش کنید تو یه پروژه ی دیگه اتون و ازش استفاده کنید و نیاز به یسری تغییرات داره که توی پروژه ی جدیدتون درست کار کنه.و اینینی کدی که نوشتید خیلی هم reusable نبوده.و توی هر پروژه ای که توش اون تیپ کار نیاز باشه مجبورید یه تایمی رو برای تغییر دادن و هماهنگ کردن اون تیکه کدتون با پروژه ی جدیدتون کنار بزارید.حالا فرض میکنیم که شما یه تابعی نوشتید که به پروژه ی شما هیچ وابستگی نداره یا ساده تر بگیم مستقل از پروژه ی شماست.حالا به راحتی میتونید بدون هیچ تغییری کپی پیست اش کنید جاهای دیگه و ازش استفاده کنید.اینجوری میتونید ادعا کنید که کد های reusable تری نوشتید.آفرین ?اما اگه پاتون رو یه قدم فرا تر بزارید چی؟«پیش به سوی بینهایت و فراتر از آن»حالا همه ی اینا رو گفتیم که برسیم به تعریف لایبری.ببینید یه لایبری یه تیکه کده از پیش نوشته شده ی مستقل هست که شما میتونید اونو به برنامه اتون اضافه کنید و ازش استفاده کنید.حتی تو زبون های کامپایلی این کد ها به صورت کامپایل شده در اختیار شما قرار میگیرن و اینجوری حتی کامپایلر شما زحمت کامپایل کردن اون لایبری هم گردنش نیست.«با صدای یواش»اگه نمیدونید زبون کامپایلی چیه باید پاشید برید قسمت های قبلی ما رو به ترتیب گوش کنید بیاید.«بی صدای یواش»خلاصه که لایبری دیگه آخرت reusability عه.?حالا بریم به چند تا سوالی که ممکنه تو ذهنتون ایجاد شده باشه جواب بدیم.این لایبری هارو از کجا میتونیم گیر بیاریم؟بسته به زبان برنامه نویسی که دارید استفاده میکنید راه های مختلفی میتونه وجود داشته باشه. مثلا اگه یه لایبری میخواید که تو مثلا java فلان کار رو بکنه برید تو گوگل سرچ کنید:folan kar library for javaحتما اگه لایبری برای اون کار وجود داشته باشه آموزش نصب و استفاده ازش هم وجود داره.البته خیلی مواقع هم لایبری ها نوشته میشن ولی در اختیار عموم قرار نمیگیرن و مثلا فلان شرکت یه لایبری نوشته که فقط خودش استفاده کنه.تازه یسری لایبری هم هستن که پولی ان.آیا منی که دارم این پادکست رو گوش میدم میتونم لایبری بنویسم؟منی که دارم این پادکست رو ضبط میکنم که میتونم. پس تو ام میتونی. ولی اگه نوشتی در اختیار عموم قرارش بده که بقیه هم استفاده کنن. هر چی آدمای بیشتری ازش استفاده کنن reusable تره?.در کل لایبری ها اندازه های خیلی مختلفی دارن یه لایبری ممکنه صد ها هزار خط کد باشه و یه لایبری دیگه چار تا تابع کوچولو باشه.اگه خواستید یه لایبری بنویسید هم برید سرچ کنید ببینید توی زبان برنامه نویسی که کار میکنید راه اصولی برای نوشتن لایبری و منتشر کردنش چیه.توی لایبری که مینویسم میتونم از لایبری های دیگه استفاده کنم؟!بله یه لایبری میتونه به لایبری های دیگه وابستگی داشته باشه. حالا جالب میشه اگه اون لایبری ها هم باز به یسری لایبری دیگه وابستگی داشته باشن و تازه اون یکی…&lt;two hours later&gt;اونا هم باز به یسری لایبری دیگه وابسته باشن.حالا شما میتونید یه درخت وابستگی یا dependency tree رو تصور کنید. که برای اینکه یه لایبری کار کنه نیاز هست که تمام شاخه ها و برگ های درخت هم نصب بشن.و این وظیفه توی خیلی از زبون های برنامه نویسی به عهده ی package manager هاست.این package manager ها این درخت وابستگی رو درک میکنن و وقتی شما میاید یه لایبری رو نصب کنید میرن همه ی وابستگی هاش رو دانلود و نصب میکنن.«خیلی ممنون معروف»حالا جالبه بدونید یکی از چیزایی که باعث میشه یه زبون برنامه نویسی پیشرفت کنه و محبوب بشه لایبری هایی هست که برای اون زبون نوشته شده.مثلا میگن پایتون توی هوش مصنوعی زبون قدرتمندیه و دلیلش اینه که لایبری های خفنی تو این زمینه براش نوشته شده.اما بریم سراغ فریم ورک.ببینید فریم ورک یه چیزی تو مایه های لایبریه.بعضی جا ها میگن مجموعه ای از لایبری هاست.در کل مثل لایبری کد های از پیش نوشته شده و مستقله ولی نحوه ی استفاده اش فرق میکنه.یه فریم ورک با خودش ساختار میاره و شما رو مجبور میکنه که توی ساختار اون کد بزنید.ینی توی لایبری جریان اجرا شدن برنامه دست شماست و هر جا لازم بدونید لایبری هارو صدا میکنید.ولی توی فریم ورک جریان اجرا شدن دسته فریم ورکه و این فریم ورکه که کد هایی که شما نوشتید رو صدا میزنه.بنابراین شما راحت میتونید وقتی وسط یه پروژه هستید یهو میبینید یه لایبری نیاز دارید همون لحظه به پروژه استون اضافه اش کنید ولی فریم ورک اینطوری نیست و معمولا باید اول پروژه برای خودتون مشخص کنید که میخواهید از چه فریم ورکی استفاده کنید و معمولا هم نمیشه چند تا فریم ورک رو که همشون توی یه زمینه کاربرد دارن رو همزمان استفاده کرد چون جریان اجرا شدن اون ها با هم متفاوته و خلاصه اصلا جور در نمیاد.نمیگم غیر ممکنه ولی شتر گاو پلنگ میشه.نکته ی بعدی اینه که شما بین دوراهی فریم ورک و لایبری قرار ندارید و وقتی از یه فریم ورک استفاده میکنید همچنان میتونید لایبری ها رو هم به برنامه اتون اضافه کنید و مشکلی از این نظر ندارید.بعضی موقع ها هم مرز باریکی بین لایبری بودن و فریم ورک بودن وجود دارد و بعضی چیزا هستن که بعضیا بهشون میگن فریم ورک و بعضیا میگن لایبری اینا اینجوری ان که بخشی از جریان اجرا رو دست میگیرن و بخشی رو به عهده ی خودتون میزارن واسه همین آدما گیج میشن که به اینا چی بگن.خلاصه که سخت نگیرید به اینا.امیدوارم که پادکست امروز ما هم براتون مفید بوده باشه.خیلی مهمه که مارو به دوستاتون معرفی کنید.ما به این حمایت شما نیاز داریم تا بتونیم با قدرت تر ادامه بدیم.مارو میتونید از جاهای مختلفی دنبال کنید.تلگرام و اینستاگرام کست باکس و ویرگول و خیلی جاهای دیگه.و آدرس همه اینا توی سایت ما به ادرس internplusplus.ir هست.از هر جایی که دوست داشتید مارو دنبال کنید.تا اپیزود بعدی و یه آموزش دیگه خدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Mon, 30 Nov 2020 22:20:59 +0330</pubDate>
            </item>
                    <item>
                <title>فرق وبسایت های داینامیک و استاتیک چیست؟</title>
                <link>https://virgool.io/intern-plus-plus/%D9%81%D8%B1%D9%82-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%DB%8C%D9%86%D8%A7%D9%85%DB%8C%DA%A9-%D9%88-%D8%A7%D8%B3%D8%AA%D8%A7%D8%AA%DB%8C%DA%A9-%DA%86%DB%8C%D8%B3%D8%AA-so0fojpes7hc</link>
                <description>سلام.چطورید؟توی این پست فرق بین وبسایت های static و dynamic رو با رسم شکل برسی کردیم. که توی پادکست قبلی در موردش صحبت کرده بودیم.هدف ما اینه که شما بفهمید ایده ای که میخواید پیادش کنید کدومه راه پیاده سازیش رو پیدا کنید. اگر هم پیدا نکردید بپرسید. از اینجا ها میتونید با ما در تماس باشید.مارو از اینجاها دنبال کنید.پایدار باشید?✋.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Sun, 08 Nov 2020 11:33:40 +0330</pubDate>
            </item>
                    <item>
                <title>سرکی به دنیای برنامه نویسی (وب)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D8%B1%DA%A9%DB%8C-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%88%D8%A8-apzbu1imcqgl</link>
                <description>.سلاامامروز حالتون چطوره؟انچه در ادامه میخونید متن پادکست ما هست کی میتونید از اینجا گوش بدید https://castbox.fm/episode/سرکی-به-دنیای-برنامه-نویسی(وب)-id2716424-id316631781?utm_source=website&amp;utm_medium=dlink&amp;utm_campaign=web_share&amp;utm_content=%D8%B3%D8%B1%DA%A9%DB%8C%20%D8%A8%D9%87%20%D8%AF%D9%86%DB%8C%D8%A7%DB%8C%20%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%20%D9%86%D9%88%DB%8C%D8%B3%DB%8C(%D9%88%D8%A8)-CastBox_FM اینجا اینترن پلاس پلاسه و شما دارید به دومین قسمت سرکی به دنیای برنامه نویسی گوش میدیدتوی اینترن پلاس پلاس ما سعی میکنیم منابع علمی رو با تجربه ی شخصی خودمون قاطی کنیم و چیزایی بهتون بگیم که تو راه برنامه نویس بهتری شدن به شما کمک کنه و سردرگمی شما رو کم میکنه.توی سری پادکست سرکی به دنیای برنامه نویسی هم هر قسمت یه رشته ی برنامه نویسی رو با هم برسی میکنیم و توی این قسمت من که زهرا ام با علی مون  قراره بریم سراغ وب و مسیر برنامه نویس وب شدن رو بهتون نشون بدیماول میریم سراغ تعریف وب:وب یا world wide web یا www یه سیستم اطلاعاتیه که اسناد و یسری منابع دیگه هستن که هر کدوم یه آدرس منحصر به فرد دارن که بهش Uniform Resource Locators یا URL میگن که این منابع از اینترنت قابل دسترسی ان‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌مثلا شما تو بخش آدرس مرورگرتون یه URL وارد میکنید و اینتر رو میزنید مرورگرتون میره اون چیزی که url بهش اشاره میکنه رو پیدا میکنه , دانلود میکنه و به شما نشون میده.که میتونه یه صفحه ی وب باشهحالا بریم ببینیم که این صفحه های وب که ساختنشون کار برنامه نویس های وبه چطوری ساخته میشن.یه صفحه ی وب در کل سه تا بخش میتونه داشته:بخش اول: content یا محتواشه که با زبون HTML مینویسن و میشه توش متن و لینک و عکس و ویدیو و یسری input و دکمه و خیلی چیزای دیگه گذاشت که میشه به اسکلت صفحه ی وب تشبیهش کردبخش دوم: presentation یا نحوه ارائه شه که میتونه اندازه و نحوه قرارگیری و بقیه مشخصات ظاهری اون محتوا رو مشخص کنه که با زبون CSS مینویسنش که میشه به پوست صفحه ی وب تشبیهش کردبخش سوم: هم behavior یا رفتار صفحه اس که یعنی میشه یه عملکردی رو برای صفحه تعیین کرد و با زبون JavaScript  مینویسنش که میشه به عضله ی صفحه ی وب تشبیهش کردمثلا یه صفحه ی لاگین رو در نظر بگیریدمثلا با html میتونیم بگیم که دو تا ورودی داریم که میشه توش برای username و متن نوشتpassword و یه دکمه داریم که اگه بزنیم لاگین میکنه.بعد توی css میگیم هر کدوم از این آیتم های تو صفحه چه شکلی و چه رنگی باشن و کجای صفحه باشنو در نهایت توی javascript میتونیم بگیم وقتی روی دکمه ی لاگین کلیک شد این دستورالعمل ها اجرا شهااااااااااااااااااااااااااااااپس اینجا میتونیم نتیجه بگیریم که بین این سه تا زبون فقط زبون جاوا اسکریپته که زبون برنامه نویسیه و میشه باهاش دستورالعمل نوشت و با اون دوتای دیگه نمیشه.در مجموع یه برنامه نویس وب حداقل باید این سه تا زبون رو بلد باشه تا بتونه یه صفحه ی وب رو بسازه هر چند که یک سری سایت ها شاید به همش نیازی نباشهبرای یادگیریه این سه تا زبون آموزش های فارسی و غیر فارسی و رایگان و پولی تو اینترنت ریخته و برای اجرای این زبونا تنها چیزی که لازم  دارین فقط یه مرورگرهمون طور که توی سفر به اعماق کامپیوتر گفتیم قاعدتا اینجا شما نیاز به یک ide یا text editor دارید که باهاش بتونید فایل های html و css و js تون رو ادیت کنید که ما یه پست هم گذاشتیم و چند تا ide و text editor رو معرفی کردیم که میتونید از اونا هم استفاده کنید ولی برای دیدن نتیجه ی اجرا شدن کدتون باید فایل هایی که نوشتید رو با مرورگر باز کنید.بعد از اینکه اینا رو یاد گرفتید. در قدم بعد میتونید خیلی چیزای دیگه ای رو یاد بگیریدمثلا یسری فریم ورک برای css داریم که معروف ترینش bootstrap هه که خیلی هم چیز خوبیهو کلی فریم ورک جاوا اسکریپت داریم مثل react , angular , vue.js و خیلیای دیگه که توی پروژه های بزرگتر میتونید از اونا استفاده کنید و خیلی به شما کمک میکنن.و از مزایای استفاده از این فریم ورک ها بخوایم بگیم. اینه که یه چارچوبی رو برای شما فراهم میکنه ، شما هم با اضافه کردن یه سری کد کامل ترش می کنید ؛ یعنی لازم نیست کد زدن رو از صفره صفر شروع کنید و میتونید کد-استایل ثابتی رو توی همه ی پروژه هاتون داشته باشید.اگر معنی فریم ورک و لایبری رو نمیدونید اشکال نداره. یا برید سرچ کنید یا وایسید که قسمت بعدی در موردشون صحبت کنیم.به قول ممد:&lt; اگر جایی رو نگران شدید متوجه نشید &gt;حالا بعضیا هم هستن میگن ما فریم ورک vanilla js کار میکنیم.کهدر واقع دارن جک میگن. ?در واقع vanilla js کار ها اعتقاد دارن که خود جاوااسکریپت آنقدر کامل و خوب هست که نیازی به استفاده از فریم ورک های دیگه نیستحتی یه نفر برای vanilla js یه سایت ساخته که وقتی میرید توش میتونید فریم ورک vanilla رو دانلود کنید.که یه فایل خالیه. ?و منظورش هم اینه که شما به چیزی بیشتر از خود جاوااسکریپت نیازی نداریددر کل این اصطلاح بیشتر یه جک عه ولی جدای از شوخی طرفدار های خودش رو داره و از مزیت هاش بخوایم بگیم اینه که پروژه ی شما تا جایی که ممکنه سبک میشه چون هیچ چیز اضافه ای در کار نیست و این میتونه تو سرعت لود شدن صفحه ها تاثیر بزاره و انعطاف بیشتری هم دارید توش و با هر استایلی بخواید میتونید کد بزنید و محدودیتی ندارید. و در نهایت موقع توسعه دادن هم درگیر ابزار های زیادی نیستید و این ینی دردسر کم تر.ولی بیشتر آگهی های استخدامی که از شرکت ها میبینیم معمولاً web developer هایی میخوان که یکی از اون سه تا فریم ورکی که بالا تر گفتیم ینی (انگولار یا ویو یا ری اکت) رو بلد باشن. یکی از دلیل هاشم اینه که همون طور که گفتیم اون فریم ورک ها کد استایل ثابتی دارن. و مثلا اگه یکی استعفا بده شما بخواید برید جاش کار کنید راحت تر سر در میارید از کد های اون بنده خدا.از مزیتای  گفتیم vanilla js که به خاطر انعطافش هر کی هر جور میخواد کد میزنه ولی اینکه شما بخواید از کد های بقیه سر در بیارید یکم سخت میشه. و علاوه بر اون باز به خاطر انعطاف زیاد شما اگر نظم و وسواس رو نداشته باشید ممکنه کد هاتون خیلی پیچیده و به اصطلاح فنی اسپاگتی بشه تا جایی که خودتون هم نفهمید چی کار کردید.خلاصه که ما نمیخوایم بگیم کدوم بهتره و کدوم بدتره.اینترن پلاس پلاس یه پادکسته بی طرفه. :)))اون دیگه تصمیمش با شماست.کنار همه‌ی اینا کلی لایبری داریم که میتونید استفاده کردن ازشون رو یاد بگیرید مثلا anim.js که یه لایبری برای انیمیشن دادن به المان های صفحه اس و خیلی لایبری های دیگه که هر کدوم واسه یه کار خاصی کاربرد دارن و شما ممکنه تو پروژه اتون از اونا لازم باشه که استفاده کنید.و جدای از همه ی اینا به جز این سه تا زبون ما زبون های دیگه ای هم داریم که میشه ازشون برای طراحی و ساخت صفحات وبسایت ها ازشون استفاده کرد. ولی نکته ی مهمه اینه که همه ی اون زبون ها باید در نهایت تبدیل شن به این سه تا چون مرورگر فقط این سه تا زبون رو ساپورت میکنه.مثلا یه زبون داریم به اسم تایپ اسکریپت که علی خیلی دوسش داره و تبدیل میشه به جاوا اسکریپت و مستقیم قابلیت اجرا روی مرورگر هارو نداره.البته یه پروژه هایی مثل web assembly هم وجود دارن که با استفاده از اون ها میشه با زبون های دیگه ای هم برای مرورگر ها برنامه نوشت. ولی در لحظه ای که ما داریم این پادکست رو ضبط میکنیم هنوز خیلی جا نیفتادن و به نظر نمیاد که بتونن به راحتی جایگزین این تکنولوژی هایی که گفتیم باشن. نهایتا میتونن به عنوان یه آپشن در کنار این چیزایی که گفتیم استفاده بشن.بنابراین شما الان دیگه مسیر رو تا حدودی فهمیدید چیهو خوشبختانه چون این تکنولوژی ها خیلی ساله که هستن باعث شده که ادما کلی وقت داشته باشن که براش اموزش و ابزار و هر چیزی که شما نیاز داشته باشید رو آماده کنن.و اصولا هم تقاضای خوبی داره مخصوصا اگه یکی از فریم ورک های جاوا اسکریپت که گفتیم مثل angular , react , vue.js رو خوب بلد باشید رو زمین نمی مونید :)حالا شاید چند سال از تولید این پادکست گذشته باشه فریم ورک های دیگه ای رو بورس باشن ولی الان اینا رو بورس ان مخصوصا تو ایران الان react خیلی رو بورسه.ولی اگه چند سالی از تولید این پادکست میگذره میتونید برید تو وبسایت هایی که آگهی استخدام دارن آگهی هارو ببینید که کدوم مهارت هارو بیشتر میخوان و برید اونا رو یاد بگیرید.شاید از لهن من فکر کنید که با آخر پادکست رسیدیم.ولی نهنرسیدیمتازه وسطش ایمچون هر چی که تا اینجا گفتیم مربوط بود به front end وب.در واقع تعریف فینیش اینه که front end وب به جایی از وبسایت میگن که کاربر میبینه که میشه ظاهر وبسایت.و تا اینجای کار هم ما همش گفتیم ساختن و طراحی کردن صفحه های وب.در صورتی که یه وبسایت به جز صفحه هاش و بخش ظاهریش ممکنه بخش های دیگه هم داشته باشه.دقت کردید؟ گفتم ممکنه. ینی شاید خیلی وبسایت ها هم فرانت اند خالی باشن و با همین چیزایی که گفتیم کارتون راه بیوفته.ولی بخش دیگه ای که در کنار front end هه بهش میگن backend یا برنامه نویسی سمت سرور که میتونه از طریق یه web api وصل بشه به front end و یسری اطلاعات رو رد و بدل کنه.که تا حدود خوبی تو قسمت قبلی سفر به اعماق کامپیوتر از نظر فنی برسیش کردیم.حالا هم میریم یه موزیک گوش بدیم بیایم در مورد back end صحبت کنیم.حالا بریم سراغ بحث شیرین back end یا برنامه نویسی سمت سرورکه همانطور که از اسمش تابلوعه برنامه ای که backend developer مینویسه قراره توی سرور اجرا بشه و نه توی مرورگر کاربر و هیچ جای دیگه.در واقع برنامه ای که روی سرور اجرا میشه وظیفه ی اصلیش اینه که درخواست های کاربر هارو جواب بده حالا این درخواست ها میتونن یه صفحه ی وب رو درخوات کنن و یا یه اطلاعاتی رو یا هر چیز دیگه ای رو.حالا این درخواست ها از کجا میان؟از برنامه هایی که روی دستگاه های کاربر ها دارن اجرا میشن. که یه بخشیشون برنامه هایی هستن که front end developer اونا رو نوشته و روی مرورگر کاربر دارن اجرا میشن.حالا بریم سراغ مسیر یادگیری back endشما با خیلی زبون ها میتونید برنامه نویسی سمت سرور بکنید و عملا محدودیتی ک تو front end بود رو ندارید.مثلاJava , php , c# , Ruby , python , javascript , go langزبون های خیلی معمولی هستن برای برنامه نویسی سمت سرور.که فقط یکیشون رو هم یاد بگیرید کافیه برای این که کارتون راه بیفته.حالا چرا این زبون ها برای برنامه نویسی back end توصیه میشن؟چون یک سری فریم ورک های قدرت مندی برای این زبون ها نوشته شده که کار با این زبون هارو برای برنامه نویسی backend خیلی راحت میکنن.مثلا: php لاراول رو داره و java اسپرینگ رو داره و ruby روبی ان ریلز رو داره و python جنگو رو داره و javascript اکسپرس رو دارهکه اینا که گفتم از معروف ترین فریم ورک های توسعه ی برنامه های سمت سرور ان و کلی فریم ورک دیگه هم هستن.حالا کاری که شما برای backend developer شدن باید انجام بدید اینه که یکی از این فریم ورک هارو به اضافه ی زبونش مسلط بشید تا بتونید برنامه های سمت سرور رو بنویسید و درخواست هارو جواب بدید.اماااااااابرنامه نویسی سمت سرور در کنار این چیزایی که گفتیم به دانش فنی زیادی نیاز داره. و شما در کنار اینا باید کلی چیز دیگه هم بدونیدمثلا معمولا نیازه که شما کار با دیتابیس رو هم خوب بلد باشید چون برای جواب دادن خیلی درخواست ها باید برنامه ی شما یکی از چهار عمل اصلی رو روی دیتابیس اعمال کنه.و باید الگوریتم ها رو هم خوب بشناسید. هر چی از الگوریتم های بهینه تری استفاده کنید میتونید محاسبات تون رو سریع تر کنید و در نهایت سریع تر جواب درخواست های کاربر هارو بدید و در نهایت به درخواست کاربر های بیشتری بتونید توی یه زمان مشخص جواب بدید. و این داستان مهم تر میشه وقتی که حجم داده های دیتابیس بالا میره چون هر چی ورودی بیشتر باشه برنامه کند تر میشه و اهمیت الگوریتم بهینه تر اونجا معلوم میشه. البته که در همین حین باید حواستون به مصرف RAM هم باشه چون سرور هم یه مقدار محدودی رم داره.در کنار این ها شما باید امنیت داده هاتون رو هم حفظ کنید که هر کسی نتونه به بخش هایی که بهش مربوط نیست دسترسی پیدا کنه یا بخواد خراب کاری کنه. بنابراین باید مفاهیم اولیه ی امنیت رو بدونید و در کنارش انواع حملات رو بشناسید که بتونید جلوشون رو بگیرید.و در نهایت خیلی چیزای دیگه هم مثل شبکه و سیستم عامل هست که دیگه طولانی میشه پادکست مون اگه بخوایم همه رو بگیمو در کل مسئولیت بیشتری هم به دوش برنامه نویس back end هست چون خیلی مهمه که سرویس بک اند امن و پایدار بتونه به کار خودش ادامه بده که اگه اینطور نباشه اوضاع خیلی بی ریخت میشه.و در کنار همه اینا شاید لازم باشه که شما آشنایی هم با فرانت اند داشته باشید.و در نهایت اینم بگیم که یه عده هستن که هر دو بخش front end و back end رو تسلط دارن که بهشون میگن full stackینی یه تنه میتونن جفت طرف هارو توسعه بدننکته ی دیگه هم که اینجا وجود داره اینه که بعضی از وبسایت ها اصلا نیازی به backend ندارن و فقط یه ظاهری دارن یا نهایتا یسری کد که همون سمت کلاینت اجرا میشن.مثلا من یه وبساتی دارم که رزومه ی خودم رو و لینک های شبکه های اجتماعی خودم رو گذاشتم توش.قاعدتا نیازی به برنامه نویسی back end ندارهیا مثلا شما یه اپلیکیشنی نوشتید یه وبسایت میزنید تو وبسایت از قابلیتاش و اینجور چیزا حرف زدید و یدونه هم لینک دانلود گذاشتیداونم باز نیازی به بک اند نداره.ولی اگه بخواید یه شبکه اجتماعی یا فروشگاه یا هر وبسایتی که نیاز داره که ملت بیان توش اکانت بسازن یا هر گونه پردازشی سمت سرور داره قاعدتا نیاز به backend دارید.حالا یه نکته ای هستوبسایت هایی که نیاز به backend ندارن چجوری درخواست هاشون رو جواب میدن؟جواب این سوال اینه که یسری برنامه هستن که بهشون میگن web server که مثلا:Apache , IIS , ngnix , ….مثال هاشن و این برنامه ها اینطوری ان که شما فقط فایل های برنامه ی front end تون رو که با html , css ,js نوشتید رو میدید به این ها و این ها میان فایل هاتون رو اصطلاحا serve میکنن. یعنی اگه کسی درخواست داد در جواب صفحاتی که طراحی کردید رو میفرستن.البته که بعضیاشون قابلیت های خفن تری هم دارن.و در نهایت یسری چیز دیگه هم هستن که بهشون میگن CMS که یعنی Content managment system که با کمک اینا با حداقل دانش برنامه نویسی میتونید یه وبسایت رو بیارید بالا.این تیپی کار میکنن که مثلا شما wordpress رو نصب میکنید و با توجه به نیاز وب سایتتون یه سری پلاگین هم روش نصب میکنید یه قالب هم یا میخرید یا خودتون مینویسید یا رایگان دانلود میکنید و روش نصب میکنید و وبسایت بتون آماده میشهکه انعطاف خیلی کم تری دارن نسبت به اینکه خودتون بخواید از صفر بنویسید backend , front end وب سایتتون رو ولی خوب یه راه حل خیلی سریع و ارزون میتونن باشن.خیلی ها هم هستن که با نوشتن پلاگین و قالب برای این CMS ها کسب درامد میکننحرف اخراین قسمت پادکست ما هم تموم شد.امیدوارم که براتون مفید بوده باشهتو قسمت های بعدی سعی میکنیم که بحث رشته های دیگه ی برنامه نویسی رو براتون باز کنیم که در نهایت هم آشنا باشید هم اگه میخواید رشته ی خودتون رو پیدا کنید راحت تر این کارو بکنید.مارو از جاهای مختلفی میتونید دنبال کنید. میتونید تو وبسایتمون که internplusplus.ir هست لینک شبکه های اجتماعی دیگه ی مارو ببینید. مثلا توی ویرگول متن این پادکست هامون رو میزاریم و توی تلگرام فایل صوتی پادکست هامون رو میزاریم و توی چنتا از اپلیکیشن ها پادکستی مثل کست باکس و انکر هم هستیم.از همه اینا مهم تر اینکه مارو به کسی که فکر میکنید براش میتونه مفید باشه این پادکست هامون معرفی کنید.مطمئن ام اگه الان یه نگاهی به دور و برتون بندازید میبینید که یسری تازه کنکور دادن میخوان انتخاب رشته کنن و یا دبیرستانی ان ولی نمیدونن چی کاره میخوان بشن و یا دانشجوی نرم افزار هستن.خیلی این معرفی کردن شما برای ما مهمه.با تشکرخدافظ.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Fri, 16 Oct 2020 20:57:14 +0330</pubDate>
            </item>
                    <item>
                <title>پشت صحنه</title>
                <link>https://virgool.io/intern-plus-plus/%D9%BE%D8%B4%D8%AA-%D8%B5%D8%AD%D9%86%D9%87-gqmpqzn5hs49</link>
                <description>پشت صحنه پادکست هامونبه مناسبت روز پادکست یه میکسی از پشت صحنه پادکست هایی که تا الان ضبط کردیم گذاشتیم که دور هم یکم بخندیم.? https://castbox.fm/episode/backstage-id2716424-id312045254?utm_source=website&amp;utm_medium=dlink&amp;utm_campaign=web_share&amp;utm_content=backstage-CastBox_FM مارو هم میتونید از اینجا ها دنبال کنیدinternplusplus.irکدومش از همه بامزه تر بود؟</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Thu, 01 Oct 2020 10:54:03 +0330</pubDate>
            </item>
                    <item>
                <title>تفاوت های TCP و UDP</title>
                <link>https://virgool.io/intern-plus-plus/%D8%AA%D9%81%D8%A7%D9%88%D8%AA-%D9%87%D8%A7%DB%8C-tcp-%D9%88-udp-qgcruvsjdblf</link>
                <description>سلام! حالتون چطوره؟تفاوت پروتکل های TCP و UDP با رسم شکل! اینم یه شوخی که دیگه کامل براتون جا بیوفته:همین :)مثل همیشه لازمه بگم که مارو میتونید از اینجا ها دنبال کنیدپایدار باشید.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Fri, 11 Sep 2020 22:38:30 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر (قسمت سوم)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%82%D8%B3%D9%85%D8%AA-%D8%B3%D9%88%D9%85-t4lmsdacij6r</link>
                <description>سلامحالتون چطوره؟این متن زیر در واقع متن پادکست ما هست و اگه گوش کردن رو به خوندن ترجیح میدید میتونید از اینجا ها پادکست مارو پیدا کنیداینجا اینترن پلاس پلاسه و شما دارید به سومین قسمت سری سفر به اعماق کامپیوتر گوش میدید.پیشنهاد میکنم که اگه قسمتای قبلی رو گوش نکردید اول برید اونا رو گوش کنید.چون سری سفر به اعماق کامپیوتر ما حالت سریالی داره اینجوری نیست که بیایم اخبار روز و این جور چیزا رو بگیم.از پایه اومدیم مفاهیمی که لازمه برای برنامه نویس شدن رو میگیم.و توی این قسمت من که ممد ام با  زهرامون در مورد اینا صحبت میکنیم.1. حافظه و دیتابیس2. شبکه و اینترنتحافظه و دیتابیسخوب بریم یکم در مورد حافظه صحبت کنیم.ببینید ما دو نوع کلی حافظه داریم.حافظه اصلی یا primary memory.و حافظه ی ثانویه یا secondary memoryحافظه اصلی یا primary memory خودش از چند دسته ی ram , rom و… تشکیل میشه که در مورد ram تو قسمت یک سری سفر به اعماق کامپیوتر صحبت کردیم.گفتیم ram یه حافظه ایه که برنامه ها برای اجرا شدن بهش نیاز دارن و متغیر ها  و غیره روی اون ذخیره میشن.اما یه نکته ای در مورد ram وجود داره.اونم اینه که وقتی یه برنامه تموم میشه یا کرش میکنه یا به هر دلیلی از حالت اجرا خارج میشه حافظه ای که گرفته بوده رو آزاد میکنه تا برنامه های دیگه بتونن از فضایی که آزاد شده استفاده کنن.پس اگه داده ای توی ram مثلا در قالب یه متغیر ذخیره کرده باشیم با بسته شدن برنامه و دوباره باز کردنش نمیتونیم بهش دسترسی داشته باشیم.پس اینجا میفهمیم که نیاز به یه نوع حافظه ی دیگه داریم که بعد از بسته شدن برنامه یا حتی خاموش شدن کامپیوتر همچنان دیتا های مارو بتونه نگه داره که اینطوری دفعه دیگه که برنامه رو باز میکنیم به اون دیتا یی که سری قبلی ذخیره کرده بودیم دسترسی داشته باشیم.و اینجاست که سراغ نوع دوم حافظه ها که حافظه ی ثانویه یا secondary memory هستن میریم. که مثلا hard drive ها cd ها ssd ها و فلش درایو ها و حافظه های این تیپی از نوع secondary memory اند. که مثل حافظه های نوع اول نیستن که با تموم شدن برنامه یا قطع برق یا خاموش کردن کامپیوتر و… دیتای توشون از بین بره.پس برای دیتا هایی که دوست داریم نگهشون داریم که دفعه بعد که برنامه باز میشه ازشون استفاده کنیم به نظر گزینه ی خوبی میان.حالا این داده ها که روی حافظه ثانویه ذخیره میشن در قالب فایل ذخیره میشن که تو قسمت قبل که در مورد source code حرف میزدیم فایل رو کامل تعریف کردیم و خوشبختانه خیلی چیز ملموس تری هست نسبت به بقیه چیزایی که تا حالا تعریف کردیم چون تا امروز خیلی باهاشون سروکار داشتید.سرتون رو درد نیارم پس اگه ما بخوایم مثلا یه برنامه بنویسیم که اطلاعات یه تعدادی دانشجو رو ذخیره کنه جوری که با بازو بسته کردن برنامه پاک نشه باید روی حافظه ی ثانویه مثلا دیسک و در قالب فایل ذخیرش کنیم.یه نکته هم اینجا داخل پرانتز بگممرسومه بین برنامه نویس ها بعضی موقع ها به جای کلمه ی ذخیره کردن از نوشتن هم استفاده میکنن.مثلا به جای اینکه بگن بیا ذخیره کنیم تو فلان فایل &lt;مکث&gt; میگن  بیا بنویسیم تو فلان فایل«بیا بنویسیم روی آب رو درخت رو پر پرنده رو ابرا» &lt;بانو مهستی&gt;و در مقابل نوشتن هم از کلمه خوندن استفاده میکنن. مثلا میگن مثلا میگن یه چیزی رو از یه فایلی بخونیم.«چی بخونم جوونیم رفته صدام رفته دیگه»تقریباً همه ی زبون های برنامه نویسی هم قابلیت کارکردن با فایل ها رو دارن و شما اگه کار کردن با متغیرها رو تا حدودی یاد گرفتید بد نیست سعی کنید برنامه هایی شبیه همین نوشتن اطلاعات چند تا دانشجو توی فایل رو هم تمرین کنید.برای شروع فقط کافیه برید تو گوگل بزنیدworking with files in c++یا جاوایا پایتونیا ابالفضل ?ولی همینجوری ذخیره کردن دیتا هامون تو فایل ها با روش های من درآوردی زیاد جواب نمیده چون هزار و یک مشکل به وجود میاد و سرعت و عملکرد پایینی هم خواهد داشت که چراش در این پادکست نمیگنجه.واسه همین یسری برنامه نویس های گولاخ به کمک ریاضی دان ها و بقیه بروبچ دانشمندا نشستن یسری سیستم به اسم DBMS یا database management system یا سیستم مدیریت پایگاه داده طراحی کردن که سعی کردن با انواع فرمول های ریاضی و قواعد خاصی که طی سال ها تجربه به دست آورده بودن تا حد زیادی مشکلات کار کردن با پایگاه داده ها رو حل کنن و عملکرد و سرعتش رو بهتر کنن. و این DBMS هارو در اختیار ما هم گذاشتن?.{خیر از جوونیشون ببینن}حالا این پایگاه داده یا database که میگن چی هست اصن.تعریف فنی اش میشه اینکه دیتابیس یه مجموعه ای از اطلاعاته که به صورت منظم شده ای ذخیره شده و به راحتی قابل دسترسی و مدیریت و تغییره.حالا این DBMS ها چهار عمل اصلی دارن که به طور خلاصه بهش میگن CRUD که از اول اسم چهار عمل اصلیه دیتابیس ها تشکیل میشه:اولیش : Create که ینی یه چیزی رو به اطلاعات قبلی اضافه کنیم.(مثلا یه دانشجو جدید داریم و اطلاعاتش رو وارد دیتابیس میکنیم)دومیش: Read که یعنی خواندن. که یعنی بره تو دیتابیس بگرده دنبال یه بخشی از اطلاعات برداره بیاره.سومیش: Update که یه اطلاعاتی که قبلا وجود داشته رو تغییر میده. مثلا شما اعتراض زدی نمرت عوض شده. حالا نمره جدیدت باید جایگزین نمره قبلی شما تو دیتابیس بشه یا اصطلاحا اپدیت بشه.چهارم: Delete که به معنی پاک کردن کاربردش اینه که یه بخشی از دیتابیس رو پاک کنهکه حالا اول اسم همه اینا رو بزاریم کنار هم میشه CRUDحالا میخوایم چند تا dbms معروف رو مثال بزنیم:مثلاًMYSQLMICROSOFT SQL SERVERSQLitemongo dbو خیلیای دیگه.ممکنه توی مثال هایی که زدیم تکرار کلمه ی SQL توجه شما رو جلب کرده باشه. که اگه به قسمت اول سری سفر به اعماق کامپیوتر رجوع کنید ما اونجا SQL رو به عنوان یه زبان  که مخصوص کار با  دیتابیس ها هست معرفی کردیم و این DBMS هایی که توی اسمشون SQL دارن هم منطقا از زبان SQL پشتیبانی می کنن.کل سیستم هم اینطوری کار میکنه که شما یه query که یه عبارتیه به زبون SQL رو میدید به DBMS و DBMS اون اجرا میکنه و یکی از چهار عمل اصلیه CRUD روی دیتابیس شما اتفاق میوفته. و شما هم خودتون به صورت دستی میتونید این query هارو بدید به DBMS و هم اینکه میتونید query هارو توی برنامه ای که دارید مینویسید بزارید که در حین اجرا برنامه این query هارو بده به dbms.شبکه و اینترنتاما بخش دوم پادکست که در مورد شبکه و سرور و اینترنت و این تیپ چیز هاست.اول بریم سراغ تعریف شبکه:یه شبکه ی کامپیوتری مجموعه ای از کامپیوترهاست که با هم از طریق یسری پروتکل ارتباط برقرار میکنن و منابع خودشون مثل فایلا رو با هم به اشتراک میزارن.در واقع شبکه بستری رو فراهم میکنه که توش کامپیوتر ها میتونن به هم یک سری داده هارو در قالب پیام به هم بفرستن.حالا پروتکل یعنی چی و چرا بهش نیاز داریم؟ببینید اگه هر کامپیوتری طبق سلیقه ی خودش هر جور که بخواد پیام هارو بفرسته تو شبکه سنگ رو سنگ بند نمیشه. چون بقیه اصن نمیدونن این پیاما چه فرمتی دارن و چجوری باید خونده بشن پس به درد نمیخورن. پس ما اینجا به یه سری استاندارد و قرارداد مشترک بین همه کامپیوتر ها نیاز داریم که به این قرارداد ها پروتکل میگن.حالا بیایم ببینیم این اینترنتی که بدون اون صبحمون‌شب نمیشه چیه!اینترنت (Internet) یک شبکه جهانی است که شامل کُلی کامپیوتر متصل به هم از سرتاسر دنیا بوده و اجازه انتقال یه عالمه از داده‌ها و اطلاعات را میان کامپیوترهای موجود، می‌دهد.دقیقا مثل نامه اس پس از اونجایی که وقتی می‌خوایم نامه بزنیم آدرس فرستنده و گیرنده رو میزنیم پس توی اینترنت هم به همچین آدرسی نیاز داریم که بتونیم به اینترنت بفهمونیم که این پیام مارو به کدوم کامپیوتر برسونه.و اسم این آدرس در دنیای شبکه و اینترنت آدرس ip هست.پس هر کامپیوتری که به اینترنت وصل شه یدونه از این ip آدرس ها نیاز داره که سرویس دهنده ی اینترنت یدونه بهش میده. که چهار تا عدده ۰ تا ۲۵۵ هه که با نقطه از هم جدا شدن.مثلا:5.237.192.210جا داره یه فلش بک به قسمت اول سری سفر به اعماق کامپیوتر بزنم که اونجا کامپیوتر رو تعریف کردیم و گفتیم کامپیوتر فقط محدود به pc های خانگی و لپ تاپ ها نیست موبایل های هوشمند و کنسول های بازی نیست  و خیلی چیزای دیگه هم کامپیوتر به حساب میان.خوب حالا این سوال پیش میاد که پس اگه اینترنت فقط یسری کامپیوتر ان که بهم وصل ان پس وبسایت ها و سرویس های انلاین دیگه چی میشن؟اونا کجان؟ببینید ما توی اینترنت دو نوع کامپیوتر داریم:سرور ها و کلاینت ها.داستان از این قراره که سرور ها سرویس ها رو ارائه میدن و کلاینت ها از اون سرویس ها استفاده میکنن.مثلا اگه یه وبسایت رو یه سرویس در نظر بگیریم. یه وبسایت یه سرور داره که یجایی به اینترنت وصله و شما به عنوان کلاینت یه پیام که بهش میگن درخواست رو میفرستید بهش و اونم به عنوان جواب مثلا صفحه ی اول وب سایت رو برای شما میفرسته. یا شما ممکنه تو درخواستتون بگید من فلان صفه رو میخوام. وسرور هم همون صفحه ای که میخواید رو براتون میفرسته.زیبا نیست؟اما بریم سراغ نکته ی زیبای بعدی که اسمش DNS ههکه مخفف Domain Name System هه.حالا داستان چیه؟ما گفتیم هر کامپیوتری تو اینترنت از جمله سرور ها ip ادرس دارن که چهار تا عدده که با نقطه از هم جدا شدن. ولی خوب سخته که بخوایم واسه هر وبسایتی که بریم توش این آدرس رو حفظ کنیم و مهم تر از اون اینه که ممکنه این ادرس عوض هم بشه.بنابراین یه چیزی طراحی شد به اسم dns که شبیه یه دفترچه تلفنه که میتونه یه نام دامنه رو تبدیل کنه به آدرس ip.یعنی چی؟مثلا شما تو مرورگرتون میزنید internplusplus.ir اول یه درخواست میره سمت dns server بعد اون dns سرور توی دفتر تلفن مانندش میگرده ببینه آدرس ip سایت intern plus plus الان چیه و به عنوان جواب به مرورگر شما میده و بعد مرورگر که الان دیگه ip آدرس رو داره میتونه درخواست بفرسته به سرور intern plus plus و سرور ما هم به عنوان جواب صفحه ی اصلی ما رو برمیگردونه به مرورگر شما و مرورگر شما هم اونو به شما نمایش میده.اینجوری دیگه شما لازم نیست آدرس ip سایت مارو حفظ کنید اگر هم ما یه روزی آدرس ip سرور مون عوض شد میریم به dns server ‌میگیم آدرس جدید مارو بزن تو دفتر تلفن مانندت بی زحمت.خلاصه که خیلی باحالهحالا این دامنه ها مثلاً internplusplus.ir خریدنی ان ینی شما میری مثلا یه دامنه رو برای یک سال به اسم خودت میکنی و بعد به صورت جداگانه باید بری به سرویس دهنده ی dns هم بگی که این دامنه رو هر کی خواست این ip رو بهش بده.حرف اخراین قسمت سفر به اعماق کامپیوتر هم تموم شد.امیدوارم که براتون مفید بوده باشه دیدتون نسبت به این چیزایی که گفتیم کامل تر شده باشه.مارو میتونید از جاهای مختلفی دنبال کنید.مثلا فایل صوتی پادکست هامون رو تو تلگرام میزاریم.اگه خوندن رو از گوش کردن بیشتر دوست دارید متن پادکست هامون رو توی ویرگول میزاریم.خود پادکست مارو میتونید از کست باکس و انکر گوش کنید.ادرس همه اینا هم تو سایت ما که ادرسش internplusplus.ir هست هست و از هر جا راحتید مارو دنبال کنید.اگه خواستید هم مارو به کسایی که فکر میکنید مطالب ما به دردشون میخوره معرفی کنید.تا قسمت بعد خدافظ</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Fri, 04 Sep 2020 21:02:40 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی چند IDE و Text editor</title>
                <link>https://virgool.io/intern-plus-plus/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%86%D9%86%D8%AF-ide-%D9%88-text-editor-zhcjlqwbrire</link>
                <description>سلام امیدوارم حالتون خوب باشه!اگه پادکست آخر مارو گوش داده باشید ، حتماً یادتون هست راجع به TextEditor و IDE ها یه سری توضیح دادیم.اینجا معروفاشو براتون لیست کردیم.اگر خواستید مارو تو جاهای دیگه هم دنبال کنید ما اینجا هاییم.اول IDE ها:
حالا Text editor هاشما از کدوم استفاده میکنید؟اگه فکرمیکنید چیزی جا انداختیم که اینجا جاش بود بهمون بگید که بقیه هم بدونن!</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Sat, 15 Aug 2020 23:36:29 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی چند وبسایت یادگیری برنامه نویسی</title>
                <link>https://virgool.io/intern-plus-plus/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%86%D9%86%D8%AF-%D9%88%D8%A8%D8%B3%D8%A7%DB%8C%D8%AA-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-v0rqyoxfcuaj</link>
                <description>سلام!چطورید؟یه سری وبسایت آموزشی رو معرفی کردیم که اگه میخواید شروع کنید و نمیدونید از کجا ، الان دیگه میدونید! :)) https://www.w3schools.com/  https://www.codecademy.com/  https://www.tutorialspoint.com/index.htm  https://www.freecodecamp.org/ </description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Sat, 15 Aug 2020 23:24:19 +0430</pubDate>
            </item>
                    <item>
                <title>سفر به اعماق کامپیوتر (قسمت دوم)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D9%81%D8%B1-%D8%A8%D9%87-%D8%A7%D8%B9%D9%85%D8%A7%D9%82-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-uvf1kk1p0mze</link>
                <description>سلام.حالتون چطوره؟اینجا اینترن پلاس پلاسه و شما دارید به دومین قسمت سری سفر به اعماق کامپیوتر گوش میدید. اگه قسمت قبل رو گوش نکردید توصیه میشه که اول برید اونو گوش کنید. توی این سری-پادکست ما میایم یسری مفاهیم فنی رو میگیم که تو راه برنامه نویس شدن به دردتون میخوره. و توی این اپیزود هم  من که علی ام و محمد میخوایم در مورد‌ اینا صحبت کنیم:۱. ماهیت source code. و ابزار های کار باهاشون.۲. انواع رابط کاربری برنامه ها.۳. انواع ارور ها.در واقع چیزایی رو میگیم که شما بعد این اپیزود میتونید برید یادگیری یه زبون برنامه نویسی رو شرو کنید.شما میتونید این قسمت رو به عنوان پادکست هم از اینجا گوش بدید. و اگه دوست داشتید مارو از اینجا ها دنبال کنیدماهیت source code و ابزار کار باهاشون.اگه یادتون باشه قسمت قبل یه اشاره سوسکی به مفهوم source code کردیم.یادتونه؟گفتیم به فایل یا فایل هایی که توشون به یه زبون برنامه نویسی یه برنامه مینویسیم source code میگیم. و این source code رو میدیم به کامپایلر تا برامون تبدیلش کنه به زبون ماشین که همون برنامه ی قابل اجراس.یادتون اومد؟قبل اینکه بریم سراغ ادامه تعریف بزارید اول فایل رو تعریف کنم براتون.فایل: یه مجموعه‌ای از داده‌اس که‌ در یک واحد ذخیره میشن و یه اسم هم دارن. و میتونن فرمت های مختلفی داشته باشن.مثل ویدیو و عکس و موزیک و...ولی یسری فایل هم داریم که فرمت متنی دارن. ینی وقتی با برنامه های ویرایشگر متن مثلا note pad بازشون میکنیم کارکتر ها و اعداد عجق وجق نمیبینیم. چیزی که میبینیم اصطلاحاً human readable یا (قابل خواندن توسط انسان هست).خلاصه که همچین نگا که میکنی شبیه زبون ادم ایزاد به نظر میاد.در صورتی که اگه یه فایل غیر متنی (مثلا ویدیو رو) با نوت پد باز کنید کلی کارکتر عجق وجق میاد که اصن نمیفهمید کجاش به چی ربط داره.اگه بخوام فایل متنی مثال بزنم مثلا فایل های txt متنی ان. عجیب به نظر میرسه اگه بگید تا حالا باهاشون برخورد نکرده باشید ولی یه مثال دیگه فایل های srt زیرنویس هان که قطعاً باهاشون برخورد کردید.(همه فیلم میبینن)تا حالا بازشون کردید؟این دفه باز کنید ببینید توش چه خبره.خلاصش کنم که همه اینا رو گفتیم که بگیم سورس کد برنامه ها که برنامه نویس اونا رو مینویسه خاصیت متنی دارن. و خوب همون طور که حدس میزنید یه ویرایشگر متن یا text exitor نیازه که بشه چیزی توشون نوشت یا خوند یا اضافه کرد.سوال که اینجا پیش میاد اینه که پس با note pad هم میشه برنامه نوشت؟جوابش اینه که بله. چرا نمیشه ولی زیاد کار راحتی نیست. چون notepad و نرم افزار های مشابه مخصوص برنامه نوشتن نیستن و برای نوشتن متن های معمولی طراحی شدن.حالا سوال بعدی که پیش میاد اینه که مگه اونایی که برای برنامه نویسی طراحی شدن چه امکانات اضافه تری دارن که ما notepad رو بزاریم کنار و بریم اونا رو نصب کنیم؟حالا سوالی که اینجا پیش میاد اینه که واقعاً این سوالا داره برای شما پیش میاد؟نمیدونم.در واقع text editor هایی که مخصوص برنامه نویسی ان یه سری امکانات دارن که الان دونه دونه برسی میکنیم با هم.syntax highlightاین قابلیت یعنی اینکه وقتی دارید کد مینویسید هر کلمه با توجه به نقشی که داره یه رنگ خاص میشه. که این میتونه به خوانا تر شدن کد کمک کنه. و مهم تر از اون اگه مثلا یجا غلط املایی داشته باشید اون کلمه یه رنگ غیر منتظره میشه و زود میفهمید که یه جای کار میلنگه.autocompleteاین قابلیت باعث میشه که وقتی شرو میکنید یچی بنویسید بهتون پیشنهاد میده. ینی در واقع با توجه به چیزایی که قبلا نوشتید توی همون فایل یا حتی فایل های دیگه حدس میزنه که شما چی میخواید بنویسید و چنتا پیشنهاد میده که شما یکی از اونا رو میتونید انتخاب کنید یا اگه یچی دیگه میخواید بنویسید هم که بنویسید خودتون.و یکی از جاهایی که  text editor ها با هم رقابت دارن هم همینجاس و هر کدوم تو یه زبونی هوشمند تر عمل میکنن.line numberلاین نامبر ینی بقل جایی که کد ها هست یه ردیف هست که نوشته هر کدوم از این کُد ها در خط چندم فایله. که خیلی کاربردیه. چون وقتی به یه ارور میخوریم. ارور میگه مثلا خط ۳۲ یه مشکلی هست و شما با توجه به لاین نامبر اون بغل میفهمید که کجای کار میلنگه.lintingیکی دیگه از قابلیت هایی که text editor های برنامه نویسی دارن اینه که با لینتر ها تعامل دارن و شما لازم نیست کد رو بدید به کامپایلر که ایراداتش رو بگه بلکه همینطور که دارید مینویسید ارور هارو نشون میده معمولا قرمز میکنه که اینجوری به محض نوشتن یه چیز اشتباه میفهمید و درستش میکنید. البته به جز ارور ها بسته به پیشرفته بودن لینتر میتونه ایراد های دیگه هم از کد شما بگیره که از نظر کامپایلر ایراد نیستن ولی بهتره اونجوری ننویسید یا مثلا ممکنه بگه این تیکه کد اضافیه و پیشنهاد کنه که حذفش کنید.و الان احتمالا میتونید حدس بزنید که هر زبون برنامه نویسی لینتر مخصوص به خودش رو داره.البته تکست ادیتور ها ممکنه امکانات دیگه ای هم داشته باشن ولی پایه ها ایناسخوب با یه تکسست ادیتور و یه کامپایلر میشه برنامه نوشت. ولی بازم ابزار های دیگه هستن که توی برنامه نویسی کمک میکنن.مثلاً:دیباگر ها.ابزار تست.آنالیز.ورژن کنترلر ها.و خیلیای دیگه که به نسبت زمینه که کار میکنید توش از یسریاشون استفاده می کنید.حالا یه مفهوم دیگه ای هم داریم به اسم IDE یا محیط توسعه ی یکپارچه که در واقع همه ی ابزار های یک یا چند رشته ی برنامه نویسی رو توی خودش داره و شما با نصب اون دیگه از نصب کردن هر چیز دیگه ای بی نیاز میشید. هر چند که بعضی از برنامه نویسا ترجیح میدن که از ide ها استفاده نکنن و تک تک ابزار های مورد نیاز خودشون رو با سلیقه ی خودشون نصب کنن.انواع رابط کاربری:حالا میرسیم سراغ بخش دوم پادکستمون که در مورد انواع رابط کاربری یا user interface هست.رابط های کاربری در واقع واسط بین آدم و کامپیوتره که باعث میشه کاربر بتونه با کامپیوتر و برنامه هایی که منو شما نوشتیم تعامل ایجاد کنه.تعامل یعنی کاربر به واسطه ی رابط کاربری به برنامه بفهمونه که چی میخواد و برنامه هم با همین واسط خروجی رو نمایش میده.حالا میخوایم یه نگاه به دو تا از معروف ترین رابط های کاربری بندازیم.اولین نوع رابط کاربری  cli یا رابط خط فرمانی هست که شاید تا الان کمتر بهشون برخورد کردید. ولی از این به بعد بیشتر میبینیدشون.در این نوع رابط کاربری با متن سرو کار داریم.معمولا این شکلیه که یه صفحه ی سیاه باز میشه و یسری چیز مینویسه  بعد کاربر با استفاده از کیبورد یه چیزی مینویسه بعد اینتر میزنه بعد برنامه باز یسری چیز مینویسه.بعد دوباره کاربر مینویسه.بعد دوباره برنامه جوابش رو مینویسه.بعد همینجوری این چرخه ادامه داره که برنامه تموم شه.و به این مدل برنامه ها console application هم میگن و نکته ای که هست اینه که کاربر موقع کار کردن با یه console application موس و... به کارش نمیاد. فقط کیبورد. چون المان گرافیکی تو صفه وجود نداره که بخواد کلیک کنه یا کارای دیگه انجام بده.حالا از اون ور ما رابط کاربری gui رو داریم که ظاهر کاملا گرافیکی داره یعنی توش دکمه و منو آیکون و افکت و انیمیشن و اینا  میبینید و یه جاهایی یه چیزایی رو تیک میزنید و یچیزایی میتونید بردارید بندازید یه جای دیگه و خیلی کارای دیگه. که توی این حالت علاوه بر کیبورد شما واسط های دیگه ای مثل موس و… دارید. یا مثلاً تو موبایل هاتون با تاچ کردن المان های تو صفحه با برنامه ها تعامل ایجاد میکنید.حالا همه اینا رو گفتم که بگم معمولاً وقتی شما شروع میکنی یه یادگیری یه زبان برنامه نویسی، اولاش فقط برنامه های cli یاد میدن چون نوشتنش راحت تره ولی بعد ها که توی نوشتن برنامه های cli مسلط شدید میتونید با یادگرفتن یه کتابخونه یا فریمورک گرافیکی برنامه های گرافیکی تولید کنید.در مورد کتابخونه و فریمورک توی قسمت های بعدی کامل توضیح میدیم.اصلاً اگه جایی رو متوجه نشدید نترسید.ما همین دور و وراییم?در ادامه برنامه های cli و gui رو به روایت تصویر میبینیدارور ها:بخش سوم این پادکست هم واسه ارور هاست.ارور ها مهم ان. چون برطرف کردنشون بخش قابل توجهی از کار ما برنامه نویس هاس.پس بریم یه نگاه بهشون بندازیم.&lt;فقط یه نگاه تو منو پاک دیوونه کرده . دوتا چشم تو منو پابند خونه کرده&gt;ببینید رفقا. ما کلا سه نوع ارور داریم.compile time error.این نوع ارور موقعی اتفاق میفته که کامپایلر موقع کامپایل یه اشکالی توی کد شما ببینه. و خوب اگه این اتفاق بیوفته اجازه کامپایل نمیده و از فایل اجرایی هم خبری نیست. خوبیش اینه که کامپایلر دقیق مشخص میکنه که مشکل کجاست و حدوداً هم میگه مشکل چیه و حل کردنش معمولاً خیلی سخت نیست. خود این compile time error ها هم انواع دارن که یکی از معروف ترین هاش syntax error هست که ینی ارور دستور زبانی که ینی کدی که شما نوشتی از قواعد دستوری اون زبون برنامه نویسی پیروی نمیکنه.یادتونه تو قسمت قبلی ممد داشت میگفت زبون های برنامه نویسی چه شکلی ان و گفت مثلا تو زبون جاوا بعد از کلمه ی کلیدی if باید پرانتز بیاد و… خوب پس اگه پرانتز رو نزارید قواعد دستوری جاوا رو رعایت نکردید و بهتون syntax error میده.runtime error.این مدل ارور ها موقع اجرا برنامه اتفاق میوفته یعنی کامپایلر بدون هیچ مشکلی کارشو انجام داده و فایل اجرایی هم تولید شده و شما موقع اجرای فایل اجرایی به ارور می خورید.بزارید یه مثال بزنم.فرض کنید شما یه ماشین حساب نوشتید که کاربر دوتا عدد وارد میکنه و شما اونارو تقسیم بر هم میکنید. همیشه هم خوب کار کرده بدون هیچ مشکلی. حالا من به عنوان کاربر میام عدد دوم رو صفر وارد میکنم. و همون طور که میدونید عدد ها نمیتونن تقسیم بر صفر بشن و اینجا یه ارور زمان اجرا یا ران تایم رخ میده که بهش exception یا استثنا هم میگن.حالا چندتا مثال دیگه هم میزنم که به گستردگی این ارور ها پی ببرید.مثلاً برنامتون میخواد یه فایلی که وجود نداره رو بخونه.یا مثلا میخواد وصل شه به اینترنت یه داده ای رو بگیره ولی اینترنت وصل نیست.یا مثلا یه کاری میخواد بکنه که دسترسی نداره.یا مثلاً برنامه انقدری رم میخواد که رم کامپیوتر پر میشه. و دیگه جا نداره برای حافظه ی بیشتر.و یا خیلی اتفاق های ناگوار دیگه ای که ممکنه بیفته.این ارور های زمان اجرا هم وقتی اتفاق میفتن کاملا مشخص میشه که کجا و به چه علت رخ دادن. و برنامه همونجایی که هست تموم میشه و ادامه ی کد های شما اجرا نمیشن. یا به اصطلاح فنی تر کرش میکنه &lt;OMG!&gt; یا به اصطلاح غیر فنی تر از برنامه میپره بیرون.البته راه هایی برای مدیریت کردن این ارور ها هست که مثلا به جای اینکه از برنامه بپره بیرون یه پیام مثلا فلان خطا رخ داده است به کاربر نشون میده. و برنامه درحال اجرا باقی میمونه.logical err.اما میرسیم به نوع سوم ارور ها که از خبیث ترین نوع ارور هاست و اونم ارور منطقیه. این ارور ها موقعی رخ میدن که شما برنامتون از نظر کامپایلر هیچ ایراد نداره و موقع اجراع هم اتفاقی که باعث بیرون پریدن برنامه بشه نمیوفته ولی برنامه درست کار نمیکنه یعنی خودش فکر میکنه درست کار میکنه چون طبق دستور شما رفته جلو ولی شما انتظار یه چیز دیگه رو ازش داشتید و این ارور هم ناشی از اینه که شما یه جای کد هاتون اشتباه کردید ولی اون اشتباه رو نه کامپایلر توانایی کشف کردنش رو داره نه باعث اتفاق ناگواری شده که بپره بیرونبنابراین شما هم نمی فهمید که کجای کار مشکل داره و باید برید بگردید.واسه همین هم میگیم خبیث ان چون پیدا کردنشون سخت تر از دو تا ارور قبلیه.به این ارور های منطقی باگ هم میگن که ینی سوسک که جالبه بدونید این اسم از کجا اومده.در روزگاران قدیم یعنی حولو هوش دهه پنجاه میلادی یه بنده خدایی داشته برنامه اش رو روی یه کامپیوتر اجرا می کرده  بعد هی به ارور منطقی میخورده  و رفتن کلی گشتن آخر دیدن که یه سوسکی رفته بوده تو کامپیوتر و باعث میشده که درست کار نکنه. بعد دیگه هر موقع درست کار نمی کرده مینداختن گردن سوسکا  و میگفتن این الان باگ داره بعد این اصطلاح کم کم جا افتاد و الان هم خیلی مرسومه که به این نوع ارور ها میگن باگ و به حل کردن این ارور ها هم میگن دیباگ.حرف آخر:خوب با این اطلاعاتی که توی این دو اپیزود کسب کردید عملا میتونید برید یادگیری یه زبون برنامه نویسی رو شرو کنید.آموزش های رایگان و غیر رایگان و انگلیسی و فارسی ام که تو اینترنت فَتُ فراوان ریخته.منتظر اپیزود های بعدیه ما باشید. درسته الان دیگه خودتون میتونید برید یادگیری رو شرو کنید ولی از ما که نباید غافل بشید چون توی اپیزود های بعدی بازم مفهوم هایی رو براتون روشن میکنیم که مسیر برنامه نویس شدنو هموار میکنه براتون.قربون شما من برم.?خدانگهدار.</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Wed, 22 Jul 2020 21:04:56 +0430</pubDate>
            </item>
                    <item>
                <title>سرکی به دنیای برنامه نویسی(قسمت اول)</title>
                <link>https://virgool.io/intern-plus-plus/%D8%B3%D8%B1%DA%A9%DB%8C-%D8%A8%D9%87-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-opop1ndbevr1</link>
                <description>سلام حالتون چطوره؟اینجا اینترن پلاس پلاسه ، جایی برای کسایی که میخوان برنامه نویس شنتو این سری از پادکست ما قراره چندتا از معروف ترین شاخه های برنامه نویسی رو به شما معرفی کنیم و بگیم که هرکدوم به چه دردی میخورن و شما میتونید متناسب با علاقتون یک یا هر چند تا از اونا رو که دلتون بخواد انتخاب کنید و برید جلو.شما میتونید این قسمت اینجا رو به صورت پادکست هم گوش بدیداین قسمت : سرکی به دنیای برنامه نویسیاگر فکر میکنید  برنامه نویسی فقط تو وب سایت و موبایل و امثال اینها خلاصه میشه ، باید بگم که اینا فقط یه قسمت کوچیک از دنیای ماست.در ادامه به همراه شما یه نگاهی به شاخه های برنامه نویسی میندازیم و خلاصه ای از هر قسمت میگیم تا یک دید کلی پیدا کنید ، البته اینم بگم که ما رشته های زیادی داریم و اینا چندتا از معروفاشه.خب بریم سراغ دسته بندی ها:هوش مصنوعی (Artificial Intelligence)هوش مصنوعی در واقع هوش ماشین هاست. در حقیقت یه شاخه ای از علوم کامپیوتره که از الگوریتم هایی که ما بهش میدیم استفاده میکنه و یه ماشین معمولی رو به یه ماشین هوشمند تبدیل میکنه.حالا به چه موجود یا چیزی میگیم هوشمند؟اگه کسی یا چیزی قدرت استدلال ، تصمیم گیری و منطق رو داشته باشه بهش میگیم هوشمند.همونطور که گفتیم الگوریتم ها نقش موثری تو این زمینه دارن ، نقششون هم به این صورته که ماشین هارو وادار میکنن تا واکنش های طبیعی و حتی بهتر نسبت به کارهایی داشته باشن که در حال حاضر انسان ها میتونن اونارو انجام بدن.کورزویل ، دانشمندی که در زمینه هوش مصنوعی جزو اولین ها بود یه تعریف ساده و قابل فهم بیان کرده :&quot;هوش مصنوعی هنر ایجاد ماشین‌هایی که وظایفی را انجام می‌دهند که انجام آن‌ها توسط انسان‌ها نیاز به هوش دارد.&quot;ولی فقط به اینجا منتهی نمیشه و خودش به قسمت های زیادی تقسیم میشه:یادگیری ماشین (Machine Learning)شبکه عصبی(Neural Networks)بینایی ماشین(Machine Vision)سیستم های خبره(Expert System)پردازش زبان طبیعی(Normal Language Processing)الگوریتم ژنتیک(Genetic Algorithm)روباتیکحالا بیایم بررسی کنیم ببینیم با چه زبان هایی میتونیم وارد این رشته بشیم؟خب 5 تا زبان برای توسعه هوش مصنوعی خیلی پر استفاده هستن که به ترتیب محبوبیت به این صورته:PythonLISPPrologJavaC++که اگر شما با دنیای برنامه نویسی خیلی آشنا نیستید و هنوز اول کارید ، پیشنهاد من به شما شروع با زبان پایتونه ، چرا؟ چون یادگیریش به شدت آسونه و سینتکسش بسیار شبیه زبان انگلیسیه ؛ (یه نصیحتم از من داشته باشید ؛ اگه زبانتون خوبه که 1-0 جلویید! اما اگه زیادم چنگی به دل نمیزنه ، برای شروع هیچوقت دیر نیست :} )اپلیکیشن های موبایل (Mobile Applications)دیگه این روزا از بچه 10 ساله تا یه آدم 80 ساله همه تلفن همراه دارن ، استفاده از تلفن همراه بشدت گسترده شده و خب طبعاً طیف اپلیکیشن هایی که روی دستگاه نصب میشه به همون مقیاس بزرگتر شده.برنامه نویسی برای اپ های موبایل 3 تا دسته داره:AndroidiosCross platformکه 2 تای اولی سیستم عامل هاییه که خیلی رواج داره ،اما سومی با یه بار کد نوشتن میتونیم برای 2 تای قبلی خروجی بگیریم و نیازی نیست جدا جدا بنویسیم.حالا برای توسعه دادن یا اصطلاحاً develop کردن اینا نیاز به یادگیری چه زبان هایی هست؟برای این کار آپشن های زیادی وجود داره که چندتاشو باهم مرور میکنیم:اندروید:اولین و محبوب ترین گزینه زبان Java هست. جاوا زبان رسمی برنامه نویسی اندرویده و خب این یعنی گوگل بیشترین پشتیبانی رو از این زبان داره.گزینه بعدی زبان برنامه نویسی Kotlin هست.کاتلین بسرعت درحال توسعه ست و مزیتی که نسبت به جاوا داره اینه که پیچیدگی های زبان جاوا رو نداره و برای شروع یادگیری ساده تره.البته خود گوگل ابزاری رو محیا کرده که بتونیم کارایی که با جاوا به خاطر سطح بالا بودنش نمیشه کرد رو c++ , c که سطح پایین تر هستن بکنیم. (که بهش میگن ndk)ای او اس:چندتاشو نام میبریم:زبان objective-c ، اولین زبان اصلی بود که اپل برای توسعه ios معرفی کرد. 2 تا از ویژگی هایی که این زبان داره اینه که:سازگار با زبان های c و cpp ، یادگیری و اجرا و توسعش آسونه.30 سال بعد زبان برنامه نویسی swift ارائه شد که بسیار زبان قدرتمندیه و نسبت به زبان objective-c از امنیت ، سرعت رشد ، توسعه بالاتربرخورداره و خطای کمتری داره.بریم سراغ ویژگی های این زبان:اولیش اینه که این زبان اپن سورسه .سوییفت قابلیت تطبیق با همه سیستم عامل هارو داره ، روی سیستم عامل لینوکس قابل اجراست ، یادگیریش سادست! ، کدها کوتاه وکم حجمن و یکی از مدرن ترین و قدرتمند ترین زبان های برنامه نویسیه.کراس پلتفرم:همونطور که گفتیم کراس پلتفرم ینی با یه زبان برنامه ای بنویسیم و برای سیستم عامل های مختلف خروجی بگیریم.مثلا ری اکت نیتیو که با زبون جاوا اسکریپتهیا کیوت که با زبان c++ ههیا فلاتر که با زبان دارت ههیا مثلا فریم ورک زامارین که با زبان سی شارپهیا خیلیای دیگهالبته کراس پلتفرم ها هم مشکلات خودشونو دارن و برنامه هایی که باهاشون تولید میشه معمولا به کیفیت برنامه هایی که با ابزار های رسمی که معرفی کردیم تولید میشن نیستن ولی خیلی ها این روزا به خاطر کاهش هزینه ها و سرعت توسعه ی بیشتر میرن سمت اونا.بازی سازی (Game)مارکت بازی سازی جزو شغل های پردرآمد محسوب میشه! حالا چجوری میتونیم وارد این مارکت بشیم؟چندتا پیشنهاد برای این کار وجود داره.Cpp:این زبان میتونه انتظار گیمر هارو در رابطه با سرعت اجرای بازی براورده کنه ، تقریبا اکثر شرکت های بازی سازی بزرگ دنیا از این زبان برای توسعه بازی استفاده میکنن و برای استخدام هم طبیعتا نیازمند برنامه نویس سی پلاس هستن. پس تقاضای بازی سازی برای برنامه نویس سی پلاس بالاست!C#:سی شارپ هم یکی از گزینه های پرقدرته ، حالا چرا؟ چون شما میتونید از موتور های بازی سازی استفاده کنید. مثل چی؟ Unity 3D و زامارین.یه نکته ی دیگه ای که راجع به سی شارپ وجود داره ، همونطور که گفته شد شما میتونید برای هر پلتفرمی مثل xbox , ps ,win , android , ios بازی بسازید و ویژگی بعدیش اینه که یادگیریش از سی پلاس راحت تره و برای مبتدیا گزینه بهتریه.Java:جاوا یکی از بهترین زبان های برنامه نویسی برای ساختن بازی های چند پلتفرمیه ، این زبان ، زبان اصلی برای توسعه بازی های اندرویدیه.شما میتونید برای این کار از فریمورک های LibGDX برای بازی های 2 بعدی و JMonkeyEngine برای بازی های 3 بعدی استفاده کنید و خب خوبیش اینه که این فریمورک ها به شما کتابخونه های زیادی ارائه میدن که کد زدن رو براتون سریع تر و ساده تر میکنه.جاوا اسکریپت یه زبان همه کارست شما از جاوا اسکریپت می تونید برای خیلی کارها استفاده کنید اما ظاهرا ساخت و توسعه بازی از لیست کارهایی که میتونه این زبان انجام بده حذف شده ولی میشه از CoffeeScript و TypeScript برای بازی سازی استفاده کرد . همچنین با ادغام جاوا اسکریپت و HTML5 میتونید بازی های تحت وب یا تحت مرورگر خوبی ساخت. در ضمن unity موتور های بازی داره که از جاوا اسکریپت هم پشتیبانی میکنه.نگاهی به میکروکنترلرها (Microcontroller)میکروکنترلر یه کامپیوتره بسیار کوچیکه که روی یه تراشه یا همون IC قرار گرفته.به زبان ساده تر یک تراشه است که شامل قسمت های مختلفی مثل (CPU)، رم (Ram)، چند تا پین ورودی و خروجی و یه مقداری حافظه قابل برنامه ریزی میشه.برنامه نویس ها می تونن برنامه مورد نظر خودشون رو روی حافظه قابل برنامه ریزی میکروکنترلر قراربدن.اساس برنامه نویسی این کامپیوتر های کوچیک خلاصه میشه تو این کهاگر شرایط خاصی در ورودی های میکروکنترلر اتفاق افتاد ، در خروجی هم یه اتفاقی بیافته , شایدم نیفتاد . این بستگی به برنامه شما دارهکلا هم به 3 دسته هم تقسیم میشن : avr , pic , arm.معمولا بسیاری از ویژگی ها و قابلیت های این میکروها مشابه هم دیگن. فقط در مواردی مثل سرعت کارکرد، خطای پردازنده، مصرف توان و قیمت  با هم متفاوت هستن.این میکرو ها برای ساخت امبدد سیستم ها (Embedded Systems) به کار گرفته می شن.حالا شاید بپرسید embedded system چیه :}امبدد سیستم (Embedded System) در واقع یک مفهوم هستش کامپیوتر کوچیکی که برای یک عملکرد خاصی طراحی شده  و به منظور کنترل یک دستگاه مکانیکی یا الکتریکی بزرگتر درون اون دستگاه گزاشتن. به امبدد سیستم ها در زبان فارسی &quot;سامانه نهفته&quot; , &quot;سامانه توکار&quot; یا &quot;سیستم های تعبیه شده&quot; هم گفته می شه اما هیچ کدوم حق مطلب رو عدا نمیکنهشما همون بگین embedded systemحالا با چه زبون هایی میتونیم برنامه ریزیشون کنیم؟با زبان اسمبلی میتونیم این کار رو انجام بدیم اما مسئله ای که هست اینه که زبان اسمبلی یه زبان سطح پایین محسوب میشه  (البته پایین که چه عرض کنم دیگه چسبیده قعر جدول ) و به نسب بقیه زبان های برنامه نویسی کد زدن باهاش یذره مشکل تره.یذره هم نه , خیلللللی مشکل ترهدرنتیجه دست به دامن  زبان C یه ترکیبی از این دو زبان رو استفاده میکنیم تا بلکه این اسمبلی رو بشوره ببره پایین .سرزمین وب ( Web Applications):خب رسیدیم به یکی از معروف ترین زمینه های برنامه نویسی .وب سایت ها نسبت به گذشته خیلی پیشرفته شدند همینطور ابزار های ساخت اون ها.امروزه ما تقریبا هر گونه نرم افزاری رو میتونیم تحت وب پیاده سازی کنیم.تحت وب ؟  تحت وب یعنی اینکه ما اون نرم افزار رو به صورت یک وب سایت پیاده سازی کنیم تا از دو تا ویژگی خیلی خوب اون ها بهره مند بشیم اول اینکه : برای استفاده نیاز به نصب کردن نیست !چون خود مرورگر اون رو اجرا میکنه (خب یه وبسایته دیگه ! )دوم اینکه : شما میتونید در هر کجا که باشید و با هر سیستمی از اون استفاده کنید!فراموش نکنیم که ما قسمت زیادی از این پیشرفت رو مدیون مرورگرها هستیم.خب حالا این وب سایت ها چجوری ساخته میشوند ؟ در واقع هر وبسایتی از 2 قسمت اصلی تشکیل میشه : FrontEnd و BackEnd .این دوقسمت مجزا از هم پیاده سازی میشوند و معمولا دو تا برنامه نویس مختلف نیاز دارند .البته کسایی هستن که هر دوی اینها رو بلدن که به آونها برنامه نویس های full stack گفته میشه !بیاید از FrontEnd شروع کنیم : FrontEnd در واقع همون ظاهر سایت هستش که همه میبینند : دکمه ها و عکس ها و حتی متن هایی که میبینید جزیی از فرانت اند حساب میشوند.اساس ساخت فرانت اند 3 زبان است : HTML , css , javascriptاز بین این 3 زبان فقط javascript یک زبان برنامه نویسی است HTML  و css زبان های برنامه نویسی نیستند بلکه زبان نشانه گذاری اند . صبر کنید تا با یک مثال خوب نقش هر کدام از این زبان ها در ساخت فرانت رو بهتون بگم :اگه فرانت اند رو به یک بدن تشبیه کنیم اینجوری میتونیم بگیم که نقش استخوان ها رو HTML , نقش عضلات رو javascript و نقش همه ی اعضای ظاهری مثل پوست و مو رنگ اینها و … را هم css بازی میکند.در کنار همه اینها یک سری کتابخانه و فریم ورک وجود دارد که کار ما رو در کد نویسی بسیار آسون تر و سریع تر میکنه .که از معروف ترین هاش : ReactJS , angular , vueJS هستن.تقریبا همه ی سایت های بزرگ دنیا با کمک یکی از این 3 تا نوشته شدن.اگه دوست داشتین میتونید یک پلاگین به اسم wappalyzer رو روی مرورگر خودتون نصب کنید و اون بهتون نشون میده که این سایت رو با استفاده از چه کتابخانه ها و فریمورک هایی نوشتن.فکر کنم به اندازه کافی با قسمت فرانت اند آشنا شدید حالا وقت اون رسیده که یک سری به قسمت BackEnd بزنیمBackEnd قسمتی از سایت هست که اصلا برای کاربران دیدنی نیست و همه ی اطلاعات اصلی و مهم در اونجا وجود داره . با زبون های برنامه نویسی مختلفی مثل  php , C#, java ,python , javascriptشما میتونید بک اند سایتتون رو بنویسید یا حتی ترکیبی از چند زبون البته این برای سایت های خیلی بزرگ استفاده میشه مثل فرانت اند , بک اند هم یکسری فریم ورک و کتابخونه داره که کار شما رو توی کد نویسی خیلی راحت میکنه و این بستگی به زبون برنامه نویسی شما داره که از کدوم اونها استفاده کنیدمثلا برای php یک فریمورک خیلی معروف laravel هستش یا برای python فریمورک Django .و کلی کتابخونه که هر کدوم برای یه کاری ساخته شدن.ما بالاتر زبان جاوااسکریپت رو به عنوانه یک زبان بک اند نام بردیم ! مگه این واسه فرانت اند نبود ؟ چرااما به کمک nodejs ما میتونیم با زبان javascript هم بک اند بنویسیم.داستان پیدایش nodejs جالبه اگه قسمت قبلی ما رو گوش دادید پس حتما با زبان های مفصری آشنا هستید.و احتمالا تا الان متوجه شدید که اگه مرورگر کد های جاوااسکریپت ما رو اجرا میکنه , قطعا یه مفصر جاوااسکریپت دارهیه سری ازبرنامه نویس های عزیز اومدن با دستکاری کردن مفصر جاوا اسکریپتی که تو مرورگر کرومیم بود nodejs رو خلق و در سال 2009 به صورت رسمی به دنیا معرفی کردن. که خیلی خیلی ممنونیم ازشون :)ما قبل تر گفتیم که backend و frontend جدا از هم پیاده سازی میشن ام پس چطوری به هم وصل میشن ؟بک اند و فرانت اند از طریق یه چیزی به اسم API باهم صحبت میکنن که بعد ها به صورت مفصل توضیحش میدیم اما در حال حاضر شما به عنوان یک زبان مشترک برای صحبت کردن این دو تا در نظرش بگیرید .یادتون باشه کهحتما بعد از این پادکست در مورد این چیزهایی که توضیح دادیم سرچ بیشتری انجام بدید و عمیق تربا این مطالب آشنا بشیداپلیکیشن های دسکتاپدر اصل یکی از شاخه های مهم و قدیمی برنامه نویسی نوشتن برنامه برای همین کامپیوتر یا لپتاپ هایی هستش که دیگه امروزه تقریبا تو خونه هممون وجود داره.اما جالبه که بدونید بجز windows و mac os که سیستم عامل های خیلی معروفی تو دنیا هستن ما کلی سیستم عامل دیگه هم برای کامپیوتر ها داریم ! که البته اکثریت اونها بر مبنای یه هسته ای به نام linux هستن سیستم عامل هایی مثل : ubuntu , sent os , debian و کلی سیستم عامل های دیگه که خیلی خیلی خوب هستن اما متاسفانه بجز برنامه نویس ها آدم های خیلی زیادی ازشون استفاده نمیکننتقریبا با هر زبونی ما میتونیم برای هر کدوم ازاین سیستم عامل ها برنامه نویسی کنیم البته در بعضی زبون ها این ویژگی خود به خود وجود نداره و ما باید از یه سری ابزارها برای این کار استفاده کنیم.ابزار هایی مثل .netcore برای C# یا electron برای javascriptس Bee ware برای python و کلی ابزارات دیگه که به ما برای این کار کمک میکنن.(میتونیم اینجا توضیحات بیشتری در مورد این ابزار ها بدیم )خیلی از این ابزار ها در ابتدای کار این زبون ها وجود نداشتن و رفته رفته با محبوبیت اون ها در بین برنامه نویس ها , ابزار های کمکی اون ها هم بیشتر شدهمونطور که دیدید یک سیستم عامل محدود به یک زبان برنامه نویسی نمیشه و قطعا محدود به این زبون هایی که ما گفتیم هم نمیشهتوضیحاتی که دادیم خیلی مختصر بود تا شما یک آشنایی کلی با این شاخه پیدا کنیدو ما حتما در قسمت های آینده بیشتر در موردشون صحبت میکنمودر آخر یک اختتامیه با DeskTop applicationsشاید تا الان اسم هایی مثل ubuntu , centos , Debian , mac os رو شنیده باشیدشاید تو دنیای آدم های عادی فقط یک سیستم عامل وجود داشته باشه به اسم windows اما برای ما برنامه نویس ها تعدادش خیلی بیشتر از این حرف هاستاین ها هم خیلی خیلی سیستم عامل های خوبی هستن و هر کدوم برای یک سری کار ها از بقیه مناسب ترنپس حتما تا الان به این سوال رسیدید که &quot;با چه زبانهای برنامه نویسی برای این همه سیستم عامل مختلف برنامه مینویسند&quot; ؟جواب این سوال کوتاه نیست اما بسیار شبیه به جواب های قبلی میشهبرای هر کدوم از این سیستم عامل ها کلی زبون وجود داره اما ما اینجا بهترین هاش رو میگیمبرای windows : شما میتونید با C# , java , javascript , python هر برنامه ای که دوست داشتید از یک ماشین حساب گرفته تا برنامه های حساب داری یا برنامه ای مثل whatsapp بنویسید.از mac os نسبت به ویندوز زبان های کمتری پشتیبانی میکنند اما یک زبان اختصاصی به اسم swift وجود داره که همونطور که بالاترمعرفیش کردیم برای سیستم عامل mac os هم میتونید باهاش برنامه نویسی کنیددر اصل هسته ی اکثریت ما بقی سیستم عامل ها linux هستش و برای این سیستم عامل ها بهترین گزینه ها python , java هستن.همونطور که دیدید یک سیستم عامل محدود به یک زبان برنامه نویسی نمیشه و قطعا محدود به این زبون هایی که ما گفتیم هم نمیشه برای همه ی این زبان ها هم تعداد خیلی زیادی کتابخونه و ابزار وجود داره تا ما رو تو نوشتن برنامه هامون کمک کننو ما حتما در قسمت های آینده بیشتر در موردشون صحبت میکنمحرف آخرخب اینم از اینم این!امیدوارم این قسمت رو دوست داشته باشید و حوصلتون از طولانی بودنش سر نرفته باشه ، اگر کسی رو میشناسید که فکر میکنید به یکی از این زمینه ها علاقه داره با فرستادن این پادکست بهش کمک کنید.تا قسمتای بعدی ، خدافظ :)))</description>
                <category>اینترن پلاس پلاس</category>
                <author>intern plus plus</author>
                <pubDate>Sat, 02 May 2020 11:16:45 +0430</pubDate>
            </item>
            </channel>
</rss>