خرسِ برنامه نویس
چیشد و چرا یهو lambda calculus رو به Closure ربط داد؟ از جایی شروع کنیم که هنوز خبری از Closure نبود؛ روزهایی که برنامهنویسان با زبانهایی مثل Algol 60 تازه با مفهوم توابع تو در تو آشنا میشدند. در آن دوران، گروهی از پژوهشگران در نشست ۱۹۵۸ زوریخ قواعد «block…
در خط اول یک ثابت به نام y تعریف کردهایم و مقدار ۵ را در آن گذاشتهایم. این عدد قرار است همان متغیر آزاد (free variable) باشد که تابعهای بعدی از محیط بیرونی بردارند.
بعد تابع f را میبینید که دو ورودی x و y میگیرد. این تابع در سادهترین حالت فقط این دو عدد را با هم جمع میکند و حاصل را برمیگرداند. بنابراین اگر f(3, 5) را صدا بزنیم جواب ۸ میشود.
در ادامه تابع g را تعریف کردهایم؛ g خودش فانکشن است که تنها پارامترش x است. داخل بدنهٔ g، تابع f را صدا میزنیم و x را به عنوان آرگومان اول و y بیرونی را به عنوان آرگومان دوم به f میدهیم. به این ترتیب g یک Closure تشکیل میدهد، چون y را همراه خودش «میبندد» و هر جا g را اجرا کنیم همان مقدار ۵ را کنار x قرار میدهد.
در نهایت با console.log(g(3)) تابع g را برای ورودی 3 اجرا کردهایم. g مقدار ۳ را به f میدهد، f هم ۳ و ۵ را جمع میکند و نتیجهی ۸ را برمیگرداند.
بعد ها Guy Sussman و Gerald Steele هنگام طراحی زبان Scheme دریافتند که اگر قرار است lexical scope تعیین کند چه نامی در دسترس است، Closure باید تضمین کند آن نامها بعد از پایان تابع بیرونی از بین نرود. با جا افتادن این الگو، Closure به بخش جداییناپذیر پیادهسازی تمام زبانهای امروزی—from JavaScript و C# تا Python—تبدیل شد؛ سازوکاری که اجازه میدهد callbackها context خود را «به خاطر بسپارند»، فکتوری فانکشن ها state مخصوص به خود بسازند و کد بدون اتکا به global متغیرهای خصوصی نگه دارد.
داستان از λ‑calculus شروع شد، جایی که مفهوم متغیرهای free و bound شکل گرفت. با ورود lexical scope فهمیدیم که جای قرارگیری کد در متن، دسترسی به نامها را مشخص میکند. Peter Landin ایدهٔ closure را اضافه کرد تا یک تابع بتواند محیط تعریفِ خود را همراه داشته باشد. در نتیجه، آنچه از نظریهٔ محاسبه آغاز شده بود، در closure به کاربردی عملی تبدیل شد و امروز در بیشتر زبانها بهعنوان روشی ساده برای نگهداشتن state در کنار توابع بهکار میرود.
پایان
#بخش3
بعد تابع f را میبینید که دو ورودی x و y میگیرد. این تابع در سادهترین حالت فقط این دو عدد را با هم جمع میکند و حاصل را برمیگرداند. بنابراین اگر f(3, 5) را صدا بزنیم جواب ۸ میشود.
در ادامه تابع g را تعریف کردهایم؛ g خودش فانکشن است که تنها پارامترش x است. داخل بدنهٔ g، تابع f را صدا میزنیم و x را به عنوان آرگومان اول و y بیرونی را به عنوان آرگومان دوم به f میدهیم. به این ترتیب g یک Closure تشکیل میدهد، چون y را همراه خودش «میبندد» و هر جا g را اجرا کنیم همان مقدار ۵ را کنار x قرار میدهد.
در نهایت با console.log(g(3)) تابع g را برای ورودی 3 اجرا کردهایم. g مقدار ۳ را به f میدهد، f هم ۳ و ۵ را جمع میکند و نتیجهی ۸ را برمیگرداند.
بعد ها Guy Sussman و Gerald Steele هنگام طراحی زبان Scheme دریافتند که اگر قرار است lexical scope تعیین کند چه نامی در دسترس است، Closure باید تضمین کند آن نامها بعد از پایان تابع بیرونی از بین نرود. با جا افتادن این الگو، Closure به بخش جداییناپذیر پیادهسازی تمام زبانهای امروزی—from JavaScript و C# تا Python—تبدیل شد؛ سازوکاری که اجازه میدهد callbackها context خود را «به خاطر بسپارند»، فکتوری فانکشن ها state مخصوص به خود بسازند و کد بدون اتکا به global متغیرهای خصوصی نگه دارد.
داستان از λ‑calculus شروع شد، جایی که مفهوم متغیرهای free و bound شکل گرفت. با ورود lexical scope فهمیدیم که جای قرارگیری کد در متن، دسترسی به نامها را مشخص میکند. Peter Landin ایدهٔ closure را اضافه کرد تا یک تابع بتواند محیط تعریفِ خود را همراه داشته باشد. در نتیجه، آنچه از نظریهٔ محاسبه آغاز شده بود، در closure به کاربردی عملی تبدیل شد و امروز در بیشتر زبانها بهعنوان روشی ساده برای نگهداشتن state در کنار توابع بهکار میرود.
پایان
#بخش3
🔥5
Forwarded from با متمم | هایلایت | محمدرضا شعبانعلی
لامبورگینی در خیابانهای تهران
اخیراً که بحث ارزشگذاری شرکتهای استارتاپی در کشور ما داغ شده، بعضی از مدیران استارتاپی گله میکنند که بازار ما نگاه سنتی و گذشتهنگر دارد و ارزشگذاری روی استارتاپها را بلد نیست.
در این باره مطلبی نوشتم که شاید حوصله داشته باشید و بخواهید بخوانید:
لامبورگینی در خیابانهای تهران
#روزنوشته
اخیراً که بحث ارزشگذاری شرکتهای استارتاپی در کشور ما داغ شده، بعضی از مدیران استارتاپی گله میکنند که بازار ما نگاه سنتی و گذشتهنگر دارد و ارزشگذاری روی استارتاپها را بلد نیست.
در این باره مطلبی نوشتم که شاید حوصله داشته باشید و بخواهید بخوانید:
لامبورگینی در خیابانهای تهران
#روزنوشته
🔥9
Audio
صوت جلسه 5 خوانش کتاب یادگیری تفکر سیستمی
مواردی که خارج از کتاب بهشون اشاره شد در جلسه.
- اهمیت تفاوت قایل شدن بین انواع #تجربه که قبلا در این پست هم بهش تاکید کردیم
- اهمیت به تقسیم بندی صحیح برای درک بهتر و مدل سازی شفاف تر مثلا در خصوص تقسیم مهارت ها به دو نوع سخت و نرم که قبلا باز اینجا در موردشون صحبت کردیم.
مواردی که خارج از کتاب بهشون اشاره شد در جلسه.
- اهمیت تفاوت قایل شدن بین انواع #تجربه که قبلا در این پست هم بهش تاکید کردیم
- اهمیت به تقسیم بندی صحیح برای درک بهتر و مدل سازی شفاف تر مثلا در خصوص تقسیم مهارت ها به دو نوع سخت و نرم که قبلا باز اینجا در موردشون صحبت کردیم.
🔥6
خرسِ برنامه نویس
Photo
عزیزان این رو من خیلی رندوم در اینترنت پیدا کردم و کار من نیست.
کردیت به سازنده ناشناس 🙏
کردیت به سازنده ناشناس 🙏
🔥5👏1
Forwarded from Novara
- جنگ هیچوقت خوب نیست
-مرگ کسایی که مسبب این وضعیتن میتونه خوشحالمون کنه
-کشته شدن کسایی که مظلومانه میرن باید ناراحت و خشمگینمون کنه
-خیلی از چیزا دست من و شما نیست
-اتحاد کنار همه تفاوت ها مهم ترین قسمت حفظ قدرت مردمیه
-باز کردن امکان گفت و گو از مهم ترین گام ها برای برداشتن قدم به سوی دموکراسیه
-هزینه دادن برای تغییر اجتناب ناپذیره
-حداقل هزینه دادن بهترین حالت برای تغییره
-جنگ ها همیشه بیشترین هزینه ها رو برای تغییر میدن
-جامعه ای که به سوی اگاهی پیش بره و توان استفاده از فرصت مطالبه گری داشته باشه میتونه نجات پیدا کنه
- همیشه بازی بزرگتری وجود داره که نمیبینیمش
- جنگ یه بازی نیست، یه بحث خیلی تکنیکال و پیچیدس
- خیلی از کارای ساده و عمل کردن به یک سری دستور العمل در بحبوحهی جنگ میتونه جلوی خیلی از مشکلات رو بگیره
-دشمن دشمن من، لزوما دوست من نیست
-با هم مهربون تر باشیم، همه داریم احساسات ضد و نقیصی رو تجربه میکنیم و حالمون از شرایطی که توش هستیم اصلا خوب نیست
-وسط بحران، داشتن آرامش فکری یک عمل انقلابیه
-آدم میتونه از جنگ زنده بیرون بیاد اما از ناامیدی نه
-ما برای نجات به اگاهی ، گفت و گو و همدلی نیاز داریم نه اسطوره سازی یا نفرت
-فقط دنبال ترند نباش ، یادبگیر تحلیل کنی
-حافظه تاریخی تو نگه دار
-بعدِ جنگ، آدمای زندهی سالم مهمترین سرمایه برای ساختن دوبارهن
-توی بدترین شرایط، نفس کشیدن هم یه جور مقاومته
-مرگ کسایی که مسبب این وضعیتن میتونه خوشحالمون کنه
-کشته شدن کسایی که مظلومانه میرن باید ناراحت و خشمگینمون کنه
-خیلی از چیزا دست من و شما نیست
-اتحاد کنار همه تفاوت ها مهم ترین قسمت حفظ قدرت مردمیه
-باز کردن امکان گفت و گو از مهم ترین گام ها برای برداشتن قدم به سوی دموکراسیه
-هزینه دادن برای تغییر اجتناب ناپذیره
-حداقل هزینه دادن بهترین حالت برای تغییره
-جنگ ها همیشه بیشترین هزینه ها رو برای تغییر میدن
-جامعه ای که به سوی اگاهی پیش بره و توان استفاده از فرصت مطالبه گری داشته باشه میتونه نجات پیدا کنه
- همیشه بازی بزرگتری وجود داره که نمیبینیمش
- جنگ یه بازی نیست، یه بحث خیلی تکنیکال و پیچیدس
- خیلی از کارای ساده و عمل کردن به یک سری دستور العمل در بحبوحهی جنگ میتونه جلوی خیلی از مشکلات رو بگیره
-دشمن دشمن من، لزوما دوست من نیست
-با هم مهربون تر باشیم، همه داریم احساسات ضد و نقیصی رو تجربه میکنیم و حالمون از شرایطی که توش هستیم اصلا خوب نیست
-وسط بحران، داشتن آرامش فکری یک عمل انقلابیه
-آدم میتونه از جنگ زنده بیرون بیاد اما از ناامیدی نه
-ما برای نجات به اگاهی ، گفت و گو و همدلی نیاز داریم نه اسطوره سازی یا نفرت
-فقط دنبال ترند نباش ، یادبگیر تحلیل کنی
-حافظه تاریخی تو نگه دار
-بعدِ جنگ، آدمای زندهی سالم مهمترین سرمایه برای ساختن دوبارهن
-توی بدترین شرایط، نفس کشیدن هم یه جور مقاومته
👍6🔥2
یعنی به جای تصمیم سازا و دولوپرای یک سری ارگان های داخلی، درخت میزاشتی نتایج بهتری میگرفتی تا اینا!
👍6🔥2👏2
Forwarded from thisisnabi.dev [Farsi]
🎗 رایگان برای همدلی
در روزهایی که شرایط سختتر از همیشه شده، بسیاری از عزیزانم بهخاطر جنگ و بحرانهای اخیر، شغل خودشون رو از دست دادن.
به همین دلیل، دوره سیستم دیزاین در این ماه بهصورت رایگان در اختیار عزیزانی قرار میگیره که بهتازگی تعدیل شدهاند و به دنبال فرصتی برای یادگیری، رشد و بازآفرینی مسیر شغلیششون هستن.
🌱 از دل بحران، فرصت بسازیم.
اگر شما یا دوستتان در این شرایط قرار دارید، کافیه فقط آدرس gmail خودتون رو برام بفرستید @thisisnabi تا بهتون دسترسی بدم.
با عشق،
نبی کرم پور
@thisisnabi_dev
در روزهایی که شرایط سختتر از همیشه شده، بسیاری از عزیزانم بهخاطر جنگ و بحرانهای اخیر، شغل خودشون رو از دست دادن.
به همین دلیل، دوره سیستم دیزاین در این ماه بهصورت رایگان در اختیار عزیزانی قرار میگیره که بهتازگی تعدیل شدهاند و به دنبال فرصتی برای یادگیری، رشد و بازآفرینی مسیر شغلیششون هستن.
🌱 از دل بحران، فرصت بسازیم.
اگر شما یا دوستتان در این شرایط قرار دارید، کافیه فقط آدرس gmail خودتون رو برام بفرستید @thisisnabi تا بهتون دسترسی بدم.
با عشق،
نبی کرم پور
@thisisnabi_dev
🏆7🔥2
Forwarded from .NET Fun
thisisnabi.dev [Farsi]
🎗 رایگان برای همدلی در روزهایی که شرایط سختتر از همیشه شده، بسیاری از عزیزانم بهخاطر جنگ و بحرانهای اخیر، شغل خودشون رو از دست دادن. به همین دلیل، دوره سیستم دیزاین در این ماه بهصورت رایگان در اختیار عزیزانی قرار میگیره که بهتازگی تعدیل شدهاند و به…
حرکت قشنگ نبی❤️
برای حمایت از این پویش زیبا ثبت نام دوره Clean Architecture برای دوستانی که به تازگی تعدیل شدند این ماه رایگان خواهد بود
به آیدی بنده @bob_tm پیام بدید
به امید آینده ای زیبا و روشن برای هممون
برای حمایت از این پویش زیبا ثبت نام دوره Clean Architecture برای دوستانی که به تازگی تعدیل شدند این ماه رایگان خواهد بود
به آیدی بنده @bob_tm پیام بدید
به امید آینده ای زیبا و روشن برای هممون
❤8🔥3
Audio
صوت جلسه 6 خوانش کتاب یادگیری تفکر سیستمی
پ.ن: در دقایق 20 تا 30 قطعی اینترنت داشتیم که من کات نکردم دیگه، خودتون اگر عذاب دهنده بود این بخش را رد کنید یا از امکان trim silence پخش کننده مثل کست باکس استفاده کنید.
پ.ن: در دقایق 20 تا 30 قطعی اینترنت داشتیم که من کات نکردم دیگه، خودتون اگر عذاب دهنده بود این بخش را رد کنید یا از امکان trim silence پخش کننده مثل کست باکس استفاده کنید.
❤3🔥1
Forwarded from Programming Tips 💡 (Moien Tajik)
Media is too big
VIEW IN TELEGRAM
Cursor can now make to-do lists, search PRs, and queue messages 👾
[ Blog ] : https://cursor.com/changelog/1-2
〰️〰️〰️〰️〰️〰️
#AI #Agents #Cursor
@ProgrammingTip
[ Blog ] : https://cursor.com/changelog/1-2
〰️〰️〰️〰️〰️〰️
#AI #Agents #Cursor
@ProgrammingTip
😱5