برنامهنویسی در عمل - محاسبات اطلاعات
✅ سرفصل و جزئیات آموزش
آنچه یاد خواهید گرفت:
- درک اصول بنیادی برنامهنویسی و مباحث منتخب از جمله اصطلاحاتی مانند اطلاعات، الگوریتم، سیستم کدنویسی، داده، برنامه
- بررسی نحوه استفاده از تایپهای سفارشی برای نمایش اطلاعات فرآیند
- نگاهی دیگر به مفهوم برنامهنویسی شیگرا و دامنه کاربرد آن برای تعریف قرارداد بین concerns جداگانه
- درک ایده اصلی و محدوده استفاده از تعریفهای ناشناس، جزئی و جنریک برای نمایش اطلاعات فرآیند با استفاده از تایپها
- طراحی یک برنامه با وابستگیهای یکطرفه که با الگوهای طراحی لایهای سازگار است و در نتیجه بهرهوری از کار گروهی را افزایش میدهد.
- یاد میگیرید که چگونه ارتباط دو طرفه لایهها را با استفاده از callbacks، رویدادها، برنامهنویسی واکنشگرا، تزریق وابستگی و وارونگی کنترل پیاده کنید.
- بازبینی الگوی طراحی تزریق وابستگی (وارونگی کنترل) برای پیادهسازی تست مستقل concerns جداگانه
پیشنیازهای دوره
- شما باید از پیش مخزن گیتهاب mpostol و TP را روی کامپیوتر خود کلون کرده و اطمینان حاصل کنید که میتوانید راهحل محاسبات اطلاعات را باز کرده، بسازید و تست کنید.
- اگر دوره برنامهنویسی در عمل، خلاصه اجرایی را گذراندهاید، اگر چه ضروری نیست اما کمککننده خواهد بود.
- شما باید با اصول بنیادی برنامهنویسی آشنا باشید و اصطلاحات زیر را درک کرده باشید - دستورالعمل، متد، تایپ مقدار، تایپهای مرجع، کلاس، رابط و غیره
- تجربه برنامهنویسی لازم نیست اما برخی مهارتها در زمینه اصول برنامهنویسی شیگرا کمککننده خواهد بود.
توضیحات دوره
این دوره در مورد محاسبات اطلاعات در عمل است. ما با این جمله شروع خواهیم کرد که عنوان دوره کمی تحریکآمیز است؛ زیرا اطلاعات انتزاعی است و نمیتواند مورد پردازش مستقیم توسط کامپیوتر قرار گیرد، حتی اگر کامپیوتر و الگوریتم پیادهسازی شده یک ربات هوش مصنوعی قدرتمند باشد که قادر به درک گفتار انسان و تولید نوشتههای عمیق و قابل فهم برای انسانها باشد. در طول یادگیری، ما اصطلاحات مانند اطلاعات فرآیند و الگوریتم را تفکیک میکنیم. اطلاعات فرآیند وضعیت و رفتار یک فرآیند فیزیکی مرتبط را توصیف میکند. الگوریتم نیز در واقع دانشی است که توصیف میکند چگونه مشکلات مرتبط با فرآیند فیزیکی مورد نظر را حل کنیم. این دوره به مباحثی میپردازد که برای غلبه بر این عدم سازگاری در عمل ضروری هستند تا بتوان از کامپیوترها استفاده کرد.
هدف اصلی دوره تمرکز بر یادگیری است، به این معنا که روی پذیرش دانش تأکید میشود. ما روی قوانین یادگیری مرتبط با محاسبات اطلاعات، نه آموزش در یک زبان خاص یا ابزار توسعه تأکید کردهایم. برای عملی کردن نتایج یادگیری، مثالهای عملی ضروری هستند. برای جلوگیری از بارگذاری بیش از حد مثالها با جزئیات غیرضروری و غیرمهم، پیشنهاد میکنیم از مثالهای گسترش یافته استفاده کنیم. منظور ما از مثالهای گسترش یافته، مثالهایی است که به عنوان تستهای واحد مستقل قابل اجرا هستند.
بدین ترتیب، شما میتوانید نه تنها یک الگو را مشاهده کنید بلکه رفتار را نیز ردیابی کنید.ما معتقدیم که این موضوع همچنین قابلیت استفاده مجدد از مثالها را بهبود میبخشد. به طور ذاتی، تستهای واحد برای اعتبارسنجی درستی و سازگاری یک برنامه مورد استفاده قرار میگیرند. نقش آزمونهای واحد گنجانده شده در مثالهای ضمیمه بسیار متفاوت است. آنها با ارزشهای آموزشی طراحی شدهاند. به طور ذاتی، آنها برای قابل فهم کردن مثالها و همچنین تحلیل رفتار الگوهای کدی که در اینجا ارائه شدهاند استفاده میشوند. در نتیجه این رویکرد، مثالها با جزئیات غیرضروری که برای اجرای آنها به عنوان بخشی از یک برنامه کامل لازم است، مشوش نمیشوند.
این دوره عضوی از مجموعه دورههای تحت عنوان برنامهنویسی در عمل است. بنابراین، جزئیات بیشتری درباره قوانین حاکم بر دوره را میتوانید در دوره آزاد مستقل تحت عنوان «برنامهنویسی در عمل - خلاصه اجرایی» بیابید.
اصول محاسبات اطلاعات
شما خواهید آموخت که اطلاعات فرآیند یک انتزاع است و بنابراین نمیتواند موضوع پردازش توسط هیچ ماشین فیزیکی، از جمله کامپیوترها باشد. این عدم سازگاری با استفاده از سیستمهای کدنویسی قابل حل است. در واقع، اینگونه ما در حال محاسبه داده هستیم اما نه اطلاعات
خوشبختانه، این روش به ما امکان میدهد که چالش اینکه همان اطلاعات میتواند تعداد بیپایانی از نمایشها داشته باشد را مدیریت کنیم. ما به یک نیروی محرکه - یک موتور - برای تحقق پردازش نیاز داریم. امروزه این موتور همان کامپیوتر باینری است. بنابراین، در زمینه محاسبات اطلاعات، ما باید با دو نوع اطلاعات: اطلاعات فرآیند و الگوریتم، سروکار داشته باشیم. اطلاعات فرآیند وضعیت و رفتار یک فرآیند مرتبط و به نوبه خود، الگوریتم، اطلاعات نحوه حل مسأله انتخاب شده را توصیف میکند. هر دو به طرز نزدیکی با هم مرتبط هستند و باید به طور همزمان با استفاده از یک زبان برنامهنویسی که به عنوان یک نسخه از رفتار رایانه و نمایش اطلاعات یک فرآیند در نظر گرفته شده، بیان شوند.
کامپیوترها دستگاههای برنامهپذیر هستند و به نوعی برنامه برای کنترل نیاز دارند. برای این کار، ما از زبانهای سطح بالا که بر مبنای الفبای مشتق شده از الفبای لاتین است، استفاده میکنیم. سینتکس این زبانها مبتنی بر کلیدواژهها است که از زبان طبیعی انگلیسی و سمانتیکها و از مفاهیم برنامهنویسی شیگرا پشتیبانی میکند. به طور غیررسمی، این زبانها برای تولید متنی طراحی شدهاند که بیشتر قابل فهم برای انسان و استفاده آسانتر باشد.
زبانهای مدرن به طور مداوم از مفهوم تایپ برای توصیف نمایش اطلاعات فرآیند و پیادهسازی الگوریتمها استفاده میکنند. بخشی که به یادآوری اصول محاسبات اطلاعات اختصاص داده شده است، یک نقطه ورود به یادگیری بیشتر جنبههای منتخب مرتبط با کاربرد تایپها و الگوهای طراحی متن برنامه است. مفهوم برنامهنویسی شیگرا پایهگذار این مسیر یادگیری است.
نمایش اطلاعات با استفاده از تایپها و برنامهنویسی شیگرا
در این بخش از دوره، ما تعاریف تایپ را بهعنوان بخشی از یک زبان برنامهنویسی که مجموعهای از قوانین سینتکس و سمانتیک است که یک متن از برنامه کامپیوتری را اداره میکند، شناسایی میکنیم. ایده اصلی پشت تایپهای سفارشی، امکان نمایش تقریباً هر اطلاعات فرآیند به عنوان موضوع محاسبات است. تایپها برای کنترل ثبات برنامه استفاده میشوند و اگر زبان برنامهنویسی به دقت تایپگذاری شده باشد، میتوانند استحکام نتایج توسعه را بهبود بخشند.
این دوره شما را برای تعریف تایپهای سفارشی جدید آماده میکند. شما خواهید آموخت که با استفاده از زبانهای برنامهنویسی مدرن، تایپهای جدید میتوانند از ابتدا تعیین شوند یا از تایپهای موجود مشتق شوند. برای این کار مفهوم برنامهنویسی شیگرا بسیار کمک کننده است. علاوه بر این، بهکارگیری این مفهوم به ما اجازه میدهد تا مشکلات پلیمورفیسم را حل کنیم و همچنین قابلیت همکاری بخشهای نرمافزار برنامه را با استفاده از انتزاع، وراثت و کپسولهسازی سازماندهی کنیم. انتزاع را میتوان به عنوان یک قرارداد شناخت که برای هماهنگی فرآیند توسعه بخشهای نرمافزاری استفاده میشود، شناسایی کرد.
در طول دوره، ما همچنین زمان معقولی را صرف یادگیری مکانیزمهای مدیریت متن منتخب برای تقویت فرآیند تعریف تایپها میکنیم. پس از دوره، شما ایده اصلی و دامنه کاربرد تعاریف ناشناس، جزئی و جنریک را برای نمایش اطلاعات فرآیند با استفاده از تایپها درک خواهید کرد.
به عنوان نتیجه استفاده از تایپهای ناشناس، کامپایلر، تعریف تایپ را از عبارت ارزیابی شده به عنوان یک مقدار استنتاج میکند. در طول دوره، بیشتر درباره نحوه استفاده از این روش تعریف تایپ سفارشی برای نمایش داده خارجی و استفاده از آن برای بررسی ثبات یاد خواهید گرفت. داده خارجی موضوع بررسی دقیق نیستند اما به عنوان داده شناخته میشوند که در خارج از فرآیند میزبانی برنامه مدیریت میشوند.
معمولاً، برای زبانهای برنامهنویسی با تایپهای به دقت تعیین شده، تایپ یک متغیر ممکن است توسط یک توسعهدهنده منصوب یا توسط کامپایلر استنتاج شود. در طول دوره، ما گزینه بعدی را بررسی میکنیم، که تولید خودکار تعریف تایپ مورد نیاز از متادیتا با استفاده از ابزارهای توسعه است. در طول دوره، شما بیشتر خواهید آموخت که چگونه بخشهای تولید خودکار را با بخشهای توسعهدهنده ترکیب کنید.
امکان استفاده مجدد از نتایج کار قبلی بسیار اهمیت دارد زیرا بهرهوری اقتصادی را بهبود میبخشد، برای قابلیت اطمینان مفید است و هزینههای آموزشی را کاهش میدهد. مفهوم تعریف جنریک، ویژگی زبان برنامهنویسی بعدی در مدیریت متن است که امکانات اتوماسیون تعریف تایپهای سفارشی را با استفاده از قالبهای پارامتری فراهم میکند.
پیادهسازی الگوریتم
نمایش اطلاعات فرآیند و پیادهسازی الگوریتم به طرز نزدیکی به یکدیگر مرتبط هستند و باید موضوع توسعه یک برنامه کامپیوتری با استفاده از یک زبان برنامهنویسی انتخاب شده باشند. برنامههای کامپیوتری چرخه عمر خود را به عنوان متنی آغاز میکنند که باید با این زبان سازگار باشد. این دوره به متدها و الگوهایی میپردازد که میتوان برای مدیریت متن برنامه به عنوان یک کل مورد استفاده قرار داد. با هدف آسانتر کردن کار گروهی، اجازه دادن به تست مستقل، جداسازی نتایج توسعه از تغییرات فناوری و آسانتر کردن مقیاسپذیری را میتوان به عنوان مثال موارد مهم نام برد. برای کاهش هزینه تولید و بهبود قدرت، پیشنهاد میشود متن برنامه کامپیوتری را به فرگمنتهای خودمختار سازماندهی کنیم که به وظایف معمول رسیدگی میکنند. در این راستا الگوهای طراحی متعددی قابل کاربرد هستند، اما الگوی طراحی لایهای مناسبترین گزینه برای بهکارگیری این برنامه به عنوان یک کل است.
توسعه برنامهها باید با تحقیق در مورد دانش مفیدی که به حل یک مشکل مرتبط کمک میکند یا به هدف محاسباتی میرسد، آغاز شود. این دانش به عنوان یک کل تحت عنوان الگوریتم اطلاق میشود. جداسازی concerns یک مفهوم بسیار مفید در حین کار روی الگوریتمهاست. از جامعهشناسی میدانیم که جداسازی نگرانیها عملکرد تفکر ما را بهبود میبخشد زیرا در نتیجه میتوانیم کمتر به موضوعات مستقل با تداخل حداقلی فکر کنیم. بنابراین برای بهبود بهرهوری خود باید در حین کار روی متن برنامه کامپیوتری از جداسازی استفاده کنیم. شما خواهید آموخت که چالش اصلی این است که چه زمانی و کجا باید حین فکر کردن به راهحل یا حین پیادهسازی آن به عنوان متن، با جداسازی concerns سروکار داشته باشیم.
پیشنهاد میشود این جداسازی را با استفاده از الگوی طراحی لایهای برنامه پیادهسازی کنیم. در طول دوره یاد میگیریم که با تشکر از این رویکرد میتوان مزایای زیر: جداسازی concerns، توسعه همزمان، تستپذیری مستقل، مقاومت در برابر تغییرات فناوری و مقیاسپذیری را حاصل کرد. در نهایت، شما خواهید آموخت که چگونه زمان توسعه و زمان ورود به بازار را کاهش دهید. معمولاً در مورد الگوی طراحی لایهای اعمال شده روی برنامه به عنوان یک کل میتوان سه لایه: لایههای نمایش، منطق و داده را تشخیص داد. آموختن درباره پیادهسازی، مسئولیت لایهها و مزایای مورد انتظار، نتایج یادگیری بعدی خواهد بود.
لایهها ممکن است با استفاده از مجموعهای از تعاریف تایپسفارشی پیادهسازی شوند. این تعریفها باید یا در لایه خودکفا باشند، یا ممکن است به اعلانهایی وابسته باشند که توسط لایه پایینتر ارائه شدهاند. در طول دوره، شما یاد خواهید گرفت که چگونه عضویت را شناسایی کنید. برای اینکه لایه روشن باشد، باید فرض شود که هر تایپ فقط متعلق به یک مجموعه، یک لایه است. به این ترتیب، ما بحث درباره مجموعههای ریاضی را به بررسی گروهبندی تایپها تبدیل میکنیم. هدف اصلی حفظ بحث به صورت عملی است.
به طور ذاتی، الگوی طراحی برنامهای لایهای به معنای سازماندهی آن است، که در آن میتوانیم انتیتیهای مستقل یک برنامه مرتبط با یکدیگر را با ایجاد یک سلسلهمراتب از بالا به پایین تشخیص دهیم. رابطه بالا به پایین به این معناست که لایه بالاتر تنها به اعلانهایی که توسط لایه زیرین ارائه شدهاند، اشاره میکند. شما خواهید آموخت که این یک الگوی زمان کامپایل است. در رانتایم، ما باید کنترل جریان و جریان داده را در هر دو جهت بین لایهها بررسی کنیم. بنابراین، چالش بعدی که در دوره مورد توجه قرار میگیرد، نحوه پیادهسازی ارتباط دوطرفه لایهها در ران تایم با استفاده از رابطه وابستگی یکطرفه است. شما یاد خواهید گرفت که ارتباط بین لایهها میتواند به کنترل جریان، انتقال داده و نوتیفیکیشن رویداد دستهبندی شود. در طول دوره، برای عملی کردن نتایج یادگیری، ما مثالهای مختلفی از ارتباط بین لایهها، از جمله ویژگیها، callbacks، رویدادها، برنامهنویسی واکنشگرا و تزریق وابستگی را بررسی میکنیم. برخی از آنها همچنین میتوانند به عنوان وارونگی کنترل نامیده شوند.
بخش بعدی دوره به کاربردپذیری الگوی طراحی تزریق وابستگی در عمل میپردازد. در طول دوره، به طور ویژه تأکید میشود که نکته اصلی این الگوی طراحی، تخصیص یک مرجع به یک متغیر انتزاعی به یک تایپ مرجع نامرئی در لوکیشن مورد نظر به دلیلی خاص است. ما این الگو را تزریق وابستگی نامیدیم تا به نوعی این سناریو را از استفاده صرف از برنامهنویسی شیگرا متمایز کنیم.
در این حالت، ما از برنامهنویسی شیگرا برای رسیدگی به جداسازی concerns استفاده میکنیم. یک concern مورد استفاده است و دیگری پیادهسازی یک تایپ خاص است. بنابراین به طور مختصر، تزریق وابستگی یک الگوی طراحی است که در آن ما از یک انتزاع به جای یک مرجع تایپ خاص ناشناخته به دلیل نمونه مشخص استفاده میکنیم تا این نمونه را از یک مکان به مکان دیگر منتقل کنیم. شما مثالهای عملی را بررسی خواهید کرد که تست مستقل و ارتباط دوطرفه بین لایهها را نشان میدهد.
این الگوی طراحی خاص، انتزاع را برای ایجاد توافق بین ایجاد و استفاده از یک نمونه پیادهسازی میکند. این انتزاع برای تعیین تایپ ویژگی (تزریق ویژگی) یا تایپ پارامتر رسمی متد یا constructor (تزریق متد یا constructor) به کار میرود. این الگوی طراحی نیاز به رویتپذیری تعریف خاصی از تایپ عینی را در لوکیشن مورد نظر برنامه از بین میبرد.
این دوره برای چه کسانی مناسب است؟
- توسعهدهندگان نرمافزار سطح ارشد و سطح متوسط که کنجکاو در بهبود مهارتهای برنامهنویسی خود هستند.
- معماران نرمافزار سطح ورود که به دنبال دانش و مهارتهای لازم برای انجام طراحی معماری برنامهها هستند.
- مدرسان جدی که به بهبود توسعه آموزش مهارتهای توسعه نرمافزار اهمیت میدهند.
- دانشجویانی که کلاسهای پوشش داده شده توسعه نرمافزار یا معادل آن را گذراندهاند
- رهبران پروژههای توسعه نرمافزار که مسئول مدیریت کار گروهی، تهیه مستندات، اشکالزدایی، بهینهسازی کد و غیره هستند.
برنامهنویسی در عمل - محاسبات اطلاعات
-
مقدمه 15:37
-
آزمون مقدمه None
-
اطلاعات در مقابل داده 13:04
-
الگوریتم در مقابل برنامه 08:06
-
سیستم کدنویسی در مقابل تایپ 28:17
-
تایپهای سفارشی 29:45
-
برنامهنویسی شیگرا 38:24
-
تایپهای ناشناس 32:02
-
تعاریف جزئی 39:44
-
تعاریف جنریک 26:40
-
طرح کلی الگوی طراحی لایهای برنامه 30:47
-
پیادهسازی الگوی طراحی لایهای برنامه 28:52
-
طرح کلی ارتباط بین لایهها 14:36
-
استقرار ارتباط بین لایهها 37:12
-
طرح کلی تزریق وابستگی 21:05
-
پیادهسازی تزریق وابستگی 32:23
-
نتیجه گیری 30:04
مشخصات آموزش
برنامهنویسی در عمل - محاسبات اطلاعات
- تاریخ به روز رسانی: 1404/10/04
- سطح دوره:متوسط
- تعداد درس:17
- مدت زمان :07:06:38
- حجم :6.11GB
- زبان:دوبله زبان فارسی
- دوره آموزشی:AI Academy