<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های زهرا تقی پور</title>
        <link>https://virgool.io/feed/@zahraeset</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-24 08:23:43</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1896828/avatar/vyhmdu.jpg?height=120&amp;width=120</url>
            <title>زهرا تقی پور</title>
            <link>https://virgool.io/@zahraeset</link>
        </image>

                    <item>
                <title>Why OOP is good?!</title>
                <link>https://virgool.io/@zahraeset/why-oop-is-good-dh1gkvi17zck</link>
                <description>سلام به همه *-*دومین مقاله خود را با نام و یادی از OOP آغاز می کنیم. OOP منتقدان زیادی داره. اما به هر حال یکی از پارادایم های محبوب به حساب میاد پس قطعا یه چیزایی در خودش داشته:) که قراره تو این مقاله مختصرا بهش بپردازم.مزیت های استفاده از OOP1.  ‏troubleshootingبه دلیل ماهیت modular بودن oop، پیدا کردن خطاها راحت تره. ینی وقتی به مشکلی برمی خوریم نیاز نیست خط به خط کد رو بررسی کنیم. می تونیم از خودمون بپرسیم خب الان مشکل از کدوم ابجکته؟؟ و بریم همون جا دنبالش بگردیم. چون object ها self-contained هستند. هر آبجکت دیتاها و رفتارهای خودشو داره و کاری به بقیه نداره. 2. ‏Reuseیکی دیگه از قابلیت هایی که oop به ما میده امکان استفاده مجدد هست که به لطف inheritance اتفاق افتاده. هر جا که دیتا و منطق مشترکی بین دو یا چند آبجکت می بینیم می تونیم اون ها رو در قالب یک کلاس قرار بدیم و ازش ارث بری کنیم. مثلا مدل های مختلفی از car توی برنامه مون داریم که هر کدوم آپشن های مخصوص به خودشو داره اما همه car ها متد drive رو دارن پس نیازی نیست برای هر کدوم جداگانه این متد تعریف بشه. متد drive رو فقط یک بار توی کلاس پدر تعریف می کنیم.از طرفی همون طور که گفتم آبجکت ها از هم مستقل اند پس ما حتی می تونیم بدون دردسر آبجکت ای رو که تو یه برنامه مون ساختیم برداریم و توی یه برنامه دیگه ازش استفاده کنیم.3.‏ ‏Flexibilityیکی از مهم ترین مزیت هایی که oop داره flexibility هست که این رو مدیون polymorphism هست. خیلی ساده بگم مثلا می تونیم یه آبجکت پدر رو با بچه هاش جا به جا کنیم. ینی آبجکت از نوع پدره اما موقع ساخت از کلاس بچه اش می سازیمش. مثلا توی همون مثال car، آبجکت میتونه از هر کدوم از کلاس های بچه باشه و بعدا اگه کلاس جدیدی هم اضافه بشه نیازی نیست کدمون دست بخوره کافیه آبجکتمون رو از اون نوع جدید بسازیم و فانکشن هایی که توی کلاس پدر هستن با همه این بچه ها به درستی کار می کنن. مثلا متد drive  هم با RaceCar کار میکنه هم با Limousine !4. ‏Effective problem solving توی طراحی الگوریتم یه روشی داشتم به نام divide and conquer. میگه مسئله رو بشکن به زیرمسئله های کوچیک تر که حلش آسون تره و از ادغام کردن جواب هاشون به حل مسئله اصلی میرسی. oop هم دقیقا داره همین کار رو میکنه ما مسئله مون رو میشکنیم به کلاس ها و هر کلاسی دغدغه ها و مسائل خودشو داره و خودش حلشون میکنه و از همکاری این کلاس ها با هم مسائل پیچیده تر حل میشن... منابع:https://www.roberthalf.com/us/en/insights/career-development/4-advantages-of-object-oriented-programminghttps://www.educba.com/advantages-of-oop/https://myloview.com/poster-flat-design-with-people-oop-object-oriented-programming-acronym-no-FCD9EB1 </description>
                <category>زهرا تقی پور</category>
                <author>زهرا تقی پور</author>
                <pubDate>Tue, 17 Oct 2023 16:05:22 +0330</pubDate>
            </item>
                    <item>
                <title>Functional Programming</title>
                <link>https://virgool.io/@zahraeset/functional-programming-ubfoj1czoni1</link>
                <description>سلام به همه.بی مقدمه این اولین پست من در ویرگوله! میخوام راجع به یکی از پارادایم های فراموش شده دنیای برنامه نویسی حرف بزنم. میگم فراموش شده، چون همون طور که اگه یکم دستتون تو کار باشه میدونید که از ترم 2  دانشگاه که برنامه نویسی پیشرفته پاس می کنیم با این بنده خدا کات می کنیم و دل در گرو OOP که میشه گفت شناخته شده ترین پارادیم حال حاضر هست می بندیم:)اینجا می خواهیم ببینیم Functional Programming (FP) که بود و چه کرد؟اول از همه چه پارادایم هایی داریم؟ به طور کلی میشه اینجوری تقسیم کرد:تقسیم بندی پارادایم های برنامه نویسیخب اگه انتظار دارید الان بخوام بشینم دونه دونه همه رو توضیح بدم سخت در اشتباهید. من فقط fp رو خوندم:))برای اینکه وقتتون رو نگیرم اول ببینید این مقاله به دردتون می خوره؟! پس آنچه در این مقاله خواهید خواند:تولد FP‏FP چیست؟ چرا FP آری؟؟ [مزایا]چرا FP خیر؟؟ [معایب]پایان باز [نتیجه گیری]منابع۱. تولد FPاگه بخوایم به اولین نشانه های ظهور FP برسیم باید خیلی فلش بک بزنیم در تاریخ. از استیو جابز و بیل گیتس و حتی آلن تورینگ عبور کنیم برسیم به سال ۱۹۳۰ و به استاد دکترای آلن تورینگ Alonzo Church یعنی این چهره:Alonzo Churchایشون اومد سیستم محاسباتی lambda calculus توسعه داد. این lambda calculus پایه و اساس همه زبان های برنامه نویسی functional هستش (حالا متوجه شدید اون عکس لاندای nonsense ای که اول مقاله گذاشتم به خاطر چیه!) بعد در سال 1950، اولین زبان FP به نام Lisp توسط آقای John McCarthy و کمپانی IBM ساخته میشه. بعدها هم زبان های FP دیگه ای مثل Sheme، Ocaml، Haskell، Scala و Clojure میان.۲. ‏FP چیست؟؟فانکشنال پروگرمینگ استایلی از برنامه نویسیه که building block ش فانکشنه. ولی آیا منظور از فانکشن رو واقعا می دونیم؟ موجوداتی که تا الان بهشون method، procedure، subroutin یا حتی function می گفتیم همین فانکشنی هست که در FP منظورمونه؟ جواب: نه الزامادر واقع ایده اصلی FP از همینجا میاد که ما به چی می گیم فانکشن. در FP مفهوم فانکشن کاملا منطبق بر فانکشن توی ریاضیه. یه ورودی ثابت، همیشه یه خروجی ثابت داره. شما با یه نگاه به پارامترای فانکشنت می تونی بگی خروجی چیه. این یعنی خاصیت refrential transparency. می تونی یه expretion رو با مقدارش جایگزین کنی به طوری که همیشه نتیجه یکی بشه. مثلا به جای 4+5 بزاری 9.Functionیه ویژگی دیگه که function توی دنیای FP داره اینه که هیچ side effect ای وجود نداره. مثل آپدیت کردن دیتابیس، تغییر یه متغیر global (البته ناگفته نماند در FP بخوای هم نمی تونی این مورد رو تغییر بدی چون همه data structure ها immutable هستند)، نوشتن توی خروجی یا فایل و ...به یه همچین فانکشن هایی که این دو ویژگی رو داشته باشند pure function گفته میشه.Pure Function3. چرا فانکشنال پروگرمینگ آری؟؟ [مزایا]خب شما فکر کن همه data structure هات immutable باشند اون وقت دیگه لازم نیست نگران باشی که همکارت بیاد یه فانکشن بنویسه و دیتای تو رو ببره اون تو تغییر بده. و بعد تو روز ها پس از روز ها دیباگ کنی تا بفهمی در خط n ام این دیتا تغییر کرده. نه! همچین اتفاقی نمیفته.x = [1, 2, 3]y=func(x)x?در مثال بالا مقدار x بعد از پاس دادن به فانکشن چی میشه؟ جواب: [1,2,3]. چون هر اتفاقی هم که توی func بیفته مطمئنیم x غیرقابل تغییره.پس اینجوری تست و دیباگ و فهم کد راحت تر شده. دوم اینکه همون طور که تو با همکارهات کمتر به مشکل میخوری، thread ها هم کمتر با هم به مشکل میخورن! چون هیچ کس نمی تونه دیتای اون یکی رو دست کاری کنه این یعنی thread safty داریم و اونم یعنی خیلی شیک و تمیز میشه parallelism داشت.4. چرا فانکشنال پروگرمینگ خیر؟؟ [معایب]حلا شما فکر کن یه دیتا استراکچر که ساختی دیگه تا ابد نمی تونی تغییرش بدی. پس اگه لازم شد تغییر بدیم چی کار کنیم؟ میریم یه کپی ازش میسازیم و سپس اون تغییر مورد نظر رو اعمال می کنیم. خب اینطوری رم رو نمی خوره؟ متاسفانه چرا. و همچنین کپی کردن کل data structure به جای تغییر روی همون object قبلی preformance رو پایین میاره که اینها از نیمه های تاریک FP هست. اما FPL ها معمولا به جای کپی کردن از تکنیک هایی مثل tail call optimisation, lazy evaluation, and smart linking استفاده می کنند تا preformance بهتر بشه.۵. پایان باز [نتیجه گیری]با خودم فکر کردم چه جمع بندی بهتر از اینکه FP رو با OOP مقایسه کنم و قضاوت رو به شما بسپارم! OOP VS. FP۶. منابعhttps://medium.com/twodigits/advantages-and-disadvantages-of-functional-programming-52a81c8bf446https://en.wikipedia.org/wiki/Functional_programminghttps://speakerdeck.com/geekingfrog/functional-programming-in-javascript-introhttps://youtu.be/0if71HOyVjY?si=AFlFKzy8ULVriMAb</description>
                <category>زهرا تقی پور</category>
                <author>زهرا تقی پور</author>
                <pubDate>Sun, 08 Oct 2023 10:01:40 +0330</pubDate>
            </item>
            </channel>
</rss>