زبان های برنامه نویسی، نشانه گذاری و فریمورک ها
برای درک بهتر مفهوم برنامه نویسی، پیشنهاد میکنم اول مقاله برنامه نویسی چیست؟ را مطالعه کنید تا با برنامه نویسی، تاریخچه و دلیل گسترش آن آشنایی کافی را پیدا کنید. بعد از میتوانید برای آشنایی بیشتر با زبان های برنامه نویسی، دوباره به این مقاله مراجعه کنید.
زبان های نشانه گذاری (Markup Languages)
زبان های نشانه گذاری، در واقع باعث ایجاد تمایز بین متن ساده و یک متن قابل درک برای کامپیوتر ها هستند. زبان های نشانه گذاری قالب یک متن را ایجاد میکنند و به کامپیوتر و بعضا به انسان روش خواندن آنها را دیکته میکنند. به عنوان مثال با اچ تی ام ال نحوه خواندن متون داحل یک سند، به مرورگر دیکته میشود.
اچ تی ام ال – HTML
اچ تی ام ال یا زبان نشانه گذاری ابر متن (HyperText Markup Language) زبان نشانه گذاری استاندارد برای نمایش سند ها و صفحاتی است که در مرورگر ها نمایش داده میشوند. صفحات و سند هایی که توسط این زبان، نشانه گذاری شدند میتوانند با تکنولوژی هایی مانند CSS (Cascading Style Sheets) و زبان های اسکریپتی مانند JavaScript طراحی و دیزاین شوند.
مرورگر ها فایل های HTML، CSS و JavaScript را از وب سرور یا فضای ذخیره سازی داخلی دریافت میکنند و آن اسناد را به صورت یک صفحه مولتی مدیا وب ارائه میکنند. این زبان نشانه گذاری، قالب صفحات وب را تولید میکند. اگر یک صفحه وب را به بدن انسان تشبیه کنیم، HTML استخوان های بدن است.
اکس ام ال – XML
زبان نشانه گذاری گسترش پذیر یا Extensible Markup Language یک نوع زبان نشانه گذاری است که با یک سری قوانین، یک سند را نشانه گذاری (کد بندی) میکند که هم برای انسان و هم برای کامپیوتر قابل خواندن باشد. این زبان امروزه تقریبا در تمام وب و تمام تکنولوژی های موجود بر روی کامپیوتر ها استفاده میشود و کارایی دارد.
زبان های برنامه نویسی
زبان های برنامه نویسی، در واقع قانون ها و ساختار هایی برای آموزش دادن به کامپیوتر ها هستند. درست است که اکثر زبان ها از چند پایه و اساس یکسان برای توسعه برنامه های خود استفاده میکنند، اما هر زبان روش خود را برای نوشتن و آموزش آن برنامه ها به کامپیوتر دارد.
بعضی زبان ها مثل HTML، XML و CSS از زبان های برنامه نویسی نیستند و در واقغ زبان هایی برای کار های دیگر هستند اما در جامعه از آنها به عنوان زبان برنامه نویسی یاد می شود.
جاوا اسکریپت – JavaScript
جاوا اسکریپت یا به اختصار JS از زبان های برنامه نویسی اسکریپتی سطح بالا است که به همراه HTML و CSS کل دنیای وب را تسخیر کرده و همه ی وب از این تکنولوژی ها بهره میبرد. در وب، جاوا اسکریپت، نحوه رفتار وب در سمت کاربر را توصیف و برنامه نویسی میکند.
فریمورک های این زبان: ویو
پی اچ پی – PHP
از زبان های برنامه نویسی عمومی و سطح بالا است که بیشتر، برای برنامه نویسی سمت سرور وبسایت ها استفاده می شود. کد پی اچ پی معمولا در سمت سرور توسط یک مفسر که به عنوان یک افزونه (Module) یا یک دیمون (daemon) یا به عنوان یک CGI که قابل اجرا است، پردازش می شود.
تعدادی از وبسایت هایی که از PHP استفاده میکنند شامل: Facebook, WordPress, Wikipedia, Mailchimp, Slack
سی – C
C از زبان های برنامه نویسی عمومی سطح پایین است که در اوایل دهه 70 میلادی ساخته شد و از آن زمان تا به حال کاربرد خود را در صنعت برنامه نویسی، به گستردگی حفظ کرده است. بر اساس طراحی، زبان سی قابلیت بازتاب توانایی های CPU مد نظر را دارا بود.
زبان سی استفاده ماندگار خود را در برنامه نویسی سیستم های عامل، درایور دیوایس(دستگاه) و پشته شبکه پیدا کرده است اما استفاده این زبان در ساخت نرم افزار رفته رفته در حال کاهش است.
سی پلاس پلاس – C++
سی پلاس پلاس از زبان های برنامه نویسی سطح بالا می باشد که توسط Bjarne Stroustrup دانشمند علوم کامپیوتر، به عنوان یک گسترش – افزونه (Extension) از زبان سی ساخته شد. این زبان با گذر زمان بسیار گسترش داده شد و در زمان حال، سی پلاس پلاس، یک زبان شئ گرا، جنریک و با قابلیت های کاربردی به همراه قابلیت دستکاری سطح پایین حافظه است.
C++ با هدف سرعت، راندمان بالا و انعطاف پذیری، برای ساخت سیستم های بزرگ و پر سرعت و با منابع محدود ساخته شد. این زبان در حوزه های دیگر هم کاربرد خود را پیدا کرده است که میتوان به بازی سازی، نرم افزار های دسکتاپ و سرور ها اشاره کرد.
سی شارپ – C#
زبان سی شارپ، از زبان های برنامه نویسی چند الگویی و منظم شده مدلهای تابعی، امری، عمومی، شیءگرا و جز گرا و در بستر دات نت میباشد. این زبان توسط مایکروسافت و جزئی از دات نت به وجود آمد و بعداً استانداردهای ECMA و ISO را نیز دربر گرفت.
زبان سی شارپ با قدرت و در عین حال سطح بالای خود توانسته توجه بسیاری از برنامه نویسان را به خود جلب کند. این زبان برپایه سادگی، مدرن بودن، همه منظوره و شیءگرا بودن ساخته شد. این زبان دارای دستوری شیءگرا مشابه C++ است و به شدت از زبانهای جاوا و دلفی تأثیر پذیرفتهاست.
جاوا – Java
جاوا از زبان های برنامه نویسی عمومی، سطح بالا، شئ گرا و بر پایه کلاس است که با هدف اجرا روی هر سیستم الکترونیکی با کمترین پیاده سازی ممکن روی آن سیستم ساخته شده است. شعار جاوا “یکبار بنویس و همه جا اجرا کن” هست. زبان جاوا شبیه به سیپلاسپلاس است؛ اما مدل شیءگرایی آسانتری دارد و از قابلیتهای سطح پایین کمتری پشتیبانی میکند.
برنامههای جاوا بهصورت بایت کد میشوند و توسط ماشین مجازی جاوا (JVM) به کدهای ماشین تبدیل و اجرا میشوند. جاوا مدیریت حافظه را بر خلاف سی و سی پلاس پلاس به صورت خودکار انجام میدهد. و مثلا نیازی به آزاد سازی حافظه به صورت دستی نیست.
پایتون – Python
پایتون یک زبان برنامه نویسی عمومی، مولتی پارادایم، شئ گرا و سطح بالا است که با هدف ساده تر کردن خواندن کد برای انسان ساخته شده است. نوع متغیر ها در پایتون به صورت پویا و خودکار توسط این زبان تشخیص داده میشود و نیازی به تایین نوع آنها نیست. پایتون مانند جاوا از سیستم جمع کننده آشغال (garbage-collected) استفاده میکند.
این زبان به شدت به دلیل سادگی و زیاد بودن تعداد کتابخانه ها فریم ورک ها، تقریبا در همه ی حوزه های برنامه نویسی کاربرد دارد. از مهم ترین کاربرد های در هوش مصنوعی و علم داده و وب می باشد. پایتون یکی از محبوب ترین زبان های برنامه نویسی دنیا است.
کاتلین – Kotlin
کاتلین از زبان های برنامه نویسی عمومی، کراس پلتفرم (مثل جاوا روی تمام پلتفرم ها، در صورت وجود JVM یا ماشین مجازی جاوا اجرا میشود) با قابلیت تشخیص تایپ است. کاتلین بیشتر ماشین مجازی جاوا را مورد هدف قرار میدهد اما میتواند به کد جاوا اسکریپت نیز کامپایل شود.
در سال 2019، گوگل کاتلین را زبان اصلی برای توسعه اپلیکیشن های اندروید، اعلام کرد. بعد از انتشار نسخه 3 اندروید استودیو، کاتلین به عنوان یک جایگزین برای کامپایلر استاندارد جاوا اضافه شد. کاتلین با کامپایل به جاوا اسکریپت میتواند در وب نیز استفاده شود.
آبجکتیو سی – Objective C
آبجکتیو-سی از زبان های برنامه نویسی عمومی و شئ گرا است که با اضافه کردن قابلیت های ارسال پیام از زبان اسمال تاک به سی، ساخته شد. این زبان در اصل برای سیستم عامل NeXTSTEP توسعه داده شد. به دلیل اینکه مک او اس ( سیستم عامل اپل ) به صورت مستقیم از این سیستم عامل خط گرفته است، این زبان به عنوان زبان استاندارد توسعه نرم افزار های مک او اس و ای او اس تبلیغ و پشتیبانی شد.
سوییفت – Swift
سوییفت یک زبان برنامه نویسی عمومی، شئ گرا و مولتی پارادایم است که توسط شرکت اپل و جامعه متن باز توسعه داده شده است. سوییفت در سال 2014 به عنوان جایگزین زبان اصلی این شرکت، objective-c، به دلیل اینکه زبان آبجکتیو-سی از سال 1980 توسعه خیلی کمی داشت، تغییر زیادی نکرده بود و قابلیت های زبان مدرن را نداشت، معرفی شد.
این زبان معمولا مثل آبجکتیو-سی برای توسعه نرم افزار سیستم عامل های ای او اس و مک او اس می باشد.
روبی – Ruby
یک از زبان های برنامه نویسی عمومی، شئ گرا، مولتی پارادایم و سطح بالا است. این زبان با هدف بهره وری بالا و سادگی ساخته شده است. در روبی، همه چیز یک شئ هست حتی نوع داده های اولیه (primitive data types) روبی در اواسط دهه 90 میلادی در ژاپن ساخته شد.
زبان برنامه نویسی روبی، بیشتر برای ساخت اپلیکیشن های تحت وب، کراولر ها و پردازنده های داده استفاده می شود.
اس کیو ال – SQL
SQL یک از زبان های برنامه نویسی با کاربرد خاص است که بیشتر برای مدیریت داده های نگه داری شده در سیستم مدیریت داده رابطه ای یا برای پردازشهای جریانی در سیستم مدیریت جریان داده رابطهای (RDSMS) طراحی شدهاست. این زبان به اختصاص برای پردازش و کنترل داده های قالب بندی شده مناسب است.
راست – Rust
طبق نوشته های سایت این زبان برنامه نویسی، راست به شدت سریع و بهینه در استفاده از حافظه، بدون گاربج کالکتور و رانتایم میباشد. میتواند به سرویس هایی با نیاز به کارایی سریع و زیاد، قدرت بدهد و روی دستگاه های تعبیه شده روی بقیه دستگاه ها اجرا شود و میتواند به راحتی با بقیه زبان ها ادقام شود.
سیستم قدرتمند ایمنی نوع متغیر ها در راست، ایمنی حافظه را گارانتی میکند و به شما قدرت از بین بردن بسیاری از کلاس های باگ در زمان کامپیال را میدهد.
دارت – Dart
دارت یک زبان برنامه نویسی بهینه شده برای کاربران است که با آن برای هر پلتفرمی میتوان برنامه ساخت. ماشین مجازی دارت با قابلیت Hot reload تغییرات شما در کد را بصورت لحظه ای بر روی اپلیکیشن در حال اجرا نمایش میدهد. زبان دارت برای ساخت رابط کاربری بهینه شده است و روی همه پلتفرم ها سرعت بالایی دارد.
دارت بر پایه کلاس، شئ گرا، با گاربج کالکتور و سینتکس شبیه به زبان سی است و میتواند به کد ماشین و جاوا اسکریپت کامپایل شود
int fib(int n) => (n > 2) ? (fib(n - 1) + fib(n - 2)) : 1; // A Fibonacci function implementation with a conditional operator in Dart // This code is read as: // given an integer n, // if n > 2, return fib(n - 1) + fib(n - 2); // otherwise, return the integer 1 as result void main() { print('fib(20) = ${fib(20)}'); } //From Wikipedia
زبان های دیگر
در این بخش، زبان های دیگری که عضو بخش های قبل نبودند، توضیح داده شده است
سی اس اس – CSS
Cascading Style Sheets یا CSS یک برگه تشکیل شده از اطلاعات چگونگی نمایش متون نشانه گذاری شده با یک زبان نشانه گذاری مانند HTML یا XML است. با CSS میتوان فونت، رنگ، سایز، و هر چیز ظاهری دیگری مربوط به این متون را مشخص کرد.
فریم ورک های برنامه نویسی
فریم ورک یک قالب آماده شده برای توسعه و ساخت اپلیکیشن و برنامه در یک یا چند حوزه مختلف میباشند و برای تسریع در فرایند ساخت اپلیکیشن ها ساخته شدند. فریم ورک ها معمولا از یک زبان خاص استفاده میکنند یا برای آن زبان خاص ساخته شدند که آن زبان را به بهترین نحوه مورد (قابل بحث) استفاده قرار دادند.
معمولا استفاده از این قالب های آماده، باعث افزایش کارایی، سرعت و امنیت آن اپلیکیشن میشود اما اگر فردی توانایی تولید کد اختصاصی خود با قابلیت های ذکر شده را دارا باشد، میتواند با آن کد اختصاصی بهتر از این فریم ورک ها در بخش مربوطه عمل کند و بهره وری کد را افزایش دهد.
در پایین، ما تعدادی از فریم ورک های معروف از زبان های برنامه نویسی را به شما معرفی کردیم و همچنین زبان مربوط به آنها نیز در آخرین خط بخش مربوط به همان فریم ورک نوشته شده است. برای استفاده از این فریم ورک ها، پیشنهاد میشود که زبان برنامه نویسی مربوطه را فرا بگیرید و سپس به سراغ یادگیری آن فریم ورک بروید.
جنگو – Django
جنگو یک فریم ورک رایگان و متن باز بر پایه زبان پایتون است که ساختار معماری MTV(Model-Template-Views) را دنبال میکند. جنگو یک وب فریم ورک است و برای توسعه اپلیکیشن های تحت وب ساخته شده است.
هدف جنگو ساده کردن توسعه وبسایت هایی است که خیلی به پایگاه داده خود نیاز دارند و از آن استفاده فراوان میکنند و پایگاه داده آنها پیچیدگی دارد (Database Driven Websites). این فریم ورک خیلی به استفاده مجدد از کد های نوشته شده قبلی تاکید میکند که نیازی به نوشتن مجدد کد نباشد.
از بین زبان های برنامه نویسی، این فریم ورک با زبان پایتون کار میکند.
لاراول – Laravel
لاراول یک فریم ورک رایگان، متن باز از زبان برنامه نویسی PHP است. این فریم ورک برای ساخت اپلیکیشن های تحت وب و وبسایت ها با ساختار معماری MVC یا همان Model-View-controller بر اساس فریم ورک symfony که قبل تر برای این زبان ساخته شده بود، توسعه داده شد.
از لاراول به عنوان قدرتمند ترین فریم ورک و فریم ورک اصلی زبان پی اچ پی یاد میشود.
روبی آن ریلز – Ruby on Rails
روبی آن ریلز یا به اختصار ،ریلز ، یک فریم ورک متن باز است که با زبان برنامه نویسی روبی، برای توسعه اپلیکیشن های سمت سرور تحت وب و زیر نظر گواهینامه ام ای تی ساخته شده است. ریلز یک فریم ورک بر اساس ساختار معماری MVC یا همان Model-View-Controller میباشد و ساختار پیش فرضی را برای توسعه پایگاه داده، وب سرویس و وب اپلیکیشن ارائه میدهد.
ریلز یکی از بهترین فریم ورک ها برای توسعه وب میباشد که از بین زبان های برنامه نویسی، با روبی میتوان به وسیله آن کد نویسی کرد.
ویو دات جی اس – Vue.js
این فریم ورک با نام کوتاه شده “ویو” یک فریم ورک متن باز برای توسعه فرانت-اند با جاوا اسکریپت میباشد که از ساختار معماری Model–View–ViewModel استفاده میکند. ویو برای ساخت UI (User Interface) و اپلیکیشن های تک صفحه ای توسعه داده شد.
دات نت – .NET
دات نت فریمورک برای توسعه نرم افزار روی ویندوز به عنوان افزونه غالب زیرساخت زبان مشترک (CLI) توسعه پیدا کرد. مایکروسافت چندی بعد این فریمورک را با پروژه دات نت جایگزین کرد. اسم آن به هسته دات نت (NET Core.) و کاربری آن را به یک فریمورک متن باز کراس پلتفرم تغییر و ارتقا داد.
در حال حاضر این فریمورک میتواند اپلیکیشن های موبایل با NET MAUI، اپلیکیشن های تحت وب با ASP.NET که زیرمجموعه ای از دات نت است را به همراه کاربرد اصلی خود که توسعه اپلیکیشن های دستکتاب بود تولید کند.
این فریمورک از زبان های F-Sharp، C-Sharp و Visual Basic پشتیبانی میکند.
ای اس پی دات نت – ASP.NET
ASP.NET یک فریم ورک متن باز برای توسعه وب اپلیکیشن های سمت سرور می باشد که هدف آن ساخت و توسعه صفحات وب پویا و زنده می باشد. این فریم ورک توسط مایکروسافت برای ساخت وبسایت ها، اپلیکیشن ها و سرویس های پویا توسعه داده شد.
بعد از آن مایکروسافت ASP.NET Core که یک فریم ورک متن باز و رایگان، برای توسعه وبسایت ها میباشد را توسعه داد که جانشین یا وارث ASP.NET شد. این فریم ورک، کراس پلتفرم و پایه-ابری (Cloud-Based) میباشد.
از بین زبان های برنامه نویسی، C# زبان پیشنهادی برای استفاده از این فریم ورک میباشد.
زامارین – Xamarin
بر اساس نوشته های مایکروسافت که توسعه دهنده اصلی این فریمورک است، زامازین کتابخانه ها و ابزار های مخصوص برای ساخت اپلیکیشن های اندروید، ای او اس، تیوی او اس، واچ او اس، مک او اس و ویندوز را به بستر دات نت اضافه میکند.
زامارین توسط استک اورفلو، به عنوان یکی از 10 فریمورک برتر برای ساخت اپلیکیشن های موبایل معرفی شد. زامارین بخش های گسترده برای توسعه اپلیکیشن های مختلف دارد و برای اطلاعات کامل از این فریمورک پیشنهاد میکنم مستندات خود مایکروسافت و ویکی پدیا را مطالعه کنید.
زامارین در حال حاضر برای توسعه اپلیکیشن هایی با پایه کد سی شارپ و رابط کاربری های مشترک بین پلتفرم های مختلف مانند ویندوز، مک او اس، اندروید و ای او اس، استفاده میشود.
الکترون دات جی اس – Electron.js
با فریمورک الکترون دات جی اس اپلیکیشن های کراس پلتفرم را با زبان های برنامه نویسی اچ تی ام ال، سی اس اس و جاوا اسکریپت بسازید. الکترون دات جی اس میتواند اپلیکیشن های دسکتاپ برای سیستم عامل های مک او اس، ویندوز و لینوکس را تولید کند.
کسانی که در حوزه وب فعالیت میکنند میتوانند به دلیل آشنایی قبلیشان با این سه زبان، به راحتی اپلیکیشن های دسکتاپ توسعه دهند. الکترون دات جی اس همچنین از ای پی ای های رابط کاربری مخصوص سیستم عامل های نام برده شده نیز پشتیبانی میکند یعنی شما میتوانید رابط کاربری های بومی را برای آن سیستم عامل ها توسعه دهید.
این فریمورک قابلیت ارسال اتوماتیک آپدیت های منتشر شده در هنگام منتشر شدن نسخه جدید از اپلیکیشن، تولید نصب کننده اپلیکیشن برای سیستم عامل های ذکر شده، پشتیبانی از انتشار اپلیکیشن ها در فروشگاه مخصوص سیستم عامل ها و گزارش کرش کردن برنامه را نیز دارد.
فلاتر – Flutter
فلاتر فریمورک متن باز گوگل برای ساخت اپلیکیشن های زیبا و کامپایل شده بومی از یک پایه کد (codebase)، است. فلاتر از زبان دارت استفاده میکند. فلاتر میتواند با یک کد یعنی با یک پایه برای اپلیکیشن، آن را برای دسکتاپ، موبایل و وب کامپایل کند.
کد های فلاتر به ARM یا کد ماشین و یا جاوا اسکریپت، برای اجرای سریع روی هر دیوایسی کامپایل میشود. فلاتر دارای قابلیت هات ریلود را داراست و به شما اجازه ساخت رابط کاربری های زیبایی را میدهد.