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

پس تا به این جا متوجه شدیم که خطای سینتکس در همان زمان نوشتن و تایپ دستورات برای ما مشخص می شود و قبل از اجرای برنامه نیز می توانیم آن را رفع کنیم.
و همین طور فهیدیم که علت این خطا رعایت نکردن نحوه نوشتاری دستورات است و نه معنی آن ها.
-
خطای سمانتیک یا semantic error چیست؟
Semantic در واقع همان مفهومی است که به ساختارهای نحوی زبان داده می شود. این جمله به این معنی است که کدی که شما آن را می نویسید باید نتیجه درست داشته باشد.
semantic به معنی “معنا شناسی” است. وقتی شما با خطای semantic مواجه می شوید، یعنی شما از نظر نوشتاری اشتباه و خطایی ندارید اما کد شما از نظر معنایی درست نیست.
برای مثال این جمله را بخوانید: “کتاب، انسان است. ”
همان طور که می بینید در این جمله هیج خطای سینتکس یا نوشتاری وجود ندارد. اما از نظر معنایی برای شما خنده دار است!. این یعنی این جمله در واقعیت معنایی ندارد. در دنیای برنامه نویسی نیز همین قانون را داریم.
تفاوت این دو خطا:
فرق دیگری که این خطا با خطاهای سینتکس دارد این است که شما پس از کامپایل شدن کدتان با آن ها مواجه می شوید. یعنی برنامه باید به طور کامل کامپایل بشود و کدها در کنار یکدیگر قرار بگیرند و اجرا شوند تا کامپایلر بتواند مشکل را شناسایی کند و به شما اعلام کند.
برای مثال وقتی شما در در زبان سی پلاس پلاس یک آرایه تعریف می کنید، باید نحوه کار کردن با آرایه را بدانید. به عنوان مثال باید بدانید که ایندکس اول خانه های آرایه از 0 شروع می شود و تا یکی قبل از اندازه آرایه جلو می رود:
int array[5];
در این تعریف در زبان سی پلاس پلاس، شما یک آرایه از اعداد صحیح یا integer دارید. و خانه های این آرایه به ترتیب array[0] و array[1] و array[2] و array[3] و array[4] نام دارد.
همانطور که می دانید اگر بخواهید مثلا در ایندکس array[5] مقداری را ذخیره کنید و مانند کد زیر عمل کنید:
array[5]=10;
در این صورت شما هیچ خطای سینتکسی ندارید اما با خطای معنایی مواجه خواهید شد. چرا که آرایه array ایندکس مدنظر شما را ندارد. کامپایلر در این حالت پس از کامپایل کردن کد، بر روی این خط به شما ارور می دهد.
امیدواریم که به طور کامل تفاوت میان خطاهای syntax و semantic را آموخته باشید.
برای دیدن مقالات دیگر ما یه برگه بلاگ مراجعه کنید.
می توانید سوالات و نظرات خودتان را نیز در قالب نظر برای ما ارسال کنید تا در سریعترین زمان ممکن پاسخگوی سوالات شما باشیم.
آخرین مطالب
- کنترل پنل پلسک (Plesk)
- پروکسی یا proxy
- WPF چیست و چه کاربردی دارد؟
- کاتلین و ویژگی های آن
- دامنه و انواع آن
- هاست و انواع آن
- رتبه بندی برنامه نویسی
- اعداد باینری یا دودویی
- آشنایی با هوش مصنوعی
- آشنایی با زبان سی شارپ
- آشنایی با فریم ورک فلاتر (flutter)
- برای یادگیری برنامه نویسی از کجا شروع کنیم؟
- کامپایلر (Compiler) چیست؟
- متغیرها (variables) در برنامه نویسی
- ویژوال استودیو و نسخههای آن

