پنج زبان برنامهنویسی برای سال 2015
انتخاب یک زبان برنامهنویسی برای یادگیری، مانند انتخاب یک زبان خارجی برای یادگیری است. اگر بدانید چرا میخواهید از آن زبان استفاده کنید، موفقتر خواهید شد. در این مقاله ما پنج زبان برنامهنویسی جدید را به شما معرفی میکنید؛ زبانهایی که احتمالا تا پنج سال آینده هم روی بورس خواهند بود. این زبانها ویژگیهایی دارند که با آنها میتوانید ایدههای جدید خود را پیادهسازی کنید.
اگر به کل، هیچ زبان برنامهنویسیای بلد نیستید، بهترین کار این است که با یک زبان کلاسیک شروع کنید.
بان C نهتنها یکی از محبوبترین زبانهای مورد استفاده است، بلکه خانواده خودش را هم دارد (مانند C++، C#، Objective-C و امثالهم) که در مهندسی، تجارت و استفادههای عمومی کاربرد فراوانی دارند. آشنا شدن با زبان C شروعی عالی است؛ این زبان ساده، سریع و جهانی است، و مفاهیم آن بسیار در یادگیری زبانهای دیگر به شما کمک خواهد کرد.
از زمان ارائه زبان C در دهه 1970، اشیا بزرگترین نوآوری در برنامهنویسی بودهاند. زبان C با کد برنامه و دادهها بدون محدودیت کار میکرد؛ یعنی هر کدی میتوانست روی هر دادهای کار کند و به این ترتیب تغییر کد برنامه اثرات غیرمنتظرهای میتوانست داشته باشد. برنامهنویسی شیگرا (Object Oriented) کدها و دادهها را ترکیب کرده و اشیا را میسازد که اجزای حفاظتشده و ایمنی از برنامه اصلی هستند. در این میان جاوا زبان برنامهنویسی شیگرای ارزشمندی است.

اگر میخواهید زبانی برای استفاده تجاری یاد بگیرید، JavaScript و Python گزینههایی عالی هستند که ترکیبی از تکنیکها و فلسفههای زبانهای قدیمیتر را استفاده میکنند. جاوااسکریپت بسیار مد روز است و پایتون هم زبانی است که یادگیری آن بهسرعت انجام میشود و به دلیل کتابخانههای بزرگی که از اجزای از پیشنوشتهشده دارد میتواند نتایج سریعی ارائه دهد. هر دو از بسیاری از مفاهیم زبانهای قدیمیتر استفاده میکنند و برای هر دو منابع آموزشی بسیاری در دسترس است.
اما در این مقاله به پنج زبانی میپردازیم که جزو داغترین زبانهای جدید هستند و ارزش آن را دارند که به یادگیری آنها فکر کنید.
( بهترین زبان برای ساخت خدمات ابری/تحت وب)
GO
Go، زبانی متنباز از گوگل است که در سال 2009 معرفی شده و دارد به ششمین سالگرد تولدش میرسد. این زبان شتاب زیادی گرفته است.
زبان Go را گروه کوچکی از برنامهنویسان گوگل ایجاد کردند که از شیوه سنتی C++ خسته شده بودند. آنها میخواستند تمرکز روی سرعت و سادگی باشد. زبان Go از همزمانی (Concurrency) پشتیبانی میکند و یک برنامه میتواند کارهای بسیاری را بهصورت همزمان انجام دهد. این زبان روی چندین پلتفرم قابل پیادهسازی است و میتوانید برنامههای خود را در ویندوز، مک و لینوکس بنویسید. این زبان از معماریهای اینتل، ARM و Power پشتیبانی میکند. این زبان از اندروید پشتیبانی میکند و میتوان با آن برای iOS برنامه نوشت.
Go مانند زبان Swift ایدههای زبانهای اسکریپتی را با ساختار ساده و دستور زبان بسیار مشابه C ترکیب کرده است. در این زبان نیازی نیست در هنگام مقداردهی اولیه متغیرها نوع آنها را تعیین کنید و به جای این که بنویسید int fred = 10 کافی است بنویسید fred = 10. همچنین در آن نیازی نیست در انتهای هر خط علامت ویرگول نقطه بگذارید.
تیم Go و گوگل اعلام کردهاند که تعریفهای یک زبان باید به حدی کوچک باشد که بتوان در چند ساعت آنها را خواند و یاد گرفت و بتوانند در ذهن برنامهنویسان جا بیفتند. البته منتقدان میگویند که امنیت برنامهها در این میان قربانی شده است.

همزمانی از چندرشتهای (Multi-Threading)و پردازش موازی پشتیبانی میکند، و همینطور از فرآیندهای ناهمگامی که اجرا میشوند اما باید منتظر بمانند تا اتفاق خاصی بیفتد تا کارشان را ادامه بدهند. دستور go که همنام زبان است یک فرآیند جدید را ایجاد میکند و دستور chan کانال جدیدی باز میکند که فرآیندها میتوانند در آن با استفاده از عملگر <- با هم ارتباط برقرار کنند. دستور select مجموعه کانالها را اسکن میکند و هنگامی که یکی از آنها داده یا سیگنالی دارد کنترل را به آن میسپرد. اینها بهویژه برای زمانی به درد میخورند که دارید خط لولههایی مینویسید که قرار است به شکل کارآمدی دادههای ورودی را پردازش کنند، در شبکه کاربرد داشته باشند و خدمات سرور ارائه بدهند. به این ترتیب Go برای برنامهنویسی تحت وب بسیار کارآمد است. این زبان از HTTP پشتیبانی میکند و همچنین قابلیت پشتیبانی آن از آرایههای بزرگ دادهای و توابع نگاشت (map) بالاست.
این قابلیتها در کنار پشتیبانی گوگل و شرکتهای ثالث از سرویسهای وب و رابطهای پایگاههای دادهای باعث شده Go برای برنامهنویسی تحت وب محبوب باشد. سرعت برنامهنویسی در آن به اندازه پایتون است و سرعت اجرا در آن بسیار بالاتر از پایتون است و نیاز برنامههایش به حافظه هم کمتر است. البته دیباگ کردن (اشکالزدایی) برنامهها در Go چندان پیشرفته نیست و پشتیبانی کمی از آن انجام میشود. ابزارهای ثالثی مانند Mailgun کدهای دیباگ را به برنامه شما اضافه میکنند، اما این زبان، دیباگر کامل و تمامعیاری ندارد. Go داخل خودش قابلیتهای تست و نسخهگذاری خودکار و ساخت برنامههای تحت موبایل و تبلت را دارد،.
با زبان Go میتوانید محیط کاری خود را انتخاب کنید. محیطهای برنامهنویسی گوناگونی برای Go وجود دارد و ابزارهای پشتیبانی ثالث فراوانی هم برای آن توسعه داده شده است. در این میان بحث کاربران بر سر این که کدام محیط برنامهنویسی بهتر است داغ است. زبان Go مانند Swift نیست که در یک بسته ازپیشآمادهشده ارائه شود، اما انعطاف آن بیشتر است؛ نبرد این دو مانند رقابت اپل و گوگل است.
زبان Go البته منتقدان بسیاری دارد و هرچند بیش از نیمدهه است که از آن استفاده میشود، اما اکوسیستم آن (کاربران و انجمنهایش) هنوز کاملا شکل نگرفته و با سرعت زیادی دارد رشد میکند. از سوی دیگر، طرفداران میگویند که برنامههای کاربردی زیادی با Go نوشته شده و این زبان برای برنامهنویسی توزیعشده بسیار مناسب است.
اگر بخواهید یک واژهپرداز بنویسید یا یک برنامه برای موبایل بسازید شاید این بهترین زبان ممکن نباشد، اما اگر بخواهید کارهای جذابی در شبکهها انجام دهید این زبان انتخاب مناسبی است. هرچه باشد این زبان متعلق به گوگل است که در زمینه شبکه و وب فعالیت میکند.
زبان Go برای کارهای تحت وب بسیار مناسب است. برای مثال برنامهای ساده برای یک سرور که به پورت 8888 گوش میدهد تنها همین چند خط است:
package main
import (
“net/http”
)
func main() {
http.Handle(“/”, http.FileServer(http.Dir(“./”)))
http.ListenAndServe(“:8888”, nil)
}
});
}
}
( بهترین زبان برای برنامهنویسی iOS و مک )
Swift
زبان Swift طرفداران بسیاری جذب کرده است و بحث درباره آن زیاد است. این زبان را شرکت اپل برای iOS و OS X ارائه کرده است. این شرکت اخیرا وعده داده که نسخه 2 را بهصورت متنباز ارائه کند تا برنامهنویسان بتوانند برای پلتفرمهای دیگر هم برنامه بنویسند. البته در حال حاضر باید محیط برنامهنویسی Swift را تحت OS X و با پلتفرم Xcode اجرا کنید.
هدف این زبان این بوده که جایگزین Objective-C شود که زبان استاندارد قبلی اپل بوده است. Swift تمام کتابخانههای حاوی اجزای مهم Objective-C را دارد و بسیاری از ساختار و دستور زبان آن هم الهامگرفته از این زبان است. بسیاری از تغییرات باعث شده برنامهنویسی با این زبان آسانتر شود؛ برای مثال گذاشتن ویرگولنقطه در پایان هر خط، دست خود کاربر است و همچنین در نام متغیرها میتوان از یونیکد استفاده کرد.

