تا پیش از انقلاب صنعتی، بسیاری از پیشرفتهای بشر در علوم و به خصوص صنعت، مرهون ماشینآلات مکانیکی بود و عملاً روشی برای ایجاد ارتباط بین زبان انسان و زبان ماشین وجود نداشت؛ اما پس از ظهور علم دیجیتال و به خصوص با توسعه کامپیوتر، امکان انتقال خواستههای انسان به زبان قابلفهم برای ماشینآلات صنعتی فراهم گردید.
البته توسعه علوم الکترونیک و ساخت مدارهای مجتمع در مقیاس کوچک هم در این مسئله دخیل بود. به این ترتیب، انسان میتوانست دستورات خود را به کمک کامپیوتر به شکل کدهای دیجیتالی قابلفهم برای ماشین درآورد و آن را کنترل کند. این آغاز راه برنامه نویسی بود و به مرور با توسعه علوم کامپیوتر، انواع مختلف زبانهای برنامه نویسی ایجاد گردید.
پایه علم برنامه نویسی، علوم ریاضی و تجربی است، به گونهای که زبانهای برنامه نویسی امکان پیادهسازی معادلات ریاضی و روابط تجربی و فیزیکی را در قالب دستورات قابلفهم برای ماشین، یعنی کامپیوتر، فراهم کردند.
به این ترتیب معادلات پیچیده ریاضی به کدهایی تبدیل گردید که برای کامپیوتر شناخته شده بود و به راحتی میتوانست عملیات محاسبات و پردازش را روی این کدها انجام دهد و در نهایت معادلات سنگین ریاضی را حل کند.
این ویژگی زبانهای برنامه نویسی باعث شد که بعدها در حوزههای مختلف صنعت و علوم کامپیوتر، زبانهای برنامه نویسی جایگاه ویژهای را برای خود کسب کنند. در این مقاله قصد داریم در مورد مفهوم برنامه نویسی، زبانهای برنامه نویسی و انواع آن و ویژگیهای هر یک توضیحاتی ارائه کنیم.
تاریخچه برنامه نویسی
بسیاری از مورخان معتقدند آدا لاولیس اولین کسی بود که در اواسط قرن نوزدهم یک برنامه کامپیوتری منتشر کرد. او ریاضیدانی بود که نوشتههای لوئیجی فدریکو را روی دستگاهی به نام موتور تحلیلی ترجمه کرد. در این ترجمه، آدا یادداشتهای گسترده خود را پیادهسازی کرده و روشی برای محاسبه اعداد برنولی برای موتور تحلیلی ایجاد ابداع نمود.
الگوریتم نویسی هم برای اولین بار در اوایل قرن نهم میلادی توسط یک ریاضیدان عرب زبان به نام Al-Kindi انجام شد. وی الگوریتم رمزنگاری خود را برای رمزگشایی کدهای یک کتاب دست نویس به کار برد.
همچنین اولین برنامه کامپیوتری به معنای برنامه محاسباتی مبتنی بر ریاضیات در سال 1843 میلادی توسعه یافت. در دهه 1880 هم هرمان هولریت مفهوم ذخیرهسازی دادهها را به شکل قابلخواندن توسط ماشین ابداع نمود.
در دهه 1920، کامپیوترهایی ساخته شدند که اولین زبانهای برنامه نویسی را دنبال کردند. در قرن بعد، همانطور که ماشینها و تکنولوژی به تکامل خود ادامه دادند، تعداد زبانهای برنامه نویسی نیز افزایش یافت.
زبانهای اولیه و سطح پایین تنها قادر بودند یک سری عملیات ساده ریاضی و منطقی را به صورت کد درآورند در حالی که زبانهای برنامه نویسی پیشرفتهتر به مرور ارائه شده و توانستند عملیات پیچیده ریاضی و معادلات دشوار منطقی را در کسری از ثانیه حل کنند.
منظور از برنامه نویسی چیست؟
به زبان ساده منظور از برنامه نویسی، یا به صورت کاملتر برنامه نویسی کامپیوتر، انجام یک سری عملیات محاسبات و پردازش با طراحی و ایجاد یک برنامه کامپیوتری قابلاجرا است. برنامه نویسی اهداف زیادی را دنبال میکند از جمله آنالیز، توسعه الگوریتمها، مصرف منابع و محاسبه و پردازش.
در برنامه نویسی، به کدهای نوشته شده کد منبع گفته میشود و این کدها ممکن است به زبانهای مختلفی نوشته شوند. با توسعه برنامه نویسی، مفاهیم دیگری در حوزههای مرتبط نیز توسعه یافت از جمله خطایابی، اشکالزدایی، نگهداری کد منبع، پیادهسازی سیستم، مدیریت منابع، یادگیری ماشینی، کامپایل کردن کدها و غیره.
سیر تکامل برنامه نویسی
در ابتدا، برنامه نویسی به کدهای ماشینی خلاصه میشد. منظور از کد ماشینی، دستورات خاصی بود که بر اساس یک الگوی ماشینی مانند الگوی باینری نوشته میشد.
زبانهای اسمبلی، پس از کدهای ماشینی، ظهور پیدا کرد. زبان اسمبلی در واقع اولین زبانی بود که در آن، برنامهنویسان دستورات را به فرمت متن مینوشتند. از جمله زبانهای اسمبلی میتوان به ADD X و TOTAL اشاره کرد.
نسل سوم زبانهای برنامه نویسی، زبانهای کامپایلر نام داشتند که به نوعی اولین زبانهای سطح بالا شناخته میشوند. این زبان برنامه نویسی، توسعه برنامهها را سادهتر کرده و همچنین درک زبان برای افراد آسانتر شد. Fortran اولین زبان برنامه نویسی سطح بالا بود که بر پایه توابع پیادهسازی میشد.
زبانهای کامپایلر به برنامهنویسان این امکان را داد که برنامه نویسی را به صورت زبان نحوی بنویسند و همچنین کدها به صورت مختصر و انتزاعی قابل پیادهسازی بودند.
بعدها در دهه 1960 میلادی، کامپیوترهای اولیه توسعه یافته و برنامهنویسان توانستند کدهای برنامه را در محیط کامپیوتر بنویسند. همچنین ویرایشگرهای متن هم امکان تغییر و اصلاح کدهای نوشته شده را به راحتی هرچهتمامتر برای برنامهنویسان فراهم کرد.
در روند توسعه زبانهای برنامه نویسی، مفهوم برنامه نویسی مدرن مطرح گردید. زبانهای مدرن برنامه نویسی دارای ویژگیهای مهمی بودند که در ادامه برخی از آنها را بیان خواهیم کرد.
- قابلیت اطمینان: مفهوم قابلیت اطمینان، میزان صحت و درستی نتایج یک برنامه را مشخص میکند. این معیار، به اعتبار محاسبات و صحت الگوریتمها و در عین حال حداقل سازی خطاها و اشتباهات برنامه نویسی بستگی دارد.
- خطاپذیری: مفهوم دیگری که در برنامه نویسی مدرن مطرح شد، خطاپذیری بود. منظور از این مفهوم، پیشبینی مشکلات ناشی از خطا در زبان برنامه نویسی بود.
خطاهای مرسوم در یک زبان برنامه نویسی عبارتاند از کدهای نادرست، داده نامناسب، عدمکفایت و یا عدم دسترسی به منابع نظیر حافظه، سرویسهای سیستم عامل، ارتباطات شبکه، خطاهای کاربر و قطع پیشبینی نشده برق.
- قابلیت استفاده: الگوهای برنامه نویسی قدیمی تنها برای هدف خاصی ایجاد میشد، در حالی که در برنامه نویسی مدرن، یک برنامه نوشته شده را میتوان برای اهداف مختلف به کار برد. به همین خاطر طیف وسیعی از حروف و متون، تصاویر گرافیکی و گاهی المانهای سختافزاری توسط برنامهنویس استفاده میشود.
- قابلیت حمل: منظور از قابلیت حمل، امکان انتقال سختافزارهای کامپیوتری و سیستمهای عامل است که کد منبع برنامه را بتوان روی آنها اجرا و یا کامپایل کرد. این قابلیت به تجهیزات سختافزاری مختلفی بستگی دارد که در اختیار برنامهنویس قرار میگیرد.
- قابلیت اصلاح: مشخصه مهم دیگری که برای زبانهای برنامه نویسی مدرن مطرح شد، قابلیت اصلاح است. از این نظر، هر برنامه نوشته شده را میتوان در هر زمان و توسط هر توسعهدهندهای اصلاح و یا تغییر داد. مفهوم سفارشیسازی برنامهها از این زمان مطرح گردید.
- عملکرد یا اثربخشی: منظور از اثربخشی، مقایسه نتایج یک برنامه با میزان منابع مورد استفاده آن است. مثلاً زمان پردازش، حجم حافظه، تجهیزات سختافزاری، پهنای باند شبکه و غیره، فاکتورهایی هستند که در بررسی اثربخشی یک برنامه مدنظر قرار میگیرند.
- قابلیت خواندن: ویژگی مهم دیگر برنامه نویسی مدرن، سادگی خواندن کدهای برنامه برای انسان و کنترل کد منبع آن است. قابلیت خواندن از این جهت دارای اهمیت است که برنامهنویسان بخش زیادی از زمان خود را صرف خواندن، تفسیر و اصلاح کدهای منبع موجود میکنند، در حالی که میتوانند همین زمان را صرف نوشتن کدهای جدید کنند.
مراحل برنامه نویسی
الگوریتم نویسی به عنوان اولین مرحله از برنامه نویسی شناخته میشود. الگوریتم نویسی به عنوان یکی از شاخههای علوم دانشگاهی و مهندسی کامپیوتر شناخته میشود و در این شاخه، برای مسائل مختلف الگوریتمهای حل مسئله به روشهای گوناگون نوشته میشود.
فاکتورهای مختلفی در دستهبندی الگوریتمها به کار میرود به عنوان مثال، زمان اجرا و یا میزان مصرف حافظه، اندازه و تعداد ورودیهای مورد نیاز و غیره. برنامهنویسان خبره معمولاً با انواع مختلف الگوریتمها آشنایی دارند.
مرحله دوم در پروسه برنامه نویسی، تحلیل و آنالیز پیشنیازهاست. در این مرحله، مدلسازی اولیه، پیادهسازی مدل و شناسایی خطاهای احتمالی صورت میگیرد. روشهای مختلفی برای هر یک از اهداف فوق وجود دارد. یکی از روشهای مرسوم برای تحلیل پیشنیازها، آنالیز مورد استفاده یا Use Case است.
همچنین روشهای مختلف مدلسازی شامل آنالیز و طراحی شیءگرا (OOAD) و یا روش ساختار مدل محور (MDA) وجود دارد که توسط برنامهنویسان استفاده میشود. در مرحله پیادهسازی هم زبانهای مختلفی از نظر کلی نظیر زبانهای عملیاتی یا زبانهای منطقی مورد استفاده برنامهنویسان قرار میگیرد.
مرحله سوم، انتخاب زبان برنامه نویسی است. طیف بسیار گستردهای از زبانهای برنامه نویسی مختلف برای اهداف گوناگون توسعه یافته است. بسته به کاربرد و منابع دادهای که در اختیار دارید میتوانید از زبانهای مختلف استفاده کنید.
البته همه زبانهای برنامه نویسی دارای مزایا و محدودیتهایی هستند که بر اساس اولویت برنامهنویس تعیین میشوند. مثلاً برخی از زبانها ساختار سادهای دارند اما عیبیابی و اشکالزدایی در آنها سختتر است. برخی از زبانها قابلیت توسعه دارند در حالی که برخی دیگر از منابع کتابخانهای محدودتری برخوردار هستند.
مرحله چهارم در فرآیند برنامه نویسی، اشکالزدایی است. این مرحله پس از انتخاب زبان برنامه و پیادهسازی کدهای برنامه بر اساس زبان مورد نظر، اجرا میشود. اشکالزدایی از اهمیت بالایی برخوردار است به این خاطر که پیش از توسعه برنامه و یا استفاده عملیاتی از آن، اشکالات احتمالی را شناسایی کرده و از بروز تبعات آن جلوگیری میکند.
دستهبندی زبانهای برنامه نویسی
بالغ بر 5000 زبان برنامه نویسی مختلف در حوزههای گوناگون صنعتی و علوم کامپیوتر توسعه یافته است. از یک دستهبندی کلی، همه زبانهای برنامه نویسی به چهار گروه تقسیم میشوند:
- زبانهای تحت ویندوز
- زبانهای تحت وب
- زبانهای اپلیکیشن
- زبانهای چندمنظوره
زبانهای برنامه نویسی تحت ویندوز همانطور که از نام آنها مشخص است، زبانهایی هستند که در محیط کامپیوتر و برای توسعه برنامهها و اپلیکیشنهای مختلف در محیط ویندوز توسعه یافتهاند. از این زبانهای برنامه نویسی برای طراحی، ساخت، پیادهسازی و اجرای نرمافزارها استفاده میشود. از جمله رایجترین زبانهای تحت ویندوز میتوان به سی شارپ، C++، پایتون و جاوا اشاره کرد.
زبانهای برنامه نویسی تحت وب برای توسعه صفحات وب استفاده میشود. اینترنت یک محیط جذاب با امکانات فوقالعاده است که از تحقیق و پژوهش تا کسبوکار و تجارت را پوشش میدهد. از زبانهای تحت وب برای توسعه وب اپها و یا وبسایتهای مختلف استفاده میشود. HTML، جاوا اسکریپت، پایتون و PHP مرسومترین زبانهای برنامه نویسی وب هستند که توسط توسعهدهندگان استفاده میشوند.
زبانهای اپلیکیشن به صورت خاص برای طراحی و ایجاد اپهای موبایل استفاده میشوند. در دنیای امروز، بسیاری از عملیات روزانه شهروندان، از انجام امور بانکی و رزرو بلیط گرفته تا خرید مایحتاج روزانه، به کمک اپهای موبایل صورت میگیرد.
زبانهای برنامه نویسی اپلیکیشن به توسعهدهندگان کمک میکند که اپهای مختلف را برای پلتفرمها و همچنین سیستمهای عامل موبایل طراحی کنند. جاوا، جاوا اسکریپت، سی شارپ و پایتون شاید مرسومترین و پرطرفدارترین زبانهای برنامه نویسی اپلیکیشن باشند.
زبانهای چندمنظوره دسته آخر زبانهای برنامه نویسی هستند که متناسب با نامشان، برای اهداف مختلف استفاده میشوند. این زبانها دارای ویژگی چند پلتفرمی هستند و اغلب آنها از نوع متن باز هستند، بنابراین کد منبع آنها به راحتی قابلدسترس و تغییر برای پلتفرمهای مختلف است. زبانهای C++، جاوا اسکریپت، پایتون و سی شارپ عموماً به عنوان زبانهای چندمنظوره شناخته میشوند و کاربردهای متعددی دارند.
مهارتهای لازم برای یک برنامهنویس
یک برنامهنویس حرفهای قابلیتها و در عین حال مسئولیتهای مختلفی دارد که برای طراحی و ایجاد یک برنامه کامپیوتری ضروری هستند. مهمترین مهارتها و ویژگیهای یک برنامهنویس عبارتاند از:
- شناخت کدهای دستوری و آشنایی با الگوریتمها
- توانایی نوشتن کدهای صریح و ساده
- قابلیت حل مسئله
- توانایی تست، آنالیز، عیبیابی و اشکالزدایی دستورات و برنامهها
- مهارتهای برقراری ارتباط مؤثر
- قابلیت کار گروهی
- صبر و پیگیری
برنامهنویسان موفق، علاوه بر ویژگیهای فنی و علمی که در زمینه برنامه نویسی و شناخت الگوریتمهای حل مسئله دارند، باید از نظر ویژگیهای رفتاری و مهارتهای مدیریتی نیز افراد شاخصی باشند. ترکیب این مهارتهای رفتاری یا ویژگیهای فنی و علمی، موفقیت یک برنامهنویس را تضمین خواهد کرد.
جمعبندی
در این مقاله به طور کامل بررسی کردیم که برنامه نویسی چیست و چطور به انسان کمک میکند. بهطور خلاصه میتوان گفت برنامه نویسی از زمانهای بسیار دور مرسوم بوده است. اگر برنامه نویسی را از یک دیدگاه ساده، توانایی حل مسئله بدانیم، بسیاری از دانشمندان و مخترعین کلاسیک در حوزههای علوم تجربی، به نوعی برنامهنویس بودند.
اما با ظهور علوم کامپیوتر، برنامه نویسی به مفهوم امروزی توسعه یافت و زبانهای ماشینی برای ایجاد ارتباط میان انسان و ماشین ظهور پیدا کرد. علم برنامه نویسی شاید مهمترین دستاورد در قرن بیستم به شمار میرود و امروزه پیشرفت در هر حوزهای از صنعت مرهون علم برنامه نویسی است.