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)
پ.ن: لول مقدماتی
پ.ن: لول مقدماتی
❤7
anyone.can.code.algorithmic.thinking.pdf
2.8 MB
Anyone Can Code: Algorithmic Thinking (2023)
پ.ن: برا درک الگوریتم کتاب خوبیه. ولی زیاد تخصصی نیستش.
پ.ن: برا درک الگوریتم کتاب خوبیه. ولی زیاد تخصصی نیستش.
❤9
📝 عنوان مقاله: کاهش پیچیدگی در سیستمهای برنامهنویسی شیءگرا (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❤10
🔺 برنامهنویسی کوانتومی (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#.
❤13👍1
یک 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
👾7❤4👍1
بلاخره یه مشارکت واقعی کردم
https://github.com/rust-lang/rust/issues/146739
قضیه ازین قراره که داشتم cross compile میکردم با Rust(Cargo) که خروجی Windows GNU بگیرم. روی لینوکس یک سری لایبرری همیشه لینک میشه به باینری ها از جمله rsbegin.o و rsend.o که در اصل linker helper objects هستن و ربطی به کد ما ندارن. یعنی جزوی از رانتایم gcc هست (GCC runtime support infrastructure). که روی ویندوز این ها به اون صورت وجود نداره و نباید لینک بشه.
اینجا داره روش کار میشه و امیدواریم که تو نسخه های بعدی کراس کامپایل بهبود پیدا کنه :)
https://github.com/rust-lang/rust/pull/146758
https://github.com/rust-lang/rust/issues/146739
قضیه ازین قراره که داشتم cross compile میکردم با Rust(Cargo) که خروجی Windows GNU بگیرم. روی لینوکس یک سری لایبرری همیشه لینک میشه به باینری ها از جمله rsbegin.o و rsend.o که در اصل linker helper objects هستن و ربطی به کد ما ندارن. یعنی جزوی از رانتایم gcc هست (GCC runtime support infrastructure). که روی ویندوز این ها به اون صورت وجود نداره و نباید لینک بشه.
اینجا داره روش کار میشه و امیدواریم که تو نسخه های بعدی کراس کامپایل بهبود پیدا کنه :)
https://github.com/rust-lang/rust/pull/146758
GitHub
Windows GNU target: rsbegin.o / rsend.o injection is unconfigurable and breaks cross-compilation · Issue #146739 · rust-lang/rust
What Happend? When cross-compiling for x86_64-pc-windows-gnu on NixOS (or similar Linux environments), the Rust compiler automatically injects rsbegin.o and rsend.o into the linker command. However...
❤18🔥4
📝 عنوان مقاله: Data-Oriented Parser Design with Token Streams
چکیده: این مقاله توضیح میدهد که چرا طراحی پارسر بهصورت دادهمحور (Data-Oriented) و بر پایهی مصرف توکنها از طریق یک Iterator<Token> میتواند سادهتر و قدرتمندتر از رویکرد سنتی با state مرکزی باشد. در این مدل، هر تابع پارسر فقط روی استریم توکن ورودی کار میکند و خبری از current_token یا peek_token سراسری نیست. نتیجهی این طراحی: رفع آسانتر ابهامهای نحوی، ماژولار بودن کد، و حتی بهبود کارایی در بعضی سناریوها. مقاله همچنین این رویکرد را با معماریهای مرسوم مانند recursive descent و Pratt parser مقایسه کرده و بهترین شیوههای پیادهسازی را جمعبندی میکند.
زمان مطالعه: ۶ دقیقه
برچسبها: parsers, compiler-design, data-oriented, token-streams, language-design, iterator-pattern
https://geekengineers.netlify.app/blog/data-oriented-parser-design-with-token-streams
چکیده: این مقاله توضیح میدهد که چرا طراحی پارسر بهصورت دادهمحور (Data-Oriented) و بر پایهی مصرف توکنها از طریق یک Iterator<Token> میتواند سادهتر و قدرتمندتر از رویکرد سنتی با state مرکزی باشد. در این مدل، هر تابع پارسر فقط روی استریم توکن ورودی کار میکند و خبری از current_token یا peek_token سراسری نیست. نتیجهی این طراحی: رفع آسانتر ابهامهای نحوی، ماژولار بودن کد، و حتی بهبود کارایی در بعضی سناریوها. مقاله همچنین این رویکرد را با معماریهای مرسوم مانند recursive descent و Pratt parser مقایسه کرده و بهترین شیوههای پیادهسازی را جمعبندی میکند.
زمان مطالعه: ۶ دقیقه
برچسبها: parsers, compiler-design, data-oriented, token-streams, language-design, iterator-pattern
https://geekengineers.netlify.app/blog/data-oriented-parser-design-with-token-streams
geekengineers.netlify.app
Geek Engineers - Software Engineering Community
Join our passionate programming community for extremist software engineering guidance, open source contributions, and collaborative learning.
👾7
🔥6
اینم لایبرری برای برنامه نویسی فانکشنال با Go هستش. من بسی لذت بردم ازش. درکل هدف از مطالعه فانکشنال اینه که طرز فکر خوبی میده به آدم برای حل مسائل :)
https://github.com/IBM/fp-go
https://github.com/IBM/fp-go
GitHub
GitHub - IBM/fp-go: functional programming library for golang
functional programming library for golang. Contribute to IBM/fp-go development by creating an account on GitHub.
🔥5🤣1
اینم از دیگر تلاش هام یعنی ساختن یک دیتابیس کوچیک و educational.
اما مساله چالش بر انگیز ماجرا این بود که با زبان برنامه نویسی خودم این دیتابیس رو ساختم. یعنی Cyrus.
بنابر این خیلی unstable هست و ممکنه breaking change داشته باشه در آینده. اما در نظر دارم که یک سری فیچر دیگه هم در آینده بهش اضافه بکنم و تو پروژه های کوچیک خودمون ازش استفاده کنیم. انشالله هر وقت زبان مون استیبل شد.
ستاره دادن تو گیت هاب و کامنت فراموش نشه❤️🍻.
https://github.com/cyrus-lang/SampleDB
اما مساله چالش بر انگیز ماجرا این بود که با زبان برنامه نویسی خودم این دیتابیس رو ساختم. یعنی Cyrus.
بنابر این خیلی unstable هست و ممکنه breaking change داشته باشه در آینده. اما در نظر دارم که یک سری فیچر دیگه هم در آینده بهش اضافه بکنم و تو پروژه های کوچیک خودمون ازش استفاده کنیم. انشالله هر وقت زبان مون استیبل شد.
ستاره دادن تو گیت هاب و کامنت فراموش نشه❤️🍻.
https://github.com/cyrus-lang/SampleDB
🔥17❤2
ch8bModified.pdf
485.4 KB
یک ارائه ای کوچکی راجبDynamic relocation using a relocation register که میتونید کپی پیست کنید اسمشو عوض کنید به نام خودتون بزنید و تو دانشگاه ارائه بدید ۲۰ بگیرید.
❤6🤣1
📝 عنوان مقاله: Dynamic Relocation in Operating Systems: A Detailed Guide and Comparison with Static Relocation
چکیده: این مقاله به بررسی دو رویکرد جابجایی ایستا (Static Relocation) و جابجایی پویا (Dynamic Relocation) در سیستمعاملها میپردازد. توضیح داده میشود که چگونه جابجایی پویا با پشتیبانی سختافزاری در زمان اجرا آدرسها را ترجمه میکند و در مقایسه با روش ایستا انعطافپذیری، حفاظت حافظه و کارایی بهتری ارائه میدهد. در ادامه، هر دو روش از نظر مزایا، محدودیتها و کاربرد در سیستمعاملهای مدرن مانند Linux kernel مقایسه میشوند.
زمان مطالعه: ۷ دقیقه
برچسبها: operating-systems, memory-management, dynamic-relocation, static-relocation, linux-kernel, virtual-memory
https://geekengineers.netlify.app/blog/dynamic-relocation-in-operating-systems
چکیده: این مقاله به بررسی دو رویکرد جابجایی ایستا (Static Relocation) و جابجایی پویا (Dynamic Relocation) در سیستمعاملها میپردازد. توضیح داده میشود که چگونه جابجایی پویا با پشتیبانی سختافزاری در زمان اجرا آدرسها را ترجمه میکند و در مقایسه با روش ایستا انعطافپذیری، حفاظت حافظه و کارایی بهتری ارائه میدهد. در ادامه، هر دو روش از نظر مزایا، محدودیتها و کاربرد در سیستمعاملهای مدرن مانند Linux kernel مقایسه میشوند.
زمان مطالعه: ۷ دقیقه
برچسبها: operating-systems, memory-management, dynamic-relocation, static-relocation, linux-kernel, virtual-memory
https://geekengineers.netlify.app/blog/dynamic-relocation-in-operating-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.
🔥9
https://en.wikipedia.org/wiki/Bus_error#Unaligned_access
خلاصه ای از unaligned access:
در معماریهای پردازشی، دسترسی غیرهمتراز (unaligned access) به وضعیتی اطلاق میشود که در آن، دادههای چندبایتی (مثلاً 16، 32 یا 64 بیتی) در آدرسهای حافظهای ذخیره میشوند که با مرزهای مورد انتظار آن نوع داده همتراز نیستند. این وضعیت میتواند منجر به خطای Bus Error شود.
توضیح بیشتر:
دستگاههای پردازشی معمولاً دادهها را در واحدهای 8 بایتی (بایت) آدرسدهی میکنند.
برای دسترسی به دادههای چندبایتی، این دادهها باید در آدرسهایی قرار گیرند که با اندازه آنها همتراز باشد. بهعنوان مثال:
برای دادههای 16 بایتی، آدرسهای 0، 2، 4، 6 و غیره همتراز هستند.
برای دادههای 32 بایتی، آدرسهای 0، 4، 8، 12 و غیره همتراز هستند.
اگر دادهای در آدرسی ذخیره شود که با اندازه آن داده همتراز نباشد (مثلاً داده 32 بایتی در آدرس 3)، تلاش برای دسترسی به آن میتواند منجر به خطای Bus Error شود.
خلاصه ای از unaligned access:
در معماریهای پردازشی، دسترسی غیرهمتراز (unaligned access) به وضعیتی اطلاق میشود که در آن، دادههای چندبایتی (مثلاً 16، 32 یا 64 بیتی) در آدرسهای حافظهای ذخیره میشوند که با مرزهای مورد انتظار آن نوع داده همتراز نیستند. این وضعیت میتواند منجر به خطای Bus Error شود.
توضیح بیشتر:
دستگاههای پردازشی معمولاً دادهها را در واحدهای 8 بایتی (بایت) آدرسدهی میکنند.
برای دسترسی به دادههای چندبایتی، این دادهها باید در آدرسهایی قرار گیرند که با اندازه آنها همتراز باشد. بهعنوان مثال:
برای دادههای 16 بایتی، آدرسهای 0، 2، 4، 6 و غیره همتراز هستند.
برای دادههای 32 بایتی، آدرسهای 0، 4، 8، 12 و غیره همتراز هستند.
اگر دادهای در آدرسی ذخیره شود که با اندازه آن داده همتراز نباشد (مثلاً داده 32 بایتی در آدرس 3)، تلاش برای دسترسی به آن میتواند منجر به خطای Bus Error شود.
Wikipedia
Bus error
Type of computer fault
🔥3👍1
یک منبع جالبی ست این از دانشگاه illinois آمریکا راجب درک و بعد ساختن یک memory allocator.
https://cs341.cs.illinois.edu/coursebook/Malloc#memory-allocator-tutorial
https://cs341.cs.illinois.edu/coursebook/Malloc#memory-allocator-tutorial
❤7