Swift همچنین بسیاری از موانعی که حتی برنامهنویسان با تجربه C با آنها برخورد میکردند را از پیش رو برداشته است. Swift در محیط Xcode تکنیکهای اشکالزدایی تعاملی و پیشرفتهای دارد و قابلیت «زمین بازی» آن اجازه میدهد که کد را در هنگام اجرا تغییر دهید، نه این که اجرای برنامه را متوقف کنید، کد را عوض کنید، برنامه را کامپایل کنید، آن را لود کنید و دوباره اجرا کنید. در کل فرآیند برنامهنویسی و اشکالزدایی آن، از بسیاری زبانهای اسکریپتی مانند PHP و Perl ، الهام گرفته است. برنامههای آن از Objective-C کوتاهتر است و بسیاری از کارهایی که زبانهای قدیمیتر برنامهنویس را ملزم به انجام آنها میکردند اکنون به صورت خودکار انجام میشوند.
Swift زبانی است که یادگیری آن بهویژه به دوستداران اپل بسیار توصیه میشود. این زبان هرچند پیچیده است اما به محیطهای مدرن و تحت وب بسیار پرداخته است. هرچند اپل از آن پشتیبانی میکند اما لزومی ندارد که دقیقا همه چیز را به شیوهای که اپل میگوید انجام دهید. البته تمرکز این زبان روی پلتفرمهای موبایل بسیار بالا و به اندازه پلتفرمهای دسکتاپ است. محیط برنامهنویسی آن فعلا تنها روی کامپیوترهای مک اجرا میشود اما قابلیتهای بسیاری دارد. Swift زبان بسیار جدیدی است و در یکی، دو سال آینده توسعه سریعی خواهد داشت. به این ترتیب یادگیری این زبان میتواند مفید باشد و البته برای یادگیری آن باید بهروز عمل کنید.
ساختار دستور switch در زبان Swift کمک میکند که بتوان در حالتهای مختلف تصمیمات مختلفی گرفت. برای مثال میتوان بر اساس دمای یک غذا تصمیم گرفت که چقدر داغ است.
var porridge = 50
switch porridge {
case 0:
println(“Frozen”)
case 0..40:
println(“Too cold”)
case 41..70:
println(“Just right”)
case 71..<101:
println(“Too hot”)
default:
println(“That’s no porridge”)
}
( بهترین زبان برای برنامهنویسان جاوا و برنامهنویسی تابعی )
Scala

Scala مانند Go و C++ ، زاده نارضایتی برنامهنویسان از یک زبان برنامهنویسی است. البته اینجا ناراضی بودن برنامهنویسان از جاوا بود که منجر به خلق این زبان شد. زبان Scala در دانشگاه پلیتکنیک لوزان سوییس توسعه داده شد و بخشی از بودجه آن را شورای پژوهش اروپا تامین کرد. این زبان بیش از یک دهه عمر دارد.
Scala به شکل قابل توجهی از جاوا ارث برده است: برنامههای آن به کد بایتی جاوا کامپایل میشوند که روی هر ماشین مجازی استاندارد جاوا (JVM) قابل اجراست؛ کد متن برنامههای آن را میتوان بهراحتی به کد متن جاوا تبدیل کرد؛ و میتواند از تمامی کلاسهای جاوا استفاده کند. دستور زبان و ساختار آن هم بسیار شبیه به جاوا به نظر میرسد، اما برنامههای Scala بسیار موجزتر هستند.
برعکس جاوا، در Scala هر چیزی شیء به شمار میرود، حتی توابع، اعداد، و عملگرها. به این ترتیب میتوانید از توابع به عنوان آرگومان استفاده کنید، آنها را در متغیرها ذخیره کنید و نتایج را به دیگر تابعها ببرید.
Scala چندپارادایمی است؛ یعنی از سبکهای مختلف برنامهنویسی پشتیبانی میکند. به این ترتیب برنامهنویسان میتوانند با پسزمینههای گوناگون به سراغ Scala بیایند و برنامههایشان را با آن بنویسند. به این ترتیب شما ممکن است به روشی برنامهنویسی کنید در حالی که روش دیگری وجود داشته باشد که باعث شود برنامه عملکرد بسیار بهتری داشته باشد. اما در هر حال اگر قصد دارید زبان برنامهنویسی جدیدی یاد بگیرید و آن را به مجموعه ابزار خود بیفزایید، Scala جوابگو خواهد بود.
این زبان به نحوی طراحی شده که مقیاسپذیر(Scalable) باشد (و نامش هم از همین آمده است). در این زبان میتوان زبانهای جدیدی ایجاد کرد که مختص حل مسائل ویژه باشند. به این ترتیب اگر میخواهید یک کار خاص را انجام دهید، مثلا یک مدل مالی بسازید، و میخواهید که این کار را در بلندمدت انجام دهید و اعتمادپذیری، عملکرد و پیکربندیپذیری بالایی میخواهید، Scala گزینه خوبی است.
البته Scala زبانی نیست که به درد تازهکارها بخورد. در هر حال دانستن جاوا در یادگیری این زبان بسیار کمک میکند.
در زبان Scala میتوانید متدها را بسیار ساده اضافه کنید. در اینجا تابع فاکتوریل را به صورت بازگشتی پیادهسازی میکنیم و آن را بهصورت n! تعریف میکنیم.
object extendBuiltins extends Application {
def fact(n: Int): BigInt =
if (n == 0) 1 else fact(n-1)*n
class Factorizer(n: Int) {
def ! = fact(n)
}
Implicit def int2fact(n: Int) = new Factorizer(n)
Println(“10! = “ + (10!))
}
(بهترین زبان برای ورود شجاعانه به قلمروهای جدید)
Haskell

