یادگیری برنامه نویسی با بازی 🕹️✅
➊ CodeCombat
🚀 @coolycode
➊ CodeCombat
سبک: بازی ماجراجویی➋ CheckiO
مهارتها: یادگیری زبانهای برنامهنویسی (Python, JavaScript)
شما در قالب یک بازی فانتزی شخصیت خود را با نوشتن کد حرکت میدهید و دشمنان را شکست میدهید. این بازی برای مبتدیان و یادگیری اصول برنامهنویسی عالیه.
سبک: بازی حل معما➌ RoboCode
مهارتها: برنامهنویسی Python و JavaScript
این بازی مجموعهای از چالشهای کدنویسی است که با حل آنها مهارتهای خود را تقویت میکنید. مناسب برای افراد با دانش متوسط و پیشرفته.
سبک: مبارزه رباتها➍ TIS-100
مهارتها: یادگیری Java، تفکر الگوریتمی
در این بازی شما باید برای ربات خود کدی بنویسید تا در میدان مبارزه با رباتهای دیگر بجنگد. برای تقویت الگوریتمنویسی و استراتژی عالیه.
سبک: شبیهسازی برنامهنویسی سیستم➎ Human Resource Machine
مهارتها: یادگیری منطق سیستمهای سطحپایین، برنامهنویسی اسمبلی
یک بازی پازل پیچیده که در اون باید مدارها و سیستمهای کامپیوتری رو با کدنویسی درست کنی.
سبک: حل پازل
مهارتها: اصول برنامهنویسی و الگوریتمها
در این بازی شما باید دستورات سادهای برای حل پازلها به کارمندان بدهید. مناسب برای درک ساختارهای پایهای کدنوسی.
#programming
#programming
هر کدوم از زبان های برنامه نویسی در چه سالی به وجود اومدن ... ؟!
سال 95 خیلی پر بار بوده 🔻
Java | JavaScript | PHP | Ruby
⚡2😍2💯1
Forwarded from Ninja Learn | نینجا لرن
خب خب خب ورژنبندی اپلیکیشنها چیه؟ 📌
احتمالاً توی پروژهها دیدی که نسخه نرمافزارها یه چیزی مثل 1.2.3 هست. ولی این اعداد چه معنیای دارن؟ آیا یه ورژن 1.2.3 بهتر از 1.2.2ـه؟ بیاید یه بار برای همیشه اینو ببینیم
📌 استاندارد ورژنبندی (Semantic Versioning - SemVer)
ساختار استاندارد ورژنبندی معنایی (Semantic Versioning) معمولاً این شکلیه:
X (Major - تغییرات بزرگ)
وقتی این عدد تغییر کنه، یعنی کلی چیز عوض شده مثلاً سازگاری عقبگرد (backward compatibility) شکسته شده و ممکنه کدهای قدیمی دیگه کار نکنن یا به عبارتی BREAKING CHANGE به وجود اومده.
Y (Minor - قابلیتهای جدید)
اگه این عدد تغییر کنه، یعنی قابلیتای جدید اضافه شده ولی همچنان سازگاری با نسخه قبلی حفظ شده.
Z (Patch - رفع باگها و بهبودها)
فقط باگ فیکس یا بهینهسازیای جزئی انجام شده و هیچ قابلیت جدیدی اضافه نشده.
🔹 مثال عملی از ورژنبندی
فرض کن داریم روی یه اپلیکیشن کار میکنیم:
✅ 1.0.0 → نسخه اولیه منتشر شد.
✅ 1.1.0 → یه قابلیت جدید مثل ورود با گوگل اضافه شد.
✅ 1.1.1 → یه باگ توی صفحه لاگین فیکس شد.
✅ 2.0.0 → ساختار دیتابیس عوض شد و نسخههای قبلی دیگه کار نمیکنن.
🔍 پس کی باید Major، Minor یا Patch رو تغییر بدیم؟
وقتی API رو تغییر دادی و ممکنه کدای قدیمی دیگه کارنکنن؟
Major رو ببر بالا 🚀
یه فیچر جدید اضافه کردی ولی چیزی از قبل به مشکل نمیخوره؟
Minor رو ببر بالا 📈
فقط یه باگ کوچیک فیکس کردی؟
Patch رو ببر بالا 🛠️
🔹 انواع مختلف ورژن بندی؟
گاهی وقتا میبینی که ورژنا این شکلیه:
🔸 1.2.3-alpha → نسخه آزمایشی (قبل از انتشار اصلی)
🔸 1.2.3-beta → نسخه بتا، برای تست کاربرا
🔸 1.2.3-rc1 → نسخه Release Candidate که تقریباً آماده است
جمعبندی ✍
ورژنبندی معنایی باعث میشه بفهمیم یه نسخه چقدر تغییر کرده و آیا آپدیتش برای ما مشکلی ایجاد میکنه یا نه.
➖➖➖➖➖➖➖➖➖
احتمالاً توی پروژهها دیدی که نسخه نرمافزارها یه چیزی مثل 1.2.3 هست. ولی این اعداد چه معنیای دارن؟ آیا یه ورژن 1.2.3 بهتر از 1.2.2ـه؟ بیاید یه بار برای همیشه اینو ببینیم
📌 استاندارد ورژنبندی (Semantic Versioning - SemVer)
ساختار استاندارد ورژنبندی معنایی (Semantic Versioning) معمولاً این شکلیه:
X.Y.Z
X (Major - تغییرات بزرگ)
وقتی این عدد تغییر کنه، یعنی کلی چیز عوض شده مثلاً سازگاری عقبگرد (backward compatibility) شکسته شده و ممکنه کدهای قدیمی دیگه کار نکنن یا به عبارتی BREAKING CHANGE به وجود اومده.
Y (Minor - قابلیتهای جدید)
اگه این عدد تغییر کنه، یعنی قابلیتای جدید اضافه شده ولی همچنان سازگاری با نسخه قبلی حفظ شده.
Z (Patch - رفع باگها و بهبودها)
فقط باگ فیکس یا بهینهسازیای جزئی انجام شده و هیچ قابلیت جدیدی اضافه نشده.
🔹 مثال عملی از ورژنبندی
فرض کن داریم روی یه اپلیکیشن کار میکنیم:
✅ 1.0.0 → نسخه اولیه منتشر شد.
✅ 1.1.0 → یه قابلیت جدید مثل ورود با گوگل اضافه شد.
✅ 1.1.1 → یه باگ توی صفحه لاگین فیکس شد.
✅ 2.0.0 → ساختار دیتابیس عوض شد و نسخههای قبلی دیگه کار نمیکنن.
🔍 پس کی باید Major، Minor یا Patch رو تغییر بدیم؟
وقتی API رو تغییر دادی و ممکنه کدای قدیمی دیگه کارنکنن؟
Major رو ببر بالا 🚀
یه فیچر جدید اضافه کردی ولی چیزی از قبل به مشکل نمیخوره؟
Minor رو ببر بالا 📈
فقط یه باگ کوچیک فیکس کردی؟
Patch رو ببر بالا 🛠️
🔹 انواع مختلف ورژن بندی؟
گاهی وقتا میبینی که ورژنا این شکلیه:
🔸 1.2.3-alpha → نسخه آزمایشی (قبل از انتشار اصلی)
🔸 1.2.3-beta → نسخه بتا، برای تست کاربرا
🔸 1.2.3-rc1 → نسخه Release Candidate که تقریباً آماده است
جمعبندی ✍
ورژنبندی معنایی باعث میشه بفهمیم یه نسخه چقدر تغییر کرده و آیا آپدیتش برای ما مشکلی ایجاد میکنه یا نه.
#️⃣ #programming #backend
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
❤20🔥6❤🔥1
سادگی رو با کد ضعیف اشتباه نگیرید 🚀
خیلی برنامهنویسا بین دو تا رویکرد گیر میکنن 🔻
حالا راه حل درست چیه ⁉️
این یعنی کدی که ...
وقتی که کد میزنی، این ۳ تا سوالو از خودت بپرس
سادگی خوب، یعنی طراحی درست و تمیز، نه طراحی ضعیف ✅
خیلی برنامهنویسا بین دو تا رویکرد گیر میکنن 🔻
➊ یه راهحل پیچیده و اورمهندسیشده که شاید خیلی پیشرفته و خفن به نظر برسه، ولی نگهداری و توسعهش سخت بشه.
➋ یه راهحل خیلی دمدستی و بیدقت که فقط برای "جواب دادن" ساخته شده، ولی تو طولانیمدت مشکلسازه.
حالا راه حل درست چیه ⁉️
شما همیشه باید دنبال سادگی هوشمندانه بسته به موقعیت باشید!
این یعنی کدی که ...
➊ خوانا و قابل فهمه
نه فقط برای خودت، برای کل تیم
➋ مینیماله ولی ناقص نیست
یعنی کارو درست انجام میده، نه اینکه یه چیزی رو فدای سادگی کنیم
➌ قابل گسترشه بدون دردسر
اگه بعداً نیاز شد توسعهش بدیم، مجبور نشیم کل سیستمو از نو بسازیم
وقتی که کد میزنی، این ۳ تا سوالو از خودت بپرس
➊ آیا این راهحل، بیش از حد پیچیدست بدون دلیل موجه؟
➋ آیا این سادگی باعث شده کیفیت یا پایداری سیستم کم بشه؟
➌ آیا کسی که بعد از من این کد رو میخونه، راحت متوجه میشه چی کار کردم؟
سادگی خوب، یعنی طراحی درست و تمیز، نه طراحی ضعیف ✅
#programming #tips
𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
👌18❤4⚡1
چرا وقتی به یه باگ کوچیک برمیخوریم، دو ساعت درگیرش میشیم ❓
اونجاست که واقعاً رشد میکنی نه وقتی که فقط مشکل رو حل میکنی !
چون معمولاً پشت یه مشکل ظاهراً ساده، یه سوءتفاهم بزرگی دربارهی فهم مفاهیم خوابیده.
سعی کن وقتی یه چیزی درست کار نمیکنه، بهجای فیکسکردن سریع، دنبال ریشهش بگردی.
#programming
اونجاست که واقعاً رشد میکنی نه وقتی که فقط مشکل رو حل میکنی !
𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Please open Telegram to view this post
VIEW IN TELEGRAM
👌29🤣5💯4👨💻1
وقتی یه کد رو از Stack Overflow یا GPT کپی میکنی بدون اینکه بفهمی چیه، مثل این میمونه که داری ساختمون رو روی شن میسازی!
به جاش --> دیباگ کن، لاگ بگیر، خطبهخط بفهم چی داره میگذره.
یه روز که پروژهت نابود شد، تازه میفهمی Git مثل ماشین زمانه.⌛️
به جاش --> در حداقلی ترین حالت ممکن git init، commit و checkout رو یاد بگیر.
کل پروژه تو main.js؟ خب معلومه وقتی باگ میخوره، یا میخوای یه فیچر توسعه بدی کابوس میشه!
به جاش --> کدت رو ماژولار کن و تفکیک وظایف داشته باش.
دیدن ویدیو مساوی یاد گرفتن نیست. باید بنویسی، بسازی، خراب کنی، درست کنی تا واقعا یاد بگیری.
به جاش --> بعد هر آموزش یه تمرین واقعی برای خودت در نظر بگیر و دست به کد شو.
"نکنه سوالم مسخره باشه؟"، نه عزیزم، مسخره اونیه که اشتباه میکنه و نمیپرسه!
به جاش --> از انجمنها، گیتهاب، چتجیپیتی و دوستات، بپرس و سریع جوابتو بگیر و وقت طلف نکن.
#️⃣ #programming #tips
🧑💻 @CoolyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥29 7❤5
مهم ترین تفاوت بین برنامهنویس حرفهای و مبتدی، "طرز فکرشه" 🥶
وقتی باگ میخوری دو واکنش وجود داره
یه برنامه نویس خوب ...👨💻
چطوری این ذهنیت رو باید بسازیم❓
🗣️ یه برنامهنویس حرفهای، مثل یه معمار فکر میکنه، نه مثل یه بنّا. بهترین برنامهنویسها، کمتر کد میزنن و بهتر فکر میکنن.
برنامه نویسای حرفه ای "قبل از کدنویسی" فکر میکنن.✅
وقتی باگ میخوری دو واکنش وجود داره
مبتدی: سریع میپره توی کد --> کجاشُ اشتباه نوشتم؟
حرفهای: یک قدم عقب میره --> فرضیاتم چی بودن؟ کدومش ممکنه غلط باشه؟
یه برنامه نویس خوب ...
➊ اول مسئله رو دقیق تحلیل میکنه
➋ ابزار مناسب رو انتخاب میکنه
➌ با کمترین و بهینهترین کد، بهترین راهحل رو میسازه
چطوری این ذهنیت رو باید بسازیم
➊ قبل از کدنویسی، بنویس دقیقاً چی میخوای بسازی
➋ سادهترین حالت مسئله رو اول حل کن
➌ همیشه از خودت بپرس: راه بهتری نیست؟
#️⃣ #programming #tips
🧑💻 @CoolyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥21👌4 4💯2❤1
هروقت فایل کدت از ۴۰۰ - ۵۰۰ خط بیشتر شد اسمشو بذار problem.js 😰
وقتی فایل های پروژه بیش از حد معمول بزرگ میشن نگهداری کد به شدت سخت میشه و مقیاس پذیری کاهش پیدا میکنه و همین مسئله باعث میشه که پروژه از نظر نرم افزاری در آینده نزدیک یا دور دچار بهران بشه.
دقیقا چه مشکلاتی ایجاد میکنه ؟❌
حالا باید چیکار کنیم ؟✅
⏲️ هر فایل فقط یک کار انجام بده
🤏 توابع و متد های کوچک تر
📄 اجتناب کردن از کد تکراری
🧹 نامگذاری شفاف
🔵 جداکردن استایل/رابط کاربری از منطق
🔁 ساختار ماژولار و قابل توسعه
🗣️ فایل کوچک و مرتب = ذهن آرومتر = باگ کمتر
وقتی فایل های پروژه بیش از حد معمول بزرگ میشن نگهداری کد به شدت سخت میشه و مقیاس پذیری کاهش پیدا میکنه و همین مسئله باعث میشه که پروژه از نظر نرم افزاری در آینده نزدیک یا دور دچار بهران بشه.
دقیقا چه مشکلاتی ایجاد میکنه ؟
1⃣ با یک تغییر، همه چیز خراب میشه
2⃣ پیدا کردن یه تیکه کد خاص سخت میشه
3⃣ اسمها گیجکننده میشن
4⃣ نوشتن تست سخت تر میشه
5⃣ خوندن کدا خسته کننده میشه
حالا باید چیکار کنیم ؟
تا حدی که ممکنه فایلها فقط یه مسئولیت داشته باشن (مثلاً فقط کار با دیتا یا فقط نمایش)، بسته به استراکچر پروژتون.
کدارو به بخش های کوچک تر تقسیم کن تا هر بخش کوتاه و قابل فهم باشه و البته که فقط یک کار انجام بده، اصل single responsibility.❕
کدهای تکراری یا همون ( duplicate code ) به شدت مضره و جدایی از افزایش حجم پروژه میتونه مشکلات بزرگی درست کنه، پس کد های تکراریرو توی فایل های جدا بذار و همه جای پروژه ازشون استفاده کن.
اسم فایل ها و توابع باید دقیق و گویا باشن که بدون بازکردن کد بفهمی قراره چی کار بکنن پس حتما جدی بگیر و اسم های خوب انتخاب کن براشون چون توی مقیاس بالا خیلی کمک میکنه به سرعت و کیفیت توسعه.
رابط کاربری و استایلها رو سعی کنید جدا نگه دارید از منطق بیزنس، چیزی که تو انگولار به خوبی شاهدش هستیم.
کدتون رو طوری بنویسید که به راحتی بشه بخش جدیدی رو اضافه یا کم کرد بدون اینکه همه چیز بهم بریزه و هر جای پروژه یه مشکل به وجود بیاد.
#️⃣ #programming #tips
🧑💻 @CoolyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
1 21👌7🔥3
این یه حقیقت شیرینه : درواقع کدی که مینویسی آینهی طرز فکرته!
احتمالا شماهم تجربه کردید وقتایی که ذهنتون شلوغه راه حلایی که پیدا میکنید برای حل مسئله خوب و بهینه نیست و طراحی تون به شدت افت میکنه توی کد
ولی در مقابلش وقتایی که ذهنتون آروم و شفاف بوده، کدتون ساده، تمیز و بسیار قابل فهم تر بوده
البته که تجربه و مهارت خود شخص خیلی مهمه و تاثیر مستقیم داره، ولی حتی کسایی که تجربه خیلی بالایی هم دارند زمانایی که ... ادامه پست
احتمالا شماهم تجربه کردید وقتایی که ذهنتون شلوغه راه حلایی که پیدا میکنید برای حل مسئله خوب و بهینه نیست و طراحی تون به شدت افت میکنه توی کد
ولی در مقابلش وقتایی که ذهنتون آروم و شفاف بوده، کدتون ساده، تمیز و بسیار قابل فهم تر بوده
البته که تجربه و مهارت خود شخص خیلی مهمه و تاثیر مستقیم داره، ولی حتی کسایی که تجربه خیلی بالایی هم دارند زمانایی که ... ادامه پست
#️⃣ #tips #programming
🧑💻 @CoolyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤20 4🔥1👌1