رفتن به نوشته‌ها

دسته: برنامه‌نویسی و کار با داده

ولفرم و پروژه فیزیک – قسمت دوم

در قسمت پیشین به تعریف فضا در مدل ولفرم پرداختیم و تکه آخر را که «زمان» باشد به این قسمت سپردیم. پازلی که پس از کامل شدن آن می‌توانیم به مدل‌سازی نسبیت خاص در «فضا-زمان» برسیم.

جالب این جاست که مفهوم «زمان» در مدل ولفرم از دل یک «زیر قالی نکردن» پدیدار می شود. شاید این زیر قالی مأمن امنی برای تمام مسائلی باشد که ترجیح می‌دهیم به آن‌ها فکر نکنیم. زیرا در رسیدن به مقصودمان مانع ایجاد می‌کنند اما این بار توجه ولفرم به یکی از آن‌ها باعث شده است تا مفهوم زمان را از دل آن بیرون بکشد.

«ظهور مسئله» – نقطه‌ای که علم از آن شروع می‌شود

شاید همه‌ی ما در محیط آموزشی خودمان، شبیه‌سازی نرم‌افزاری کرده‌ایم اما در حین این شبیه‌سازی با مساله‌ای مواجه شده‌ایم که آن را دانسته فرض کرده‌ایم و یا خیلی راحت از کنار آن گذشته‌ایم. به گزاره و قانون پیشین یاد شده در قسمت قبل دوباره توجه کنید. قانون تحول سامانه به این شرح است که دو یال را انتخاب و حذف می‌کنیم و یک مجموعه یال جدید جایگزین آن می‌کنیم. اما کدام دو یال؟! در مجموعه حاضر انتخاب‌های زیادی داریم و با انتخاب و تحول آن در مرحله بعد به یک گراف متمایز می‌رسیم. پس کدام دو یال را باید انتخاب کنیم؟

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

شکل۱ – مسیرهای متفاوتی که برای تحول یک گراف می‌توانیم طی کنیم. تمام گراف‌های ردیف نهایی با شرط اولیه و قانون یکسانی به دست آمده‌اند اما تفاوت در انتخاب جفت یال‌هایی است که برای تحول و اعمال قانون انتخاب کرده‌ایم.

در چنین مواردی معمولا از این جزییات چشم پوشی می‌کنیم و بدون اثبات برای خود توجیه می سازیم که در بلند مدت این تفاوت‌ها اهمیت پیدا نمی‌کنند اما چگونه و چرا این فرض را در شبیه‌سازی می‌کنیم. بی‌تردید پاسخ به آن دشوار است و ما تلاش می‌کنیم جزییاتی که نتیجه‌گیری دل‌خواهمان را به خطر می‌اندازند نبینیم!

شاید یکی از دلایل توجه نکردن به جزییات ظریف ما ریشه در «عجله‌‌ برای نتیجه» داشته باشد. در دنیای آکادمیک امروز بسیار نتیجه‌گرا شده‌ایم. زیر بار فشار تمرین و مقاله که در مدت محدود باید تمام شوند؛ خیلی از این جزییات ظریف له می شوند. این بار کسی به این جزییات دقت کرده‌است که سال‌هاست با دنیای آکادمیک صنعتی خداحافظی کرده است. یعنی ولفرم!

سخن نویسنده

«تلاش برای حل مسئله» – ذکاوت پژوهشگر

شکل۲ – روند تحول یک رشته حروف – مربع‌های آبی حالت سامانه را پس از تحول نشان می‌دهند و مربع‌های زرد رنگ نحوه اعمال قانون تعیین شده.

بیایید کمی این مسئله را بسط دهیم. ما یک شرایط اولیه داریم که به کمک یک قانون آن را متحول می‌کنیم. برای سادگی بیایید از تحول یک سامانه باهم حرف بزنیم که از حروف تشکیل شده است. با حالت BBBAA شروع می‌شود و قانون تحول آن به گونه زیر است.

شرط اولیه: BBBAA قانون تحول: $ { BA \rightarrow AB } $

همان طور که می‌بینید مسیرهای متفاوتی را می‌توانیم برای تحول آن بپیماییم. سوال مهم اینجاست که اگر زمان را در مدل خود همگام با گام‌های متحول سازی سامانه در نظر بگیریم دیگر خط زمانی واحدی نخواهیم داشت و در تعریف زمان دچار مشکل می‌شویم. اگر چه تمایل زیادی داریم تا «زمان» را معادل سلسله تحولات درون شبیه‌سازی خود بگیریم اما مشکل بوجود آمده نقد بزرگی به این معادلسازی وارد می‌کند.

اما زیرکی که ولفرم به خرج می‌دهد تا از پس این مشکل برآید ستودنی است. به مربع‌های زرد رنگ درون شکل توجه کنید. این مربع‌ها «رخدادهایی» را توصیف می‌کنند که طی آن حالت سامانه از یک مربع آبی به مربع آبی دیگر تغییر می‌کند. این رخداد‌ها دارای خاصیت ترتیب هستند به این معنی که نوبت هر رخداد تنها زمانی فرا می‌رسد که رخداد قبلی آن اتفاق افتاده باشد. همچنین هر رخداد زمینه ساز رخدادهای بعد خود است. این ترتیب را با نام رابطه «علت و معلولی» می‌شناسیم. حال اگر هر علت را به معلول‌های مستقیم آن متصل کنیم می‌توانیم یک گراف جدید با نام «گراف روابط علّی» بسازیم.

شکل۳ -گراف توصیف کننده روابط علّی – در این گراف رخدادها با مربع زرد رنگ توصیف می‌شوند. هر رخداد که علت رخدادهای بعد از آن است با یال نارنجی رنگ متصل شده است.

حال نشان می‌دهیم که چگونه گراف جدید می‌تواند مشکل بوجود آمده در توافق نداشتن خطوط زمانی بر سر تحول یکپارچه سامانه را حل و از میان بردارد. به شکل بالا مجددا دقت کنید. این درخت ۵ مسیر متفاوت را برای سیر تحول یک سامانه که با حالت مثالی BBBAA شروع می‌شود؛ توصیف می‌کند. اگر هر پنج مسیر را به صورت مجزا دنبال کنید و رخدادهای زرد رنگ و روابط آن را یادداشت کنید به پنج شکل زیر می‌رسید. هر کدام از این اشکال رخدادهای لازم برای تحول در یکی از این پنج مسیر را شرح می‌دهند.

شکل۴ – پنج زیرگراف از «گراف روابط علّی» – هر کدام از این پنج‌تا رخدادهای مشاهده شده بر سر تحول سامانه در یکی از این پنج مسیر را نشان می‌دهند.

اگر به مجموعه پنج‌تایی بالا دقت کنیم؛ متوجه نکته ظریفی می‌شویم. هر پنج گراف جهت‌دار با هم «یکریخت» هستند. اگر چه برچسب‌های هر نقطه‌ی آنها باهم فرق دارد اما هر پنج‌تا یک نقطه دارند که دو یال خروجی و یک یال ورودی دارد که از سرچشمه‌ای نشئت گرفته می‌شود که خود دو یال خروجی داده است. این به این معنی است که اگر چه مسیر‌های متفاوتی را می‌توان برای تحول این سامانه به صورت محاسباتی پیمود اما همه‌ی آنها گراف علّی مشابه دارند.

به عبارت دیگر گراف علّی ما تحت مسیرهای متفاوت تحول «ناوردا» است. در واقع این خاصیت ناوردایی حاصل از نوع قانونی است که ما برای تحول انتخاب کرده ایم. قوانینی که این ناوردایی را در گراف علّی باعث می‌شوند، قوانین «casual invariance» یا «ناوردای عِلّی» می‌دانیم. این نوع از قانون، اختلاف بین تمام مسیرهای ممکن بین تحول گراف را به توافق می‌رساند و ما را در تعریف کردن مفهوم «زمان» یاری می‌کند.

حال که کلیدواژگان #رخداد، #علت‌ومعلول و #ناوردایی را باهم دیدیم. کلیدواژه #نسبیت کم‌کم در ذهن ما به درستی تداعی می‌شود. جایی که دقیقا می‌خواهیم با زبان این مدل محاسباتی وارد آن شویم.

«نسبیت خاص» – یک اتفاق خوش!

بیاید با یک مثال ساده شروع کنیم. فرض کنید مانند قبل قرار است با یک قانون ساده، سامانه خود را متحول کنیم. یک رشته کاملا نامرتب مانند زیر درنظر بگیرید که قرار است آن را مرتب کنیم. قانون تحول آن هم به این گونه $BA \rightarrow AB$ است. این یک رشته کاملا بهم ریخته است به همین دلیل رخدادها در تک‌تک نقاط آن اتفاق می‌افتند. استفاده از این مثال به ما این امکان را می‌دهد تا رخدادها را در تمام نقاط «فضا» ببینیم.

شکل۵ – تحول یک سامانه کاملا بهم ریخته – مربع‌های زرد تحولات سامانه را در هر نقطه نشانه گذاری می‌کنند.

شرط اولیه: BABABABABABABABABABA قانون تحول: $ { BA \rightarrow AB } $

فرض ‌کنید می‌خواهید قصه‌ی تحول این سامانه را برای یک شنونده روایت کنید. تا زمانی که شما ترتیب رخدادها را رعایت کرده باشید؛ بی‌تردید او به قصه‌ی شما گوش خواهد کرد و اعتراض نخواهد کرد . به این معنی که اگر ابتدا یک معلول را روایت کنید و سپس علت آن را؛ او گیج خواهد شد و روابط علّی را گم خواهد کرد.

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

شکل۶ – یک روایت مثالی – هر خط قرمز نشان می‌دهد که در هر گام زمانی کدام رخدادها را برای شنونده بخوانیم.

حال فرض کنید که شنونده‌ی دیگری داشته باشید که با سرعت ثابت حرکت کند. حرکت او باعث می‌شود تا قصه‌ای را که تعریف می‌کنید متفاوت از شنونده اول بشنود. هر چه رخدادی در فاصله ی دورتری از او باشد با تاخیر بیشتری به دست او خواهد رسید. همین نکته باعث می شود رخدادهایی را که پیش از این شنونده‌ی اول هم‌زمان دریافت می‌کرد، دیگر همزمان دریافت نکند. در واقع خطوط «هم‌زمانی» مشابه شکل تغییر کرده است.

شکل۷ – روایتی که شنونده‌ی دوم دریافت می‌کند

حرکت با سرعت ثابت نسبی است یا ما به دور جهان می‌گردیم یا جهان به دور ما!

در شکل بالا خطوط همزمانی را برای شنونده دوم رسم کردیم. اما شنونده‌ی دوم می‌تواند این طور فکر کند که این جهان است که به زیر پای او کشیده است و خودش ساکن بوده. او خود را شنونده‌ای مانند شنونده‌ی اول فرض می‌کند. پس می‌توانیم از او بخواهیم که برای ما داستانی را که شنیده است برایمان مجددا تعریف کند!

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

$ (t, x) \rightarrow (\frac{t – \beta x}{\sqrt{1-\beta^2}}, \frac{x – \beta t}{\sqrt{1-\beta^2}}) $

شکل۸ – روایتی که شنونده دوم از قصه‌ای که روایت شده بازگو می‌کند. – این شکل درواقع با استفاده از تبدیل هندسی شکل پیشین بدست می‌آید.

تبدیل یاد شده را با نام تبدیلات لورنتس می‌شناسیم. این تبدیلات به ما کمک می‌کنند تا دو روایت دو شنونده در حال حرکت را به یکدیگر تبدیل کنیم. همان طور که در شکل ۸ می‌بینیم شنونده‌ی دوم رخدادهای سمت چپ رشته حروف را زودتر از سمت راست می‌شنود. زیرا شنونده در حال حرکت است و خبر رخدادهای سمت راست زمان بیشتری را برای رسیدن به شنونده نیاز دارند.

شکل ۹ – رخدادهایی که شنونده‌ی در حال حرکت از تحول سامانه شنیده است. توجه کنیم که او نیز در حالت نهایی سامانه را مانند شنونده‌ی ساکن می‌بیند.

حال که روایت شنونده‌ی دوم را بازسازی کردیم می‌توانیم گراف علّی بدست آمده در شکل ۸ را روی صفحه‌ی رخدادها بنشانیم و به ترتیب بخوانیم که شنونده‌ی دوم چگونه تحول سامانه را شنیده‌است.شکل ۹

همان طور که می‌بینید اگر چه شنیدن رخدادها کمی دیر و زود شده است اما هر دو شنونده در نهایت یک تغییر را برای رشته خواهند شنید. رشته حروف برای هر دو به حالت …AAABBB… خواهد رسید. این نتیجه می‌تواند با یکی از اصول نسبیت خاص انشتین معادل سازی شود. او در یکی از اصول خود ناوردایی «فیزیک» را در چارچوب‌های ناظرهای مختلف اشاره کرده بود.

همچنین قابل توجه است که می‌توانیم «اتساع زمانی» را توسط این مدل توضیح دهیم. دو رخداد از دو ردیف متوالی از شکل ۷ را در نظر بگیرید. در روایت دوم در شکل ۸ فاصله‌ی دو ردیف کمی کش آماده است. به این معنی که شنونده‌ی دوم فاصله‌ی زمانی بین آن دو رخداد را طولانی‌تر رصد می‌کند.

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

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

جایگاه علم داده در نجوم امروزی

بخش ششم از سری گفت‌وگوهای «پشت‌پرده نجوم»

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

امروزه با پیشرفت تکنولوژی، نقش داده‌ها در حوزه‌های مختلف علم، از‌جمله علم نجوم، بیش‌از‌پیش نمایان شده است. به‌نظر می‌رسد ابزار برنامه‌نویسی و شبیه‌سازی در آینده‌ای نزدیک، به یکی از مهارت‌های مهم و ضروری برای پژوهش در علم (نجوم) تبدیل شود؛ کما اینکه هم‌اکنون نیز تا حدی همین‌گونه است. در ششمین بخش از «پشت پرده علم» با علیرضا وفایی صدر، پژوهشگر فیزیک در مقطع پسا‌دکتری در IPM، در‌مورد جایگاه علم داده در نجوم امروزی گفت‌و‌گو کرده‌ایم. ویدیو و صوت این گفت‌وگو ضبط شده و در ادامه این متن می‌توانید آن را ببینید و بشنوید.

در علم نجوم امروزی، به‌دلیل ساخت تلسکوپ‌ها و آشکارساز‌های بزرگ متعدد ـ و ترکیب تلسکوپ‌های بزرگ با یکدیگر با استفاده از روش تداخل‌سنجی، برای ساخت تلسکوپ‌های مجازیِ حتی بزرگ‌تر ـ و هم‌چنین افزایش کیفیت و رزولوشن تصاویر دریافتی از آسمان، حجم داده‌ها بسیار افزایش پیدا کرده و کار با داده‌های کلان، به مسئله‌ای مهم تبدیل شده است. به‌عنوان مثال، برای ثبت اولین تصویر از یک سیاه‌چاله که سال پیش توسط تیم تلسکوپ افق رویداد منتشر شد، هشت آرایه‌ از تلسکوپ‌های رادیویی، حدود یک هفته رصد انجام دادند که منجر به دریافت داده‌ای با حجم حدود ۲۷ پتا‌بایت شد و کار انتقال، پاکسازی و تحلیل آن حدود ۲ سال طول کشید (برای اطلاعات بیشتر درمورد جزئیات ثبت این تصویر، این نوشته را بخوانید)! 

در گفت‌وگویمان با علیرضا وفایی‌صدر، به مسائل مختلفی در ‌زمینه نقش داده در نجوم پرداخته‌ایم؛ از جمله اینکه: چطور می‌توان داده‌های کلان را سرو‌سامان داد؟ ماشین‌‌ها (کامپیوترها) چه جنس کارهایی را در زمینه نجوم می‌توانند برای ما انجام دهند؟ همکاری‌های بین‌المللی چه نقشی در این زمینه دارند؟

بخش ششم «پشت‌ پرده نجوم»
ویدیوی گفت‌و‌گوی محمد‌مهدی موسوی (فیزیک‌پیشه) و علیرضا وفایی‌صدر (پژوهشگر فیزیک در مقطع پسادکتری در IPM) درمورد جایگاه علم داده در نجوم امروزی

به این گفت‌وگو گوش دهید:

یادگیری متلب و گنو اُکتاو

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

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

متلب یک محیط نرم‌افزاری برای انجام محاسبات عددی و یک زبان برنامه‌نویسی نسل چهارم است. واژهٔ متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مورد نظر است که از ترکیب دو واژهٔ MATrix (ماتریس) و LABoratory (آزمایشگاه) ایجاد شده‌است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد منفرد هم به عنوان ماتریس در نظر گرفته می‌شوند.

گنو اُکتاو ( GNU Octave) زبان برنامه‌نویسی سطح بالایی است که بیشتر برای محاسبات عددی به کار می‌رود. این برنامه امکانات زیادی را از طریق رابط خط فرمان برای حل عددی مسائل خطی و غیر خطی می‌دهد. این برنامه را می‌توان جایگزین مناسبی برای همتای غیر آزاد خود متلب به حساب آورد.

ویکی‌پدیا

در ادامه یک سری منبع برای یادگیری متلب و اکتاو رو معرفی می‌کنم.

برای شروع