زبانهای Rust و Scala برنامهنویسی تابعی را با ایدههای دیگر ترکیب میکنند. اما Haskell برنامهنویسی تابعی را به شکلی تمامعیار و محض ارائه میدهد. شما در این زبان نمیتوانید متغیرها را عوض کنید. هر چیزی تابعی است که اگر مقدار یکسانی به ورودیاش بدهید مقدار یکسانی در خروجی تحویل میگیرید. لوگو زبان Go موشی است که انگار یک بچه پنجساله آن را کشیده است؛ اما لوگو Haskell حرف یونانی لاندا است که نشانهای است از حساب لاندا (Lambda Calculus) که پایه ریاضی برنامهنویسی تابعی است. این حرف لاندا روی علامت بزرگتر مساوی (>=) قرار گرفته است چون زبان Haskell قصد شوخی ندارد.
تفاوتهای رایج بین دستورهای زبانهای مختلف را فراموش کنید، مانند این که یکی از پرانتز استفاده میکند و دیگری از کروشه؛ اینجا بحث بهکلی متفاوت است و ایده شما درباره برنامهنویسی تغییر پیدا میکند.
اگر داشتن تنوع برای شما جذاب است، Haskell ماجراجویی جالبی را رقم میزند. اما اگر تغییرات بزرگ باعث نگرانی شما میشود لزومی ندارد که به سراغ Haskell بروید.
اما مهم نیست. طرفداران Haskell به شما میگویند که احتمالا از این زبان برای نوشتن یک بازی ویدیویی یا سرور وب استفاده نخواهید کرد (و البته پس از آن میگویند که شما البته میتوانید چنین برنامههایی را با آن بنویسید!) اما این زبان به شما این امکان را میدهد که به شکل جدیدی فکر کنید و افکارتان را پیادهسازی کنید. Haskell زبان سریعی است و میتوان با آن برنامههای با حجم کم اما قدرتمندی برای تحلیل داده، مدلسازی سختافزار و امثال آنها نوشت. از این زبان در مهندسی، امور مالی، طراحی و هوا-فضا استفاده میشود. زمانی که در این زبان تبحر پیدا کردید قدرت بالایی در برنامهنویسی پیدا میکنید و البته برنامههای آن بهرهوری بالایی هم دارند.
این زبان همچنین پایه ریاضی قدرتمندی دارد: شما میتوانید در این زبان برنامههای ضعیف هم بنویسید، اما اگر وقت بگذارید و مفاهیم آن را درک کنید و به سراغ فلسفههای پشت آن بروید، برنامههایی خواهید نوشت که به شکل فوقالعادهای اعتمادپذیر هستند. این زبان برای همه نیست، اما اگر کار با کامپیوتر را به عنوان تمرین ذهنی میبینید کار با این زبان بسیار لذتبخش خواهد بود.
هنگامی که نمیتوانید مقدار متغیر حلقه را تغییر دهید چگونه حلقه مینویسید؟ در Haskell برای این کار باید از یک تابع بازگشتی استفاده کنید:
printStringNTimes 0 = return ()
printStringNTimes n =
do
putStrLn “Hello, world!”
printStringNtimes (n-1)
main = printStringNTimes 10
( بهترین زبان برای همزمانی و برنامههای امنتر )
Rust

