تا كنون، اين پست وبلاگ بهترين منبعي صفر تا صد برنامه نويسي كامپيوتر است كه در اين زمينه پيدا كرده ام (سلب مسئوليت: شما بايد برخي از مقالات دانشگاهي را بخوانيد).
اگر شما يك نوع كتاب درسي هستيد، پس اين كتاب اوريلي نوشته مارتين كلپمن عالي است. من آن را مرور كردم و بيشتر موضوعات مهم را پوشش مي دهد.
با اين اوصاف، سيستم هاي توزيع شده زمينه اي است كه تجربه در آن اهميت زيادي دارد.
بنابراين تئوري را بياموزيد، اما با كار بر روي پروژه هاي سيستم هاي توزيع شده، دست خود را نيز كثيف كنيد.
7- يادگيري ماشيني
يادگيري ماشيني يك زمينه ميان رشته اي صفر تا صد برنامه نويسي كامپيوتر است كه علوم كامپيوتر، رياضيات و آمار را در بر مي گيرد.
در اين روزگار، همه جا از آن استفاده مي شود! نتفليكس از آن براي توصيه هاي فيلم استفاده مي كند، آمازون از آن براي موتور توصيه خود و براي آمازون اكو، Vesty Waves از آن براي طبقه بندي خودكار مقالات استفاده مي كند و اين ليست ادامه دارد.
براي اينكه بتوانيد اين نوع نرم افزارها را بسازيد، بايد چيزي فراتر از يك برنامه نويس مستحكم باشيد زيرا همانطور كه اشاره كردم اين زمينه به يك پايه رياضي و آماري بسيار قوي نياز دارد.
و نه، يادگيري همه چيز در مورد كتابخانه Scikit-Learn Python (يك كتابخانه بسيار محبوب پايتون براي يادگيري ماشين) شما را به يك دانشمند صفر تا صد برنامه نويسي كامپيوتر داده يا يك متخصص يادگيري ماشين تبديل نمي كند. شما هنوز بايد زيربناي رياضي و آماري را درك كنيد.
دو راه براي مطالعه يادگيري ماشين وجود دارد: روش رويكرد بالا به پايين، كه در آن ابتدا با نوشتن كد يادگيري ماشيني بلافاصله شروع ميكنيد (مثلاً با استفاده از كتابخانه Scikit-Learn پايتون) و بعداً رياضيات را درك ميكنيد، يا از پايين به بالا. رويكرد، جايي كه ابتدا با رياضي شروع ميكنيد و سپس به سمت كدنويسي ميرويد.
من شخصاً روش دوم را ترجيح مي دهم، فقط به ايرانيان سايبر اين دليل كه بهترين كار براي من است. اگرچه شروع سختتر است و قبل از شروع كدنويسي زمان بيشتري ميبرد، وقتي مفاهيم را درك كرديد، يادگيري نحوه استفاده از كتابخانه يادگيري ماشيني صفر تا صد برنامه نويسي كامپيوتر كار بسيار خوبي خواهد بود.
از سوي ديگر، رويكرد بالا به پايين اين مزيت را دارد كه به شما امكان ميدهد تا به سرعت كدهاي يادگيري ماشيني را شروع كنيد.
اين به افراد زيادي انگيزه مي دهد.
نقطه ضعف رويكرد از بالا به پايين اين است كه درك اينكه چرا برخي از تكنيك ها كار مي كنند، در حالي كه ديگران نه، براي شما بسيار سخت تر خواهد بود، زيرا در ابتدا پيش زمينه رياضي لازم را نخواهيد داشت.
دوره آموزشي Andrew Ng در Coursera مكان بسيار خوبي براي شروع است.
اگر دانش قبلي از رياضيات، احتمالات و آمار داريد، كتاب مقدمه اي بر يادگيري آماري كتاب بسيار خوبي براي ايجاد مباني آماري و رياضي براي يادگيري ماشين است.
با اين حال، اگر قبلاً در جبر خطي، احتمالات صفر تا صد برنامه نويسي كامپيوتر و آمار اوليه قوي نيستيد، از اين كتاب استفاده نكنيد زيرا قادر به درك آن نخواهيد بود.
اگر ميخواهيد مشكلات دنياي واقعي را حل كنيد و با انجام اين كار درآمد كسب كنيد، يك تيم ايجاد كنيد، به Kaggle برويد، يك مشكل را حل كنيد و مقداري پول درآوريد.
و حتي اگر برنده نشويد، ياد خواهيد گرفت. تعاريف بيشماري از برنامه نويسي كامپيوتري وجود دارد، اما اين تعاريف من است.
"برنامه نويسي روشي است كه رايانه ها را براي حل مشكلات به كار مي گيريد."
دو عبارت كليدي در اينجا وجود دارد كه مهم هستند:
شما: بدون برنامه نويس (شما) كامپيوتر برنامه نويسي كامپيوتر بي فايده است. كاري را كه شما به آن مي گوييد انجام مي دهد.