👾 Geek Engineers
504 subscribers
47 photos
41 files
300 links
👾 Extremist software engineering guidance for Geeks.

Website:
https://geekengineers.netlify.app

Github:
https://github.com/geekengineers
https://github.com/tahadostifam

Community:
@geek_engineers_community
Download Telegram
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)
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
👾3
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم.

قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.

در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.

#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
🔥285🤣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
19
🔺 برنامه‌نویسی کوانتومی (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
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 کامپایل به باینری‌های سریع دارد و برای پروژه‌های واقعی هم قابل استفاده است.
👾54👍1