معرفی و مقایسه 20 زبان برنامه نویسی قسمت دوم

1395/9/23 محمدصادق خوش نظر 1994

Lua


لوآ زبان جالبیه. معمولا به عنوان یه زبان اسکریپت نویسی برای محیط های embed استفاده میشه. این باعث شده هم زبان ساده ای باشه، هم سرعت اجرای بالایی داشته باشه.
اگر تا حالا اسمی از لوآ نشنیدید یا براتون مهم نشده، به این گوش کنید. با لوآ میشه برای اندروید و ios بازی های native نوشت. برای این کار میتونید از corona sdk استفاده کنید که یه ابزار برنامه نویسی به همین منظوره.
البته اگر فقط برای اندروید یا فقط برای ios مینویسید، دلیلی نداره از جاوا و سویفت جدا بشید. اما برای بازی دو بعدی کراس پلت فرم یکی از گزینه های خوبتون لوآست. هم سبکه هم سریع هم یادگیریش آسونه. البته باهاش برنامه های کاربردی هم میشه نوشت.
این برای من جذاب ترین کاربرد لوآست. اما زبان لوآ به خاطر ویژگی های جالبش (ارتباط آسون با کدهای c، سینتکس آسون، سرعت بالا و...) توی خیلی از برنامه ها استفاده میشه. مثل لایت روم فوتوشاپ، وی ال سی پلیر، سرورهای آپاچی و انجین اکس، ورک بنچ مای سیکوئل، سیستم مدیریت دیتابیس ردیسو خیلی برنامه های دیگه.
اگر میخواید برنامه یا بازی دو بعدی برای گوشی های محبوب بنویسید، یا اگر کمی وقت خالی دارید، به نظرم می ارزه نگاهی به لوآ بندازید.

Delphi


یه زمانی دلفی خیلی معروف و پر استفاده بود. زمانی که ما Quick Basic (جد vb) رو توی داس تجربه میکردیم، یکی از رقباش زبان Pascal بود. سازنده پاسکال، شرکت بورلند، یه زبان ویژوال با هدف RAD و با همون سینتکس ساخت به نام دلفی. شرکت بورلند چندان موفق نموند و دلفی هم دست به دست چرخید و الان متعلق به شرکتی به اسم Embarcadro هست.
اگر با سابقه این زبون آشنا نباشید، احتمالا شنیدن این توضیحات براتون جذاب نیست و منتظرید تموم شه تا بریم سراغ زبان بعدی. اما اگر کمی تحمل کنید، شاید دلفی زبان مورد علاقه تون بین تمام این زبان ها بشه.
بین تمام زبان هایی که معرفی میکنم، احتمالا تنها زبانی که به راحت ترین شکل ممکن، و فقط با یک بار نوشتن کد، برای تمام پلت فرم ها (اندروید، ios، ویندوز فون، ویندوز، لینوکس، مک و نسخه های 64 بیت این سیستم عامل ها) به شما خروجی میده. اون هم خروجی native. جالب شد. نه؟
دلفی متاسفانه چون ساپورت پیوسته و مناسبی نداشته، و البته چون کاملا تجاری هم هست، به اندازه بقیه رقبا مشهور نیست و کاربران چندان زیادی نداره. اما امبارکادرو همچنان تلاش میکنه با ویژگی های منحصر به فردی که توی دلفی معرفی میکنه، جایگاه خودش رو به دست بیاره. البته تا جایی که میدونم توی کشورهای آمریکای جنوبی و کشورهای عربی کاربرهای زیادی داره.
اگر ایده تولید برنامه های کراس پلت فرم به صورت کاملا نیتیو براتون جذابه و حوصله یادگیری cpp رو ندارید، احتمالا گزینه ای بهتر از دلفی پیدا نمیکنید.

Go

گوگل هر کاری بکنه باید بی چک و چونه پذیرفت. نه؟ اگر کافی نیست باید بگم یکی از طراحان این زبان کن تامپسون هست که خالق یونیکس و زبان برنامه نویس B (پدر C) ه. دیگه جرات دارید بگید نه.
قبول. حالا چی هست؟
تا همینجا بدون این که تصریح کرده باشم، کمی سیر رشد زبان های برنامه نویسی رو دیدید. زبان های c و cpp تولید شدن که برای آدم ها خوانا تر از اسمبلی و زبان ماشین باشن. زبان جاوا و دات نت تولید شد که برنامه رو از پلت فرم جدا کنه. زبان های اسکریپت نویسی متعددی برای محیط های مختلف با سلیقه های مختلف ایجاد شدن. و انقدر این زبان ها سعی کردن ساده تر و ساده تر بشن که c و cpp که با هدف خوانایی تولید شده بودن الان انگ ناخوانا بودن میخورن. هیچ کس هم برنگشت یه زبان سیستمی سطح پایین بنویسه که خصوصیات زبان های مدرن رو داشته باشه و قدرت c و cpp رو. این چنین کاری اصولا باید از شرکتی مثل گوگل و آدم هایی مثل کن تامپسون سر بزنه.
زبان go  مثل c و cpp روی assembly پیاده سازی میشه و بعد از کامپایل شدن به زبان ماشین تبدیل میشه و برای نوشتن برنامه های سطح پایین بسیار مناسبه. در عین حال go سینتکس مدرن تری داره و شاید جالب باشه بدونید سینتکسش به delphi بی شباهت نیست. شاید یه جایی بین c و دلفی.
البته بعید میدونم go جای c یا cpp رو بگیره. اما قطعا برای برنامه نویس ها و هکر هایی که برنامه های سبک و چابک مینویسن و معمولا از c یا cpp استفاده میکنن، استفاده از go جذابیت خواهد داشت. علت ساخت این زبان هم همین بوده. قدرت c و cpp در یک پوسته مدرن و توسعه آسان تر.
البته شاید توی ایران جذابیت زیادی پیدا نکنه چون شاید آدم شرمش بشه وقتی در و همسایه و فامیل میپرسن چیکاره ای بگه با Go کار میکنم.

