مقایسه استفاده از پایگاه داده منبع باز

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

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

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

به متن عکس زیر توجه کنید:

عکس بالا مربوط به Microsoft SQL Server 2016 می باشد که به صورت خلاصه در متن آن گفته شده:

" این برنامه کامپیوتری تحت قانون کپی رایت و تحت حفاظت معاهدات بین المللی می باشد و هرگونه توزیع غیر مجاز این برنامه به شدت تحت مجازات مدنی و کیفری و تحت پیگرد قانونی قرار خواهد گرفت."

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

این موضوع برای تمام نرم افزارهایی که به صورت غیر مجاز استفاده می شوند، مانند Oracle نیز  صدق می کند. برای اطلاعات بیشتر از از قوانین کپی رایت نرم افزارهای Oracle و Microsoft می توانید به لینک های زیر مراجعه کنید.

قوانین کپی رایت Oracle  (ممکن است به دلیل تحریمها دسترسی به این سایت از سوی اوراکل محدود باشد)

قوانین کپی رایت Microsoft

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

 

نکات مطرح شده در بالا در جدول ذیل خلاصه گردیده است:

نکات

Open Source

Proprietary

امنیت

زیاد و قابل تغییر

نامشخص و غیر قابل تغییر

قابلیت سفارش سازی

نامحدود

محدود

نیاز به منابع سخت افزاری و نرم افزاری

کم

زیاد

هزینه

کم و حتی رایگان

خیلی زیاد

 

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

برچسب ها : پایگاه داده، تجاری، متن باز

 

مقایسه زبان های برنامه نویسی

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

 

میزان استفاده از زبان های برنامه نویسی طبق آمار

زبان های برنامه نویسی به 4 دسته شئ گرا، رویه ای، کاربردی و منطقی دسته بندی می شوند. میزان استفاده از هر دسته در میان برنامه نویسان در جدول زیر قابل مشاهده می باشد. البته قابل ذکر می باشد که آمار جدول زیر تا سال 2013 میلادی می باشد. (Wavesoft)

جدول 1 - میزان استفاده از دسته های مختلف زبان های برنامه نویسی

دسته بندی زبان ها

میزان استفاده

Object-Oriented  (شئ گرا)

58.1%

Procedural (رویه ای)

37%

Functional (کاربردی)

3.2%

Logical (منطقی)

1.7%

 

 

جدول 2 - رتبه بندی شرکت TIOBE

رتبه

زبان

میزان استفاده

1

C

18.729%

2

Java

16.914%

3

C++

10.428%

4

Objective-C

9.198%

5

C#

6.119%

6

PHP

5.784%

7

VB (Visual Basic)

4.656%

8

Python

4.322%

9

Perl

3.276%

10

Ruby

1.670%

11

Java Script

1.536%

12

VB.NET

1.131%

13

Lisp

0.894%

14

Transact-SQL

0.819%

15

Pascal

0.805%

16

Bash

0.792%

17

Delphi/Object Pascal

0.731%

18

PL/SQL

0.708%

19

Assembly

0.638%

20

Lua

0.632%

 


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

 

شکل 1 - میزان پشتیبانی این زبان ها در هر ماه

 

شکل 2 - میزان به روز رسانی نرم افزارهایی که توسط این زبان ها توسعه داده شده اند در هر ماه

 


شکل 3 - میزان پروژه هایی که در هر ماه با این زبان ها تکمیل می شوند

 

همانطور که در نمودارها مشاهده می کنید بیشترین نرم افزارهای کاربردی روز دنیا با زبان های ++C ، C و Java در حال توسعه می باشند.  (برای اطلاعات بیشتر به سایت Stackoverflow مراجعه کنید.)

 

شکل 4 - میزان استفاده زبان های برنامه نویسی در سال 2014


نمودار زیر میزان استفاده از زبان های برنامه نویسی در مسابقات را نشان می دهد. (linkedin)

 

شکل 5 - میزان استفاده از زبان های برنامه نویسی در مسابقات

مقایسه زبان های برنامه نویسی از لحاظ سرعت

در نمودار های زیر اقدام به تست سرعت زبان های برنامه نویسی در یک کامپیوتر و استفاده از یک نوع الگورتیم شده است. این تست ها شامل حل پاسخ جدول Sudoku 25*20 و Matrix 1000*1000 می باشد و واحد زمان بر حسب ثانیه است. (Attractivechaos.github)

 


شکل 6 - Sudoku 25*20

 


شکل 7 - Matrix 1000*1000

 

نکته قابل توجه در این قسمت این می باشد که الگوریتم استفاده شده برای حل جدول Sudoku و Matrix می تواند بسیار بهینه تر و سریع تر از این باشد. الگوریتم استفاده شده برای همه زبانها یکسان می باشد.


نمودارهای زیر نشان دهنده میزان سرعت محاسبات عددی توسط زبان های C# و ++C می باشد. (برای بررسی و اطلاعات بیشتر نیز می توانید به سایت CodeProject مراجعه کنید.)

شکل 8 - محاسبات عددی با نوع داده ای مختلف در CPU های ARM

 

شکل 9 - جمع های عددی با نوع داده ای مختلف

 

مقایسه قابلیت ها

در ادامه قصد داریم از نظر قابلیت های کلیدی و مهم، چند زبان برنامه نویسی را مورد بررسی قرار دهیم.

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

 

جدول 3 - مقایسه قابلیت های مختلف چندین زبان برنامه نویسی

قابلیت/زبان

C++

C#

Java

Ruby

Visual Basic

Python

Perl

Object-Oriented

قدرتمند و متغیر

قدرتمند

قدرتمند

ضعیف

قدرتمند

قدرتمند

قدرتمند

Generic Classes

بله

خیر

خیر

-

خیر

-

-

Method Overloading

بله

بله

بله

خیر

خیر

خیر

خیر

Multithreading

بله

بله

بله

بله

خیر

بله

خیر

Pointer Arithmetic

بله

بله

خیر

خیر

خیر

خیر

خیر

Security

بسیار بالا

بالا

بسیار بالا

بالا

پایین

پایین

بالا

Functional

بله

بله

بله

بله

-

بله

بله

Procedural

بله

بله

بله

-

-

بله

بله

Level

سطح بالا – سطح پایین –(میانی)

سطح بالا

سطح بالا

سطح بالا

سطح بالا

سطح بالا

سطح بالا

Operation System (OS)

نا محدود

محدود

محدود

محدود

محدود

محدود

محدود

Flexibility

کاملا انعطاف پذیر - بالا

بالا

بالا

متوسط

متوسط

متوسط

متوسط

Speed

بسیار بالا

بالا

بالا

متوسط

متوسط

متوسط

متوسط

Hardware

اکثر سخت افزارها

محدود

محدود

محدود

محدود

محدود

محدود

 

تیم یار و زبان توسعه آن

همانطور که مشاهده کردیم، زبان C  و ++C از زبان های بسیار قدرتمند و انعطاف پذیر می باشند. باید به این موضوع نیز اشاره کرد که بسیاری از نرم افزار های کاربردی و سریع دنیا توسط این زبان ها توسعه یافته اند.

سایت mycplus تعدادی از بهترین نرم افزارهایی که با زبان ++C نوشته شده اند را نام برده است که عبارتند از:

  • Adobe systems: اکثر اپلیکیشن های اصلی سیستم ادوبی به زبان ++C  نوشته شده اند مانند Photoshop & ImageReady، Illustrator و Adobe Premier.
  • Google: برخی از اپلیکیشن های گوگل مانند Google file System و Google Chromium به زبان ++C نوشته شده اند.
  • Mozilla: مانند بروزر مازیلا فایرفاکس و email client Thunderbird 
  • Microsoft: مانند windows 95, 98, Me, 2000, XP, Microsoft Office, Internet Explorer, Visual Studio

  • MySQL
  •  Allias systme - Autodesk Maya
  • Winamp media player
  • 12D solutions
  • Bloomberg
  • callas software
  • Image softwares
  • Apple - OS X
  • Symbian OS

برای توسعه تیم یار از زبان C و ++C استفاده می شود و برای این انتخاب علاوه بر مقایسه های بالا می توان به چند ویژگی این 2 زبان به صورت زیر اشاره کرد:

  • به صورت جامع و مستقیم از چند نوع روش برنامه نویسی می توان استفاده کرد:
  • برنامه‌نویسی ساخت‌ یافته
  • برنامه‌نویسی شی‌گرا
  • انتزاع داده
  • برنامه‌نویسی جنریک یا عمومی
  • ++C یک زبان سطح میانی، به صورت همزمان شامل سطح بالا و سطح پایین می باشد
  • امکان انتخاب به برنامه نویس می دهد، حتی اگر این انتخاب اشتباه باشد
  • توانایی کنترل کامل سخت افزار توسط زبان C
  • پشتیبانی از اکثر سخت افزار های رایج
  • سرعت فوق العاده بالا، به دلیل امکان کد زنی در سطح پایین
  • دارای کتابخانه های بسیار فراوان و کامل در هر زمینه
  • پشتیبانی از اکثر پایگاه داده ها از قبیل SQL Server، Oracle، DB2، Firebird و ...
  • توسعه نرم افزار برای هر نوع سیستم عامل و پلتفرمی
  • امنیت بالا
  • برنامه نویسی به زبان ماشین و ریزپردازنده ها و میکروکنترلرها
  • انعطاف پذیری بالا

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

مثال:

جستجویی دودویی به صورت غیر بازگشتی

 

برنامه نویسی سی شارپ

مثال برنامه نویسی سی شارپ

سوالات:

پاسخ ها: