۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

جولیا در مقابل پایتون: کدام یک برای علم داده بهتر است؟

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

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

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

اما برای توسعه دهندگانی که در پشت زبان جولیا – با هدف “محاسبات علمی، یادگیری ماشین، داده کاوی، جبر خطی مقیاس، محاسبات توزیع شده و موازی»— Python به اندازه کافی سریع یا راحت نیست. جولیا قصد دارد به دانشمندان و تحلیلگران داده نه تنها توسعه سریع و راحت، بلکه سرعت اجرای فوق العاده را نیز ارائه دهد.

زبان جولیا چیست؟

جولیا که در سال ۲۰۰۹ توسط یک تیم چهار نفره ایجاد شد و در سال ۲۰۱۲ در معرض دید عموم قرار گرفت، قرار است کاستی‌های پایتون و سایر زبان‌ها و برنامه‌های کاربردی مورد استفاده برای محاسبات علمی و پردازش داده‌ها را برطرف کند. آنها نوشتند: «ما حریص هستیم. آنها بیشتر می خواستند: 

ما زبانی می‌خواهیم که منبع باز و با مجوز لیبرال باشد. ما سرعت C را با پویایی روبی می خواهیم. ما زبانی می خواهیم که همویکون باشد، با ماکروهای واقعی مانند Lisp، اما با نمادهای ریاضی آشنا و واضح مانند Matlab. ما چیزی را می‌خواهیم که برای برنامه‌نویسی عمومی مانند پایتون قابل استفاده باشد، برای آمار به آسانی R، برای پردازش رشته‌ای طبیعی مانند Perl، برای جبر خطی قدرتمند مانند Matlab، و در چسباندن برنامه‌ها به هم مانند پوسته خوب باشد. چیزی که یادگیری آن ساده است، اما جدی ترین هکرها را راضی نگه می دارد. ما آن را تعاملی می‌خواهیم و می‌خواهیم کامپایل شود.

(آیا اشاره کردیم که باید به سرعت C باشد؟)

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

  • جولیا کامپایل می‌شود، نه تفسیر می‌شود. برای عملکرد سریع‌تر در زمان اجرا، جولیا به‌موقع (JIT) با استفاده از چارچوب کامپایلر LLVM کامپایل می‌شود. در بهترین حالت، جولیا می تواند به سرعت C نزدیک شود یا با آن مطابقت داشته باشد.
  • جولیا تعاملی است. جولیا شامل یک REPL (حلقه خواندن-ایوال-چاپ) یا خط فرمان تعاملی است، مشابه آنچه پایتون ارائه می‌دهد. اسکریپت ها و دستورات یکباره سریع را می توان مستقیماً وارد کرد.
  • جولیا یک نحو ساده دارد. نحو جولیا شبیه Python است – مختصر، اما همچنین رسا و قدرتمند.
  • جولیا مزایای تایپ پویا و تایپ ایستا را با هم ترکیب می‌کند. می‌توانید انواع متغیرهایی مانند «عدد صحیح ۳۲ بیتی بدون علامت» را مشخص کنید. اما شما همچنین می توانید سلسله مراتبی از انواع ایجاد کنید تا موارد کلی را برای مدیریت متغیرهای انواع خاص مجاز کنید – به عنوان مثال، برای نوشتن تابعی که اعداد صحیح را بدون تعیین طول یا علامت عدد صحیح بپذیرد. حتی اگر در زمینه خاصی به آن نیاز نیست، می‌توانید بدون تایپ کامل انجام دهید.
  • جولیا می‌تواند کتابخانه‌های Python، C و Fortran را فراخوانی کند. جولیا می تواند مستقیماً با کتابخانه های خارجی نوشته شده در C و Fortran ارتباط برقرار کند. همچنین می‌توان از طریق کتابخانه PyCall با کد پایتون ارتباط برقرار کرد و حتی داده‌ها را بین پایتون به اشتراک گذاشت. و جولیا.
  • جولیا از فرابرنامه‌نویسی پشتیبانی می‌کند. برنامه‌های جولیا می‌توانند جولیا دیگری را ایجاد کنند. برنامه ها، و حتی کد خود را به گونه ای تغییر می دهند که یادآور زبان هایی مانند Lisp باشد.
  • Julia دارای یک اشکال‌زدای کامل است. Julia 1.1 یک اشکال‌زدایی را معرفی کرد. suite، که کد را در یک REPL محلی اجرا می‌کند و به شما امکان می‌دهد از نتایج عبور کنید، متغیرها را بررسی کنید و نقاط شکست را در کد اضافه کنید. حتی می‌توانید کارهای ریزدانه‌ای مانند عبور از یک تابع تولید شده توسط کد را انجام دهید.
