اطلاعیه

Collapse
No announcement yet.

چطور کد میزنید؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چطور کد میزنید؟

    سلام. تقرییا همه ما بصورت تجربی و بدون آموزش خاصی (مخصوصا آکادمیک) برنامه نویسی رو یاد گرفتیم. هنوز تو دانشگاههای ما به زحمت C رو یاد میدن و کمتر استادی داریم که از برنامه نویسی کاربردی پیزی بدونه! (نمیدونم چقدر این حرفم صحت داره ولی تجربه من از دانشگاه اینطوریه)
    اگر امکان داره تجربیات و استایل برنامه نویسی خودتون رو بیان کنید
    بعنوان مثال من مدتها طول کشید تا متوجه بشم مواردی مثل نامگداری صحیح متغیرها و توابع یا ارور گیری صحیح از کدها و خروجیهای توابع داشته باشم و فکر نکنم همه چیز اونطوری پیش میره که ما میخوایم ، یا اینکه سعی کنم کمترین کار رو بعهده کاربر بگذارم چون مخصوصا در خطوط تولید عموما کارگران دانش خوبی نسبت به استفاده از نرم افزار ندارند و ...
    بعنوان سوال اول
    نحوه کدنویسی برای سیستم مالتی تسک نوعی
    مثلا برنامه ای که چند دکمه یا ورودی داره. با زدن هر دکمه یکسری عملیات باید انجام بشه که بسیار زمانبره (فرض کنید کار مورد نظر یک باتن حدود چند دقیقه طول میکشه) و تو این مدت باید دکمه های دیگه هم خدمت رسانی بشن اگر که فشردع شدن.
    شما چطور این عملیات رو تقسیم بندی میکنید و برای این سیستم کد میزنید.
    من یک صف از کارهایی که پردازنده باید انجام بده تشکیل میدم. یک صف ساده شامل کد کاری که باید انجام بشه و زمان انجام اون کار،
    در روال تایمر صف رو چک میکنم. هر تسکی که زمان انجامش رسیده باشه انجام داده میشه و ...
    جدیدترین ویرایش توسط mojalan; ۲۰:۳۴ ۱۳۹۸/۰۲/۱۰.

    #2
    پاسخ : چطور کد میزنید؟

    سلام . بحث کیفیت کد یا خوانایی کد و کدی که اصطلاحا قابل نگهداری باشه بحث گسترده ایه که معروفترین کتاب تو این زمینه کتاب clean code یا کدنویسی تمیز نوشته مارتین فاولر هست مباحث مختلفی رو شامل میشه از جمله بحث نامگذاری متغیرها توابع فایل ها کلاس ها و ... و البته روش های کد ریفکتورینگ یا بهبود عملکرد و خوانایی کد بدون تغییر عملکرد اون . اگر شد یه تاپیک جدا درباره کدنویسی تمیز باز شه تا عمیق تر اونو بررسی کنیم
    در مورد سوال دومم اگه درست متوجه شد باشم باید هر تسک تو یه ترد جدا قرار بدین حالا اگه وظایف تردها مستقل از هم بودن که پردازنده اونا رو بصورت همروند انجام میده اما اگر وظایف به هم وابسته بودن بحث برنامه نویسی ناهمزمان بوجو د میاد ....

    دیدگاه


      #3
      پاسخ : چطور کد میزنید؟

      نوشته اصلی توسط mojalan نمایش پست ها
      سلام. تقرییا همه ما بصورت تجربی و بدون آموزش خاصی (مخصوصا آکادمیک) برنامه نویسی رو یاد گرفتیم. هنوز تو دانشگاههای ما به زحمت C رو یاد میدن و کمتر استادی داریم که از برنامه نویسی کاربردی پیزی بدونه! (نمیدونم چقدر این حرفم صحت داره ولی تجربه من از دانشگاه اینطوریه)
      اگر امکان داره تجربیات و استایل برنامه نویسی خودتون رو بیان کنید
      بعنوان مثال من مدتها طول کشید تا متوجه بشم مواردی مثل نامگداری صحیح متغیرها و توابع یا ارور گیری صحیح از کدها و خروجیهای توابع داشته باشم و فکر نکنم همه چیز اونطوری پیش میره که ما میخوایم ، یا اینکه سعی کنم کمترین کار رو بعهده کاربر بگذارم چون مخصوصا در خطوط تولید عموما کارگران دانش خوبی نسبت به استفاده از نرم افزار ندارند و ...
      بعنوان سوال اول
      نحوه کدنویسی برای سیستم مالتی تسک نوعی
      مثلا برنامه ای که چند دکمه یا ورودی داره. با زدن هر دکمه یکسری عملیات باید انجام بشه که بسیار زمانبره (فرض کنید کار مورد نظر یک باتن حدود چند دقیقه طول میکشه) و تو این مدت باید دکمه های دیگه هم خدمت رسانی بشن اگر که فشردع شدن.
      شما چطور این عملیات رو تقسیم بندی میکنید و برای این سیستم کد میزنید.
      من یک صف از کارهایی که پردازنده باید انجام بده تشکیل میدم. یک صف ساده شامل کد کاری که باید انجام بشه و زمان انجام اون کار،
      در روال تایمر صف رو چک میکنم. هر تسکی که زمان انجامش رسیده باشه انجام داده میشه و ...
      سلام
      روش شما به نظر درست میاد. ایجاد یک صف از task ها و سرکشی و رسیدگی منظم به اون ها باعث میشه سیستم تقریباً Real-time باشه. من خودم هم با ایجاد یک loop و سیستم polling همه ی task ها رو مدیریت می کنم. بعد ها در میکروکنترلر های مبتنی بر arm به مفهومی بر خوردم به اسم RTOS که دقیقا همین کار رو به صورت ماژولار و سخت افزاری انجام میده و با سخت افزار مدیریت و کنترل میشه. البته به دلیل محدودیت های خاص که تو کار مشخص میشه، من همچنان از روش خودم پیروی می کنم تا انعطاف بیشتری نسبت به RTOS داشته باشم. در ادامه...
      >>>>>RTOS<<<<<
      *** يا راهي خواهم يافت، يا راهي خواهم ساخت ... ***

      دیدگاه


        #4
        پاسخ : چطور کد میزنید؟

        نوشته اصلی توسط mojalan نمایش پست ها
        سلام. تقرییا همه ما بصورت تجربی و بدون آموزش خاصی (مخصوصا آکادمیک) برنامه نویسی رو یاد گرفتیم. هنوز تو دانشگاههای ما به زحمت C رو یاد میدن و کمتر استادی داریم که از برنامه نویسی کاربردی پیزی بدونه! (نمیدونم چقدر این حرفم صحت داره ولی تجربه من از دانشگاه اینطوریه)
        اگر امکان داره تجربیات و استایل برنامه نویسی خودتون رو بیان کنید
        بعنوان مثال من مدتها طول کشید تا متوجه بشم مواردی مثل نامگداری صحیح متغیرها و توابع یا ارور گیری صحیح از کدها و خروجیهای توابع داشته باشم و فکر نکنم همه چیز اونطوری پیش میره که ما میخوایم ، یا اینکه سعی کنم کمترین کار رو بعهده کاربر بگذارم چون مخصوصا در خطوط تولید عموما کارگران دانش خوبی نسبت به استفاده از نرم افزار ندارند و ...
        حقیقتا من هنوز کدنویس خوب ایرانی ندیدم. خود من هم کدنویس خوبی نیستم. برای کدنویسی واقعا باید پروژه های زیادی رو انجام بدی. حرف استاد دانشگاه و این افراد رو نزن که حالم از جامعه شون بهم می خوره. بعضی هاشون واقعا به مفت خوری و مزخرف گفتن عادت کردن. به من هم الکی پول بدن و ازم کاری نخوان ممکنه مثل اینا بشم.
        نوشته اصلی توسط mojalan نمایش پست ها
        بعنوان سوال اول
        نحوه کدنویسی برای سیستم مالتی تسک نوعی
        مثلا برنامه ای که چند دکمه یا ورودی داره. با زدن هر دکمه یکسری عملیات باید انجام بشه که بسیار زمانبره (فرض کنید کار مورد نظر یک باتن حدود چند دقیقه طول میکشه) و تو این مدت باید دکمه های دیگه هم خدمت رسانی بشن اگر که فشردع شدن.
        شما چطور این عملیات رو تقسیم بندی میکنید و برای این سیستم کد میزنید.
        من یک صف از کارهایی که پردازنده باید انجام بده تشکیل میدم. یک صف ساده شامل کد کاری که باید انجام بشه و زمان انجام اون کار،
        در روال تایمر صف رو چک میکنم. هر تسکی که زمان انجامش رسیده باشه انجام داده میشه و ...
        چقدر من تو این فروم التماس بچه ها می کنم که RTOS رو یادبگیرن(البته من مطمئنم بعضی ها بلدن ولی به بقیه یاد نمی دن. خودم اگه وقت داشتم آموزشش رو می ذاشتم). من باشم ترجیح می دم که RTOS رو یاد بگیرم و با اون این کارهای تودرتو رو انجام بدم. چون نویسنده RTOS ها فکر خیلی قسمت هایی رو کردن که ما نکردیم یا تجربه نداریم. اینطوری خطر ریسک کمتر هست. یه نمونه اینجا گفتم یادبگیرید و حتی کار برای اپلای هم گذاشتم(تو آخرین پست):

        با سلام به دوستان عزیز من الان چند ماهه که ++c رو دارم کار میکنم و میخوام حرفه ای یاد بگیرم. هدفم اینه که پروژه های سخت و پیشرفته الکترونیک رو با این زبان انجام بدم اما چون کار اصلیم برنامه نویسی هست دقیقا نمیدونم سراغ چه پروژه هایی برم اگر ممکنه پروژه های سخت الکترونیک که میشه با ++c انجام داد رو معرفی کنید.

        دیدگاه


          #5
          پاسخ : چطور کد میزنید؟

          نوشته اصلی توسط mojalan نمایش پست ها
          سلام. تقرییا همه ما بصورت تجربی و بدون آموزش خاصی (مخصوصا آکادمیک) برنامه نویسی رو یاد گرفتیم. هنوز تو دانشگاههای ما به زحمت C رو یاد میدن و کمتر استادی داریم که از برنامه نویسی کاربردی پیزی بدونه! (نمیدونم چقدر این حرفم صحت داره ولی تجربه من از دانشگاه اینطوریه)
          اگر امکان داره تجربیات و استایل برنامه نویسی خودتون رو بیان کنید
          بعنوان مثال من مدتها طول کشید تا متوجه بشم مواردی مثل نامگداری صحیح متغیرها و توابع یا ارور گیری صحیح از کدها و خروجیهای توابع داشته باشم و فکر نکنم همه چیز اونطوری پیش میره که ما میخوایم ، یا اینکه سعی کنم کمترین کار رو بعهده کاربر بگذارم چون مخصوصا در خطوط تولید عموما کارگران دانش خوبی نسبت به استفاده از نرم افزار ندارند و ...
          بعنوان سوال اول
          نحوه کدنویسی برای سیستم مالتی تسک نوعی
          مثلا برنامه ای که چند دکمه یا ورودی داره. با زدن هر دکمه یکسری عملیات باید انجام بشه که بسیار زمانبره (فرض کنید کار مورد نظر یک باتن حدود چند دقیقه طول میکشه) و تو این مدت باید دکمه های دیگه هم خدمت رسانی بشن اگر که فشردع شدن.
          شما چطور این عملیات رو تقسیم بندی میکنید و برای این سیستم کد میزنید.
          من یک صف از کارهایی که پردازنده باید انجام بده تشکیل میدم. یک صف ساده شامل کد کاری که باید انجام بشه و زمان انجام اون کار،
          در روال تایمر صف رو چک میکنم. هر تسکی که زمان انجامش رسیده باشه انجام داده میشه و ...
          با سلام
          پیشنهاد می کنم سایت Udacity را نگاه کنید، من خودم کد نویسی استاندارد و درست را اولین بار از این سایت یاد گرفتم، دوره های زیادی داره که گوگل و ماکروسافت برگذار می کنند ممکنه به کارتون بیاد.
          موفق باشید

          دیدگاه


            #6
            پاسخ : چطور کد میزنید؟

            نمیدونم درست متوجه سوال شما شدم یا نه ولی یه توضیحکی میدم.

            1.1-مهمترین مورد به نظرم منظم نوشتن کد ها هستش و رعایت فاصله ها.

            1.2) سند سازی از توابع و کتابخونه ها - چیزی که ندیدم کسی رعایت کنه - خودم هم که هیچی - تعطیل - یه چی هست به اسم doxygen - خودم هم تازه باهاش آشنا شدم - سندسازی از پروژه

            2-معمولا کد پروژه وقتی از یه حدی بیشتر میشه، مشکل*زدایی اصلاحش داستان میشه.
            برا حل این مورد من هر چیزی رو تابع تابع میکنم و توابع رو کتابخونه.
            از 0 و 1 کردن پایه های میکروبگیر تا راه اندازی پریفرال های میکرو ها و.. - الان که دارم با اتمل استودیو کار میکنم - میبینم که شرکت میکروچیپ برا داستان Atmel START ( یه چی مث کدویزارد کدویژن - یکمممم بهتر ) تو پروژه هایی از این نوع، فایل PORT اش به صورت زیره - برا set کردن پایه های پورت A هم تابع نوشته - خوبی این مدل کدنویسی اینه که با تغییر IDE مشکلات کمتر و سریعتر میتونید کد رو تبدیل کنید - و یا حتی طوری کد بزنید که IDE رو تشخیص بده و طبق MACRO هایی که تعریف کردید از توابع و نام رجیسترهای مناسب با اون IDE استفاده کنه.
            کد:
            static inline void PORTA_set_pin_dir(const uint8_t pin, const enum port_dir dir)
            static inline void PORTA_set_port_level(const uint8_t mask, const bool level)
            بررا بحث اون چیزی هم که گفتید - خب یه تایمر انتخاب کردم - یه کتابخونه براش نوشتم که تو موقع ایجاد شیء ازش یا موقع INIT کردنش - تعیین میکنی که از چه تایمری میخوای استفاده کنی و فلان - یه سری تابع هم تعریف میکنی برا BTN های مختلف - از تابع تایمر در توابع فوق استفاده میکنی - به تعداد BTN ها شما تابع داری.
            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

            اگه دوس دارید سریع به جواب برسید :
            1) قبل از پرسیدن سوال، بسرچید.
            2) سوالاتون رو با جزئیات کامل مطرح کنید.

            دیدگاه


              #7
              پاسخ : چطور کد میزنید؟

              سلام خسته نباشید من یه کد ساده میخام جهت رو.شن کردن یه بازر با زبان Cدر کامپایلرkeil فقط اگه اون دوخط کد رو بهم بگین ممنون میشم جون هیج جا پیداش نمیکنم

              دیدگاه

              لطفا صبر کنید...
              X