Common Rust Lifetime Misconceptions
https://github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md#2-if-t-static-then-t-must-be-valid-for-the-entire-program
پ.ن: اینو بخونید تا دیگه borrow checker راست کفری تون نکنه =)
https://github.com/pretzelhammer/rust-blog/blob/master/posts/common-rust-lifetime-misconceptions.md#2-if-t-static-then-t-must-be-valid-for-the-entire-program
پ.ن: اینو بخونید تا دیگه borrow checker راست کفری تون نکنه =)
GitHub
rust-blog/posts/common-rust-lifetime-misconceptions.md at master · pretzelhammer/rust-blog
Educational blog posts for Rust beginners. Contribute to pretzelhammer/rust-blog development by creating an account on GitHub.
👾6
صحبت های سازندگان زبان Odin یعنی Ginger Bill و سازنده زبان Elixir (که اصلا نمیشناسمش) رو داریم میبینیم و باید بگم عجب جنجالی راه افتاده حقیقتا =) تقریبا ازشون خبر های داغ راجب زبان های برنامهنویسی رو پرسیدن.
مثلا اینکه چرا Python کارا میرن سمت Go.
یا چرا Ruby کار ها میرن سمت Rust.
و سرگذشت Erlang و Elixir و Ruby.
و حتی سازنده الکسیر راجب open بودن کامیونیتی روبی توضیح میده.
و صحبت کلی دعوای بین پارادایم های زبان های برنامه نویسی ست (OOP vs Functional).
و ازشون opinion شون رو راجب Rust هم پرسیدن که...😂 خودتون بشنوید بهتره.
درکل به هیچ عنوان این ویدیو رو از دست ندید. زیاد جالب است :)
https://youtu.be/tXJfS6jI9Z0?si=UAvBmX5Tmj_S7s44
مثلا اینکه چرا Python کارا میرن سمت Go.
یا چرا Ruby کار ها میرن سمت Rust.
و سرگذشت Erlang و Elixir و Ruby.
و حتی سازنده الکسیر راجب open بودن کامیونیتی روبی توضیح میده.
و صحبت کلی دعوای بین پارادایم های زبان های برنامه نویسی ست (OOP vs Functional).
و ازشون opinion شون رو راجب Rust هم پرسیدن که...😂 خودتون بشنوید بهتره.
درکل به هیچ عنوان این ویدیو رو از دست ندید. زیاد جالب است :)
https://youtu.be/tXJfS6jI9Z0?si=UAvBmX5Tmj_S7s44
YouTube
2 Language Creators vs 2 Idiots | The Standup
When traffic spikes, Neon’s serverless Postgres autoscales to meet demand, without all that extra ops work. Get the free plan at https://neon.com
https://twitch.tv/ThePrimeagen - I Stream 5 days a Week
https://twitter.com/terminaldotshop - Want to order…
https://twitch.tv/ThePrimeagen - I Stream 5 days a Week
https://twitter.com/terminaldotshop - Want to order…
❤9
Data_Oriented_Programming_Reduce_software_complexity_Final_Release.pdf
7.1 MB
این گنج را دریابید و متحول شوید.
کتابی برای درک برنامه نویسی Data Oriented در مقابل Object Oriented.
کتابی برای درک برنامه نویسی Data Oriented در مقابل Object Oriented.
❤7
جامعه Geek Engineers یک فضای باز، پویا و دوستانه برای همه علاقهمندان به دنیای برنامهنویسی و مهندسی کامپیوتر است. ما باور داریم که یادگیری و پیشرفت، زمانی بهترین نتیجه را میدهد که افراد در کنار هم و با همفکری، ایدهها و تجربیات خود را به اشتراک بگذارند.
هدف ما ایجاد محیطی است که در آن برنامهنویسان، از مبتدی تا حرفهای، بتوانند با یکدیگر ارتباط برقرار کنند، پروژههای متنباز بسازند، مشکلات فنی را حل کنند و مهارتهای خود را گسترش دهند. ما به ویژه به زبانهای Rust، Go، OCaml و C علاقهمندیم و در پروژهها و بحثهای فنی از آنها استفاده میکنیم. همچنین به الگوریتمها و حل مسأله اهمیت میدهیم تا مهارتهای تحلیلی و منطقی اعضای جامعه تقویت شود. در وبسایت ما میتوانید کتابها و مقالات کاربردی مرتبط با برنامهنویسی و مهندسی نرمافزار را پیدا کنید تا یادگیری شما هدفمندتر و عمیقتر شود.
اگر شما هم به برنامهنویسی، یادگیری مستمر و کار تیمی علاقهمندید، جامعه ما جای مناسبی برای شروع و ادامه این مسیر است.
@geek_engineers
https://geekengineers.netlify.app
هدف ما ایجاد محیطی است که در آن برنامهنویسان، از مبتدی تا حرفهای، بتوانند با یکدیگر ارتباط برقرار کنند، پروژههای متنباز بسازند، مشکلات فنی را حل کنند و مهارتهای خود را گسترش دهند. ما به ویژه به زبانهای Rust، Go، OCaml و C علاقهمندیم و در پروژهها و بحثهای فنی از آنها استفاده میکنیم. همچنین به الگوریتمها و حل مسأله اهمیت میدهیم تا مهارتهای تحلیلی و منطقی اعضای جامعه تقویت شود. در وبسایت ما میتوانید کتابها و مقالات کاربردی مرتبط با برنامهنویسی و مهندسی نرمافزار را پیدا کنید تا یادگیری شما هدفمندتر و عمیقتر شود.
اگر شما هم به برنامهنویسی، یادگیری مستمر و کار تیمی علاقهمندید، جامعه ما جای مناسبی برای شروع و ادامه این مسیر است.
@geek_engineers
https://geekengineers.netlify.app
🔥12
کتاب ها و مقاله های کوچک داخل کانال به مرور به وبسایت انتقال داده میشود و پروژه های اوپن سورس دیگری اضافه خواهد شد.
شما هم اگر تمایل داشتید میتونید پروژه هاتون رو به سمت کامیونیتی بیارید و از دوستانی که تمایل به مشارکت دارند کمک بگیرید.
> به امید ساختن جامعه ای با سواد و مجرب🤌🏿
شما هم اگر تمایل داشتید میتونید پروژه هاتون رو به سمت کامیونیتی بیارید و از دوستانی که تمایل به مشارکت دارند کمک بگیرید.
> به امید ساختن جامعه ای با سواد و مجرب🤌🏿
🔥11
توی TempleOS کتابخانه داخلی شبیه OpenGL و glm وجود داشت =) دارم وسوسه میشم امتحانش کنم روی VM.
https://youtu.be/d3eFHyryopQ?si=Ry5_LFrZh9Bowga8
https://youtu.be/d3eFHyryopQ?si=Ry5_LFrZh9Bowga8
YouTube
Coding Graphics in TempleOS is Too Easy
Reference:
- Advent of Code in TempleOS: https://www.youtube.com/playlist?list=PLpM-Dvs8t0VZNUvTX1pqfpI_tMkhWCLYL
- Advent of Code: https://adventofcode.com/
- TempleOS: https://templeos.org/
- Source Code: https://gitlab.com/tsoding/aoc-2021
- Advent of Code in TempleOS: https://www.youtube.com/playlist?list=PLpM-Dvs8t0VZNUvTX1pqfpI_tMkhWCLYL
- Advent of Code: https://adventofcode.com/
- TempleOS: https://templeos.org/
- Source Code: https://gitlab.com/tsoding/aoc-2021
👾7
سندرم ایمپاستر (Impostor Syndrome)
این یک اختلال رسمی روانشناسی مثل افسردگی یا اضطراب نیست، بلکه بیشتر یک الگوی فکری و احساسی است. کسی که این حالت را تجربه میکند، با وجود شواهد واقعی از موفقیتها و تواناییهایش، خودش را یک «حقّهباز» یا «جعلی» میبیند.
ویژگیهای اصلیاش:
- فرد موفقیتهایش را به شانس، روابط یا اتفاق نسبت میدهد، نه توانایی خودش.
- مدام میترسد که دیگران بفهمند او به اندازه کافی باهوش، متخصص یا شایسته نیست.
- دستاوردها برایش واقعی یا ارزشمند به نظر نمیرسند.
- حتی وقتی موفقیتی کسب میکند، احساس رضایت موقتی دارد و سریعاً دوباره وارد همان چرخه شک و تردید میشود.
این پدیده بهویژه در میان دانشجویان ممتاز، محققان، برنامهنویسها، پزشکان، و کسانی که در محیطهای رقابتی کار میکنند شایع است. بسیاری از دانشمندان، هنرمندان و حتی مدیران بزرگ در مصاحبهها گفتهاند که بارها فکر کردهاند شایسته جایگاهشان نیستند.
اینجا راجبش بحث شده :
https://www.reddit.com/r/webdev/s/Q4TPMWy0zH
منتها راه حل شفاف و واضحی ندارد.
فقط میتونم بگم آگاهی و شناخت کمک به کنترلش میکند.
این یک اختلال رسمی روانشناسی مثل افسردگی یا اضطراب نیست، بلکه بیشتر یک الگوی فکری و احساسی است. کسی که این حالت را تجربه میکند، با وجود شواهد واقعی از موفقیتها و تواناییهایش، خودش را یک «حقّهباز» یا «جعلی» میبیند.
ویژگیهای اصلیاش:
- فرد موفقیتهایش را به شانس، روابط یا اتفاق نسبت میدهد، نه توانایی خودش.
- مدام میترسد که دیگران بفهمند او به اندازه کافی باهوش، متخصص یا شایسته نیست.
- دستاوردها برایش واقعی یا ارزشمند به نظر نمیرسند.
- حتی وقتی موفقیتی کسب میکند، احساس رضایت موقتی دارد و سریعاً دوباره وارد همان چرخه شک و تردید میشود.
این پدیده بهویژه در میان دانشجویان ممتاز، محققان، برنامهنویسها، پزشکان، و کسانی که در محیطهای رقابتی کار میکنند شایع است. بسیاری از دانشمندان، هنرمندان و حتی مدیران بزرگ در مصاحبهها گفتهاند که بارها فکر کردهاند شایسته جایگاهشان نیستند.
اینجا راجبش بحث شده :
https://www.reddit.com/r/webdev/s/Q4TPMWy0zH
منتها راه حل شفاف و واضحی ندارد.
فقط میتونم بگم آگاهی و شناخت کمک به کنترلش میکند.
Reddit
From the webdev community on Reddit
Explore this post and more from the webdev community
🔥14
Stack Frames (Trynna understand the concept by using a debugger)
https://www.youtube.com/watch?v=0t_QewtSbXo (The most nice one)
https://www.youtube.com/watch?v=7dMTCdFM2ss
https://www.youtube.com/watch?v=RU5vUIl1vRs
https://www.youtube.com/watch?v=0t_QewtSbXo (The most nice one)
https://www.youtube.com/watch?v=7dMTCdFM2ss
https://www.youtube.com/watch?v=RU5vUIl1vRs
YouTube
Tracing Stack Usage and Stack Frames in a Debugger
To really see the stack come alive, it's best viewed in a debugger during program execution. In this video, we'll do just that. Using a simple program and IDA's built-in debugger, we'll trace several function calls to view how the stack is used. We'll also…
🔥3
Effective_C_An_Introduction_to_Professional_C_Programming_by_Robert.pdf
5.4 MB
کتاب Effective C (سطح مقدماتی)
🔥3
ASafaeirad
Apollo 11 source code: https://github.com/chrislgarry/Apollo-11
اینی که میبینید مربوط به یکی از فایلهای سورس کد کامپیوتر راهنمای آپولو (AGC) هست؛ همون کامپیوتری که در ماژول ماهنشین (LM) آپولو 11 کار میکرد و باعث شد فضانوردها بتونن روی ماه فرود بیان.
https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
این فایل مربوط به یک روتین روشن کردن موتور اصلی توی نرمافزار LM بوده. یعنی یکی از بخشهای خیلی حساس که باید موتور رو برای مانور یا فرود روشن میکرد.
ساخته شده با: یه اسمبلی مخصوص AGC به اسم yaYUL (امیدوارم راجب اسم اسمبلی ش اشتباه نکرده باشم...).
این کد از روی عکسهای نسخه چاپی که توی موزه MIT نگهداری میشد، دوباره تایپ (دیجیتال) شده. نسخهای که استفاده شد (LMY99) دقیقاً چند روز قبل از فرود آپولو 11 روی ماه مونتاژ شده بود، یعنی 14 جولای 1969 (آپولو 11 در 20 جولای روی ماه نشست). سال 2009 رون برکی (Ron Burkey) و تیمش این کدها رو بازسازی کردن و چندتا اشتباه تایپی رو هم درست کردن.
💀 حالا چرا اسمش "BURN_BABY_BURN" ؟
این بخش قشنگ ماجراست.
یکی از برنامهنویسهای این روتین، Don Eyles، سالها بعد توی جشن 40 سالگی فرود روی ماه توضیح داد که اسم این روتین از کجا اومده:
در دهه 60 یه دیجی معروف به اسم Magnificent Montague توی رادیوهای نیویورک و لسآنجلس کار میکرد و وقتی آهنگهای داغ پخش میکرد همیشه میگفت:
"Burn, baby! BURN!"
این جمله هم نماد شور و حال موسیقی سول (Soul) بود و هم بعدها در شورشهای لسآنجلس (1965) استفاده شد. برنامهنویسها توی لابراتوار MIT، وقتی داشتن روتین روشن کردن موتور LM رو مینوشتن، با شوخی و خلاقیت گفتن: خب اینجا هم موتوری میخوایم که بسوزه و روشن بشه، پس بذار اسمش باشه BURN_BABY_BURN.
https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
این فایل مربوط به یک روتین روشن کردن موتور اصلی توی نرمافزار LM بوده. یعنی یکی از بخشهای خیلی حساس که باید موتور رو برای مانور یا فرود روشن میکرد.
ساخته شده با: یه اسمبلی مخصوص AGC به اسم yaYUL (امیدوارم راجب اسم اسمبلی ش اشتباه نکرده باشم...).
این کد از روی عکسهای نسخه چاپی که توی موزه MIT نگهداری میشد، دوباره تایپ (دیجیتال) شده. نسخهای که استفاده شد (LMY99) دقیقاً چند روز قبل از فرود آپولو 11 روی ماه مونتاژ شده بود، یعنی 14 جولای 1969 (آپولو 11 در 20 جولای روی ماه نشست). سال 2009 رون برکی (Ron Burkey) و تیمش این کدها رو بازسازی کردن و چندتا اشتباه تایپی رو هم درست کردن.
💀 حالا چرا اسمش "BURN_BABY_BURN" ؟
این بخش قشنگ ماجراست.
یکی از برنامهنویسهای این روتین، Don Eyles، سالها بعد توی جشن 40 سالگی فرود روی ماه توضیح داد که اسم این روتین از کجا اومده:
در دهه 60 یه دیجی معروف به اسم Magnificent Montague توی رادیوهای نیویورک و لسآنجلس کار میکرد و وقتی آهنگهای داغ پخش میکرد همیشه میگفت:
"Burn, baby! BURN!"
این جمله هم نماد شور و حال موسیقی سول (Soul) بود و هم بعدها در شورشهای لسآنجلس (1965) استفاده شد. برنامهنویسها توی لابراتوار MIT، وقتی داشتن روتین روشن کردن موتور LM رو مینوشتن، با شوخی و خلاقیت گفتن: خب اینجا هم موتوری میخوایم که بسوزه و روشن بشه، پس بذار اسمش باشه BURN_BABY_BURN.
GitHub
Apollo-11/Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc at master · chrislgarry/Apollo-11
Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules. - chrislgarry/Apollo-11
😱5🆒1
https://github.com/chrislgarry/Apollo-11/blob/master/Luminary099/STABLE_ORBIT.agc
برنامههای P38 و P78 که توی این فایل مستند شدن، مربوط به رِندِوو (Rendezvous) بودن، یعنی مرحلهای که دو فضاپیما باید همدیگه رو در مدار ماه پیدا کنن و به هم نزدیک بشن.
یه "وسیله فعال" (Active Vehicle) وجود داره، همون که قراره مانور بده.
یه "وسیله منفعل" (Passive Vehicle) وجود داره، که توی مدار خودش حرکت میکنه.
هدف این برنامهها این بوده که محاسبه کنن چه مقدار تغییر سرعت (ΔV = Delta V) لازمه تا وسیله فعال روی مداری بیفته که بتونه به مدار وسیله منفعل برسه. وقتی رسید، وسیله فعال دقیقاً هممدار با وسیله منفعل باشه، ولی با یک فاصله مشخص (Delta R) جلو یا عقب اون قرار بگیره. اینها برای عملیات مثل برگشت LM به CM (ماژول فرماندهی) بعد از فرود روی ماه حیاتی بودن.
توی کامنت نوشته... فضانورد از طریق DSKY (کنسول کامپیوتر AGC که دکمه داشت) این برنامه رو فراخوانی میکنه.
دستورها مثل این بودن:
V37E38E وقتی این وسیله فعال هست. V37E78E وقتی وسیله دیگه فعال هست.
(V37 یک فرمان برای اجرای برنامه، E مثل Enter بود، و عدد بعدی شماره برنامه مثل P38 یا P78 رو مشخص میکرد.)
حالا پس ΔV چیست؟
ΔV یا "تغییر سرعت" در فضاپیمای آپولو به تغییر سرعت فضاپیما برای رسیدن به یک مسیر جدید اطلاق میشود. این تغییر سرعت معمولاً از طریق استفاده از موتور فضاپیما محقق میشود.
برای محاسبه ΔV، معمولاً باید شرایط زیر را در نظر بگیریم:
جرم فضاپیما (m): شامل جرم فضاپیما و سوخت آن.
نیروی محرکه (Thrust): قدرت موتور برای تولید نیروی حرکت.
زمان اعمال نیرو: مدت زمانی که موتور فعال است.
مسیر و شتاب: به خصوص در مأموریتهای ملاقات مداری (Rendezvous).
منتها شیوه محاسبه دقیقش وارد مبحث تخصصی علم مقدس فیزیک میشه که بنده دانشش را ندارم😂🤌🏿
رفرنسش اینجاست :
https://en.wikipedia.org/wiki/Tsiolkovsky_rocket_equation
برنامههای P38 و P78 که توی این فایل مستند شدن، مربوط به رِندِوو (Rendezvous) بودن، یعنی مرحلهای که دو فضاپیما باید همدیگه رو در مدار ماه پیدا کنن و به هم نزدیک بشن.
یه "وسیله فعال" (Active Vehicle) وجود داره، همون که قراره مانور بده.
یه "وسیله منفعل" (Passive Vehicle) وجود داره، که توی مدار خودش حرکت میکنه.
هدف این برنامهها این بوده که محاسبه کنن چه مقدار تغییر سرعت (ΔV = Delta V) لازمه تا وسیله فعال روی مداری بیفته که بتونه به مدار وسیله منفعل برسه. وقتی رسید، وسیله فعال دقیقاً هممدار با وسیله منفعل باشه، ولی با یک فاصله مشخص (Delta R) جلو یا عقب اون قرار بگیره. اینها برای عملیات مثل برگشت LM به CM (ماژول فرماندهی) بعد از فرود روی ماه حیاتی بودن.
توی کامنت نوشته... فضانورد از طریق DSKY (کنسول کامپیوتر AGC که دکمه داشت) این برنامه رو فراخوانی میکنه.
دستورها مثل این بودن:
V37E38E وقتی این وسیله فعال هست. V37E78E وقتی وسیله دیگه فعال هست.
(V37 یک فرمان برای اجرای برنامه، E مثل Enter بود، و عدد بعدی شماره برنامه مثل P38 یا P78 رو مشخص میکرد.)
حالا پس ΔV چیست؟
ΔV یا "تغییر سرعت" در فضاپیمای آپولو به تغییر سرعت فضاپیما برای رسیدن به یک مسیر جدید اطلاق میشود. این تغییر سرعت معمولاً از طریق استفاده از موتور فضاپیما محقق میشود.
برای محاسبه ΔV، معمولاً باید شرایط زیر را در نظر بگیریم:
جرم فضاپیما (m): شامل جرم فضاپیما و سوخت آن.
نیروی محرکه (Thrust): قدرت موتور برای تولید نیروی حرکت.
زمان اعمال نیرو: مدت زمانی که موتور فعال است.
مسیر و شتاب: به خصوص در مأموریتهای ملاقات مداری (Rendezvous).
منتها شیوه محاسبه دقیقش وارد مبحث تخصصی علم مقدس فیزیک میشه که بنده دانشش را ندارم😂🤌🏿
رفرنسش اینجاست :
https://en.wikipedia.org/wiki/Tsiolkovsky_rocket_equation
GitHub
Apollo-11/Luminary099/STABLE_ORBIT.agc at master · chrislgarry/Apollo-11
Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules. - chrislgarry/Apollo-11
😱5🆒1
clean_architecture_a_craftsman's_guide_to_software_structure_and.pdf
6.4 MB
Clean Architecture: A Craftsman's Guide to Software Structure and Design (2017)
- Robert Martin (Uncle Bob)
- Robert Martin (Uncle Bob)
❤5👎1
All in all, Kernighan had a bad experience. “When I tried to figure out what was going on, the language had changed since the last time somebody had posted a description! And so it took days to write a program which in other languages would take maybe five minutes…”
اسکیل ایشیو را هم defect حساب کردی مشتی؟ :))
https://thenewstack.io/unix-co-creator-brian-kernighan-on-rust-distros-and-nixos
The New Stack
Unix Co-Creator Brian Kernighan on Rust, Distros and NixOS
Kernighan shared his thoughts on what he thinks of the world today — with its push away from C to more memory-safe programming languages, its hundreds of distributions of Linux — and with descendants of Unix powering nearly every cellphone.
👾3
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم.
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
🔥28❤5🤣4🆒3
let's.go.learn.to.build.professional.web.applications.pdf
7.1 MB
Let’s Go: Learn to build professional web applications with Go, 2nd Edition (2025)
پ.ن: لول مقدماتی
پ.ن: لول مقدماتی
❤6
anyone.can.code.algorithmic.thinking.pdf
2.8 MB
Anyone Can Code: Algorithmic Thinking (2023)
پ.ن: برا درک الگوریتم کتاب خوبیه. ولی زیاد تخصصی نیستش.
پ.ن: برا درک الگوریتم کتاب خوبیه. ولی زیاد تخصصی نیستش.
❤7
📝 عنوان مقاله: کاهش پیچیدگی در سیستمهای برنامهنویسی شیءگرا (OOP)
چکیده: این مقاله بررسی میکند که چگونه روشهای منضبط در برنامهنویسی شیءگرا، مانند ترجیح ترکیب بر وراثت و کوچک نگه داشتن کلاسها، میتوانند به مدیریت پیچیدگی کمک کنند. همچنین، برنامهنویسی دادهمحور (DOP) را به عنوان یک پارادایم جایگزین معرفی میکند که به طور بنیادین با جدا کردن کد از داده، پذیرش تغییرناپذیری (immutability) و استفاده از ساختارهای دادهی عمومی به حل پیچیدگی میپردازد. این متن توضیح میدهد که چرا سیستمهای OOP ممکن است پیچیده شوند و اصول اصلی DOP را به عنوان یک رویکرد مکمل یا جایگزین برای ساخت نرمافزارهای قویتر و قابل نگهداریتر ارائه میدهد.
زمان مطالعه: ۴ دقیقه
برچسبها: OOP, DOP, طراحی نرمافزار, پارادایمهای برنامهنویسی, TypeScript
https://geekengineers.netlify.app/blog/alleviating-complexity-in-oop-systems
چکیده: این مقاله بررسی میکند که چگونه روشهای منضبط در برنامهنویسی شیءگرا، مانند ترجیح ترکیب بر وراثت و کوچک نگه داشتن کلاسها، میتوانند به مدیریت پیچیدگی کمک کنند. همچنین، برنامهنویسی دادهمحور (DOP) را به عنوان یک پارادایم جایگزین معرفی میکند که به طور بنیادین با جدا کردن کد از داده، پذیرش تغییرناپذیری (immutability) و استفاده از ساختارهای دادهی عمومی به حل پیچیدگی میپردازد. این متن توضیح میدهد که چرا سیستمهای OOP ممکن است پیچیده شوند و اصول اصلی DOP را به عنوان یک رویکرد مکمل یا جایگزین برای ساخت نرمافزارهای قویتر و قابل نگهداریتر ارائه میدهد.
زمان مطالعه: ۴ دقیقه
برچسبها: OOP, DOP, طراحی نرمافزار, پارادایمهای برنامهنویسی, TypeScript
https://geekengineers.netlify.app/blog/alleviating-complexity-in-oop-systems
geekengineers.netlify.app
Geek Engineers - Software Engineering Community
Join our passionate programming community for extremist software engineering guidance, open source contributions, and collaborative learning.
1❤9
🔺 برنامهنویسی کوانتومی (Quantum Programming)
برنامهنویسی کوانتومی بر پایه قوانین مکانیک کوانتوم ساخته شده. به جای بیتهای کلاسیک (۰ و ۱)، در اینجا با کیوبیت سروکار داریم؛ کیوبیت میتونه همزمان در چند حالت باشه (به این میگن Superposition) و حتی با کیوبیتهای دیگه Entanglement پیدا کنه. همین ویژگیها باعث میشه بعضی محاسبات خیلی سریعتر از کامپیوترهای معمولی انجام بشه.
نکته مهم اینه که برنامههای کوانتومی قطعی (Deterministic) نیستن، بلکه احتمالی (Probabilistic) هستن. یعنی خروجی از طریق چندین بار اندازهگیری کیوبیتها بهدست میاد و هر بار بعد از اندازهگیری، حالتشون به یک مقدار مشخص فرو میریزه.
🔺 برای نوشتن برنامههای کوانتومی، زبانها و فریمورکهای مخصوصی وجود داره:
- Qiskit (مبتنی بر پایتون)
- Quipper (مبتنی بر Haskell)
- Cirq (از گوگل)
و این برنامهها روی پردازندههای کوانتومی مثل IBM Quantum یا Google Sycamore اجرا میشن.
تو این دنیا به جای دستورهای کلاسیک، از گیتهای کوانتومی (مثل Hadamard, CNOT, Pauli-X و...) استفاده میکنیم. همین ابزارها پایهی کاربردهای بزرگی مثل رمزنگاری نسل بعدی، بهینهسازی، شبیهسازی سیستمهای فیزیکی و شیمیایی هستن. البته تکنولوژی هنوز در مراحل اولیه رشدشه.
🔺 برنامهنویسی کوانتومی در خانه: واقعاً ممکنه؟
شرکت BlueQubit این امکان رو فراهم کرده که بدون نیاز به سختافزار عجیب و غریب، بتونید برنامههای کوانتومی رو روی کامپیوتر خودتون و حتی روی سختافزار واقعی اجرا کنید.
از طریق پلتفرم ابری BlueQubit میتونید: الگوریتمهای کوانتومی بنویسید. روی شبیهسازهای پرسرعت اجراشون کنید. حتی روی پردازندههای کوانتومی واقعی تست بگیرید.
محدودیتهای سختافزاری مثل تعداد کم کیوبیتها یا ناپایداری هنوز وجود دارن، اما BlueQubit به شما کمک میکنه همین امروز وارد دنیای کوانتوم بشید، یاد بگیرید و آماده آیندهای بشید که کوانتوم داره تبدیل به بخش اصلی محاسبات میشه. با این ابزار میتونید بدون نیاز به زیرساختهای خاص، در خونه یا کسبوکار خودتون وارد ماجراجویی کوانتومی بشید.
🔺 زبانهای برنامهنویسی کوانتومی
برای نوشتن الگوریتمهای کوانتومی، فقط سختافزار کافی نیست؛ به زبانهای مخصوص هم نیاز داریم. زبانهای کوانتومی طوری طراحی شدن که بتونن با کیوبیتها، گیتهای کوانتومی و عمل اندازهگیری کار کنن و در عین حال ابستراکشنهای سطح بالا به برنامهنویس بدن.
برخلاف زبانهای کلاسیک، این زبانها از مفاهیم ویژه کوانتوم مثل Superposition (همزمان بودن در چند حالت)، Entanglement (درهمتنیدگی) و Quantum Parallelism (محاسبات موازی کوانتومی) پشتیبانی میکنن.
این زبانها به پژوهشگرها و توسعهدهندهها کمک میکنن برنامههای کوانتومی واقعی بنویسن و حتی بتونن اونها رو با کدهای کلاسیک ترکیب کنن. نتیجه این ترکیب، سیستمهای هیبریدی (کوانتوم + کلاسیک) هستن که فعلاً اصلیترین مسیر توسعه کاربردهای کوانتومی به حساب میان.
https://www.bluequbit.io/quantum-programming-languages
https://learn.microsoft.com/en-us/azure/quantum/qsharp-overview
اینجا quickstart با #Q وجود داره و پیشنهاد میکنم حتمی یک نگاهی بهش بندازید:
https://learn.microsoft.com/en-us/azure/quantum/qsharp-quickstart
برنامهنویسی کوانتومی بر پایه قوانین مکانیک کوانتوم ساخته شده. به جای بیتهای کلاسیک (۰ و ۱)، در اینجا با کیوبیت سروکار داریم؛ کیوبیت میتونه همزمان در چند حالت باشه (به این میگن Superposition) و حتی با کیوبیتهای دیگه Entanglement پیدا کنه. همین ویژگیها باعث میشه بعضی محاسبات خیلی سریعتر از کامپیوترهای معمولی انجام بشه.
نکته مهم اینه که برنامههای کوانتومی قطعی (Deterministic) نیستن، بلکه احتمالی (Probabilistic) هستن. یعنی خروجی از طریق چندین بار اندازهگیری کیوبیتها بهدست میاد و هر بار بعد از اندازهگیری، حالتشون به یک مقدار مشخص فرو میریزه.
🔺 برای نوشتن برنامههای کوانتومی، زبانها و فریمورکهای مخصوصی وجود داره:
- Qiskit (مبتنی بر پایتون)
- Quipper (مبتنی بر Haskell)
- Cirq (از گوگل)
و این برنامهها روی پردازندههای کوانتومی مثل IBM Quantum یا Google Sycamore اجرا میشن.
تو این دنیا به جای دستورهای کلاسیک، از گیتهای کوانتومی (مثل Hadamard, CNOT, Pauli-X و...) استفاده میکنیم. همین ابزارها پایهی کاربردهای بزرگی مثل رمزنگاری نسل بعدی، بهینهسازی، شبیهسازی سیستمهای فیزیکی و شیمیایی هستن. البته تکنولوژی هنوز در مراحل اولیه رشدشه.
🔺 برنامهنویسی کوانتومی در خانه: واقعاً ممکنه؟
شرکت BlueQubit این امکان رو فراهم کرده که بدون نیاز به سختافزار عجیب و غریب، بتونید برنامههای کوانتومی رو روی کامپیوتر خودتون و حتی روی سختافزار واقعی اجرا کنید.
از طریق پلتفرم ابری BlueQubit میتونید: الگوریتمهای کوانتومی بنویسید. روی شبیهسازهای پرسرعت اجراشون کنید. حتی روی پردازندههای کوانتومی واقعی تست بگیرید.
محدودیتهای سختافزاری مثل تعداد کم کیوبیتها یا ناپایداری هنوز وجود دارن، اما BlueQubit به شما کمک میکنه همین امروز وارد دنیای کوانتوم بشید، یاد بگیرید و آماده آیندهای بشید که کوانتوم داره تبدیل به بخش اصلی محاسبات میشه. با این ابزار میتونید بدون نیاز به زیرساختهای خاص، در خونه یا کسبوکار خودتون وارد ماجراجویی کوانتومی بشید.
🔺 زبانهای برنامهنویسی کوانتومی
برای نوشتن الگوریتمهای کوانتومی، فقط سختافزار کافی نیست؛ به زبانهای مخصوص هم نیاز داریم. زبانهای کوانتومی طوری طراحی شدن که بتونن با کیوبیتها، گیتهای کوانتومی و عمل اندازهگیری کار کنن و در عین حال ابستراکشنهای سطح بالا به برنامهنویس بدن.
برخلاف زبانهای کلاسیک، این زبانها از مفاهیم ویژه کوانتوم مثل Superposition (همزمان بودن در چند حالت)، Entanglement (درهمتنیدگی) و Quantum Parallelism (محاسبات موازی کوانتومی) پشتیبانی میکنن.
این زبانها به پژوهشگرها و توسعهدهندهها کمک میکنن برنامههای کوانتومی واقعی بنویسن و حتی بتونن اونها رو با کدهای کلاسیک ترکیب کنن. نتیجه این ترکیب، سیستمهای هیبریدی (کوانتوم + کلاسیک) هستن که فعلاً اصلیترین مسیر توسعه کاربردهای کوانتومی به حساب میان.
https://www.bluequbit.io/quantum-programming-languages
https://learn.microsoft.com/en-us/azure/quantum/qsharp-overview
اینجا quickstart با #Q وجود داره و پیشنهاد میکنم حتمی یک نگاهی بهش بندازید:
https://learn.microsoft.com/en-us/azure/quantum/qsharp-quickstart
www.bluequbit.io
Quantum Programming Languages: A Beginner’s Guide for 2025
Learn all about quantum programming in this beginner’s guide and get familiar with quantum languages, instruction sets, and SDKs like Qiskit, Cirq, and Q#.
❤12
یک json parser خیلی ساده با هدف educational recreational ساختم با OCaml و بسی لذت بردم از پاردایم های فانکشنال =) پیشنهاد میکنم به اهداف و فلسفه های زبان های فانکشنال نگاهی بندازید و سعی کنید توی کد هاتون (حتی با زبان غیر فانکشنال) ازش استفاده بکنید. Immutable data processing is insanely helpful.
https://github.com/tahadostifam/JsonParser
توضیحاتی مختصر راجب زبان OCaml:
OCaml یک زبان برنامهنویسی چندپارادایمی است که از سبکهای فانکشنال، ایمپرِیتیو و شیءگرا پشتیبانی میکند. هستهی زبان بسیار قدرتمند و ایمن است و دارای سیستم نوع قوی و استاتیک است که بسیاری از خطاهای رایج در زمان کامپایل شناسایی میشوند.
» Immutable by default: اکثر دادهها بهصورت پیشفرض تغییرناپذیر هستند، که باعث افزایش قابلیت اطمینان و سادهتر شدن reasoning در برنامهها میشود.
» Pattern matching: یکی از ابزارهای قدرتمند برای کار با دادههای پیچیده، بهخصوص در پردازش AST یا JSON.
» Type inference: نیازی به مشخص کردن نوع دادهها در اکثر مواقع نیست؛ کامپایلر خودش نوعها را تشخیص میدهد.
» Functional programming: توابع درجهیکم، closure و higher-order functions بهصورت طبیعی پشتیبانی میشوند.
» Performance: برخلاف برخی زبانهای فانکشنال، OCaml کامپایل به باینریهای سریع دارد و برای پروژههای واقعی هم قابل استفاده است.
https://github.com/tahadostifam/JsonParser
توضیحاتی مختصر راجب زبان OCaml:
OCaml یک زبان برنامهنویسی چندپارادایمی است که از سبکهای فانکشنال، ایمپرِیتیو و شیءگرا پشتیبانی میکند. هستهی زبان بسیار قدرتمند و ایمن است و دارای سیستم نوع قوی و استاتیک است که بسیاری از خطاهای رایج در زمان کامپایل شناسایی میشوند.
» Immutable by default: اکثر دادهها بهصورت پیشفرض تغییرناپذیر هستند، که باعث افزایش قابلیت اطمینان و سادهتر شدن reasoning در برنامهها میشود.
» Pattern matching: یکی از ابزارهای قدرتمند برای کار با دادههای پیچیده، بهخصوص در پردازش AST یا JSON.
» Type inference: نیازی به مشخص کردن نوع دادهها در اکثر مواقع نیست؛ کامپایلر خودش نوعها را تشخیص میدهد.
» Functional programming: توابع درجهیکم، closure و higher-order functions بهصورت طبیعی پشتیبانی میشوند.
» Performance: برخلاف برخی زبانهای فانکشنال، OCaml کامپایل به باینریهای سریع دارد و برای پروژههای واقعی هم قابل استفاده است.
GitHub
GitHub - tahadostifam/JsonParser: A simple educational recreational Json Parser written in OCaml.
A simple educational recreational Json Parser written in OCaml. - tahadostifam/JsonParser
👾5❤3👍1