زبان julia و قدرت اون

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

2 Likes

سلام. من هم تازه با این زبان آشنا شدم و توانمندی‌ها و پتانسیلش رو بسیار بالا می‌بینم. به نظرم اگر تابحال ندیدین،‌ یک نگاه به سایت درس‌افزار آزاد دانشگاه MIT بیاندازید. امیدوارم به زودی دسته جدیدی برای این زبان ایجاد بشه. به طور خاص، من به تحلیل داده‌های مالی فکر می‌کنم و تابحال تنها مطالبی گسسته در این مورد به زبان فارسی دیدم.
https://ocw.mit.edu/courses/mathematics/18-s191-introduction-to-computational-thinking-fall-2020/

https://ocw.mit.edu/courses/mathematics/18-s190-introduction-to-computational-thinking-with-julia-with-applications-to-modeling-the-covid-19-pandemic-spring-2020/

https://ocw.mit.edu/courses/mathematics/18-335j-introduction-to-numerical-methods-spring-2019/

1 Likes

ببخشید یک پست قدیمی رو بالا آوردم انگار اما فکر میکنم ارزشش رو داره :slight_smile:

1 Likes

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

1 Likes

سلام، جادی همین چند روز پیش یه ویدیو ضبط کرده که یه مسئله نسبتا راحت رو با Julia حل می‌کنه، پیشنهاد می‌کنم ببینید.

من هیچ وقت به شکل جدی نرفتم سراغ Julia ولی چند ساله که در مورد این زبان شنیدم. یه سری Talk خیلی خوب هم هست توی YouTube از سازنده های این زبان که پیشنهاد می‌کنم ببینید. یه موضوعی که مطرحه اینه که Python هر چه قدر هم خوب، زبان کندیه و کلا به این مسئله که یه زبان برای توسعه خیلی سریع داشته باشیم که بعد از توسعه، بتونه سریع هم اجرا بشه توی Julia خیلی مطرحه. حتی توی یکی از Talk ها یادمه یه سری نمودار و عدد و ارقام نشون دادن از این که چه قدر میتونه یه زبانی مثل Julia توی کاهش گرمایش زمین تاثیر داشته باشه، از اونجایی که میتونه جایگزین کلی برنامه بشه که با زبان‌هایی نوشته شده که منابع رو به شکل بهینه استفاده نمی‌کنن.


یادمه چهار پنج سال پیش مثل همه کسایی که تازه شروع می‌کنن به برنامه نویسی، توی گوگل سرچ می‌کردم کدوم زبان برنامه نویسی بهتره؟ یا چه زبانی آینده بهتری داره؟ یه سری مطالب همون موقع خوندم در مورد این که سرعت CPU ها داره به یه حد بالا میرسه و عملا دیگه خیلی سخت و هزینه بره که 4 GHz رو بکنیم 8 GHz ولی در عوض تعداد هسته‌ها میتونه بدون محدودیت رشد کنه، پیش بینی ای که توی یکی دو سال اخیر به حقیقت پیوست و دیدیم AMD تونست با قیمت معقول CPU تولید کنه با 64 هسته! سر همین ماجرا می‌گفتن زبان‌هایی که برای پردازش موازی نوشته شدن رشد می‌کنن و آینده بهتری دارن (مثل Scala) اما الآن که 5 سال از اون زمان گذشته احساس می‌کنم برای پردازش موازی از روی CPU کلا پرش کردیم و رفتیم سراغ GPU. برای خیلیا مثل من مطرح بودن زبان Python و Julia و R برای Neural Network هاست، باید ببینیم در نهایت سر اجرا شدن روی GPU کی برنده میشه. در حال حاظر توی پایتون TensorFlow و PyTorch رو داریم که روی GPU اجرا می‌شن و واقعا توی زبان های دیگه Alternative ندارن. علاوه بر این، OpenAI داره زبانی رو توسعه می‌ده بر اساس محیط توسعه Python برای اجرا روی GPU به اسم Triton از طرفی Julia هم ادعای این رو داره که می‌تونه روی GPU اجرا بشه، برای این کار باید از JuliaGPU استفاده بشه که خودش کلی پکیج دیگه رو یکی کرده برای پردازش موازی روی GPU.

2 Likes

یکی اینکه Tensorflow و Pytorch صرفا api پایتون دارند و البته این برای پایتون مزیت هست، میتونستن برای جولیا هم اینترفیس درست کنند یا اسکالا یا هر زبان دیگه. در مورد پردازش موازی، میشه گفت به سمت پردازش توزیع شده (یعنی با چندتا کامپیوتر) که خودشون حافظه و پردازنده مستقل (غیر اشتراکی) دارند رفته و به اصطلاح کلان‌داده رو باهاش پردازش میکنن. یعنی اینکه حالا یک CPU بجای ۳۰ تا ۳۰۰ هسته باشه خیلی مزیت ایجاد نمیکنه وقتی میشه ۱۰تا سرور هرکدوم با ۳۰تا هسته (و حافظه و دیسک) مستقل داشت.
در مورد GPU فکر میکنم کاربردهای محدودی داریم، توی بعضی کارها مثل عملیات روی ماتریس‌ها خیلی خوبه ولی همه منظوره نیست خصوصا که بطور عمومی CPU سریعتر از GPU هست باعث شده CPU همچنان پر استفاده باشه. البته شایان ذکر که همه‌گیری و ترند شدن شبکه‌های عصبی هم باعث رونق استفاده از GPU شده. شاید جالبتر این باشه که برنامه‌هایی بشه درست کرد که همزمان از CPU و GPU استفاده کنند (که خیلی از برنامه‌های گرافیکی اینطور هستند).
درمورد اسکالا هم میشه اینطور فرض کرد که همون جاوا (یا کاتلین، کلوژر …) هست و زبان‌های JVM ای از یک سری زبان‌ها سریعتر و از یک‌سری کندتر هستند. از آنجا که برنامه نویسی موازی (و توزیع‌شده) با پارادایم‌های FP خیلی ساده‌تر و عاقلانه‌تر هست و اسکالا میشه گفت همه‌ی این پارادایم‌ها رو پیاده کرده، دلیل استفاده و معروفیتش توی همین حوزه‌های پردازش کلان‌داده و سیستم توزیع‌شده شده هست، صرفاً همین.

1 Likes