آموزش c

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

چگونه با مدل‌های زبانی صحبت کنیم؟ معرفی Prompt Engineering

حرفه Prompt Engineering یکی از مهارت‌های کلیدی برای بهره‌برداری از قدرت مدل‌های زبانی Generative یا ژنراتیو است. این مدل‌ها با استفاده از شبکه‌های عصبی عمیق و روش‌های یادگیری ماشینی قادر هستند به صورت خودکار متن‌های متنوع و معنادار تولید کنند. اما چطور می‌شه با این مدل‌ها ارتباط برقرار کرد و ازشون خروجی‌های مورد نظرمون رو گرفت؟ جواب این سوال در Prompt Engineering نهفته است. 

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

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

انواع Prompt

مفهوم Prompt یک سوال یا یک درخواست است که به یک مدل زبانی ژنراتیو داده می‌شود تا از آن یک خروجی متنی یا تصویری بسازد. انواع مختلفی از Prompt وجود دارند که بسته به نوع و هدف مدل و خروجی مورد نظر می‌توان از آن‌ها استفاده کرد. در این بخش به معرفی چهار نوع اصلی از Prompt می‌پردازیم:

  1. Direct Prompting: این نوع از Prompt ساده‌ترین و مستقیم‌ترین روش برای ارتباط با مدل‌های زبانی است. در این روش، فقط یک سوال یا یک جمله به مدل داده می‌شود و مدل سعی می‌کند به آن پاسخ دهد یا آن را تکمیل کند. مثلا می‌توان از مدل خواست که یک جمله را با یک کلمه تمام کند یا یک تعریف را بیان کند. مثال:

    تکمیل جمله: ایران یک کشور در قاره ... است.

    تعریف: Prompt Engineering چیست؟

  2. Prompting with Examples: این نوع از Prompt شبیه به آموزش مدل با مثال است. در این روش، چند مثال از ورودی و خروجی مورد نظر به مدل داده می‌شود و سپس یک ورودی جدید به مدل داده می‌شود تا خروجی متناسب با آن را تولید کند. این روش می‌تواند برای انجام کارهایی مثل ترجمه، خلاصه‌سازی، تبدیل سبک، و غیره مفید باشد. مثال:
    ترجمه:
    انگلیسی: Hello, how are you؟
    فارسی: سلام، حال شما چطور است؟
    انگلیسی: I am fine, thank you.
    فارسی: من خوبم، ممنون.
    انگلیسی: What is your name؟

  3. Chain-of-Thought Prompting: این نوع از Prompt برای تولید متن‌های طولانی و پیوسته مثل داستان، مقاله، شعر، و غیره مناسب است. در این روش، به مدل یک موضوع یا یک شروع داده می‌شود و مدل باید متن را با ادامه‌دادن افکار و ایده‌های مرتبط با آن تولید کند. مثال:

    داستان: شروع داستان: یک روز صبح، مهدی با صدای زنگ گوشیش بیدار شد. وقتی گوشی را برداشت، صدایی که شنید، او را شوکه کرد. صدای ...

    مقاله: موضوع مقاله: اثرات مثبت Prompt Engineering بر روی یادگیری ماشینی. مقاله باید شامل مقدمه، بدنه، و نتیجه‌گیری باشد. مقدمه: در سال‌های اخیر، مدل‌های زبانی ژنراتیو با استفاده از شبکه‌های عصبی عمیق و روش‌های یادگیری ماشینی قدرتمند شده‌اند و می‌توانند متن‌های متنوع و معنادار تولید کنند. اما چطور می‌توان از این مدل‌ها به بهترین نحو استفاده کرد و خروجی‌های مورد نظر را از آن‌ها گرفت؟ در این مقاله قصد داریم نشان بدهیم که Prompt Engineering یکی از راه‌های موثر برای ارتباط با مدل‌های زبانی است و چگونه می‌توان با استفاده از آن یادگیری ماشینی را بهبود بخشید. ...

  4. Role Prompting: این نوع از Prompt برای ایجاد محاوره و گفتگو با مدل مناسب است. در این روش، به مدل یک نقش یا یک شخصیت داده می‌شود و مدل باید با توجه به آن نقش یا شخصیت به سوالات و پیام‌های کاربر پاسخ دهد. مثال:

    نقش: یک مشاور تحصیلی

    کاربر: سلام، من می‌خوام برای ادامه‌ی تحصیل به خارج از کشور برم. چه کشورها و دانشگاه‌هایی رو پیشنهاد می‌کنید؟

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

شیوه ها و راهبردهای مناسب Prompt Engineering:

Prompt Engineering یک فن هنری است که نیاز به تمرین و تجربه دارد. هرچه بیشتر با مدل‌های زبانی کار کنیم و Prompt های مختلف رو امتحان کنیم، مهارت‌مون در این زمینه بیشتر می‌شه. اما برای نوشتن Prompt های موثر و کارآمد، برخی از نکات و توصیه‌هایی وجود داره که می‌تونه به ما کمک کنه. در این بخش به برخی از این نکات اشاره می‌کنیم:

  1. ساختارمند بودن: یکی از راه‌هایی که می‌تونه به مدل کمک کنه تا Prompt رو بهتر درک کنه و خروجی مناسب‌تری تولید کنه، اینه که Prompt رو به صورت ساختارمند و قابل فهم بنویسیم. مثلا می‌تونیم از علائم نگارشی مثل نقطه، ویرگول، دونقطه، پرانتز، و غیره استفاده کنیم تا جملات و بخش‌های مختلف Prompt رو از هم جدا کنیم. همچنین می‌تونیم از عنوان‌ها، شماره‌گذاری، و لیست‌ها استفاده کنیم تا Prompt رو به بخش‌های کوچک‌تر و مرتب‌تر تقسیم کنیم. این کار باعث می‌شه مدل بتونه Prompt رو بهتر تحلیل کنه و خروجی رو با توجه به ساختار Prompt تنظیم کنه.

  2. محدود بودن: یکی از چالش‌هایی که مدل‌های زبانی با آن روبرو هستند، اینه که ممکنه خروجی‌هایی تولید کنند که با Prompt مطابقت ندارند یا از حدود مورد نظر خارج می‌شوند. برای جلوگیری از این مشکل، می‌تونیم از محدودیت‌هایی استفاده کنیم تا مدل رو راهنمایی کنیم که چه نوع و چه مقدار خروجی باید تولید کنه. مثلا می‌تونیم از عباراتی مثل «با حداکثر ۵۰۰ کلمه» یا «به صورت شعر» یا «با استفاده از فقط حروف الفبای فارسی» استفاده کنیم تا مدل رو محدود کنیم. مثال:

    Prompt با محدودیت: تولید یک داستان کوتاه در مورد یک سفر فضایی با حداکثر ۵۰۰ کلمه.

    Prompt بدون محدودیت: تولید یک داستان در مورد یک سفر فضایی.

  3. خلاقانه بودن: یکی از راه‌هایی که می‌تونه به مدل کمک کنه تا Prompt رو بهتر فهمیده و خروجی جذاب‌تری تولید کنه، اینه که Prompt رو به صورت خلاقانه و جالب بنویسیم. مثلا می‌تونیم از سوالات باز، مقایسه‌ها، تصاویر، مثال‌ها، و غیره استفاده کنیم تا مدل رو به چالش بکشیم و ازش خروجی‌هایی بگیریم که از حد انتظارمون بیشتر باشه. مثال:

    Prompt خلاقانه: تولید یک شعر در مورد این تصویر (بارگذاری تصویر برای مدل زبانی)

    Prompt عادی: تولید یک شعر در مورد غروب خورشید.

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

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

برای درک مفاهیم بیشتر و یادگیری عمیق به دوره آموزشی سی شارپ  که دارای سرفصل های اصلی دوره مقدماتی سی شارپ و  دوره پیشرفته سی شارپ را  که در قالب یک مجموعه جامع ارائه شده اند مراجعه کنید. در کنار این دوره می توانید برای تقویت دانش بانک اطلاعاتی ، به دوره آموزش SQL Server  نیز مراجعه کنید.

۰ ۰

مقایسه Thread ها و Asyncیا Await در زبان سی شارپ

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

برای پیاده‌سازی برنامه‌نویسی غیرهمزمان در زبان C#، دو روش اصلی وجود دارد: استفاده از Thread ها و استفاده از کلمات کلیدی Async و Await. بو صورت ساده، Thread ها واحدهای کوچک از کد هستند که می‌توانند به صورت موازی و مستقل از هم اجرا شوند. در مقابل، Async و Await کلمات کلیدی هستند که به برنامه‌نویس امکان می‌دهند که به راحتی برنامه‌نویسی غیرهمزمان را با استفاده از Task ها پیاده‌سازی کند. Task ها شبیه به Thread ها هستند اما با این تفاوت که مدیریت و هماهنگی آن‌ها توسط کتابخانه‌های زبان C# انجام می‌شود.

در این مقاله قصد داریم تفاوت این دو روش را بررسی کنیم و نشان دهیم که در چه مواردی از هر یک از آن‌ها استفاده کنیم. برای این منظور ابتدا تعریف و ویژگی‌های Thread ها و Async و Await را شرح می‌دهیم و سپس نقاط تمایز اصلی بین آن‌ها را مورد بحث قرار می‌دهیم. در نهایت نتیجه‌گیری و توصیه‌هایی برای انتخاب روش مناسب برای برنامه‌نویسی غیرهمزمان ارائه می‌کنیم.

آشنایی با تردها

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

برای استفاده از Thread ها در زبان C#، می‌توانیم از کلاس‌ها و روش‌های موجود در فضای نام System.Threading استفاده کنیم. این فضای نام شامل کلاس Thread است که نماینده یک Thread در برنامه است. برای ایجاد یک Thread جدید، می‌توانیم یک شیء از کلاس Thread با پاس دادن یک شیء از نوع Delegate به سازنده آن ایجاد کنیم. Delegate یک شیء است که به یک متد اشاره می‌کند و مشخص می‌کند که Thread باید چه متدی را اجرا کند. برای شروع اجرای Thread، می‌توانیم از متد Start شیء Thread استفاده کنیم. برای متوقف کردن اجرای Thread، می‌توانیم از متد Abort شیء Thread استفاده کنیم. همچنین جهت انتظار برای پایان یافتن یک Thread، می‌توانیم از متد Join شیء Thread استفاده کنیم. برای مثال، کد زیر یک Thread جدید ایجاد می‌کند که متد PrintNumbers را اجرا می‌کند:

using System;
using System.Threading;

class Program
{
    static void Main(string[] args)
    {
        Thread t = new Thread(new ThreadStart(PrintNumbers));
        t.Start();
        t.Join();
        Console.WriteLine("End of application.");
    }
    
    static void PrintNumbers()
    {
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine(i);
        }
    }
}

خروجی این برنامه به شکل زیر است:

1
2
3
4
5
6
7
8
9
10
End of application!

استفاده از Thread ها مزایایی مانند افزایش کارایی و بهبود تجربه کاربر را دارد. اما همچنین چالش‌هایی مانند مدیریت و هماهنگی Thread ها، رفع خطاها و ایجاد امنیت را نیز به همراه دارد. برای حل این چالش‌ها، می‌توانیم از ابزارهایی مانند Lock، Monitor، Mutex، Semaphore، AutoResetEvent و ManualResetEvent استفاده کنیم. این ابزارها به ما کمک می‌کنند که دسترسی به منابع مشترک بین Thread ها را کنترل کنیم و از بروز تداخل و ناهماهنگی جلوگیری کنیم. در بخش بعدی، می‌توانید با کلمات کلیدی Async و Await و نحوه استفاده از آن‌ها برای برنامه‌نویسی غیرهمزمان آشنا شوید.

آشنایی با Async و Await

Async و Await کلمات کلیدی هستند که در زبان C# از نسخه 5 به بعد اضافه شده‌اند. این کلمات کلیدی به برنامه‌نویس امکان می‌دهند که به راحتی برنامه‌نویسی غیرهمزمان را با استفاده از Task ها پیاده‌سازی کند. Task ها شبیه به Thread ها هستند اما با این تفاوت که مدیریت و هماهنگی آن‌ها توسط کتابخانه‌های زبان C# انجام می‌شود. Task ها به ما امکان می‌دهند که یک عملیات غیرهمزمان را به صورت یک شیء مدیریت کنیم و بتوانیم به آن ارجاع دهیم، از وضعیت آن باخبر شویم و از آن نتیجه بگیریم.

برای استفاده از Async و Await در زبان C#، می‌توانیم از کلاس‌ها و روش‌های موجود در فضای نام System.Threading.Tasks استفاده کنیم. این فضای نام شامل کلاس Task است که نماینده یک Task در برنامه است. برای ایجاد یک Task جدید، می‌توانیم از متد Run شیء Task استفاده کنیم. این متد یک شیء از نوع Delegate می‌گیرد و یک شیء از نوع Task برمی‌گرداند. برای اجرای یک Task، می‌توانیم از کلمه کلیدی Async در تعریف یک متد استفاده کنیم. این کلمه کلیدی به ما امکان می‌دهد که یک متد را به صورت غیرهمزمان تعریف کنیم و از کلمه کلیدی Await در بدنه آن استفاده کنیم. کلمه کلیدی Await به ما امکان می‌دهد که برای یک Task منتظر بمانیم و نتیجه آن را دریافت کنیم. برای مثال، کد زیر یک Task جدید ایجاد می‌کند که متد PrintNumbersAsync را اجرا می‌کند:

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // ایجاد یک Task جدید با استفاده از متد Run
        Task t = Task.Run(PrintNumbersAsync);     
        await t;       
        Console.WriteLine("End of application!");
    }
    
    static async Task PrintNumbersAsync()
    {
        for (int i = 1; i <= 10; i++)
        {
            Console.WriteLine(i);
            
            // انتظار برای یک ثانیه
            await Task.Delay(1000);
        }
    }
}

خروجی این برنامه به شکل زیر است:

1
2
3
4
5
6
7
8
9
10
End of application!

استفاده از Async و Await مزایایی مانند ساده‌سازی برنامه‌نویسی غیرهمزمان، افزایش خوانایی و نگهداری کد و بهبود عملکرد برنامه را دارد. اما همچنین مواردی وجود دارد که استفاده از Async و Await کافی نیست و نیاز به استفاده از Thread ها داریم. برای مثال، اگر برنامه‌ای داریم که باید یک عملیات سنگین و محاسباتی را انجام دهد که زمان زیادی طول می‌کشد و منابع سیستم را به شدت مصرف می‌کند، می‌توانیم از یک Thread جدید برای انجام این عملیات استفاده کنیم تا از بلوک شدن Thread اصلی برنامه جلوگیری کنیم. در بخش بعدی، می‌توانید با تفاوت اصلی بین Thread ها و Async و Await آشنا شوید.

تفاوت Thread و Async/Await

Thread ها و Async/Await دو روش مختلف برای پیاده‌سازی برنامه‌نویسی غیرهمزمان در زبان C# هستند. این دو روش در برخی جنبه‌ها شباهت و در برخی جنبه‌ها تفاوت دارند. در این بخش قصد داریم نقاط تمایز اصلی بین این دو روش را مورد بحث قرار دهیم. برای این منظور از جدول زیر برای مقایسه این دو روش استفاده می‌کنیم:

 

  Async/Await Thread
نحوه ایجاد با استفاده از کلاس Thread و پاس دادن یک Delegate به سازنده آن با استفاده از کلمه کلیدی Async در تعریف یک متد و استفاده از متد Run شیء Task
نحوه اجرا با استفاده از متد Start شیء Thread با استفاده از کلمه کلیدی Await در بدنه یک متد غیرهمزمان
نحوه متوقف کردن با استفاده از متد Abort شیء Thread با استفاده از متد Cancel شیء CancellationTokenSource
نحوه انتظار | با استفاده از متد Join شیء Thread با استفاده از متد Join شیء Thread با استفاده از کلمه کلیدی Await در بدنه یک متد غیرهمزمان
نحوه دریافت نتیجه با استفاده از خصوصیت Result شیء Thread با استفاده از خصوصیت Result شیء Task
مزایا امکان اجرای عملیات سنگین و محاسباتی که زمان زیادی طول می‌کشند و منابع سیستم را به شدت مصرف می‌کنند امکان اجرای عملیات سبک و وابسته به منابع خارجی مانند فایل، شبکه، دیتابیس و غیره که زمان زیادی طول می‌کشند اما منابع سیستم را به شدت مصرف نمی‌کنند
معایب امکان بروز تداخل و ناهماهنگی بین Thread ها و نیاز به استفاده از ابزارهای هماهنگ‌سازی امکان بلوک شدن Thread اصلی برنامه اگر عملیات سنگین و محاسباتی را به صورت غیرهمزمان اجرا کنیم

 

از جدول بالا می‌توانیم ببینیم که Thread ها و Async/Await در برخی جنبه‌ها مانند نحوه ایجاد، اجرا، متوقف کردن، انتظار و دریافت نتیجه تفاوت دارند. این تفاوت‌ها باعث می‌شوند که در چه مواردی از هر یک از این روش‌ها استفاده کنیم. به طور کلی، می‌توان گفت که اگر برنامه‌ای داریم که باید یک عملیات سنگین و محاسباتی را انجام دهد که زمان زیادی طول می‌کشد و منابع سیستم را به شدت مصرف می‌کند، می‌توانیم از یک Thread جدید برای انجام این عملیات استفاده کنیم تا از بلوک شدن Thread اصلی برنامه جلوگیری کنیم. اما اگر برنامه‌ای داریم که باید یک عملیات سبک و وابسته به منابع خارجی مانند فایل، شبکه، دیتابیس و غیره را انجام دهد که زمان زیادی طول می‌کشد اما منابع سیستم را به شدت مصرف نمی‌کند، می‌توانیم از کلمات کلیدی Async و Await برای انجام این عملیات استفاده کنیم تا از ساده‌سازی برنامه‌نویسی غیرهمزمان بهره ببریم.

در نتیجه، می‌توان گفت که Thread ها و Async/Await دو روش مختلف برای پیاده‌سازی برنامه‌نویسی غیرهمزمان در زبان C# هستند که در برخی جنبه‌ها شباهت و در برخی جنبه‌ها تفاوت دارند. این تفاوت‌ها باعث می‌شوند که در چه مواردی از هر یک از این روش‌ها استفاده کنیم. در بخش بعدی، می‌توانید با نتیجه‌گیری و توصیه‌هایی برای انتخاب روش مناسب برای برنامه‌نویسی غیرهمزمان آشنا شوید.

نتیجه‌گیری

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

۰ ۰

آشنایی با قابلیت های جدید زبان سی شارپ در نسخه 12

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

سرفصل

  1. سازنده های اولیه یا Primary Constructors
  2. عبارات مجموعه ها یا Collection Expressions
  3. پارامترهای ref readonly
  4. parameter default value در lambda expression ها
  5. تعریف alias
  6. تعریف inline arrays
  7. ExperimentalAttribute

 

سازنده های اولیه یا Primary Constructors

در ابندا این قابلیت تنها در رکورد ها قابل استفاده بود و در سی شارپ 12 این قابلیت به class ها و struct ها نیز اضافه شده است. بوسیله این قابلیت می توان پارامترهای سازنده را در مقابل نام کلاس تعریف کرده و از آن در کل بخش های کلاس استفاده کرد. در ادامه نحوه تعریف سازنده های اولیه را مشاهده می کنید:

 

var p = new Person("Hossein", "Ahmadi");

public class Person(string firstname, string lastname)
{
    public string Firstname { get; set; } = firstname;
    public string Lastname { get; set; } = lastname;
}

عبارات مجموعه ها یا Collection Expressions

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

int[] numbers = [1,2,3,4];

Listnames = ["Hossein","Mehdi", "Mohammad","Ali"];

برای تعریف آرایه های jagged به صورت زیر می توان از این قابلیت استفاده کرد:


int[][] jagged1 = [[1, 2, 3], [4, 5, 6]];


int[] row0 = [1,2,3,4,5];
int[] row1 = [6,7,8,9,0];

int[][] jagged2 = [row0, row1];

یکی از ویژگی های جالب Collection Expressions استفاده از Spread Operator است، این قابلیت به شما این اجازه را می دهد تا مقادیر یک آرایه را داخل یک آرایه دیگر درج کنید، یعنی هر مقدار به صورت جداگانه در یک خانه قرار میگیرد:

int[] row0 = [1,2,3,4,5];
int[] row1 = [6,7,8,9,0];

int[] merged = [..row0, ..row1];

پارامترهای ref readonly

بوسیله این قابلیت پارامترهای یک متد با کلمه کلیدی ref readonly می توانند تعریف شوند:

void SampleMethod(ref readonly int param)
{
    // do something
}

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

یک سری نکات برای ارسال مقدار به متدهایی که پارامترهای ref readonly دارن باید رعایت بشه:

  1. مقدار ارسالی حتماً باید به صورت متغیر باشه در غیر اینصورت کامپایلر اخطار نمایش میده
  2. برای ارسال پارامتر حتماً از کلمات کلیدی ref یا in باید استفاده بشه، در غیر اینصورت کامپایلر اخطار نمایش میده

در ادامه نمونه کدهایی برای فراخوانی متد تعریف شده در بالا مشاهده می کنید:

int num = 12;
SampleMethod(12); // compiler will generate warning
SampleMethod(ref num); // OK
SampleMethod(num);  // compiler will generate warning
SampleMethod(in num); // OK

parameter default value در lambda expression ها

بوسیله این قابلیت امکان مشخص کردن مقدار پیش برای پارامترهای عبارت های lambda وجود خواهد داشت. به عنوان مثال:

var divideExp = (int num1, int num2 = 2) =>num1 / num2;

var r1 = divideExp(12);
var r2 = divideExp(12, 3);

همانطور که مشاهده می کنید برای پارامتر num2 مقدار پیش فرض 2 مشخص شده و در زمان فراخوانی، می توان رای num2 مقداری مشخص نکرد.

تعریف alias

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

using MyType = (int x, int y);

var mt = new MyType(1,2);

تعریف inline arrays

بوسیله این قابلیت امکان تعریف یک آرایه با طول ثابت بوسیله تعریف struct ها وجود دارد. افزودن این قابلیت برای افزایش Performance برنامه بوده و به گفته خود مایکروسافت کاربرد این قابلیت برای تیم توسعه دهنده دات نت و همچنین برنامه نویس هایی است که کتابخانه هایی را برای استفاده سایر برنامه نویس ها توسعه می دهند. برای تعریف inline arrays از attribute ای با نام InlineArray استفاده می شود که فضای نام System.Runtime.CompilerServices قرار دارد. نحوه استفاده از این قابلیت به صورت زیر است:

[System.Runtime.CompilerServices.InlineArray(12)]
struct Names
{
    private int _element0;
}

var names = new Names();

names[0] = 12;
Console.WriteLine(names[0]);

زمان استفاده از این قابلیت توجه داشته باشید که استفاده از attribute ذکر شده تنها بر روی struct ها مجاز بوده و همچنین داخل نوع داده تعریف شده، حتماً باید یک فیلد تعریف شود.

ExperimentalAttribute

با قرار دادن این Attribute بر روی یک class یا struct یا method، زمان استفاده از آن یک اخطار نمایش داده می شود که این نوع داده یا متد تعریف شده آزمایشی می باشد. تنها در صورتی امکان استفاده از آن وجود خواهد داشت که داخل کد اخطار غیر فعال شد. نمونه کد زیر نحوه استفاده از این قابلیت را نمایش می دهد:

 

#pragma warning disable C_MyClass_M_DoSomething // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.
c.DoSomething();
#pragma warning restore C_MyClass_M_DoSomething // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed.


class MyClass
{
    [Experimental("C_MyClass_M_DoSomething")]
    public void DoSomething()
    {

    }
}
۰ ۰

معرفی 4 مفهوم اصلی در امنیت برنامه نویسی جاوا

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

برای یادگیری رایگان زبان جاوا و آموزش جاوا به زبان ساده به این لینک مراجعه کنید.

Subject در امنیت جاوا

در امنیت جاوا subject منبع درخواست است. Subject کلاسی است که اطلاعات در مورد منابع را در خود نگهداری می کند و می تواند تغییراتی در آنها ایجاد کند. Subject می تواند یک کاربر یا برنامه یا پروسس یا یک فایل یا یک کامپیوتر یا یک پایگاه داده باشد. برای مثال اگر کاربری بخواهد وارد سیستم شود و به یک سری منابع دسترسی داشته باشد پس کاربر یک subject است.

Principal در امنیت جاوا

بعد از این که کاربر با موفقیت وارد سیستم شد و احراز هویت انجام شد ما یک subject خواهیم داشت که به بخش های مختلفی مانند رول(نقش)ها و SSN(social security number) ها مرتبط است. به هرکدام از این بخش های این شکلی یک Principal گفته می شود که همه آنها در داخل Subject قرار می گیرند.

کاربر (User) در امنیت جاوا

شخصی است که به یک سری منابع دسترسی دارد و فعالیت هایی انجام می دهد و وظایفی بر عهده دارد. در برخی جاها می توان user را به عنوان یک principal در نظر گرفت که جاوا برای آن از کلاس UserPrincipal استفاه می کند.

تفاوت بین Subject , Principal, User

همانطورکه در بخش قبلی گفتیم می توانیم برخی از جنبه های کاربر را به شکل یک Principal نمایش دهیم. حال این principal ها زیر مجموعه subject ها هستند و کاربران زیرمجموعه principal های می باشند که به کاربرها اشاره می کنند.

 

 

۰ ۰

7 سوال متداول در شروع برنامه نویسی که باید از خودتان بپرسید

۰ ۰

برنامه نویسی را از کجا شروع کنیم؟ مسیر یادگیری برنامه نویسی

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

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

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

علاقه و صبر

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

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


برنامه نویسی شب و روز نداره، اکثر برنامه نویس ها شب زنده دار هستن (به قول معروف که من مرد تنهایی شبم :دی). موقعیت هایی پیش میاد که شاید تو 48 ساعت بیشتر از 5 ساعت نتونید بخوابید. پس یادتون باشه، مهمترین موضوع اینه که به برنامه نویسی علاقه مند باشید و این علاقه هست که توی کار به شما صبر میده و کمک میکنه تا بتونید با بی خوابی ها و مشکلات یک برنامه نویس کنار بیایید.

تعیین مسیر

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



کد نویسی Back-End (نوشتن کدهای مربوط به یک برنامه که توسط کاربر نهایی قابل دیدن نیست)، صبر و حوصله میخواد، برعکس کار طراحی واسط کاربری و طراحی وب که بیشتر خلاقیت و هنر در اون حرف اول رو میزنه. برای مثال، افرادی که علاقه زیادی به حل مسائل پیچیده دارند تو زمینه برنامه نویسی Back-End و البته برنامه نویسی سیستمی میتونن موفق باشند، همچنین این دسته از افراد تو زمینه نوشتن Framework های نرم افزاری موفق خواهند بود.

 

 

مطالعه دائم

شک نکنید که باید مطالعه داشته باشید. دنیای برنامه نویسی دائماً در حال تغییر است و سالانه تکنولوژی ها و نسخه های جدید از زبان های برنامه نویسی به بازار عرضه می شوند. برای مثال، برای زبان برنامه نویسی سی شارپ تا این لحظه 6 نسخه عرضه شده و هر نسخه شامل قابلیت های جدید است. باید زمانی رو برای مطالعه کتاب ها اختصاص بدید و این زمان همیشگی است. مطالعه دائمی شرط موفقیت شما است.

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

شخصی که مطالعه نمی کند مثل آب داخل یک برکه است که جریان ندارد. سعی کنید تا حد امکان از منابع به زبان انگلیسی استفاده کنید. (البته ITPRO رو از این مورد فاکتور بگیرید :دی) خیلی افراد با مطالعه کتاب ها با زبان انگلیسی مشکل دارند، اما در صورت اتمام یک کتاب، مطالعه کتاب های بعدی برای شما خیلی راحت می شود. اکثر منابعی که به زبان فارسی وجود دارند به دلیل وجود اشتباه در ترجمه یا حتی زیاده روی در ترجمه تنها باعث سردرگمی شما می شوند.

