
- 1. الگوریتم و فلوچارت
- 2. زبان برنامه نویسی
- 3. زبان های سطح پایین
- 4. زبان های سطح متوسط
- 5. زبان های سطح بالا
- 6. محیط توسعه یکپارچه (IDE) / محیط های برنامه نویسی
- 7. سیستم عامل (Operating System)
- 8. فریم ورک (Framework)
- 9. هوش مصنوعی (Artificial intelligence) / یادگیری ماشین (Machine learning)
- 10. گیت / Git - شبکه برنامه نویسی
- 11. برنامه نویسی بک اِند (BackEnd)
- 12. برنامه نویسی فرانت اِند (FrontEnd)
- 13. سخن پایانی
برنامه نویسی یکی از شغلهای بسیار شگفت انگیر و جالب است که دنیای تو در تو و هیجان انگیزی دارد. برای تبدیل شدن به یک برنامه نویس خوب باید با اصطلاحات برنامه نویسی آشنا شوید و هر کدام را در جای خود استفاده کنید. اگر به صورت اصولی برنامه نویسی را شروع کنید میتوانید در این زمینه موفق شوید. در این مقاله قصد داریم تا علاوه بر این که شما را با اصطلاحات مهم برنامه نویسی آشنا کنیم، یک راهنمای کوتاه هم برای شروع برنامه نویسی داشته باشیم تا بتوانید به کمک این راهنما راه درست را در دنیای برنامه نویسی انتخاب کنید. در ادامه شما را با شیوههای کد نویسی و انواع زبانهای برنامه نویسی نیز آشنا میکنیم.
الگوریتم و فلوچارت
الگوریتم اولین اصطلاح مهم در برنامه نویسی است. الگوریتم نقشه و استراتژی از پیش تعیین شده برای نوشتن کدهاست. به این معنی که قرار است برنامه چه کاری انجام دهد و پردازشها چگونه پیش برود. الگوریتم و فلوچارت در واقع نمونه طراحی شده بر روی کاغذ است که نحوه استفاده از کدها را به شما میدهد. الگوریتم نویسی خود یک بخش مهم از برنامه نویسی است که ممکن است در حجم پردازشها نیز تأثیر داشته باشد؛ برای مثال ممکن است یک برنامه کاری را با سرعت پایین انجام دهد و یک برنامه دیگر همان کار را با سرعت بسیار بالایی انجام دهد و این به خاطر ساختار استراتژی از پیش تعریف شده در الگوریتم است. در خود الگوریتم اصطلاحات دیگری هم وجود دارد که دانستن آنها مهم است :
شروع / Start : این بخش در برنامه نویسی و مخصوصاً در زبانهایی مانند C ، JAVA و Flutter با تابع main شروع میشود. در واقع این تابع اولین تابعی است که کامپیوتر به دنبال آن است. البته در برخی زبانها از توابع دیگر استفاده میشود ولی قانون کلی این است که باید یک تابع و کد به عنوان نماد شروع برنامه وجود داشته باشد.
ورودی / Input : به معنای ورود اطلاعات برای پردازش است. این ورودی میتواند فیلدها و منو های آبشاری در فرمها باشد، و یا سنسورها و ورودیهای سخت افزاری که کامپیوتر و یا گوشی هوشمند وصل هستند.
پردازش / Process : در این بخش از برنامه ورودیها به کمک توابع ریاضی و رشتهها، پردازش میشوند.
تصمیم گیری Decision : در این بخش پس از پردازش دادهها، نتایج با توجه به موقعیت برنامه، مورد بررسی قرار میگیرند که در همه زبانها با کلمه رزرو شده if انجام میشود. البته تصمیم گیری مدلهای مختلف دیگری هم دارد که با کلمه رزرو شده While و Switch انجام میشود.
خروجی / Output : زمانی که پردازش انجام شد، خروجی آن نمایش داده میشود. البته خروجی مدلهای مختلفی دارد، ممکن است خروجی برنامه ایجاد صدا از اسپیکر باشد و یا از ابزار های دیگر مانند ویبره گوشی و یا سخت افزار دیگر باشد.
البته خروجی همیشه هم مستقیم نیست. برای مثال ممکن است خروجی چندین بار دیگر هم به عنوان وروردی جدید مورد پردازش قرار گیرد.
پایان / End : این بخش در برنامه نویسی معمولاً پایان پردازش است که در زبانهای برنامه نویسی با باز و بسته کردن گیومه انجام میشود. البته با کلمه رزرو شده Break میتوان برنامه را در هر کجا که لازم بود پایان داد. این کلمه بیشتر در بخشهای شرطی به کار میرود.
زبان برنامه نویسی
در ابتدا کامپیوترها بر اساس عملهای ریاضی ثابت کار میکردند. یعنی خبری از برنامه ریزی در آنها نبود و کاربرد آنها بسیار سطحی بود. اما با این حال شرکتهای توسعه فناوری روی همین پردازشهای ساده سرمایه گذاری کردند؛ یعنی در ابتدا کامپیوتر فقط قادر بود تا دو عمل جمع و منها را انجام دهد و بعد کم کم به آن ضرب و تقسیم نیز اضافه شد. سپس با تلاشهای فراوان و کنترل مدارهای الکترونیکی توانستند به یک سوئیچ کنترلگر برسند و اولین زبانهای برنامه نویسی اختراع شد. این سوئیچها تنها از ورودیهای 0 و 1 تبعیت میکردند و این زبان مستقیم کامپیوترها است که به آن زبان ماشین هم گفته میشود. بعدها سر راه این مدارها مترجم هگزا دسیمال طراحی شد که باعث پیشرفتهتر شدن کدهای برنامه نویسی شد. سپس قوانین رشتههای متنی به آن افزوده شد و اولین قدمها برای برنامه ریزی کامپیوترها برداشته شد و مفسرها و مترجمهای کد نویسی اختراع شدند. از این رو برنامه ریزی مدارهای کامپیوتری که قبلاً با سوئیچ کردن هزاران کلید انجام میشد، تبدیل شد به برنامه نویسی با رشتههای حروف و این یعنی یک سطح بالاتر از زبان ماشین بود و با پیشرفت قوانین کد نویسی، این زبانها برای درک انسان آسانتر میشدند.
زبان اسمبلی که بیشتر آن از اعداد و ارقام پردازشی تشکیل شده، یک زبان سطح پایین و نزدیک به ماشین شناخته میشود، حتی با این که یک سطح از زبان 0 و 1 ماشین بالاتر است. پس از آن زبانهای سطح متوسط و بالا بر روی زبانهای سطح پایین ایجاد شدند. یعنی به کمک زبان اسمبلی، زبانهایی مثل C به وجود آمدند که برای انسان قابل درک بودند. با این حال بخشی از این زبانها هم با زبانهای سطح پایین اسمبلی ترکیب بود ولی هنوز قابلیت درک بالاتری داشت. سپس زبانهای سطح بالا و اسکریپتی به وجود آمدند که این زبانها بر روی زبانهای سطح متوسط مانند C و C++ ساخته شدند. برای مثال زبان PHP که با خود با زبان C++ ایجاد شده است که در ادامه بعضی از زبانهای معروف برنامه نویسی را نام میبریم:
زبان ماشین
زبان ماشین / 1GL - First Generation Language : این زبان تنها زبانی است که پردازندهها قادر به درک آن هستند. این زبان به صورت کدهای 0 و 1 نوشته میشود و فقط پردازنده قادر به درک آن است. در واقع این زبان همان سوئیچ هایی هستند که در کامپیوترهای اولیه هم استفاده میشدند و حالا میتوان آنها را بر روی مانیتور تعریف کرد.
زبان های سطح پایین
اسمبلی
این زبان بسیار ساده است و از دستورات کوتاهی تشکیل شده است. با این تفاوت که میتواند کلمات رزرو شده را تشکیل دهد و با استفاده از آنها زبان ماشین و کدهای هگزا دسیمال را به کار گیرد. کد نویسی با این زبان با توجه به هر معماری در هر پردازنده متفاوت است. از این زبان امروزه برای ترجمه زبانهای سطح متوسط در سیستمهای عامل استفاده میشود. برای مثال سیستم عامل ویندوز و لینوکس هر دو به زبان سی نوشته شدهاند اما ابتدا به کمک زبان اسمبلی برای معماری پردازنده ترجمه میشوند. با این که ما نامی از زبان اسمبلی نمیشنویم اما، زبان جدا نشدنی از کامپیوتر است و کار ترجمه زبانهای سطح متوسط را انجام میدهد. این کار باعث میشود که سیستم عاملها فقط یک بار توسط زبانهای سطح متوسط نوشته شونده و توسط مترجمها بر روی پردازندههای مختلف اجرا شوند.
زبان های سطح متوسط
سی / C و سی پلاس پلاس / C++ : در این زبان قابلیت استفاده بهینهتر از حافظه و همینطور اجرا بر روی همه پردازندهها وجود دارد. این زبان یک زبان بین المللی برای همه کامپیوترهای جهان است. در ابتدا زبان C به عنوان راهگشا و ایده اولیه طراحی شد ولی سپس در C++ به روز رسانی شد. از این زبان برای طراحی سیستمهای عامل مانند ویندوز و لینوکس استفاده میشود. هر سیستم عامل دیگری هم که بخواهید طراحی کنید، باید از مسیر زبان C++ عبور کند.
زبان های سطح بالا
- پایتون / Paython
- سی شارپ / C#
- متلب / Matlab
- جاوا / JAVA
- دلفی / Delphy
- ویژوال بیسیک / Visual Basec
- ویژوال بیسیک دات نت / Visual Basec .NET
- پاسکال / Pascal
- جاوا اسکریپت / JavaScript
- پیاچپی / PHP
- کامپایلر (Compiler)
به عمل ترجمه زبانهای سطح بالا به زبانهای سطح پایین ماشین گفته میشود. زبانهای سطح بالا هرگز نمیتوانند به صورت مستقیم با پردازنده ارتباط داشته باشند. به همین دلیل به یک مترجم نیاز دارند که این کار را انجام دهد. زمانی که یک برنامه به صورت یک پکیج اجرایی کمپایل میشود، دیگر کدهای آن برای انسان قابل تشخیص نیست. وقتی برنامه کمپایل شده را وارد برنامه محیط متنی میکنید، مجموعهای از کاراکتر های به هم ریخته را نمایش میدهد که فقط پردازنده قادر به فهمیدن آن است.
مفسر (Interpreter)
رایانش و مفسر به معنای درک کدهای متنی است و به نوعی آماده کردن کدها برای کامپایل شدن نامیده میشود. مفسرها در واقع مجموعهای از قوانین از یک زبان است که چگونگی چینش کدها را برای کامپایلر تعریف میکند و ماهیت زبان برنامه نویسی را به وجود میآورد. در واقع مفسرها کدها را آماده پردازش میکنند. هر زبان مفسر مربوط به خودش را دارد. کامپایلر ها و مفسرها با هم کار میکنند.
کرش کردن (Crash)
زمانی که برنامه بر اثر مشکلات کد نویسی خود به خود متوقف میشود، در واقع میگوییم برنامه کرش کرده و در این حالت میگوییم برنامه شکسته شده یا کرش Crash کرده است.
سرریز شدن (Stack Overflow)
زمانی که بر اثر یک حلقه اشتباه، برنامه وارد یک پردازش بی پایان میشود، دو حالت پیش میآید. یا پردازش آنقدر زیاد میشود که کل پردازنده را درگیر کند و یا بر اثر ایجاد متقیر های زیاد، باعث سرریز شدن از مقدار فضای RAM میشود که در این حالت میگوییم برنامه Stack Owerflow کرده است. برنامه در این حالت بسته میشود. اگر مدیریت پردازش حلقهها و متقیر ها توسط الگوریتمها به خوبی انجام شود، این مشکل رفع خواهد شد.
یک وب سایت StackOwerflow به همین نام در اینترنت وجود دارد که برنامه نویسان به هر زبانی مشکلات خود را بازگو میکنند و آنها را برای هم حل میکنند. میتوان گفت چیزی شبیه به یک شبکه اجتماعی است برای برنامه نویسان. در این سایت هزاران مشکل برطرف شده و بعید است مشکلی داشته باشید و در این سایت حل نشود.
متغیر (Variable)
برای استفاده و پردازش دادهها، ابتدا باید آنها را بر روی RAM بارگذاری کنید تا در دسترس پردازنده قرار بگیرد. این دادهها ممکن است به صورتهای مختلف بارگذاری شوند. یعنی ممکن است از روی دیسک و دیتابیس خوانده شوند و دانلود شوند و یا بر اثر پردازش توسط خود پردازنده ایجاد شوند که در الگوریتم برنامه نویسی تعریف شده باشد.
متغیر ها انواع مختلفی دارند که با تعریف کردن نوع آن، پردازشگر آسانتر به آن دسترسی خواهد داشت :
بیت (Bit)
بیت یک سلول از حافظه است که یک باینتری 0 و یا 1 را در خود جای میدهد. کامپیوتر بر اساس سوئیچ شدن همین بیتها عمل پردازش را انجام میدهد.
متغیرهای بولین (Boolean)
از مهم ترین متغیرها هستند که برای پردازش تصمیم گیریهای شرطی استفاده میشوند. در بولینها تنها دو حالت درست (true) و غلط (false) وجود دارد که مبنای توابع شرطی (if) را شکل میدهد. میتوان گفت که بولینها شبیه به متغیرهای باینری کوچک هستند که تنها 1 یا 0 را نگهداری میکنند.
بایت (Byte)
این متغیر قادر است 8 بیت را در خود نگهداری کند. این 8 بیت همان تقسیم بندی استاندارد کدهای باینری برای پردازش فایلها است. با این توضیح میتوان گفت که از این متغیر برای پردازش فایلها و ایجاد تغییرات ریز در آن ها استفاده میشود و استفاده تخصصیتری دارد.
متغیرهای عدد صحیح متوسط (Integer) یا (Short Integer)
این نوع متغیرها از فقط از عدد پشتیبانی میکنند و از- 32768 تا 32767 را میتواند در خود قرار دهد.
متغیرهای عدد صحیح بلند (Long) : این نوع متغیرها فقط از عدد پشتیبانی میکند و -2147483648 تا 2147483647 را پشتیبانی میکند.
متغیرهای اعشاری فلوت (Float) : این متغیرها برای محاسبات اعداد اعشاری به کار میروند و ±1.175e-38 تا ±3.402e38 را پشتیبانی میکنند.
متغیرهای اعشاری دابل (Double) : این متغیرها برای محاسبات اعداد اعشاری به کار میروند و ±1.175e-38 تا ±3.402e38 را پشتیبانی میکند.
رشتههای متنی (String) : منظور حرف و اعدادی است که قابلیت پردازش ریاضی را ندارند و تنها میتوان طول و موقعیت آنها را اندازه گرفت و پردازشهای متنی بر روی آنها انجام داد. البته به کمک توابع برنامه نویسی در زبانهای سطح بالا میتوان این نوع از متغیر را به انواع دیگر عددی و بولین و غیره تغییر داد تا بتوان پردازشهای دقیقتری روی آنها انجام داد. این رشتهها درون آکلاد باز و بسته قرار میگیرند تا با دیگر متغیرها اشتباه گرفته نشوند. این متغیر یک متغیر اضافی شناخته میشود که میتوان آن را به کمک متغیرهای دیگر ایجاد کرد. در واقع این متغیر برای راحتی کار برنامه نویسان در زبان سی C و سی پلاس پلاس C++ اضافه شد. با این حال رشتههای متنی یکی از پرکاربردترین متغیرها محسوب میشود.
آرایه (Array)
نوعی متغیر پیشرفته است که چندین متغیر را درون خود جای میدهد و به کمک آن میتوان زنجیرهای از متغیرها را انتقال داد. این نوع متغیر برای استفاده در حلقهها به کار میروند. اگرچه میتوان به کمک دستورات اشاره در زبانهای سطح بالا، به محتوای آنها دسترسی پیدا کرد.
دستور (Statement)
یک تله برنامه است که بخش قابل توجی از برنامه را در بر میگیرد؛ یک دستور میتواند بخواند، دریافت کند، بنویسد، محاسبه کند، مقایسه کند و در کل کاری را به صورت کامل در برنامه انجام دهد. Statement میتواند شامل متغیرها، توابع، کلاسها و بخشهای نمایش برنامه باشد.
دستور شرطی (Condition)
به صورت پیشفرض کامپیوتر دستورات و محاسبات را پشت سر هم و کامل انجام میدهد. اما اگر بخواهیم دستورات و محاسبات طبق یک سری شرایط خاص انجام شود، باید از دستورات شرطی استفاده کنیم. دستورات شرطی معمولاً با تابع چندگانه if تعریف میشوند.
دستور تکرار یا حلقه (Loop)
به کمک دستورات حلقه میتوانید آرایهای از متغیرها را مورد بررسی قرار دهید. به شکلی که باید تمام اجزای آرایه تک به یک با ترکیب دستور if بررسی شوند. حلقهها با دستور while و for قابل استفاده هستند و با دستور Break حلقه متوقف میشود.
تابع (Function)
مجموعهای از پردازش است که در خود متغیر و دستورات شرطی را جای داده است. یک ورودی برای دریافت اطلاعات خام دارد و یک خروجی برای دریافت اطلاعات پردازش شده دارد.
کلاس (Class)
کلاس از مهمترین بخشهای برنامه نویسی است. کلاسها از تکرار و بازنویسی برنامه جلوگیری میکنند. میتوان کلاسها را نوعی متغیر پیشرفته در نظر گرفت که مجموعهای از توابع و متغیرها را با خود حمل میکنند. با این تفاوت که به جای اجرا شدن در کدهای اصلی، یک نمونه برداری از کل کدهای خود را در اختیار برنامه اصلی قرار میدهد.
برای این که با ساختار کلاس بیشتر آشنا شوید، میتوان این مثال را زد. فرض کنید شما یک خط تولید ساخت اتومبیل دارید. قبل از این که تعداد زیادی از اتومبیل را بسازید نیاز است تا نقشهای برای ساخت اتومبیلها داشته باشید. فرض کنید یک اتومبیل 4 چرخ دارد، 4 در دارد، یک موتور دارد، چهار چراغ دارد، صندوق عقب دارد و ...؛ اگر قرار باشد که شما برای هر کدام از اتومبیلهای خط تولید نقشه بکشید که البته ممکن است هر کدام با هم متفاوت باشند، هرگز نمیتوانید در ماه بیشتر از 2 اتومبیل را تولید کنید. اما اگر همه اتومبیلها بر اساس یک نقشه تولید شوند، میتوانید از روی یک نقشه تا مدتهای زیادی آن اتومبیل را تولید کنید، مثل پراید.
باگ (Bug) / خطا در برنامه نویسی
باگ یک اصطلاح برای خطاهای برنامه نویسی است و تاریخچه جالبی دارد. در سال 1945 زمانی خانم گرس هاپر که در نیروی دریایی کار میکرد، زمانی که در دانشگاه هاروارد در حال عیب یابی یک ماشین حساب غول پیکر به نام Mark 2 بود، متوجه می شود بین کانکتورهای رله شماره 70 یک سوسک گیر کرده که اجازه انتقال سیگنال ها را نمی دهد. از آنجا واژه حشره یا باگ بین برنامه نویسان باب شد و هر گاه خطای انسانی در کدهای برنامه نویسی پیدا می شود، برنامه نویس به اصطلاح می گوید که برنامه باگ دارد. البته امروزه باگ به معنای خطا هم شناخته می شود و گاهی در مورد قوانین و علوم دیگر هم به کار می آیند. از طرفی دباگ (Debug) کردن به معنای برطرف کرد خطای کدنویسی است.
به هم ریختگی در کدها (Obfuscate)
زمانی که برنامه نویسی به پایان رسید، کدها توسط کامپایلر به زبان ماشین تبدیل میشوند و دیگر برای انسانها و حتی برنامه نویسان حرفهای هم قابل خواندن نیست. اما بعضی از برنامه نویسان که هکر هستند و کار شکستن قفل برنامهها را انجام میدهند، با مهندسی معکوس، برنامه کامپایل شده را به زبان انسان بر میگردانند و از این رو میتوانند کدهای برنامه را ببینند؛ بنابراین کدها ناامن میشوند و به راحتی میتوان کدهای قفل شده برنامه را شکست و از قابلیتهای ویژه برنامه به صورت رایگان استفاده کرد. اینجاست که برنامه نویسان برای حفاظت از برنامههای خود راهکار بهتری پیدا میکنند که به آن به هم ریختگی کدها یا (Obfuscate) میگویند. به کمک تکنیکهای Obfuscate میتوان از خوانده شدن کدها و در نتیجه از کپی شدن کدها جلوگیری کرد. این شیوه به کمک چند ابزار نشانه گذاری و فایل نشانه به هم ریختگی که به آن امضا یا Sign میگویند، انجام میشود و تمام متغیرها و توابع را یک قدم قبل از کامپایل کرن دوباره نام گذاری و به هم ریخته میکند و سپس عمل کامپایل انجام میشود.
پایگاه داده (Database)
پایگاههای داده فایلهایی با ساختارهای منظم هستند که اطلاعات را در خود ذخیره میکنند و میتوان به بخشهای مختلف آن به راحتی دسترسی داشت. بدون آن که نیاز به تغییر در کل ساختار باشد. اگر با برنامه صفحه گسترده اکسل کار کرده باشید، قطعاً خانههای افقی و عمودی را میبینید که اطلاعات در آنجا جدول بندی میشود؛ پایگاههای داده هم چیزی شبیه به صفحات اکسل است با این تفاوت که ساختار پایگاه داده بسیار دقیقتر از صفحه گسترده است و شروع و پایان هر جدول کامل مشخص و قابل دسترس است. برنامهها برای ذخیر اطلاعات مهم خود از پایگاههای داده استفاده میکنند.
سخت افزار (Hardware)
سخت افزار به بخشهای فیزیکی و قابل دیدن کامپیوتر گفته میشود. البته امروزه سخت افزارهای کوچکی هستند که به دلیل حجم کمی که دارند بر روی برد اصلی نصب میشوند و از نظر فیزیکی شاید به چشم نیایند، ولی وجود آنها تعیین کننده ویژگی دستگاه است. شما میتوانید به کمک برنامه نویسی به سخت افزارها دسترسی پیدا کنید و از آنها در کارهای خود استفاده کنید. برای مثال سخت افزارهایی مثل قطب نما، موقعیت یابGPS، جیرسکوپ حساس به حرکت، Proximity حساس به فاصله، نور فلش و... ابزارهایی هستند که در برنامه نویسی موبایل بسیار کاربرد دارند.
محیط توسعه یکپارچه (IDE) / محیط های برنامه نویسی
محیط توسعه یکپارچه IDE (Integrated Development Environment) به نرم افزاری میگویند که دقیقاً برای توسعه نرم افزار و اپلیکیشنهای دیگر طراحی شده است. در گذشته میتوانستید حتی در یک برنامه ویرایش متن ساده مثل Note Pad هم برنامه را توسعه دهید؛ زیرا برنامهها چیزی به جز متنهای ساده نیستند. این متنها برای کامپیوتر و کامپایلرها قابل درک هستند. اما با بزرگ شدن پروژهها و نیاز به تفکیک کدها و تست همزمان، باعث شد تا محیطهای توسعه یکپارچه طراحی شوند که قادر به تفکیک کدها به کمک چینش و رنگ بندی، و تست همزمان کدها هستند. این برنامهها انواع مختلفی دارند که هر کدام به منظور خاصی طراحی شدند. بعضی از آنها فقط برای یک زبان و یا هدف خاص هستند و بعضی دیگر برای توسعه چندین زبان طراحی میشوند. در ادامه مهمترین محیطهای توسعه یکپارچه را معرفی میکنیم :
Visual Studio Code
یکی از جدیدترین، به روزترین و بهترین میحطهای توسعه است که اکثر زبانها پشتیبانی میکند و به کمک افزونهها میتوان به آن پشتیبانی از زبان جدید و امکانات جدید افزود. در حال حاظر به راحتی میتوان برنامههای اندروید، آی او اس، مک و ویندوز را با آن توسعه داد. این محیط توسعه توسط شرکت مایکروسافت طراحی شده است و یک ابزار همه کاره است.
Visual Studio
این محیط توسعه برای توسعه برنامههای مختص سیستم عامل ویندوز طراحی شده و از زبانهای سی پلاس پلاس C++ ، سی شارپ C# ، دات نت.Net ، و ASP که برای توسعه نرم افزارهای آنلاین کاربرد دارد، پشتیبانی می کند. در کل این محیط توسعه برای توسعه نرم افزارهای فریم ورک ویندوز و محصولات مایکروسافت کارایی دارد. در محیط این نرم افزار شما قادر به دیدن کدهای گرافیکی خود هستید.
Xcode
این محیط توسعه برای توسعه نرم افزارهای سیستم عاملهای مک و آی او اس کارایی دارد و به صورت اختصاصی برای سیستم عامل مک طراحی شده و از زبانهای سوئیفتSwift ، آبجکت سیObject-C ، سی C و سی پلاس پلاس C++ پشتیبانی میکند.
IntelliJ IDEA
این محیط توسعه برای بیشتر زبانها کارایی دارد اما در زمینه تست کمی ضعیف است و باید برای اتصال به محیط تست تنظیمات بیشتری را روی آن اعمال کرد و آن را برای تست آماده کرد. با این حال در زمینه کد نویسی و باگ گیری بسیار مفید است و یکی از قدرتمندترین میحطهای توسعه به شمار میآید. از آن قافل نباشید و اگر لازم بود برای تنظیمات آن وقت بگذارید.
Android Studio
یک کپی از IntelliJ IDEA است که توسط شرکت گوگل برای توسعه اپلیکیشنهای اندروید طراحی شده است. در این محیط همه ابزارهای لازم برای توسعه اپلیکیشنهای اندروید فراهم است و از قبل بیشتر تنظیمات IntelliJ IDEA انجام شده و آماده استفاده است و به دلیل همین تنظیمات و تغییرات است که گوگل یک پکیج جداگانه از IntelliJ IDEA را برای اندروید اختصاصی کرده است.
NetBeans
یکی از بهترین محیطها برای توسعه نرم افزارهای جاوا است. در این محیط شما قادر به دیدن محیط گرافیکی کدهای برنامه خود هستید که برای جاوا یک امتیاز محسوب میشود.
Eclipse
یک محیط برنامه نویسی است که با جاوا نزدیکی بیشتری دارد، با این حال از زبانهای مختلف پشتیبانی میکند و امکان تغییرات گرافیکی کدها را فراهم میآورد.
Code::Blocks
یک محیط توسعه به نسبت ساده است که برای کد نویسی زبانهای سیC ، سی پلاس پلاس C++ و فرترن Fortran کارایی دارد.
Notepad++
این محیط نرم افزار بسیار مناسب کد نویسی است اما تنها مشکلی دارد این است که نمیتواند به خوبی با محیطهای تست ارتباط بگیرد و بیشتر تمرکز خود را بر روی کدها گذاشته است. با این حال به دلیل پردازش پیشرفتهای که بر روی متنها دارد، نمیتوان از آن گذشت و بهتر است کنار موارد بالا این برنامه را هم نصب داشته باشید.
DreamWeaver
این محیط کدنویسی به صورت اختصاصی برای طراحی صفحات وب و توسط شرکت Adobe ساخته شده است. این محیط از زبانهای html , asp , php , aspx , css , js , jsp, cf, less, css, sass, scss پشتیبانی میکند.
سیستم عامل (Operating System)
سیستم عاملها ابر نرم افزارهایی هستند که امکان اجرای دیگر نرم افزارها را در سطح بالا ایجاد میکنند و با زبانهای سطح میانه نوشته شدهاند. در حال حاظر 3 سیستم عامل اصلی ویندوز، مک و لینوکس در دنیا وجود دارد که بیشتر کامپیوترهای جهان از آنها برای اجرای کارهای خود استفاده میکنند. فرق این سیستمعاملها در استراتژی تجاری آنها است. در واقع سیستم عامل مک یک محیط بسته است که برنامهها باید در محیط استور خودش به فروش بروند؛ ویندوز یک سیستم عامل تجاری است که برنامههای حرفهای در آن رایگان نیستند و لینوکس تمامی برنامهها را به صورت رایگان ارائه میدهد و با کمکهای مردمی به بقای خود ادامه میدهد که بسیار هم مؤثر بوده است.
سیستم عاملها از نظر کاربرد به دو نوع خانگی و سرور تقسیم بندی میشوند. سیستم عاملهای خانگی برای کارهای روزمره و شخصی استفاده میشوند و سیستم عاملهای سرور برای راه اندازی خدمات اینترنتی بزرگ مورد استفاده قرار میگیرند. البته سیستم عاملهای هوشمند را هم میتوان در دسته سوم قرار داد که برای هوشمند سازی و همینطور صنعت رباتیک استفاده میشوند.
فریم ورک (Framework)
مجموعهای از کدهای آماده هستند که قبلاً توسط برنامه نویسان حرفهای کدنویسی شدهاند و از تکرارها جلوگیری میکنند. برای مثال اگر شما نیاز به اتصال به سخت افزار خاصی داشته باشید، نمیتوانید کل برنامه را بازنویسی کنید، از این رو تولید کننده آن سخت افزار به شما بستهای را میدهد که به کمک آن میتوانید تنها با استفاده از چند تابع ساده، به سخت افزار مورد نظر متصل شوید.
فریم ورکها در همه زبانها رایج هستند و میتوانید با یک جستجوی ساده به هزاران کد آماده و فریم ورک دسترسی داشته باشید.
سیستم عاملها هم در خود بستههای توسعه به همراه دارند که مجموعهای از فریم ورکها و قوانین برنامه نویسی را تشکیل میدهند. برنامه نویس به کمک این بستههای نرم افزاری میتواند برای سیستم عاملها برنامه نویسی کنند. برای مثال سیستم عاملهای ویندوز و مک هر دو با زبان سی C نوشته شدهاند اما به دلیل استراتژیها و الگوریتمهایی که دارند، فریم ورکها و بستههای نرم افزاری مجزایی را در اختیار برنامه نویسان قرار میدهند. یکی از مهمترین وظایف سیستم عاملها ایجاد رابط میاد نرم افزارها و سخت افزارها است که دقیقاً به کمک همین فریم ورکها انجام میشود.
هوش مصنوعی (Artificial intelligence) / یادگیری ماشین (Machine learning)
یکی از مبحثهایی که در چند سال اخیر توجه زیادی به آن میشود، هوش مصنوعی است. هوش مصنوعی به معنای ایجاد یک منطق برای تصمیم گیری ماشین است که در ادامه آن به بحث یادگیری ماشین خواهیم رسید. در حال حاضرهوش مصنوعی را میتوان در خیلی از امور به کار گرفت. یک مثال ساده آن، استفاده از هوش مصنوعی و یادگیری ماشین در وب سایت دیجی کالا است. دیجی کالا به کمک اطلاعات خرید قبلی شما و سوابق شما در بانک اطلاعات خود، نیازهای شما را حدس میزند و به شما کالاهایی را که مورد نیاز شما است معرفی میکند.
در حالتی پیشرفتهتر هوش مصنوعی در صنعت رباتیک به کار میرود. رباتها قادر هستند دقیقتر و سریعتر از انسانها کار کنند. اما با تمام این صحبتها نگرانی از منطق هوش مصنوعی بی علت نیست. در صورتی که هوش مصنوعی در رباتها گسترش پیدا کند و بتواند ماهیت خود را به دست آورد، احتمال این که انسانها را خطری برای خود ببیند و سعی در از بین بردن نسل بشر کند، دور از انتظار نیست. فیلمهای زیادی در رابطه با خطرات هوش مصنوعی ساخته شده؛ از جمله مجموعه فیلمهای ترمیناتور و ماتریکس که شاهکارهای فوق العادهای هستند که در مورد هوش مصنوعی و خطرات آن هشدار میدهند.
گیت / Git - شبکه برنامه نویسی
گیت یک شبکه مدیریت نسخه است که نسخههای نرم افزار را مدیریت میکند و میتواند کدها را به روز رسانی کند. در واقع داستان گیت به دوران به روز رسانی سیستم عامل لینوکس بر میگردد؛ زمانی بود که توسعه دهندگان لینوکس از سیستم مدیریت نسخه دیگری به نام BitKeeper استفاده میکردند. اما بیت کیپر از ادامه همکاری با لینوس توروالدز و نگهداری لینوکس امتنا ورزید. بنابراین توروالدز به دلیل نیاز به پیاده سازی توسعه آزاد لینوکس خودش شبکهای را برای توسعه آنلاین سیستم عامل لینوکس راه اندازی کرد.
امروزه گیت تنها شبکه توسعه نرم افزار نیست. در حال حاظر شبکه Github یکی از بزرگترین شبکههای توسعه نرم افزار است.
در کا گیت کردن به معنی توسعه دادن نرم افزار به صورت شبکه است و کار این شبکه به اشتراک گذاری کدها بین برنامه نویسان است. در سایت گیت هاب به دو صورت قادر به ارائه نرم افزار هستید. اول این که از سرویس رایگان گیت هاب استفاده کنید که در این صورت کدهای شما در اختیار همگان قرار خواهد گرفت و دوم این که از سرویس ویژه استفاده کنید که برای توسعه نرم افزارهای تجاری و ایجاد گروههای محدود به کار میرود و باید مبلغی را برای آن پرداخت کنید. از سرویس ویژه برای توسعه بازیهای رایانه و نرم افزارهای تجاری سنگین استفاده میشود.
برنامه نویسی بک اِند (BackEnd)
به برنامهای که در پس زمینه کار میکند و کاربر نمیتواند طرح گرافیکی از آن ببینید، برنامه نویسی بک اِند گفته میشود. فرض کنید که شما یک برنامه پیام رسان بر روی گوشی نصب کردهاید. این برنامه در حالتی که حتی صفحه نمایش گوشی شما خاموش است، پیامها را از مرکز سرویس دهنده خود دریافت میکند و به صورت نوتیفیکیشن به شما نمایش میدهد؛ در حالی که بخش گرافیکی برنامه باز نیست و در پس زمینه سیستم عامل در حال فعالیت است که به آن سرویس گفته میشود. برنامههای سرویس همیشه در پس زمینه کار میکنند. در وب سایتها هم به همین شکل است با این تفاوت که بک اِند در وب سایتها بر روی کامپیوتر سرویس دهنده اجرا میشود و دادهها را ذخیره میکند.
برنامه نویسی فرانت اِند (FrontEnd)
این نوع برنامه نویسی بر روی ایجاد شکل ظاهری برنامه و ورودیهای فرمها تمرکز دارد. برای مثال اگر یک وب سایت را در نظر بگیرید، کدهای طراح آن بر روی مرورگر و سمت مشتری اجرا میشوند که به آن کدهای فرانت اِند میگویند. برنامه نویس فرانت اِند بر روی چیزی کار میکند که جلوی چشم کاربر ظاهر میشود.
تله کد (TeleCode)
این اصطلاح به معنی بخش کوتاهی از چند سطر کد است که دارای الگوریتم منطقی اما کوتاه باشد. این تله کدها میتوانند مانند پاسخ مشکل ما در وب سایت StackOwerflow و انجمنهای بحث و گفتگو پیدا شوند. برای مثال اگر ما در یک زمینه خاص به مشکل بر بخوریم و یا الگوریتم مناسب نداشته باشیم و کد خاصی را بلد نباشیم، در وب سایتهای بحث و گفتگو ممکن از برای همین مشکل ما راه حلی پیدا شده باشد و آن را به صورت کدهای کوتاه در بخش از پاسخ قرار داده باشند که به آن تکه کد تله کد گفته میشود.
کدهای کوتاه (short code)
این اصطلاح بر اثر یک خلاقیت در سیستم مدیریت محتوای وردپرس که یک نرم افزار آنلاین است ایجاد شد. کدهای کوتاه میان کدهای اصلی قرار میگیرند و شبیه به کلاس عمل میکنند؛ با این تفاوت که میتوان آنها را در هر جایی از کد استفاده کرد؛ حتی در ویرایشگر متنی. خروجی این کدهای کوتاه معمولاً در مرورگر سمت مشتری (Frontend) ظاهر میشود و میتوان به کمک آنها پنلهای جدید به وردپرس اضافه کرد.
سخن پایانی
در دنیای برنامه نویسی اصطلاحات زیادی وجود دارد که شاید همه را نتوان در یک مقاله جای داد. اما در این مقاله سعی شد تا مهمترین آنها را برای شما توضیح دهیم. این مطالب برای شروع آشنایی با برنامه نویسی میتواند بسیار مفید باشد. همین که با ساختار کامپیوتر و برنامه نویسی آشنا شوید، میتوانید درک درستی از دلیل ساختار نسبتاً پیچیده کدها داشته باشید. در صورتی که نمیخواهید درگیر پیچیدگیهای برنامه نویسی به زبانهای سطح متوسط شوید، از زبانهای سطح بالا مانند Flutter و PHP و JavaScript یادگیری برنامه نویسی را شروع کنید.
نظرات کاربران