مسیر تبدیل شدن به یک دانشمند داده / دیتاساینتیست

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

زبان برنامه نویسی مرتبط

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

لینوکس و ابزارهاش

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

اکسل

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

ویژوالایزیشن

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

پایگاه‌های داده

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

آمار و ریاضی

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

یادگیری ماشین

موضوع داغ این روزها، یادگیری ماشین است. الگوریتم‌هایی که بعد از اجراشون حس می‌کنیم ماشین‌ها به شکل جادویی چیزی رو یاد گرفتن که ما به خوبی ازش سردرنمیاریم. برای درک مساله، خوبه حداقل این ده الگوریتم رو بلد باشین:‌ linear regression ،logistic regression ،SVM ،random forests ،Gradient Boosting ،PCA ،k-means ،collaborative filtering ،k-NN و ARIMA. در این بخش همچنین لازمه بفهمیم که چطوری باید پرفرمنس یه مدل رو سنجید، آپتییمایز کرد، کراس ولدیت کرد، توابع خطی و غیرخطی رو دونست و جبرخطی و حسابان رو بلد بود. البته لیست دونستی‌ها اینجا زیاده مثلا overfitting و شبکه‌های عصبی و درخت تصمیم و … و البته چیزهای بزرگی مثل هوش مصنوعی و تفسیر زبان طبیعی و … اگر در دنیای پایتون هستین دونستن کتابخونه‌هایی مثل نامپای، پایتورچ، سایکیتلرن، پانداز و تنسورفلو می‌تونه خط شروع خیلی خوبی به شما بده. کتاب پیشنهادی؟‌ یه نگاه به کار عملی با سایکیت لرن و تنسورفلو بندازین.

اما…

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

درست کردن اعتبار

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

حرف آخر

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

اگر هم فکر کردین چیزی باید اضافه یا کم بشه، خوشحال می شم تو کامنت ها بگین. تخصص منم نیست.

منبع اصلی این مطلب.

مرتبط

