Parsi Coders

نسخه‌ی کامل: کدام زبان برنامه‌ نویسی را یاد بگیریم؟ (راهنمای انتخاب زبان برنامه نویسی)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
یکی از ابهامات و سؤالاتی که ممکن است حتی سال‌ها انسان در انتخاب یکی از آن‌ها دچار سردرگمی شود، برای یک دانشجوی رشته کامپیوتر و یا علاقه‌مند به مباحث کامپیوتری، بحث «انتخاب زبان برنامه نویسی» است. تقریباً هر هفته دانشجویانی هستند که ایمیل می‌زنند و یا حضوراً در مورد اینکه روی چه زبانی کار کنند، سؤال می‌کنند. بنابراین، نظر شخصی‌ام را در این مطلب می‌نویسم که بعداً فقط لینک بدهم:
- پیش‌نیاز: الگوریتم

پیش از هر چیز باید بگویم که مشکل اصلی در برنامه‌نویسی، کدنویسی نیست بلکه روش حل مسأله است! من به دانشجویان زیادی کدنویسی به زبان‌های مختلف برنامه‌نویسی را تدریس کرده‌ام، اما از بین آن‌ها، فقط افرادی که توانایی حل مسأله و تشخیص راه حل (الگوریتم) را داشته‌اند توانسته‌اند پروژه‌های کاملی تحویل دهند.

شما باید بتوانید ذهن الگوریتمیک به دست آورید. سریعاً برای پیچیده‌ترین مسائل راه حل ارائه کنید و اگر اشتباه بود، روی راه حل خود کار کنید تا به نتیجه برسید.

برای یادگیری و یا تقویت این مبحث فکر می‌کنم کتاب الگوریتم کار و دانش بهترین منبع باشد: از اینجا دانلود کنید. (این لینک را هم ببینید)

شاید لازم باشد برای تقویت ذهن خود در این زمینه، برخی بازی‌های کامپیوتری که با همین هدف ساخته شده است را بازی کنید که ما پیش از این برخی از آن‌ها را در مطلب «بازی‌هایی برای تقویت ذهن دانشجویانی که دوست دارند برنامه نویس حرفه‌ای شوند» معرفی کرده‌ایم.
- نکته 1: یک زبان کافی نیست:

این روزها اینطور نیست که شما اگر بگویید من فقط یک زبان برنامه‌نویسی خاص را بلد هستم، برای شما کارایی‌ای تصور کنند! پس باید خود را به چندین زبان مجهز کنید. البته به مرور متوجه می‌شوید که همه زبان‌ها شبیه به هم هستند. شما به جایی خواهید رسید که می‌توانید در مدت کوتاهی (شاید یک هفته) خیلی راحت از یک زبان به زبان دیگر سوئیچ کنید. چون خواهید فهمید که همه زبان‌ها ساختار تقریباً مشابهی دارند، فقط اسم‌های توابع با هم فرق می‌کند. کمی طول می‌کشد تا با اسامی جدید در آن زبان آشنا شوید.
- نکته 2: یک زبان کافی است!

اگر این دو نکته را با هم جمع کنید، نتیجه این می‌شود: سیاست کلی شما باید این باشد: از همه زبان‌ها تا جایی که لازم است، بدانید، اما یک زبان را به طور تخصصی و حرفه‌ای بدانید. به طور مثال، من تقریباً با بیش از 10 زبان برنامه‌نویسی آشنایی دارم. مثلاً «پارس‌خوان» را با C#‎ نوشته‌ام، «تستا» را با PHP، وyouRL را با Ajax، «پخش‌کننده صدای آفتابگردان» را با پاسکال و ... که در همین پروژه‌ها، زبان‌های دیگری (مثل HTML، CSS، Javascript، Action Script و...) کاربرد داشته‌اند. شما اگر از من هر چه به این زبان‌ها بخواهید بالاخره گلیمم را بیرون می‌کشم، اما تمرکز و تخصص اصلی من روی زبان PHP است.
- اولین زبان برنامه‌نویسی: زبان C

پس، حالا که متوجه شدید که باید چندین زبان را یاد بگیرید، اولین زبانی که باید یاد بگیرید زبان C است. زبان C را می‌توان پایه بسیاری از زبان‌های برنامه‌نویسی پیشرفته دانست. اگر با ساختارهای مختلف در این زبان آشنا باشید خیلی راحت می‌توانید زبان‌هایی مثل سی شارپ، جاوا، پی.اچ.پی، جاوا اسکریپت و ... خیلی‌های دیگر را یاد بگیرید.

توجه: در حد مقدماتی، زبان C با C++‎ تفاوت خاصی ندارد. پس اگر خواستید می‌توانید با C++‎ شروع کنید. اما من فکر می‌کنم همان C بهتر است.

تصویر زیر میزان عمومیت زبان‌های برنامه‌نویسی در بین برنامه نویسان را نشان می‌دهد که از سایت LangPop.com اخذ شده است:

[عکس: programming_languages.png]



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

- متغیرها
- اصول دریافت مقدار از و نمایش آن به کاربر
- ساختارهای تصمیم‌گیری (if و switch)
- حلقه‌های تکرار (for، while، foreach و do..while)
- آرایه‌ها
- کار با فایل‌های متنی (باز کردن، نمایش و درج)
- اشاره‌گرها
- مبحث Struct
- اگر C++‎ را یاد می‌گیرید، مبحث کلاس‌ها و شیئ‌گرایی را هم تا حدودی یاد بگیرید.
همین‌ها کافی‌ست.
- انتخاب مهم: انتخاب کنید: زبان برنامه‌نویسی وب یا دسکتاپ یا موبایل؟

بعد از اینکه زبان C یا C++‎ را در حد مقدماتی یاد گرفتید، حالا باید تصمیم اصلی زندگی برنامه‌نویسی‌ای خود را بگیرید!

آیا می‌خواهید نرم افزاری که طراحی می‌کنید تحت وب اجرا شود؟ یا در قالب یک برنامه روی سیستم کاربر نصب شود و یا اینکه روی موبایل کاربر اجرا شود؟
--- کدام یک بهتر است؟

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

-- در شهرستان‌های کوچک زندگی می‌کنید یا در شهرهای بزرگ مثل تهران؟

من یک ایده برای خودم دارم که البته ممکن است مخالفان و موافقان خاص خودش را داشته باشد: من می‌گویم اگر در شهرستان زندگی می‌کنید و مثل من دوست ندارید تا آخر عمر، یک گام هم بیرون از شهرتان بگذارید، قید برنامه‌نویسی موبایل و دسکتاپ را بزنید. کمتر کسی پیدا می‌شود در شهرستان به شما پیشنهاد برنامه‌نویسی موبایل را بدهد و در ازای آن از چند صد تا چند میلیون تومان پول بدهد!
برنامه‌های دسکتاپ سازمان‌ها و شرکت‌ها همگی از مراکز اصلی ارسال می‌شوند و هیچ وقت به یک مؤسسه شهرستانی نخواهند گفت مثلاً برنامه دفتر پستی ما را بنویس!

-- برنامه‌نویسی وب: با یک تیر سه نشان را بزنید!

اگر شما برنامه‌نویسی وب را یاد بگیرید، برنامه‌هایی که خواهید نوشت بر روی هر سه Platform (بستر) یعنی وب، دسکتاپ و موبایل به یک صورت اجرا خواهند شد!
مثل تستا (سیستم مدیریت آزمون آنلاین)، که هم با یک دابل کلیک، بر روی ویندوز مربی در یک شبکه محلی اجرا خواهد شد و هم اینکه روی یک سایت نصب می‌شود و تحت وب اجرا می‌شود.

-- دنیا دنیای وب است:

بخواهید یا نخواهید دنیا دارد به سمت آنلاین کردن تمام برنامه‌ها پیش می‌رود. همه نرم افزارها، حتی سنگین‌ترین برنامه‌ها مثل فتوشاپ، دارند نسخه آنلاین تهیه می‌کنند. به زودی Nettopها و Netbookها فراگیر می‌شوند.

- چیزی لذت‌بخش‌تر از طراحی وب نیست!

تجربه من نشان می‌دهد که کاربرانی که قبلاً با زبان C کار کرده‌اند وقتی اولین برنامه‌هایشان به زبان‌های تحت وب را می‌نویسند، گل از گلشان می‌شکفد! لذت می‌برند از اینکه بر خلاف C که همیشه برنامه‌هایشان Error می‌داد و اجرا نمی‌شد، اینجا با اینکه کلی غلط دارند، اما بالاخره برنامه‌شان اجرا می‌شود و یک خروجی شیک تحویل می‌دهدAngel من در کلاس‌هایم می‌گویم که: زبان‌های طراحی وب، سخاوتمند هستند و بالاخره با اینکه خطا دارید، با شما راه می‌آیند.

پس من فکر می‌کنم اولویت اول شما باید وب باشد مگر اینکه خلاف آن ثابت شود!!

تأکید می‌کنم که این بستگی به محیط کاری و زندگی شما دارد.

[عکس: confused.jpg]

ادامه توضیحات را در «ادامه متن...» مطالعه نمایید.

- در برنامه‌نویسی وب، HTML یا CSS یا Javascript یا PHP یا ASP یا JSP؟

