Forwarded from Ninja Learn | نینجا لرن
🎢 برنامهنویسی Async
شاید زیاد به گوشت خورده باشه: Async Programming، ولی خب، دقیقاً یعنی چی؟ 🤔 بیایید با هم ببینیم چجوری میشه باهاش پروژههامونو بهتر و سریعتر توسعه بدیم.
حالا Async چیه؟ 🤔
تصور کن یه کافه پر سر و صدا داری؛ مشتریها میان، سفارش میدن، میشینن و منتظر آماده شدن سفارش میمونن. حالا فرض کن فقط یه کارمند داری که باید یکییکی سفارش بگیره و هرکدوم آماده شد، بده دست مشتری. 😴 اما اگه از Async کمک بگیری، این کارمند میتونه همه سفارشها رو پشت سر هم بگیره و هربار که یه سفارش آماده شد، همونو تحویل بده. بدون اینکه لازم باشه به مشتری بگه "منتظر بمون"
حالا Async چجوری کار میکنه؟
برنامهنویسی Async بهت اجازه میده که تسکها رو همزمان اجرا کنی. مثلا موقع درخواست به یه سرور خارجی (API)، میتونی به برنامه بگی به جای منتظر موندن، همزمان یه کار دیگه هم انجام بده.
کجا به درد میخوره؟
▶️ API Calling:
وقتی داری اطلاعات میگیری، منتظر نمیمونی، یه تسک دیگه اجرا میکنی. 🚀
▶️ File Handling:
خوندن و نوشتن فایلهای بزرگ بدون توقف کد. 📂
▶️ Web Scraping:
همزمان چندین صفحه رو بررسی میکنی.
یه مثال ساده از Async با Python و Js🐍
فرض کن یه فانکشن میخوایم بنویسیم که ۲ ثانیه بخوابه و بعد یه متن چاپ کنه. حالا ببین فرق sync و async چیه:
حالا Js :
امید وارم مفید بوده باشه :)
@ninja_learn_ir
شاید زیاد به گوشت خورده باشه: Async Programming، ولی خب، دقیقاً یعنی چی؟ 🤔 بیایید با هم ببینیم چجوری میشه باهاش پروژههامونو بهتر و سریعتر توسعه بدیم.
حالا Async چیه؟ 🤔
تصور کن یه کافه پر سر و صدا داری؛ مشتریها میان، سفارش میدن، میشینن و منتظر آماده شدن سفارش میمونن. حالا فرض کن فقط یه کارمند داری که باید یکییکی سفارش بگیره و هرکدوم آماده شد، بده دست مشتری. 😴 اما اگه از Async کمک بگیری، این کارمند میتونه همه سفارشها رو پشت سر هم بگیره و هربار که یه سفارش آماده شد، همونو تحویل بده. بدون اینکه لازم باشه به مشتری بگه "منتظر بمون"
حالا Async چجوری کار میکنه؟
برنامهنویسی Async بهت اجازه میده که تسکها رو همزمان اجرا کنی. مثلا موقع درخواست به یه سرور خارجی (API)، میتونی به برنامه بگی به جای منتظر موندن، همزمان یه کار دیگه هم انجام بده.
کجا به درد میخوره؟
▶️ API Calling:
وقتی داری اطلاعات میگیری، منتظر نمیمونی، یه تسک دیگه اجرا میکنی. 🚀
▶️ File Handling:
خوندن و نوشتن فایلهای بزرگ بدون توقف کد. 📂
▶️ Web Scraping:
همزمان چندین صفحه رو بررسی میکنی.
یه مثال ساده از Async با Python و Js🐍
فرض کن یه فانکشن میخوایم بنویسیم که ۲ ثانیه بخوابه و بعد یه متن چاپ کنه. حالا ببین فرق sync و async چیه:
import asyncio
# Sync
def print_sync():
print("Starting Sync...")
time.sleep(2)
print("Done Sync!")
# Async
async def print_async():
print("Starting Async...")
await asyncio.sleep(2)
print("Done Async!")
# اجرا
asyncio.run(print_async())
حالا Js :
// Sync
function printSync() {
console.log("Starting Sync...");
sleep(2000); // این تابع sleep فقط برای شبیهسازیه
console.log("Done Sync!");
}
function sleep(ms) {
const start = Date.now();
while (Date.now() - start < ms) {}
}
// Async
async function printAsync() {
console.log("Starting Async...");
await new Promise(resolve => setTimeout(resolve, 2000));
console.log("Done Async!");
}
// اجرا
printAsync();
#async #sync #backend
Forwarded from Gopher Academy
🔵 عنوان مقاله
Building a Coding Agent in Go from Scratch
🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعهدهندگان Go را کنار هم میگذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکنهای O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان میدهد چگونه با سطلبندی زمانسنجها و حرکت چرخ، سربار و نوسان تأخیر کاهش مییابد و حتی در مقیاس بزرگ پایدار میماند. در نهایت، مرور sync توصیههای عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه میکند تا سامانههای Go هم هوشمند و هم سریع باشند.
#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175365/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Building a Coding Agent in Go from Scratch
🟢 خلاصه مقاله:
این مجموعه سه مطلب عملی برای توسعهدهندگان Go را کنار هم میگذارد: ساخت یک coding agent از صفر در Go، استفاده از Timing Wheels برای انقضای کارآمد ۱۰ میلیون کلید بدون اسکنهای O(n)، و مروری دقیق بر sync شامل Mutex، RWMutex، WaitGroup، Once، Cond و Pool. بخش agent بر معماری ماژولار، هماهنگی goroutine و channel، sandbox امن و حلقه بازخورد برای اجرای کد و بهبود تدریجی تأکید دارد. نوشته Bill Kennedy نشان میدهد چگونه با سطلبندی زمانسنجها و حرکت چرخ، سربار و نوسان تأخیر کاهش مییابد و حتی در مقیاس بزرگ پایدار میماند. در نهایت، مرور sync توصیههای عملی برای انتخاب درست بین primitives و channel، کاهش contention، و ارزیابی با benchmark، pprof و race detector ارائه میکند تا سامانههای Go هم هوشمند و هم سریع باشند.
#Go #Golang #Concurrency #TimingWheels #sync #SystemsProgramming #GoInternals #Performance
🟣لینک مقاله:
https://golangweekly.com/link/175365/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
YouTube
Building a coding agent from scratch - Bill Kennedy
In this talk, Bill will share how AI agents fundamental work and interact with LLMs to perform basic tasks like listing, reading, and editing files. During the talk, Bill will live code an agent and explain all the parts of the code needed to make this work.…