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