Dart

اینم یک زبان دیگه از گوگل  البته با هدفی  متفاوت از Go.
یکی از هدف های اولیه زبان دارت نوشتن برنامه های بسیار پرسرعت برای اندروید بوده. مثلا ساخت بازی هایی که به راحتی 60 فریم بر ثانیه رندر میکنن. گوگل داره روی این زبان همچنان کار میکنه و به اندازه go کامل نشده. اما قراره بشه باهاش برنامه های native برای اندروید و ios نوشت.
البته با زبان دارت خیلی کارها میشه کرد. حتی میشه باهاش یه وب سرور اختصاصی نوشت.
یکی دیگه از قابلیت های جذاب دارت، اینه که به زبان دارت کد بنویسید و به جاوا اسکریپت کامپایل کنید. و با توجه به دانش طراحان این کامپایلر معمولا جاوا اسکریپت هایی که توسط کامپایلر دارت تولید میشه از جاوا اسکریپت هایی که دستی مینویسیم بهینه تر هستن.
اگر علاقه دارید با زبان دارت بازی کنید، میتونید یه نسخه خاص از مرورگر Chromium به اسم Dartium رو دانلود کنید که به طور مستقیم از دارت پشتیبانی میکنه. همون طور که بقیه مرورگر ها از اسکریپت های جاوا اسکریپت پشتیبانی میکنن.

Swift

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

Scala

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

Groovy

اگر برنامه نویس اندروید باشید و از Android Studio استفاده میکنید، حتما اسم گرووی رو شنیدید. در واقع Build System جدید اندروید که گردل (Gradle) نام داره، با گرووی نوشته شده. زبان گرووی بیشتر به عنوان یه زبان اسکریپت نویسی که بتونه روی jvm اجرا بشه طراحی شد اما میشه باهاش برنامه های از پیش کامپایل شده هم نوشت.
زبان گرووی بسیار منعطفه و خصوصیات بسیار قدرتمندی برای Meta Programming داره. این انعطاف در حدیه که خیلی ها احساس میکنن «ما نیاز به این همه قدرت نداریم». شاید احساس کنید دارم اغراق میکنم. اما برعکس زبان های دیگه که معمولا با نگاه اول مشخصه سینتکسشون، زبان گرووی انقدر میتونه متنوع و منعطف باشه که سورس کدهاش میتونن بسیار از هیچ ربطی به هم نداشته باشن. واقعا اکثر برنامه نویس ها ترجیح میدن زبانی که استفاده میکنن فقط تا حدی بهشون قدرت بده.
اما از طرف دیگه این ویژگی گرووی باعث شده برای برنامه نویس هایی که برای برنامه نویس های دیگه محیط برنامه نویسی آماده میکنن یه زبان ایده آل باشه.
بین زبان های این لیست، یکی از زبان هاییه که خودم ترجیح میدم خوب با ساختارش آشنا باشم، اما احتمالا به جز استفاده هایی که توی سیستم هایی مثل Gradle داره، فعلا کاری باهاش نداشته باشم.

Kotlin

اول یک دقیقه سکوت
کاتلین برای من از اون اتفاقاتی بود که همیشه آرزوشو داشتم اما هر کسی توان برآورده کردنش رو نداشت. و بالاخره شرکت باسابقه ای مثل JetBrains این آرزو رو برآورده کرد.
اول اگر جت برینز رو نمیشناسید یکم توضیح بدم. اگر php کار باشید شانس خوبی وجود داره که با phpStorm آشنا باشید. اگر نیستید همین الان دانلودش کنید. اگر python کار میکنید خیلی بعیده pyCharm رو نشناسید. اگر ruby مینویسید هم بعید میدونم rubyMine رو نشناسید. و جاوا کارها هم حتما intelliJ رو میشناسن. و همه اینا معتقدن بهترین IDE زبونشون متعلق به شرکت JetBrains هست.
اگر برنامه نویس حرفه ای دات نت باشید مطمئنا با Visual Studio کار میکنید. و جت برینز براتون IDE ننوشته. چون VS واقعا آرزوی همه برنامه نویساست. اما احتمالا پلاگین ReSharper رو شنیدید و استفاده میکنید که جت برینز برای تکمیل قابلیت های VS نوشته. یعنی انقدر این شرکت برنامه نویس ها رو درک میکنه. خب؟
بعد این جت برینز تقریبا همه کاراشو با جاوا انجام میده. همه IDE هایی که اسم بردم با جاوا نوشته شدن. پس جاوا رو هم خوب میشناسه. خب؟
جت برینز هم یه زبان برنامه نویسی مدرن برای jvm طراحی کرده به اسم کاتلین که تقریبا هر چیز خوبی توی زبان های دیگه هست توی این زبان آورده و چیزهای اضافه رو دم در گذاشته.
دیگه نباید خیلی نیاز باشه توضیح بدم. اما اینم بگم که قابلیت های کاتلین برای برنامه نویسی اندروید بی نظیره.

امیدوارم خوب همراهی کرده باشید و خسته نشده باشید.
مهمتر از اون امیدوارم مطالب براتون تازگی داشته باشه و توی آینده کاری و علمیتون تاثیرات مثبتی داشته باشه.

توی جنگ های آینده با فریم ورک ها و ابزارهای مختلف برنامه نویسی و طراحی آشنا میشیم

کلمات کلیدی