الگوریتم چیست ؟ | هر آنچه که باید در مورد الگوریتم بدانید

الگوریتم

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

الگوریتم ها دستورالعمل هایی برای حل مشکل هستند

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

برنامه نویسی کار فریبنده ای نیست، اما پایه و اساس تمام نرم افزارهای رایانه ای می باشد؛ از مایکروسافت آفیس گرفته تا روبوکالرها … . حتی اگر دانش شما از برنامه نویسی تنها مربوط به فیلم های bad 90 و گزارش های خبری باشد، احتمالا به کسی نیازی ندارید که به شما در خصوص برنامه نویسی توضیحی بدهد. یک برنامه نویس کد را برای یک کامپیوتر می نویسد و کامپیوتر بر اساس دستورات آن کد برای انجام وظایف و یا حل مشکلات می پردازد.

خب، در دنیای علوم کامپیوتر، الگوریتم به عنوان یک کلمه ی فانتزی برای کدنویسی محسوب می شود. به طورکلی به هر مجموعه ای از دستورالعمل هایی که به کامپیوتر می گوید چگونه مشکلات را برطرف کند یک الگوریتم محسوب می شود، حتی اگر کاری فوق العاده آسان باشد. هنگامی که رایانه خود را روشن می کنید، از دستورالعمل “how to turn on” پیروی می نماید. این یک الگوریتم کاربردی است. زمانی که رایانه های ناسا با استفاده از داده های بدست آمده از امواج رادیویی خام می توانند تصویر خارجی کره ی ماه را تصویرسازی کنند، نشان دهنده ی این است که یک الگوریتم خاص تعریف شده است.

عبارت “algorithm” را می توان برای توصیف هر مجموعه از دستورالعمل ها، حتی در خارج از حیطه ی محاسبات دانست. به عنوان مثال، روش شما برای مرتب سازی اشیا نقره در یک کشو یک الگوریتم محسوب می شود، همانطور که روش شستن دست های شما بعد از حمام نیز به عنوان الگوریتم شناخته می شود.

الگوریتم

اما، موردی که در اینجا وجود دارد: امروزه، عبارت “algorithm” تمایل دارد تا برای برخی از مکالمات دنیای فناوری بسیار خاص محفوظ بماند. شما هیچگاه نشنیده اید که مردم در خصوص الگوریتم های “ریاضی پایه” یا الگوریتم های “MS Paint graffiti tool” صحبت کنند. در عوض از کاربران شبکه ی اجتماعی اینستاگرام می شنوید که نسبت به الگوریتم پیشنهادات دوستان و یا گروه های حفظ حریم خصوصی که الگوریتم های جمع آوری اطلاعات فیس بوک را استفاده می کند، شکایت دارند.

اگر “algorithm” یک اصطلاح کلیدی برای دستورالعمل های محاسباتی می باشد، پس چرا ما تقریبا به طور انحصاری برای توصیف جنبه های گیج کننده، جادویی و بد در دنیای دیجیتال از آن استفاده می کنیم؟

اکثر مردم از عبارات “Algorithms” و “Machine Learning” به جای همدیگر استفاده می کنند

در گذشته، برنامه نویسان به اکثر دستورالعمل های محاسباتی با نام «code» اشاره داشتند. Machine learning محدوده بزرگ و محاسباتی است که در آن تمایل به استفاده از کلمه “algorithm” به جای “Code” وجود دارد، به وضوح قابل درک است که نوعی سردرگمی و نگرانی در استفاده از عبارت “algorithm” وجود دارد.

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

این قابلیت را اکنون می توانید عملی تر از هوش مصنوعی در نظر بگیرید. اگر شما تمامی ایمیل های ارسالی از سوی رئیس خود را به عنوان Spam دسته بندی کنید، پس تمامی ایمیل های ارسالی از سوی رئیش شما در پوشه ی Spam ذخیره خواهد شد. به طور مشابه، Google با استفاده از Machine learning برای اطمینان از این که نتایج جستجو در YouTube ثبت می شود، استفاده می نماید و کمپانی آمازون از Machine learning برای نشان دادن محصولاتی که شما می توانید خریداری کنید، استفاده می نماید.

بیشتر بخوانید  ویرایشگرهای برنامه نویسی چه کاربردهایی دارند؟

البته، Machine learning همیشه قابلیت خوبی نیست. نام “Machine learning” به نظر می رسد به اندازه ی کافی برای کاربرانش گیج و مبهم می باشد. الگوریتم هایی که فیس بوک برای استفاده از داده ها یا کاربران در سراسر وب استفاده می کنند نمونه ای غریزی از Machine learning می باشد. در مطبوعات، درباره «Google’s algorithm» به منظور رتبه بندی نتایج جستجو، «YouTube’s algorithm» برای پیشنهاد فیلم ها و «Facebook’s algorithm» برای تصمیم گیری درباره پست هایی است که در جدول زمانی کاربران مشاهده می کنید، استفاده می گردد. تمامی این موارد جای بحث و گفتگو دارند.

چرا الگوریتم ها بحث برانگیز هستند

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

اما دیگر برنامه های کاربردی برای Machine learning قابلیت ارائه ی پاسخ “صحیح” را ندارند. به همین دلیل الگوریتم ها به طور منظم به عنوان موضوع بحث های موجود در رسانه ها تبدیل گردیده اند.

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

چگونه باید از عبارت “الگوریتم” استفاده کنیم؟

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

اما، عموم مردم از کلمه “الگوریتم” به عنوان یک اصطلاح کلیدی برای کدنویسی در کامپیوتر استفاده نمی کنند. در واقع، اکثر مردم تصور می کنند که بین کد کامپیوتر و یک الگوریتم تفاوت زیادی وجود دارد، اما باید بگوییم که هیچ تفاوتی وجود ندارد. با توجه به ارتباط کلمه “الگوریتم” با Machine learning، به این دلیل مبهم و سخت شده است که استفاده از آن افزایش یافته است.

الگوریتم

آیا اکنون شما باید شروع به استفاده از کلمه ی “algorithm” برای توصیف حتی بی اهمیت ترین کدهای کامپیوتر نمایید؟ احتمالا نه، چون همه نمی دانند منظور شما چیست. زبان کامپیوتر همیشه در حال تغییر است و همیشه برای یک دلیل خوب تغییر می کند. مردم نیاز به یک کلمه برای توصیف دنیای گیج کننده، مبهم و گاهی اوقات مشکوک Machine learning و “الگوریتم” دارند تا بتوانند آن را به درستی درک کنند.

بر اساس این گفته ها خوب است که به یاد داشته باشید، یک الگوریتم (و Machine learning) در بطن خود دارای دسته ای از کدهاست که برای برطرف کردن مشکلات نوشته شده است. هیچ ترفند جادویی در این زمینه وجود ندارد این فقط تکرار پیچیده تری از نرم افزارهایی است که ما در حال حاضر با آن آشنا هستیم.

 

بیشتر بخوانید

 

در ادامه با زوم تک همراه باشید …

 

منبع: howtogeek

به این پست امتیاز بدید

نظرات در مورد : الگوریتم چیست ؟ | هر آنچه که باید در مورد الگوریتم بدانید

0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *