راهنمای فارسی جولیا

معرفی جولیا

چهارشنبه, ۲۹ شهریور ۱۳۹۶، ۰۹:۱۲ ب.ظ

توجه: از این به بعد مطالب مربوط به زبان برنامه نویسی جولیا ( julia ) را در وب سایت شخصی خودم و با نظم بیشتر و پیگیری جدی تری قرار می گیرد. آدرس سایت شخصی بنده : https://www.achitsaz.ir

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

از آنجا که کامپایلر جولیا متفاوت از مفسرانی است که برای زبان هایی مانند Python یا R استفاده می شود، ممکن است متوجه شوید که عملکرد جولیا در ابتدا غیرقابل شناخت است. اگر متوجه شدید که چیزی کم است، ما قبل از تلاش برای انجام هر کار دیگری، توصیه می کنیم از بخش Performance Tips استفاده کنید. وقتی متوجه شدید که جولیا چگونه کار میکند، دیگر آسان است که کدی بنویسید که به خوبی نزدیک کدهای C باشد.

جولیا سهولت و روشنی را برای محاسبات عددی در سطح بالا فراهم می کند، همانند زبان هایی همچون R، MATLAB و Python، اما جولیا همچنان از برنامه های عمومی نیز پشتیبانی می کند. برای رسیدن به این هدف، جولیا در اصل بر مبنای زبان های برنامه نویسی ریاضی متکی است، اما همچنین از زبان های پویای محبوبی از جمله Lisp، Perl، Python، Lua، Ruby ویژگی های زیادی را قرض گرفته است.

مهمترین خروجی های جولیا از زبان های پویای معمول عبارتند از:

  • هسته برنامه نویسی جولیا خیلی کم تحمیل میکند، کتابخانه استاندارد در خود جولیا نوشته شده است، از جمله عملیات اولیه مانندعملگرهای ریاضیات در حساب اعداد صحیح
  • زبانی غنی از حروف برای ساخت و توصیف اشیاء است که می توانند به صورت اختیاری برای اعلامیه ها به کار بروند
  • توانایی تعریف رفتار تابع از میان ترکیب بسیاری از استدلال ها و استفاده از اعزام های چندگانه
  • تولید خودکار کد کارآمد و ویژه برای انواع استدلال مختلف
  • عملکرد خوب، نزدیک شدن به زبان های آماری استاتیک مانند C
اگر چه گاهی اوقات از زبان های پویا به عنوان "typeless" صحبت می کنند، اما در واقع این طور نیست: در واقع هر شیء، چه اولیه باشد یا از تعاریف کاربر، یک type محسوب می شود. فقدان اعلانهای تایپ در اغلب زبان های پویا به این معناست که کامپایلر نمی تواند نوع مقادیر را آموزش دهد و اغلب نمیتواند صراحتا درمورد تایپها صحبت کند. از سوی دیگر، در زبان های استاتیک، در حالی که می توانید - و معمولا باید - نوع حاشیه نویسی برای کامپایلر را داشته باشید، تایپها فقط در زمان کامپایل وجود دارند و نمی توانند در زمان اجرا دستکاری یا بیان شوند. در جولیا، تایپ ها خودشان اشیاء زمان-اجرا (run-time) هستند و همچنین می توانند برای انتقال اطلاعات به کامپایلر استفاده شوند.

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

Partly because of run-time type inference (augmented by optional type annotations), and partly because of a strong focus on performance from the inception of the project, Julia's computational efficiency exceeds that of other dynamic languages, and even rivals that of statically-compiled languages. For large scale numerical problems, speed always has been, continues to be, and probably always will be crucial: the amount of data being processed has easily kept pace with Moore's Law over the past decades.

جولیا قصد دارد یک ترکیب بی سابقه ای از سهولت استفاده، قدرت و کارایی در یک زبان واحد ایجاد کند. علاوه بر موارد فوق، برخی از مزایای جولیا بیش از سیستم های قابل مقایسه عبارتند از:

  • منبع آزاد و رایگان (مجوز MIT)
  • نوع تعریف شده توسط کاربر به همان اندازه سریع و جمع و جور هستند که تعاریف داخل-ساخت جولیا
  • بدون نیاز به کدنویسی اختصاصی برای کارا بودن؛ کد غیر اختصاصی سریع است
  • طراحی شده برای موازی سازی و محاسبات توزیع شده
  • سبک وزن "سبز" موضوع (coroutines)
  • ساده در عین قدرتمندی
  • ظریف و گسترش پذیر و بالاترین کاربرد برای تایپهای عددی و دیگر تایپها
  • پشتیبانی از Unicode که شامل UTF-8 می شود اما نه محدود به آن
  • تماس با توابع C به طور مستقیم (بدون wrappers و یا API های خاص مورد نیاز)
  • قابلیت های قدرتمند پوسته مانند برای مدیریت فرآیندهای دیگر
  • ماکرو Lisp مانند و دیگر برنامه های metaprogramming

  • احمد چیت ساززاده

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
نظر دادن تنها برای اعضای بیان ممکن است.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.