تجسم Hacker News API با HCL و SQL

ویدئوی مرتبط: چگونه پایتون برنامه‌نویسی را آسان‌تر می‌کند

مناسب برای فناوری اطلاعات، پایتون انواع بسیاری از کارها را ساده می کند، از اتوماسیون سیستم گرفته تا کار در زمینه های پیشرفته مانند یادگیری ماشین.

جولیا در مقابل پایتون: مزایای زبان جولیا

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

  • جولیا سریع است. جمع‌آوری JIT و اعلان‌های نوع جولیا به این معنی است که می‌تواند به طور معمول پایتون «خالص» و بهینه‌نشده را با مرتبه‌ای بزرگ شکست دهد. پایتون را می‌توان سریع‌تر از طریق کتابخانه‌های خارجی، کامپایلرهای JIT شخص ثالث (PyPy) و بهینه‌سازی با ابزارهایی مانند Cython، اما جولیا ساخت کرد. طراحی شده است تا سریعتر از دروازه خارج شود.
  • جولیا نحوی ریاضی پسند دارد. مخاطب اصلی جولیا، کاربران زبان‌ها و محیط‌های محاسباتی علمی مانند Matlab، R، Mathematica و Octave هستند. نحو جولیا برای عملیات ریاضی بیشتر شبیه روشی است که فرمول‌های ریاضی خارج از دنیای محاسبات نوشته می‌شوند و این کار را برای غیر برنامه‌نویسان آسان‌تر می‌کند.
  • جولیا دارای مدیریت خودکار حافظه است. مانند Python، جولیا کاربر را با جزئیات تخصیص و آزادسازی حافظه سنگین نمی‌کند و کنترل دستی جمع‌آوری زباله را فراهم می‌کند. ایده این است که اگر به جولیا بروید، یکی از راحتی‌های رایج پایتون را از دست نمی‌دهید.
  • جولیا موازی سازی برتری را ارائه می دهد. محاسبات ریاضی و علمی زمانی پیشرفت می کنند که بتوانید از منابع کامل موجود در یک ماشین خاص استفاده کنید، به خصوص چندین هسته. هر دو پایتون و جولیا می توانند عملیات را به صورت موازی اجرا کنند. با این حال، روش‌های پایتون برای موازی‌سازی عملیات معمولاً نیاز به سریال‌سازی و بی‌سریال‌سازی داده‌ها بین رشته‌ها یا گره‌ها دارند، در حالی که موازی‌سازی جولیا اصلاح‌تر است. علاوه بر این، نحو موازی سازی جولیا نسبت به Python سنگین تر است و آستانه استفاده از آن را کاهش می دهد.
  • جولیا در حال توسعه کتابخانه‌های یادگیری ماشینی بومی خود است. Flux یک کتابخانه یادگیری ماشینی است. برای جولیا که بسیاری از الگوهای مدل موجود را برای موارد استفاده معمول دارد. از آنجایی که به طور کامل در جولیا نوشته شده است، می توان آن را در صورت نیاز توسط کاربر تغییر داد و از کامپایل به موقع جولیا برای بهینه سازی پروژه ها از درون به بیرون استفاده می کند.
نحوه استفاده از ForkJoinPool در جاوا

جولیا در مقابل پایتون: مزایای پایتون

اگرچه جولیا برای علم داده ساخته شده است، در حالی که پایتون کم و بیش به این نقش تبدیل شده است، پایتون مزایای قانع کننده ای را برای دانشمند داده ارائه می دهد. برخی از دلایل «هدف عمومی» پایتون ممکن است انتخاب بهتری برای کار علم داده باشد:

  • پایتون از نمایه سازی آرایه مبتنی بر صفر استفاده می کند. در اکثر زبان‌ها، از جمله Python و C، اولین عنصر یک آرایه با صفر قابل دسترسی است—مثلاً رشته[۰] در پایتون برای اولین کاراکتر در یک رشته. جولیا از ۱ برای اولین عنصر در یک آرایه استفاده می کند. این یک تصمیم خودسرانه نیست؛ بسیاری از برنامه های ریاضی و علوم دیگر، مانند Mathematica، از ۱-indexing استفاده می کنند و جولیا در نظر گرفته شده است که برای آن مخاطبان جذاب باشد. امکان پشتیبانی از نمایه سازی صفر در جولیا با ویژگی آزمایشی وجود دارد، اما نمایه سازی ۱ به طور پیش فرض ممکن است مانع پذیرش مخاطبان عمومی با عادات برنامه نویسی ریشه ای شود.
  • Python سربار راه‌اندازی کمتری دارد. برنامه‌های Python ممکن است کندتر از برنامه‌های Julia باشند، اما زمان اجرای Python خود سبک‌تر است و معمولاً زمان کمتری برای شروع و ارائه اولین نتایج برنامه‌های Python نیاز دارد. همچنین، در حالی که کامپایل JIT زمان اجرا را برای برنامه‌های جولیا افزایش می‌دهد، به قیمت راه‌اندازی کندتر تمام می‌شود. کارهای زیادی برای شروع سریعتر جولیا انجام شده است، اما پایتون هنوز در اینجا برتری دارد.
  • پایتون بالغ است. زبان جولیا جوان است. جولیا تنها از سال ۲۰۰۹ در دست توسعه بوده است و در طول مسیر تغییرات زیادی را تجربه کرده است. در مقابل، پایتون تقریباً ۳۰ سال است که وجود دارد.
  • Python بسته‌های شخص ثالث به مراتب بیشتری دارد. گستردگی و مفید بودن فرهنگ Python از بسته‌های شخص ثالث یکی از بزرگترین جاذبه‌های این زبان است. باز هم، جدید بودن نسبی جولیا به این معنی است که فرهنگ نرم افزار در اطراف آن هنوز کوچک است. برخی از آن ها با توانایی استفاده از کتابخانه های C و Python موجود جبران می شود، اما جولیا برای پیشرفت به کتابخانه های خودش نیاز دارد. کتابخانه‌هایی مانند Flux و Knet جولیا را برای یادگیری ماشینی و یادگیری عمیق مفید می‌سازند، اما اکثریت قریب به اتفاق این کار هنوز با TensorFlow یا PyTorch انجام می‌شود.
  • Python میلیون ها کاربر دارد. یک زبان بدون یک جامعه بزرگ، اختصاصی و فعال در اطراف آن چیزی نیست. جامعه اطراف جولیا مشتاق و در حال رشد است، اما هنوز تنها کسری از اندازه جامعه پایتون است. انجمن عظیم پایتون یک مزیت بزرگ است.
  • Python در حال سریع‌تر شدن است. علاوه بر بهبود مفسر Python (از جمله بهبود در پردازش چند هسته‌ای و موازی)، سرعت Python آسان‌تر شده است. پروژه mypyc پایتون دارای حاشیه‌نویسی شده را به زبان مادری C ترجمه می‌کند، به مراتب کمتر از Cython. معمولاً عملکرد چهار برابری را بهبود می بخشد، و اغلب برای عملیات های ریاضی خالص بسیار بیشتر است.
Eclipse سازمانی جاوا بخار جمع می کند، MicroProfile می لغزد