Skip to Content

درباره:Sajjad

Recent Posts by Sajjad

بهینه ساز ی خارجی سایت (off page seo)

بهینه ساز ی خارجی سایت (off page seo)

  • کلاه سفیدترین روش سئو و در حقیقت، اصل Off Page SEO ، همان برندینگ است . سایت ها ی معروف  که دارای نام تجاری یا برند معروف می باشند،عملا  کاری برای سئو ی سایت خود انجام نمی دهند . دلیل بالا بودن رنک آنها در میان سایت های دیگر شهرت آنها یا قدیمی بودن آنها است. این سایت ها در وبلاگ ها،سایت های خبری، آموزشی و … به طور طبیعی لینک و معرفی می شوند. لذا link building آنها به صورت خودکار توسط دیگران به صورت کاملا طبیعی انجام می شود و قدرت بسیار زیادی پیدا می کنند.
  • تبلیغات بنری در اینترنت باعث شناخته شدن شما می شود. اینگونه تبلیغات به دو صورت انجام می گیرد:
    (ppc (pay per click :که در آن برای قرار دادن بنر تبلیغی خود در وب سایتی به ازای هر کلیک مبلغی پرداخت می کنید.
    تبلیغات زمانی:که در آن برای قرار دادن بنر تبلیغیخود در وب سایتی برای مدت زمان مشخص مبلغی پرداخت می کنید.
  •  تبلیغات بنری که به منظور برند سازیانجام می شود، زیر ۶ ماه توصیه نمی شود.زیرا گذر زمان، و تکرار تبلیغات در جلوی چشم کاربران، از لازمه های یک برندینگ موفق است.

 

ادامه مطلب

فریم ورک چیست ؟

فریم ورک چیست ؟

فریم ورک چیست ؟

هدف از ایجاد فریم ورک فراهم کردن ساختاری مشخص و استاندارد برای کد نویسی بی دردسر, مفهوم دار و قابل توسعه است.


هدف از استفاده فریم ورک چیست؟

منظور از بی دردسر بودن استفاده از فریم ورک در کدنویسی اینه که برنامه نویس برای هر بخش از نرم افزار خود نیازی به کدنویسی تکراری و بیش از حد نداره و میتونه از کلاس ها و توابع اماده فریم ورک مورد نظرش استفاده کنه.وقتی یک برنامه نویس از ساختار فریم ورک پیروی کنه مطمئنا کدهاش خیلی قابل فهم میشه و این خوبی رو داره که بعد از یک مدت طولانی پروژه خودش رو رها کنه و برگرده خیلی راحت متوجه میشه چیکار کرده و از همه مهم تر اینه که  برنامه نویسانی که روی یک پروژه به صورت تیمی کار میکنند میتونن به راحتی کدهای همدیگرو درک کنند.

یکی از مزیت های فریم ورک قابل توسعه بودنشه، یعنی هر چقدر پروژه شما بزرگ باشه باز هم به راحتی میتونید توسعش بدید و هیچ فرقی نمیکنه که پروژه مال خودتونه یا واسه شرکتیه که تازه اونجا استخدام شدید.

فریم ورک

امنیت,  سرعت و دقت در کدنویسی با استفاده از فریم ورک

اینو در نظر داشته باشید که فریم ورک چیز عجیبی نیست و خودتون هم میتونید به راحتی یک فریم ورک بسازید و در هر پروژه ای ازش استفاده کنید,  ولی برای هر زبان برنامه نویسی فریم ورک های حرفه ای متعددی ساخته شده که نیاز اکثر برنامه نویسا رو برطرف کرده و نیازی به نوشتن یک فریم ورک جدید نیست.

همه فریم ورک های ایجاد شده سطوح های امنیتی را رعایت کردند و این باعث میشه که اشتباهات برنامه نویسان در مباحث امنیتی کمتر شود و مهمتر از همه داشتن کلاس ها توابع و … باعث دقت و سرعت عمل در کدنویسی شما میشه که باعث نصف شدن مدت زمان ایجاد پروژه در مقابله با کدنویسی معمولی و بدون فریم ورک است.


برای مثال یکی از بهترین فریم ورک های php، فریم ورک لاراول است .

ادامه مطلب

انگولار جی اس (angular js) چیست ؟

انگولار جی اس (angular js) چیست ؟

انگولار جی اس (angular js) چیست ؟

انگولار جی اس ابزاری است برای کدنویسی بهتر، راحت‌تر و البته سریع‌تر که به شما لذت کدنویسیِ بیشتر را هدیه خواهد داد. ما در این پست قصد داریم تا این فریم ورک جاوا اسکریپتی را به شما معرفی کنیم.

انگولار جی اس را بیشتر بشناسیم

انگولار جی اس یکی از نسخه‌های توسعه یافته زبان‌هایی جاوا اسکریپتی است که در سال ۲۰۰۹ متولدشده است. این فریم ورک به‌صورت کاملا رایگان بوده ضمن اینکه به‌صورت متن‌ باز ارائه‌ شده است که می‌شود به‌راحتی مطابق سلیقه‌ای که داریم از آن استفاده کرده و کد نویسی را انجام دهیم.

انگولار جی اس (angular js) چیست ؟

آشنایی با ویژگی برنامه‌های تک‌صفحه‌ای یا single page application:

زمانی که به فرض شما وب‌سایتی را بررسی می‌کنید مشاهده خواهید کرد که این وب‌سایت از صفحات و بخش‌های مختلفی تشکیل‌ شده است و هر بخش هم شامل مطالب مختص به خود هست اما گاهی تمامی مطالب و بخش‌های یک وب‌سایت یا یک برنامه تحت وب، در یک صفحه وب قرار می‌گیرد.
لذا شما در این وب‌سایت نیاز دارید برای رفتن از یک صفحه به صفحه‌های دیگر، اصطلاحا صفحه موردنظر را load کنید اما در برنامه‌های تک‌صفحه‌ای دیگر نیاز به load نیست لذا اگر بخواهید از یک صفحه به صفحه موردنظر خود بروید دیگر نیاز نیست تا صفحه موردنظر شما بارگذاری مجدد شود در ضمن صفحه موردنظر شما بلافاصله با زدن دکمه‌های back یا forward به صفحه بعد یا قبل خودش خواهد رفت بدون اینکه صفحات موردنظر بخواهند دوباره load شوند و این کار باعث خواهد شد تا شما سرعت بالاتری را در مشاهده صفحات وب داشته باشید.
امروزه یکی از علت‌های استفاده از انگولار جی اس توسعه و قدرتمندتر کردن برنامه‌های تک‌صفحه‌ای یا SPA هستند لذا می‌توان در پروژه‌های بزرگ و کوچک از فریم‌ورک انگولار جی اس استفاده بهینه را برد.

ویژگی‌های کاربردی و مهم در انگولار جی اس:

یکی از موارد مهم استفاده از انگولار جی اس را موارد بالا شرح دادیم اما در ادامه این مقاله سعی داریم تا ویژگی‌های مهم دیگری که این فریم‌ورک دارد را به شما معرفی کنیم:

۱. امکان اتصال داده به صورت دوطرفه: یکی از خصوصیاتی که انگولار جی اس دارد این است که بر پایه الگوی طراحی MCV نوشته‌ شده است. M مخفف model و V مخفف view است.
درواقع model کاری که انجام می‌دهد این است که اطلاعات و داده‌ها را از منابع بازیابی می‌کند و view نیز به‌عنوان یک نمایشگر به من و یا شما که مخاطب یک وب‌سایت هستیم، این اطلاعات را نشان می‌دهد که بسیار در رابط کاربری یا UI کاربردی است.
نکتهای که اینجا وجود دارد این است که زمانی که شما تغییری را در model انجام می‌دهید باید در view هم تغییراتی را اعمال کنید که این کار می‌توانید در دادههای زیاد، کاری بسیار وقت‌گیر باشد لذا اگر از انگولار جی اس استفاده می‌کنید نباید نگران این موضوع باشید چراکه انگولار جی اس هر داده را به view مشخص مرتبط کرده و در هنگام تغییرات، این view است که به‌صورت خودکار آپدیت می‌شود.

۲. دایرکیتوها: در انگولار جی اس هر جا سخن از سفارشی‌سازی و بکار گیری ابزار جدید است نام دایرکتیوها میدرخشد.
لذا دایرکتیوها همواره یکی از بخشهای هیجان‌انگیز انگولار جی اس بوده که می‌توان به‌وسیله آنها، عناصر و تگهای جدید را به نمایش گذاشت.

انگولار جی اس (angular js) چیست ؟

۳. dependency injection یا تزریق وابستگی: فرض کنید در خانه خود نشسته‌اید و در حال تعمیر یک وسیله برقی هستید که ناگهان پیچی را گم می‌کنید. دوست داشتید در خانه شما یک سیستم وجود داشت که به‌جای دنبال کردن و پیدا کردن پیچ، به آن سیستم دستور میدادید تا طبق تعریفی که قبلاً برای آن داشته‌اید، به شما مشابه آن پیچ را تحویل بدهد.
حال بیاییم در برنامه‌ نویسی، گاهی شما یک سری دستورها را قبلاً تعریف می‌کنید اما در هنگام برنامه‌ نویسی نیاز دارید که همان دستورات را به کار گرفته و برنامه خود را توسعه دهید، اینجاست که خاصیت تزریق وابستگی خودش را نشان می‌دهد و باعث می‌شود علاوه بر صرفه‌جویی درزمانی که دارید، خیلی راحت‌تر و سریع‌تر به دنبال اجرای دستورات خود باشید.
درواقع شما در انگولار جی اس با تعریف یک سری مسائل یا دستورها، این قابلیت را به برنامه نویسی خود می‌دهید که هر زمان که احتیاج به چیزی داشتید، به شما بدهد یا اصطلاحاً به شما تزریق نماید به این شرط که قبلاً این دستورات را اعلام کرده باشید.

۴. الگوهای template: یکی از نکات مهمی که در طراحی وب وجود دارد، بحث قالب‌ها است یعنی همان شکل کلی که از یک وب‌سایت مشاهده می‌کنیم. انگولار جی اس با ابزارهای قدرتمند خود ازجمله الگوی طراحی mcv، دایرکتیوها و … توانسته است به‌ آسانی طراحی قالب را بر عهده خود داشته باشد.

نتیجه گیری:

انگولار جی اس یکی از فریم ورک‌های زبان جاوا اسکریپت است که از سال ۲۰۰۹ کار خود را شروع کرده است. با توجه به ویژگی‌هایی که در بالا برشمردیم این فریم ورک توانسته کد نویسی را تسهیل و لذت بیشتری را به آن ببخشد ضمن آنکه مفاهیمی مثل وابستگی تزریقی و دیتا بایندیگ (اتصال دوطرفه داده) توانسته کد نویسی را به‌صورت مرتب و با اصول مشخص پیاده‌سازی نماید. اگر در پروژهای هستید که با زبان جاوا اسکریپتی برنامه‌ نویسی میشود، انگولار جی اس میتواند یک انتخاب خود برای شما باشد.
برای یادگیری بیشتر و آموزشهای کاربردی انگولار جی اس و همین‌طور دیگر زبان‌های برنامه‌نویسی میتوانید با ما در این وبسایت همراه باشید.

خلاصه مقاله انگولار جی اس را در نقشه ذهنی زیر مشاهده می‌کنید:

انگولار جی اس (angular js) چیست ؟

با مقالات تخصصی ما همراه باشید تا دانش خود را در زمینه‌های مختلف طراحی سایت افزایش دهید.

ادامه مطلب

React JS؛ کتابخانه محبوب جاوا اسکریپت برای طراحی UI

React JS؛ کتابخانه محبوب جاوا اسکریپت برای طراحی UI

React JS؛ کتابخانه محبوب جاوا اسکریپت برای طراحی UI

React JS یکی از سریع‌ترین و محبوب‌ترین کتابخانه‌ها (Library) جاوا اسکریپت است که توسط فیسبوک اینستاگرام و یک جامعه مستقل از توسعه دهندگان وب مدیریت و نگهداری می‌شود.


React یک Libarary متن باز و البته رایگان جاوا اسکریپت برای طراحی رابط کاربری است. این کتابخانه جاوا اسکریپت در ماه مه سال ۲۰۱۳ به صورت عمومی منتشر شد. جالب است بدانید که این فریم ورک در ابتدا توسط یکی از مهندسین فعال در فیسبوک به وجود آمد. آقای «جردن واک» در سال ۲۰۱۱ این فریم ورک را تحت تاثیر XHP که یک کامپوننت HTML برای زبان برنامه نویسی PHP‌ است، ایجاد کرد. در همین سال React روی قسمت News Feed شبکه اجتماعی فیسبوک به کار گرفته شد و ۲ سال بعد، یعنی در سال ۲۰۱۳ هم استفاده از آن توسط فیسبوک به اینستاگرام تعمیم پیدا کرد.

نکته مهم در کاربرد React JS این است که این کتابخانه صرفا در الگوی طراحی MVC، عهده‌دار بخش View است. View یا اینترفیس در واقع مرتبط با نمایش اجزا هستند و طبعا React JS به جای پرداختن به الگوی MVC به وظایفی می‌پردازد که مربوط به نمایش اجزا می‌پردازد. از دیگر کاربردهای React JS استفاده در طراحی و ایجاد سایت تک صفحه‌ای است.

استفاده از React JS در HTML

استفاده از این فریم ورک جاوا اسکریپت در HTML کار چندان مشکلی نیست. برای این کار شما باید از JSX و ECMAScript 2015 استفاده کنید. بنابراین انتظار می‌رود که پیش از استفاده از React دانش کافی از HTML و جاوا اسکریپت داشته باشید. اگر دوست دارید با HTML آشنا شوید، می‌توانید دوره آموزش HTML مقدماتی در لیداوب را مطالعه کنید. برای استفاده از «ری اکت» به کد HTML زیر توجه کنید:

<div id="myReactApp"></div>

<script type="text/babel">
  class Greeter extends React.Component { 
    render() { 
      return <h1>{this.props.greeting}</h1>
    } 
  } 

  ReactDOM.render(<Greeter greeting="Hello World!" />, document.getElementById('myReactApp'));
</script>

در اینجا، کلاس Greeter یک کامپوننت React است که ویژگی (Property) greeting را می‌پذیرد. پس از آن متد ReactDOM.render مثالی از کامپوننت Greeter ایجاد می‌کند و ویژگی greeting را به عنوان Hello World تبدیل کرده و با شناسه myReactApp ، این کامپوننت را به عنوان المنت فرزند (child) به المنت DOM، رندر می‌کند. بنابراین هنگامی که کد HTML بالا در مرورگر اینترنت نمایش داده شود، نتیجه از این قرار خواهد بود:

<div id="myReactApp">
  <h1>Hello World!</h1>
</div>

چرا React JS اینقدر محبوب است؟

react js

زمانی که یک موسسه یا شرکت عظیم با طرفداران فوق‌العاده زیاد، عهده‌دار نگهداری و توسعه یک کتابخانه جاوا اسکریپتی می‌شود، دیگر نباید شکی به این کتابخانه داشت. امروزه همه ما از Facebook و Instagram استفاده می‌کنیم و می‌دانیم که چقدر این دو شبکه اجتماعی از نگاه فنی کم اشکال و قابل اطمینان هستند و در سطح بالایی قرار دارند. حال در نظر بگیرید که این شرکت بزرگ عهده‌دار توسعه چنین کتابخانه مهمی بوده که از آن در ایجاد یک رابط کاربری زیبا و عام پسند استفاده کرده است. بنابراین، طراحان سایت و توسعه دهندگان وب، خیلی زود سراغ React رفتند.

React کتابخانه‌ای است که با استفاده از آن تمام جنبه‌های ظاهری یا همان بخش View در طراحی سایت یا توسعه اپلیکیشن موبایل را به عهده می‌گیرد. با استفاده از React، بسیاری از پیچیدگی‌ها و درگیری‌های مختلف برنامه نویسی از روی دوش شما برداشته می‌شود.

React چه خصوصیات متمایزی دارد؟

کتابخانه‌ای به این مهمی که خیلی زود هم فراگیر شده و به محبوبیت رسیده، قطعا ویژگی‌های بسیار جالبی برای برنامه نویسان و طراحان سایت دارد. در ادامه این ویژگی‌ها را با هم بررسی می‌کنیم.

JSX

jsx

در React، برای پروسه Templating از JSX یا JavaScript Syntax Edition به جای جاوا اسکریپت عادی استفاده شود. JSX نوعی جاوا اسکریپت ساده است که شما اجازه می‌دهد تا کدهای html را درون ساختارش قرار دهید. این کدهای HTML در ساختار JSX در هنگام اجرا به کدهای جاوا اسکریپتی رندر می‌شوند. البته این امکان وجود دارد که کدها را بدون استفاده از HTML و به صورت جاوا اسکریپت هم بنویسید. در این صورت دیگر نیازی به دانش JSX نیست.

React Native

react

React یک سری کتابخانه نیتو (Native) دارد که در سال ۲۰۱۵ توسط فیسبوک به دست توسعه دهندگان اپلیکیشن موبایل رسید. این کتابخانه‌های نیتیو React، یک معماری ارائه می‌دهند که با استفاده از آن بتوان اپلیکیشن اندروید نیتیو و اپلیکشن iOS نیتیو توسعه داد.

Virtula Document Objective Model

React از یک ساختار داده درون حافظه‌ای برای کش کردن اطلاعات بهره می‌برد. این ساختار که به اختصار Virtual DOM نامیده می‌شود، ابتدا تغییرات انجام شده را محاسبه کرده و سپس مرورگر کاربر را آپدیت می‌کند. این ویژگی به طراح سایت و توسعه دهنده این امکان را می‌دهد که به گونه‌ای کد نویسی کند که انگار تمام صفحه با هر تغییر رندر می‌شود، در حالی که در واقع کتابخانه React تنها کامپوننت‌هایی را رندر می‌کند که واقعا تغییر کرده‌اند.

Single-way Data flow

در React یک سری مقدار (Value) تغییر ناپذیر به عوامل رندر کننده کامپوننت‌ها داده می‌شود. این مقدارها دقیقا مثل ویژگی تگ HTML هر رندر کننده است. در این حالت کامپوننت‌ها نمی‌توانند به صورت مستقیم هیچ ویژگی را دستکاری کنند، اما می‌توانند از یک عملکرد call back استفاده کنند تا به کمک آن تغییرات را انجام دهند. به این فرایند، «properties flow down; action flow up» می‌گویند.

انتقال داده react

چرا باید از React استفاده کنیم؟

حال که تا حدودی با React و کارکرد آن آشنا شدیم، سوال اینجا است که، واقعا چرا با وجود پلتفرم‌هایی مثل انگولار، باید از React JS‌استفاده کنیم؟

دنیای طراحی رابط کاربری و froon-end هر روز با تکنولوژی‌ها و فریم ورک های جدید غافلگیر می‌شود. در این وضعیت بهتر است وقت خود را برای یاد گرفتن تکنولوژی‌های جدیدی که ممکن است خیلی زود به پایان عمرشان برسند، تلف نکنیم. اما اگر دلتان می‌خواهد یک تکنولوژی جدید یاد بگیرید که در تمام دوران حرفه‌ای خود از دانستن آن به خود ببالید، به شما توصیه می‌کنم React JS را بررسی کنید.

ری اکت

این کتابخانه جاوا اسکریپت در عین سادگی برای یادگیری بسیار ساده است و با رویکرد Native برای توسعه اپلیکیشن، گزینه بسیار خوبی هم در مقابل طراحان وب و هم در مقابل توسعه دهندگان اپلیکیشن موبایل قرار داده است. بنابراین به شما توصیه می‌کنم که اگر به دنبال ایجاد یک رابط کاربری فوق العاده برای وب سایت یا اپلیکیشن موبایل هستید، خیلی زود React JS را فرا بگیرید. هنگام استفاده از React عملکرد سریع و فوق العاده و کاربرد آسان آن شما را شگفت زده خواهد کرد.

با مقالات تخصصی لیداوب، همراه ما باشید تا دانش شما در زمینه‌های مختلف طراحی وب روز به روز افزایش یابد. همچنین، اگر در هر یک از زمینه‌های طراحی وب و برنامه نویسی موبایل مهارت دارید، می‌توانید از امکان ارائه و فروش محصولات سایت ما استفاده کنید. با استفاده از این ویژگی در کتابخانه آنلاین لیداوب، شما صاحب یک صفحه شخصی به صورت رایگان خواهید بود که می‌توانید مقالات و ویدیوهای آموزشی خودتان را در آنجا بارگزاری نمایید. برای اطلاعات بیشتر می‌توانید این صفحه را مطالعه نمایید.

ادامه مطلب

۹ زبان برنامه‌نویسی محبوب

۹ زبان برنامه‌نویسی محبوب

برنامه‌نویسی

تنوع زبان‌های برنامه‌نویسی باعث شده که علاقه‌مندان به یادگیری هنگام انتخاب زبان موردنظرشان با مشکلاتی مواجه شوند؛ به‌قول‌معروف تا بیایند بررسی کنند که کدام زبان برنامه‌نویسی مناسب‌شان است، زمان زیادی را از دست داده‌اند. با مدتی جست‌وجو و مطالعه درباره‌ی زبا‌ن‌های برنامه‌نویسی متوجه خواهید شد که تعداد زبان‌های برنامه‌نویسی محبوب آن‌قدرها هم زیاد نیست؛ با علم به این موضوع که دقیقا می‌خواهید بعد از یادگیری برنامه‌نویسی چه‌کار کنید، می‌توانید یک زبان برنامه‌نویسی مناسب را انتخاب کنید. در این مقاله با ۹ زبان برنامه‌نویسی محبوب که هنوز هم به‌شدت ارزش یادگرفتن دارند آشنا می‌شوید. با دیجی‌کالا مگ همراه باشید.

‌‌‌             ‌

جاوا اسکریپت

بسیاری از کاربران «جاوا اسکریپت» (JavaScript) و جاوا را با هم اشتباه می‌گیرند. جاوا اسکریپت یک زبان کاملا مستقل و جدا از جاوا است. وجود نام جاوا در ابتدای جاوا اسکریپت تنها یک شباهت اسمی است. جاوا اسکریپت در درجه‌ی اول یک زبان اسکریپتی سمت کاربر برای وب است که از آن برای توسعه‌ی رابط کاربری استفاده می‌شود. برنامه‌های وب در زبان‌های سمت کاربر روی کامپیوتر کاربر اجرا و  از منابع سیستمی مثل رم و CPU کاربر استفاده می‌کنند.

جاوا اسکریپت

تا مدتی پیش از جاوا اسکریپت تنها در وب‌سایت‌ها برای انجام برخی رویداد‌های سمت کاربر (رویدادهایی که در مرورگر وب اجرا می‌شوند) استفاده می‌شد. بعد از مدتی پای فریم‌وُرک‌ها در جاوا اسکریپت باز شد و کارها با سادگی و سرعت هرچه‌تمام‌تر انجام پذیرفت. درواقع قبل از ورود فریم‌ورک‌ها در جاوا اسکریپت، ساخت وب اپلیکیشن‌ها هیچ‌گاه‌ به این سادگی نبود. ساخت وب اپلیکیشن‌ها به‌وسیله‌ی کتابخانه‌هایی مانند jQuery ،AngularJS ،Ember.js ،React و غیره انجام می‌شود.

علاوه‌بر وب اپلیکیشن‌های تحت مرورگر، از جاوا اسکریپت می‌توان برای ساخت اپلیکیشن‌های تحت سرور استفاده کرد. این‌ها اپلیکیشن‌هایی هستند که می‌توانند برای انجام برخی فعالیت‌ها مانند ذخیره‌ی اطلاعات در پایگاه داده به سرور متصل شوند. برای این منظور پلتفرمی تحت عنوان Node.js ارایه شده که با وجود عمر بسیار کم، جامعه‌ی بسیار فعالی دارد. پیشرفت تلفن‌های هوشمند و اپلیکیشن‌های آن‌ها بر کسی پوشیده نیست. جاوا اسکریپت هم برای عقب‌نماندن از این دنیا با ارایه‌‌ی فریم‌ورکی با نام PhoneGap به توسعه‌‌دهندگان این امکان را داده که برای سیستم‌‌های عامل‌ مختلف نرم‌افزارهای هیبریدی تولید کنند. تنها کافی است که با جاوا اسکریپت، HTML و CSS آشنا باشید تا بتوانید نرم‌افزار هیبریدی خود را برای هر سیستم‌ عاملی تولید کنید. از طرفی شرکت فیسبوک هم فروردین ۱۳۹۴ فریم‌ورکی را با نام  React Native ارایه کرد که به کمک آن می‌توان با جاوا اسکریپت اقدام به تولید نرم‌افزارهای Native روی این پلتفرم کرد.

روبی

سازندگان زبان برنامه‌نویسی «روبی» (Ruby) آن را این‌گونه توصیف کرده‌اند: «زبانی که به کمک آن برنامه‌نویسان با لذت و اشتیاق اقدام به تولید نرم‌ا‌فزار کنند.» یا «زبان برنامه‌نویسی‌ای که روی نیازهای انسان تاکید دارد نه روی نیاز‌های ماشین.»

ruby

روبی از طریق فریم‌ورک قدرتمند «روبی آن ریلز» (Ruby on Rails) که برای ساخت برنامه‌های تحت وب بهینه شده، محبوبیت خاصی را به‌دست آورده است. روبی به‌خوبی می‌تواند شما را در انجام پروژه‌های بزرگ همراهی کند. این زبان حاصل مطالعه‌ی خالق آن روی زبان‌های SmallTalk ،Ada ،Perl ،Eiffel و Lisp است.

پایتون

«پایتون» (Python) جزو محبوب‌ترین زبان‌های برنامه‌نویسی دانشگاه‌های ایالات متحده امریکا است. توسعه‌دهندگان از پایتون برای ساخت اپلیکیشن‌های دسکتاپ و موبایل استفاده می‌کنند. همچنین پایتون گزینه‌ی بسیار مناسبی برای انجام فعالیت‌های داده کاوی (Data Mining) است.

python

پایتون محبوبیت بالایی در جوامع علمی و دانشگاهی برای فعالیت در حوزه‌های تحلیل داده و بیوانفورماتیک دارد. از پایتون برای برنامه‌نویسی در ویندوز، مک و لینوکس می‌توان استفاده کرد. گوگل، دراپ باکس، پینترست، اینستاگرام، ردیت، بیت تورنت و Civilization IV  شرکت‌هایی هستند که از پایتون در بسیاری از پروژه‌هایشان بهره می‌برند.

پی‌اچ‌پی

«پی‌اچ‌پی» (PHP) یک زبان اسکریپتی سمت سرور و متن‌باز (Open Source) است. بسیاری از وب‌سایت‌هایی که روزانه از آن‌ها بازدید می‌کنید، به‌وسیله‌ی PHP ساخته شده‌اند. فیسبوک، یاهو، ویکی‌پدیا، تامبلر، وردپرس و بسیاری دیگر از سایت‌ها مواردی هستند که از PHP قدرت گرفته‌اند.

php

PHP قواعد دستوری سختی ندارد که این موضوع باعث می‌شود به‌راحتی بتوانید آن را یاد بگیرید. جالب است به این نکته اشاره کنیم که شما از همان اولین روزهای یادگیری PHP می‌توانید پروژه‌های خوبی تولید کنید که باعث بالا رفتن روحیه‌تان برای ادامه‌ی کار می‌شود.

جاوا

«جاوا» (JAVA) زبانی چندسکویی (Cross-Platform) و مستقل از سیستم‌ عامل است که ویژگی‌هایی مانند امنیت و قابلیت استفاده در پلتفرم‌های مختلف را برای توسعه‌دهندگانش به ارمغان می‌آورد. از جاوا برای ساخت اپلیکیشن‌های اندروید، برنامه‌های دسکتاپی و بازی‌ها می‌توان استفاده کرد.

java

جاوا زبانی کلاسیک و ریشه‌دار است که به‌خوبی از پس انجام پروژه‌های نرم‌افزاری بزرگ (Enterprise) برمی‌آید. علاوه‌براین «هدوپ» (Hadoop) یک فریم‌‌ورک تحت جاوا برای انجام پردازش روی داده‌های بزرگ (Big Data) است که در وب‌سرویس‌های یاهو، فیسبوک و آمازون مورد استفاده قرار می‌گیرد. بنابراین چه بخواهید برای تلفن همراهتان اپلیکیشن بسازید و چه بخواهید روی الگوریتم‌های پیچیده کار کنید، جاوا یک همراه خوب برای شما خواهد بود.

 C و ++C

از زبان برنامه‌نویسی C معمولا برای ساخت برنامه‌های سیستمی استفاده می‌شود. زبان برنامه‌نویسی C  یک زبان قابل آمیخته شدن با سایر زبان‌ها در سیستم عامل است. ++C یک زبان قدرت‌‌گرفته از C است. از ++C در ساخت موتورهای بازی‌سازی، نرم‌افزارهای دسکتاپی، اپلیکیشن‌‌های موبایل و حتی نرم‌افزاری تحت وب می‌توان استفاده کرد. ++C بسیار سریع و قدرتمند است؛ طوری‌که فیسبوک از آن برای انجام پردازش‌های سنگین استفاده می‌کند.

++C

اگر شما درک خوبی از زبان C داشته باشید در یادگیری سایر زبان‌های برنامه‌نویسی مشکلی نخواهید داشت. ازآنجاکه هنگام برنامه‌نویسی به زبان ++C / C برای انجام یک فعالیت ساده نیاز است که مقدار کد زیادی نوشته شود، بسیاری از برنامه‌نویسان مبتدی روحیه‌شان را در ابتدای کار از دست می‌دهند. فراموش نکنید که یادگیری C‌ یا ++C درک خوبی از منطق برنامه‌نویسی به شما می‌دهد. بنابراین اگر در ابتدای کار هستید به شما پیشنهاد می‌کنیم که برای داشتن درک خوب از برنامه‌نویسی مدتی روی یادگیری ++C / C وقت بگذارید ولی انتظار ساخت نرم‌افزارهای حرفه‌ای را نداشته باشید.

آبجکتیو-سی / سوییفت

درواقع «آبجکتیو-سی» (Objective-C) یک لایه‌ی ساخته‌شده روی زبان C است که به کمک آن می‌توان برای محصولات شرکت اپل اپلیکیشن ساخت. «سوییفت» (Swift) یک زبان برنامه‌نویسی ارایه‌شده به‌وسیله‌ی شرکت اپل است که سازگاری خوبی با Objective-C دارد. به مانند زبان پایتون، هدف سوییفت یادگیری آسان است؛ طوری‌که تازه‌کارها هم بتوانند به‌سادگی از آن بهره ببرند.

swift

شرکت اپل سوییفت را ارایه کرد تا به کمک آن‌ بتوان با حداقل کد نوشته‌شده، برنامه‌هایی با سرعت و امنیت بالا تولید کرد. اگر می‌خواهید برای آیپد و آیفون‌تان اپلیکیشنی حرفه‌ای تولید کنید می‌توانید از Objective-C یا سوییفت استفاده کنید. البته پیشنهاد ما به کسانی که تازه می‌خواهند شروع به یادگیری کنند، سوییفت است.

سی شارپ

«سی شارپ» (#C) محصولی از شرکت مایکروسافت و بر پایه‌ی فریم‌ورک «دات نت» (.net) است. از #C برای برنامه‌نویسی تحت وب (به‌وسیله‌ی ASP)، ساخت بازی‌های کامپیوتری و ساخت نرم‌افزارهای دسکتاپی می‌توان استفاده کرد.

#C

اگرچه در گذشته #C یک زبان چندسکویی نبوده ولی هم‌اکنون به کمک پروژه‌ای تحت عنوان Mono که به‌وسیله‌ی شرکت «زامارین» (Xamarin) ارایه شده، می‌توان از #C برای برنامه‌نویسی اندروید و iOS هم استفاده کرد.

اس‌‌ کیو‌‌ ال

اگرچه از «اس‌کیو‌ال» (SQL) در ایران زیاد به عنوان یک زبان برنامه‌‌نویسی یاد نمی‌شود و صرفا مهارتی الزامی در کنار سایر مهارت‌ها به شمار می‌رود. ولی با رشد اهمیت موضوعاتی مانند بزرگ‌ داده‌ها (Big Data) ترجیح‌مان بر این بود که SQL هم در این لیست قرار گیرد.

sql

از SQL برای کار روی پایگاه‌های داده در محیط‌‌‌های مختلف می‌توان استفاده کرد.  تقریبا در هر زمینه‌ی برنامه‌‌نویسی که بخواهید کار کنید، برای ذخیره‌‌سازی اطلاعات‌تان در پایگاه داده به SQL نیاز خواهید داشت. یادگیری SQL بسیار سریع و لذت‌بخش است. با یادگیری این زبان و حرفه‌ای شدن در آن می‌توانید به عنوان یک مدیر پایگاه داده کار کنید.

‌‌‌‌

با اطلاعاتی که در اختیارتان قرار دادیم باید بتوانید که یک زبان برنامه‌‌نویسی را برای یادگیری انتخاب کنید. شاید هم با خواندن این مقاله همچنان سوالاتی در ذهن‌تان در مورد انتخاب یک زبان برنامه‌نویسی وجود داشته باشد. سوالاتی درباره‌ی فرصت‌های شغلی هر کدام از زبان‌ها یا حتی جامعه‌ی پشتیبانی‌کننده و آینده‌ی هر کدام از آن‌ها. طی روزهای آینده با دیجی‌کالا مگ همراه باشید. ما به شما در انتخاب زبان برنامه‌نویسی مناسب کمک خواهیم کرد.

ادامه مطلب

مفهوم برنامه نویسی سیستم

مفهوم برنامه نویسی سیستم

برنامه نویسی سیستم چیست؟

بر اساس تعاریف جدید برنامه‌نویسی سطح پائین و برنامه‌نویسی سیستم یکی نیستند و این دو مفهوم به اشتباه یکسان فرض شده‌اند.

ترکیب دو ایده‌ی برنامه‌نویسی سطح پائین (کار با جزئیات سخت‌افزاری و پیاده‌سازی ماشین) و طراحی سیستم (ساخت و مدیریت یک مجموعه‌ی پیچیده از مؤلفه‌های مرتبط) به نظر غیرضروری می‌رسد؛ اما این قضیه تا چه اندازه صحیح است؟ و از تعریف مجدد سیستم‌ها به چه نتیجه‌ای می‌توان رسید؟

دهه‌ی ۱۹۷۰: پیشرفت اسمبلی

برای درک تکامل اصطلاح برنامه‌نویسی سیستم بازگشت به منشأ سیستم‌های کامپیوتری مدرن ضروری است. دقیقا مشخص نیست چه کسی این عبارت را اختراع کرده است اما بر اساس پژوهش‌ها تلاش‌های جدی برای تعریف سیستم‌های کامپیوتری تقریبا از اوایل دهه‌ی ۷۰ آغاز شده است. در مقاله‌ای با نام زبان‌های برنامه‌نویسی سیستم به این تعریف اشاره شده است:

یک برنامه‌ی سیستمی مجموعه‌ای یکپارچه از برنامه‌های فرعی یا زیربرنامه است، زیربرنامه‌ها یک مجموعه‌ی یکپارچه و بزرگ‌تر از مجموعه اجزا را تشکیل می‌دهند که اندازه و پیچیدگی آن فراتر از یک حد مشخص است. از نمونه‌های متداول می‌توان به سیستم‌هایی برای برنامه‌نویسی چندگانه، ترجمه، شبیه‌سازی، مدیریت اطلاعات و اشتراک‌گذاری زمانی اشاره کرد. فهرست زیر مشخصات برنامه‌های سیستمی را ارائه می‌دهد که بعضی از آن‌ها را می‌توان در برنامه‌های غیرسیستمی هم پیدا کرد و البته ممکن است یک سیستم مشخص تمام این ویژگی‌ها را به صورت یکجا نداشته باشد:

۱. مسئله‌ی قابل حل ماهیت گسترده‌ای دارد و شامل تعداد زیادی مسائل فرعی و متنوع است.

۲. از برنامه‌ی سیستمی برای پشتیبانی از برنامه‌های کاربردی و نرم‌افزاری دیگر استفاده می‌شود اما درعین‌حال می‌تواند بسته‌ی کاملی از برنامه‌ها هم باشد.

۳. برنامه‌ی سیستمی برای تولید پیوسته طراحی شده است نه به عنوان راه‌حلی یک جا برای حل یک مشکل در برنامه‌ها

۴. برنامه‌ی سیستمی از نظر تعداد و انواع ویژگی‌های تحت پشتیبانی به صورت پیوسته در حال تکامل است.

۵. یک برنامه‌ی سیستمی به یک ساختار یا برنامه‌ی مشخص داخل و میان ماژول‌ها (برای مثال برقراری ارتباط) نیاز دارد و معمولا توسط بیش از یک شخص یا گروهی از اشخاص طراحی و پیاده‌سازی می‌شود.

این تعریف تا حدودی قابل قبول است. سیستم‌های کامپیوتری معمولا دارای مقیاس گسترده و کاربرد طولانی هستند و به مرور زمان تغییر می‌کنند. البته با این که این تعریف بیشتر توصیفی است اما چشم‌انداز اصلی آن جداسازی زبان‌های سطح پائین از زبان‌های سیستمی است (برای مثال مقایسه‌ی اسمبلی با فرترن).

زبان سیستم

هدف از زبان برنامه‌نویسی سیستم فراهم کردن زبانی است که بتوان بدون نگرانی در مورد دستکاری بیت‌ها از آن استفاده کرد و درعین‌حال به کدی دست یافت که عملکرد آن از کدهای دستی بهتر باشد. چنین زبانی باید اختصار و خوانایی زبان‌های سطح بالا را با بازدهی فضا و زمان و دسترسی به امکانات سیستم‌عامل و ماشین زبان اسمبلر را ترکیب کند. زمان طراحی، نوشتن و اشکال‌زدایی باید بدون تحمیل سربار بر منابع سیستمی به حداقل برسند. پژوهشگرهای CMU زبانی به نام BLISS (زبانی برای برنامه‌نویسی سیستم) را منتشر کرده‌اند که به این صورت تعریف می‌شود:

BLISS یک زبان پیاده‌سازی است، البته با توجه به این که هدف تمام زبان‌های کامپیوتری پیاده‌سازی است، این تعریف کمی مبهم است. اما در واقع مفهوم عمومی این اصطلاح مدنظر است یعنی زبان‌های سطح بالایی که بیشتر بر یک برنامه‌ی مشخص مثل نوشتن سیستم‌های بزرگ نرم‌افزاری تولیدی برای یک ماشین مشخص تأکید می‌کنند.

مؤلفان، زبان پیاده سازی را بالاتر از اسمبلی و پائین‌تر از زبان طراحی می‌دانند

زبان‌های هدفمند مثل کامپایلر، کامپایلرها در این دسته قرار نمی‌گیرند و البته لزوما مستقل از ماشین هم نیستند. در این تعریف بر اصطلاح پیاده‌سازی تأکید می‌شود و از کلماتی مثل طراحی و مستندسازی استفاده نشده است؛ بنابراین از یک زبان پیاده‌سازی انتظار نمی‌رود که طراحی یک سیستم بزرگ یا مستندسازی آن را توصیف کند. مفاهیمی مثل استقلال ماشین، توصیف مشابهی از طراحی و پیاده‌سازی، خودمستندسازی و مفاهیم دیگر دارند و معیارهایی برای ارزیابی زبان‌های مختلف هستند.

در اینجا مؤلفان، زبان پیاده‌سازی را بالاتر از اسمبلی و پائین‌تر زبان طراحی می‌دانند. بر اساس پژوهش‌های قبلی، طراحی و پیاده سازی سیستم هرکدام زبان مجزایی دارند. آخرین مدخل مربوط به برنامه‌نویسی سیستم را می‌توان در یک متن آموزشی در مورد یادگیری برنامه‌نویسی سیستم مشاهده کرد که در ‍۱۹۷۲ نوشته شده است.

اما تعریف دقیق برنامه‌نویسی سیستم چیست؟

می‌توان کامپیوتر را مثل جانداری درنظر گرفت که از تمام دستورات اطاعت می‌کند. بر اساس یک تصور دیگر، کامپیوترها انسان‌هایی هستند که از فلز ساخته شده‌اند یا برعکس، انسان‌ها کامپیوترهایی هستند که از گوشت و خون تشکیل شده‌اند. با این حال، با نگاهی دقیق‌تر به کامپیوترها می‌توان به این نتیجه رسید که اساسا کامپیوترها ماشین‌هایی تابع دستورالعمل‌های مشخص و ابتدایی هستند.

در اولین روزهای اختراع کامپیوتر، مردم با دستورالعمل‌های ابتدایی بین دو حالت On و Off با کامپیوتر ارتباط برقرار می‌کردند. خیلی زود مردم به دنبال دستورالعمل‌های پیچیده‌تر رفتند. برای مثال می‌خواستند خروجی این مسأله را در کامپیوتر ببینند: X=30*Y؛ با توجه به این که Y=10 در نتیجه X کدام است؟ کامپیوترهای کنونی بدون برنامه‌های سیستمی قادر به درک چنین زبانی نیستند.

برنامه نویسی سیستممبانی برنامه‌نویسی سیستم

برنامه‌های سیستمی (برای مثال کامپایلرها، لودرها، پردازنده‌های ماکرو، سیستم‌های عامل) برای تطبیق بهتر کامپیوترها با نیازهای کاربران توسعه یافتند. علاوه بر این مردم به دنبال کمک یا دستیارهایی برای آماده‌سازی برنامه‌های خود بودند. این تعریف یادآوری می‌کند سیستم‌ها در خدمت مردم هستند حتی اگر صرفا زیرساخت‌هایی باشند که ارتباط مستقیمی با کاربرها ندارند.

دهه‌ی ۱۹۹۰: ظهور اسکریپت‌نویسی

در دهه‌ی ۷۰ و ۸۰ اغلب پژوهشگرها برنامه‌نویسی سیستم را نقطه‌ی مقابل برنامه‌نویسی اسمبلی می‌دانستند. در آن دوره ابزار خوبی برای ساخت سیستم‌ها وجود نداشت (البته هیچ اطمینانی از وجود Lisp در میان این زبان‌ها وجود ندارد هیچ کدام از منابع به Lisp اشاره نکرده‌اند، با این حال ماشین‌های Lisp وجود داشتند).

در اواسط دهه‌ی ۹۰، با ظهور زبان‌های اسکریپت‌نویسی داینامیک تغییرات عمده‌ای در زبان‌های برنامه‌نویسی رخ داد. بهبود سیستم‌های اسکریپت‌نویسی مثل Bash، زبان‌هایی مثل پرل (۱۹۸۷)، Tcl ، پایتون (۱۹۹۰)، Ruby ،PHP  و جاوا اسکریپت (۱۹۹۵) به توسعه‌ی برنامه‌نویسی کمک کرد. این تغییرات در مقاله‌ی تأثیرگذار اوسترهاوت با عنوان  اسکریپت نویسی: برنامه‌نویسی سطح بالای قرن بیست‌ویک (۱۹۹۸) به اوج خود رسیدند. به موج حاصل از این تغییرات دوگانگی اوسترهاوت بین زبان‌های برنامه‌نویسی سیستمی و زبان‌های اسکریپت‌نویسی گفته می‌شود.

زبان‌های اسکریپت‌نویسی برای وظایفی متفاوت با زبان‌های برنامه‌نویسی سیستمی طراحی شده‌اند و همین مسأله ریشه‌ی تفاوت‌های بنیادی این دو زبان است. زبان‌های برنامه‌نویسی سیستمی برای تولید ساختارهای داده‌ای و الگوریتم‌ها از ابتدایی‌ترین عناصر کامپیوتری مثل کلمات حافظه طراحی شده‌اند.

در مقابل، زبان‌های اسکریپت‌نویسی برای چسباندن طراحی شده‌اند: مجموعه‌ای از مؤلفه‌های قدرتمند دارند و در اصل برای اتصال این مؤلفه‌ها با یکدیگر در نظر گرفته شده‌اند. زبان‌های برنامه‌نویسی برای کمک به مدیریت پیچیدگی،Strongly Typed یا وابسته‌ی زیاد به نوع هستند؛ مفهومی که در مقابل Weakly Typed یا وابسته کم به نوع قرار می‌گیرد. به این معنی که باید نوع متغیرها، ورودی‌ها و خروجی‌‌ها توابع و… دقیقا تعیین شوند و کامپایلر پیش از اجرای کدها و رسیدن به مرحله‌ی اجرای Runtime و بیلد، این مورد را بررسی می‌کند. در حالی‌که زبان‌های اسکریپت‌نویسی Typeless (بدون نوع) هستند. برای مثال می‌توان از تعریف متغیر بدون نوع در آن‌ها استفاده کرد و کامپایلر تمام کارها را برعهده دارد. از این‌رو برای ساده‌سازی روابط بین مؤلفه‌ها و توسعه‌ی سریع برنامه‌ها از آن‌ها استفاده می‌شود. گرایش‌های جدید از جمله ماشین‌های سریع‌تر، زبان‌های اسکریپت‌نویسی بهتر، اهمیت فزاینده‌ی واسطه‌های کاربری گرافیکی و معماری‌های مؤلفه‌ای و رشد اینترنت به شدت کاربرد زبان‌های اسکریپت‌نویسی را بالابرده‌اند.

در سطح تخصصی اوسترهاوت اسکریپت‌نویسی و سیستم را در راستای محورهای Type Safety (ایمنی نوع) و دستورالعمل به ازای هر عبارت مقایسه کرده است. Type Safety یا ایمنی نوع به قابلیت یا ویژگی یک زبان برنامه‌نویسی برای جلوگیری یا کاهش رخ دادن Type Errors یا خطاهای ناشی از عدم تطابق نوع گفته می‌شود. برای مثال تعریف متغیری از نوع اعشاری و به کارگیری آن به جای اعداد صحیح، منجر به وقوع یک Type Error می‌شود. اوسترهاوت در سطح طراحی بر نقش‌های جدید هر کلاس زبانی تأکید می‌کند: برنامه‌نویسی سیستم برای ساخت مؤلفه‌ها و اسکریپت‌نویسی برای چسباندن آن‌ها به یکدیگر درنظر گرفته می‌شوند.

نمودار اوسترهاوت

مقایسه‌ی زبان‌های برنامه‌نویسی بر اساس سطح و درجه‌ی Typing آن‌ها (زبان‌های سطح بالاتر دستورالعمل‌های ماشین بیشتری را برای هر عبارت زبانی اجرای می‌کنند) زبان‌های برنامه‌نویسی سیستم مثل C از نوع قوی و سطح متوسط هستند (۵ تا ۱۰ دستورالعمل به ازای هر عبارت). زبان‌های اسکریپت‌نویسی مثل Tcl از نوع ضعیف و سطح بالا هستند (۱۰۰ تا ۱۰۰۰ دستورالعمل به ازای هر عبارت).

تقریبا در همین زمان بود که زبان‌های موسوم به Garbage Collected به محبوبیت رسیدند. Garbage Collection، زباله‌روبی یا بازیافت حافظه، نوعی مدیریت حافظه‌ی خودکار است. در طی این فرآیند فضایی از حافظه‌ی کامپیوتر که قبلا درگیر نگهداری داده‌ی موردنیاز یک برنامه‌ی کامپیوتری بوده است و اکنون آن برنامه دیگر نیازی به این داده ندارد، آزاد می‌شود و برای ذخیره‌ و نگه‌داری داده‌ی جدید مورد استفاده قرار می‌گیرد.

در این دهه جاوا و #C به غول‌های برنامه‌نویسی که امروزه می‌شناسیم تبدیل شدند. با این حال این دو زبان از ابتدا در گروه زبان‌های برنامه‌نویسی سیستمی قرار نگرفتند و از آن‌ها برای طراحی تعداد زیادی از بزرگ‌ترین سیستم‌های نرم‌افزاری دنیا استفاده شده است. اوسترهاوت به طور آشکار توضیح می‌دهد که در دنیای اینترنت کنونی از جاوا برای برنامه‌نویسی سیستم استفاده می‌شود.

دهه‌ی ۲۰۱۰: مرزها محو می‌شوند

از دهه‌ی گذشته مرز بین زبان‌های اسکریپت‌نویسی و زبان‌های برنامه‌نویسی سیستمی در حال محو شدن است. شرکت‌هایی مثل Dropbox توانستند سیستم‌های مقیاس‌پذیر و بزرگی را روی پایتون توسعه دهند. از جاوا اسکریپت برای تبدیل UI-های پیچیده و بلادرنگ (Real-Time) در میلیاردها صفحه‌ی وب استفاده شده است. طبقه‌بندی تدریجی در پایتون، جاوا اسکریپت و دیگر زبان‌های اسکریپت‌نویسی شدت پیدا کرد و به این صورت گذار از کد اولیه به کد تولید تنها با اضافه کردن اطلاعات نوع ایستا امکان‌پذیر شد.

درعین‌حال منابع انبوه مهندسی برای زبان‌های ایستا (مثل جاوا اسکریپت) و زبان‌های پویا (مثل LuaJIT از Lua یا V8 جاوا اسکریپت و PyPy پایتون) وارد کامپایلرهای JIT شدند و آن‌ها را به رقیب عملکردی سیستم‌های زبان‌های برنامه‌نویسی سیستمی (C++، C) تبدیل کردند. سیستم‌های توزیع‌شده و بزرگی مثل اسپارک در اسکالا نوشته شدند. زبان‌های برنامه‌نویسی جدید مثل جولیا و سویفت هم محدودیت‌هایی را برای زبان‌های زباله‌روب (Garbage Collector) به وجود آوردند.

هیئتی به نام برنامه‌نویسی سیستم در سال ۲۰۱۴ و بعد از آن، شامل بزرگ‌ترین مغزهای زبان‌های برنامه‌نویسی کنونی از جمله بیجارن استروستراپ (خالق ++C)، روب پایک (خالق Go)، آندری آلکساندرسکو (توسعه‌دهنده‌ی D) و نیکوماتساکیس (توسعه‌دهنده‌ی Rust). زبان برنامه‌نویسی سیستم در سال ۲۰۱۴ را این گونه توصیف می‌کنند:

  • نیکو ماستاکیس: برنامه‌نویسی سیستم مانند نوشتن برنامه‌های سمت کلاینت است، یعنی دقیقا نقطه‌ی مقابل GO قرار می‌گیرد. در این برنامه‌ها تأخیر بالایی وجود دارد و همین‌طور پیش‌نیازهایی مثل امنیت بالا و پیش‌نیازهای دیگر وجود دارند که در سمت سرور ارائه نمی‌شوند.
  • بیجارت استروستراپ: برنامه‌نویسی سیستم از کار با سخت‌افزار سرچشمه گرفته است که بعد از آن پیچیدگی برنامه‌ها افزایش یافت. در برنامه‌نویسی سیستم با این پیچیدگی‌ها سروکار دارید، پس اگر با مشکلاتی مثل محدودیت منابع روبه‌رو شدید، بدانید در قلمروی برنامه‌نویسی سیستم قرار گرفته‌اید. محدودیت‌ها تعیین می‌کنند زبان، برنامه‌نویسی سیستم است یا خیر. آیا حافظه‌ رو به اتمام است؟ آیا زمان شما رو به پایان است؟
  • راب پایک: وقتی برای اولین بار GO را معرفی کردیم آن را یک زبان برنامه‌نویسی سیستم خواندیم و البته متأسفانه افرادی به اشتباه تصور کردند این زبان برای نوشتن سیستم عامل طراحی شده است. به عقیده‌ی ما این زبان مخصوص نوشتن سرور است یا می‌توان گفت یک زبان زیرساخت ابری است. بر اساس یک تعریف دیگر به برنامه‌نویسی که در کلود اجرا شود برنامه‌نویسی سیستم گفته می‌شود.
  • آندری آلکساندرسکو: من چند تست برای تعریف برنامه‌نویسی سیستم اجرا کردم. زبان‌های برنامه‌نویسی سیستم باید امکان نوشتن تخصیص‌گر حافظه را بدهند. در این زبان باید قادر به ساخت یک شماره در اشاره‌گر باشید زیرا عملکرد سخت‌افزار به این صورت است.

جاوا اسکریپت

رابطه‌ی برنامه‌نویسی سیستم با عملکرد بالا چیست؟ با محدودیت‌های منابع و کنترل سخت‌افزاری چطور؟ یا زیرساخت ابری؟ به‌طورکلی به نظر می‌رسد زبان‌هایی مثل C ،C++ ،Rust و D از نظر سطح انتزاع و خلاصه بودن از ماشین متمایز می‌شوند. این زبان‌ها جزئیات سخت‌افزار مثل تخصیص حافظه یا قالب و مدیریت دقیق منابع را نمایش می‌دهند.

یک تعریف دیگر هم برای آن وجود دارد: در صورت روبه‌رو شدن با مشکل بازدهی یا بهینه‌سازی چه مقدار آزادی برای حل آن دارید؟ در زبان‌های برنامه‌نویسی سطح پائین با کنترل دقیق جزئیات ماشین می‌توانید هر مشکلی را حل کنید. می‌توانید دستورالعمل را بر کل آرایه‌ها اعمال کنید و ساختار داده‌ای به‌دست‌آمده را در کش (Cache)ذخیره کنید. همان‌طور که انواع ایستا مثل جمع‌ اعداد صحیح با اطمینان بیشتری اجرا می‌شوند زبان‌های برنامه‌نویسی سطح پائین هم اجرای مطمئن‌تر دارند به‌طوری‌که کدها همان‌طور که تعریف می‌شوند اجرا می‌شوند.

در مقابل، بهینه‌سازی زبان‌های تفسیر شده بسیار پیچیده است. به‌راحتی نمی‌توان از اجرای قابل‌انتظار کد توسط Runtime اطمینان حاصل کرد. همین مسئله در کامپایلرهای موازی‌ خودکار هم وجود دارد (Vectorizaiton یا برنامه‌نویسی آرایه‌ای یک مدل برنامه‌نویسی نیست. بلکه مانند نوشتن یک واسطه در پایتون است، برای مثال انتظار دارید یک تابع در صورت فراخوانی خروجی int (صحیح) تولید کند).

امروز: بنابراین برنامه‌نویسی سیستم چیست؟

اغلب به برنامه‌نویسی سطح پائین، برنامه‌نویسی سیستم می‌گویند (با اشاره به جزئیات ماشین)؛ اما معنی سیستم چیست؟ با بازگشت به تعریف ۱۹۷۲ می‌توان گفت:

۱.مسئله‌ی قابل حل، ماهیت گسترده‌ای دارد و شامل تعداد زیادی مسائل فرعی و متنوع است.

۲. از برنامه‌ی سیستمی برای پشتیبانی از برنامه‌های کاربردی و نرم‌افزاری دیگر استفاده می‌شود اما درعین‌حال می‌تواند بسته‌ی کاملی از برنامه‌ها هم باشد.

۳. برنامه‌ی سیستمی برای تولید پیوسته طراحی شده است نه به عنوان راه‌حلی یک جا برای حل مشکلی در برنامه‌ها.

۴. برنامه‌ی سیستمی از نظر تعداد و انواع ویژگی‌های تحت پشتیبانی به صورت پیوسته در حال تکامل است.

۵. یک برنامه‌ی سیستمی به یک ساختار یا برنامه‌ی مشخص داخل و میان ماژول‌ها (برای مثال برقراری ارتباط) نیاز دارد و معمولا توسط بیش از یک شخص یا گروهی از اشخاص طراحی و پیاده‌سازی می‌شود.

به نظر می‌رسد این گزینه‌ها بیشتر به مشکلات مهندسی نرم‌افزار اشاره دارند (پیمانه‌ای بودن، قابلیت استفاده‌ی مجدد، تکامل کد) تا مشکلات عملکردی سطح پائین. این یعنی هر زبان برنامه‌نویسی که حل این مشکلات را در اولویت قرار دهد یک زبان برنامه‌نویسی سیستمی است! البته این گزینه‌ها برای تعریف یک زبان برنامه‌نویسی سیستمی کافی نیستند؛ بنابراین می‌توان گفت زبان‌های برنامه‌نویسی پویا یا داینامیک از زبان‌های سیستمی دور هستند.

سی پلاس پلاس

اما مفهوم دقیق این تعریف چیست: زبان‌های تابعی مثل Ocaml و Haskell بیشتر از زبان‌های سطح پائین مثل C یا ++C به سیستم وابسته هستند. هنگام آموزش برنامه‌نویسی باید اصول برنامه‌نویسی تابعی مثل ارزش ثبات، تأثیر سیستم‌های نوع غنی در بهبود طراحی واسطه و استفاده از توابع مرتبه بالاتر را درنظر گرفت. مدارس باید برنامه‌نویسی سیستم و سطح پائین را آموزش دهند.

بنابراین آیا تفاوتی بین برنامه‌نویسی سیستم و مهندسی نرم‌افزار وجود دارد؟ پاسخ منفی است اما مشکل اینجاست که مهندسی نرم‌افزار و برنامه‌نویسی سطح پائین اغلب اوقات به صورت مجزا تدریس می‌شوند. با این حال اغلب کلاس‌های مهندسی نرم‌افزار معمولا بر شعار نوشتن واسطه‌ها و تست‌های مناسب جاوا متمرکز هستند، به همین دلیل لازم است روش طراحی سیستم با توجه به محدودیت‌های زیاد منابع آموزش داده شود.

بهتر است به جای عبارت برنامه‌نویسی سیستم از برنامه‌نویسی سطح پائین استفاده شود

شاید به این دلیل برنامه‌نویسی سطح پائین را سیستم می‌نامند که جذاب‌ترین سیستم‌های نرم‌افزاری از نوع سطح پائین هستند (برای مثال، پایگاه داده‌ها، شبکه‌ها، سیستم‌های عامل و…). از آنجا که سیستم‌های سطح پائین محدودیت‌های زیادی دارند، برای طراحی آن‌ها نیاز به تفکر خلاق است.

در قدم بعدی، برنامه‌نویس زبان سطح پائین باید به این سؤال پاسخ دهد که کدام ایده‌های طراحی سیستم را می‌توان برای کار با سخت‌افزار مدرن تطبیق داد. انجمن Rust در این رابطه عملکرد نوآورانه‌ای داشته است، این انجمن چگونگی پیاده‌سازی اصول برنامه‌نویسی تابعی یا طراحی نرم‌افزاری بر مسائل سطح پائین را بررسی می‌کند (برای مثال مسائلی مثل قراردادها، کنترل خطا یا امنیت حافظه).

به طور خلاصه بهتر است به‌جای عبارت برنامه‌نویسی سیستم از برنامه‌نویسی سطح پائین استفاده کرد. اهمیت طراحی سیستم‌های کامپیوتری به عنوان یک رشته یا زمینه به خاطر نام آن نیست؛ بنابراین جداسازی این دو مفهوم، طراحی زبان برنامه‌نویسی را شفاف می‌کند و دیدگاه‌های مشترکی را نسبت به این دو حوزه به وجود می‌آورد: چگونه می‌توان سیستمی را حول محور ماشین یا برعکس طراحی کرد؟

ادامه مطلب

آشنایی با تاریخچه برنامه نویسی

آشنایی با تاریخچه برنامه نویسی


اگرچه برنامه نویسی یک اختراع جدید محسوب می‌شود اما این در حالی است که ایده ی مجبور کردن یک ماشین یا دستگاه برای انجام یکسری دستورات خاص به سال‌ها پیش -چیزی در حدود یک قرن پیش- باز می گردد. در واقع، یکی از ابتدایی ترین طرح ها برای یک ماشین قابل برنامه‌ریزی -یا همان کامپیوتر- از کسی به نام Charles Babbage در سال 1834 گرفته شد.

در‌ واقع وی پیشنهاد ساخت یک ماشین بخار که به صورت مکانیکی یکسری کارها را انجام دهد -که تحت عنوان موتور تحلیلگر شناخته می‌شود- را داده بود. برخلاف سیستم‌های محاسبه ی آن روز که تنها می توانستند یک عمل محاسباتی را انجام دهند، موتور تحلیلگر آقای چارلز بابج چندین کار همزمان را می‌توانست انجام دهد. دستوراتی که به ماشین داده می‌شد از طریق یکسری کارت ها انجام می پذیرفت که با تغییر تعداد این کارت ها و نوع آن ها، هر کسی می‌توانست دستورات مد نظر خود را به ماشین برای محاسبه ی آن‌ها بدهد.

ایده ی ماشین‌های قابل برنامه‌ریزی توجه خانمی به نام Ada Lovelace را به خود جلب کرد که یک ریاضیدان بود. لذا او برنامه‌ای نوشت -یا بهتر است بگوییم کارت هایی ترتیب داد- که تعدادی عدد خاص را پشت سر هم چاپ می‌کرد (با توجه به این که این خانم اولین کسی بود که کار خاصی را با Analytical Engine یا همان موتور تحلیلگر انجام داد، وی را می‌توان به نوعی اولین برنامه نویس دنیا نیز تلقی کرد که نامگذاری زبان برنامه نویسی Ada هم به احترام وی صورت گرفته است.)

چیزی پس از گذشت یک‌صد سال، اولین کامپیوتر به معنای واقعی کلمه در سال 1943 توسط ارتش ایالات متحده طراحی شد. این ماشین که Electronic Numerical Integrator and Computer یا به اختصار ENIAC نامیده شد، از کابل ها و سوییچ های مختلفی تشکیل شده بود و برای دستور دادن به آن، برنامه نویس می بایست جای کابل ها و سوییچ ها را تغییر دهد (جالب است بدانیم که اولین برنامه نویسان این کامپیوتر همگی خانم بوده اند!) نکته ی اصلی اینجا است که کامپیوترهای آن موقع بسیار حجیم و گران بودند و کار کردن با آن ها واقعا تخصص نیاز داشت!

ادامه مطلب

برنامه نویسی چیست؟

برنامه نویسی چیست؟


به زبان خیلی ساده،‌ برنامه نویسی عبارت است از نوشتن دستوراتی که یک سیستم -مثل کامپیوتر- آن‌ها را متوجه شده و دستورات ما را یکی پس از دیگری اجرا می کند. حال، یک زبان برنامه نویسی لغات، دستورات و قوانینی را در اختیار ما به عنوان یک برنامه نویس قرار می‌دهد که از آن طریق می‌توانیم با کامپیوترها و سیستم‌های کامپیوتری صحبت کنیم (دقیقاً به همان صورت که ما از واژگان زبان شیرین فارسی برای ارتباط با یکدیگر استفاده می‌کنیم و حرف همدیگر را می فهمیم!)

به خاطر داشته باشید
به مجموعه دستوراتی که در قالب یک پکیج قرار می‌گیرند و در اختیار سیستم گذاشته شده و سیستم هم آن را متوجه می شود،نرم‌افزار یا اپلیکیشن گفته می شود.

توجه داشته باشیم که یک برنامه ی کامپیوتری چیزی بیش از حل یک مسأله نیست. به عبارت دیگر، نرم‌افزارها یا اپلیکیشن ها به منظور حل یک مشکل خاص طراحی شده و به بازار عرضه می شوند. حال هرچه این مشکل بزرگ‌تر و جهانی تر باشد، آن نرم‌افزار هم کاربردی‌تر و معروف تر خواهد شد.

در حقیقت، کسانی که علاقمند به برنامه نویسی هستند می بایست سعی کنند یکی از دغدغه ها یا مشکلات جامعه ی خود را برطرف سازند تا نرم‌افزار ایشان با اقبال عمومی رو به رو شود. یک برنامه نویس پیش از شروع به کدنویسی و انجام پروژه، دقیقاً می بایست بداند که قرار است چه مشکلی را حل نماید و مهم تر از یافتن مشکل، این مسئله که آیا مشکلی که وی در صدد حل آن است آیا واقعا دغدغه درصد قابل توجهی از جامعه است یا گروهی کوچکی از کاربران را پوشش می دهد.

هر برنامه کامپیوتری یا به عبارتی هر نرم افزار مجموعه ای از دستوراتی است که به ترتیب خاصی به کامپیوتر داده می شوند و یکی پس از دیگری اجرا می شوند. به طور مثال یک ویروس -که یک برنامه ی مخرب کامپیوتری است- دستوراتی بر مبنای تخریب و یا از بین بردن بخشی از اطلاعات ذخیره شده روی کامپیوتر را دارا است. برای روشن تر شدن مطلب، نرم افزار را به یک مثال از زندگی روزمره مان تشبیه می کنیم. فرض را بر این بگذاریم که خودروی شخصی شما خراب می شود و شما مجبور می شوید که آن را نزد مکانیکی ببرید. مکانیک پس از عیب یابی خودروی شما از شاگرد خود می خواهد که موارد ذیل را به ترتیب اجرا کند:

اول ماشین را خاموش کند. دوم کاپوت ماشین را بالا بزند. سوم روکش انژکتور را بردارد. چهارم پس از باز کردن انژکتور سوزن سوم آن را تعویض کند. پنجم انژکتور را مجدداً سوار کند. ششم روکش آن را نصب کند. و در نهایت کاپوت ماشین را بسته و استارت بزند.

در مثال فوق مکانیک به منزله برنامه نویس است و شاگرد هم به منزله اجرا کننده و یا همان کامپیوتر. مفهوم تعمیر شدن ماشین را نیز می توان به عملیاتی تشبیه کرد که یک نرم افزار انجام می دهد. هر یک از دستوراتی را که مکانیک به شاگردش می دهد همانند همان دستوراتی است که ما به عنوان برنامه نویس به کامپیوتر می دهیم تا کاری را انجام دهد. حال اگر این دستورات به نحوی باشند که کار مثبتی صورت گیرد ما یک نرم افزار تولید کرده ایم و چنانچه این دستورات موجب ایجاد خللی در سیستم شوند و به جایی صدمه بزنند ما یک بدافزار یا ویروس طراحی کرده ایم (در مثال تعمیر خودرو، شاگرد مکانیک می توانست به جای تعوض سوزن انژکتور، نه تنها سوزن را تعویض نکند بلکه از عمد به مابقی سوزن ها هم صدمه بزند!)

در برنامه نویسی اصطلاحاً به هر دستوری که می خواهیم اجرا شود یک Statement گفته می شود. حال برای نوشتن تعدادی Statement ما نیاز به یک ویرایشگر متن داریم تا بتوانیم دستورات مد نظر را در آن وارد سازیم.

 نکته
توجه داشته باشیم که هدف از یادگیری برنامه نویسی، این نیست که ما برنامه نویس زبان پایتون یا برنامه نویس زبان سی شویم بلکه هدف این است که ما یک برنامه نویس خوب شویم و زبان‌های برنامه نویسی مختلف صرفاً به مثابه ی ابزاری برای انجام کارهای ما هستند.یک برنامه نویس خوب با هر زبانی می‌تواند یک محصول منحصر به فرد تولید کند اما یک برنامه نویس بد، حتی اگر بهترین و سریع‌ترین زبان برنامه نویسی دنیا را در اختیار وی قرار دهیم، باز هم تضمینی ایجاد نمی‌کند که برنامه اش اثربخش باشد.

خوشبختانه برنامه نویسی مهارتی است که الزاماً نیاز به دانشگاه رفتن ندارد و هر کسی که صرفاً علاقمند به یادگیری آن باشد می‌تواند ظرف مدت چند ماه -و نهایتاً یک سال- به یک برنامه نویس در حوزه ای که به آن علاقمند است مبدل شود.

برخی از افراد بر این باورند که برای برنامه نویس شدن نیاز است تا تحصیلات دانشگاهی داشت یا یک متخصص علم ریاضیات بود. درست است که داشتن ذهن ریاضیاتی و تحلیلی به هرچه بهتر شدن شما به عنوان یک برنامه نویس کمک می کند، اما این اصلاً بدان معنا نیست که اگر شما متخصص ریاضیات نباشید نمی‌توانید به یک برنامه نویس موفق مبدل شوید (در واقع این باور نادرست شبیه به آن است که یک زن و شوهر برای بچه‌دار شدن، هر دو می بایست لیسانس بیولوژی داشته باشند!)

ادامه مطلب

مفهوم فایل .Htaccess چیست؟

مفهوم فایل .Htaccess چیست؟

 

استفاده از Htaccess این امکان را به شما می دهد که رفتار سایت خود و یا یک پوشه ی خاص را کنترل نمایید.در صورتی که این فایل در روت اصلی هاست قرار داده شود, بر روی کل سایت تاثیرگذار خواهد بود و اگر در پوشه ای قرار داده شود در همان مسیر تاثیر می گذارد.

 

کاربرد Htaccess در سرورهای لینوکسی ما:

۱-سفارشی کردن صفحات خطا در سایت شما

۲-محافظت از سایت با تنظیم پسورد

۳-قراردادن سطح دسترسی برای سایت  با استفاده از آی پی

۴-تغییر صفحات پیش فرض سایت

۵-ریدایرکت کاربران به صفحات دیگر

۶-اضافه کردن انواع MIME

فایل Htaccess , یک فایل متنی ASCII با نام .Htaccess است.برای ایجاد این فایل اطمینان حاصل نمایید که ویرایشگر متنی که استفاده می کنید از Word wrap استفاده نکند.برخی ویرایشگر ها (از قبیل msword یا Notepade که از Word Wrap استفاده می کند) کد های اسکی خاصی را به فایل متنی اضافه می کند که فایل Htaccess با این کاراکترها نمی تواند به خوبی کار کند.

این فایل یک فایل مخفی است که وجود آن بر روی سرور به کنترل تعامل کاربران با وب سایت کمک می کند .فایل .Htaccess این قابلیت را دارد که ترافیک بازدیدکنندگان سایت را کنترل کند .همان طور که شما می بینید فایل .Htaccess نام ندارد  و تنها پسوند آن قابل مشاهده است که نوع فایل را مشخص می کند .

تنها در صورتی فایل .Htaccess  را مشاهده می کنید که در بخش file manager  تنظیم نمایید فایل های مخفی را به شما نشان دهد.برای این کار بر روی file manager کلیک نمایید و گزینه ی  show hidden files را انتخاب نمایید.

چه کاری می توان با فایل htaccess انجام داد؟

شما ممکن است که بخواهید وب سایت خود را حفاظت نمایید و از password protect استفاده کنید.در واقع تنظیمات مربوط به password protect در .htaccess انجام می شود.بسیاری از توابع که در htaccess وجود دارد ارتباطی به شما ندارد و به صورت اتوماتیک توسط cpanel نوشته می شود.

توابع دیگر فایل htaccess شامل لینک های ممنوعه و rewriting URLs و تنظیمات صفحات پیش فرض, ایجاد ریدایرکت ها, و موارد دیگر می باشد.پی بردن به اینکه چطور فایل htaccess بر روی کل اکانت تاثیرگذار است, بسیار مهم است.یک تغییر در فایل htaccess می تواند بر روی وب سایت شما تاثیرگذار باشد.به همین علت قبل از هر تغییری حتما فایل بک آپ تهیه شود.

عیب یابی خطاهای ناشی از فایل .htaccess

اگر شما در وب سایت خود خطا  مشاهده می کنید اغلب موارد htaccess مقصر است , شما می توانید این مورد را به راحتی با تغییر نام فایل htaccess تست نمایید.من در اغلب اوقات فایل htaccess را به oldhtaccess تغییر می دهم و لود سایت را بررسی می کنم.اگر سایت بدون مشکل لود شود مورد مربوط به تنظیمات htaccess است.

اگر سایت شما با خطا مواجه است و با تغییر در تنظیمات php, تغییری  مشاهده نمی کنید شما میبایست فایل php.ini را به گونه ای ایجاد نمایید که روی همه ی زیر پوشه ها تاثیرگذار باشد.این مورد الزام به  recursive کردن فایل php.ini دارد که به صورت زیر قابل انجام است:

به روز رسانی suPHP_ConfigPath خود در فایل .htaccess

در صورتی که بخواهید فایل php.ini یک فایل recursive باشد(بر روی public-html و زیر پوشه های آن تاثیرگذار شود) می بایست خط کد زیر را به فایل htaccess اضافه نمایید.

         suPHP_ConfigPath /home/username/public_html

این خط کد مشخص می کند فایل php.ini که recursive  است در چه موقعیتی قرار گرفته است و اطمینان حاصل نمایید که یوزر cpanel جایگزین username شود.

این تغییرات فورا اعمال می شود و می توانید نتیجه ی تنظیمات را مشاهده نمایید.

ادامه مطلب

ساختار برنامه نویسی شی گرا (OOP)

ساختار برنامه نویسی شی گرا (OOP)

یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی‌ها می‌باشند. در واقع در این روش برنامه نویسی، برنامه به شیء گرایش پیدا می‌کند. برنامه نویسی شیئ گرا یک مفهوم طراحی است. با استفاده از برنامه نویسی شیئ گرا می توانید برنامه های تحت وب را ایجاد کنید.

ساختار برنامه نویسی شی گرا (OOP)

توضیح مفاهیم اولیه

1. شیئ(Object)- یک شیئ نمونه ای از یک کلاس است و تعریفی شبیه به اشیائ دنیای واقعی دارد. اشیاء می توانند هرچیزی مانند خودکار، مداد، کتاب، میز و غیره باشند. یک شیئ موجود خصوصیاتی نیز به همراه دارد و این خصوصیات در اشیاء مختلف متفاوت هستند.

برای نمونه یک ماشین را مثال می زنیم. یک ماشین خصوصیت هایی مانند رنگ، مدل، برند و غیره را دارد، همچنین رفتارهایی مانند حرکت به جلو یا عقب را نیز دارد. اشیاء مختلف خصوصیت ها و رفتارهای متفاوتی نیز دارند.

مثال دیگر می توان تلویزیون را نام برد. تلویزیون خصوصیت هایی مانند رنگ، برند، اندازه و مدل را دارد و رفتارهایی مانند روشن یا خاموش شدن نیز به آن تعلق دارد. در این جا می بینیم که هر دو شیئ رفتارهای متفاوتی دارند.

2. کلاس– کلاس ها بسته هایی هستند که روی یک شیئ تعریف می شوند. به عبارت دیگر می توان گفت که کلاس یک طرح اولیه است.کلاس تمام خواص و رفتار یک شیئ را توصیف می کند. به تعریف دیگر کلاس ها صفات و متدهای اشیاء از نوع خود را تعریف می کنند.

مثال: همان ماشینی که در بالا ذکر کردیم نشان می دهد که یک ماشین باید خصوصیاتی مانند رنگ، تعداد در و غیره را داشته باشد و این یک شیئ است که 4 در دارد و رنگ آن قرمز است.یا از لحاظ برنامه نویسی می توانیم بگوییم که این ماشین نمونه ای از کلاس ماشین است. بنابراین بازنمایی ساختاری از شیئ را کلاس می گویند. شما باید قبل از ایجاد هر نوع شیئ ای یک کلاس بسازید.

مزایای استفاده از برنامه نویسی شیئ گرا

مزایای بسیاری برای OOP در برنامه نویسی شیئ گرا وجود دارد.

قابلیت استفاده مجدد: فرض کنید یک کلاس ایجاد شده با نام Car دارید و و در برخی از نقاط اپلیکیشن خود از آن استفاده کرده اید.پس می توانید همان کلاس را در اپلیکیشن های مشابه نیز استفاده کنید.

نگهداری آسان: نگهداری و تغییر کدهای موجود بسیار آسان است چرا که می توانیم یک شیئ جدید فقط با ایجاد تفاوت های کوچک در نمونه موجود، ایجاد کنیم.

 ویژگی های برنامه نویسی شیئ گرا

1. در اینجا شما می توانید داده و توابعی را در صورت نیاز به راحتی اضافه کنید.

2. در اینجا داده ها مخفی هستند و نمی توانند توسط توابع دیگر در دسترس قرار بگیرند.

3. برنامه ها به موجودیت های شناخته شده با نام شیئ تقسیم شده است.

موجودیت ها(Entity): یک موجودیت اغلب گروهی از مردم را نشان می دهد(مثل فرزندان، اپلیکیشن ها) اما همچنین می تواند گروهی از اشیاء (مانند کتاب های درسی)، فعالیت ها ( مانند تکالیف) و یا مفاهیم را نیز نشان دهد.

یک برنامه نویس شیئ گرا باید شبیه اشیاء فکر کند. برنامه نویسان سنتی مانند کامپیوتر فکر می کنند.

برای مدیریت کلاس های مختلف یک سیتم نرم افزاری و برای کاهش پیچیدگی آن، تکنیک های متعددی وجود دارد. که به آن مفاهیم OOP می گویند. 4 مفهوم اصلی در OOPS استفاده می شود. که به صورت زیر هستند:

ارث بری(Inheritance):قابلیتی برای ایجاد کلاس جدید از یک کلاس موجود را ارث بری می گویند. با استفاده از مثال زیر معنای ارث بری را بهتر درک می کنیم.

اجازه دهید یک مثال از زندگی روزمره بیان کنیم. فرض کنیم که شخصی مرده است پس تمام اموال او برای فرزندانش به ارث می رسد(اموال می تواند، حقوق، خصوصیت ها و غیره باشد). در روشی مشابه این مسئله در مورد OOP اتفاق میافتد که کلاس پایه (یا کلاس والد) متدها و خصوصیت هایی دارد که توسط زیر کلاس ها از آن به ارث برده می شوند.(برخی اوقات به آنها کلاس فرزند می گویند). در اینجا مشاهده می کنیم که اشیاء توسط کلاس ها تعریف می شوند و کلاس ها می توانند خصوصیت ها و رفتارهایی ازکلاس هایی که قبل ایجاد شده را به ارث ببرند(کلاس پایه).  کلاس نتیجه نیز به عنوان زیر کلاس یا کلاس فرزند یا کلاس مشتق شده شناخته شده است. کلاس مشتق شده می تواند تعدادی رفتار ها و خصوصیت های اضافه شده نیز داشت باشند.

کپسوله سازی(Encapsulation): این بدان معنی است که دادها یا پیاده سازی جزئیات یک ماژول از ماژول های دیگر مخفی شود. کپسوله سازی می تواند به صورت محدود کردن دسترسی به خواص مشخصی نیز تعریف شود. Encapsulation  تکنیکی است که برای مخفی کردن داده ها استفاده می شود. این کار برای کاهش پیچیدگی سیستم مفید است.

Abstraction: این یک فرایند برای نشان دادن ویژگی های ضروری یک موجودیت توسط مخفی کردن جزئیات مهم مشخص شده است. این عمل یکی دیگر از ویژگی های خوب OOPS می باشد و برای نشان دادن جزئیات ضروری به استفاده کننده از شیئ می باشد.اجازه دهید که یک مثال بیان کنیم: زمانی که شما مانیتور خود را روشن یا خاموش می کنید آیا می دانید که چگونه این مانیتور روشن یا خاموش می شود؟ ما نیازی نداریم که بدانیم چه چیزی داخل کامپیوتر اتفاق میافتد. یا زمانی که شما با ماشین رانندگی می کنید و دنده را عوض می کنید آیا در مورد مکانیسم داخلی چرخ دنده نگرانی دارید؟ مطمئنا نه! در کل این روش یک فرایند برای افشای جزئیات ضروری شیئ و مخفی کردن جزئیات مهم که مورد نیاز کاربر نیست، می باشد. این کار برای قابلیت استفاده مجدد از کد مفید است.

Polymorphism(چند ریختی):پلی مورفیسم از ترکیب دو کلمه  POLY و Morph مشتق شده است. POLY به معنای تعدادی و Morph به معنای تغییر جزئی می باشد. بنابراین پلی مورفیسم داشتن یک نام با شکل های مختلف است. در روش می توانیم متدهایی با نام مشابه داشته باشیم اما تغییرات جزئی در عملکرد داشته باشند. دو نوع پلی مورفیسم وجود دارد.

Overriding: این یک چند ریختی در زمان اجرا نامیده می شود. برای Overriding متدهایی که متد آنها استفاده خواهند شد فقط در زمان اجرا تعیین می شوند.

Overloading: این یک پلی مورفیسم در زمان کامپایل نام دارد  که متد آن اجرا شده و توسط کامپایلر تعیین می شود. این تصمیم زمانی که کدکامپایل شده دریافت می شود گرفته می شود.

ادامه مطلب

 

Recent Comments by Sajjad

    No comments by Sajjad