اگر برنامه‌نویسی وب را انتخاب کردید، حالا باید زبان‌های آن زمینه را بشناسید و انتخاب کنید که کدام زبان بیشتر به درد شما می‌خورد:

-- انتخاب کنید: برنامه‌نویسی ایستا یا پویا؟

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

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

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

-- از بین زبان‌های برنامه‌نویسی پویا، کدامیک؟ ASP یا PHP یا JSP؟ یا Rubby on Rail و غیره؟

یکی دیگر از درگیری‌ها و ابهامات بین دانشجویان رشته کامپیوتر همین مسأله است! این یک جنگ تاریخی بوده و هست! کافی‌ست در اینترنت جستجو کنید "PHP یا ASP" تا ببینید که چه درگیری‌هایی بین کاربران وجود دارد!

-- در شهرستان‌های کوچک زندگی می‌کنید یا در شهرهای بزرگ مثل تهران؟

مجدداً این سؤال را از شما پرسیدم، چون واقعاً سؤال تعیین کننده‌ای است. چرا؟
در کل، افرادی که به سراغ PHP می‌روند، معمولاً روحیه Open Source دارند و کدهایشان را به رایگان منتشر می‌کنند. اما افرادی که سراغ ASP می‌روند، معمولاً مثل اربابشان مایکروسافت، روحیه تجاری و انحصاری دارند. بنابراین، شما بسیار کم می‌بینید که یک CMS (سیستم مدیریت محتوا) و یا حتی یک کامپوننت به زبان ASP منتشر شود. (البته کم نیست، اما بلا شک کمتر از PHP است)

بنابراین، می‌شود گفت:

- برنامه‌نویسی به زبان ASP یعنی نوشتن برنامه از صفر:

یعنی چون سیستم آماده وجود ندارد، شما باید خودتان آستین بالا بزنید و یک برنامه را بنویسید. مثلاً یک مشتری به شما می‌گوید من یک سایت معرفی مؤسسه‌ام یا یک انجمن گفتگو یا یک گالری عکس و یا مدیریت کاربران و امثالهم را می‌خواهم. شما شروع می‌کنید از صفر برنامه‌اش را می‌نویسید. تأمین امنیت، خطایابی و ... همه به عهده شماست.

- نوشتن از صفر یعنی صدها هزار تا چند میلیون تومان هزینه!

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

- کدام مؤسسه شهرستانی بیش از یک میلیون تومان صرف سایت خود خواهد کرد؟

تجربه من نشان می‌دهد که تقریباً هیچ مؤسسه و سازمان و شرکتی در شهرستان به یک شرکت طراحی وب یا به شخص شما، این مقدار پول نمی‌دهد.
من حدود 8 سال است که درگیر طراحی وب هستم و با مؤسسات مختلف شهرستانی وارد مذاکره برای داشتن یک سایت شده‌ام و این را به جرأت و از روی تجربه‌ام می‌گویم که در شهرستان، این مبالغ، بسیار بالاست.
(بگذریم که گاهی برخی مؤسسات بیشتر از این هزینه را به یک شرکت طراحی وب تهرانی می‌دهند، چون به شرکت‌های شهرستانی اعتماد ندارند)

- برنامه‌نویسی به زبان PHP یعنی در اختیار داشتن صدها سیستم و کامپوننت آماده:

شما اگر یاد بگیرید که به زبان PHP برنامه بنویسید متوجه خواهید شد که این روزها تقریباً برای هر کاری که مشتری از شما بخواهد، یک سیستم آماده وجود دارد! شما با مهارتی که کسب کرده‌اید، در مدت کوتاهی، سیستم را باب میل او تغییر می‌دهید و روی سایتش نصب می‌کنید و تمام!! یک قیمت اندک (زیر یک میلیون تومان. حتی گاهی زیر 100 هزار تومان) به او اعلام می‌کنید. هم او راضی است و هم شما و معامله به خوبی جوش می‌خورد و در کمترین زمان کار را تحویل می‌دهید.

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

به خیلی از شاگردانم در کلاس‌های طراحی وب یاد داده‌ام که چطور CMSهایی مثل PHP-Nuke، WordPress و امثالهم را نصب کنند. مثلاً این روزها که انتخابات است، می‌بینم که چند نفرشان سایت‌های افراد کاندید انتخابات را با WordPress بالا آورده‌اند! تصور کنید، با تمام مطالب و تغییراتش، کمتر از یک هفته زمان می‌گیرد و بالای پانصد هزار تومان از آن کاندید می‌گیرند.

- اگر در تهران یا مراکز استان هستید، به سمت ASP یا در بهترین حالت، JSP بروید:

در تهران و مراکز استان، طبیعتاً دفاتر مرکزی مؤسسات، شرکت‌ها و ادارات قرار گرفته‌اند و طبق یک قرارداد چند میلیونی تا چند ده میلیونی (که برای آن‌ها واقعاً چیزی به حساب نمی‌آید) هسته اصلی سیستم یا سایت خود را سفارش می‌دهند و در شعبه‌های خود منتشر می‌کنند. از طرفی شما به عنوان برنامه‌نویس به زبان ASP، احتمالاً در مراکزی استخدام خواهید شد که نبض این سازمان‌ها را در دست دارند. این مراکز، به دلیل امکانات جذابی که Visual Studio در سادگی کد نویسی و کار گروهی و مدیریت پروژه‌ها فراهم می‌کند، ترجیح می‌دهند با ASP و یا Java کار کنند. پس در آن شهرها برعکس شهرستان‌ها، به نوعی شاید عاقلانه نباشد که به سمت PHP بروید. (مگر اینکه بخواهید برای خودتان کار کنید که پیشنهاد نمی‌کنم)

- بین جاوا و ASP کدام؟

در آگهی‌های استخدام، خیلی کم دیده‌ام بنویسند برنامه‌نویس JSP استخدام می‌کنند. معمولاً ASP در اولویت است. دلیل آن هم بلاشک قدرت بسیار بالای Visual Studio در خلق پروژه است.

توجه: زبان‌های جدیدتر مثل Python و Rubby on rails و ... هم اینطور که مشخص است دارند جا باز می‌کنند. بد نیست اگر در تهران زندگی می‌کنید روی این موارد هم تحقیق کنید. من فعلاً فرصت نکرده‌ام روی این زبان‌ها وقت بگذارم، پس، ایده‌ای ندارم.

خوب، این از برنامه‌نویسی تحت وب.

[عکس: Programming_Languages.jpg]
- در برنامه‌نویسی دسکتاپ، C#‎ یا VB یا Java یا Delphi؟

این هم از آن بحث‌های داغ بین برنامه‌نویسان است! باور کنید من با ترس و لرز دارم نظرم را می‌نویسم. می‌ترسم یکی از طرفداران مخالف نظر من بیاید در بخش نظرات حساب من را بکوبد! Smile

- ویژوال بیسیک خواهد مرد!

من شخصاً معتقدم VB همان اوائل و فقط برای بچه دبیرستانی‌ها خوب بود. همانطور که در آمار بالا هم می‌بینید، روز به روز از آمار کسانی که به سمت آن می‌روند، کمتر خواهد شد. دلیل آن مثل آفتاب واضح است: همه زبان‌ها ساختاری شبیه به C دارند، اما VB ندارد!
شما اگر C را بلد باشید و بخواهید VB یاد بگیرید، تقریباً باید C را فراموش کنید و دوباره VB را یاد بگیرید. بر فرض هم که VB را یاد گرفتید، تمام زبان‌های دیگری که سر و کار دارید، ساختار مشابه C دارند. پس به نظر شما عاقلانه‌تر نیست که شما C#‎ را یاد بگیرید که اگر یک روز خواستید به سراغ PHP یا هر زبان دیگری بروید، تمام ساختارهای آن شبیه به C#‎ باشد و راحت‌تر سوئیچ کنید؟

با توجه به اینکه تمام زبان‌های مایکروسافتی تحت ‎.NET شده‌اند، فرقی ندارد که شما VB بلد باشید یا C#‎. پس سی شارپ را یاد بگیرید که شبیه‌تر به زبان‌های دیگر باشد.

دقت کنید که گاهی VB هم کار راه انداز می‌شود. پس نیم نگاهی به آن هم داشته باشید. مثلاً من خودم VB مقدماتی را تدریس کرده‌ام، اما هرگز روی پیشرفته وقت نخواهم گذاشت، چون ارزش ندارد.

- بین C#‎ و جاوا و دلفی کدام؟

دلفی هم با توجه به حضور سی شارپ یک مرده به حساب می‌آید. اما جاوا جای بحث دارد.
شما اگر جاوا را یاد بگیرید، برنامه شما به راحتی بر روی بسترهای مختلفی (از جمله گوشی‌ها، وب، دسکتاپ و ...) اجرا خواهد شد. من فکر می‌کنم این روزها بیشترین کاربرد جاوا در برنامه‌نویسی موبایل است.

برای برنامه‌نویسی دسکتاپ، جاوا را چندان پیشنهاد نمی‌کنم.
- در برنامه‌نویسی موبایل، کدام پلتفرم؟ Android یا iOS یا Windows Phone یا Java؟

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

- اپل ما را خط زده است، پس ما هم iOS را خط می‌زنیم:

احتمالاً می‌دانید که اپل همه چیزش را برای ایران تحریم کرده است. از طرفی برنامه‌های اپل باید حتماً توسط اپل و در App Store تأیید شوند و قرار بگیرند وگرنه قابل استفاده روی گوشی کاربر نیستند (مگر اینکه Jail Break شده باشد که خوب، عاقلانه نیست روی گوشی‌های جیل.بریک شده برنامه‌ریزی کنید). به همین راحتی‌ها نمی‌توانید برنامه‌ای که نوشته‌اید را به دست کاربر برسانید. من تعداد معدودی ایرانی دیده‌ام که برای اپل برنامه‌نویسی می‌کنند که آن‌ها هم اکثرشان در خارج از کشور زندگی می‌کنند و محدودیت قانونی ندارند.

به هر حال، اگر بخواهید برای iOS کدنویسی کنید، باید به زبان C++‎ مسلط باشید. Xcode SDK را از سایت اپل دانلود کنید و روی سیستم عامل مک خود نصب کنید و شروع کنید. البته می‌توانید از پروژه مونو هم استفاده کنید تا کدهای C#‎ شما روی iOS اجرا شوند.

- آندروید دنیای گوشی‌ها را فتح خواهد کرد:

گوگل روی هر چیزی دست بگذارد، دیر یا زود به صدر لیست منتقل می‌شود و این طبیعی‌ست.

آندروید با اینکه مدت کمی از عمرش می‌گذرد، اما در صدر لیست سیستم عامل‌های موبایل است و به زودی همه جا دیده خواهد شد حتی روی یخچال فریزر شما!!

بنابراین، پیشنهاد اول من این است که به سمت آندروید بروید.

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

- ویندوز فون، جان خواهد گرفت:

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

برای ویندوز فون می‌توانید به زبان C#‎ برنامه بنویسید.



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

اما،
معطل نکنید! یکی را انتخاب و اقدام کنید!

به یکی گفتند: 30 سالت شده است، چرا نماز نمی‌خوانی؟ گفت: هنوز دارم تحقیق می‌کنم که اسلام برتر است یا مسیحیت یا یهودیت!!

زمانی که دانشجو بودم، گروهی از دوستان بودند که هر وقت در جمعشان قرار می‌گرفتم، بحث سر این بود که: کدام زبان بهتر است که برویم سراغش؟ از ترم یک تا هشت، از اساتید سؤال می‌کردند که: استاد! کدام زبان بهتر است!؟ دانشگاه تمام شد و آن دوستان در نهایت انتخاب نکردند که کدام زبان بهتر است و تا جایی که می‌شناسمشان، هیچ کدام برنامه‌نویس نشدند!!

شما باید یک دین را که فعلاً فکر می‌کنید برتر است، انتخاب کنید و طبق آن پیش بروید، اگر بعداً به این نتیجه رسیدید که فلان دین بهتر است، مشکلی نیست، به آن دین سوئیچ می‌کنید! (محتوای تمام ادیان تقریباً یکی‌ست، فقط نام‌ها تغییر کرده است) مهم این است که فعلاً بلاتکلیف (گمراه) نباشید Smile

سریعاً یک زبان (مثلاً C++‎) را انتخاب کنید و وقت را تلف نکنید. روی آن وقت بگذارید... در حین کار، به این نتیجه می‌رسید که فلان زبان بهتر است و به سراغ آن زبان می‌روید.



آخرین مطلب:
واقعاً هر که در شهرستان است، محکوم به انتخاب زبان‌هایی که شما گفتید است؟

خیر، این روزها اینترنت، محدودیت‌های جغرافیایی (یا به قول این ویدئو، Geographical Boundaries) را شکسته است. شما می‌توانید در شهرستان باشید، اما محدوده کاری‌تان کل ایران و حتی دنیا باشد. فقط باید بتوانید خودتان را روی اینترنت مطرح کنید که این یک تسلط کافی روی بحث طراحی وب را می‌طلبد.
به طور مثال، من در شهرستان هستم، اما پس از ارائه تستا، بسیاری از سازمان‌ها و دانشگاه‌ها و امثالهم تماس گرفته‌اند و پیشنهاد سفارشی‌سازی تستا را داده‌اند. چندین مؤسسه مطرح در تهران پیشنهاد همکاری در زمینه تبدیل متن به صدا (مربوط به پروژه پارس‌خوان) را داشته‌اند. برخلاف من که حال و حوصله و وقت کار گروهی و سفارشات سنگین را ندارم، شما اگر بخواهید از این راه کسب درآمد کنید، هیچ محدودیتی در محل سکونت و کار شما وجود ندارد.

از دوستانی که احتمالاً اظهار نظر خواهند کرد، خواهش می‌کنم به تأکیدات بنده دقت کنند که این‌ها فقط اظهار نظر شخصی بود و نه یک وحی منزل! من نظرم را گفتم. شما هم نظرتان را بدون هیچ تعصب (و احیاناً لحن تند نسبت به دوستان دیگری که نظر می‌دهند) بیان کنید.

در نهایت این عکس را هم ببینید:

[عکس: 10_top_programming_language.jpg]

موفق باشید؛
حمید رضا نیرومند

منبع:http://aftab.cc/article/994
با تشکر از مطلب شما
بین C#‎ و جاوا و دلفی کدام؟

دلفی هم با توجه به حضور سی شارپ یک مرده به حساب می‌آید. اما جاوا جای بحث دارد.


دلفی xe2 قابلیت کامپایل برای مک و اندروید داره

و واقعا دلفی زبان قوی و راحتیه
نمیشه گفت یه مردست !
اشاره:
كدام زبان برنامه‌نويسي را انتخاب كنم؟ از كدام نوع ديتابيس استفاده كنم؟ اين‌ها سؤالات قديمي و تاحدودي كليشه‌اي هستند. با اين حال خواندن يكي دو مقاله جالب در اينترنت باعث شد، طرح مجدد اين موضوع هميشگي را خالي از فايده ندانم.

كدام زبان برنامه‌نويسي را انتخاب كنم؟ از كدام نوع ديتابيس استفاده كنم؟ اين‌ها سؤالات قديمي و تاحدودي كليشه‌اي هستند. با اين حال خواندن يكي دو مقاله جالب در اينترنت باعث شد، طرح مجدد اين موضوع هميشگي را خالي از فايده ندانم.

اصولاً هر از گاهي بايد اين پرسش را مجدداً در كليه سطوح مهندسي نرم‌افزار، چه در صنعت، چه در رسانه‌ها و چه در دانشگاه‌ها مطرح كرد و دليل آن هم، بسيار ساده است. زبان‌هاي برنامه‌نويسي نيز مانند زبان‌هاي گويشي انسان‌ها پويا هستند و مرتباً متحول مي‌شوند. در اين راستا برخي خود را با نيازهاي روز تطابق داده و برخي نيز از اين تحولات جا مي‌مانند.

به همين دليل لازم است هر چند وقت يك‌بار اين پرسش را مطرح كرده و جديدترين پاسخ‌ها را به نقد بگذاريم. براي اين‌كه بحث از حالت نظري خارج شود و حالت كاربردي پيدا كند، اجازه مي‌خواهم نظرم را در اين مورد به اختصار بيان كنم.

برنامه‌نويسي وب‌

فعلاً برنامه‌نويسي تحت وب داغ‌ترين سوژه در دنياي برنامه‌نويسي است. شايد بد نباشد يادآوري كنم كه اصولاً فلسفه برنامه‌نويسي تحت وب چه بود كه به اينجا رسيد. علت محبوبيت و رشد گسترده برنامه‌نويسي تحت وب، حل شدن مشكل كلاينت بود.

در اين مدل از برنامه‌نويسي، برنامه‌نويس دغدغه چنداني درباره قابل نصب بودن برنامه‌اش روي پلتفرم‌هاي مختلف ندارد زيرا وضعيت تقريباً روشن است. همين كه برنامه شما روي يكي دو مرورگر معروف مانند فايرفاكس و اينترنت اكسپلورر جواب بدهد، كافي است.

بنابراين در پاسخ به اين سؤال كه كدام زبان برنامه‌نويسي وب را انتخاب كنيم، بايد گفت زبان‌هايي كه از همه ساده‌ترند و تغيير و تحولات را به سرعت مي‌پذيرند. در حال حاضر در اين زمينه دو فناوري PHP و ASP.NET پيشتاز هستند. زبان اسكريپت‌نويسي PHP شباهت‌هايي به زبان C دارد.

به همين دليل سرعت كامپايل شدن آن بالا است و سايت‌هايي كه از اين زبان استفاده مي‌كنند اندكي سريع‌ترند. فناوري ASP.NET از ويژوال بيسيك دات‌نت يا سي‌شارپ استفاده مي‌كند. اين دو زبان، به ويژه در جديدترين نسخه فناوري دات‌نت در يك حد هستند.

اما به نظر من ويژوال بيسيك همچنان جذاب‌تر و ساده‌تر به نظر مي‌رسد. سايت‌هايي كه با اين دو زبان نوشته مي‌شوند نرم‌افزارهاي قدرتمندي را پديد مي‌آورند كه قدرت انعطاف و گستره كارايي آن‌ها بالاست زيرا هر دو زبان OOP هستند. علاوه بر سهولت برنامه‌نويسي، پشتيباني از برخي موج‌هاي نو مانند اي‌جكس هم بحث روز است.

هم PHP و هم ASP.NET وضع خوبي در اين زمينه دارند. علاوه بر اين، برخي فناوري‌هاي روز هم خيلي مهم هستند كه وب‌سرويس يكي از آن‌هاست. در حال حاضر رقابت شديدي ميان فناوريSOAP كه از سوي آي بي‌ام و مايكروسافت و ديگران پشتيباني مي‌شود و فناوري REST كه از سوي ياهو و برخي شركت‌هاي بزرگ ديگر حمايت مي‌شود، وجود دارد.

اما وضع بعضي زبان‌ها مانند جاوا (JSP) و ColdFusion در دنياي وب خراب است و برخي زبان‌ها اخيراً دوباره مورد توجه قرارگرفته‌اند كه از آن جمله مي‌توان به Python و Ruby اشاره كرد. وضعيت جاوا در وب در اين ميان جالب توجه است. برخلاف موفقيت چشمگير جاوا در برنامه‌نويسي براي سيستم‌هاي بزرگ، اين زبان به شدت در وب دچار ناكامي است. وب يك دنياي بصري است و به سادگي و ظاهر سيستم‌ها اهميت مي‌دهد.

به همين دليل زبان‌هاي فاقد ابزارهاي ويژوال و قدرتمند كه در عين حال ساده نيز هستند در اين وادي محكوم به زوالند و اين مسئله براي جاوا كه در زمينه وارد كردن مفاهيم بصري و پويا به دنياي وب پيشگام بود، ناگوار است، البته اين قضيه هيچ ربطي به زبان اسكريپت‌نويسي «جاوااسكريپت» كه با ظهور اي‌جكس جان تازه‌اي پيدا كرده، ندارد.

برنامه‌نويسي سيستم‌هاي بزرگ‌

[عکس: s81_donyaye-barname-nevisi_s.jpg]
اما وضعيت در صنايع و سازمان‌هاي بزرگ بسيار متفاوت است. در جاهايي مانند صنايع مالي و بانكي، صنايع پتروشيمي و نفت، صنايع مخابراتي، سازمان‌هاي دولتي، صنايع خودروسازي و مانند اين‌ها، هنوز هم جاوا و مشتقاتش حرف اول را مي‌زنند. قدرت جاوا در اين حوزه‌ها به قدري است كه حتي مي‌توان - البته با كمي احتياط - گفت موفقيت سيستم‌هاي ديگري مانند اوراكل (كه مبتني بر جاوا است) نيز بي ارتباط با استيلاي جاوا بر اين محيط‌ها نيست.

كاركردن با جاوا در محيط‌هاي بزرگ كار آساني نيست. اوراكل هم آسان نيست و به طور كلي ورود به اين عرصه‌ها چالش‌هاي مختلفي را پيش روي برنامه‌نويسان و شركت‌هاي نرم‌افزاري قرار مي‌دهد، به همين دليل سيستم‌هاي مبتني بر جاوا، گران و پرهزينه و غولآسا هستند. با اين حال توجه كنيد كه منظور از سازمان‌هاي بزرگ در اينجا سازمان‌هايي هستند كه از نظر ابعاد، تعداد كلاينت‌ها و تراكنش‌ها واقعاً بزرگ هستند و منظور ما از آن شأن و منزلت يك سازمان نيست.

در واقع شركت‌هايي مانند اپراتورهاي موبايل يا صنعت نفت در ايران را مي‌توان نمونه‌هايي از اينگونه سازمان‌ها محسوب كرد. اما بسياري از سازمان‌هاي دولتي در ايران صرف ‌نظر از اهميت استراتژيك يا منزلتشان، به دليل ساختار قديمي سازمان و مدرنيزه نشدن و مكانيزه نبودن فرآيندهاي سازمان يا تنها به اين دليل كه بيشتر از چند هزار كاربر ندارند، جزء سازمان‌هاي متوسط در اين بحث به حساب مي‌آيند.

سازمان‌هاي متوسط و كوچك‌


شركت‌ها و سازمان‌هايي كه كمتر از چند هزار كاربر يا چند صد كلاينت دارند، و آن‌هايي كه خيلي كوچك و در حد مجموعه‌هاي ده الي بيست نفره هستند در اين خانواده از كاربران سيستم‌هاي نرم‌افزاري قرار مي‌گيرند. براي اغلب اين سازمان‌هاي كوچك و بزرگ، هنوز هم چند صد هزار تومان هزينه براي توسعه و استقرار سيستم‌هاي نرم‌افزاري، رقم بزرگي به شمار مي‌رود.

هم به اين دليل و هم به دلايل فني، اين سازمان‌ها و شركت‌ها بايد از فناوري‌ها و زبان‌هايي براي توسعه سيستم‌هاي نرم‌افزاري خود استفاده كنند كه هزينه كمتري دارند و كاركردن با آن‌ها ساده‌تر است. من براي اينگونه مجموعه‌ها استفاده از زبان سي‌شارپ و راه‌حل‌هاي مبتني بر ويندوز (مانند SQL Server) را توصيه مي‌كنم.

سهولت و قدرت كار با ديتابيس، يكي از دلايل اصلي قدرت زبان‌هاي دات‌نتي است. البته به تازگي سيستم‌عامل، لينوكس هم طرفداران زيادي پيدا كرده است ولي موضوع انتخاب پلتفرم و سيستم‌عامل متفاوت از انتخاب زبان و فناوري برنامه‌نويسي است.

شايد به همين دليل، برخي به دنبال پياده‌سازي سي‌شارپ در اين محيط‌هاي غيرمايكروسافتي هستند. اما به هرحال زبان جاوا در سيستم‌هاي غيرمايكروسافتي طرفداران خاص خودش را دارد، ضمن اين‌كه ترديدي ندارم كه هنوز هم استفاده از زبان ويژوال بيسيك دات‌نت و API نرم‌افزارهاي آفيس مايكروسافت (مانند اكسس) بهترين گزينه براي شركت‌هاي كوچك و چندنفره است.

برنامه‌نويسي براي موبايل‌

در حوزه برنامه‌نويسي وب زبان ++C و پس از آن زبان‌ جاوا پيشتاز است. زبان‌هاي دات‌نت نيز كه اخيراً به اين حوزه راه يافته‌اند، با فاصله زيادي آن دوتاي ديگر را تعقيب مي‌كنند. زبان ++‌C زبان غامض و پيچيده‌اي است و به نظر من به تدريج رو به افول گذاشته است.

اما C و ++C زبان سخت‌افزار هستند و هربار كه سخت‌افزار جديد و ناشناخته‌اي خلق مي‌شود زبان شماره يك آن C است. به‌تدريج كه آن پلتفرم سخت‌افزاري جان مي‌گيرد، دوباره زبان‌هاي شيءگرا مانند جاوا و سي‌شارپ دوروبرش قوت مي‌گيرند. ++C ‌زبان اصلي سيستم‌‌عامل‌هاي سيمبيان و ويندوز موبايل است. زبان جاوا نيز كه مستقل از سيستم‌عامل تلقي مي‌شود، در جايي كه سيمبيان يا ويندوز موبايل غايب باشند، حرف اول را مي‌زند. البته چنان‌كه مي‌توان حدس زد، هيچ كس روي سيستم‌عامل ويندوز موبايل جاوا را جدي نمي‌گيرد و نگاه‌ها به سوي سي شارپ است.

زبان‌هاي ديگر
جدا از برخي زبان‌هاي برنامه‌نويسي كه در كاربردهاي خاصي مانند هوش مصنوعي ممكن است قدرت بيشتري داشته باشند، ساير زبان‌ها ديگر كهنه به نظر مي‌رسند؛ فرترن و كوبول از آن جمله‌اند. البته زبان‌هاي كار با بانك‌هاي اطلاعاتي رابطه‌اي مانند T-SQL و PL/SQL موضوع متفاوتي است كه در بحث ما نمي‌گنجد. يك نكته ديگر هم باقي مي‌ماند و آن هم ديدگاه محافل آكادميك درباره زبان‌هاي برنامه‌نويسي است.

بدون ترديد زبان جاوا هنوز هم محبوب‌ترين زبان در محافل آكادميك است و پس از آن سي شارپ به دليل شباهتش به جاوا مطرح است. البته در برخي از دانشگاه‌هاي ايران هنوز هم ممكن است زبان‌هاي قديمي و فرسوده‌اي مانند فرترن تدريس شود كه اگر چنين باشد جاي تأسف است.

ولي به نظر من علاقه محافل آكادميك به اين يا آن زبان ممكن است گمراه‌كننده باشد. آنچه اهميت دارد كاربرد و كارايي زبان در يك زمينه به‌خصوص و انعطاف‌پذيري آن در مقابل تغييراتي است كه در صنعت و نيازهاي مصرف‌كنندگان پديد مي‌آيد. بقيه مسائل، همگي سليقه‌اي هستند و نبايد با تعصب با اين موضوع برخورد كرد.

منبع:http://www.shabakeh-mag.com/Article.aspx?id=1003245