طراحی سایت|طراحی اپلیکیشن

تفاوت هکر و برنامه نویس

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

برنامه نویس کسی است که می تواند با دستکاری کد رایانه مشکلات را حل کند. آنها می توانند طیف گسترده ای از سطح مهارت ها را داشته باشند – از “خوب” بودن با برنامه نویسی پایه گرفته تا یک جادوگر مطلق با هر زبانی.

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

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

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

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

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

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

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