انتخاب زبان درست

خیلی از افراد در انتخاب زبان برنامه نویسی دچار مشکل می شوند. اینکه چه زبانی را انتخاب کنید که مبتنی بر علایق شما باشد بسیار مهم است. همانطور که گفتیم شاخه برنامه نویسی به زیر شاخه های بسیاری تقسیم می شود، مانند Desktop Application و Web Application یا برنامه های موبایل و همچنین برنامه های تحت وب. هر یک از این شاخه ها نیازمند یادگیری یک یا چند زبان برنامه نویسی هستند.

  1. برنامه نویسی موبایلبرنامه های موبایل مبتنی بر چندین پلاتفرم مختلف نوشته می شوند. برای مثال برای Android شما می بایست حتماً زبان برنامه نویسی جاوا را یاد بگیرید. نوشتن برنامه های Android شدیداً وابسته به زبان جاوا هستند. البته فرم ورک های دیگری نیز وجود دارند مانند Ionic یا Apache Cordova و همینطور Xamarin که بوسیله آن ها می توانید برنامه هایی برای Android بنویسید.اما برنامه های Android به صورت مستقیم با زبان جاوا نوشته می شوند که اصطلاحاً به آن ها برنامه های Native می گویند. برای برنامه های IOS، شما باید با Swift که رابطه مستقیمی با زبان Objective-C دارد آشنا باشد. یا برای برنامه های Windows Phone امکان نوشتن برنامه ها با زبان سی شارپ یا HTML و CSS و JavaScript وجود دارد.
  2. برنامه نویسی وب : اگر قصد دارید کار برنامه نویسی وب انجام دهید ابتدا باید مشخص کنید که از چه تکنولوژی می خواهید استفاده کنید. معروف ترین ها در حوزه برنامه نویسی وب PHP و ASP.NET هستند، البته تکنولوژی های دیگری مانند JSP نیز وجود دارند، اما به انداه PHP و ASP.NET بازار کار ندارند. خیلی ها سر اینکه PHP بهتر است یا ASP.NET دائماً در حال بحث کردن هستند. اما این نکته رو بگم که شما چه ASP.NET و چه PHP رو به صورت حرفه ای یاد بگیرید، می توانید هر سایتی را طراحی کنید. در حال حاضر سایت های بزرگی وجود دارند که با PHP نوشته شدند، برای مثال Facebook کاملاً مبتنی بر PHP و MySQL می باشد یا سایت هایی مانند ITPRO و StackOverflow با ASP.NET نوشته شده اند. به نظر شخص خود من، مزیتی که یادگیری ASP.NET نسبت به PHP دارد این است که دست شما برای نوشتن برنامه های دیگر مانند Desktop Application باز خواهد بود، زیرا با یادگیری ASP.NET می بایست زبان سی شارپ را نیز فرا بگیرید. هم PHP و ASP.NET ریشه در زبان سی دارند.در کنار PHP و ASP.NET نیز باید با HTML و CSS و JavaScript نیز آشنایی داشته باشید. همچنین شما باید با بانک های اطلاعاتی نیز آشنا شوید، معمولاً برنامه نویسان PHP از بانک MySQL و برنامه نویسان ASP.NET از بانک SQL Server استفاده می کنند. البته شما در ASP.NET می توانید از بانک MySQL استفاده کنید و بالعکس.تکنولوژی جدید دیگری نیز که معرفی شده NodeJS می باشد که کاملاً مبتنی بر JavaScript است و خیلی از برنامه نویسان، NodeJS را انتخاب خود برای برنامه نویسی وب قرار می دهند و بسیار هم محبوب است.

 


 

 

 

۰ ۰

آموزش برنامه نویسی به زبان ساده | گام به گام و کاربردی

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

مفاهیم اولیه برنامه نویسی

برنامه نویسی دنیای زیباییه و وقتی زیبا تر میشه که آموزش برنامه نویسی رو شروع کنی! وقتی واردش بشی دیگه نمیتونی ازش دل بکنی. این جمله رو با تمام وجودم میگم و بهش اعتقاد دارم. با اینکه سال هاست کار برنامه نویسی انجام میدم و مدت زیادی رو درگیر آموزش برنامه نویسی بودم، اما هنوز هم برام تازگی داره. خیلی از افراد رو میبینم که تصمیم دارن کار برنامه نویسی رو شروع کنن، اما نمیدونن از کجا باید این کار و انجام بدن و یک جورایی سردرگم هستن و یا اصلاً نمیدونن که از کجا باید منابع آموزش برنامه نویسی رو انتخاب کنن!

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

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

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