از بین این دوره‌ها، ببینید کدوم یکی به مذاقتون بیشتر خوش میاد:

برای محسابات عددی

به طور کلی

پیشنهاد من اینه که کلیات متلب رو یاد بگیرین و از منابع مختلف مربوط به کارتون استفاده کنید. مخصوصا از مثال‌های خود Mathworks استفاده کنید. مثلا اینجا ۵۰۰ تا مثال خیلی خوب برای ریاضیات، آمار و یادگیری ماشین هست. خوبه به این‌ها حتما نگاه کنید. حواستون باشه که به روی ایران بسته‌س و شما نیاز به چیزی برای دور زدن تحریم دارین که حتما راه‌های مختلفی بلدین براش!

این کتاب پر از مثال‌های خیلی قشنگه و اساسا آموزشش بر پایه مثال زدن. فصل اولش هم برای کسایی که آشنایی با متلب ندارن یک سری مثال آموزشی خوب داره.

خوبی این کتاب اینه که جواب تمرین‌ها رو هم داره و می‌شه به عنوان کتاب کمکی برای تدریس ازش استفاده کرد.

به عنوان پیشنهاد به دوستانی که معلم این درس یا درس‌های دیگه میشن : میتونید به جای حل‌تمرین سنتی پایه کلاس‌هاتون رو بر همچین چیزی بذارید. همین کار کوچیک میتونه تغییر محسوسی توی آموزش فیزیک به‌وجود بیاره. این کتاب نسخه‌ پایتونی هم داره!

تجربه شخصی در کارهای مربوط به تحلیل داده در بازار و نه دانشگاه!

من برای مدتی (۶ ماه) به‌خاطر امرار معاش و کسب تجربه وارد یه پروژه تحلیل داده به صورت پاره‌وقت شدم. درآمدش بد نبود و خوش هم می‌گذشت از یه جهت‌هایی! اگه شما تجربه‌ای در برنامه‌نویسی دارین یا ممکنه نیاز به کار پاره وقت داشته باشین یا اینکه کلا دوست داشته باشین که به صورت تفریحی از این کارا کنید، یه سری پیشنهاد دارم که بهتون کمک کنه وارد این شغل بشین.

فقط توجه کنید که این‌ها تجربه یه آدم حرفه‌ای نیست! تجربه کسی هست که فیزیک خونده و حالا می‌خواد یه کار پاره وقت رو تجربه کنه! کاری خارج از صنعت تست و کنکور و المپیاد. امیدوارم حرفه‌ای‌ها ببخشن و با نظرات خودشون این نوشته رو بهتر کنن.

فلسفهٔ پایتون خوانایی بالای برنامه‌های نوشته شده و کوتاهی و بازدهی نسبی بالای آن است.

۱) پایتون یاد بگیرید

پایتون بر هر درد بی‌درمان دواست. اینم سه تا دوره خوب فارسی:

💡 اگر پایتون رو شروع کردین، ادامه این نوشته رو بخونید!

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

در ضمن گوگل یه چیزی درست کرده به اسم Google Colab که یه ژوپتر نوت بوک آنلاینه که میشه بری اونجا و آنلاین کد بزنی روی کامپیوترای گوگل! ۱۲ گیگ رم میده بهتون با یه پردازنده نسبتا معقول. gpu هم میده برای پردازش‌های موازی! خوبی این‌کار اینه که حتی با یه کامپیوتر ضعیف هم میشه راحت کد پایتون زد و مهم‌تر این‌که میشه کد رو به اشتراک بذاری و همزمان چند نفر توی یه پروژه مشارکت داشته باشند. در ضمن، هر چیزی که بشه روی کامپیوتر شخصی نصب کرد، به راحتی روی گوگل کولب هم نصب میشه. خودتون ببنید چیه دیگه! داخل خود پروژه هم کلی کد نمونه هست. فیلم آموزشی هم هست. اینجا هم یکمی توضیح هست برای گوگل کولب.

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

۲) تحلیل داده به کمک پایتون

الان وقتشه که یه سری کورس تحلیل داده هم ببینید و یاد بگیرین (مهم‌ترین کتابخونه پایتون برای تحلیل داده Pandas هست). با دوره‌ آنلاین آشنا هستید؟!

دوره‌های پیشنهادی:

یک دوره جامع از دانشگاه میشیگان:

۳) آمار یاد بگیرید

اگه واقعا می‌خواین کار درست حسابی کنید باید درست آمار بدونید. این دوره رو پیشنهاد می‌کنم:

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