كدام
زبان برنامهنویسی را انتخاب كنم؟ از كدام نوع دیتابیس استفاده كنم؟
اینها سؤالات قدیمی و تاحدودی كلیشهای هستند. با این حال خواندن یكی دو
مقاله جالب در اینترنت باعث شد، طرح مجدد این موضوع همیشگی را خالی از
فایده ندانم.
اصولاً هر از گاهی باید این پرسش را مجدداً در كلیه
سطوح مهندسی نرمافزار، چه در صنعت، چه در رسانهها و چه در دانشگاهها
مطرح كرد و دلیل آن هم، بسیار ساده است. زبانهای برنامهنویسی نیز مانند
زبانهای گویشی انسانها پویا هستند و مرتباً متحول میشوند. در این راستا
برخی خود را با نیازهای روز تطابق داده و برخی نیز از این تحولات جا
میمانند.
به همین دلیل لازم است هر چند وقت یكبار این پرسش را
مطرح كرده و جدیدترین پاسخها را به نقد بگذاریم. برای اینكه بحث از حالت
نظری خارج شود و حالت كاربردی پیدا كند، اجازه میخواهم نظرم را در این
مورد به اختصار بیان كنم.
برنامهنویسی وب
فعلاً
برنامهنویسی تحت وب داغترین سوژه در دنیای برنامهنویسی است. شاید بد
نباشد یادآوری كنم كه اصولاً فلسفه برنامهنویسی تحت وب چه بود كه به
اینجا رسید. علت محبوبیت و رشد گسترده برنامهنویسی تحت وب، حل شدن مشكل
كلاینت بود.
در این مدل از برنامهنویسی، برنامهنویس دغدغه
چندانی درباره قابل نصب بودن برنامهاش روی پلتفرمهای مختلف ندارد زیرا
وضعیت تقریباً روشن است. همین كه برنامه شما روی یكی دو مرورگر معروف
مانند فایرفاكس و اینترنت اكسپلورر جواب بدهد، كافی است.
بنابراین
در پاسخ به این سؤال كه كدام زبان برنامهنویسی وب را انتخاب كنیم، باید
گفت زبانهایی كه از همه سادهترند و تغییر و تحولات را به سرعت
میپذیرند. در حال حاضر در این زمینه دو فناوری PHP و ASP.NET پیشتاز
هستند. زبان اسكریپتنویسی PHP شباهتهایی به زبان C دارد.
به
همین دلیل سرعت كامپایل شدن آن بالا است و سایتهایی كه از این زبان
استفاده میكنند اندكی سریعترند. فناوری ASP.NET از ویژوال بیسیك داتنت
یا سیشارپ استفاده میكند. این دو زبان، به ویژه در جدیدترین نسخه فناوری
داتنت در یك حد هستند.
اما به نظر من ویژوال بیسیك همچنان
جذابتر و سادهتر به نظر میرسد. سایتهایی كه با این دو زبان نوشته
میشوند نرمافزارهای قدرتمندی را پدید میآورند كه قدرت انعطاف و گستره
كارایی آنها بالاست زیرا هر دو زبان OOP هستند. علاوه بر سهولت
برنامهنویسی، پشتیبانی از برخی موجهای نو مانند ایجكس هم بحث روز است.
هم
PHP و هم ASP.NET وضع خوبی در این زمینه دارند. علاوه بر این، برخی
فناوریهای روز هم خیلی مهم هستند كه وبسرویس یكی از آنهاست. در حال
حاضر رقابت شدیدی میان فناوریSOAP كه از سوی آی بیام و مایكروسافت و
دیگران پشتیبانی میشود و فناوری REST كه از سوی یاهو و برخی شركتهای
بزرگ دیگر حمایت میشود، وجود دارد.
اما وضع بعضی زبانها مانند
جاوا (JSP) و ColdFusion در دنیای وب خراب است و برخی زبانها اخیراً
دوباره مورد توجه قرارگرفتهاند كه از آن جمله میتوان به Python و
Ruby اشاره كرد. وضعیت جاوا در وب در این میان جالب توجه است. برخلاف
موفقیت چشمگیر جاوا در برنامهنویسی برای سیستمهای بزرگ، این زبان به شدت
در وب دچار ناكامی است. وب یك دنیای بصری است و به سادگی و ظاهر سیستمها
اهمیت میدهد.
به همین دلیل زبانهای فاقد ابزارهای ویژوال و
قدرتمند كه در عین حال ساده نیز هستند در این وادی محكوم به زوالند و این
مسئله برای جاوا كه در زمینه وارد كردن مفاهیم بصری و پویا به دنیای وب
پیشگام بود، ناگوار است، البته این قضیه هیچ ربطی به زبان اسكریپتنویسی
«جاوااسكریپت» كه با ظهور ایجكس جان تازهای پیدا كرده، ندارد.
برنامهنویسی سیستمهای بزرگ
اما
وضعیت در صنایع و سازمانهای بزرگ بسیار متفاوت است. در جاهایی مانند
صنایع مالی و بانكی، صنایع پتروشیمی و نفت، صنایع مخابراتی، سازمانهای
دولتی، صنایع خودروسازی و مانند اینها، هنوز هم جاوا و مشتقاتش حرف اول
را میزنند. قدرت جاوا در این حوزهها به قدری است كه حتی میتوان - البته
با كمی احتیاط - گفت موفقیت سیستمهای دیگری مانند اوراكل (كه مبتنی بر
جاوا است) نیز بی ارتباط با استیلای جاوا بر این محیطها نیست.
كاركردن
با جاوا در محیطهای بزرگ كار آسانی نیست. اوراكل هم آسان نیست و به طور
كلی ورود به این عرصهها چالشهای مختلفی را پیش روی برنامهنویسان و
شركتهای نرمافزاری قرار میدهد، به همین دلیل سیستمهای مبتنی بر جاوا،
گران و پرهزینه و غولآسا هستند. با این حال توجه كنید كه منظور از
سازمانهای بزرگ در اینجا سازمانهایی هستند كه از نظر ابعاد، تعداد
كلاینتها و تراكنشها واقعاً بزرگ هستند و منظور ما از آن شأن و منزلت یك
سازمان نیست.
در واقع شركتهایی مانند اپراتورهای موبایل یا صنعت
نفت در ایران را میتوان نمونههایی از اینگونه سازمانها محسوب كرد. اما
بسیاری از سازمانهای دولتی در ایران صرف نظر از اهمیت استراتژیك یا
منزلتشان، به دلیل ساختار قدیمی سازمان و مدرنیزه نشدن و مكانیزه نبودن
فرآیندهای سازمان یا تنها به این دلیل كه بیشتر از چند هزار كاربر ندارند،
جزء سازمانهای متوسط در این بحث به حساب میآیند.
سازمانهای متوسط و كوچك
شركتها
و سازمانهایی كه كمتر از چند هزار كاربر یا چند صد كلاینت دارند، و
آنهایی كه خیلی كوچك و در حد مجموعههای ده الی بیست نفره هستند در این
خانواده از كاربران سیستمهای نرمافزاری قرار میگیرند. برای اغلب این
سازمانهای كوچك و بزرگ، هنوز هم چند صد هزار تومان هزینه برای توسعه و
استقرار سیستمهای نرمافزاری، رقم بزرگی به شمار میرود.
هم به
این دلیل و هم به دلایل فنی، این سازمانها و شركتها باید از فناوریها و
زبانهایی برای توسعه سیستمهای نرمافزاری خود استفاده كنند كه هزینه
كمتری دارند و كاركردن با آنها سادهتر است. من برای اینگونه مجموعهها
استفاده از زبان سیشارپ و راهحلهای مبتنی بر ویندوز (مانند SQL
Server) را توصیه میكنم.
سهولت و قدرت كار با دیتابیس، یكی از
دلایل اصلی قدرت زبانهای داتنتی است. البته به تازگی سیستمعامل، لینوكس
هم طرفداران زیادی پیدا كرده است ولی موضوع انتخاب پلتفرم و سیستمعامل
متفاوت از انتخاب زبان و فناوری برنامهنویسی است.
شاید به همین
دلیل، برخی به دنبال پیادهسازی سیشارپ در این محیطهای غیرمایكروسافتی
هستند. اما به هرحال زبان جاوا در سیستمهای غیرمایكروسافتی طرفداران خاص
خودش را دارد، ضمن اینكه تردیدی ندارم كه هنوز هم استفاده از زبان ویژوال
بیسیك داتنت و API نرمافزارهای آفیس مایكروسافت (مانند اكسس) بهترین
گزینه برای شركتهای كوچك و چندنفره است.
برنامهنویسی برای موبایل
در
حوزه برنامهنویسی وب زبان ++C و پس از آن زبان جاوا پیشتاز است.
زبانهای داتنت نیز كه اخیراً به این حوزه راه یافتهاند، با فاصله زیادی
آن دوتای دیگر را تعقیب میكنند. زبان ++C زبان غامض و پیچیدهای است و
به نظر من به تدریج رو به افول گذاشته است.
اما C و ++C زبان
سختافزار هستند و هربار كه سختافزار جدید و ناشناختهای خلق میشود زبان
شماره یك آن C است. بهتدریج كه آن پلتفرم سختافزاری جان میگیرد، دوباره
زبانهای شیءگرا مانند جاوا و سیشارپ دوروبرش قوت میگیرند. ++C زبان
اصلی سیستمعاملهای سیمبیان و ویندوز موبایل است. زبان جاوا نیز كه
مستقل از سیستمعامل تلقی میشود، در جایی كه سیمبیان یا ویندوز موبایل
غایب باشند، حرف اول را میزند. البته چنانكه میتوان حدس زد، هیچ كس روی
سیستمعامل ویندوز موبایل جاوا را جدی نمیگیرد و نگاهها به سوی سی شارپ
است.
زبانهای دیگر
جدا
از برخی زبانهای برنامهنویسی كه در كاربردهای خاصی مانند هوش مصنوعی
ممكن است قدرت بیشتری داشته باشند، سایر زبانها دیگر كهنه به نظر
میرسند؛ فرترن و كوبول از آن جملهاند. البته زبانهای كار با بانكهای
اطلاعاتی رابطهای مانند T-SQL و PL/SQL موضوع متفاوتی است كه در بحث ما
نمیگنجد. یك نكته دیگر هم باقی میماند و آن هم دیدگاه محافل آكادمیك
درباره زبانهای برنامهنویسی است.
بدون تردید زبان جاوا هنوز هم
محبوبترین زبان در محافل آكادمیك است و پس از آن سی شارپ به دلیل شباهتش
به جاوا مطرح است. البته در برخی از دانشگاههای ایران هنوز هم ممكن است
زبانهای قدیمی و فرسودهای مانند فرترن تدریس شود كه اگر چنین باشد جای
تأسف است.
ولی به نظر من علاقه محافل آكادمیك به این یا آن زبان
ممكن است گمراهكننده باشد. آنچه اهمیت دارد كاربرد و كارایی زبان در یك
زمینه بهخصوص و انعطافپذیری آن در مقابل تغییراتی است كه در صنعت و
نیازهای مصرفكنندگان پدید میآید. بقیه مسائل، همگی سلیقهای هستند و
نباید با تعصب با این موضوع برخورد كرد.