COMPΞZ 🧬
393 subscribers
1.85K photos
52 videos
24 files
736 links
متخصص کامپیوتر و نرم‌افزار • سازنده • هنرمند و طراح • مجموعه‌دار • نویسنده • تحلیل‌گر • مشاور استارتاپی و ایده‌پرداز

𐎲𐎴𐎠𐎼𐎴𐎫𐎹 𐏃𐎢𐎶𐎠𐎫𐎹

We create because the world deserves better code.

https://linktr.ee/compez
Download Telegram
شبی به روشنیِ درخشان‌ترین ستارهٔ آسمان و فردایی سرشار از تلاش و موفقیت برای‌تان آرزومندم.

شبتون شیک و پر از آرامش! 🌑

https://warpcast.com/compez.eth/0x2b58c970
3🔥1
تابع std::ranges::find_last یک عضو جدید در استاندارد ۲۳ است که به شما کمک می‌کند تا آخرین عنصر را در یک محدوده که معیار خاصی را برآورده می‌کند، پیدا کنید. این تابع به دنبال آخرین عنصر در یک محدوده (مانند بردار یا رشته) می‌گردد که یک شرط خاص را برآورده می‌کند. بر خلاف std::find که به تکرار کننده‌های (iterator) دوطرفه نیاز دارد، std::ranges::find_last می‌تواند با iteratorهای رو به جلو کار کند و این امر موجب تطبیق‌پذیرتری با انواع مختلف محدوده‌ها می‌شود.

import std;

auto main() -> int {

std::vector<int> numbers = {1, 3, 5, 7, 2, 7, 4};

// Find the last element equal to 7
auto it = std::ranges::find_last(numbers, 7);

if (it != numbers.end()) {
std::println("Last element equal to 7: {}", *it);
} else {
std::println("No element equal to 7 found.");
}
}


تابع std::ranges::find_last یک ابزار قدرتمند و کارآمد برای یافتن آخرین عنصر مطابق در یک محدوده است و استفاده از آن می‌تواند در موارد مختلفی مفید باشد.


#cpp20 #cpp23 #ranges #find_last
COMPΞZ 🧬
تابع std::ranges::find_last یک عضو جدید در استاندارد ۲۳ است که به شما کمک می‌کند تا آخرین عنصر را در یک محدوده که معیار خاصی را برآورده می‌کند، پیدا کنید. این تابع به دنبال آخرین عنصر در یک محدوده (مانند بردار یا رشته) می‌گردد که یک شرط خاص را برآورده می‌کند.…
بخش تخصصی دوم (به‌روز رسانی Solidity) | بلاک اسمبلی درون خطی (Inline Assembly)

شما می‌توانید دستورات سالیدیتی را با کد اسمبلی درون خطی در زبانی نزدیک به زبان ماشین مجازی اتریوم ترکیب کنید. این کار کنترل دقیق‌تری به شما می‌دهد که به ویژه هنگام توسعه کتابخانه‌ها برای بهبود قابلیت‌های سالیدیتی مفید است.
اسمبلی درون خطی به مانند روش سی‌پلاس‌پلاس که روشی برای دسترسی به کد ماشین میزبان است؛ در اینجا، روشی برای دسترسی به ماشین مجازی اتریوم در سطح پایین است. این کار باعث دور زدن چندین ویژگی مهم امنیتی و بررسی‌های سالیدیتی می‌شود. شما فقط باید از آن برای کارهایی که به آن نیاز دارند و تنها در صورتی که در استفاده از آن اطمینان دارید، استفاده کنید.

- یک بلاک اسمبلی درون خطی با کلمه کلیدی assembly و آکولاد { ... } مشخص می‌شود. کد داخل آکولاد، کد نوشته‌شده به زبان Yul است.
- کد اسمبلی درون خطی می‌تواند به متغیرهای محلی سالیدیتی، همانطور که در ادامه توضیح داده می‌شود، دسترسی داشته باشد.
- بلاک‌های مختلف اسمبلی درون خطی هیچ فضانام مشترکی ندارند، به این معنی که فراخوانی یک تابع Yul یا دسترسی به یک متغیر Yul که در یک بلاک اسمبلی درون خطی دیگر تعریف شده است، امکان‌پذیر نیست.

در اینجا مثالی ارائه شده است که کد کتابخانه‌ای را برای دسترسی به کد قرارداد دیگری و بارگذاری آن در یک متغیر از نوع bytes نشان می‌دهد. این کار با استفاده از دستور زیر انجام می‌شود:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

library GetCode {
function at(address addr) public view returns (bytes memory code) {
assembly {
// retrieve the size of the code, this needs assembly
let size := extcodesize(addr)
// allocate output byte array - this could also be done without assembly
// by using code = new bytes(size)
code := mload(0x40)
// new "memory end" including padding
mstore(0x40, add(code, and(add(add(size, 0x20), 0x1f), not(0x1f))))
// store length in memory
mstore(code, size)
// actually retrieve the code, this needs assembly
extcodecopy(addr, add(code, 0x20), 0, size)
}
}
}



اسمبلی درون خطی نیز در مواردی که بهینه ساز موفق به تولید کد کارآمد نمی‌شود مفید است، به عنوان مثال:

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;


library VectorSum {
// This function is less efficient because the optimizer currently fails to
// remove the bounds checks in array access.
function sumSolidity(uint[] memory data) public pure returns (uint sum) {
for (uint i = 0; i < data.length; ++i)
sum += data[i];
}

// We know that we only access the array in bounds, so we can avoid the check.
// 0x20 needs to be added to an array because the first slot contains the
// array length.
function sumAsm(uint[] memory data) public pure returns (uint sum) {
for (uint i = 0; i < data.length; ++i) {
assembly {
sum := add(sum, mload(add(add(data, 0x20), mul(i, 0x20))))
}
}
}

// Same as above, but accomplish the entire code within inline assembly.
function sumPureAsm(uint[] memory data) public pure returns (uint sum) {
assembly {
// Load the length (first 32 bytes)
let len := mload(data)

// Skip over the length field.
//
// Keep temporary variable so it can be incremented in place.
//
// NOTE: incrementing data would result in an unusable
// data variable after this assembly block
let dataElementLocation := add(data, 0x20)

// Iterate until the bound is not met.
for
{ let end := add(dataElementLocation, mul(len, 0x20)) }
lt(dataElementLocation, end)
{ dataElementLocation := add(dataElementLocation, 0x20) }
{
sum := add(sum, mload(dataElementLocation))
}
}
}
}


#solidity #web3 #update #ether #اتریوم
COMPΞZ 🧬
خب! درود بر برنامه‌نویس عالم! چالش سی روزه رو آغاز می‌کنم 🫵🏼✍🏼 اما هدف آموزش نحوهٔ کد‌نویسی با C++23 و Solidity. شما هم می‌تونید نکته برداری کنید، منم هدفم اینه هرچی به روز رسانی کردم رو یادداشت کنم تا دوباره برای خودم مرور بشه. هیچ سخت نیست، تنهایی پیش…
خب، برنامهٔ چالش از رمضان تموم شد (یه چشم بهم زدن)، در این بازهٔ زمانی سعی من این بود مهم‌ترین به‌روز رسانی‌ها رو نکته برداری کنم.

لیست پین شده هم به‌ روز و فهرست‌وار هست می‌تونید برای کسانی که لازمش دارن بفرستید.

این‌ها بخشی از ویژگی‌هایی استاندارد سی‌پلاس‌پلاس ۲۳ بود به همراه سالیدیتی، دیدیم که خیلی‌جاها به هم شباهت دارن، به خصوص ساختار زبان که طبیعی بود چون با خود سی‌پلاس‌پلاس ساخته شده تا با ایمنی، دقت و کارآیی بالا بر روی ماشین مجازی اتریوم اجرا بشه.

بحث در‌مورد این دو زبان بسیار هست و هرکس مشتاق بود میره دنبالش.⚡️
🙏1
در زمان پیش رویمان، موانع و چالش‌هایی پر از فرصت‌های سازنده برای دنیایی بهتر وجود دارد!
هرآنچه که در توان دارید برای یادگیری به کار ببرید، مطمئن باشید هیچ‌گاه از آموزش و یادگیری پشیمان نخواهید شد.

https://warpcast.com/compez.eth/0xde6b835c
در سبک و سطح‌ شناسی زبان‌های برنامه‌نویسی سطوح رو بر مبنای دو شاخه ارزیابی می‌کنیم:

۱) نحو (سینتکس)
۲) ساختار و ویژگی‌ها زبان

بر اساس این موضوع زبانی مثل سی‌پلاس‌پلاس از نوع نحو (اساساً سطح‌بالاست) این زبان اساساً از نظر نحو اصولاً در محیط توسعه High Level تشریف داره :) به خصوص در استاندارد‌های جدید‌تر که دیگه کاملاً واضح هست.

یک کدی مثل تصویری که می‌بینید در سی++ می‌تونه به دو سطح در سه حالت نوشته بشه.

۱) سطح پایین (سبک خود ++C و نه C)
۲) سطح بالا (کلاسیک)
۳) سطح بالا (مدرنیزه‌تر)

اما از نظر ساختاریِ ذاتی و ویژگی‌ها به دلیل ارائه برنامه‌نویسی در لایه پایین‌تر به شما امکان برنامه‌نویسی سطح پایین رو ارائه می‌کنه؛ بنابراین بر مبنای ساختار بهش می‌گیم سطح میانی یا Mid Level چون هم Low Level و هم High Level رو برای شما ارائه میده، در واقع تنها زبانیه که در سطوح مختلف امکان برنامه‌نویسی رو ارائه می‌کنه.
👍1
COMPΞZ 🧬
در سبک و سطح‌ شناسی زبان‌های برنامه‌نویسی سطوح رو بر مبنای دو شاخه ارزیابی می‌کنیم: ۱) نحو (سینتکس) ۲) ساختار و ویژگی‌ها زبان بر اساس این موضوع زبانی مثل سی‌پلاس‌پلاس از نوع نحو (اساساً سطح‌بالاست) این زبان اساساً از نظر نحو اصولاً در محیط توسعه High Level…
این موضوع رو برای این مثال زدم که بارها در مورد سطح‌بالا صحبت کردیم، اما توضیح در مورد نحو و ساختار زبان‌ها رو شفاف نکرده بودیم.

یک موضوعی هم که باید بهش توجه بشه این هست که سنجش سطوح زبان‌های برنامه‌نویسی نسبت به هم دیگه باز فرق می‌کنه، یعنی همیشه صریحاً نباید بگیم فلان زبان همه جا سطح بالاست؛ این در تعریف از زبان‌ها شُبه ایجاد می‌کنه.

- برای مثال، درسته که ++C سطح بالا هم هست، اما CSharp یک زبان برنامه‌نویسی سطح بالای خالص نسبت به ++C هست؛ هم سبک کار باهاش سطح بالاست و هم سبک ساختاری خود زبان، درسته که تعامل خوبی با سیستم‌عامل ویندوز داره، اما ABI‌ها و API‌های سیستم‌عامل همگی بر مبنای ++C انشعاب پیدا کردن به زبان‌های مبتنی بر دات‌نت که تحت فریمورک به راحتی می‌تونید با لایه‌های زیرین سیستم‌عامل تعامل داشته باشید.

- زبانی مثل JavaScript یک زبان کاملاً سطح‌بالاست! هم از نظر زیرساختی (به دلیل جنس اسکریپتی بودنش) و هم از نظر ساختار و نحو! پس CSharp نسبت به JS سطح پایینه (از نظر ساختار) اما از نظر نحو هر دو راحت هستن و نزدیک به زبان کلامی هستن نه ماشین جفتشم سطح بالان. :)

- زبانی مثل پایتون قطعاً سطح بالاست! نزدیک به زبان انگلیسی و ساختارش هم لایه بالاست :) همین دلیل هم باعث شده عموم مردم ازش استقبال کنن (چون برای درکش نیازی به دانش عمیقی از تخصص مهندسی نرم‌افزار و کامپیوتر ندارید).

دو مبحث بیشتر نداریم:
۱) تشخیص سطح زبان از نظر سبک نوشتن کد‌ها (ساده قابل درک هست یا سخت).
۲) تشخیص ساختار زبان از نظر زیرساخت‌ها و جنس ذاتی (کامپایلری، کامپایلری مجازی یا مفسری و اسکریپتی).

برای حالت اول (نحو یا سینتکس) هرچقدر به زبان کلامی نزدیک باشه و دور از زبان سیستمی، سطح بالاست.
برای حالت دوم (ساختار و ذات)، هرچقدر زیر ساخت‌هاش نزدیک به ماشین (سخت‌افزار) و سیستم‌عامل باشه، سطح پایین.

