🎍🧩
یادگیری پارادایمهای برنامهنویسی تأثیر زیادی در بهبود مهارتهای برنامهنویسی داره و میتونه خیلی دید بهتری بده:
۱. درک بهتر مفاهیم برنامهنویسی
۲. افزایش مهارت حل مسئله
۳. انعطافپذیری بیشتر در انتخاب تکنولوژیها
۴. درک بهتر کدهای دیگران
۵. تقویت تفکر منطقی و خلاقیت در برنامهنویسی
چطور بهتر یاد بگیریم؟
✔ با زبانهای چندپارادایمی مانند Python یا JavaScript کار کنید.
✔ یک پروژه را با رویکردهای مختلف پیادهسازی کنید و تفاوتها را بررسی کنید.
✔ کدهای دیگران را مطالعه کنید و از بهترین روشها یاد بگیرید.
چند تا لینک مفید:
freecodecamp.org/news/an-introduction-to-programming-paradigms
geeksforgeeks.org/introduction-of-programming-paradigms
datacamp.com/blog/introduction-to-programming-paradigms
یادگیری پارادایمهای برنامهنویسی تأثیر زیادی در بهبود مهارتهای برنامهنویسی داره و میتونه خیلی دید بهتری بده:
۱. درک بهتر مفاهیم برنامهنویسی
۲. افزایش مهارت حل مسئله
۳. انعطافپذیری بیشتر در انتخاب تکنولوژیها
۴. درک بهتر کدهای دیگران
۵. تقویت تفکر منطقی و خلاقیت در برنامهنویسی
چطور بهتر یاد بگیریم؟
✔ با زبانهای چندپارادایمی مانند Python یا JavaScript کار کنید.
✔ یک پروژه را با رویکردهای مختلف پیادهسازی کنید و تفاوتها را بررسی کنید.
✔ کدهای دیگران را مطالعه کنید و از بهترین روشها یاد بگیرید.
چند تا لینک مفید:
freecodecamp.org/news/an-introduction-to-programming-paradigms
geeksforgeeks.org/introduction-of-programming-paradigms
datacamp.com/blog/introduction-to-programming-paradigms
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
فرق بین Heap Memory و Stack Memory در جاواسکریپت؟
دیروز با یکی از شرکت ایرانی مصاحبه رفتم فارغ از یه
سری سوالات تکراری مباحثی مانند hoisting closure , type vs interface , prototype , hook ها و... از heap و stack مموری ازم پرسیدن و همچنین مدیرت درست heap در جاوااسکریپت!
۱ - استک مموری
- پشته (Stack) در JS برای ذخیره متغیرهای مقدار (Primitive Values) و فراخوانی توابع استفاده میشود.
- هر تابعی که فراخوانی شود، یک Stack Frame (قاب پشته) دریافت میکند که شامل متغیرهای محلی و پارامترهای آن تابع است.
- تخصیص حافظه در استک سریع و خودکار است.
۲ - هیپ مموری
- حافظه هیپ (Heap) برای ذخیره اشیاء (Objects) و دادههای غیر اولیه (Non-Primitive) استفاده میشود.
- حافظه در هیپ داینامیک تخصیص داده میشود و Garbage Collector آن را مدیریت میکند که هندل کردن این بر عهده برنامه نویس هست.
نکته مهم: هنگامی که یک شیء یا آرایه ساخته میشود، مقدار آن در Heap Memory ذخیره شده و آدرس (Reference) آن در Stack Memory قرار میگیرد.
خب نکته مهم دیگر این هست که اگر برنامه نویس داده زیادی را در heap ذحیره کند باید حتما بعد از استفاده مموری را آزاد کند تا سیستم دچار Memory Leak نشود که روش آزاد سازی هم به این شکل هست که اگر دیگر نیازی به داده ندارید، مقدار null یا undefined را به متغیر اختصاص دهید تا ارجاع از بین برود و یا میتونید از WeakMap استفاده کنید که خود به خود ارجاع های بدون استفاده را حذف میکند.
@DevTwitter | <Alireza Majdi/>
دیروز با یکی از شرکت ایرانی مصاحبه رفتم فارغ از یه
سری سوالات تکراری مباحثی مانند hoisting closure , type vs interface , prototype , hook ها و... از heap و stack مموری ازم پرسیدن و همچنین مدیرت درست heap در جاوااسکریپت!
۱ - استک مموری
- پشته (Stack) در JS برای ذخیره متغیرهای مقدار (Primitive Values) و فراخوانی توابع استفاده میشود.
- هر تابعی که فراخوانی شود، یک Stack Frame (قاب پشته) دریافت میکند که شامل متغیرهای محلی و پارامترهای آن تابع است.
- تخصیص حافظه در استک سریع و خودکار است.
۲ - هیپ مموری
- حافظه هیپ (Heap) برای ذخیره اشیاء (Objects) و دادههای غیر اولیه (Non-Primitive) استفاده میشود.
- حافظه در هیپ داینامیک تخصیص داده میشود و Garbage Collector آن را مدیریت میکند که هندل کردن این بر عهده برنامه نویس هست.
نکته مهم: هنگامی که یک شیء یا آرایه ساخته میشود، مقدار آن در Heap Memory ذخیره شده و آدرس (Reference) آن در Stack Memory قرار میگیرد.
خب نکته مهم دیگر این هست که اگر برنامه نویس داده زیادی را در heap ذحیره کند باید حتما بعد از استفاده مموری را آزاد کند تا سیستم دچار Memory Leak نشود که روش آزاد سازی هم به این شکل هست که اگر دیگر نیازی به داده ندارید، مقدار null یا undefined را به متغیر اختصاص دهید تا ارجاع از بین برود و یا میتونید از WeakMap استفاده کنید که خود به خود ارجاع های بدون استفاده را حذف میکند.
@DevTwitter | <Alireza Majdi/>
Forwarded from FullstacksJS — Academy
تو این پست یه سری نکته ها هست که خیلی دقیق نیست
درباره این پست زیاد میشه صحبت کرد.
یه ویس دربارش میگیرم.
درباره این پست زیاد میشه صحبت کرد.
یه ویس دربارش میگیرم.
عید همیشه فرصت خوبی برای یادگیری بوده
ما امسال تو دیجیشهر یک برنامه کارآموزی داریم تصمیم گرفتم برای کارآموزای تیمم (فرانت) یه پیش شادی آماده کنم😁💐
شامل:
کانسپت های جاوااسکریپت
ریکت
لینوکس
یه سری لینک های مفید رو هم گذاشتم که دیدنشون خالی از لطف نیست.
اینجا هم به اشتراک میذارم شاید برای دوستان دیگه هم مفید باشه❤️
https://roadmap.sh/r/peyk-shadi-2cwiq
ما امسال تو دیجیشهر یک برنامه کارآموزی داریم تصمیم گرفتم برای کارآموزای تیمم (فرانت) یه پیش شادی آماده کنم😁💐
شامل:
کانسپت های جاوااسکریپت
ریکت
لینوکس
یه سری لینک های مفید رو هم گذاشتم که دیدنشون خالی از لطف نیست.
اینجا هم به اشتراک میذارم شاید برای دوستان دیگه هم مفید باشه❤️
https://roadmap.sh/r/peyk-shadi-2cwiq
💙💙💙
امروز تقریبا شد دو سال که در مجموعه دیجیشهر به عنوان فرانتاند تیم لید فعالم و این دو سال برای من پر از تجربه های مختلف بوده که دوست دارم مهمتریناش رو به صورت یک جملهای اینجا بذارم:
۱. دیسیپلین کلید پیشرفت توی طولانی مدته.
۲. یادگیری رو به عنوان یه پروژه نگاه نکنید٬ یه روتینه.
۳. هر آدمی یه لمی داره و کار کردن با آدما خیلی میتونه پیچیده بشه اگه دقیق بهشون دقت نکنی.
۴. سافت اسکیل به اندازه هارد اسکلیل مهمه!
۵. اگه روز اول همکاری با یه مجموعه به این فکر کنی که چه برندی از خودت میخوای بسازی خیلی کارت راحتتر میشه.
۶. کنجکاو باش و سعی کن بیزنسی که داری براش ارزش خلق میکنی رو بفهمی.
۷. رو آدم ها حساب کن و بهشون شانس بده!
امروز تقریبا شد دو سال که در مجموعه دیجیشهر به عنوان فرانتاند تیم لید فعالم و این دو سال برای من پر از تجربه های مختلف بوده که دوست دارم مهمتریناش رو به صورت یک جملهای اینجا بذارم:
۱. دیسیپلین کلید پیشرفت توی طولانی مدته.
۲. یادگیری رو به عنوان یه پروژه نگاه نکنید٬ یه روتینه.
۳. هر آدمی یه لمی داره و کار کردن با آدما خیلی میتونه پیچیده بشه اگه دقیق بهشون دقت نکنی.
۴. سافت اسکیل به اندازه هارد اسکلیل مهمه!
۵. اگه روز اول همکاری با یه مجموعه به این فکر کنی که چه برندی از خودت میخوای بسازی خیلی کارت راحتتر میشه.
۶. کنجکاو باش و سعی کن بیزنسی که داری براش ارزش خلق میکنی رو بفهمی.
۷. رو آدم ها حساب کن و بهشون شانس بده!
👾15🍾13🔥2
سلام رفقا
با تاخیر عیدتون مبارک
امیدوارم امسال بتونید به هدفاتون پایبند باشید و خوب پیشرفت کنید.❤️
من بعد یه سفر پر ماجرا تازه یکم کارام رو جمع کردم و برگشتم به روتین دوستایی که قرار منتورینگ داشتیم و نرسیدیم جلساتشو بریم بهم پیام بدید که لطفا ست کنیم.
ارادت🫶
با تاخیر عیدتون مبارک
امیدوارم امسال بتونید به هدفاتون پایبند باشید و خوب پیشرفت کنید.❤️
من بعد یه سفر پر ماجرا تازه یکم کارام رو جمع کردم و برگشتم به روتین دوستایی که قرار منتورینگ داشتیم و نرسیدیم جلساتشو بریم بهم پیام بدید که لطفا ست کنیم.
ارادت🫶
🍾11👾2🍓1
🔧 اهمیت ریفکتور کردن کد (Refactoring) + منابع پیشنهادی
برنامهنویسی فقط نوشتن کد نیست، نگهداری و بهبود اون هم به همون اندازه مهمه.
ریفکتور کردن یعنی بازنویسی کد بدون تغییر در عملکردش، با هدف خواناتر، سادهتر و قابل نگهداریتر شدنش.
✅ چرا ریفکتور مهمه؟
کاهش پیچیدگی کد
جلوگیری از ایجاد باگ در آینده
آمادگی برای افزودن قابلیتهای جدید
همکاری بهتر در تیم
افزایش سرعت توسعه در بلندمدت
💡 نشونههایی که بهت میگن وقت ریفکتوره:
کدی که حتی خودت هم نمیفهمیش 😅
توابع خیلی طولانی
تکرار زیاد تو کد
وابستگیهای زیاد بین بخشها
📚 منابع پیشنهادی برای یادگیری ریفکتور:
🔹 کتاب "Refactoring" نوشتهی Martin Fowler
یه مرجع کلاسیک و کاربردی برای درک اصول و تکنیکهای ریفکتور.
🔹 وبسایت Refactoring.guru
ساده، مصور، و به شدت آموزنده!
🌐 https://refactoring.guru
برنامهنویسی فقط نوشتن کد نیست، نگهداری و بهبود اون هم به همون اندازه مهمه.
ریفکتور کردن یعنی بازنویسی کد بدون تغییر در عملکردش، با هدف خواناتر، سادهتر و قابل نگهداریتر شدنش.
✅ چرا ریفکتور مهمه؟
کاهش پیچیدگی کد
جلوگیری از ایجاد باگ در آینده
آمادگی برای افزودن قابلیتهای جدید
همکاری بهتر در تیم
افزایش سرعت توسعه در بلندمدت
💡 نشونههایی که بهت میگن وقت ریفکتوره:
کدی که حتی خودت هم نمیفهمیش 😅
توابع خیلی طولانی
تکرار زیاد تو کد
وابستگیهای زیاد بین بخشها
📚 منابع پیشنهادی برای یادگیری ریفکتور:
🔹 کتاب "Refactoring" نوشتهی Martin Fowler
یه مرجع کلاسیک و کاربردی برای درک اصول و تکنیکهای ریفکتور.
🔹 وبسایت Refactoring.guru
ساده، مصور، و به شدت آموزنده!
🌐 https://refactoring.guru
refactoring.guru
Refactoring and Design Patterns
Refactoring is a controllable process of improving code without creating new functionality. Design Patterns are typical solutions to the commonly occurring problems in software design.
🍾7👾3
این کتاب رو امروز تموم کردم و تصمیم گرفتم دیدمو بهش بگم:
این کتاب یه جورایی با هیچ کتاب دیگهای که خوندم شبیه نیست. انگار داری تیکههایی از خاطرات، خیالپردازیها و فکرای عجیب نویسنده رو ورق میزنی، بدون اینکه دنبال یه خط داستانی مشخص باشی. ریچارد براتیگان با یه لحن ساده ولی شاعرانه، از چیزای خیلی معمولی یه دنیای خاص ساخته. بعضی جاها خندهت میگیره، بعضی جاها یه حس تنهایی خاصی تو دل آدم میندازه. اگه دنبال یه داستان منظم و کلاسیکی، این کتاب شاید اذیتت کنه. ولی اگه دوست داری توی ذهن یه آدم خلاق و متفاوت پرسه بزنی، احتمالاً ازش خوشت میاد.
این کتاب یه جورایی با هیچ کتاب دیگهای که خوندم شبیه نیست. انگار داری تیکههایی از خاطرات، خیالپردازیها و فکرای عجیب نویسنده رو ورق میزنی، بدون اینکه دنبال یه خط داستانی مشخص باشی. ریچارد براتیگان با یه لحن ساده ولی شاعرانه، از چیزای خیلی معمولی یه دنیای خاص ساخته. بعضی جاها خندهت میگیره، بعضی جاها یه حس تنهایی خاصی تو دل آدم میندازه. اگه دنبال یه داستان منظم و کلاسیکی، این کتاب شاید اذیتت کنه. ولی اگه دوست داری توی ذهن یه آدم خلاق و متفاوت پرسه بزنی، احتمالاً ازش خوشت میاد.
🍾10
🎯 دعوت به همکاری در یک پروژه متنباز
سلام به جامعهی جاوااسکریپتیها 👋
ما داریم روی یه پایگاه دانش فارسی متنباز کار میکنیم و خوشحال میشیم شما هم کنارمون باشید.
🔧 تکنولوژی: JavaScript
🌍 هدف: ساخت یک مرجع دانش ساده و مفید به زبان فارسی
🤝 همکاری در توسعه، طراحی، محتوا و هر کاری که دوست دارید
اگه علاقهمند بودید، خوشحال میشم پیام بدید 💬
@arminshaikhy
سلام به جامعهی جاوااسکریپتیها 👋
ما داریم روی یه پایگاه دانش فارسی متنباز کار میکنیم و خوشحال میشیم شما هم کنارمون باشید.
🔧 تکنولوژی: JavaScript
🌍 هدف: ساخت یک مرجع دانش ساده و مفید به زبان فارسی
🤝 همکاری در توسعه، طراحی، محتوا و هر کاری که دوست دارید
اگه علاقهمند بودید، خوشحال میشم پیام بدید 💬
@arminshaikhy
🍾15👾2💩1
Forwarded from @danialbehzadi:mozilla.org دانیال بهزادی
بهترین آموزش گیتی که در این ۲۰−۲۵ سال اخیر دیدم:
https://web.archive.org/web/20161121145226/http://rypress.com:80/tutorials/git/index
https://web.archive.org/web/20161121145226/http://rypress.com:80/tutorials/git/index
web.archive.org
Ry’s Git Tutorial - RyPress
Ry’s Git Tutorial is a complete introduction to distributed
version control with a focus on practical command line usage. We explain Git’s robust branching, merging, and
collaboration capabilities from the ground up, so prior experience with
centralized systems…
version control with a focus on practical command line usage. We explain Git’s robust branching, merging, and
collaboration capabilities from the ground up, so prior experience with
centralized systems…
🔥3💯1
اخیراً با یکی از توسعهدهندههای پایتون برای پیادهسازی یک سرویس SSO با Node.js همکاری داشتم، و تجربهای پر از یادگیری بود — مخصوصاً از نظر تفاوتهای ذهنی بین دو زبان.
چالش اول برای اون، درک ماهیت asynchronous در Node.js بود. مفاهیمی مثل event loop و استفاده از async/await در مقایسه با مدل همگام پایتون، کاملاً متفاوت بودن و باعث شد در اوایل پروژه با پیچیدگیهایی مواجه بشه.
در مرحله بعد، کار با Express.js و ساختار routeها، middlewareها و ساختار کلی اپلیکیشن در Node.js براش جدید بود. با اینکه کانسپتها خیلی متفاوت نبودن، اما نحوه پیادهسازی و ابزارهای موجود فرق زیادی داشتن.
ما از TypeScript یا استانداردهایی مثل OAuth2 یا SAML استفاده نکردیم، بنابراین همه چیز به صورت سبکتر و سادهسازیشده پیادهسازی شد. همین موضوع باعث شد توسعه سریعتر پیش بره، ولی در عوض نیاز به دقت بیشتری توی طراحی و امنیت داشتیم.
جالبترین بخش ماجرا برای من، دیدن تلاش اون برای تطبیق با یک زبان و چارچوب جدید بود — و این بهم یادآوری کرد که زبان برنامهنویسی مهم نیست، بلکه طرز فکر توسعهدهنده است که نتیجه رو میسازه.
چالش اول برای اون، درک ماهیت asynchronous در Node.js بود. مفاهیمی مثل event loop و استفاده از async/await در مقایسه با مدل همگام پایتون، کاملاً متفاوت بودن و باعث شد در اوایل پروژه با پیچیدگیهایی مواجه بشه.
در مرحله بعد، کار با Express.js و ساختار routeها، middlewareها و ساختار کلی اپلیکیشن در Node.js براش جدید بود. با اینکه کانسپتها خیلی متفاوت نبودن، اما نحوه پیادهسازی و ابزارهای موجود فرق زیادی داشتن.
ما از TypeScript یا استانداردهایی مثل OAuth2 یا SAML استفاده نکردیم، بنابراین همه چیز به صورت سبکتر و سادهسازیشده پیادهسازی شد. همین موضوع باعث شد توسعه سریعتر پیش بره، ولی در عوض نیاز به دقت بیشتری توی طراحی و امنیت داشتیم.
جالبترین بخش ماجرا برای من، دیدن تلاش اون برای تطبیق با یک زبان و چارچوب جدید بود — و این بهم یادآوری کرد که زبان برنامهنویسی مهم نیست، بلکه طرز فکر توسعهدهنده است که نتیجه رو میسازه.
🔥12💯2
وی یکی از پروژهها، موقع توسعه یه بخش از اپلیکیشن، با مشکلی برخورد کردم که اولش خیلی ساده به نظر میرسید، اما باعث میشد اطلاعات اشتباهی به کاربر نشون داده بشه. ماجرا از اونجا شروع شد که کاربر موقع جستوجو یا جابهجا شدن سریع بین آیتمها، با سرعت بالا روی گزینههای مختلف کلیک میکرد و با هر تغییر، یه درخواست جدید برای گرفتن اطلاعات به سرور میرفت.
همهچیز ظاهراً درست کار میکرد — هر درخواست ارسال میشد و پاسخش هم میاومد. ولی بعضی وقتا یه اتفاق عجیب میافتاد: پاسخی که مربوط به درخواست قبلی بود، بعد از درخواست جدیدتر برمیگشت و باعث میشد دیتای اشتباهی توی صفحه نمایش داده بشه.
بعد از یه بررسی دقیقتر، فهمیدم با یه Race Condition طرفم — یعنی وقتی چند عملیات async با هم اجرا میشن و نتیجه به خاطر ترتیب نامناسب تموم شدنشون، بهم میریزه.
برای حلش اومدم یه راهحلی پیاده کردم که مطمئن بشم فقط آخرین درخواست باقی میمونه و درخواستهای قبلی یا نادیده گرفته میشن یا لغو. این کار رو میشه با چیزایی مثل AbortController یا چک کردن اینکه پاسخ مربوط به همون درخواست فعلیه انجام داد.
همهچیز ظاهراً درست کار میکرد — هر درخواست ارسال میشد و پاسخش هم میاومد. ولی بعضی وقتا یه اتفاق عجیب میافتاد: پاسخی که مربوط به درخواست قبلی بود، بعد از درخواست جدیدتر برمیگشت و باعث میشد دیتای اشتباهی توی صفحه نمایش داده بشه.
بعد از یه بررسی دقیقتر، فهمیدم با یه Race Condition طرفم — یعنی وقتی چند عملیات async با هم اجرا میشن و نتیجه به خاطر ترتیب نامناسب تموم شدنشون، بهم میریزه.
برای حلش اومدم یه راهحلی پیاده کردم که مطمئن بشم فقط آخرین درخواست باقی میمونه و درخواستهای قبلی یا نادیده گرفته میشن یا لغو. این کار رو میشه با چیزایی مثل AbortController یا چک کردن اینکه پاسخ مربوط به همون درخواست فعلیه انجام داد.
🔥14🍓2
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
برای کسایی که دوست دارن با n8n کار کنند، یک نفر یک سری پروژه درست کرده به همراه یک ویدیو ۲ ساعته که این پروژه ها توضیح میده. چون من خودم از این ابزار استفاده نمیکنم کیفیت پروژه ها و ویدیو را نمیدونم، ولی به نظر میاد که فیدبک مثبت گرفته.
Youtube: https://youtube.com/watch?v=8-nTKVnUnwM
@DevTwitter | <Mehdi Allahyari/>
Youtube: https://youtube.com/watch?v=8-nTKVnUnwM
@DevTwitter | <Mehdi Allahyari/>
🔥5⚡1
Forwarded from FullstacksJS — Academy
خطر هوش مصنوعی برای افراد سنیور:
استفاده از هوش مصنوعی چطوری می تونه بهمون آسیب بزنه؟
آیا اینکه هوش مصنوعی رو از فرایند توسعه حذف کنیم خوبه؟
مرز بین مثبت و منفی بودن هوش مصنوعی برای برنامه نویس ها کجا مشخص میشه؟
#exp #ai #competency #ide
استفاده از هوش مصنوعی چطوری می تونه بهمون آسیب بزنه؟
آیا اینکه هوش مصنوعی رو از فرایند توسعه حذف کنیم خوبه؟
مرز بین مثبت و منفی بودن هوش مصنوعی برای برنامه نویس ها کجا مشخص میشه؟
#exp #ai #competency #ide
🔥5