کنسرت جز ایرانی، یه تجربه بد دیگه از کنسرت در ایران

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

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

  • برنامه نیم ساعت دیرتر از اونی که قرار بود شروع شد.
  • برنامه اصولا بروشور نداشت. من معمولا سعی می کنم کاغذ اضافی رو حذف کنم ولی در نهایت برای کل گروه ما یک بروشور لازم بود که حداقل اسم قطعات رو بدونیم یا نوازنده ها رو بشناسیم؛ چه برسه به کمی خوندن و آشنایی با ادعای «جز به سبک ایرانی» این گروه
  • در ادامه بی برنامگی، بحث نوازنده ها بود. بر طبق پوستر قرار بود یه نوازنده مهمان باشه که تار می زنه ولی به جاش یه نفر بود که نی می زد و دائما وارد نی کاملا ایرانی می شد که خب باید تکنوازی می کرد و یه جاهایی هم کلا گروه به سمت موزیک ترکیه‌ای می رفت که شایدم خب یه جور جز ایرانی باشه (:
  • ابزارهای عکاسی و فیلم‌برداری خود مجموعه بارها و بارها بسیار آزاردهنده بود. دیشب یک دوربین بین من در ردیف ۲ و استیج بود که باعث می شد من کلا یه نوازنده از سه نوازنده رو نبینم و یه نور چشمک زن قرمز دائما حواسم رو از سن پرت کنه. یا مثلا تو کنسرت کلهر که چند ماه پیش رفتم، صدای شاتر یک عکاس از اول تا آخر اجرا بخش زیادی از صدای ورودی رو به خودش اختصاص داد. در یک اجرای معقول، انتظار می ره جایگاه عکاس / فیلمبردار مزاحم ما نباشه و معمولا بعد از یکربع اول، عکسها گرفته شده باشه.

اما…

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

خلاصه اینکه تجربه من دوباره تکرار شد:‌ اگر همون موزیک رو با موبایل و هدفون خودم گوش بدم کیفیتی بسیار بهتر از رفتن به سالن کنسرت است! بخصوص که از دست تماشاچی‌هایی که برای گپ زدن و چیز خوردن و موبایل چک کردن و فیلمبرداری و گزارشگری به سالن اومدن هم در امانم (:

پاس چیه، چرا باید ازش استفاده کنیم و معرفی یه پاس برای تمرین و پروداکشن

قدیم‌ها وقتی یه سرویس می‌نوشتیم، مجبور بودیم سخت افزارش رو بذاریم در یک دیتا سنتر و به اینترنت وصلش کنیم و روش سیستم عامل نصب کنیم و … اما بعد که vps ها اومدن، حداقل دردسر سخت افزار از سر ما باز شد و یکضرب یه سیستم‌عامل داشتیم که باید کانفیگش میکردیم تا مثلا بتونیم جنگو، لاراول یا دیتابیس خودمون رو روش اجرا کنیم. اینو می دونستین؟ حتما می دونستین پس بذارین از یه جای جالب دیگه شروع کنم (:

تو نرم افزار اصطلاح مهمی هست به اسم Yak Shaving یا تراشیدن موهای گاومیش. بحث هم سر اینه که وقتی مثلا تصمیم می‌گیرین پایه‌های میز ناهار خوری رو محکم کنین، اول باید صندلی هاش رو بذارین جایی مثل انباری که بشه میز رو جابجا کرد ولی می بینین تو انباری جا نیست و مجبورین لباس های قدیمی که اونجا انبار شده رو تحویل یه خیریه بدین ولی چون تو ماشین خودتون جا نمی شه باید زنگ بزنین به یه دوست قدیمی که وانت پراید داره و … و یکهو می بینین چون می خواستین میز ناهارخوری رو عوض کنین، مشغول تراشیدن موهای یه گاومیش هستین (: این تو دنیای نرم افزار خیلی زیاد اتفاق می افته. شما می خواین برنامه ای که نوشتین رو بذارین روی یک سرور ولی می بینین که سه روز مشغول کمپایل یه ماجول یا درست کردن مکانیزم های آپدیت یا بک آپ اتوماتیک و این چیزها هستین.

این مشکل رو توی دنیا، پاس حل می کنه. همون PaaS یا Platform as a Service. پلتفرم اونجایی است که برنامه شما روش اجرا می شه و اگر یه VPS خریده باشین شامل کارهایی می شه مثل درست کردن شبکه اون سرویس، راه انداختن گیت روش، تنظیمات امنیتی، آپدیت کردن، ساختن یوزرها، دسترسی به دیتابیس و غیره و غیره. بعدها هم آپدیت کردنش، خالی کردن هاردش، ارتقاء سخت افزارش و غیره و اطمینان از اینکه بعد از این کارها همه چیز درست کار می کنه. حالا فرض کنین یه شرکت بیاد و این خدمات رو به شما بده و بگه شما کافیه فقط نگران دیتا و برنامه‌تون باشین و بقیه چیزها شامل راه اندازی سرورها، استورج، مجازی‌سازی، سیستم عامل، شبکه و … با اونهاست. این شرکت کلی کار شما رو ساده و امن می کنه. توی این سیستم یکسری سرویس مرسوم از پیش تنظیم شده هست که شما می تونین انتخابشون کنین. مثلا می تونین بگین یه دیتابیس پستگرس یا مای‌اسکوئل لازم دارین و اون به شما یوزر و پسورد و روش اتصالش رو می ده. یا ممکنه بگین نیاز به جایی دارین که بتونه پروژه جنگوی شما رو اجرا کنه یا اصولا در سطحی دیگه، یه کانتینر (مثلا داکر) بهش بدین و بگین سه تا ازش بالا باشه و اگر لازم شد تا ۷ تا هم از اون بیاره بالا. این می شه یه سرویس پاس. سرویسی که کلی از زحمات ما به عنوان مدیر سیستم رو کم می کنه و اجازه می ده روی بخش معماری و برنامه نویسی مون تمرکز کنیم. همچنین انتظار می ره از هر چیزی که خودمون سر هم کرده باشیم، امن تر و قابل توسعه تر باشه.

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

kind: ExternalService
name: mywebsite
spec:
  image_pull_policy: Always
  port: 80
  source:
    context: .
    media_path: ''
    project_type: django
    python_version: '3.5'
    static_path: static
    wsgi: fandoghapp.wsgi
  env:
    - name: Mysql_Host
        value: db
    - name: Mysql_Password
        value: 123456
    - name: Mysql_User
        value: root
    - name: DB_Name
        value: myDatabaseName

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

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

این تبلیغه؟ (: بستگی داره به چی بگین تبلیغ. خودشون نمی دونن من دارم این رو می نویسم و نه فقط بهم پولی ندادن، که پول تک تک کارهایی که روشون کردم رو هم دادم و خواهم داد (: اما به این معنی تبلیغ/آگاهی است که : یه چیز خوب اونجاست که خوبه اگر لازم دارین استفاده اش کنین + یک مهارت مهم هست که خوبه یادش بگیرین. ولی خوب توی این دنیای مهمل این روزها، آدم از هر چی تعریف کنه حتما خواهد شنید: پول گرفته که می گه (: البته من ترجیح می دم پیش فرض این باشه چون واقعا تقریبا همه پول می گیرن که از هر چیزی که پول می ده، تعریف کنن (: به قول معروف «خیلی هاتون پرسیده بودین پس بکشین بالا» ((:

برای اینکه لینک گم نشه: این شما و این فندق و البته دوستان از پشت صحنه تذکر می دن که لیارا هم هست که من همین الان دارم تجربه اش کنم (:

سیستم عامل آزاد و متن بازی برای فردای فروپاشی

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

این آدم یه کار خیلی جالب کرده: شروع کرده از حالا یه سیستم عامل آزاد و متن باز درست کنه برای اون دوران و اسمش رو هم گذاشته Collapse OS. یه کرنل z80 و ترکیبی از برنامه‌ها، ابزارها و داکیومنت‌ها که بتونن سیستم‌عاملی رو درست کنن که:

۱. روی ماشین‌های حداقلی / میکروپروسسورها اجرا بشن
۲. بشه با حداقل پورت‌ها باهاشون ارتباط برقرار کرد (سریال، کیبرد و نمایشگر)
۳. بشه باهاشون فایل متنی ادیت کرد
۴. بشه سورس اسمبلی رو برای گستره وسیعی از MCU و CPUها کمپایل کرد
۵. بشه دیوایس‌های ذخیره سازی مثل SDها رو خوند
۶. و بشه با اینها، سیستم رو تکثیر کرد

یعنی در واقع مجموعه ابزارهای کولپس او اس به شما اجازه می‌دن که وقتی با یکسری سی پی یو یا کامپیوترهای تک چیپ تنها موندین، بدون اینترنت و کامپیوترهای مدرن و غیره بتونین اونها رو راه بندازین کنین و چرخی به اسم کامپیوتر رو دوباره اختراع کنین! البته بسیار ساده تر و ابتدایی تر؛ چون به نظر ایشون، بعد از فروپاشی تمدن ما، الکترونیکمون در سطح سی پی یوهای ۸ بیتی خواهد بود.

در حال حاضر این پروژه می‌تونه باینریهای Z80 و AVR رو بسازه، خودش رو بازتولید کنه (یعنی با رم و دیسک کافی، می تونه خودش رو اسمبل کنه)، روی RC2014 ران بشه و کیبرد PS/2 رو بفهمه و یک شل داشته باشه که می تونه به مموری درخواست بده، IO استفاده کنه و کد داخل حافظه رو ران کنه. امکان خوندن حاظه اس دی و ادیتوری در سبک ed هم فراهمه. لازمه اضافه کنم که کرنل + شل کمتر از ۵ کیلوبایت است و اسمبلر هم حدود ۵کیلوبایت که کمتر از ۸ کیلوبایت رم برای اجرا لازم داره.

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

ربات مد در روزهای تلخ

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

وضعیت کرنل لینوکس در ۲۰۲۰

رسمی هست که بعضی‌ها هر سال وضعیت کرنل رو بررسی می‌کنم. منظورم وضعیت کد، فایل ها، کامیت‌ها و برنامه‌نویس هایی است که این کامیت‌ها رو انجام دادن. بر اساس آمار اولین روز ۲۰۲۰، کرنل لینوکس ۲۷میلیون و ۸۵۲هزار و ۱۴۸ خط است۷ شامل داکیومنت‌ها، کانفیگ ها، ابزارهای یوزر اسپیس و ..). این کرنل ۸۸۷هزار و ۹۲۵ کامیت داشته که محصول کار ۲۱۰۷۴ نفر آدمه. این ۲۷.۸ میلیون خط کد، در ۶۶هزار و ۴۹۲ فایل تقسیم شده.

در طول ۲۰۱۹، کرنل لینوکس ۷۴۷۵۴ کامیت دریافت کرده که از تاریخ ۲۰۱۳، پایین ترین رقم است! کامیت‌ها در سال‌ ۲۰۱۸ و ۲۰۱۷، حدود ۸۰هزار تا بوده و در ۲۰۱۶ حدود ۷۷هزار تا ودر سال های ۲۰۱۴ و ۲۰۱۵، ۷۵هزار. این کمتر شدن نویسندگان در مقایسه ۲۰۱۹ و ۲۰۱۸ هم وجود داشته. در ۲۰۱۹ تعداد نویسندگان ۴۱۸۹ بوده که کمی کمتر از عدد ۴۳۶۲ مربوط به سال ۲۰۱۸ است و البته بیشتر از عدد ۴۰۴۲ سال ۲۰۱۷. البته این کم تر شدن کامیت‌ها، در سطح کد تاثیر زیادی نداشته و با ۳میلیون و ۳۸۶هزار و ۳۴۷ خطی که امسال به کرنل اضافه شده (و البته ۱میلیون و ۶۹۶هزار و ۶۲۰ خط حذف شده)، میزان رشد کنترل تقریبا شبیه هر سال است.

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

برای دیدن اطلاعات بیشتر می تونین به صفحه گیت استت نگاه کنین و برای درک بهتری از پروژه، این خروجی cloc است که کارش شمردن خطوط کد و نمایش آماری اون است. اگر count lines of code یا همون cloc رو روی کرنل اول ۲۰۲۰ رو اجرا کنیم، نتیجه اینه:

   66449 text files.
   66000 unique files.                                          
   11119 files ignored.

github.com/AlDanial/cloc v 1.82  T=67.33 s (822.2 files/s, 388799.5 lines/s)
---------------------------------------------------------------------------------------
Language                             files          blank        comment           code
---------------------------------------------------------------------------------------
C                                    27961        2761653        2292505       14061980
C/C++ Header                         19875         531782         956091        4300989
reStructuredText                      2153         101820          53725         270579
Assembly                              1320          46971         101470         230117
JSON                                   273              0              0         161955
Bourne Shell                           577          13299           9690          52817
make                                  2531           9485          10644          41766
SVG                                     58            117           1364          36216
Perl                                    59           6021           4422          30642
Python                                 118           4987           4588          26256
YAML                                   325           5205           1449          25529
yacc                                     9            697            359           4810
PO File                                  5            791            918           3077
lex                                      8            326            300           2015
C++                                     10            320            129           1933
Bourne Again Shell                      51            356            297           1765
awk                                     10            140            116           1060
Glade                                    1             58              0            603
NAnt script                              2            146              0            551
Cucumber                                 1             28             50            174
Windows Module Definition                2             15              0            109
m4                                       1             15              1             95
CSS                                      1             28             29             80
XSLT                                     5             13             26             61
vim script                               1              3             12             27
Ruby                                     1              4              0             25
INI                                      1              1              0              6
sed                                      1              2              5              5
---------------------------------------------------------------------------------------
SUM:                                 55360        3484283        3438190       19255242
---------------------------------------------------------------------------------------

اگر هم دوست دارین کرنل رو درک کنین۷ این کتاب قدیمی شروع خوبیه «درک کرنل لینوکس / لینک آمازون.

منبع اصلی

مشکل نرم‌افزاری پارکومترها، در ۲۰۲۰ اونها رو از کار انداخت

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

اما حالا در ۲۰۲۰ یه اتفاق بانمک داشتیم: از کار افتادن تعداد زیادی از پارکومترهای همه دنیا از نیویورک سیتی تا استرالیا. سازمان حمل و نقل می گه چون برنامه ای که در این پارکومترها استفاده شده با سال ۲۰۲۰ منطبق نیست، پارکومترها نمی تونن کردیت کارت قبول کنن و فقط با سکه یا اپ مخصوصشون می شه بهشون پول پرداخت کرد. این پارکومترها که توی شهر نیویورک سیتی هم هستن، توسط شرکت Parkeon نصب شدن و ظاهرا آپدیت مناسب رو دریافت نکردن و حالا لازمه که تک به تک سراغشون رفت و آپدیتشون کرد، حدود ۱۴۰۰۰ پارکومتر که حدود ۸۵۰۰۰ جای پارک رو مدیریت می‌کنن.

اگر شما هم برنامه‌ای می‌نویسین یادتون باشه ممکنه مدتی بسیار طولانی تر از اونی که فکر می کنین، فعال بمونه و خوبه که از روز اول حواستون به این مساله باشه، بخصوص تو ایران که ما به زودی با مساله «سال ۱۴۰۰» روبرو خواهیم بودیم و لازمه برنامه‌هامون تاریخ‌ها رو درست ذخیره کنن.

رادیوگیک ۰۹۷ – فلسفه علم به افتخار رها

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

با این لینک‌ها مشترک رادیوگیک بشین

فلسفه علم

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

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

این رو هم اضافه کنم که درسته که از زمان ارسطو فلسفه داریم، اما فلسفه علم به عنوان یه رشته جدا، از حوالی قرن ۲۰ درست شد. بخصوص با «پوزیتیویسم منطقی» بعد هم افرادی مثل پوپر ایده های جدیدی دادن و بعد هم کتاب ۱۹۶۲ توماس کون (توضیحات) به اسم «ساختار انقلاب‌های علمی» بحث رو به سطح دیگه ای بردن و مفوم پارادایم رو مطرح کردن که حرف اصلی اش اینه که در هر دوره، سوال ها، مفاهیم و کارهایی هست که اصولا دیسیپلین علمی اون دوره رو تعریف می کنه و البته جزییات زیاده اما من آخرش اشاره ای هم به نویسنده مورد علاقه ای فایرابند می کنم با کتاب بر ضد روش که اصولا استدلال می کنه ما نباید در مورد روش علمی صحبت کنیم چون هر روشی در علم، باید مجاز باشه. بحث پیشتر هم می ره و خب خیلی جاهاش هم از سواد عمومی من هم خارجه، ولی خوبی علوم اجتماعی اینه که هر کس حق نظر دادن داره و شنونده است که باید درک کنه به چی گوش بده و بعد از این سراغ چی بره. معلومه که اگر خوشتون اومد، بیشتر می خونین. مثلا در این باب که آیا علوم رو می شه به هم تبدیل کرد، آیا شیمی قابل تقلیل به فیزیک هست؟ آیا جامعه شناسی رو می شه از روانشناسی استنتاج کرد و آیا تحقیق در مورد انسان، می تونه در مورد ارزشها هم به ما اطلاعاتی بده؟ با ما باشین…. با این چیزها می شه پرواز کرد، البته در ذهن… فعلا بیرون از ذهن فقط با فیزیک می شه پرواز کرد… شایدم شیمی (((:

اما اول ببینیم علم چیه

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

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

اما در نهایت اینکه چی علم است و چی علم نیست هنوزم مورد بحثه و خب وابسته به دیدگاه. به پوزیتیویسم (همونم مثبتگرایی) سعی کردن بگن چیزی که قابل مشاهده است علم و چیزی که قابل مشاهده نیست، بی معنی (: [مفهوم کلی از مشاهده رو توضیح بدم با گپ د رمورد امکان سنجش]. اما بعدا تعریف جالب و بسیار متواضعی از سمت کارل پوپر اومد که می گفت گزاره علمی گزاره ای است که ابطال پذیر باشه (Falsifiability).

قبلا می گفتن که با استقراء (induction) من می تونم به قانون برسم. اگر هی قوی سفید ببینم می تونم نتیجه بگیرم که همه قوها سفید هستن. اما دیوید هیوم و کانت و بعد پوپر دیدن که این شکل از استدلال مشکل داره و با استنتاج در تضاده (deduction). شاید جالب باشه که بعدا با کشف قوی سیاه استرالیایی، این مثال معنی جالبتری گرفت. افرادی مثل هیوم و کانت سعی کردن جواب هایی برای این مساله پیدا کنن ولی بعد پوپر ایده هاشون رو کاملتر کرد و گفت اصولا ما نیازی به پذیرش پیشینی این ایده ها نداریم. بلکه ما می تونیم گزاره هایی بدیم که قابل رد شدن باشن و بعد ببینیم رد کردن اونها چقدر سخته! این احتمالا یکی از جهش های بسیار بزرگ فلسفه علم بود. پوپر می نویسه:

I shall require that [the] logical form [of the theory] shall be such that it can be singled out, by means of empirical tests, in a negative sense: it must be possible for an empirical scientific system to be refuted by experience.

— Karl Popper, Popper 1959. p 19

مثال همه قو ها سفید هستن یا «ظلم منجر به فروپاشی حکومت می شه» که ابطال پذیر نیست.

در واقع پوپر علم رو اینطوری تعریف کرد که قابل رد شدن باشه! نه قابل اثبات شدن و بعد از تلاس بسیار برای ردش و شکست خوردن، تقویت بشه نه اثبات!

اما آیا با مشاهده به نتیجه می رسیم؟

مثال جوجه ها اینجا خیلی مشهوره [مثلا رو بگم]. در واقع ما فقط با پشت هم چیدن مشاهداتمون نمی تونیم به علم برسیم. ریچارد فاینمن اصطلاح کارگو کالت ساینس رو کشف کرده [توضیح بدم و اینکه فرم رو حفظ کردن، ما رو به محتوا نمی رسونه]. این مساله می گه که ما باید بتونیم یه چیزی رو برای دفاع از علم، به مشاهدهاضافه کنیم. در واقع از مشاهده خالص ظاهرا نمی شه به علم رسید. البته اگر بخوایم عام تر نگاه کنیم، این بحث نسبی است. بستگی داره به تعاریف علم. گاهی ممکنه بگن استقراء احتمال چیزی رو تقویت می کنه و جوجه ها اتفاقا اشتباه نمی کردن و نظریه شون با علم سازگار بوده.

بعضی ها هم ممکنه بگن کلا استقراء روش اصلی علم نیست و با استنتاج است که به علم می رسیم. در واقع می گن باید مشاهده کنیم و بعد سعی کنیم توضیحبدیم. بعدش هم یه چیزی به اسم تیغ اوکام (استره اکام، اصل امساک، اصل اختصار تبینن: موجودیت‌ها یا وجودها (نهادها) نباید بدون ضرورت افزایش یابد. یا در توضیح و توصیف، بخش های ناضروری را حذف کن) رو برداریم و هر چیزی از توضیحمون زیادی است رو حذف کنیم و برسیم به ساده ترین توضیح ممکن مشاهده.

اینجاست که به بحث تئوری می رسیم

تئوری علمی

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

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

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

و بحث آخرمون… هدف و ارزش در علم

هدف و ارزش

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

همچنین توی ارزش، دو بحث نتیجه گیری ارزشی باید از ربط ارزشی جدا بشه [توضیح خودم]

اما هر چی که باشه، علم متواضع‌ترین منبعی بوده که بشر بهش دسترسی داشته چون همیشه داشته تلاش می کرده خودش رو رد کنه! و ازاونطرف مفیدترین هم بوده چون عملا تنها چیزی بوده که از نتایجش همگان فایده بردن و هیچ وقت هم نه باعث کشتار بوده نه شکنجه نه هیچچی ولی خب ابزار بوده (: اما دلیل نبوده… می بینیم که حتی کسانی که دلایل غیرعلمی برای این چیزها دارن هم در نهایت وقتی می خوان به هدف برسن، ابزار علمی رو انتخاب میکنن..

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

تقبیح ها و تشویق ها

تشکر از عباس مهدیه که دوست رادیو گیک است. تشکر از محمد نشاط خو که یه ایمیل باحال بهم زده بود و چند نکته جالب رو گفته بود.
میلاد هم یهه تیکه از That’s My Heart از Lindemann تقدیم به خودش
hymn for missing از red رو از طرف مصطفی به سیما

ایمان یا ایتوماسن؟
حال و هوای میامی رو داره. البته ما که هیچ وقت نرفیم اما با فیلما و بازیهاش انگار اونجا بودیم قبلا :))
فایل نمی فرستم، اسمش اینه jan hammer crockett’s theme

موسیقی

  • آهنگ آریان به اسم گمشده من رو از طرف رضا تقدیم می کنیم به عل یپهلوان تو استرالیا
  • ۱۲۷ – پاپ امرجنسی – سربازان سرنوشت
  • یاس – سرکوب
  • عثمان سحاب – نازی
  • elf and his dreams -Old Story