برنامه کامپیوتری چیست؟

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

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

برنامه نویس کیست؟

همانطور که گفتیم، برنامه های کامپیوتری مجموعه ای از دستور العمل ها هستند که توسط کامپیوتر اجرا می شوند. اما این دستورالعمل ها چگونه ایجاد می شوند؟ جواب سوال ساده است، برنامه نویس شخصی است که دستورالعمل های یک برنامه کامپیوتری را می نویسد. برنامه نویس بر اساس نیازهایی که شناسایی می شود اقدام به نوشتن برنامه می کند. این نیازها بر اساس درخواست های مشتری یا شرکتی که برنامه نویس برای آن کار می کند مشخص می شود. معمولاً برنامه نویسان با واژه هایی مانند Programmer یا Developer و یا Coder خطاب می شوند.

زبان برنامه نویسی چیست؟

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

مثالی بزنیم، فرض کنید میدان ونک هستید و از شخصی برای رفتن به نمایشگاه بین المللی آدرس می پرسید، شخصی که آدرس از او پرسیده می شود، یکسری دستورالعمل به شما می دهد که با انجام آن دستور العمل ها به مقصد خود می رسید، این دستور العمل ها بر اساس اشخاص مختلف تفاوت دارد، برای مثال، شخصی به شما اینگونه آدرس می دهد:

  1. وارد اتوبان کردستان شمال می شوی
  2. میری بزرگاه نیایش غرب
  3. وارد بزرگاه سئول می شوی
  4. چند کیلومتر جلوتر تابلوی ورودی نمایشگاه بین المللی رو دیدی می تونی بری تو پارکینگ

اما شخص دیگری به شما اینگونه آدرس می دهد:

  1. وارد اتوبان کردستان جنوب می شوی
  2. بعد از آن وارد اتوبان حکیم غرب می شوی
  3. بعد از آن وارد اتوبان چمران شمال می شوی
  4. از آن جا وارد اتوبان سئول می شوی که نمایشگاه بین المللی آنجاست

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

ممکن است یک برنامه نویس دستورالعمل های اشتباهی برای برنامه بنویسد که باعث ایجاد خروجی اشتباه برای برنامه کامپیوتری می شود، مشابه اینکه شخص مورد نظر آدرس اشتباه به شما دهد و با انجام دستورالعمل های آن شخص، به جای نمایشگاه بین المللی سر از میدان تجریش در آورید!

برنامه کامپیوتر چگونه اجرا می شود؟

بعد از نوشتن برنامه، یک فایل اجرایی تولید می شود که دیگران می توانند با اجرای آن، از برنامه استفاده کنند. کامپیوتر شما برنامه ها را بوسیله واحد پردازشگر مرکزی (Central Processing Unit) که همان CPU خودمان است اجرا می کند. کامپیوتر تنها زبان ماشین را متوجه می شود.

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

 

 

 

 

۰ ۰

سی شارپ چیست؟ معرفی کامل C# به همراه مزایا ، معایب و کاربردها

سی شارپ چیست؟ زبان C# چه کاربردهایی دارد؟ آیا زبان سی شارپ برای شروع برنامه نویسی مناسب است؟ چه نوع برنامه هایی می توان با زبان سی شارپ نوشت؟ و سوالاتی از این دست در ذهن تمام افرادی که قصد شروع برنامه نویسی را دارند شکل میگیرد. در این مطلب میخواهیم به معرفی زبان سی شارپ بپردازیم و ببینیم که این زبان محبوب و قدرتمند چه قابلیت هایی در اختیار ما قرار میدهد و آیا می توان از این زبان به عنوان نقطه شروعی برای ورود به دنیای برنامه نویسی استفاده کرد؟جامع ترین آموزش برنامه نویسی سی شارپ کدام است ؟ پس با من تا انتهای این مطلب همراه باشید.

سی شارپ چیست

برنامه کامپیوتری چیست؟

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

سی شارپ چیست

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

برنامه نویس و برنامه نویسی چیست؟

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

سی شارپ چیست

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

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

زبان سی شارپ چیست؟

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

برنامه هایی مانند برنامه های موبایل، برنامه های تحت وب، ویندوز و ... زبان سی شارپ ریشه در زبان سی دارد. زبان سی بوسیله دنیس ریچی در سال 1970 معرفی شد و تحولی در دنیای برنامه نویسی ایجاد کرد. امروزه بیشتر زبان های محبوب مانند سی شارپ، جاوا و جاوا اسکریپت ریشه در زبان سی دارند. یعنی دستوراتی که در این زبان ها استفاده می شود شباهت زیادی به زبان سی دارد.برای مطالعه ادامه این مقاله به منبع مراجعه کنید.

۰ ۰