mteb/MIRACLReranking huggingface dataset:
لوگو (زبان برنامه‌نویسی) لوگو معمولاً به عنوان زبانی مفسری شناخته می‌شود، با این حال اخیراً برخی نسخه‌های کامپایلی لوگو مانند Lhogho و Liogo نیز ساخته شده‌است. لوگو حساس به بزرگ یا کوچک بودن حروف نیست ولی حالت را برای فرمت کردن نگه می‌دارد. لوگو مصالحه‌ای بین زبان برنامه‌نویسی ترتیبی با ساختار بلوکی و زبان برنامه‌نویسی تابعی است. لوگوی استانداردی وجود ندارد، اما UCBLogo به‌شدت مورد توجه‌است. این زبان برای آموزش برنامه‌نویسی به کار می‌رود، اما به خاطر امکانات خوب کار با لیست‌ها زبان بسیار خوبی برای ایجاد scriptهای مفید است.
کامپایلر یک کامپایلر خود برنامه‌ای است که توسط زبان پیاده‌ساز تولید شده‌است. اولین کامپایلر خود محور که می‌توانست کد خود را کامپایل کند برای زبان Lisp و توسط Hart و Levin در سال ۱۹۶۲ و در مؤسسه فناوری ماساچوست ایجاد شد. در دهه ۷۰ از زبان‌های سطح بالایی مثل پاسکال و سی جهت نوشتن کامپایلرها استفاده شد. ساخت کامپایلرهای خود محور دارای مشکل راه‌اندازی است، چونکه هر کامپایلری باید توسط کامپایلر نوشته شده‌ای به زبان دیگر کامپایل شود یا برای این مشکل دست به دامن مفسری بشود.
MinGW برخی از زبان های برنامه نویسی سطح بالا به صورت کامپایلری هستند که برنامه های نوشته شده برای سیستم قابل فهم نیستند به همین خاطر برای ترجمه برنامه های نوشته شده به زبان ماشین باید از کامپایلر استفاده نمود. برخی از کامپایلرهای ++C/C که در زیر برخی از آنها لیست شده است:
بوت‌استرپینگ (کامپایلر) یکی از مهم‌ترین حوزه‌هایی که در علوم رایانه از مفهوم بوت‌استرپ کمک گرفته، طراحی کامپایلرها است. منظور از بوت‌استرپ در کامپایلرها، کامپایلری است که بتواند خودش را کامپایل کند. یعنی کامپایلر (یا اسمبلر) به یک زبان برنامه‌نویسی نوشته شده باشد که باید آن را کامپایل کند. نسخه اولیه‌ای از چنین کامپایلری (کامپایلر بوت‌استرپ) در زبان دیگری ایجاد می‌شود (که می‌تواند زبان اسمبلی باشد)؛ سپس نسخه‌های توسعه یافته بعدی از کامپایلر با استفاده از زیرمجموعه محدودی از آن زبان توسعه می‌یابند.
جی‌ام‌ال جی‌ام‌ال(gml) (زبان گیم میکر یا Game Maker Language) یک زبان برنامه‌نویسی مفسری است که برای استفاده به همراه برنامه‌های کاربردی ساخت بازی که Game Maker (گیم میکر) نامیده می‌شود ساخته شده‌است.
دی‌کامپایلر از دیکامپایلر برای مباحث امنیت کامپیوتر ، تصحیح خطاها و... استفاده می شود. زبان های کامپایلری مفسری که از کد میانی و ماشین مجازی استفاده می کنند معمولاً به صورت کامل قابل برگشت هستند ، یعنی حتی شماره ی خطوط و نام متغییرهای کد اصلی هم قابل برگشت است.از این دست زبان‌ها می توان به جاوا و .net اشاره کرد. به عنوان مثال دیکامپایلر jd-gui برای جاوا وجود دارد که کد را به صورت کامل برمی گرداند. برای جلوگیری از دیکامپایل برنامه ها ابزاری با عنوان مبهم کننده ی کد( obfuscated code) وجود دارد که عملیات مهندسی معکوس را مشکل تر می کند.
کد نفخ در برنامه‌نویسی رایانه، کد نفخ نوعی ایجاد کد برنامه (کد منبع یا کد ماشین) است، که منابع را هدر می‌دهد، کد را دراز می‌کند یا کد را آهسته می‌سازد. کدهای نفخی می‌تواند به دلیل بی کفایتی زبان برنامه‌نویسی که کد به آن زبان نوشته شده‌است، ایجاد شود. همچنین ممکن است دلیل آن بی کفایتی کامپایلری که آن را کامپایل می‌کند، یا بی کفایتی برنامه‌نویسی باشد که آن را نوشته‌است؛ بنابراین، درحالیکه کد نفخ معمولاً به اندازه کد منبع برمی گردند (یعنی توسط برنامه‌نویس ایجاد شده‌اند)، می‌تواند در عوض به سایز کد تولید شده یا حتی سایز فایل دودویی اشاره کند.
سوئیفت (زبان برنامه‌نویسی) سویفت یک زبان برنامه‌نویسی چند شیوه‌ای و از نوع کامپایلری است که برای توسعهٔ iOS، macOS، watchOS و tvOS توسط شرکت اپل ساخته‌شده‌است. سویفت برای کار با فریمورک‌های Cocoa و Cocoa Touch اپل و تعامل با حجم عظیمی از کدهای Objective-C نوشته شده برای محصولات اپل طراحی شده‌است. سویفت می‌خواهد جلوی خطاهای برنامه‌نویسی را بیشتر بگیرد و امنیت بیشتری نسبت به Objective-C داشته باشد و در عین حال نگارش مختصرتر و کوتاه‌تری داشته باشد. این زبان توسط کامپایلر LLVM که درون برنامهٔ Xcode قرار دارد (و برای لینوکس به صورت برنامهٔ جدا در دسترس است) ساخته می‌شود و سپس از runtime زبان Objective-C بهره می‌برد که اجازه می‌دهد کدهای سویفت کنار کدهای C، C++ و Objective-C در کنار هم در یک برنامه اجرا شود.
زبان توصیف کامپایلر کامپایلری برای زبان کوبول روی رایانه‌های شخصی و سیستم MProlog با زبان CDL2 نوشته شده‌اند. سیستم MProlog پیاده‌سازی‌ای صنعتی از زبان برنامه‌نویسی منطقی پرولوگ است که بر روی معماری‌های عظیم مانند رایانهٔ بزرگ آی‌بی‌ام و اینتل اجرا می‌شد.
کامپایلر افزایشی در الگوی برنامه‌نویسی تعاملی، به عنوان مثال در ادبیات مربوط به Poplog، یک کامپایلر تعاملی به کامپایلری گفته می‌شود که در واقع بخشی از سیستم زمان اجرای زبان مبدأ است.
فراقلم فراقلم یک زبان برنامه‌نویسی برای تعریف قلم‌های برداری است. فرافلم همچنین نام مفسری است که دستورها فراقلم را اجرا می‌کند و قلم‌های نگاره‌ای با توانایی جاسازی شدن در قالب‌های توصیف صفحه‌ای مانند پست‌اسکریپت را تولید می‌کند.
دی (زبان برنامه‌نویسی) زبان برنامه‌نویسی D، یک زبان شی گرا، امری و چندالگویی سیستمی است که توسط Walter Bright از Digital Mars طراحی و در سال ۲۰۰۱ منتشر شد. Bright توسط Andrei Alexandrescu در سال ۲۰۰۶ به تلاش توسعه و طراحی پیوست. با اینکه D مهندسی دوباره‌ای از سی پلاس پلاس است، کاملاً یک زبان جدا محسوب می‌شود؛ زیرا بسیاری از ویژگی‌های هسته سی پلاس پلاس را نگه داشته و بسیاری را دور ریخته‌است. در طراحی زبان دی همچنین از زبان‌هایی مانند پایتون، روبی، سی شارپ، ایفل و جاوا نیز الهام گرفته شده‌است. هدف طراحی زبان D ترکیب کارایی و امنیت زبان‌های کامپایلری، با قدرت زبان‌های پویای مدرن است. کد یک برنامه در زبان D شبیه به زبان سی پلاس پلاس است، اما کوتاه‌تر می‌باشد.
کامپایلر «البته در ابتدای امر که دربارهٔ زبان‌های تفسیری و کامپایلری گفته بودند باید خاطر نشان کرد که زبان‌های تفسیری خط به خط خوانده شده و اجرا می‌گردد در حالیکه در کامپایلری ابتدا تمام برنامه ترجمه شده و سپس اجرا می‌گردد پس در زمان اجرا سرعت اجرا شدن زبان‌های کامپایلری بیشتر است. اما کشف و تصحیح خطا در تفسیری بهتر و راحت تر است.»
زبان تفسیری زبان‌های تفسیری به آن دسته از زبان‌های برنامه‌نویسی برای رایانه گفته می‌شود که استفاده از آن‌ها نیازمند یک مفسر (رایانه) است. به‌طور نظری، تمام زبان‌های رایانه‌ای قابل همگردانی یا تفسیر هستند، و این نوع نام‌گذاری تنها به دلیل نوع استفاده از زبان‌های برنامه‌نویسی به کار می‌رود نه به خاطر یک تفاوت ذاتی در زبان‌های برنامه‌نویسی.
کامپایلر تابعی یک کامپایلر تابعی، کامپایلری برای یک زبان برنامه نویسی تابعی است. کامپایلر تابعی تغییری در کد منبع ایجاد می‌کند که آن را به سبک مابعد گذرنده یا فرم نرمال اجرایی تبدیل می‌کند و لازم است فراخوانی های دم را به درستی بکار بگیرد.
بابل (کامپایلر بین زبانی) تفاوت بین کامپایلر های بین زبانی (transcompiler) و کامپایلر های معمولی (compiler) این است که کامپایلر کد منبع یک زبان برنامه‌نویسی خاص را می‌گیرد و آن را به کد قابل اجرای سطح ماشین تبدیل می‌کند درحالی که کامپایلر بین زبانی کدمنبع یک زبان برنامه نویسی را دریافت می‌کند و آن را به کد منبع یک زبان برنامه نویسی دیگر تبدیل می‌کند. این کد جدید تولید شده قابل اجرا شدن بر روی سخت افزار نیست بلکه این کد برای توسعه‌دهنده در زبان برنامه نویسی دیگر تولید شده است. به عنوان مثال می‌توان کد منبع زبان برنامه نویسی سی شارپ را به کامپایلر بین زبانی داد و در خروجی کد منبع زبان برنامه نویسی دیگری مثل سی‌ پلاس‌ پلاس را داشت.
متغیر محلی در بسیاری از زبان‌های برنامه‌نویسی، تفاوت بین یک متغیر محلی و یک متغیر سراسری آن است که متغیر محلی برای اولین بار داخل یک ماژول یا تابع تعریف می‌شود، اما متغیر سراسری پیش از ورود به یک ماژول یا تابع تعریف می‌شود. در برخی زبان‌های برنامه‌نویسی تعریف متغیرهای محلی و سراسری تفاوت‌هایی با آنچه گفته شد دارد.
کولا (زبان برنامه‌نویسی) . رشته‌ها و پردازش متن اولین اولویت هستند—بیشتر برنامه‌ها شامل رشته‌ها و دستکاری متن می‌باشند. حمایت از عبارت منظم به طرز چشمگیری قدرت زبان را افزایش می‌دهد، اما نحو داخلی برای عبارات منظم خوانایی را افزایش می‌دهد و ترکیب این دو عملکرد برنامه را ارتقاء می‌دهد. در شرایط مقداردهی یا استفاده از یک متغیرغیر رشته‌ای دررشته، یا متون مبهم، کولا در صورت امکان متغیر را به رشته تبدیل می‌کند، به جای آن که باعث یک تبدیل نوع خارجی شود. سوئیچ کامپایلری می‌تواند حالت خطا یا هشدار در مورد تبدیل نوع خودکار را فعال کند.
هسته لینوکس هسته لینوکس در نسخه زبان برنامه‌نویسی C پشتیبانی شده توسط GCC (که تعدادی پسوند و تغییر در استاندارد C را معرفی کرده‌است)، همراه با تعدادی بخش کوتاه از کد که به زبان اسمبلی نوشته شده‌است (به زبان ATC و GCC) نوشته شده‌است. «نحوی» سبک) از معماری هدف. GCC به دلیل برنامه افزودنی در C که پشتیبانی می‌کند، مدت طولانی بود که تنها کامپایلری بود که قادر به ساخت صحیح هسته لینوکس بود. از سال ۲۰۰۲، کلیه کدها باید به ۲۱ قانونی که شامل سبک کدگذاری هسته Linux است، رعایت کنند.
بافنده جوانب برای حل این معضلات در کنار داشتن برنامه‌نویسی جنبه گرا بافنده‌ها به ما این اجازه را می‌دهند که با اندکی تعمیم مانند از زبان پرکاربردی مانند جاوا استفاده کنیم. بجای طراحی یک زبان کاملاً جدید، بافنده پسوندهای تعریف شده توسط AspectJ را تفسیر می‌کند و کد جاوا را «می بافد» تا بتواند توسط هر جاوا کامپایلری استفاده شود. این تضمین می‌کند که هر کد شی گرا موجود، یک کد معتبر جنبه گرا نیز باشد و توسعه مانند روال عادی توسعه شیء گرا انجام شود. مثالی دیگر از اینگونه تعمیمات زبان است که تعمیمی جنبه گرا برای زبان ++C می‌باشد.
زبان توصیف سخت‌افزار به شدت شبیه به یک زبان برنامه‌نویسی نرم‌افزار است، اما تفاوت عمده وجود دارد. بسیاری از زبان‌های برنامه‌نویسی ذاتاً رویه (تک رشته‌ای)، با پشتیبانی ساختاری و مفهومی محدود به راه اندازی همزمانی هستند.
رایانه دستورالعمل‌ها در داخل رایانه به صورت اعداد مشخص شده‌اند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ می‌تواند باشد. مجموعه معین دستورالعمل‌های تعریف شده که توسط یک رایانه ویژه پشتیبانی می‌شود را زبان ماشین می‌نامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمی‌نویسند بلکه بیشتر به نوعی از انواع سطح بالای زبان‌های برنامه‌نویسی، برنامه‌نویسی می‌کنند تا سپس توسط برنامه ویژه‌ای (تفسیرگرها (interpreters) یا همگردان‌ها (Compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبان‌های برنامه‌نویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده می‌شود، استفاده می‌کنند؛ همچنین زبان‌های سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد به جای دستورالعمل‌های ویژه ماشین استفاده می‌کنند.
زبان برنامه‌نویسی گویش یک زبان برنامه‌نویسی یا یک زبان تبادل اطلاعات یک تغییر یا گسترش زبان (نسبتاً کوچک) است که ماهیت ذاتی آن را تغییر نمی‌دهد. با زبان‌هایی مانند Scheme و Forth، ممکن است استانداردها توسط مجریان ناکافی، ناکافی یا نامشروع تلقی شوند، بنابراین آنها در بیشتر موارد با ایجاد یک گویش جدید از استاندارد منحرف می‌شوند. در موارد دیگر، یک گویش برای استفاده در یک زبان خاص دامنه، بیشتر زیر مجموعه ایجاد می‌شود. در دنیای Lisp، بیشتر زبان‌هایی که از اصطلاحات اصطلاحاتی اصطلاحات S و اصطلاحات شبیه به Lisp استفاده می‌کنند، لهجه‌های Lisp در نظر گرفته می‌شوند، گرچه تفاوت‌های وحشیانه‌ای دارند، به عنوان مثال، راکت و کلوژ. از آنجا که معمول است که یک زبان چند لهجه داشته باشد، پیدا کردن اسناد مناسب برای یک برنامه‌نویس بی‌تجربه بسیار دشوار است. زبان برنامه‌نویسی BASIC گویش‌های زیادی دارد.
زبان توصیف سخت‌افزار یک زبان توصیف سخت‌افزار بسیار شبیه به زبان برنامه‌نویسی می‌باشد، مثل C که یک توصیف متنی شامل عبارت، بیانیه‌ها و ساختارهای کنترل است. یکی از مهم‌ترین تفاوت‌ها بین اکثر زبان‌های برنامه‌نویسی و HDLها دقیقاً شامل مفهوم زمان است. HDLها بخش جدای ناپذیر از سیستم‌های اتوماسیون طراحی الکترونیکی (EDA)، به ویژه برای مدارات پیچیده مانند مدارات یکپارچه برنامه‌های خاص، میکروپروسسورها و دستگاه‌های منطقی قابل برنامه‌ریزی هستند.
جینی (زبان برنامه‌نویسی) جینی () زبان برنامه‌نویسی مدرن، همه منظوره و سطح بالا است که در سال ۲۰۰۸ توسعه داده شده‌است. و با هدف جایگزین ساده‌تر و تمیزتر والا همزمان با حفظ کارایی آن طراحی شده است.جینی از همان کامپایلر ها و کتابخانه های والا استفاده می کند.و می توان از هردو در کنار هم استفاده کرد. و تنها تفاوت در نحو آن ها است.
سیستم نوع در علوم رایانه یک سیستم نوع نحوهٔ ارتباط زبان برنامه‌نویسی را با مقادیر و عبارات تعیین می‌کند و تحت این روابط آن‌ها را دسته‌بندی کرده و رفتار مناسب آن‌ها را با یکدیگر تعیین می‌کند. یک نوع در داده‌ها به معنای یک دسته از مقادیر با ویژگی‌های عمومی یکسان است. البته باید در نظر داشت که ممکن است این ویژگی‌ها به‌طور واقعی در یک برنامه در حال اجرا، وجود نداشته باشد. سیستم نوع در بین زبان‌های برنامه‌نویسی مختلف به‌طور کلی متفاوت است. اصلی‌ترین تفاوت در مورد ایستا بودن یا ایجاد در زمان اجرا انواع داده در زبان‌های مختلف می‌باشد.
کامپایل پویا کامپایل افزایشی یک شیوه مرتبط با کامپایل پویا است. به عنوان مثال کامپایلر افزایشی در POP-2 ،POP-11 ،Forth و برخی از نسخه‌های زبان لیسپ استفاده شده‌است. Maclisp و حداقل یک نسخه از زبان برنامه‌نویسی ML از کامپایل افزایشی استفاده کرده‌اند. این امر به کامپایلری نیاز دارد که زبان برنامه‌نویسی بخشی از سیستم زمان اجرا باشد. در نتیجه، کد منبع می‌تواند در هر زمان از ترمینال، از یک فایل، یا احتمالاً از یک داده ساختار ساخته شده توسط برنامه در حال اجرا، خوانده شود و به یک بلوک کد یا تابع تبدیل شود (ممکن است با تابع قبلی مشابه، به همین نام جایگزین شود)؛ که پس از آن بلافاصله برای استفاده توسط برنامه در دسترس خواهد بود. به دلیل نیاز به سرعت کامپایل در محیط‌های تعاملی، کد کامپایل شده به احتمال زیاد به اندازه کد تولید شده توسط یک «کامپایلر دسته ای» استاندارد که کد منبع راه خوانده و فایلهای شیء را تولید می‌کند، بهینه نشده‌است. با این حال، یک برنامه کامپایل شده افزایشی معمولاً بسیار سریعتر از نسخه تفسیر شده از همان برنامه اجرا می‌شود؛ بنابراین، کامپایل پویا تلفیقی از فواید زبانهای تفسیر شده و کامپایل شده را ارائه می‌دهد. برای اینکه کامپایلر افزایشی مستقل از سکو باشد، به‌طور کلی مطلوب است که کامپایلر افزایشی شامل دو مرحله باشد؛ به این صورت که ابتدا کد را به برخی زبان‌های مستقل از سکو تبدیل کند و سپس آن را به کد مقصد تبدیل کند. در این صورت فقط نیاز به تغییر کامپایلر، بخش دوم کامپایلر است. برخلاف کامپایل پویا، کامپایل افزایشی پس از اجرای قسمت اولین برنامه، در قسمت دوم، امکان بهینه‌سازی‌های بیشتری را فراهم نمی‌کند.
توابع کلاس اول برخی از نظریه‌داران حوزه‌ی زبان‌های برنامه‌نویسی برای توابع کلاس اول، علاوه بر موارد بالا، پشتیبانی از توابع ناشناس (anonymous functions) را نیز الزامی می‌دانند. در زبان‌هایی که توابع کلاس اول دارند، نام تابع هیچ معنای خاص یا ویژه‌ای ندارد و همانند متغیرهای معمولی رفتار می‌شود با این تفاوت که نوع آن متغیر، از نوع تابع است. اصطلاح توابع کلاس اول برای اولین بار توسط شخص کریستوفر استراچی به کار برده شده است. او برای اولین بار در مورد رفتار زبان‌های برنامه‌نویسی با توابع به صورت شهروند درجه‌ی اول در اواسط دهه‌ی ۱۹۶۰ میلادی در مقاله‌ای به نام مفاهیم بنیادی در زبان‌های برنامه‌نویسی (Fundamental Concepts in Programming Languages) نوشته بود.
مرتب سازی حافظه در سطح ماشین، تعداد کمی از ماشین‌ها می‌توانند مجموع سه عدد را در یک دستورالعمل واحد محاسبه کنند، بنابراین کامپایلر باید این عبارت را به دو عملیات جمع ترجمه کند. اگر مفاهیم زبان برنامه، کامپایلر را برای ترجمه عبارت به ترتیب چپ به راست محدود کند (برای مثال)، کد تولید شده به نظر می‌رسد که گویی برنامه‌نویس عبارات زیر را در برنامه اصلی نوشته‌است: اگر کامپایلر مجاز باشد از خاصیت تداعی جمع استفاده کند، ممکن است عبارات زیر را ایجاد کند: اگر کامپایلر همچنین اجازه استفاده از ویژگی جابجایی جمع را داشته باشد، ممکن است عبارات زیر را ایجاد کند: توجه داشته باشید که نوع داده عدد صحیح در اکثر زبان‌های برنامه‌نویسی فقط از جبر برای اعداد صحیح ریاضی در صورت عدم سرریز اعداد صحیح پیروی می‌کند و اینکه محاسبات ممیز شناور در نوع داده‌های ممیز شناور موجود در اکثر زبان‌های برنامه‌نویسی در خطاهای گرد کردن جابجا نمی‌شود بلکه باعث ایجاد خطا در ترتیب عبارات قابل مشاهده در تفاوت‌های کوچک نتیجه محاسبه شده می‌شود (تفاوت‌های اولیه کوچک ممکن است در یک محاسبه طولانی‌تر به تفاوت‌های قراردادی بزرگ تبدیل شوند).
Mustache Mustache یک سیستم نشانه گذاری است که می‌تواند دراکشن‌اسکریپت، سی++، کلوژر، کافی‌اسکریپت، کلد فیوژن، دی (زبان برنامه‌نویسی)، دلفی (زبان برنامه‌نویسی)، ارلنگ، فانتوم (زبان برنامه‌نویسی)، گو (زبان برنامه‌نویسی)، هسکل (زبان برنامه‌نویسی)، آی‌او (زبان برنامه‌نویسی)، جاوا (زبان برنامه‌نویسی)، جاوااسکریپت، جولیا، لوآ (زبان برنامه‌نویسی)، چارچوب دات‌نت، آبجکتیو-سی، پرل، پی‌اچ‌پی، Pharo، پایتون (زبان برنامه‌نویسی)، دکتر اسکیم، روبی (زبان برنامه‌نویسی)، راست (زبان برنامه‌نویسی)، اسکالا، سوئیفت (زبان برنامه‌نویسی)، CFEngine and اکس‌کوئری. استفاده شود. از Mustache به عنوان یک زبان نشانه گذاری بدون منطق یاد می‌شود، بخاطر اینکه از دستورهای شرطی یا کنترلی پشتیبانی نمی‌کند. هرچند که هم کار با حلقه و هم عبارهای شرطی می‌توانند به نحو دیگری در Mustache مورد استفاده قرار گیرند. این سیستم به علت استفادهٔ بسیار زیاد از {} (براکت) در آن که شبیه به سبیل است Mustache (سبیل) نام گذاری شده. از Mustache غالباً برای برنامه‌های موبایل و وب استفاده می‌شود.
برنامه‌نویسی استقرایی تنوع برنامه‌نویسی استقرایی معمولاً از اپلیکیشن‌ها و زبان‌هایی که مورد استفاده قرار می‌گیرند می آید: به غیر از برنامه‌نویسی منطقی و برنامه‌نویسی تابعی، دیگر پارادایم‌های برنامه‌نویسی و زبان‌های بازنمایی در برنامه‌نویسی استقرایی مورد استفاده یا پیشنهاد قرار گرفته‌اند از جمله: برنامه‌نویسی منطقی_تابعی، برنامه‌نویسی محدود، برنامه‌نویسی احتمالی، برنامه‌نویسی منطقی قیاسی، منطق موجهات، زبان عمل، زبان‌های عامل و بسیاری دیگر از زبان‌های دستوری.
زبان برنامه‌نویسی در نگاه کلی، زبان‌های برنامه‌نویسی به مثال‌های برنامه‌نویسی و یک دسته‌بندی بر اساس محدودهٔ استفاده تقسیم می‌شوند. مثال‌ها شامل برنامه‌نویسی رویه‌ای، برنامه‌نویسی شیءگرا، برنامه‌نویسی کاربردی، و برنامه‌نویسی منطقی؛ برخی زبان‌ها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبان‌های برنامه‌نویسی ممکن است همه منظوره باشند، زبان‌های برنامه‌نویسی سیستمی، زبان‌های اسکریپتی، زبان‌های خاص دامنه، زبان‌های همزمان/ گسترده (و یا ترکیب اینها). برخی زبان‌های همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شده‌اند.
مقایسه سی‌شارپ و ویژوال بیسیک دات‌نت بخش عمده‌ای از تفاوت بین سی شارپ و ویژوال بیسیک از نظر فنی نحو آن‌ها است. به این معنا که بسیاری از ویژگی‌ها در هر دو زبان هستند، اما بعضی چیزها ساده‌تر در یک زبان نسبت به دیگری انجام می‌شود. در واقع بسیاری از تفاوت‌های بین دو زبان در اطراف محیط برنامه‌نویسی متمرکز شده‌است.
کامپایلر فازبندی کامپایلرها که در پشت زمینه به محدودیت‌های منابع سخت‌افزاری وابسته‌است. در نتیجه کامپایلرها به مجموعه برنامه‌های کوچکتر تقسیم می‌شوند هر یک بخشی از عمل ترجمه یا آنالیز را برعهده می‌گیرند. کامپایل تک فازی به نظر مفید می‌آید، چراکه سریعتر است. زبان پاسکال از این امکان استفاده می‌کند. اما مشکل اینجا است که اگر اعلان جلوتر از دستور به‌کارگیری باشد، چه کار باید کرد؟ برای حل این مشکل می‌توان در فاز اول اعلان‌ها را مشخص کرد و در فاز بعد عمل ترجمه را انجام داد. عیب دیگر کامپایلر تک فازی دشواری بهینه‌سازی کدهای زبان سطح بالا می‌باشد. همگردان یک‌گذره (One-Pass Compiler) کامپایلری است که برای تولید کد ماشین، تنها یک مرتبه متن برنامه را می‌خواند. دستور برخی زبان‌ها به گونه‌ای است که تولید همگردان یک‌گذره برای آن‌ها غیرممکن است. مجموعه همگردان‌های گنو یا Gnu complier colection یا به صورت مخفف GCC مجموعه‌ای از همگردان‌های آزاد برای زبان‌های برنامه‌نویسی است. تقسم بندی کامپایلرها به برنامه‌های کوچکتر تکنیکی است که همچنان مورد بحث محققان است. در این نوع دسته‌بندی کامپایلرها، انواع دیگری نیز وجود دارد:
آی‌سوییم (زبان برنامه‌نویسی) معانی عملیاتی آی‌سوییم از ماشین مجازی SECD و فراخوانی با مقدار استفاده می‌کند که آن ارزیابی مشتاق است. یکی از اهداف آی‌سوییم این بود که بیشتر به نمادهای ریاضی شباهت داشته باشد؛ بنابراین Landin سمی کالن بین عبارت‌ها و بلوک‌های را با قانون off-side و حوزه بر مبنای دندانه گذاری، جایگزین کرد. یکی از تفاوت‌های آی‌سوییم در نمادگذاری استفاده از where clauseها است. یک برنامهٔ آی‌سوییم از یک عبارت تنها که باwhere clause واجد شرایط شده‌است، عبارت‌های شرطی و تعریف توابع تشکیل شده‌است. با CPL این زبان یکی از اولین زبان‌های برنامه‌نویسی بود که از where clauseها استفاده کرد.
زبان برنامه‌نویسی تصویری زبان برنامه‌نویسی تصویری (ویژوال) (VPL = Visual Photo Language) به آن دسته از زبان‌های برنامه‌نویسی گفته می‌شود که روند برنامه‌نویسی در آن‌ها به جای اینکه به صورت متنی باشد، به صورت تصویری است. در برنامه‌نویسی تصویری از عبارات تصویری و نمادهای گرافیکی برای برنامه‌نویسی استفاده می‌شود. بیشتر زبان‌های برنامه‌نویسی تصویری بر پایه ایده "جعبه‌ها و پیکان‌ها" هستند. در این روش از جعبه‌هایی به عنوان اشیای صفحه‌ای و پیکان‌ها یا خطهایی برای ارتباط دادن این جعبه‌ها به هم استفاده می‌شود. از مهم‌ترین زبان برنامه‌نویسی تصویری می‌توان به زبان برنامه نویسی اسکرچ اشاره کرد که برای کودکان به صورت رایگان در سال 2007 عرضه شده.
زبان برنامه‌نویسی نسل سوم زبان برنامه‌نویسی نسل سوم، زبان برنامه‌نویسی که بهبودیافته نسل دوم زبان‌های برنامه‌نویسی می‌باشد. در این نسل، ساختار منطقی و زبان‌هایی که برای برنامه‌نویس محیط دوستانه‌تری را فراهم می‌کرد، وارد زبان‌های برنامه‌نویسی شد.
رایانه دستگاه اعداد دودویی شامل عددهای ۰ (صِفر) و ۱ (یک) است. دستگاه اعداد دودویی زبان اصلی رایانه است. ۰ بمعنای خاموش و ۱ بمعنای روشن است. یادگیری زبان دودویی امری غیرقابل یادگیری است. برای مثال یک نرم‌افزار خیلی ساده شامل تعداد بیشماری ۰ و ۱ است. زبان‌های برنامه‌نویسی با زبان اصلی رایانه که، ۰ و ۱ است کاملاً تفاوت دارد. کد را با زبان برنامه‌نویسی نوشته و آن را با نرم‌افزارهایی به‌نام همگردان ویا مفسر به ۰ و ۱ موردنظر تبدیل می‌کنیم.
زبان برنامه‌نویسی اگرچه بیشترین زبان‌های برنامه‌نویسی متداول دارای مشخصات و پیاده‌سازی‌های کاملاً باز هستند، بسیاری از زبان‌های برنامه‌نویسی فقط به عنوان زبان‌های برنامه‌نویسی اختصاصی با اجرای فقط از یک فروشنده منفرد موجود هستند، که ممکن است ادعا کنند چنین یک زبان اختصاصی خاصیت معنوی آنها است. زبان‌های برنامه‌نویسی اختصاصی معمولاً زبان‌های خاص دامنه یا زبان‌های برنامه‌نویسی داخلی برای یک محصول واحد هستند. برخی از زبان‌های اختصاصی فقط در داخل یک فروشنده استفاده می‌شوند، در حالی که برخی دیگر در دسترس کاربران خارجی است.
زبان‌های برنامه‌نویسی محرمانه زبان برنامه‌نویسی ترسناک یک زبان برنامه‌نویسی است که برای تست کردن محدودیت‌های طراحی دیگر زبان‌های برنامه‌نویسی طراحی شده‌است. کلمه محرمانه این زبان‌ها را از دیگر زبان‌های برنامه‌نویسی که برای نوشتن نرم‌افزار استفاده می‌شوند، متمایز می‌کند. معمولاً نویسنده‌های برنامه‌های محرمانه خیال ندارند جریان برنامه‌نویسی را منحرف کنند به جز در مواردی خاص مانند الگوهای visuospatial که برای این منظور در نظر گرفته شده‌اند. این زبان‌ها مورد علاقه هکرها و افرادی است که می‌خواهند جریان داده را به هم بزنند. مورد استفاده بودن از اهداف طراحان زبان‌های محرمانه نیست بلکه معمولاً هدف آن‌ها حذف یا جایگزینی اَشکال قراردادی در زبان است که هنوز زبان را تورینگ کامل نگاه می‌دارد.
C++ C++ (بخوانید سی‌پلاس‌پلاس ) یک زبان برنامه‌نویسی همه‌منظوره، همگردان، سطح میانی، شیءگرا و چندرگه است که از برنامه‌نویسی رویه‌ای، تجرید داده‌ها و برنامه‌نویسی شیءگرا پشتیبانی می‌کند. این زبان دارای قابلیت‌های انواع داده ایستا، نوشتار آزاد، چندمدلی، معمولاً زبان ترجمه‌شده با پشتیبانی از برنامه‌نویسی ساخت‌یافته، برنامه‌نویسی شیءگرا، برنامه‌نویسی جنریک است. از آنجا که در ++C اشیاء را می‌توان ابتدا به ساکن از کلاس‌هایی ایجاد کرد که به هیچگونه سلسله مراتب رده‌ها و وراثت مقید نیستند، لذا ++C از برنامه‌سازی شیء بنیاد (object-based programming) نیز پشتیبانی می‌کند. C++ به همراه جد خود C از پرطرفدارترین زبان‌های برنامه‌نویسی هستند. C++ یک زبان سطح میانی در نظر گرفته می‌شود؛ این زبان دارای قابلیت‌های زبان‌های برنامه‌نویسی سطح بالا و زبان‌های برنامه‌نویسی سطح پایین به‌صورت هم‌زمان است.
زبان برنامه‌نویسی ویژگی‌هایی که غالباً برای تشکیل یک زبان برنامه‌نویسی مهم شمرده می‌شوند: برخی مؤلفین اصطلاح «زبان برنامه‌نویسی» را محدود به آن‌هایی می‌کنند که می‌توانند تمام الگوریتم‌های ممکن را پیاده‌سازی کنند، گاهی اوقات اصطلاح «زبان رایانه» برای زبان‌های برنامه‌نویسی محدودتر به کار می‌رود. زبان‌های غیر محاسباتی، مانند زبان‌های مارک آپ (markup) HTML یا گرامرهای قراردادی مثل BNF، معمولاً زبان برنامه‌نویسی محسوب نمی‌شوند. یک زبان برنامه‌نویسی (که می‌تواند کامل تورینگ نباشد) ممکن است در این زبان‌های غیر محاسباتی (میزبان) تعبیه شوند.
گودل (زبان برنامه‌نویسی) زبان برنامه‌نویسی گودل از نوع برنامه‌نویسی اعلانی است. این زبان یک زبان همه منظوره است که شیوه‌های برنامه‌نویسی آن به صورت برنامه‌نویسی منطقی است. وابستگی این زبان به تایپ بسیار کم است. نام گذاری ان به خاطر منطقدان بزرگ کورت گودل است.
متغیر خودکار در برنامه‌نویسی رایانه، متغیر خودکار به متغیری گفته می‌شود که وقتی جریان اجرای برنامه وارد حوضه متغیر می‌شود، حافظه سیستم به صورت خودکار به آن متغیر تخصیص می‌یابد و با خارج شدن جریان برنامه از حوضه متغیر، متغیر مورد نظر به شکل خودکار آزاد شده و فضای آن به سیستم پس داده می‌شود. اصطلاح متغیر محلی هم گاهی اوقات مترادف با اصطلاح متغیر خودکار استفاده می‌شود اما آن‌ها مجزا هستند و با هم تفاوت دارند. هرچند که در بسیاری از زبان‌های برنامه‌نویسی، آن‌ها مشابه هم هستند، اما متغیر محلی عمومیت بیشتری دارد، بیشتر متغیرهای محلی، متغیر خودکار هم هستند، اما متغیر ایستای محلی هم وجود دارد که با خارج شدن جریان اجرای برنامه از حوضه متغیر، نابود نشده و همچنان در حافظه باقی می‌ماند. این قضیه درباره زبان برنامه‌نویسی سی صادق است. در مورد متغیرهای محلی ایستا، تخصیص حافظه به شکل ایستا صورت می‌گیرد و در کل زمان اجرای برنامه ثابت است و به شکل خودکار نیست. اما به این متغیرها فقط می‌توان در حوضه‌ای که تعریف شده‌اند دسترسی داشت.
زبان برنامه‌نویسی سطح بالا زبان برنامه‌نویسی سطح بالا (High-level programming language) برخلاف زبان‌ برنامه‌نویسی سطح پایین، زبانی است که نسبت به زبان برنامه‌نویسی سطح پایین راحت‌تر قابل استفاده و قابل حمل بین سیستم‌های متفاوت و دارای انتزاع بیشتری هستند. چنین زبان‌هایی عموماً از عملیات CPU مانند مدل‌های دسترسی به حافظه و مدیریت حوزه دور هستند. پایتون یک زبان برنامه‌نویسی سطح بالا و C یک زبان برنامه‌نویسی سطح پایین است.
برنامه‌نویسی استقرایی بسته به زبان برنامه‌نویسی مورد استفاده، چندین نوع برنامه‌نویسی استقرایی وجود دارد، برنامه‌نویسی تابعی استقرایی، که می‌توان از زبان‌های برنامه‌نویسی تابعی مانند Lisp و Haskell نام برد، برنامه‌نویسی منطقی استقرایی، که از زبان‌های برنامه‌نویسی منطقی مانند Prolog و دیگر نمایش‌های منطقی مانند منطق توصیفی
برنامه‌نویسی مفهوم زبان برنامه‌نویسی XL تنها زبان شناخته شده ایست که تا به امروز به‌طور واضح برای برنامه‌نویسی مفهوم ایجاد شده‌است. اما برنامه‌نویسی مفهوم تقریباً در هر زبانی با درجات متفاوتی از موفقیت قابل اجراست. زبان‌های برنامه نویسی Lisp و Forth و مشتقات آن‌ها نمونه‌هایی از زبان‌های از قبل موجود هستند که به خوبی قابلیت استفاده به عنوان برنامه‌نویسی مفهوم را دارند.
زبان برنامه‌نویسی رایانه‌های اوایل ۱۹۵۰، به‌طور خاص UNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه‌نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شود، جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه‌نویسی اسمبلی، که برای استفاده از دستورهای ماکرو تکامل یافته بود، توسط سه زبان برنامه‌نویسی سطح بالا دیگر: فورترن، کوبال و لیسپ مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام توسعه زبان‌های بعد را تحت تأثیر قرار دادند. در پایان دهه ۵۰ زبان، الگول ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه‌نویسی بعد، با ملاحظه بسیار، از نسل الگول هستند. قالب و استفاده از زبان‌های برنامه‌نویسی به شدت متأثر از محدودیت‌های رابط بودند.
برنامه‌نویسی داده‌محور در برنامه نویسی کامپیوتر ، برنامه‌نویسی داده محور یک پارادیم برنامه نویسی است که در آن دستورهای برنامه ، داده‌ها را برای همسان‌سازی و پردازش‌های مورد نیاز به جای تعریف یک توالی مراحل توصیف می‌کنند . نمونه‌هایی استاندارد از زبان‌های برنامه‌نویسی داده محور زبان متن-پردازش sed و AWK هستند، که در آن‌ها داده ، دنباله‌ای از خطوط در یک جریان ورودی می‌باشد (این نوع زبان‌های برنامه‌نویسی هم‌اکنون با نام زبان‌های برنامه‌نویسی خط-گرا نیز شناخته می‌شوند) و در درجه اول عبارات منظم یا شماره خط الگوی تطابق هستند .
حلقه فور دستور حلقه فور در ضروری‌ترین و مهمترین زبان‌های برنامه‌نویسی در دسترس است. حتی با نادیده گرفتن کوچکترین تفاوت در گرامر و ساختمان آن‌ها، تفاوت‌های بسیاری در نحوه عملکرد این دستورها و سطح بیانگری که پشتیبانی می‌کنند، وجود دارد.
زبان برنامه‌نویسی نسل پنجم زبان برنامه‌نویسی نسل پنجم (5GL) هر زبان برنامه‌نویسی مبتنی بر حل مسئله با استفاده از محدودیت‌های داده شده به برنامه، به جای استفاده از یک الگوریتم نوشته شده توسط یک برنامه‌نویس است. اکثر زبان‌های برنامه‌نویسی مبتنی بر محدودیت و منطق و برخی دیگر از زبان‌های اعلانی، از زبان‌های نسل پنجم هستند.
زبان برنامه‌نویسی چندمدلی یک زبان برنامه‌نویسی چندمدلی زبانی است که چندین نوع برنامه‌نویسی را پشتیبانی می‌کند. به عنوان مثال زبان برنامه‌نویسی سی++ از چند روش برنامه‌نویسی مانند شی‌گرا و ساخت‌یافته پشتیبانی می‌کند.
او پی ال او پی ال یک زبان محدود شده برای دستگاه‌های قابل حمل بوده که سیستم‌های سیمبین راه اندازی می‌کند که می‌تواند آن را در گوشی‌های نوکیا مدل ۹۲۰۰، ۹۳۰۰ و ۹۵۰۰دید، همچنین در PDAها و گوشی‌های مدل P80 , D۹۰۰ و D۹۱۰ سونی اریکسون مشاهده شود. او پی ال در بخشی از استانداردهای برنامه‌های با کاربرد نزدیک که در PDAهای کلاسیک Psion (یک شرکت انگلیسی سازنده کامپیوترهای دستی) و نوت بوک‌ها و نوت پدها کاربرد دارد. او پی ال یک زبان مفسری همانند بیسیک می‌باشد. این زبان در سیستم Psion به نام زبان برنامه‌نویسی سلسه مراتبی خوانده می‌شود. اولین برنامه اجرا شده توسط این زبان که بدون گرافیک بود برای سیستم Psion بوده‌است (اشاره به سیستم Psion I، در سال ۱۹۸۴) و به صورت یک پکیج علمی، مالی و محاسباتی درآمده بود. این زبان به مرور زبان متداول‌تر شد و در طراحی نرم‌افزارها در Psion II (در سال ۱۹۸۶) بکار رفت و همچنین در نسل سوم Psionها و به بعد پر کاربرد شد. بعد از کنار کشیدن Psion از بازار PDA این زبان تغییر پیدا کرد و به صورت یک سیستم باز (Open Source) عرضه شد. با افزایش نارضایتی‌ها از سوی عده کثیری از برنامه نویسان اوپی ال، این زبان دیگر قابلیت استفاده برای سیستم‌عامل‌های سیمبین سری ۸ به بعد را نداشت. عمده این نارضایتی‌ها به علت نداشتن جذابیت کافی و پشتیبانی مناسب از استانداردهای اصلی سیمبین در نوکیا و سونی اریکسون بود. به همین جهت او پی ال در نسل‌های جدید سیستم‌عامل‌های سیمبین استفاده نمی‌شود.
زبان برنامه‌نویسی تابعی منطقی جبری زبان برنامه‌نویسی تابعی منطقی جبری که به صورت مخفف «ALF» نیز شناخته می‌شود زبان برنامه‌نویسی است که تکنیک‌های برنامه‌نویسی تابعی و برنامه‌نویسی منطقی را ترکیب کرده‌است. منبع ایجاد آن منطق عبارت هورن با تساوی است که از گزاره و قضایای هورن برای برنامه‌نویسی منطقی و توابع و معادلات برای برنامه‌نویسی تابعی تشکیل شده‌است.
کلاس (برنامه‌نویسی) در زبان‌های رویه‌ای برنامه‌نویسی، مثل زبان سی (C)، برنامه‌نویسی، بیشتر عملگرایانه است. درحالی‌که، زبان‌های برنامه‌نویسی سی‌پلاس‌پلاس (++C)، جاوا (Java)، و سی‌شارپ (#C) دارای پارادایم شیءگرایانه هستند. واحد برنامه‌نویسی در زبان‌های رویه‌ای تابع است، ولی، زبان‌های شی گرا دارای کلاس‌ها - که اشیاء نهایتاً از آنها ایجاد می‌شوند (یا اصطلاحاً نمونه‌سازی می‌شوند) - به عنوان واحد برنامه‌نویسی هستند. توابع نیز در داخل کلاس‌ها به عنوان متدهایی پیاده‌سازی می‌شوند.
لایه انتزاعی منطق قابل برنامه‌ریزی اغلب بخشی از سخت‌افزار در نظر گرفته می‌شود، در حالی که گاهی اوقات تعاریف منطقی به عنوان بخشی از نرم‌افزار یا سیستم عامل دستگاه دیده می‌شود. سیستم عامل ممکن است فقط شامل نرم‌افزارهای سطح پایین باشد، در صورتی که می‌تواند شامل همه نرم‌افزارها، از جمله سیستم‌عامل و برنامه‌های کاربردی نیز باشد. لایه‌های نرم‌افزار را می‌توان به لایه‌های انتزاعی سخت‌افزار، درایورهای فیزیکی و منطقی دستگاه، مخازن مانند فایل‌های سیستم، هسته‌های سیستم عامل، میان‌افزار، برنامه‌ها و موارد دیگر تقسیم کرد. تفاوت‌ها می‌تواند ناشی از زبان‌های برنامه‌نویسی سطح پایین باشد مانند وی‌اچ‌دی‌ال، کد ماشین، زبان اسمبلی به زبان کامپایل شونده، مفسر و زبان اسکریپت‌نویسی.
زبان برنامه‌نویسی بلو زبان برنامه‌نویسی بلو بلو سیستمی برای آموزش برنامه نویسی شی گرا می‌باشد، در دانشگاه سیدنی استرالیا پیشرفت کرد. آن محیط پیشرفته مجتمع و زبان برنامه نویسی است. بلو از سال ۱۹۹۷ برای برنامه‌نویسی استفاده شده‌است. پیشرفت آن در ۱۹۹۹ در حال متوقف شدن بود زمانی‌که یکی از سرمایه‌گذارهای آن مایکل کولینگ شروع کرد به استفاده کردن طراحی IDE برای زبان برنامه‌نویسی جاوا، که نتیجه اش درBlue j بود.
آلیس (زبان برنامه‌نویسی) آلیس همچنین ویژگی‌هایی فراهم می‌کند که به برنامه‌نویس اجازه می‌دهد که از استراتژی فراخوانی هنگام نیاز در برنامه‌هایش در مقابل استراتژبهای سنتی ارزیابی حریص که در استاندارد ML به کار می‌رود استفاده کند. زبان Haskell یک زبان تابعی است که فراخوانی هنگام نیاز را آماده می‌کند. Alice ارزیابی حریص را به عنوان پیش فرض خود پذیرفته است. نیاز برنامه‌نویس، به صراحت بیان می‌کند که محاسبات به هنگام نیاز فراخوانی شود. این تفاوت نسبت به هاسکل، مدل فراخوانی به هنگام نیاز را به‌طور پیش فرض قبول می‌کند.
زبان برنامه‌نویسی یک زبان برنامه‌نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه‌نویسی دسته‌بندی شود. برای مثال، بیشتر زبان‌های برنامه‌نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته‌بندی شوند.
روبی (زبان برنامه‌نویسی) همچنین، روبی انجمن‌های فعال و گسترده‌ای برای کمک به علاقه‌مندان به این زبان دارد. در ایران نیز انجمن IranOnRails فعال‌ترین انجمن فارسی‌زبان روبی و همچنین [[روبی آن ریلز]] است. [[رده:روبی (زبان برنامه‌نویسی)]] [[رده:استانداردهای ایزو]] [[رده:زبان‌های اسکریپت‌نویسی]] [[رده:زبان‌های برنامه‌نویسی دارای استاندارد ایزو]] [[رده:زبان‌های برنامه‌نویسی ساخته‌شده در ۱۹۹۵ (میلادی)]] [[رده:زبان‌های برنامه‌نویسی شیءگرا]] [[رده:زبان‌های برنامه‌نویسی کلاس محور]] [[رده:زبان‌های برنامه‌نویسی ماشینی پویا]] [[رده:کامپایلرها و مفسرهای آزاد]] [[رده:نرم‌افزارهای آزاد نوشته‌شده با سی]] [[رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند]] [[رده:زبان‌های برنامه‌نویسی متن‌گرا]] [[رده:اختراع‌های ژاپنی]]
سیستم نوع قسمتی از برنامه که منجر به وقوع خطای غیرتوقفی نشود را امن می‌نامند. اگر همهٔ قسمت‌های برنامه‌های نوشته‌شده به یک زبان برنامه‌نویسی امن باشند، آن زبان را یک «زبان برنامه‌نویسی امن» می‌نامند. زبان‌های برنامه‌نویسی فاقد نوع‌داده از طریق بررسی برنامه در زمان اجرا از ایمنی آن اطمینان حاصل می‌کنند. این در حالی‌است که زبان‌های برنامه‌نویسی دارای نوع‌داده برنامه را در زمان کامپایل بررسی می‌کنند و در صورت ایمن نبودن برنامه، آن را اجرا نمی‌کنند. البته ممکن است این زبان‌ها در زمان اجرا نیز برنامه را بررسی کنند.
برنامه‌نویسی منطقی برنامه‌نویسی منطقی یک پارادایم برنامه‌نویسی است که بیشتر آن مبتنی بر منطق صوری است. هر برنامه نوشته‌شده به یک زبان برنامه‌نویسی منطقی مجموعه‌ای از جمله‌ها است که حالت منطقی دارند، که آن جمله‌ها بیانگر «واقعیت» و «قاعده» دربارهٔ یک دامنه مسئله هستند. خانواده‌های زبان برنامه‌نویسی منطقی اصلی شامل پرولوگ، برنامه‌نویسی مجموعه جواب (ASP) و دیتالاگ است. در همه این زبان‌ها، «قاعده‌ها» به حالت «بند» نوشته می‌شوند:
فهرست مثال‌های برنامه Hello World یک برنامه Hello World یک برنامهٔ رایانه‌ای ساده است که جمله «Hello, world!» را در صفحه نمایش چاپ می‌کند. معمولاً ساده‌ترین برنامهٔ ممکنی است که می‌توان در زبان‌های برنامه‌نویسی مختلف نوشت و یک عمل سنتی است که بسیاری از برنامه‌نویسان که قصد آموزش یک زبان برنامه‌نویسی را دارند، توصیه به نوشتن آن می‌کنند که اولین قدم در یادگیری آن زبان برنامه‌نویسی است. بیشتر از این برنامه برای مقایسه نحو دو زبان مختلف استفاده می‌شود. در زیر فهرستی از برنامه‌های Hello World مرسوم در ۹۱ زبان برنامه‌نویسی آمده‌است.
سی‌پی‌ال (زبان برنامه‌نویسی) CPL ( زبان برنامه‌نویسی ترکیب شده Combined Programming Language و قبل تر از آن تحت عنوان زبان برنامه‌نویسی کمبریج ) یک زبان برنامه‌نویسی چند مدلی  (multi-paradigm) می‌باشد ، که در اوایل سال ۱۹۶۰ توسعه یافت.
زبان برنامه‌نویسی بلو گروهی که بلو را توسعه داد، روی یک محیط پیشرفته مجتمع خیلی شبیه به نام Blue jکارش را ادامه داد که از زبان برنامه‌نویسی جاوا استفاده می‌کند و هدف‌های مشابه دارد. زبان برنامه‌نویسی آموزشی مطلب تحلیل زبان‌های برنامه نویسی
زبان برنامه‌نویسی زبان‌های برنامه‌نویسی را می‌توان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم‌بندی کرد:نکته: امروزه با وجود ماشین‌های مجازی، تقسیم‌بندی زبان‌های برنامه‌نویسی بر اساس نوع ترجمه، اشتباه می‌باشد. ماشین مجازی HipHop (مورد استفاده شرکت فیسبوک برای کاهش مرحله تفسیر در PHP) و همچنین کامپایل زبان برنامه‌نویسی پایتون به کلاس‌های جاوا نمونه‌هایی از چندگانگی نوع ترجمه در زبان‌های برنامه‌نویسی می‌باشد.
سبک برنامه‌نویسی به‌طور معمول، سبک برنامه‌نویسی مورد استفاده در یک برنامه خاص، ممکن است از قراردادهای کدنویسی شده توسط شرکت یا سازمانی دیگر گرفته شده باشد، یا از ترجیحات نویسنده کد حاصل شده باشد. سبک‌های برنامه‌نویسی اغلب برای یک زبان برنامه‌نویسی خاص (یا خانواده زبان) طراحی شده‌اند و برای نمونه سبکی که در کد منبع زبان سی مناسب می‌باشد، ممکن است برای کد منبع برنامه بیسیک مناسب نباشد. با این وجود اغلب قوانین، در زبان‌های برنامه‌نویسی مشترک می‌باشد.
برنامه‌نویسی مبتنی بر اتوماتا برنامه‌نویسی مبتنی بر FSM نیز مانند برنامه‌نویسی مبتنی بر اتوماتیک می‌باشد با این تفاوت که تمامی جنبه‌های ماشین متناهی را پوشش نمی‌دهد.
برنامه‌نویسی همگانی پیش گام این رویکرد زبان ای دا (Ada) در ۱۹۸۳ بود که اجازه نوشتن انواع یا تابع‌های مشترک که فقط در مجموعه‌ای از انواع در زمان استفاده باهم تفاوت دارند، می‌داد؛ بنابراین از تکرار جلو گیری می‌کرد. موجودیت‌های نرم‌افزار که با استفاده از برنامه‌نویسی جنریک ساخته شده‌اند به نام generics در Effiel, Java, C#, Visual Basic .NET, Haskell, Swift, Ada و قالب ها(templates) در سی پلاس پلاس شناخته می‌شوند.
جی (زبان برنامه‌نویسی) مانند زبان‌های FP/FL، جی از برنامه‌نویسی سطح تابع (که همچنین با نام برنامه‌نویسی تابعی سطح بالا شناخته شده) از ویژگی‌های برنامه‌نویسی نهان پشتیبانی می‌کند. (توجه داشته باشید که برنامه‌نویسی سطح تابع با برنامه‌نویسی تابعی یکسان نیست)
زبان برنامه‌نویسی سطح بالا به بیان دیگر در حالی که زبان برنامه‌نویسی سطح بالا برنامه‌نویسی را آسان‌تر می‌نماید اما زبان برنامه‌نویسی سطح پایین برنامه‌های بهینه‌تری تولید می‌کند. در یک زبان سطح بالا این امکان را فراهم می‌سازد تا اجزای پیچیده را به اجزای ساده‌تر اما هنوز پیچیده تقسیم نموده تا برنامه‌نویس را از انجام کارهای پیچیده بازدارد. به این دلیل برنامه‌هایی که نیاز به کار با سرعت بالا و بهینه‌تر دارند باید با زبان سطح پایین نوشته شود حتی اگر زبان سطح بالا این کار را ساده‌تر سازد.
حساب لامبدا زبان‌های تایپ شده لامبدا زبان‌های برنامه‌نویسی پایه هستند و پایه زبان‌های برنامه‌نویسی کارکردی مانند ML و Haskell و غیرمستقیم زبان‌های برنامه‌نویسی ضروری را تایپ می‌کنند. Calibles lambda تایپ شده نقش مهمی در طراحی سیستم‌های نوع زبان‌های برنامه‌نویسی بازی می‌کند. در اینجا typability معمولاً ویژگی‌های مطلوب برنامه را ضبط می‌کند، برای مثال برنامه باعث نقض دسترسی به حافظه نمی‌شود.
لوآ (زبان برنامه‌نویسی) عوض کردن تابع print تعریف شده در لوآ به گونه‌ای که رفتار آن فقط به ازای حالت خاص ورودی "foo" تفاوت کند.
کلمه دستورالعمل بسیار طولانی واژه VLIW و خود ایده معماری VLIW توسط جاش فیشر در تحقیقات گروهی در دانشگاه Yale در اوایل ۱۹۸۰ ابداع شد. گسترش اولیه برنامه‌ریزی ردیابی به عنوان مجموعه‌ای از تکنیک‌ها برای VLIW وقتی او از دانشگاه نیویورک فارغ‌التحصیل بود گسترش یافت. قبل از VLIW، ایده کلی واحدهای تابعی بین برنامه‌ریزی و توازی سطح دستورالعمل در نرم‌افزار در گسترش ریز کد افقی بنیان نهاده شد. ابداعات فیشر پیرامون گسترش کامپایلری بود که بتواند ریز کد افقی را از کد نوشته شده توسط برنامه نویسان در زبان‌های برنامه‌نویسی معمولی تمیز دهد. او متوجه شد برای داشتن عملکرد بهتر، رسیدن به یک ماشین کامل لازم است، توازی را در یک بلاک عمومی پیاده‌سازی کند. وی تکنیک‌های برنامه‌ریزی ناحیه‌ای را برای پیاده‌سازی توازی در بین بلاک‌های پایه گسترش داد. برنامه‌ریزی، راه چنین تکنیکی است و ابتدا با مسیرهای بلاک پایه‌ای که شبیه تر هستند کار می‌کند. بدین صورت که کد جبرانی را برای سر و کار داشتن با حرکات بر اساس حدس در برنامه قرار می‌دهند، برنامه‌ریزی دومین مسیر شبیه و… تا زمانی که برنامه‌ریزی به پایان برسد.
اکس‌ال (زبان برنامه‌نویسی) XL زبانی است که به برنامه‌نویس این امکان را می‌دهد که با استفاده از plug-inهای گوناگون به compiler، خصوصیات جدیدی را هم از لحاظ قواعد و هم از لحاظ مفهوم به زبان اضافه نماید و به همین دلیل آن را programmer-reconfigurable syntax & semantics می خوانند. مشخصات کامپایلری این زبان باعث شده تا در زمره زبان‌های امری قرار گیرد. همچنین برنامه نویسان خودشان می‌توانند plug-inهای سلیقه‌ای نوشته و در application هایشان استفاده کنند. زبان XL حدوداً از سال 1992 به وجود آمد و نتیجه زحمات دراز مدت یک تیم طراحی زبان است. شایان ذکر است که سازنده و طراح اصلی این زبان Christophe de Dinechin می‌باشد. کامپایلر XL با زبان ++C نوشته شده‌است. نکته‌ای که در این زبان وجود داشت این بود که همه ویژگی‌هایی که بالا توصیف شده بود، درست کار می‌کرد؛ اما نوشتن plug-in برای آن یک کابوس بود، چون ++C خودش توسعه پذیر نیست بنابراین پیاده‌سازی ترجمه غیرممکن بود. درخت پارس با انواع زیادی از گره‌ها خیلی پیچیده بود. چون برای پشتیبانی زبان متقاطع طراحی شده بود. Moka یک کامپایلر توسعه پذیر Java-to-Java بود که از همین ساختار استفاده می‌کرد. در سال 2003 یک کامپایلر جدید با اصلاح کامل کامپایلر قبلی و ساده کردن درخت پارس آن معرفی شد. در سال 2004 کامپایلر ساده‌تری راه اندازی شد که سادگی درخت پارس آن در حدی بود که گره‌هایش به اندازه 7 نوع گره XL0 رسید و همه توسعه‌های امروزی در XL نوشته می‌شود.
پایتون (زبان برنامه‌نویسی) از سال ۲۰۰۳ پایتون طبق شاخص تیوبی یکی از ده زبان محبوب برنامه‌نویسی بوده‌است و در فوریهٔ ۲۰۲۰ سومین زبان برنامه‌نویسی محبوب (بعد از c و جاوا) بوده‌است.پایتون در سال‌های ۲۰۰۷ ،۲۰۱۰ و ۲۰۱۸ به عنوان زبان برنامه‌نویسی سال انتخاب شده‌است.
دی (زبان برنامه‌نویسی) ۱. چند الگویی ۱٫۱ امری: زبان D یک زبان امری مشابه C است. توابع، داده‌ها، دستورها، اعلان‌ها و عبارات کاملاً مانند زبان C عمل می‌کنند. از تفاوت‌های مهم زبان D با زبان C در امری بودن، می‌توان به حلقه foreach اشاره کرد که امکان حرکت کردن روی یک collection را به ما می‌دهد. همچنین، زبان D دارای توابع تو در تو است که داخل یکدیگر تعریف می‌شوند. ۱٫۲ شی گرایی: زبان D بر پایه سلسله مراتب وراثت تکی بنا شده‌است و از وراثت چندگانه پشتیبانی نمی‌کند. ۱٫۳ Meta Programming ۱٫۴ تابعی: زبان D از بسیاری ویژگی‌های برنامه‌نویسی تابعی پشتیبانی می‌کند؛ مانند ثابت توابع، اشیای بازگشتی-تغییرناپذیر و همچنین توابع با اولویت بالا ۱٫۵ موازی: مثلاً در یک حلقهٔ for همه دفعات تکرار حلقه همزمان اجرا می‌شوند.
سیستم نوع نوع‌داده‌های یک زبان برنامه‌نویسی از لحاظ صوری بودن تعریف‌شان با دیگر اجزای زبان تفاوت‌هایی دارند. تعریف انواع داده از این حیث مابین یادداشت‌های غیر صوری یک زبان و تعریف مشخصات جزئی‌تر است؛ از یادداشت‌های زبان صوری‌تر است و از مشخصات جزئی راحت‌تر قابل پردازش است. ویژگی‌های پایه‌ای یک سیستم انواع عبارت‌اند از:
زبان برنامه‌نویسی تفاوت سرعت پردازش زبان‌های ایستا و پویا در برنامه‌هایی که نیاز به پردازش‌های بسیار حجیم در مدت زمان بسیار کوتاه دارند خودش را نشان می‌دهد بنابراین تفاوت سرعت پردازش در مورد حتی وبگاه‌های بسیار شلوغ آنقدر نیست که امکانات فراهم شده توسط یک زبان سطح بالا مانند php یا python را فدای سرعت C++ کنند البته برای مثال فیسبوک مجبور شد که php را بواسطه c++ بر روی facebook hiphop گسترش دهد تا به سرعت پردازش مطلوب خودش برسد. برای مثال دربارهٔ python توصیه شده‌است که حلقه‌های چرخشی روی حجم بالای داده را بواسطه لوپ خود پایتون و با اندیس index انجام ندهید بلکه یک آرایه array تهیه کرده و چرخش را به زیرساخت C++ آن واگذار کنید.
زبان برنامه‌نویسی برخی از زبان‌های برنامه‌نویسی در مرز بین اختصاصی و آزاد وجود دارند. به عنوان مثال، شرکت Oracle ادعا می‌کند حقوق اختصاصی برخی از جنبه‌های زبان برنامه‌نویسی جاوا، و زبان برنامه‌نویسی #C مایکروسافت، که پیاده‌سازی‌های بیشتری در اکثر بخش‌های سیستم دارد، همچنین دارای اجرای مشترک زبان مشترک (CLR) به عنوان یک محیط بسته‌است.
تاریخچه ساخت مترجم یک سازنده تجزیه گر بخش تحلیل گر لغوی یک کامپایلر را ایجاد می‌سازد. یک برنامه که با دریافت توضیحات گرامر یک زبان برنامه‌نویسی خاص تجزیه گر آن زبان را ایجاد می‌کند. این تجزیه گر می‌تواند در کامپایلر آن زبان خاص مورد استفاده قرار بگیرد. تجزیه گر، نمادها و کلید واژه‌های آن زبان خاص را در متن ورودی شناسایی کرده و این نشانه‌ها را به کدی که وظیفه تعیین ازرش نحوی و ترجمه به آبجکت کد را برعده دارد برمی‌گرداند. این بخش دوم کامپایلر می‌تواند با کامپایلر-کامپایلر ایجاد شود که قوانین اولیت شرح نحو رسم زبان را به عنوان ورودی می‌گیرد. اولین کامپایلر-کامپایلر برای استفاده به این نام توسط تونی بروکر در سال ۱۹۶۰ نوشته شد و برای ساخت کامپایلرهای برای کامپیوتر اطلس در دانشگاه منچستر مورد استفاده قرار گرفت، همانند کامپایلر اوتوکد اطلس. هر چند با کامپایلر-کامپایلرهای مدرن بسیار متفاوت بود، و کامپایلر-کامپایلر امروزه تعریفی مابین کامپایلر عمومی با قابلیت شخصی‌سازی بالا و یک زبان با قابلیت توصعه‌پذیری نحو آن می‌تواند داشته باشد. نام کامپایلر-کامپایلر برای سیستم بروکر به متراتب مناسب تر است تا کامپایلر-کامپایلرهای مدرن، که به صراحت با نام سازنده تجزیه گر نامیده می‌شوند. به اطمینان می‌توان گفت که نام کامپایلر-کامپایلر پس از یاک به صورت عمومی مورد استفاده گرفت هرچند کار بروکر همچنان حائز اهمیت است. در اوایل ۱۹۶۰ رابرت مک کلور در ابزارآلات تگزاش کامپایلر-کامپایلری طراحی کرد که TMG نام گرفت که از کلمه “transmogrification” (به معنی تناسخ) گرفته شده‌است. در سالهای بعد TMG به مینفریم‌های برخی از کامپیوترهای UNIVAC و IBM پورت شد. نمونه دیگری از سازنده‌های تجزیه گر متا دو است که اولین بار در سال ۱۹۶۲ توسط وال شوور منتشر شد. متا دو گرامر و قاعد تولید کد را قبول می‌کرد و می‌توانست زبان خود و دیگر زبان‌ها را کامپایل کند. متادو دو اولین نسخه مستند شده متاکامپایلر بود. همچنین متادو به یکی از اولین نمونه‌های ماشین مجازی ترجمه شد. پروژه مالتیکس ریسک همکاری میان MIT و آزمایشگاه‌های بل، یکی از اولین‌ها برای گسترس یک سیستم عامل با استفاده از یک زبان سطح بالا بود، زبان انتخاب شده پی‌ال/۱ بود، اما یک کارپرداز خارجی نمی‌تواند کامپایلری برای کار تهیه کند. گروه مالتیکس پیاده‌سازی شخصی خود را از زبان PL/1 گشترش دادند که با نام EPL شناخته می‌شود. TMG روی سری GE-600 پورت شده بود و برای گسترش EPL توسط داگلاس مکلروی، رابرت موریس و دیگران مورد استفاده قرار گرفت. چندی بعد کن تامسون اولین نسخه یونیکس را برای PDP-7 در ۱۹۶۹ نوشت، داگ مکلروی اولین زبان سطح بالای سیستم جدید را ایجاد کرد: پیاده‌سازی مکلروی از TMG. TMG همچنین ابزار تعریف کامپایلری است که تامسون جهت پیاده‌سازی کامپایلر برای زبان بی برای PDP-7 در ۱۹۷۰ مورد استفاده قرار داد. بی اولین جد زبان سی می‌باشد. نخستین سازنده تجزیه گر LALR که توسط فرانک درمر و تام پندلو ساخته شد TWS نام داشت.
آی‌ام‌پی (زبان برنامه‌نویسی) این مقاله در مورد Irons' IMP است. برای زبان برنامه‌نویسی معاصر و نا مربوط است. IMP یک زبان برنامه‌نویسی بود که توسه داده شد توسط E. T. Irons در اواخر ۱۹۶۰ و زود تر از ۱۹۷۰. برخلاف دیگر سیستم‌های برنامه‌نویسی ای پی ام یک زبان توسعه گر نحوی بود.
ای+ (زبان برنامه‌نویسی) زبان برنامه‌نویسی ای+ زبان برنامه‌نویسی +A یک زبان برنامه‌نویسی آرایه‌ای است که زاده زبان برنامه‌نویسی A می‌باشد و ابداع گردید تا بتواند جایگزین APL در سال ۱۹۸۸ گردد. آرتور ویتنی قسمت A زبان +A را گسترش داد. در حالی که مرگان استانلی و سایر گسترش دهندگان زبان، آن را با اضافه کردن یک فضای گرافیکی برای کاربر و برخی ویژگیهای دیگر زبان توسعه دادند. +A برای کاربردهای کاملاً عددی مخصوصاً برای امور مالی طراحی شد. +A بر روی انواع سیستم عامل‌های یونیکس از جمله لینوکس قابل اجرا می‌باشد. زبان +A یک زبان سطح بالا، ایجاد کننده تعامل باسرعت بالا بین کامپیوتر و کاربر، اجرا توسط مفسر می‌باشد.
روبی (زبان برنامه‌نویسی) ۱-روبی آن ریلز محبوب و مورد علاقهٔ اکثر برنامه نویسان روبی است که در سال ۲۰۰۵ توسط آقای یا به احتصار بنیان‌گذاری شد، به‌طور دیگر می‌توان گفت اکثر برنامه نویسان توسط ریلز به روبی کشیده شده‌اند! نام‌های «روبی» و «روبی آن ریلز» آنقدر با هم استفاده شده‌اند که برای بسیاری شاید تفاوت این دو روشن نباشد.
برنامه‌نویسی تابعی منشأ برنامه‌نویسی تابعی ریشه در تحقیقات دانشگاهی دارد و از حساب لاندا تکامل پیدا کرده است. حساب لاندا یک سیستم صوری محاسبات است که صرفاً مبتنی بر توابع می‌باشد. برنامه‌نویسی تابعی به شکل تاریخی کمتر از برنامه‌نویسی دستوری محبوب بوده است. با این حال بسیاری از زبان‌های تابع‌گرا امروزه در صنعت و آموزش دیده می‌شوند. از جمله لیسپ معمولی، اسکیم، کلوژر ، زبان برنامه‌نویسی ولفرام، راکت ، ارلنگ، اوکمل، هسکل، و F#. برنامه‌نویسی تابع‌گرا همچنین برای برخی از زبان‌های خاص‌منظوره موفق نقش کلیدی ایفا می‌کند. مانند R در آمار، J ، K و Q در آنالیز مالی، و XQuery / XSLT برای XML. زبان‌های اعلانی خاص‌منظوره مانند SQL و Lex / Yacc از برخی عناصر برنامه‌نویسی تابع‌گرا استفاده می‌کنند. مانند ممنوع کردن مقادیر قابل تغییر. همچنین بسیاری از زبان‌های برنامه‌نویسی، برنامه‌‌نویسی به سبک تابع‌گرا را پشتیبانی کرده و یا ویژگی‌های تابع‌گرایی پیاده‌سازی کرده‌اند. مانند C++11 ، کاتلین، پرل، پی‌اچ‌پی، پایتون، و اسکالا.
برنامه‌نویسی تابعی تعدادی مفهوم و رویکرد ویژهٔ برنامه‌نویسی تابع‌گرا بوده و به طور کلی برای برنامه‌نویسی دستوری (از جمله برنامه‌نویسی شیءگرا) بیگانه هستند. با این حال، زبان‌های برنامه‌نویسی اغلب از چندین الگوی برنامه‌نویسی پشتیبانی می‌کنند. بنابراین برنامه‌نویسان با استفاده از زبان های «عمدتاً دستوری» می‌توانند از برخی از این مفاهیمِ ویژهٔ تابع‌گرایی استفاده بکنند.
ادریس (زبان برنامه‌نویسی) main : IO () main = putStrLn "Hello, World!" تنها تفاوت بین این برنامه و معادل هسکل آن، علامت تک (به جای دوتایی) دو نقطه در امضای نوع تابع اصلی و حذف کلمه " codice_1 " در اعلان ماژول می‌باشد.
فکتور (زبان برنامه‌نویسی) فکتور (به انگلیسی: Factor) یک زبان برنامه‌نویسی پشته گرا است که توسط «اسلاوا پستو» ایجاد شده‌است. زبان برنامه‌نویسی Factor یک زبان پویا است و دارای مدیریت خودکار حافظه و همچنین ویژگی‌های قدرتمند «فرابرنامه‌نویسی» است. این زبان برنامه‌نویسی دارای یک پیاده‌سازی واحد است که مرکب از یک کامپایلر بهینه‌ساز خود میزبان و یک محیط توسعه تعاملی است. توزیع Factor شامل یک کتابخانه استاندارد بزرگ است.
محور نوری یک بلور ساختار داخلی بلورها (ساختار خاص شبکه کریستالی و اتم‌های خاص یا مولکول‌هایی که از آن تشکیل شده‌است)، باعث می‌شود سرعت نور در مواد و در نتیجه ضریب شکست مواد به هر دو مورد جهت انتشار و قطبش بستگی داشته باشد. وابستگی به قطبش باعث دوشکستی شدن می‌شود، که در آن دو قطبش عمود با سرعت‌های مختلف منتشر می‌شوند و در زوایای مختلف در بلور انکسار میابند. این باعث می‌شود پرتوی نور به یک پرتوی معمولی و یک پرتوی خارق‌العاده با قطبش‌های متعامد تقسیم شود. برای انتشار نور در امتداد محور نوری، سرعت به قطبش بستگی ندارد، بنابراین هیچ دوشکستی وجود ندارد اگرچه می‌تواند فعالیت نوری (چرخش صفحهٔ قطبش) وجود داشته باشد.
مخروط خاکستر مخروط‌های خاکستر شیبدار هستند و بزرگی شیب آن‌ها به عواملی همچون اندازهٔ مواد پرتابی، ارتفاع فوران مواد و سرعت باد بستگی دارد اما معمولاً تندی شیب این مخروط‌ها بیش از ۱۰ درجه است. همچنین ارتفاع این مخروط‌ها متغیر بوده و می‌توانند بین چند ده متر تا چند هزار متر ارتفاع داشته باشند.
خواص نوری مواد همچنین شدت نوری که هنوز بعد از برخورد به سطح جذب نشده‌است به صورت تابعی نمایی از عمق زیر سطح ماده و ضریب جذب کاهش می‌یابد. برای مثال تصویر زیر ضریب جذب نور آب را نشان می‌دهد جذب نور به مانند بازتابش به عواملی همچون طول موج نور و جهت تابش آن، نوع ماده (فلز، پلاستیک و …)، ترکیب شیمیای و ساختار ماده و حالت ماده و سطح آن بستگی دارد.
خواص نوری مواد غیر فلزی بزرگی n(یا ضریب شکست) بستگی به طول موج نور دارد. این اثر به وسیلهٔ جدایی اجزای رنگی سازنده پرتویی از نور سفید که به یک منشور تابانده می‌شود، نشان داده می‌شود. هر کدام از رنگ‌ها هنگامی که به منشور وارد و از آن خارج می‌شوند، به میزان متفاوتی شکست می‌خورند. ضریب شکست نه تنها بر مسیر شهودی نور اثر می‌گذارد بلکه، همانگونه که به‌طور خلاصه توضیح داده شد بر شکست نوری که در سطح منعکس می‌شود نیز تأثیر می‌گذارد. با توجه به معادله n=c/v برای سرعت نور در خلأ، می‌توان عبارت زیر را برای سرعت متوسط نور دریک محیط نوشت:
سرعت جهانی نور سرعت نور در خلأ (c) برای تمام ناظران لَخت ثابت است و به حرکت چشمهٔ نور یا حرکت ناظر بستگی ندارد.