هنگام به وجود آمدن و طراحی یک زبان برنامهنویسی و یا پس از آن که کاملا طراحی شد و مورد استفاده قرار گرفت،
بعد از آن که زبان استاندارد شد، اگر شخص یا موسسهای اقدام به طراحی ابزار یا کامپایلری مربوط به آن زبان کرد، در صورتی محصول او یک محصول قابل قبول و استاندارد به شمار میرود که در آن اصول و استانداردهای آن زبان رعایت شده باشد. این که برنامه جدید چه ویژگیهایی به محیط عملیاتی یا به ابزارهای برنامه و یا حتی به پیادهسازی زبان اضافه میکند، میتواند موجب برتری و تمایز آن از سایر ابزارها شود؛ اما رعایت اصول پایهای برای همه طراحان الزامی است و کاربران نیز باید در انتخاب ابزار یا کامپایلر مورد استفاده خود، این مساله را در نظر داشته باشند.
مستندات زبان
هم برای کسانی که میخواهند کامپایلر جدید برای یک زبان طراحی کنند و هم برای اشخاصی که قصد دارند به برنامهنویسی با آن زبان بپردازند لازم است، مستندات مربوط به آن زبان را مطالعه کنند. در کنار مستندات مربوط به زبان استاندارد، مطالعه راهنمای کامپایلر مورد استفاده نیز برای برنامهنویسان لازم است.
در یک زبان برنامهنویسی، برخی مسائل در استاندارد زبان آمده است و برخی دیگر به طور قراردادی بین توسعهدهندگان کامپایلر رعایت میشوند. در کنار آن، برخی مسائل نیز ممکن است از کامپایلری به کامپایلر دیگر متفاوت باشد. به عنوان یک مثال نادقیق ممکن است حد پایین یک آرایه در یک زبان، در استاندارد آن ذکر شده باشد. مثلا اندیس آغازین در زبان C++ همواره صفر است؛ اما در پاسکال، یک آرایه میتواند از هر اندیس دیگری آغاز شود؛ اما ممکن است مقداردهی اولیه به هنگام تعریف آرایه در استاندارد ذکر نشده باشد.
در این گونه موارد گاهی در برخی از پیادهسازیها به هنگام تعریف آرایه، به عناصر آن به صورت خودکار و پیشفرض مقدار صفر، نسبت داده میشود. اما در پیادهسازی دیگر آن زبان توسط شرکت دیگر ممکن است مقادیر عناصر به همان صورت رها شده و برنامهنویس را موظف به مقداردهی اولیه کند. یا به عنوان مثال دیگر ممکن است در یک پیادهسازی از زبان به هنگام خواندن یک رکورد از فایل، اشارهگر فایل بعد از خواندن رکورد به رکورد بعد پرش کند و منتظر دستور بعدی خواندن بماند و در پیادهسازی دیگر آن زبان، به هنگام خواندن رکورد از فایل ابتدا به رکورد بعد رفته و بعد عمل خواندن انجام شود. البته بعضی از این ریزهکاریها با یک آزمون و خطای ساده قابل کشف است. اما دانستن استاندارد زبان در آن مورد به برنامهنویس در ساخت یک برنامه استاندارد و بدون اشکال کمک خواهد کرد.
تفاوت بین استانداردها
همانطور که گفتیم یک استاندارد زبان توسط گروههایی از متخصصان و طراحان زبان تبیین و باعث میشود که یک اسکلت ثابت برای زبان تعیین شده و موجب یکنواختی پیادهسازیهای مختلف آن زبان شود. اما بعضی شرکتهای بزرگ که یک پیادهسازی از آن زبان را ارائه میکنند، علاوه بر رعایت استانداردهای آن زبان، برای امکانات اضافه و جانبی آن زبان نیز استانداردهای خاص خود را وضع میکنند و آنها را در مستندات خود عرضه میکنند. مثلا 2 شرکت بزرگ بورلند و مایکروسافت، دو پیادهسازی بزرگ و محبوب از زبان++ c عرضه کردهاند و در آن علاوه بر قوانین اصلی زبان، قوانین خاص خود را نیز به کار گرفتهاند. حال ممکن است به علت گستردگی استفاده کامپایلرهای این 2 شرکت شرکتهای دیگر نیز ابزارهای خود را علاوه بر استاندارد اصلی زبان، با استاندارد یک یا چند شرکت بزرگ دیگر سازگار کنند.
توجه به قراردادها و قوانین یک زبان مسالهای است که هم باید از جانب شرکتهای پیادهساز زبان و هم برنامهنویسان آن زبان مورد توجه قرار گیرد. در غیر این صورت ابزارهای شرکتها، محبوبیت پیدا نمیکنند و برنامهنویسان نیز در توسعه نرمافزارهای خود دچار مشکل میشوند. در آینده سعی خواهیم کرد درباره مشکلات مربوط به برنامهنویسی در این زمینه کمی بیشتر صحبت کنیم.