Rust جدیدترین زبانی است که به شما معرفی میکنیم و نسخه 1 آن را Mozilla Research در ماه مه 2015 ارائه کرده است. البته نسخه پیشآلفای این زبان در ژانویه 2012 عرضه شد اما نسخه 1 آن همین چند ماه پیش آمده است.
مانند Scala، این زبان هم چندپارادایمی است و به نحوی طراحی شده که بتواند برنامهنویسی تابعی و برنامهنویسی شیگرا را پشتیبانی کند. این زبان از مدلهای قدیمیتر هم پشتیبانی میکند و برنامههای نوشتهشده با آن امن، سریع و همزمان هستند.
Rust تلاش بسیاری میکند تا حافظه از خواندن یا نوشتن غیرصحیح در امان باشد. در برنامههای C و C++ ممکن است به هر حال به مشکلی جدی یا حتی حیاتی برخورد کنید، اما اینجا تا جای ممکن سعی شده که از این اتفاقات نیفتد. بهویژه Rust از مفاهیم مالکیت و طول عمر استفاده میکند و متغیرها و چیزهایی که به آنها وابسته هستند تنها زمانی اعتبار دارند که کدی که مالک آنهاست فعال باشد.
زبان Rust میتواند ریسمانهایی را اجرا کند که به شکلی مستقل از کد اصلی اجرا میشوند. این ریسمانها میتوانند از طریق متغیرهای اشتراکی با هم ارتباط داشته باشند. اما این که یک ریسمان بتواند مقدار یک متغیر در ریسمانی دیگر را تغییر دهد باعث ناامنی میشود و Rust اجازه چنین کاری را نمیدهد. در زبان Rust اجازه کامپایل کدی که ممکن است ناامن باشد داده نمیشود.
چنین ملاحظاتی باعث میشود افرادی که تازه با Rust آشنا شدهاند آن را بیش از حد محدودکننده بدانند. اما کاربران باتجربه میگویند که این زبان باعث میشود که کاربران درک بهتری از کدنویسی امن پیدا کنند و آن را در زبانهای برنامهنویسی دیگر هم به کار ببرند.
قرار است از زبان Rust برای نوشتن موتور مرورگر بعدی فایرفاکس به نام Servo استفاده شود. عملکرد برنامههای آن کندتر از برنامههایی است که با زبان C++ نوشته شدهاند، اما عملکرد این برنامهها قابل قیاس با برنامههایی است که در C++ نوشته شدهاند و در آنها ملاحظات ایمنی برنامه رعایت شده است.
Rust مانند Go برای برای محیط چندریسمانی طراحی شده است. اینجا پنج ریسمان مجزا از هم ساخته میشوند که پس از پایان اجرایشان از حافظه پاک میشوند.
#![feature(scoped)]
use std::thread;
static NUMTHREADS: i32 = 5;
fn main() {
for I in 0..NUMTHREADS {
let _ = thread::scoped(move || {
println!(“this is new thread number {}”, i)
منبع: ماهنامه رایانه خبر