هیچ‌وقت یک زبان رو فقط بر اساس یکی از این دو حالت با یک زبان دیگه مقایسه نکنید.
یعنی این درست نیست بگیم ++C قابل مقایسه با پایتون هست! نه! این غلطه، شاید بگیم خب الآن سی++ ۲۰ مگه نمیگی خیلی ساده‌تر و شیک‌تر شده! قابل فهم‌تر شده و بهتر میشه درکش کرد، اما خب من می‌گم نه!!! قابل مقایسه نیستن و نخواهند بود چون ساختارشون متفاوته (یعنی از نظر گزینهٔ دوم ۱۸۰ درجه باهم فرق دارن).

تموم شد رفت. غیر از این نیست.
2
محیط دانشگاه رو من به عنوان کسب تجربهٔ آکادمی پیشنهاد می‌کنم نه به عنوان کسب سواد واقعی یا دانش فنی و تخصصی.

دانشگاه حتماً برو، چرا می‌گم برو؟ برای اینکه باور کنی چیزی توش بهت یاد نمیدن، مگر اینکه از اینایی باشی که به دنبال جیره‌خواری در کارهای دولتی باشه که در این صورت ۱۰۰٪ باید چندین سال عمرت رو صرفش کنی چاره‌ای نداری.

این هوش مصنوعی هم که اومده زیاد طول نمی‌کشه اساتید جیره‌خوار و پر مدعا هم کم کم کاسه کوزشونو باید جمع کنند با مباحث شخمی و که به خورد ملت دادن. هرچند اساتید دلسوز هم داریم اما به ندرت خواهید دید.

توی کشور ما حالا حالا‌ها کنکور و مافیا‌های کودن پروری هم نخواهند گذاشت ملت پیشرفت کنند.


در مورد خودآموز بودن من...

بله هر دانش و سوادی که دارم ۱۰۰٪ خود‌آموز هستم، حتی ۱ کلمش رو از دانشگاه یاد نگرفتم، تا جایی که یادم میاد من به اساتید یاد می‌دادم نه اساتید به من.
👎1
پاسخ بخش اول:
۱) وب‌سایتی که معرفی شده بر مبنای مستندات ارائه شده و برای یادگیری به صورت پایه‌ای (اما ساده) مناسب هست.

۲) کتاب C++ Crash Course برای کسانی که تجربهٔ برنامه‌نویسی دارند مناسبه؛ بنابراین، کمک می‌کنه که در استاندارد‌های ۱۷ ارتقاء پیدا کنید و بخش‌هایی از کتابخانهٔ Boost رو هم براتون توضیح میده.

بخش دوم:
سرعت ++C و C بر مبنای بهینه‌نویسی قابل مقایسه هست، اگر یک برنامه‌نویس خبره کد‌های بهینه‌ای پیاده‌سازی کنه، قطعاً سی++ سریع‌تر هست در این باره شک نکنید.
هرجا، در هر مکانی، در هر گروهی و به هر نحوی و از طریق هر کسی شنیدی که می‌گن سی++ امن نیست، همون لحظه یا اونجارو ترک کن یا اگه به اندازهٔ کافی با این زبان کار کردی و به‌روز هستی جفت پا برو تو صورتش! ما از ندانسته‌های دیگران خیری که می‌بریم اینه که بیشتر در مورد چیزی که نمی‌دونیم تحقیق کنیم. ممکنه یکی سال‌ها امید داشته برای یادگیری یه مسیری اما یهو یکی بیاد یه مشت چرندیان بگه که طرف مقابل در مسیری که می‌خواد بره شک و تردید داشته باشه!

این خیلی خوبه که شما شک و تردید داشته باشید، چون موجب می‌شه تحقیق کنید، بیشتر در موردش فکر کنید و بعد تصمیم بگیرید.
در مورد امنیت سی‌پلاس‌پلاس بارها بحث شده، توی خیلی از گروه‌ها دیدم اما من حوصلهٔ شرکت در بحث‌هایی که توش پر از تعصب هست رو ندارم؛ همیشه هم توی گروه و کانالی که خودم بودم صحبت کردم و گفتم ابزار‌ها همشون ابزارن و غیر این نیستن و برای اینکه یه چیزی رو عمیقاً درک کنی باید وقت بذاری. بدم میاد یکی بیاد به جای یادگیری جفت پاشو بکنه تو یه کفش بره سمت تعصب و همش سعی کنه تبلیغات منفی ساطع کنه اون هم در گروه‌هایی که مربوط به چیزی که بهش تعصب داره نیست!!! این چه معنایی داره به جز سم‌پراکنی؟!

یک بار برای همیشه می‌خوام تکلیف این موضوع تبلیغات عدم امنیت، نمی‌دونم مشکل حافظه و این چرندیات بچه‌گانه رو که فقط از دهن یه مشت کد نویس بی‌سواد بیرون میاد رو روشن کنم.

قشنگ به این موضوع توجه کن، سی‌پلاس‌پلاس یک زبان چند-منظورهٔ چند پارادایمی سطح بالاست! اولاً سطح پایین نیست و سطح میانی هم نیست، این‌ها رو بارها گفتم هم توی کتاب‌هام هم توی مقالات، سطح میانی مزخرف‌ترین تعریفیه که میشه از یک زبان کرد چون این بر می‌گرده به ریشهٔ زبان نه سبک و نحوی که باهش می‌نویسیم!

دوماً با وجود سطح بالا بودن این زبان نسبت به C، امکان ارائه برنامه‌نوسی سطح پایین رو به خوبی ارائه می‌کنه؛ در حد سی و حتی فراتر از اون.
پس چی شد؟ این یک زبان سطح بالا با امکان ارائه سطح‌پایین هست.

سطوح زبان رو همیشه باید نسبت به زبان‌های دیگه بسنجی! مثلاً C صرفاً یک زبان سطح‌پایین هست نه سطح بالا. و امکان ارائه برنامه‌نویسی سطح بالا رو هم به شما نمیده! اما این موضوع در مورد سی++ برعکسه، ذاتاً سطح بالاست و امکان برنامه‌نویسی سطح پایین رو به برنامه‌نویس میده.

قبل از هر چیز باید بگم قول میدم بهت خیلی از این مدعی‌های چرندیان حتی روحشون هم خبر نداره این زبان چطوری در حال رشد و توسعه هست، چه کسی یا چه کسانی پشتشه و در حال گسترش اون هستن. برای آشنایی بیشتر چند موضوع رو برای اولین بار اینجا این لینک‌ها رو منتشر می‌کنم که صرفاً افراد پیگیر و متخصص دنبالشون هستن نه هرکسی.

مرجع رسمی استاندارد‌سازی و مستندات آرشیو شده در Open STD به لینک رسمی زیر هست:

https://www.open-std.org

وظیفش چیه؟ این مجموعه تحت مدیریت استانداردهای جهانی (ISO) و کمیته فنی TC1 (Technical Committee 1) فعالیت می‌کنه.
وظیفه اصلی این وب‌سایت اطلاع‌رسانی دربارهٔ فعالیت‌های گروه کاری ۲۱، مشارکت‌کنندگان در توسعه استانداردها، پیشرفت‌های اخیر، اسناد فنی، و سایر اطلاعات مرتبط با استانداردهای ++C و چندین استاندارد دیگست مثل، POSIX، ISLISP، Java، لینوکس و ...


لینک بعدی از زیر مجموعه‌ٔ همین گروه به صورت زیر هست:
https://www.open-std.org/jtc1/sc22/wg21/docs/standards

این چیه؟ اصلاً WG21 چی هست؟ WG21 به کمیته فنی از سازمان استانداردهای جهانی (ISO) که به توسعه استانداردهای زبان برنامه‌نویسی ++C اختصاص داره. بنابراین، WG21 به گروه کاری ۲۱ مربوط به استانداردهای سی‌پلاس‌‌پلاس اطلاق می‌شه. این یعنی این زبان مثل هر اسبا‌ب‌بازی ای که مدام باهاشون سر و کار دارید پیش نمیره! این یک ابزار و فناوری به شدت مهم و حساس هست نه یک ابزار که اگه همین الآن حذفش کنی دنیا عین خیالشم نباشه. پس مهمه که مسئولیت‌ها و همهٔ سیر تا پیاز‌های توسعهٔ چنین چیزی اصولی و با حساسیت پیش بره و طبق استاندارد سازمان جهانی معرفی بشه.

