نمایش نتایج 1 تا 15 از 15

نام تاپیک: توسعه یک زبان برنامه نویسی

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #12

    نقل قول: توسعه یک زبان برنامه نویسی

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    بله من هم به همین مطلب اشاره کردم که لیست پیوندی چه مکانیزمی داره ! منتهی چه ربطی به آدرس دهی متغیرها در حافظه استک یا هیپ داره! اگرهم منظورتون این هست که با مکانیزم لیست پیوندی آدرس دهی کنید که کلی چالش داره بحث سرعت و بازدهی و اتلاف حافظه ...
    خب پایینتر خودتون جواب خودتون رو دادید - باید با سازو کار مفسر بیشتر اشنا بشید- متوجه میشید - متوجه حرف شما هستم - ولی خب شما ساز و کاری که در نظر گرفته شده رو در نظر نگرفتید شایدم کلا ندید که متوجه نشدید. باید مفسر را بررسی کنید.

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    اول که من متوجه شدم! اگر منظورتون از آرایه اول و آرایه دوم اندیس های آرایه data هست(چون من که فقط یک آرایه در مثال شما مبینم) در اندیس دوم آرایه data آدرس یک متغیر از نوع int کجا تعریف شده چون من که همچنین متغیری نمیبینم فقط یک Rvalue literal int مقدار دهی شده نه آدرسش اصولا یک temp var که نمیتونه آدرس معتبر داشته باشه و در ضمن وقتی که همچنین آرایه ای تعریف میکنید کامپایلر همه عضوها را به signed int8_t تفسیر میکنه حالا چه یک char باشه چه عدد 100 باشه اگر هم که عدد بزرگتر از int8_t max باشه بایتهای با ارزش ازدست میره و تنها علامت منفی باقی خواهد ماند.
    بله منظورم درایه بوده نوشتم ارایه- به اندازه int بهش اختصاص داده شده- قبلا هم توضیح دادم که عدد متغیر هست و ثابت نیست- خود شما هم میگید ۱۰۰ توی یک بایت جا میشه اگر بخوای عدد بیشتری مقدار دهی کنی اون خونه رو به intتبدیل میکنی اون موقع

    *(int *)data = 5000;


    الان مشخصه که داده از نوع ۳۲ بیت هست ؟ برادر این متغیر هست- متغیر - متغیر
    ثابت نیست- چکار دارید توش ۱۰۰ هست - اون یک مثال هست - مثال - مثال

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    و بخش دوم صحبت شما که هیچ ربطی به تعریف آرایه نداره! بله اگر یک متغیر از نوع int داشته باشیم وعدد 100 را درون آن ذخیره کرده باشیم و بعد از اینکه با یک explicit cast به یک کاراکتر تبدیل کنیم بله 3 بایت متغیر int بلا استفاده میشه ولی اتلافی اتفاق نخواهد افتاد چون اگر در استک تعریف شده باشه که کامپایلر بلافاصله بعد از اتمام حوزه عملکرد متغیر حافظه را مجددا به سیستم عامل بر میگردونه اگر هم که در هیپ باشه و اگر هوشمند تعریف نشده باشه برنامه نویس موظف به باز پس گیری خواهد بود.
    خب اگر معتقدید که اینطوری اون سه بایت اتلاف نشده پس چطور معتقدید که حافظه در لیست پیوندی به خاطر ادرس دهی ها اتلاف میشه! به قول خود شما به حافظه برمیگیرده پس از هر فرایند یا معتقدید اینجا باید اتلاف حساب کرد اونجا نه!!!


    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    در هر حال دوست گرامی با این تحلیل ها واستدلال های شما ما باید کلا در حال اتلاف حافظه باشیم و با اجرای هر برنامه کلی از بلوک های حافظه غیر قابل آدرس دهی باشه! که چنین چیزی اصلا امکان نداره بی زحمت اگر به لیست پردازش ها و نخ های در حال اجرا سیستم عامل خودتون مراجعه کنید خواهید دید که این حجم از پردازه و ها نخ ها با کمترین میزان اشغال حافظه در حال کار هستند.
    واینکه چه کسی گفته که برای یک عدد 100 باید چهار بایت اختصاص داد یک بایت هم کافی حتی 7 بیت هم کافی هست نیازی به 32 بیت نیست و خوب اینهم بدیهی است که در یک 1 یا 2 بایت نتوان یک عدد بزرگ ذخیره کرد حالا چه ربطی به اتلاف حافظه داره.
    و نکته آخر انشاالله که همانطور که می فرمایید اصول پایه را درست بلد باشید.
    باید روی مفهوم متغیر بیشتر کار کنید متوجه خواهید شد چرا برای ۱۰۰ چهار بایت لازم است.
    یک مفسر هم بنویسید به جواب بقیه سوالاتتان خواهید رسید.

    و نکته اخر اینکه متن ها رو درست بخونید که سوالات رو تکرار نکنید - تقریبا چندین بار گفتم نوع متغیر ها ثابت نیست - اولین اشتباه شما این هست که شما فکر میکنید من یک زبان رو باز نویسی کردم - از این رو انتظار دارید همان کلید واژه ها در این زبان هم باشند - بعد متوجه نیستید که برای هر متغیر مقدار ثابتی تعریف نمیشود برای همین هر چند توضیح دادم باز هم متوجه نمیشوید چرا اتلاف رخ میدهد - یک مفسر بنویسید که داده ها متغیر باشند متوجه می شوید.

    حتما در هنگام نوشتن کد متوجه اتلاف حافظه و سرعت بودم و چاره اندیشی کردم حالا موثر بوده تا حدودی هر چند بهترین حالت ممکن نبوده و بنده هم همچین ادعایی نداشتم و در نظر داشته باشید کد ها رو به تکامل هستند - نه رو به عقب - پس وقتی نوشته میشوند از بهترین حالت برخوردار نخواهند بود- برای همین هم دوستان رو به همکاری دعوت کردم - خب هر کس یه ایده داره - نگفتم بیاین ببینین عجب چیزی نوشتم که - گفتم بیاین ببینین چطور کاستی هاشو رفع کنیم. این یعنی کد در بهترین حالت نیست. فعلا فقط یک سازو کار اولیه هست که مشکل عموم نوشتن همین ساز و کار اولیس بعدش میشه ایده پردازی کرد و اینکه یک سری مزایا داره و یک سری معایب

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

    https://github.com/Yasser-Sajjadi/pedar
    من لیست پیوندی به ذهنم رسید - اگر میتونید خب تخصیص حافظه پویا درست کنید براش- که پیوندی هم نباشه و محدودیت حافظه هم نداشته باشه - بسم الله
    آخرین ویرایش به وسیله yasser_sajjadi : شنبه 18 خرداد 1398 در 14:28 عصر

تاپیک های مشابه

  1. برنامه نویسی و توسعه برای کارت های هوشمند
    نوشته شده توسط temp.1991 در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 13
    آخرین پست: سه شنبه 10 شهریور 1394, 13:48 عصر
  2. حرفه ای: برنامه نویسی یک پرتال به صورت ماژولار و قابل توسعه
    نوشته شده توسط persian_bigboy در بخش ASP.NET Web Forms
    پاسخ: 11
    آخرین پست: سه شنبه 25 آبان 1389, 17:47 عصر
  3. برنامه نویسی وب یا توسعه CMS
    نوشته شده توسط mehrdad201 در بخش ASP.NET Web Forms
    پاسخ: 10
    آخرین پست: پنج شنبه 22 آذر 1386, 19:30 عصر
  4. برنامه نویسی توسعه پذیر
    نوشته شده توسط oxygenws در بخش تحلیل و طراحی نرم افزار
    پاسخ: 3
    آخرین پست: دوشنبه 22 اسفند 1384, 15:17 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •