خوش آمدید به رمان ۹۸ | بهترین انجمن رمان نویسی

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

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی غیرساخت‌یافته

برنامه‌نویسی غیر ساخت یافته قدیمی‌ترین پارادایم برنامه‌نویسی است که قادر به نوشتن الگوریتم برنامهٔ تورینگ کامل است. این برنامه‌نویسی بعداً با برنامه نویسی تابعی و سپس برنامه نویسی شی گرا ادامه یافت و هر دو این برنامه‌ها به عنوان برنامه نویسی ساخت یافته در نظر گرفته شدند. برنامه‌نویسی غیر ساخت یافته به خاطر تولید کدهایی که به سختی قابل خواندن بودند (اسپاگتی کد) به شدت مورد نکوهش قرار گرفت و گاهی اوقات یک روش بد برای نوشتن پروژه‌های بزرگ در نظر گرفته شد. اما این نوع برنامه‌نویسی برای آزادی‌ای که به برنامه‌نویسان می‌دهد تحسین شده‌است و با این مقایسه شده‌است که موزارت چگونه موسیقی [۱] را نوشته است. هر دو زبانهای برنامه نویسی سطح بالا و سطح پایین وجود دارند که به عنوان زبانهای برنامه نویسی غیر ساخت یافته‌استفاده می‌شوند.


ویژگی‌ها ومفاهیم معمولی
مفاهیم اساسی
یک برنامه در یک زبان غیر ساخت یافته معمولاً شامل دستورهای متوالی منظم است یا جمله‌ها معمولاً هر کدام در یک خط نوشته شده‌اند.خط‌ها معمولاً شماره‌گذاری شده‌اند یا ممکن است که بر چسب داشته باشند.این خاصیت اجازه می‌دهد که جریان اجرایی برنامه بتواند به هر خط برنامه بپرد. برنامه‌نویسی غیرساخت یافته مفهوم جریان کنترل اساسی را همانند حلقه‌ها ، انشعابات و پرش‌ها معرفی می‌کند. هرچند که هیچ مفهوم رویه ای در الگوی [نیازمند منبع] غیرساخت یافته وجود ندارد،اجازهٔ استفاده از زیرروالها را داریم.برعکس یک رویه، یک زیرروال ممکن است چندین نقطهٔ ورود و خروج داشته باشد و یک پرش مستقیم به زیرروال یا خارج از زیر روال(از نظر فرض علمی) اجازه داده می‌شود.این انعطاف باعث می‌شود مفهومی که coroutine (دستور العمل اتصال مجموعه‌ای از ورودی‌ها به مجموعه‌ای از خروجی ها) نام داد در اینجا معنی پیدا کند. هیچ مفهومی در مورد متغیرهای محلی در زبان‌های برنامه نویسی غیر ساخت یافته (هر چند برای برنامه‌های اسمبلی رجیسترهای همه منظوره ممکن است همین منظور را پس از ذخیره کردن در ورودی برآورده کنند)، اما برچسب‌ها و متغیرها میتوانند اثر خود را در قسمت محدودی از برنامه بگذارند (برای مثال،تعدادی خط).این معنی را می‌توان دیافت که هیچ تغییر متنی هنگام صدا زدن یک زیرروال رخ نمی‌دهد.پس همه متغیرها ممکن است که مقدار قبلی خود را از فراخوانی قبلی نگه دارند که باعث سخت شدن روش بازگشتی می‌شود.اما در بعضی نمونه‌های بازگشتی (که هیچ حالت زیر روالی پس از فراخوانی توابع بازگشتی احتیاج نمی‌شود) ممکن است.اگر متغیرها به زیر روال بازگشتی اختصاص داده شوند در ورودی زیر روال صریحاً پاک می‌شوند (یا دوباره با مقدار اصلی خود مقدار دهی می‌شوند) . عمق تو در تو بودن ممکن است محدود به یک یا دو بار باشد.

نوع و گونه ی داده
زبانهای غیر ساخت یافته اجازه استفاده از نوع‌های داده‌ای اساسی را مثل شماره ها، رشته‌ها و آرایه‌ها (تعدادی دادهٔ همنوع) می دهند. معرفی آرایه‌ها در زبان‌های غیر ساخت یافته یک مرحلهٔ رو به جلو قابل توجه است.فرایند ساخت جریان داده با وجود فقدان نوع داده‌ای ساختار ممکن است.


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی پودمانی

برنامه‌نویسی پودمانی[۱] یا برنامه‌نویسی پیمانه‌ای (به انگلیسی: Modular programming)، یک روش طراحی نرم‌افزار است برای افزایش وسعت نرم‌افزاری که از قسمت‌های مجزایی به نام پودمان تشکیل شده‌است.

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


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی مبتنی بر کلاس
برنامه‌نویسی مبتنی بر کلاس یا به‌طور معمول جهت‌گیری کلاس، سبک برنامه‌نویسی Object-Oriented) OOP) است که در آن ارث بری از طریق تعریف کلاس از اشیاء، به جای ارث بردن از طریق اشیاء به تنهایی اتفاق می‌افتد (مقایسه با برنامه‌نویسی مبتنی بر نمونه اولیه).

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


کپسوله سازی
کپسوله سازی مانع از شکستن متغیرها از کلاس می‌شود. استفاده از آن مفید است زیرا اجازه می‌دهد که یک کلاس از اشیا را برای جنبه‌هایی که در رابط کاربری در معرض نمایش قرار نمی‌گیرند بدون تأثیر بر روی کد کاربر تغییر دهند. تعاریف کپسوله سازی بر گروه‌بندی و بسته‌بندی اطلاعات مرتبط (انسجام) به جای مسائل امنیتی تمرکز می‌کنند. زبان‌های OOP به‌طور معمول محدودیت‌های امنیتی رسمی را به حالت شیء داخلی ارائه نمی‌دهند. استفاده از یک روش دسترسی به موضوع مورد نظر برای طراحی رابط است.

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

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


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
نقدهای بر مدل‌های مبتنی بر کلاس
زبانهای مبتنی بر کلاس، و یا، دقیق تر، زبانهای تایپ شده، جایی که زیر کلاس‌ها تنها روش زیر تعریف است، برای مخلوط کردن پیاده‌سازی‌ها و رابط‌ها مورد انتقاد قرار گرفته‌است - اصل ضروری در برنامه‌نویسی شی گرا. منتقدان می‌گویند ممکن است یک کلاس کیسه ای ایجاد کند که مجموعه ای از اشیا را ذخیره کند و سپس آن را گسترش دهد تا یک کلاس جدید به نام کلاس مجموعه ای که در آن اشیا کپی شده حذف شود، گسترش دهد.[۱][۲] حال حاضر، یک تابع که یک شی از کلاس را می‌گیرد، ممکن است انتظار داشته باشد که بااضافه کردن دو شی اندازه یک کلاس را دو برابر کند، با این حال اگر یک شی از کلاس مجموعه عبور می‌کند، با اضافه کردن دو شیء ممکن است سایز کلاس دوبرابر شود یا تغییری نکند. دلیل این مشکل این است که زیر کلاس‌ها مستلزم زیر گروه‌ها هستند.

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

زبان‌های نمونه
اگر چه شبیه‌ساز معرفی کلاس انتزاع مثال متعارف از یک کلاس مبتنی بر زبان اسمالتاک. دیگر شامل PHPبا C++های جاوابا C#و هدف-Cاست. اگر چه سیمولا انتزاع کلاس را معرفی کرد، نمونهٔ کانونی زبان مبتنی بر کلاس اسمالتاک است. دیگر موارد شامل PHP, C ++، Java, C # و Objective-C هستند.


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی بر پایه پیش‌نمونه

  • برنامه‌نویسی بر پایه پیش‌نمونه (به انگلیسی: Prototype-based programming) شیوه‌ای از برنامه‌نویسی شئ‌گرا است که کلاس در آن موجود نیست و رفتار استفادهٔ مجدد (که به وراثت در زبان‌های بر پایهٔ کلاس شناخته می‌شود) توسط فرایندی از شبیه‌سازی اشیاء موجود انجام می‌پذیرد. این مدل همچنین به بدون کلاس، پیش‌نمونه‌گرا یا برنامه‌نویسی بر پایهٔ نمونه نیز شناخته می‌شود. دلگیشن (به انگلیسی: Delegation) قابلیت زبانی است که برنامه‌نویسی بر پایهٔ پیش‌نمونه را پیشتیبانی می‌کند


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
برنامه‌نویسی مفهوم

برنامه‌نویسی مفهوم یک پارادایم برنامه نویسی است، که بر چگونگی ترجمهٔ مفاهیمی که در ذهن برنامه‌نویس شکل می‌گیرد به آنچه در فضای کد قابل دستیابی است، تمرکز می‌کند. این رویکرد توسط کریستوف دی نچین در سال ۲۰۰۱ با زبان برنامه‌نویسی XL معرفی شد.


شبه سنجه‌ها
برنامه‌نویسی مفهوم شبه سنجه‌ها را برای ارزیابی کیفیت کد به کار می‌گیرد. بدین دلیل به اینها شبه سنجه گفته می‌شود که فضای مفهوم و فضای کد را به هم مربوط می‌سازند. با درک روشنی از اینکه فضای مفهوم را نمی‌توان به اندازهٔ کافی محدود به قالب بندی‌هایی کرد تا بتوان سنجه‌های واقعی را تعریف نمود. شبه سنجه‌های برنامه‌نویسی مفهومی در برگیرندهٔ موارد زیر می‌شوند:

  • اعوجاج نحوی تفاوت میان مفهوم و نحوی که برای نمایش آن به کار گرفته شده‌است را اندازه‌گیری می‌کند. به عنوان مثال: نقطه ویرگول در انتهای دستورها در زبان C می‌تواند به عنوان اعوجاج نحوی در نظر گرفته شود چون در فضای مفهوم معادلی ندارد.
  • اعوجاج معنایی فاصلهٔ معنا یا رفتار مورد انتظار از مفهوم با معنا با رفتار واقعی درون کد را اندازه‌گیری می‌کند. به عنوان مثال: این حقیقت که انواع دادهٔ حسابی سرریز می‌کنند (در حالیکه اعداد حسابی ریاضی چنین نیستند.) صورتی از اعوجاج معنایی است.
  • پهنای باند این را اندازه‌گیری می‌کند که به چه میزان از فضای مفهوم را یک ساختار کد از پیش تعیین شده می‌تواند معرفی نماید. به عنوان مثال: عملگر جمع اضافه بار شده در زبان C پهنای باند بیشتری از دستور جمع در زبان اسمبلی (Add) دارد چون عملگر زبان C می‌تواند عمل جمع را با اعداد ممیز شناور (و نه فقط اعداد حسابی انجام دهد.)
  • نسبت سیگنال به اعوجاج این را اندازه‌گیری می‍کند که چه کسری از فضای کد در برابر اطلاعات پیاده‌سازی شده برای نمایش مفاهیم واقعی به کار گرفته شده‌است.


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
قانون برابری، شکست برابری
قانون برابری هنگامی تأیید می‌شود که رفتار کد با مفهوم اصلی همخوانی داشته باشد. این برابری ممکن است در حالت‌های بسیاری به شکست بینجامد. سرریز کردن اعداد حسابی برابری میان مفهوم ریاضی اعداد حسابی و تقریب کامپیوتری شده از این مفهوم را برهم می‌زند. به راه‌های بسیاری در شکست برابری اسامی ویژه‌ای داده شده‌است زیرا این موارد خیلی رایج هستند:

  • خطای دامنه وضعیتی است که در آن کد خارج از دامنهٔ برابری اجرا می‌شود، که این دامنه ایست که در آن مفهوم و پیاده‌سازی منطبق می‌شوند سرریز عدد حسابی مثالی از خطای دامنه است.
  • قالب مفهوم (همچنین قالب بندی دوباره مفهوم یا مفهوم را دوباره قالب بندی کردن) بازنویسی یک مفهوم به صورت مفهومی دیگر است بدین سبب که مفهوم اصلی را نمی‌توان به وسیله ابزارها پیاده‌سازی نمود در زبان C به کار بردن اشاره گرها برای آرگومان‌های خروجی به این دلیل که زبان C از آرگومان‌های خروجی به صورت صریح پشتیبانی نمی‌کند، مثالی از قالب مفهوم است.
  • وارونگی اولویت صورتی از اعوجاج نحوی یا معنایی است که به وسیله برخی قوانین عمومی دیکته شده از سوی زبان به وجود می‌آید. از این رو وارونگی اولویت نامیده می‌شود که زبان تقدم را بر مفهوم حاکم می‌سازد. در Smalltalk هر چیزی یک شی است و این قانون به این دستاورد ناخواسته منجر می‌شود که عبارتی شبیه به ۲+۳*۵ از توالی مرسوم عملیات پیروی نمی‌کند (در Smalltalk ابتدا ۲ با ۳ جمع شده، حاصل آن در ۵ ضرب می‌شود که در نهایت عدد ۲۵ به جای ۱۷ بدست می‌آید.)
روش شناسی
برای نوشتن کد برنامه‌نویسی مفهوم این گام‌ها را پیشنهاد می‌دهد:

  1. مفاهیم مرتبط را در فضای مفهوم شناسایی و تعریف نمایید.
  2. نمادهای سنتی برای مفاهیم را شناسایی یا نمادهای قابل استفاده جدیدی ایجاد نمایید.
  3. ترکیبی از ساختارهای برنامه‌نویسی را شناسایی کنید که اجازه می‌دهد مفاهیم به راحتی به قالب کد درآیند، که یافتن نماد کدی که با نماد شناسایی شده در مرحله قبل تا حد ممکن نزدیک باشد، را در بر می‌گیرد.
  4. کدی بنویسید که تا حد ممکن رفتار و معانی مورد انتظار از جنبه‌های مرتبط مفهوم اصلی را حفظ و نگهداری می‌کند.
ابزارهای برنامه‌نویسی بسیاری اغلب فاقد قابلیت‌های نمادی هستند. بنابراین برنامه‌نویسی مفهوم در برخی موارد نیازمند استفاده از پیش پردازنده‌ها، زبان‌های مختص به دامنه یا روش‌های فرا برنامه‌نویسی است.

زبان‌ها
زبان برنامه‌نویسی XL تنها زبان شناخته شده ایست که تا به امروز به‌طور واضح برای برنامه‌نویسی مفهوم ایجاد شده‌است. اما برنامه‌نویسی مفهوم تقریباً در هر زبانی با درجات متفاوتی از موفقیت قابل اجراست. زبان‌های برنامه نویسی Lisp و Forth و مشتقات آن‌ها نمونه‌هایی از زبان‌های از قبل موجود هستند که به خوبی قابلیت استفاده به عنوان برنامه‌نویسی مفهوم را دارند.

کارهای مشابه
پروژه‌هایی هستند که از ایده‌های مشابه بهره‌برداری کرده‌اند تا با سطح بالایی از انتزاع کد تولید کنند. دربین آن‌ها این موارد را می‌توان نام برد:

  • برنامه‌نویسی هدفی
  • برنامه‌نویسی زبان گرا
  • برنامه نویسی ادیبانه
  • معماری مدل- محور


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
پارادایم برنامه‌نویسی

پارادایم برنامه‌نویسی (به انگلیسی: Programming paradigm) یا شیوه‌های برنامه‌نویسی، به شیوه‌های اساسی برنامه‌نویسی رایانه گویند.

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


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
زبان خاص دامنه

زبان خاص دامنه یا دی‌اِس‌اِل (به انگلیسی: DSL) به زبان برنامه‌نویسی‌ای گفته می‌شود که ارتباط تنگاتنگی با مسائل یک دامنهٔ بخصوص داشته باشد. این مفهوم در برابر زبان‌های برنامه‌نویسی همه‌منظوره مطرح می‌شود. زبان‌های خاص دامنه ممکن است گرافیکی یا متنی باشند و به گونه‌ای طراحی شده‌اند که بتوانند، نسبت به زبان‌های برنامه‌نویسی همه‌منظوره، دسته‌ای بخصوص از مسائل را ساده‌تر حل کنند. غالب این زبان‌ها سطح بالا هستند و باید پیش از کاربردی شدن به یک شکل دیگر تبدیل شوند، برای نمونه یک مدل را تبدیل به کد و کد را تبدیل به یک پروندهٔ اجراپذیر کنند.


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿

*KhatKhati*

مدیر بازنشسته رمان ۹۸
کاربر رمان ۹۸
  
عضویت
16/7/20
ارسال ها
2,693
امتیاز واکنش
9,215
امتیاز
233
محل سکونت
گلنمکستان
زمان حضور
63 روز 21 ساعت 58 دقیقه
نویسنده این موضوع
فرض کنید به شما کنترل یه ربات رو بدن که 5 تا کار می تونه انجام بده. مثالا

  • روشن شو(ON)
  • یک گام به جلو برو(step)
  • به اندازه دلخواه در جهت عقربه های ساعت بچرخ(rotate)
  • جسم کوچک جلوت رو بردار(take)
  • خاموش شو(off)
حالا اگه این روبات رو بذارن تویه اتاق و یه توپ کوچیک رو یه طرف اتاق بندازن بگن با این ربات این توپ رو بردار، احتمالا با چند حرکت این کار و انجام میدین.

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

ON

Step

Rotate 45

Step



Step

Step

Rotate 30

Take

Off

برنامه نویسی یه چیزی شبیه به همین کد های بالاست. برنامه نویسی یعنی نوشتن یه سری دستورات برای یه ماشین (کم فهم!) که این ماشین فقط اون دستورات رو می فهمه. حالا نکته اینجاست که شما می تونی این برنامه رو اینقدر خوب بنویسی که بهترین حات ممکن باشه و سریع به جواب برسی و می تونی هم نه این قدر بد و غیر بهینه برنامه بنویسی که دیر یا اصلا به جواب نرسی. مثلا تو همون مثال بالا شما می تونی جوری برنامه ریزی کنی که ماشین مستقیم به توپ برسه میشه هم 10 دور زد بعد رسید به توپه!

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

حالا کاری به اینا نداریم. کامپیوتر چیا می فهمه؟ اگه بخوام خلاصه بگم میگم کامپیوتر های امروزه فقط یک چیز می فهمن. اونم اینه که باشن یا نباشن! یعنی آره یا نه! یعنی 0 یا 1. شاید این مسائل خیلی پیچیده باشه که از پایه حرف بزنیم. که مثلا وقتی کامپیوتر می خواد یه عدد رو تو حافظه بذاره یه مداری یه جایی بسته میشه یا باز میشه! واقعیت اینه که اگه در سطح برنامه نویسی assemblyنگاه کنیم شاید کل دستوراتی که میشه به CPUداد صد نوع هم نشه، ولی بیاید از این جا شروع کنیم که کامپیوتر ما یه سری دستورات رو می فهمه و می تونه اون ها رو با یه سری ترفند هایی به همون زبان قابل فهم کامپیوتر تبدیل کنه. در واقع تمام زبان هایی که ما می شناسیم مثل pascalو Cو fortranو …همین کارو می کنن. یعنی یه چیزی بنام کامپایلر(compiler) میاد و برنامه هایی که شما به اون زبان نوشتید رو به زبان سطح پایین قابل فهم واسه ماشین مثه assemblyدر میاره که بعد به زبان 1و0 در میاد.

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

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

اگه هنوز علاقه مندی به برنامه نویسی تا دفعه بعد صبر کن تا توضیح بدم یه زبانی مثل cیا fortranیا pascalچه توانایی هایی دارن. و اصلا چه فرقی با هم دارن و از کدوم باید استفاده کنیم.


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

 
  • تشکر
Reactions: SAEEDEH.T و Saghár✿
shape1
shape2
shape3
shape4
shape7
shape8
بالا