حالا بریم سر استاندارد‌ها و پیش‌نویسه‌ها که می‌خوام ببینم اون‌های یکه مدعی هستن و داستان می‌گن دقیقاً چقدر از این مستندات رومطالعه کردن:

من عادت ندارم یه چیزی رو با پیشنهاد این و اون یا نمی‌دونم همینطوری الکی با جو تبلیغاتی پیگیر باشم، اما چیزی که می‌دونم در مورد این زبان اولین مستندات و مقالاتی که در موردش ارائه شدن از سال ۱۹۸۹ بوده! دقیقاً سالی که من به دنیا اومدم! هم سنیم!!! :) ۳۴ سال پیش! و خیلی از شماها هم که شاید بودین اما تو باغ نبودین! مستنداتش در این لینک موجوده:

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/1989

لینک اصلی برای دسترسی به همهٔ مستنداتی که در دسترس قرار گرفتن اینجاست:


https://www.open-std.org/jtc1/sc22/wg21/docs/papers
از سال ۱۹۸۹ تا به الآن هرچی که بوده مستند شده.
پیشنهاد نمی‌کنم برید همرو بخونید چون لازم نیست! اما موضوعی که خلاصه می‌خوام بگم اینه که همهٔ بازخورد‌ها از سراسر جهان از افراد متخصص و خبره که دانششون خیلی سرتر از من و شماست سال‌هاست برای کمیتهٔ استاندارد‌سازی ارسال میشه.

تمامی مسائلی که ارسال شدن و وقتی صفحه رو باز کنی از سرت دود بلند میشه در این بخش آرشیو شده که مربوط به تمامی مسائل و بحث‌های مربوط به کتابخانهٔ استاندارد یعنی STL هست.

https://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html

مهم‌ترین عناوین استاندارد شده که ارائه و به تصویب نهایی رسیدن به صورت زیر هستند:

N1316 : 1989/2003
N3242 : 2011
N3797 : 2014
N4659 : 2017
N4849 : 2020



این‌ها مستندات مجموعاً به صورت خلاصه‌وار چندین هزار صفحه هستن که طی سال‌ها روشون کار شده! همه چیز اونطور که باید خیلی فراتر از حرف‌های پیش و پا افتادهٔ بچه‌گانهٔ بعضی‌ها که توی گروه‌ها دارن دست به دست می‌کنن بررسی شده که نظر شما حتی توش معنا نداره!

چیزی که مسخرست اینه که بین این چندین هزار مستند مدعی‌ها حتی ۱ صفحش رو نخوندن بعد میان اینجا صحبت از مشکل حافظه، نمی‌دونم مشکل امنیت و این مسائل می‌کنند! آخه بچه جان هر موقع نصف عمرت رو گذاشتی روی یه تخصص و بارها مستنداتش رو خوندی و متوجه بودی که جریان چی هست و راهکار چه چیزی، اون موقع توی گروه‌ها داستان بنویس. این‌که هیچی در مورد هیچ چیزی نمی‌دونید رو می‌خواین ثابت کنید؟! کدوم زبان بچه‌بازی‌ای با همچین مستنداتی و با این عمق از اطلاعات از سر تا سر دنیا در حال توسعست که هر روز یه داستان در میارید توی گروه‌های فارسی؟ فکر کردین کشکه که در موردش نظر میدین.

در مورد همهٔ موضوعاتی که هر روز بحثش هست، از مشکل مدیریت وابستگی‌ها گرفته تا مسائل مربوط به حافظه و ده‌ها داستان دیگه.
اولاً که هیچ چیزی کامل نیست و نسخه‌نگاری رو برای همین گذاشتن! کسی که وارد مهندسی نرم‌افزار میشه دیگه نباید بحث‌های چرند این شکلی رو هر روز تکرار کنه چون می‌دونه فناوری بر مبنای بازخورد در حال پیشرفته.

خلاصهٔ کلی این مستندات و نتیجش به عنوان پیشنهاد من این هست:

برنامه‌نویسی مدرن و جدید با استاندارد حداقل ۱۷ به بعد رو یاد بگیر، به خصوص استاندارد ۲۰ اصلاً یک دنیای جدیدی از برنامه‌نویسی هست:

۱) استفاده از مدیریت هوشمند حافظه، تکنیک RAII و ... این روشی مثل GC نیست، چرندیاتی که بعضی‌ها تو سایت‌ها نوشتن رو بذار کنار، قبلاً در موردش توضیح دادم، سایت رو شخم بزنید پیداش می‌کنید.

۲) از ویژگی‌های Contracts که این امکان رو فراهم می‌کنه تا شرایط پیش‌فرض و پس‌فرض برای توابع مشخص شده و در زمان اجرا بررسی بشه رو یاد بگیر.

۳) از Concepts‌ها استفاده کن، مفاهیم در استاندارد ۲۰ به عنوان یک ویژگی مهم معرفی شده است. Concepts به برنامه‌نویسان این امکان را میده که شرایط مورد نیاز برای یک الگو رو در زمان کامپایل مشخص کنه. این اهمیت اجازه میده تا خطاهای کامپایلی بهتری در زمان کامپایل تشخیص داده بشه و اطمینان حاصل بشه که یک الگو فقط برای نوع‌هایی که شرایط معین را دارا هستند، استفاده می‌شود.

۴) مدیریت وابستگی‌ها؟ از CMake استفاده کن! یا به هر روشی که دلت می‌خواد وابستگی‌ها رو مدیریت کن یا از vcpkg یا conan استفاده کن! این واقعاً چرند‌ترین موضوعه که می‌گن سخته! بله برای کسی که متخصص نیست طبیعیه که سخت باشه، قرار نیست همه متخصص باشن! من برای خودم PT رو دارم!

۵) سادگی بیشتر؟! از استاندارد ۱۷ به بعد رو یاد بگیر و در استاندارد‌های جدیدتر با توالی‌ها (ranges) با متداول‌ترین عملیات‌های جستجو، تغییر، و فیلتر که کدهای حلقه رو ساده‌تر و خواناتر کن.

۶) کروتین‌ها رو یاد بگیر! اضافه شدن ویژگی کروتین‌ها (Coroutines) که اجازه میده تا کدهای همروندی و موازی را با استفاده از نحوی ساده‌تر و خواناتر پیاده‌سازی کنی بسیار کارآمد هستند.

۷) شاکی هستی از مدیریت فایل سنتی؟! من مشکلی با این موضوع ندارم! ولی خب ماژول‌ها (Modules) به شما این امکان رو میده که کدهای تقسیم شده‌ای داشته باشی و کاهش تداخل‌های نام (name collisions) رو فراهم می‌کنه و کم کم این روش رو می‌تونی یاد بگیری.

۸) بحث constexpr رو جدی بگیر، بهبود‌های بسیاری می‌تونی به واسطهٔ این ویژگی در کدت اعمال کنی که در زمان کامپایل مطمئن‌تر خواهد بود.

۹) روش‌های بهینه‌نویسی، ساده‌نویسی رو یاد بگیر! برنامه‌نویسی خلاقیت می‌خواد نه اینکه بشینی هرچی تو کتاب نوشت رو یاد بگیری بگی تموم شد!

۱۰) به دنیای هیولای زبان‌های برنامه‌نویسی خوش اومدی. 👊🏼 لامصب عین همون گودزیلا تو هر نسخهٔ جدیدش خوشگل‌تر و با ابوهت می‌شه. ☺️😎
بای بای جینقولیا، تا پند‌هایی دیگر به درود. 😜👊🏼

#cpp #moderncpp #advancedproramming #notes
1👍1
این محتوا همرو از کانال قبلی بازیابی کردم... 😍
هزاران پست هست چه تخصصی چه غیر تخصصی! 😢
Please open Telegram to view this post
VIEW IN TELEGRAM
خب! بحث بحث وب ۳ هست!

۱) آشنایی با شبکهٔ بلاک‌چین و به خصوص شبکهٔ اتریوم لایه ۱ و لایه ۲.
۲) برنامه‌نویسی با Solidity برای موضوع قرارداد‌ها.
۳) برنامه‌نویسی بحث پلتفرم که می‌تونه با C++, Rust, Php و حتی TypeScript شکل بگیره.

۴) برای ساخت کیف پول و انتقال و دریافت وجه‌ ارزی هم باید بتونید روی شبکه کیف اختصاصی برای تولید آدرس‌های مشخصی ایجاد کنید.

بحث درگیر شدن با متامسک و کیف‌پول‌های این شکلی هم نیاز به یادگیری web3js یا etherjs دارند.

