کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

کامپیوتر و اُپن سورس(Computer & Open Source)

آموزش دروس رشته کامپیوتر - نرمافزار اشنایی باسخت افزار سیستم عامل لینوکس شبکه برنامه نویسی معرفی نرم افزار

کتابخانه چیست ؟

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

کتابخانه های استاتیک : کتابخانه هایی می باشند که با ابزار ar یا archive ایجاد می شوند .زمانی که برنامه نویس به این کتابخانه ها لینک می دهد عناصر مورد نیاز موجود در این کتابخانه ها در فایل image اجرایی مجتمع و درج می شوند . از نظر برنامه کتابخانه خارجی مدت زمان زیادی با برنامه مرتبط نیست چون با فایل ایمیج برنامه ترکیب شده است.

کتابخانه های اشتراکی, یا دینامیکی : نیز به فایل ایمیج برنامه لینک می شوند اما در دو مرحله جدا از هم . در مرحله اول زمان ساخت برنامه لینکر تمامی نمادهای لازم برای ایجاد برنامه ( شامل متغییر ها و توابع ) را چه در برنامه یا کتابخانه ها  بررسی و تصدیق می کند . بجای استخراج عناصر از کتابخانه اشتراکی و قرار دادن در فایل ایمیج برنامه ( همان کاری که در مورد کتابخانه های استاتیک انجام می شد ). در مرحله دوم در زمان اجرا لودر دینامیک کتابخانه شراکتی را در حافظه درج می کند و سپس بصورت دینامیک به ایمیج برنامه متصل می شود.

که نتیجه کار تولید فایل ایمیج کوچک تر می باشد و کتابخانه اشتراکی جدا از ایمیج برنامه می باشد.

Qt چیست ؟

Qt یک فریم ورک مولتی پلتفرم برای توسعه نرم افزار می باشد که اکثرا برای ایجاد برنامه هایی با رابط کاربری (GUI) مورد استفاده قرار می گیرد . اما پس از نسخه ۴ امکان ایجاد برنامه های متنی نیز فراهم شده است . بیشترین استفاده از کیوتی در رابط گرافیکی KDE بوده است که یکی از مهمترین محیط های گرافیکی لینوکس می باشد . نرم افزار های بسیاری چون Opera, Google Earth, Skype, Qtopia و ... نیز توسط این ابزار ایجاد گردیده اند . این ابزار توسط یک شرکت نروژی به نام Trolltech ایجاد گردیده و با سرعت بسیاری در حال توسعه می باشد .

لوگوی کیوتی ۴
لوگوی کیوتی ۴

زبان برنامه نویسی در Qt بصورت پیش فرض ++C می باشد . تقریبا این ابزار را می توان با محیط ++VC مقایسه نمود . اما امکان برنامه نویسی با زبانهای دیگر چون پایتون ، رابی ، PHP ، پرل ، پاسکال و حتی #C و جاوا نیز در Qt فراهم می باشد ! همانطور که گفته شد کیوتی تقریبا در اکثر سیستم عامل های موجود چون لینوکس ، ویندوز ، مک و سیستم های خاصی چون PDA ها و Smartphone ها قابل اجراست .

Qt از موتوری درونی و خاص خود برای ایجاد اشیا و پنجره ها استفاده می کند . بنابراین امکان اجرا بر روی چندین سیستم عامل و نیز استفاده از اشایی پیشرفته براحتی ممکن می باشد . در عین حال کیوتی در هر سیستم عامل برنامه هایی درست همانند ظاهر همان سیستم عامل یا اصطلاحا محلی (native) تولید می کند .

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

چرا Qt ؟

از مهمترین موارد و مزیت های کیوتی می توان به موارد زیر اشاره کرد :

 Qt بسیار وسیع و گسترده است

کیوتی یک فریم ورک بسیار گسترده و غنی می باشد که شامل ویژگی و توانایی هاو ابزار های بسیاری می باشد که امکان ایجاد برنامه هایی سمت سرور و کلاینت با کارایی بسیار زیاد و مولتی پلتفرم را فراهم می آورد .

 کتابخانه های غنی و گسترده

کتابخانه های (library) این فریم ورک که بالغ بر ۴۰۰ کتابخانه کامل به زبان ++C می باشد در حقیقت شالوده و پایه فریم ورک را تشکیل می دهد . این کتابخانه ها شامل مواردی چون کتابخانه های GUI ، پایگاه داده ، شبکه ، XML ، OpenGL درونی سازی شده ، بین المللی کردن (internationalization) و ... می باشد .

لوگوی طراح کیوتی ۴
لوگوی طراح کیوتی ۴

 طراح گرافیکی

Qt Designer نام یک طراح گرافیکی بسیار قدرتمند می باشد که امکان ایجاد فرم ها و لایه ها بصورت سریع و آسان با استفاده از نما و گرافیکی مناسب را در اکثر سیستم عامل ها فراهم می کند .

 بین الملل سازی (internationalization) آسان

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

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


 

لوگوی مستندات کیوتی ۴
لوگوی مستندات کیوتی ۴

 مستندات و راهنمای غنی و کامل

Qt Assistant نام یک مروگر فایل و مستندات می باشد که تغییر و استفاده مجدد از آن امکان پذیر می باشد . برنامه های نوشته شده با Qt می توانند از این ابزار برای نمایش مستندات خود استفاده کنند . بنابراین تهیه و توسعه مستندات برنامه ها بسیار سریعتر و آسان تر خواهد بود .

 Qt مولتی پلتفرم (کراس پلتفرم) می باشد

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

کیوتی و ابزار های آن فعلا در پلتفرم های زیر در دسترس هستند :

Qt/X11 : این نسخه مخصوص سیستم عامل های مبتنی بر یونیکس (Unix) چون لینوکس ، سولاریس (Solaris) و HP-UX ، IRIX و بسیاری سیستم عامل مشتق شده دیگر می باشد .

Qt/Windows : این نسخه مخصوص سیستم عامل مایکروسافت می باشد و از ویندوز ۹۸ تا ویستا (Vista) قابل اجرا و استفاده می باشد .

Qt/Mac : این نسخه نیز مخصوص سیستم عامل مک (Mac OS X) می باشد .

Qtopia Core : این نسخه مخصوص قابل اجرا و استفاده در نسخه خاصی از لینوکس (Embedded Linux) است که می تواند در سخت افزار های خاص بجر کامپیوتر معمولی اجرا شود .


 

کیتوی مولتی پلتفرم می باشد .
کیتوی مولتی پلتفرم می باشد .

تمامی API ها و توابع موجود در این نسخه های مختلف بدون در نظر گرفتن سیتسم عامل و محیطی که در آن اجرا می شوند یکسان می باشد . برای مثال تمامی توابع و روشهای کار با فایل ها ، چند نخی (Threading) ، مدیریت پردازش ها (Process handling) ، پایگاه داده و ... دقیقا یکسان می باشند .

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

 یادگیری کیوتی آسان است

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

 Qt بسیار قدرتمند و بی عیب کارا می باشد !

نرم افزار های تجاری و حرفه ای بسیاری در پلتفرم ها و با ابزار ها و کامپایلر های مختلفی با کیوتی نوشته شده است . بیش از ۴۵۰۰ شرکت معتبر برنامه نویسی در دنیا با استفاده از این ابزار برنامه های خود را تولید می کنند . بنابراین کاملا تست شده و اکثر مشکلات آن مشخص و برطرف شده است . همچنین تمامی موارد مورد نیاز نیز به ان اضافه شده است . و دوباره با توجه به اپن سورس بودن آن این امر بسیار احتتر بوده و هر کسی می تواند در توسعه آن سهیم باشد . برای مثال در سالهای گذشته هزینه بسیاری از طرف دولت برای فارسی سازی و بومی سازی آن و نیز ثبت این تغییرات در نشخه های اصلی کیوتی هزینه شده است ! البته تیم توسعه کیوتی بسیار سخت گیر می باشد و اجازه اضافه شدن هر کد یا تغییری را نمی دهند ! مگر اینکه کارایی و دلیل آن کاملا بحث شده و اثبات شده باشد .

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

 کیوتی اپن سورس و آزاد است

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

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

 

 

هسته لینوکس

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

این نرم‌افزار در اصل بر روی پردازندهٔ اینتل مدل 80386 و تقریباً بطور کامل با استفاده از زبان برنامه‌نویسی سی نوشته شده‌است. این هستهٔ سیستم‌عامل تحت مجوز عمومی گنو بصورت نرم‌افزار آزاد توزیع می‌شود.

هستهٔ لینوکس بهترین هستهٔ شناخته شده برای هسته سیستم‌عامل گنو/لینوکس است. توزیع نرم‌افزار براساس این هسته «توزیع گنو/لینوکس» نامیده می‌‌شود.

در سال ۱۹۹۱ توروالدز بوجود آمدن این هسته را با یک رایانامهٔ تاریخی و مشهور بر روی یوزنِت در گروه خبری comp.os.minix اعلام کرد :

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

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

در سال ۱۹۹۱، سیستم‌عامل بی‌.اس.دی هنوز نتوانسته بود خود را از قید و بندهای عرفی رها کند با این وجود، شرکت یک فضا برای هستهٔ لینوکس باز کرد و با وجود عاملیت محدود، نسخه‌های اولیه آن به‌ سرعت توسعه‌دهندگان و کاربرهای خود را جمع کرد. به زودی هکرها در بهینه‌سازی دستورالعمل‌ها و ایده‌های هسته لینوکس شرکت کردند و امروزه تعداد افرادی که در این موراد همکاری می‌کنند به صدها برنامه‌نویس رسیده است.

ویژگی‌ها

در ابتدا «لینوکس» فقط نام هستهٔ سیستم عامل بود. واژهٔ «هسته»‌، به سامانهٔ نرم‌افزاری سطح پایینی (به معنی نزدیک‌تر به سخت‌افزار در رده‌بندی معماری سیستم‌عامل) اشاره می‌کند که لایه‌ای در معماری سیستم‌عامل به نام لایه انتزاع سخت‌افزار را تأمین می‌کند و دیسک‌ها و سامانهٔ پرونده‌گردانی‌ را بررسی می‌نماید و تراز کردن (Balancing) ذخیره‌سازی داده‌ها و شبکه‌بندی و برقراری امنیت را برعهده دارد.

باید توجه کرد که هسته یک سامانهٔ کامل نیست، ساخت یک سامانهٔ کامل براساس هستهٔ لینوکس به نام سیستم‌عامل لینوکس شهرت یافت (اگرچه بعضی‌ها ترجیح می‌دهند آن را سیستم‌عامل گنو/لینوکس بنامند و بر سر این نکته مجادله بسیاری وجود دارد. مردم عموماً هسته و سیستم‌عامل را با هم اشتباه می‌گیرند و این مساله که سیستم عامل به عنوان «گنو/لینوکس» نامیده شود، تصورات اشتباه را به سمت صحیح هدایت می‌کند.