™Ali
18-07-08, 13:06
مقدمه
سيستم عامل لينوكس را میتوان از جنبه برنامهنويسی يك سيستم عامل منحصربهفرد دانست چون به تمام كاربران خود اين امكان را میدهد كه در توسعه سيستم عامل سهيم و دخيل شوند. البته تنوع زبانهای برنامهنويسی موجود در اين سيستم عامل میتواند برای كسانی كه میخواهند برنامهنويسی در اين محيط را آغاز كنند، عامل سردرگمی شود. در اين مقاله به معرفی اجمالی برخی زبانهای برنامهنويسی پركاربردتر در اين محيط میپردازيم و آنها را از بعضی جنبههای كليدی با يكديگر مقايسه میكنيم.
تمركز اين مطلب بر مرور اين زبانهای برنامهنويسی است و تلاشی برای تعيين اينكه كداميك بهترين گزينه برای برنامهنويسان هستند، صورت نخواهد گرفت. در واقع هركدام از اين زبانها میتوانند نيازها و سليقههای خاص كاربران خود را برآورده كنند و هيچيك را نمیتوان به طور مطلق برتر از سايرين دانست. به همين دليل مطالعه بيشتر در مورد هركدام از اين زبانها را میتوان مفيد دانست.
تعداد زيادی زبان و كتابخانه برنامهنويسی در لينوكس وجود دارد. در نتيجه در اينجا تنها به بررسی آنهايی خواهيم پرداخت كه طبق آمار و ارقام از سايرين پراستفادهتر هستند. منبع مورد استفاده برای اين مطلب، كاری است كه در LDP (پروژه مستندسازی لينوكس يا Linux Documentation Project) انجام شده است كه نشاندهنده اعتبار آن در نزد متوليان لينوكس است.
زبانهايی كه در اينجا مورد بررسی قرار خواهند گرفت عبارتند از:
زبانهای C، Perl، و Lisp به عنوان زبانهايی كه از روزهای اول پيدايش لينوكس در آن قرار گرفته بودند
زبانهای Python، PHP، Java و C++ به عنوان زبانهايی كه نسبت به گروه اول جديدتر هستند
معيارهای مقايسه
در بخش مقايسه، خصوصيات زير برای هريك از زبانها بيان خواهد شد.
نام زبان
عنوانی كه عموما زبان مورد بررسی به وسيله آن شناخته میشود.
مبتدی
معياری است كه نشان میدهد كار با زبان مورد بررسی چقدر برای افرادی كه دارای تجربه كمی در زمينه برنامهنويسی هستند راحت است. زبانهايی كه اين معيار برای آنها «بله» تعيين شده باشد را میتوان مناسب حال برنامهنويسان مبتدی دانست.
كارايی
نشان میدهد كه برنامههايی كه با اين زبان نوشته شده باشند، در هنگام استفاده چقدر سريع خواهند بود. البته كارايی بيشتر به الگوريتمهای مورد استفاده در برنامه بستگی دارد تا به زبان برنامهنويسی. ولی يك قانون نانوشته میگويد كه C، C++ و Fortran معمولا برنامههايی با كارايی بالاتر توليد میكنند. به طور مثال میتوان به يك آزمايش اتكا كرد كه البته خيلی هم علمی نيست. در اين آزمايش يك برنامه مرتبسازی اعداد با يك الگوريتم ثابت در زبانهای مورد مقايسه پيادهسازی میشود و سرعت اجرای آنها با يكديگر مقايسه میشود و مبنای تعيين كارايی زبان برنامهنويسی قرار میگيرد.
OOP: برنامهنويسی شیءگرا در مقابل ساير روشهای برنامهنويسی
برنامهنويسی شیءگرا يا Object Oriented Programming (OOP) يكی از مهمترين روشهای برنامهنويسی است كه روز به روز بر محبوبيت آن افزوده میشود. در اين روش، ساختار دادهها و الگوريتمها در واحدهايی كه معمولا به نام كلاس (Class) شناخته میشوند، قرار میگيرند. OOP معمولا با روش برنامهنويسی رويهای (procedural) كه در آن دادهها و الگوريتمها از يكديگر جدا هستند مورد مقايسه قرار میگيرد. البته امكان برنامهنويسی شیءگرا را نمیتوان كاملا وابسته به زبان برنامهنويسی دانست. مثلا با وجود اين كه زبان C يك زبان شیءگرا محسوب نمیشود میتوان در آن برنامههای شیءگرا نوشت و به همين ترتيب در زبانهايی كه مشخصه اصلی آنها شیءگرايی است میتوان برنامههای رويهای توليد كرد.
در اينجا زبانهايی كه مشخصه OOP برای آنها ذكر شده است، قابليتهای خاصی را برای تسهيل برنامهنويسی شیءگرا ارائه میكنند. زبانهای تابعی (functional) نظير Lisp گونه متفاوتی از زبانها هستند. برنامهنويسی شیءگرا را میتوان شاخهای از برنامهنويسی تابعی دانست. برنامهنويسی منطقی (logical) كه به نام برنامهنويسی تعريفی (declarative) نيز شناخته میشود و زبان prolog شاخصترين نمونه آن است، گونه كاملا متفاوتی از برنامهنويسی است كه شباهت زيادی با ساير روشها ندارد.
RAD: توليد سريع برنامهها (Rapid Application Development)
اين معيار بيشتر از آن كه به زبان مورد استفاده بستگی داشته باشد، وابسته به ابزارهايی است كه در توليد برنامه مورد استفاده قرار میگيرند. RAD در اثر استفاده مجدد از كدهای پيشنوشته (code reuse) نيز بسيار افزايش میيابد.
مثالها
اين معيار حوزههايی را مشخص میكند كه زبان مورد بحث در آنها بيشتر استفاده میشود. البته كاربردهای خوب و بد ديگری هم علاوه بر موارد ذكر شده وجود دارد اما به علت عام نبودن آنها ذكر نشدهاند.
توضيحات
اطلاعات بيشتری در مورد زبان مورد بحث در اين بخش ارائه خواهد شد.
مقايسه زبانها
در اين بخش همان طور كه گفته شد، معيارهای معرفی شده در بالا را برای برخی زبانهای اصلی محيط لينوكس مورد بحث قرار میدهيم.
زبان Perl
مبتدی: بله
OOP: بله
مثالها: نبشتهنويسی (scripting)، ابزاری برای مديران سيستم، برنامهنويسی وب
توضيحات: ابزاری قدرتمند برای كار با متن و رشتههای حرفی (string)
زبان Python
مبتدی: بله
OOP: بله
مثالها: نبشتهنويسی، برنامهنويسی وب
زبان TCL
مبتدی: بله
OOP: خير
مثالها: نبشتهنويسی، ابزاری برای مديران سيستم، برنامههای كاربردی
زبان PHP
مبتدی: بله
OOP: بله
مثالها: برنامهنويسی وب
توضيحات: استفاده زيادی در كاربردهای پايگاهداده در وب دارد
زبان Java
مبتدی: بله
OOP: بله
مثالها: برنامههای چندمحيطی (cross-platform)، برنامهنويسی وب
توضيحات: به مرور به حوزههای جديدی مانند تجارت الكترونيك و بسياری كاربردهای ديگر وارد میشود.
زبان Lisp
مبتدی: بله
OOP: اين زبان تابعی است
مثالها: برنامهنويسی هوش مصنوعي
توضيحات: نسخههای متعددی از آن وجود دارد مانند Elisp، Clisp، و Scheme
زبان Fortran
مبتدی: خير
OOP: خير
مثالها: كاربردهای محاسباتی و علمي
زبان C
مبتدی: خير
OOP: خير
مثالها: برنامهنويسی سيستم، برنامههای كاربردي
زبان C++
مبتدی: خير
OOP: بله
مثالها: برنامههای كاربردی
Shell Programming
Shellها محيط برنامهنويسی بسيار مهمی در لينوكس محسوب میشوند. اگر شما میخواهيد يك كاربر حرفهای لينوكس باشيد، حتما بايد با اين نوع برنامهنويسی نيز آشنا باشيد. شباهتهايی بين برنامهنويسی Shell و ساير زبانهای نبشتهنويسی (scripting) وجود دارد. در واقع اغلب از هردوی آنها برای رسيدن به اهداف مشابهی استفاده میشود. از پركاربردترين Shellهای محيط لينوكس میتوان bash، tcsh، csh، ksh، و zsh را نام برد. در شمارههای آينده بيشتر در مورد Shell Programming خواهيم گفت.
برخی زبانهای ديگر
علاوه بر زبانهايی كه در اينجا مورد بررسی قرار گرفتند، زبانهای ديگری نيز در لينوكس وجود دارند كه تنها به نام بردن آنها اكتفا میكنيم. در صورت علاقه، منابع بسيار زيادی در مورد اين زبانها چه در خود محيط لينوكس (با استفاده از دستور man) و چه روی اينترنت میتوان يافت. اين زبانها عبارتند از: AWK، SED، Smalltalk، Eiffel، Ada، Prolog، assembler، Objective C، Logo، و Pascal (با استفاده از مبدل p2c). همچنين در
Only the registered members can see the link
اطلاعات بيشتری را در مورد زبانهای برنامهنويسی ارائه میكند. در شماره آينده مبحث برنامهنويسی در محيط لينوكس را ادامه خواهيم داد.
Source (Only the registered members can see the link)
سيستم عامل لينوكس را میتوان از جنبه برنامهنويسی يك سيستم عامل منحصربهفرد دانست چون به تمام كاربران خود اين امكان را میدهد كه در توسعه سيستم عامل سهيم و دخيل شوند. البته تنوع زبانهای برنامهنويسی موجود در اين سيستم عامل میتواند برای كسانی كه میخواهند برنامهنويسی در اين محيط را آغاز كنند، عامل سردرگمی شود. در اين مقاله به معرفی اجمالی برخی زبانهای برنامهنويسی پركاربردتر در اين محيط میپردازيم و آنها را از بعضی جنبههای كليدی با يكديگر مقايسه میكنيم.
تمركز اين مطلب بر مرور اين زبانهای برنامهنويسی است و تلاشی برای تعيين اينكه كداميك بهترين گزينه برای برنامهنويسان هستند، صورت نخواهد گرفت. در واقع هركدام از اين زبانها میتوانند نيازها و سليقههای خاص كاربران خود را برآورده كنند و هيچيك را نمیتوان به طور مطلق برتر از سايرين دانست. به همين دليل مطالعه بيشتر در مورد هركدام از اين زبانها را میتوان مفيد دانست.
تعداد زيادی زبان و كتابخانه برنامهنويسی در لينوكس وجود دارد. در نتيجه در اينجا تنها به بررسی آنهايی خواهيم پرداخت كه طبق آمار و ارقام از سايرين پراستفادهتر هستند. منبع مورد استفاده برای اين مطلب، كاری است كه در LDP (پروژه مستندسازی لينوكس يا Linux Documentation Project) انجام شده است كه نشاندهنده اعتبار آن در نزد متوليان لينوكس است.
زبانهايی كه در اينجا مورد بررسی قرار خواهند گرفت عبارتند از:
زبانهای C، Perl، و Lisp به عنوان زبانهايی كه از روزهای اول پيدايش لينوكس در آن قرار گرفته بودند
زبانهای Python، PHP، Java و C++ به عنوان زبانهايی كه نسبت به گروه اول جديدتر هستند
معيارهای مقايسه
در بخش مقايسه، خصوصيات زير برای هريك از زبانها بيان خواهد شد.
نام زبان
عنوانی كه عموما زبان مورد بررسی به وسيله آن شناخته میشود.
مبتدی
معياری است كه نشان میدهد كار با زبان مورد بررسی چقدر برای افرادی كه دارای تجربه كمی در زمينه برنامهنويسی هستند راحت است. زبانهايی كه اين معيار برای آنها «بله» تعيين شده باشد را میتوان مناسب حال برنامهنويسان مبتدی دانست.
كارايی
نشان میدهد كه برنامههايی كه با اين زبان نوشته شده باشند، در هنگام استفاده چقدر سريع خواهند بود. البته كارايی بيشتر به الگوريتمهای مورد استفاده در برنامه بستگی دارد تا به زبان برنامهنويسی. ولی يك قانون نانوشته میگويد كه C، C++ و Fortran معمولا برنامههايی با كارايی بالاتر توليد میكنند. به طور مثال میتوان به يك آزمايش اتكا كرد كه البته خيلی هم علمی نيست. در اين آزمايش يك برنامه مرتبسازی اعداد با يك الگوريتم ثابت در زبانهای مورد مقايسه پيادهسازی میشود و سرعت اجرای آنها با يكديگر مقايسه میشود و مبنای تعيين كارايی زبان برنامهنويسی قرار میگيرد.
OOP: برنامهنويسی شیءگرا در مقابل ساير روشهای برنامهنويسی
برنامهنويسی شیءگرا يا Object Oriented Programming (OOP) يكی از مهمترين روشهای برنامهنويسی است كه روز به روز بر محبوبيت آن افزوده میشود. در اين روش، ساختار دادهها و الگوريتمها در واحدهايی كه معمولا به نام كلاس (Class) شناخته میشوند، قرار میگيرند. OOP معمولا با روش برنامهنويسی رويهای (procedural) كه در آن دادهها و الگوريتمها از يكديگر جدا هستند مورد مقايسه قرار میگيرد. البته امكان برنامهنويسی شیءگرا را نمیتوان كاملا وابسته به زبان برنامهنويسی دانست. مثلا با وجود اين كه زبان C يك زبان شیءگرا محسوب نمیشود میتوان در آن برنامههای شیءگرا نوشت و به همين ترتيب در زبانهايی كه مشخصه اصلی آنها شیءگرايی است میتوان برنامههای رويهای توليد كرد.
در اينجا زبانهايی كه مشخصه OOP برای آنها ذكر شده است، قابليتهای خاصی را برای تسهيل برنامهنويسی شیءگرا ارائه میكنند. زبانهای تابعی (functional) نظير Lisp گونه متفاوتی از زبانها هستند. برنامهنويسی شیءگرا را میتوان شاخهای از برنامهنويسی تابعی دانست. برنامهنويسی منطقی (logical) كه به نام برنامهنويسی تعريفی (declarative) نيز شناخته میشود و زبان prolog شاخصترين نمونه آن است، گونه كاملا متفاوتی از برنامهنويسی است كه شباهت زيادی با ساير روشها ندارد.
RAD: توليد سريع برنامهها (Rapid Application Development)
اين معيار بيشتر از آن كه به زبان مورد استفاده بستگی داشته باشد، وابسته به ابزارهايی است كه در توليد برنامه مورد استفاده قرار میگيرند. RAD در اثر استفاده مجدد از كدهای پيشنوشته (code reuse) نيز بسيار افزايش میيابد.
مثالها
اين معيار حوزههايی را مشخص میكند كه زبان مورد بحث در آنها بيشتر استفاده میشود. البته كاربردهای خوب و بد ديگری هم علاوه بر موارد ذكر شده وجود دارد اما به علت عام نبودن آنها ذكر نشدهاند.
توضيحات
اطلاعات بيشتری در مورد زبان مورد بحث در اين بخش ارائه خواهد شد.
مقايسه زبانها
در اين بخش همان طور كه گفته شد، معيارهای معرفی شده در بالا را برای برخی زبانهای اصلی محيط لينوكس مورد بحث قرار میدهيم.
زبان Perl
مبتدی: بله
OOP: بله
مثالها: نبشتهنويسی (scripting)، ابزاری برای مديران سيستم، برنامهنويسی وب
توضيحات: ابزاری قدرتمند برای كار با متن و رشتههای حرفی (string)
زبان Python
مبتدی: بله
OOP: بله
مثالها: نبشتهنويسی، برنامهنويسی وب
زبان TCL
مبتدی: بله
OOP: خير
مثالها: نبشتهنويسی، ابزاری برای مديران سيستم، برنامههای كاربردی
زبان PHP
مبتدی: بله
OOP: بله
مثالها: برنامهنويسی وب
توضيحات: استفاده زيادی در كاربردهای پايگاهداده در وب دارد
زبان Java
مبتدی: بله
OOP: بله
مثالها: برنامههای چندمحيطی (cross-platform)، برنامهنويسی وب
توضيحات: به مرور به حوزههای جديدی مانند تجارت الكترونيك و بسياری كاربردهای ديگر وارد میشود.
زبان Lisp
مبتدی: بله
OOP: اين زبان تابعی است
مثالها: برنامهنويسی هوش مصنوعي
توضيحات: نسخههای متعددی از آن وجود دارد مانند Elisp، Clisp، و Scheme
زبان Fortran
مبتدی: خير
OOP: خير
مثالها: كاربردهای محاسباتی و علمي
زبان C
مبتدی: خير
OOP: خير
مثالها: برنامهنويسی سيستم، برنامههای كاربردي
زبان C++
مبتدی: خير
OOP: بله
مثالها: برنامههای كاربردی
Shell Programming
Shellها محيط برنامهنويسی بسيار مهمی در لينوكس محسوب میشوند. اگر شما میخواهيد يك كاربر حرفهای لينوكس باشيد، حتما بايد با اين نوع برنامهنويسی نيز آشنا باشيد. شباهتهايی بين برنامهنويسی Shell و ساير زبانهای نبشتهنويسی (scripting) وجود دارد. در واقع اغلب از هردوی آنها برای رسيدن به اهداف مشابهی استفاده میشود. از پركاربردترين Shellهای محيط لينوكس میتوان bash، tcsh، csh، ksh، و zsh را نام برد. در شمارههای آينده بيشتر در مورد Shell Programming خواهيم گفت.
برخی زبانهای ديگر
علاوه بر زبانهايی كه در اينجا مورد بررسی قرار گرفتند، زبانهای ديگری نيز در لينوكس وجود دارند كه تنها به نام بردن آنها اكتفا میكنيم. در صورت علاقه، منابع بسيار زيادی در مورد اين زبانها چه در خود محيط لينوكس (با استفاده از دستور man) و چه روی اينترنت میتوان يافت. اين زبانها عبارتند از: AWK، SED، Smalltalk، Eiffel، Ada، Prolog، assembler، Objective C، Logo، و Pascal (با استفاده از مبدل p2c). همچنين در
Only the registered members can see the link
اطلاعات بيشتری را در مورد زبانهای برنامهنويسی ارائه میكند. در شماره آينده مبحث برنامهنويسی در محيط لينوكس را ادامه خواهيم داد.
Source (Only the registered members can see the link)