در حداقل حالت باید به JS/TS و مفاهیم توسعهٔ وب و بلاک‌چین آشنایی داشته باشید.
اگر کاری را که در زندگی‌تان انجام می‌دهید، سبب نمی‌شود قلب‌تان ترانه شادی سَر دهد؛ پس سوخت لازم به شعلهٔ اشتیاق درون‌تان نمی‌رسد تا هر روز با انگیزه از خواب برخیزید.
به این ترتیب وظیفهٔ خودتان را به منزلهٔ یک انسان، بر روی این کرهٔ خاکی انجام نمی‌دهید. 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
۱) تأخیر در محاسبات تاریخ از نظر من مربوط به سمت تیم فارکستر هست که هنوز کامل همه داده‌ها رو بررسی نمی‌کنه.

۲) اگر اینفلوئنسر (فرد تأثیر گذاری) نیستید، نیازی نیست. این بیشتر برای این هست که نگران این نباشید مقالات یا تعامل‌های شما روی محتوایی که تولید کردین از بین بره. من شخصاً گاهی شارژ می‌کنم چون مهمه مقالاتی که نوشتم روی شبکه باقی بمونن.

ماهیتش اینه که به شما کمک می‌کنه تا محتوای خودتون رو روی نود‌ها نگه‌داری کنید.
👏2
I have just collected "Growth" by shabnamporjalil on objktcom

On X | On FC
1
This media is not supported in your browser
VIEW IN TELEGRAM
I have just collected "FUD Poisoning" by gore_gif on objktcom

On X | On FC
COMPΞZ 🧬
I have just collected "FUD Poisoning" by gore_gif on objktcom On X | On FC
به این‌ها می‌گیم گلیچ (Glitch)!

گلیچ آرت یعنی وقتی یه عکس، ویدیو یا صدا خراب می‌شه، می‌پره، قاطی می‌کنه یا رنگاش می‌ریزه بهم، ولی این اتفاق عمدی و برای زیباییه!

حس دیجیتالی، سایبرپانکی و حتی نوستالژیک داره؛ یاد اون تلویزیونای قدیمی که برفک می‌زد یا بازی‌های ویدیویی که قاطی می‌کردن، می‌ندازه!

گلیچ آرت اینو می‌گه: همه‌چی نباید تمیز و مرتب باشه، گاهی زیبایی توی هرج‌ومرجه!
توی اینهمه سال شنیدین یه بار بگن بیت‌کوین هک شد؟ 🙃 ولی صد بار شنیدیم بگن اتر و هر آلت‌کوینی زیرش بود به چوخ رفتن!
این شمارو به یاد اون مدعیان سی++ امن نیست و راست و گو خیلی خوبن نمی‌اندازه؟ 😅 یادآوری، پروتکل بیت‌کوین و کل شبکش با سی++ ساخته شده.
پروتکل‌های مبتنی بر اتریوم بر پایه راست و گو ساخته شده. 😉

خلاصه در بلند مدت امنیت و دقت با عملکرد دقیق روی زیرسیستم‌ها حرف اول رو خواهد زد، به خصوص وقتی صحبت از پردازش کوآنتومی باشه.

یکم عمیق‌تر و فنی‌تر بگم، بیت‌کوین از امضای ECDSA-256 استفاده می‌کنه که در برابر حملات کلاسیک مقاومه و تا به الآن هم مشکلی براش پیش نیومده، ولی اگه پردازش کوانتومی به سطح عملیاتی برسه، مهاجمان می‌تونن کلیدهای خصوصی رو با الگوریتم‌هایی مثل Shor کرک کنن. در این حالت باز بیت‌کوین به‌خاطر طراحی ساده و انعطاف‌پذیرش بر مبنای ساختارش، می‌تونه به الگوریتم‌های مقاوم در برابر کوانتوم (مثل lattice-based cryptography) مهاجرت کنه، درحالی‌که قراردادهای هوشمند پیچیده‌ی اتریوم با یه تغییر اساسی، ممکنه کل اکوسیستمش رو به خطر بندازه.

پس وقتی بحث امنیت واقعی و دوام در برابر تهدیدهای آینده باشه، بیت‌کوین جایگاهش همینی هست که هست.🔥
Please open Telegram to view this post
VIEW IN TELEGRAM