مهندس نرم افزار با برنامه نویس فرق دارد!!

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

یک مهندس کامپیوتر نیاز دارد:

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

قطعا یک مهندس نرم افزار نیاز دارد حداقل به یک زبان برنامه تسلط داشته باشد تا بتواند درک دستی از یک سیستم نرم افزاری داشته باشد

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


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


http://karimiblog.ir/blog/2018/12/%d9%85%d9%87%d9%86%d8%af%d8%b3-%d9%86%d8%b1%d9%85-%d8%a7%d9%81%d8%b2%d8%a7%d8%b1-%d8%a8%d8%a7-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3-%d9%81%d8%b1%d9%82-%d8%af%d8%a7%d8%b1%d8%af/

نوشته مهندس نرم افزار با برنامه نویس فرق دارد!! اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

۱۱ کانال برتر یوتیوب برای آموزش برنامه نویسی

خبر خوب این که ، هرگز زمانی بهتر از الان در تاریخ نبوده است که همزمان با گسترش فناوری های یوتیوب بسیاری از مهندسین نرم افزار و برنامه نویسان در کانال های برتر یوتیوب مشغول به آموزش رایگان به دیگر کاربران هستند.

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

۱- کانال Codecourse
قطعاً یکی از بهترین کانال ها برای شروع یادگیری زبانهای برنامه نویسی این کانال است و مطمئناً آموزش های برنامه نویسی آن در زبان PHP جزو بهترین هاست. همچنین آموزش های این ویدئو بروی اصول استاندارد نویسی بسیار تمرکز دارد و بهتر است که یاد بگیرید چگونه استاندارد تر کد بزنید.
حتماً به این کانال سر بزنید و تجربه خودتون رو با من در اشتراک بزارید.

۲- کانال JREAM
این کانال زبانهای برنامه نویسی زیادی را همانند Codecourse پوشش نمیدهد ولی یک بخش آموزشی ویژه ۵۴ قسمتی مخصوص PHP-Object-Oriented ( برنامه نویسی شی گرا ) که پیشنهاد میکنم از دستش ندید.

۳- کانال RebellionRider
این کانال دارای بیش از ۱۰۰ فیلم ضروری برنامه نویسی SQL است که سطح مبتدی تا پیشرفته میتوانید این زبان برنامه نویسی رو بیاموزید.
برنامه نویسی SQL مبتدی آن دارای ۸۹ ویدئو است و مرحله به مرحله پس از ارتقا خود در این زبان میتوانید با این کانال و ویدئوهای آموزشی اش همراه باشید.

۴- کانال PASStv
یک کانال آموزشی خوش ساخت از ویدئو های خوب در مورد تجربیات و زمینه های یادگیری SQL SERVER . این کانال خیلی به آموزش زبان برنامه نویسی نمیپردازد اما حضور مهندسان و متخصصان این زبان باعث میشود که ویدئو های خوبی از تجربیات مهندسان را بتوانید ببینید و فرا بگیرید.
اگر بدنبال یادگیری تجربی SQL SERVER هستید، توصیه میکنم این کانال رو ببینید.

۵- کانال MacKenzie Child
کانال جالب MacKenzie Child دارای ۱۲ سری آموزش مبتدی زبان برنامه نویسی Ruby است که طرفداران این زبان حتماً باید دیده باشند.
اما بیشتر از آن بخش ویژه “۱۲ وب سرویس در ۱۲ هفته” مخاطبان زیادی رو به خود اختصاص داده است. این بخش ویژه برای یادگیری تجربی برنامه نویسی وب سرویس ها در نظر گرفته شده است.

۶- کانال WildAcademy
کانال وایلدآکادمی توسط Jake Day Williams، برای گسترش دانش در زبان برنامه نویسی Ruby و PHP تاسیس شده است.این کانال برای مبتدیان و علاقه مندان به Ruby بسیار مفید است.

۷- کانال Corey Schafer
کوری شافر یک توسعه دهنده پایتون است که در دنیای پایتونی ها بسیار فعال است . سری ویدئوهای پایتون برای مبتدیان او بسیار مورد توجه و بازدید قرار گرفته است. اگر هر سری ویدئوهای اون ۲۲ قسمت طولانی هم باشد مطمئن باشید برایتان بسیار فراتر از مبتدیان خواهید آموخت.

۸- کانال Programming Knowledge
این کانال صرفاً آموزش پایتون نیست اما این کانال بالای ۱۶۰ ویدئو در زمینه آموزش پایتون منتشر کرده است . اگر بدنبال آموزش ASP.NET هستید این کانال را با ویدئو های آموزشی جذابش از دست ندهید.

۹- کانال Cave of Programming
این کانال دارای لیست پخش هایی با دسته بندی مبتدی – متوسطه – پیشرفته دارد که پوشش آموزشی در بخش های مختلفی را میدهد اما بسیار تمرکز زیادی بروی زبان برنامه نویسی Java دارد که در ایران هم بسیار طرفدار و برنامه نویس دارد.

۱۰- کانال Telusko
در این کانال آموزشی واقعاً با یک دوره حرفه ای از زبان Java مواجه هستید. درست است که ویدئو های آموزشی این کانال در هر مقطعی از یادگیری جاوا آموزش میدهد اما توسط پیشرفته ترین اساتید روز جاوا در دنیا تهیه و انتشار میگردد.
علاقه مندان و برنامه نویسان جاوا این کانال را جدی بگیرید…

۱۱- کانال The New Boston
The New Boston به عنوان مرجع آموزشی برای زبانهایی که با آن در حال کار هستید بوجود آمده است. این کانال ۲ میلیون دنبال کننده دارد و حدود نیم میلیارد بازدید از ویدئو رو به نام خود ثبت کرده است. در این کانال تمامی زبان های برنامه نویسی که توسعه back-end نرم افزار ها را بر عهده دارند آموزش داده میشود.

نوشته ۱۱ کانال برتر یوتیوب برای آموزش برنامه نویسی اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

پشیمانی های فارغ التحصیلان کامپیوتر

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

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


۰:چرا از کد زدن ترسیدم؟

مهم ترین بخش ماجرا همینه!!

شما وقتی کامپیوتر میخونید یک برنامه نویس میشید و برای برنامه نویس خوب شدن هم باید زیاد کد بزنید

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

۱:چرا وقت کشی کردم؟

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

البته به شخصه گوش دادن این اهنگ معروف اما قدیمی زمان از پینک فلوید رو هم بهتون پیشنهاد میکنم

۲:خودتون رو با دیگران مقایسه نکنید

این نکته خیلی مهمیه مهم نیست نسبت به دیگران کجا ایستادید مهم اینه که همواره در حال بهتر شدن باشید و این نکتروهم در نظر داشته باشید وقتی خودتون رو با کسی مقایسه میکنید نه اینده و اهداف اون رو میدونید و نه گذشته اون رو پس مقایسه کردن خودتون با هر کسی کار بیهوده ایه و اینکه تعداد ادم هایی که مهارتی رو شروع کردن به یاد گرفتن و موفق شدن بیشماره و البته برعکس که تعداد ادمایی که قبل از ۱۰ سالگی کاری رو شروع کردن و تو اون موفقیتی بدست نیاوردن هم خیلی زیاده.

و البته باید اضافه کنم که دانش و مهارت به تنهایی هیچ ارزشی ندارن و مهم تر از اون خلاقیت و استفاده ازون دانش برای کمک به دیگرانه و البته هزاران دلیل دیگه میتونم براتون بیارم که مقایسه کردن خودتون با دیگران کاملا غیر منطقیه

۳:چرا تکنولوژی های کمی یادگرفتم؟

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

۴:چرا بجای اینکه در یک زمینه عمیق شم در چندین زمینه سطحی کار کردم؟

درسته!!شاید فکر کنید موضوع ۴ با موضوع ۳ در تناقضه اما اینجور نیست!!

این هم نکته ی قابل بحثیه دوستای زیادی دارم که توی مباحث(اندروید ,بازی سازی,هوش مصنوعی,طراحی سایت و …) به صورت سطحی کار کردن اما توی هیچکدوم عمیق نشدن باید حواستون باشه که تعادل رو رعایت کنید اینکه ۱۰ تا زبان برنامه نویسی بلد باشید اما توی هیچکدوم عمیق نشده باشین بدونید که کارتون داره اشتباه پیش میره بهتره با ۳ تا زبان اشنایی داشته باشید و توی دو زبان بصورت عمیق کار کنید یا توی زمینه ی برنامه نویسی سمت سرور عمیق کار کنید وبا لینوکس و برنامه نویسی فرانت – اند اشنایی داشته باشید اینطوری بهتر میتونید زمینه ای که بهش علاقه دارید رو پیدا کنید و اگر هم اون زمینه قدیمی شد بتونید به زمینه های دیگه مهاجرت کنید

۵:چرا توی پروژه های متن باز مشارکت نکردم؟

مشارکت کردن توی پروژه های بزرگ متن باز چیزیه که میتونه رزومه خیلی خوبی براتون درست کنه البته قبول دارم مشارکت کردن توی این پروژه ها کار ساده ای نیست و چیز های زیادی قبلش باید بدونید اما اگه میتونید توی این پروژه های مشارکت کنید حتما اینکارو بکنید چون رزومه خوبی براتون میشه و حتما بنفعتون میشه البته اگه میخواین شروع کنین و نمیدونین اینکارو از کجا شروع کنین جادی اینجا بخوبی راهنمایی کرده

۶:چرا بیشتر روی طراحی الگوریتم ها و ساختمان داده ها کار نکردم؟

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

۷: نیم نگاهی به design pattern ها هم داشته باشید:

از اول نباید نگران این باشید ولی وقتی حرفه ای تر شدین نگاه خوبی هم به این موضوع داشته باشید باعث میشه وقتی برای شرکتی مصاحبه کنید ندونستنشون باعث دردسر بشه!!

۸:حتما گیت رو یاد بگیرین!!

بنظرم گیت بشدت مهمهاگه بلد نیستین همین الان شروع کنید به یادگیریش منابع خوبی توی یوتیوب هست و البته به فارسی هم گوگل کنید نتایج خوبی رو میاره و البته بهتون میگه چی هست و به چه دردی میخوره

۹:ریاضیات رو جدی بگیرید!!

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

۱۰:فکر نکنید چون لینوکس رو (به صورت سطحی) بلدید خیلی خفنید!!

البته که بلد بودن لینوکس خوبه و من بارها بلد بودن لینوکس بنفعم بوده البته که برتری هایی میاره اما فکر نکنید با بلد بودن یا حتی نصب کردن لینوکس(مخصوصا نسخه اسم بد درفته کالی) خیلی هکر خفنی هستید یا کلا شاخید بقیه باید شاگردیتونو بکنن!!

۱۱:در اسرع وقت کار پیدا کنید!!

بله اگه زودتر کار پیدا نکنید(البته که منظورم کاراموزیه) به احتمال زیاد پشیمون میشید.کار هم باعث میشه چیز یاد بگیرید هم رزومه خوبی میشه برای کارای بعدی

۱۲:اگه میخواید برید خارج حتما معدل خوبی بیارید


امیدوارم توصیه های من رو بخونید و خوشتون بیاد اگه غلط املایی یا غلط انشایی دارم به بزرگی خودتون ببخشید و اگه نکته ای هست که اشتباه گفتم یا کم گذاشتم خیلی ممنون میشم بهم تذکر بدین حتی اگه این متن باعث بشه یک نفر هم راه درست رو بره و از گذشتش راضی باشه من به هدفم ازین متن رسیدم

نوشته پشیمانی های فارغ التحصیلان کامپیوتر اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

جنگو بهتر است یا لاراول ؛)

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

اگر سوال تون اینه که جنگو بهتره یا لاراول؟ این سوال مثل خیلی سوال‌های دیگه جوابی نداره بعضی وقتها این خوبه بعضی وقتها اون، اکثر مواقع هم خیلی فرقی نمی‌کنند و با هر دو میشه اکثر کارها رو انجام داد در واقع این شمایید که باید ببینید چه منابعی در اختیار دارید و می‌خواهید چه کاری انجام بدهید.

اما برای یاد گرفتن هردو به چندتا چیز احتیاج قطعی داریم:

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

مهارت دقیق بودن: با “دقت” پیغام‌های خطا را مطالعه کنید بخش بزرگی از مشکلات از جایی راه حلشون پیدا میشه که پیغام خطا ظاهر شده پس لطفا یکی دوبار قبل از اینکه از کسی سوالتون رو بپرسید به پیغام خطا نگاه کنید ببینید چرا این پیغام ظاهر شده یا گوگل کنید این پیغام در چه مواردی ظاهر میشه. به قول یک دوست برنامه نویسم (من چون طراح هستم دوستان برنامه نویس بسیار کمی دارم):

… مهم نیست چه ایرادی پیش اومده مهم اینه که چطوری باهش برخورد میکنی …

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

google: PostgreSQL
google: PostgreSQL features
google: PostgreSQL vs sqlite3
google: PostgreSQL compatibility with django
google: PostgreSQL limitations in django

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

من: یک حالت دیگر باقی میمونه که جواب شما در هیچ کدام از روش های فوق پیدا نشه. اینجا دیگه مثل یک کاوشگر سرزمین های ناشناخته باید تنهایی بنشینید و هی بگردید هی تست کنید و متروکه ترین گوشه های مستندات و راهنماهای برنامه مورد نظر رو بخونید بلکه کورسوی امیدی باشه و راهی پیدا بشه. جالب اینجاست که بعد از کمی که با مقدمات آشنا بشید اکثر مشکلات برنامه نویسی این مدلی حل می‌شوند. من اسمشون رو گذاشتم مشکلات ۲۴ ساعته یعنی هربار که برام پیش میاد تقریبا ۲۴ ساعت یا ۳ روز وقت مفید میگیره تا بالاخره بفهمم این مشکل از کجا دراومده. بسیار کار خسته کننده ایست ولی خوب اگر بخواهیم به نیمه پر لیوان نگاه کنیم بهترین روش یادگیری و بسیار آموزنده است. جواب سوال های سخت رو آخرش خودتون باید پیدا کنید.

البته خبر خوب اینکه کم کم دیگه داره از اون ۲۴ ساعت کم میشه ؛).

اما چند نکته در مورد یادگرفتن جنگو:

به نظرم به این ترتیب سراغ یادگرفتن جنگو با هدف توسعه وبسایت بروید البته ترتیب خیلی دقیقی نیست و ممکن است یکی را زودتر از دیگری یا همزمان با بعدی لازم داشته باشید:

  • آشنایی با پایتون در حد دانستن OOP
  • مطالعه تمرین اولیه جنگو در خود وبسایت جنگو
  • آشنایی با Bootstrap، java script، CSS، HTML مثلا از اینجا
  • مطالعه کتاب جنگو ۲ به کمک مثال (Django 2.0 by example ) از انتشارات Packt
  • مطالعه و رجوع به مستندات جنگو
  • انتخاب یک موضوع واقعی و طراحی و ساخت یک پروژه شخصی

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

در یوتیوب آموزشهای انگلیسی خوبی هست اما اکثرا با جنگو ۱٫۸ یا ۱٫۹ نوشته شده اند.

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

در ضمن می توانید با بخشی از جامعه داخلی جنگو مثلا در این گروه یا جامعه کاربران جهانی جنگو نیز در ارتباط باشید.

نوشته جنگو بهتر است یا لاراول ؛) اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

آرامبخش موقتی در یادگیری ماشین

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

در این مثال برای پیاده سازی مدل یادگیری روی مجموعه ای از داده ها از روش KNN استفاده کرده ام که یکی از پارامتر های مهم ورودی تعداد همسایه های نزدیک جهت بررسی است.

برای فهم دقیق Over fitting از مقادیر مختلف برای تعداد همسایه ها در یادگیری مدل استفاده شده است که مرحله به مرحله با مشاهده ی مراحل کد نویسی شاهد توضیحات هر قسمت از کد خواهید بود:

برای پیاده سازی مدل از زبان برنامه نویسی پایتون استفاده کردم

۱- فراخوانی پکیج های مورد نیاز:

برای انجام این پروژه از پکیج اصلی sklearn و چند پکیج دیگر استفاده شده است.

۲- گرفتن داده ها از data set:

برای این پروژه از یک data set آماده که نمایانگر احتمال ابتلای مردم هند به بیماری دیابت است، استفاده شده است که دارای ۸ ستون ویژگی های بررسی شده و یک ستون نتایج ، متشکل از اعداد ۰ و ۱ است.

۳- اصلاح داده ها:

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

۴- جداسازی داده ها:

در هر کدام از روش های یادگیری ماشین مجبور به تقسیم داده ها به دو قسمت یادگیری و تست هستیم.

۵- تشکیل حلقه نتایج:

در این قسمت با استفاده از حلقه for مدل را برای مقادیر مختلف همسایه های نزدیک به دست آورده و داخل یک آرایه ذخیره کردم تا برای نمایش روی نمودار از آنها استفاده کنم البته در هر مرحله یک بار روی داده های train و یک بار روی داده های test پیاده سازی کردم.

۶- رسم نمودار و نمایش نتایج:

نتیجه گیری:

همانطور که در نمودار بالا مشاهده می شود هر چقدر تعداد همسایه های نزدیک کمتر می شود صحت مدل برای داده های train بیشتر می شود چرا که مدل روی داده های fit ،train شده پس زمانیکه تعداد همسایه ها را برابر ۱ قرار می دهیم دقیقا داده مورد استفاده در پیاده سازی را یافته و صحت ۱۰۰% را به ما نشان می دهد و به همین روال با افزایش تعداد همسایه ها دقت تصمیم گیری کاهش می یابد.

و در ادامه مشاهده می کنید که در داده های test و هر داده اتفاقی دیگر نمودار سیر کلی برعکس را پیش می گیرد و در حالتی که تعداد همسایه ها به کمترین حالت خود رسیده صحت نتایج نیز به کمترین مقدار خود می رسد چراکه در این حالت یادگیری دچار Overfitting شده است و همانطور که مشاهده میشود بهترین حالت در n_neighbor=25 یا به صورت متعادل تر در n_neighbor=16 اتفاق میافتد

نوشته آرامبخش موقتی در یادگیری ماشین اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

استفاده از کلمات کلیدی به عنوان نام متغیر

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

اینجا میتونید کلمات کلیدی زبان سی شارپ رو ببینید!

فرض کنید میخواین یه برنامه بنویسین که یه خروجی از نوع جیسون بهتون میده، و خروجی جیسون به این شکل هست:

{"error":0,"short":"https://virgool.io"}

همینطور که میبینید ۲ تا ابجکت داریم به اسم های error و short، حالا شما میخواین مقدار این ۲ تا آبجکت رو بخونین برای اینکار باید به این شکل عمل کنین، اول پکیج نیوتون جیسون رو نصب کنین تا عملیات دسریالیز کردن رو براحتی انجام بدین، بعدش یه کلاس باید ایجاد کنین که دقیقا به همون اسمی که آبجکت ها هستن باشه!

public class VirgoolClass
        {
            public string error { get; set; }
            public string short { get; set; }
        }

اوه اوه صبر کنید!!! short یه کلمه رزرو شده هست و مثل اینکه نمیتونید ازش به عنوان اسم متغیر استفاده کنید! پس چیکار باید کرد؟ راه حلی که هست اینه که شما باید قبل از اسم متغیر( که یک کلمه رزرو شده هست) علامت @ رو قرار بدین اینطوری کامپایلر دیگه خطا نمیگیره پس:

public string @short { get; set; }

حالا کافیه عملیات دسریالیز رو به این صورت پیش برین:

 using (var wb = new WebClient())
            {
                var response = wb.DownloadString(URL);
                var root = JsonConvert.DeserializeObject(response);
                Return [email protected];
            }

قطعا توی زبان های دیگه هم باید روش هایی برای دور زدن کلمات کلیدی وجود داشته باشه اگر با این روش ها آشنایی دارین مارو هم در جریان بزارین (:

نوشته استفاده از کلمات کلیدی به عنوان نام متغیر اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

HTML چیست و چه کاربردی دارد؟

اگر کمی با دنیای طراحی وب یا برنامه نویسی وب آشنایی داشته باشید، حتما واژه‌ی HTML به گوشتان خورده است و این سوال برایتان پیش آمده است که HTML چیست . در این فایل و مقاله آموزشی میخواهیم بصورت کامل به پاسخ به این سوال بپردازیم که HTML چیست ، چه کاربردی در طراحی وب دارد؟ چطور کار میکند؟ رابطه‌ی آن با CSS چیست و… . هر آن چیزی که برای پاسخ به سوال HTML چیست نیاز دارید را در این مقاله و آموزش به آن پاسخ خواهیم داد.

HTML چیست

برای رسیدن به پاسخ سوال HTML چیست میتوانید فیلم زیر را مشاهده کنید که بسیار مفید خواهد بود

https://www.aparat.com/v/ul76e

یک معرفی کلی

برای پاسخ به سوال HTML چیست باید یک آشنایی نسبی و ابتدایی با آن داشته باشیم. HTML مخفف عبارت Hyper Text Markup Language هست.

اگر بخواهیم یک ترجمه‌ی فارسی از HTML داشته باشیم، میتوانیم به آن «زبان نشانه گذاری فرا متن» بگوییم. البته که این ترجمه، نمیتواند کارایی HTML را به خوبی توضیح دهد به سوال HTML چیست پاسخ خوبی دهد! در ادامه بیشتر با HTML آشنا خواهیم شد.

اگر میخواهید خیلی بیشتر درباره‌ی تاریخچه‌ی اچ تی ام ال (HTML) را مطالعه کنید، ویکی پدیا در خدمت شماست.

کاربرد اصلی HTML

اگر بخواهیم به سوال HTML چیست پاسخ دهیم، باید کاربرد اصلی HTML را بررسی کنیم. در این قسمت میخواهیم یاد بگیریم که HTML چیست و دقیقا چه کاری انجام میدهد.

اگر بخواهیم خیلی ساده به سوال HTML چیست پاسخ دهیم، میتوانیم بگوییم:

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

اگر کمی با طراحی وب آشنایی داشته باشید،‌ حتما میدانید که طراحی وب ۲ مرحله اصلی دارد:

  1. ساختاربندی اصلی صفحات وب که با HTML انجام میشود.
  2. اضافه کردن جذابیت های ظاهری مثل رنگ و… که با CSS انجام میشود.

یک ساختمان را تصور کنید

اگر میخواهید خیلی خوب با HTML آشنا شوید و دقیقا درک کنید که HTML چیست ، یکی از بهترین مثال‌های آن، مثال یک ساختمان است که میخواهیم آن‌را در این قسمت بررسی کنیم.

یک ساختمان را تصور کنید که شخصی میخواهد اقدام به ساخت آن کند، برای مثال یک مجتمع مسکونی!

از آن‌جایی که فرایند طراحی وب،‌ بسیار شبیه به فرایند ساختمان سازی است،‌ کار ما برای پاسخ به سوال HTML چیست بسیار راحت میشود.

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

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

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

یا مثلا یک انسان را تصور کنید

اگر بخواهیم دقیق تر به سوال HTML چیست پاسخ دهیم، میتوانیم HTML را با بدن یک انسان مقایسه کنیم.

اگر بدن یک انسان را به یک صفحه‌ی وب تشبیه کنیم:

  • ابتدا بدن انسان با استفاده از استخوان ها، اسکلت بندی میشود و ساختار کلی آن مشخص میشود.
  • سپس با استفاده از کدهایی مثل CSS، میتوان به آن جذابیت های ظاهری بخشید (همانطور که کیفیت کدهای CSS یک صفحه‌ی وب متفاوت است،‌ کیفیت کدهای CSS دو انسان هم میتواند متفاوت باشد 🙂 )

تگ (tag) چیست؟

شاید در حین کار با HTML به چیزهایی به نام «تگ یا tag» برخورد کرده اید و برایتان سوال پیش آمده است که تگ ها چه چیزهایی هستند.

در پاسخ به سوال HTML چیست باید بگوییم HTML با استفاده از تگ ها قدرت گرفته است. در واقع هرکاری که HTML انجام میدهد، از طریق تگ ها انجام میدهد و این تگ ها هستند که به HTML قدرت میدهند.

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

درباره تگ ها در HTML در آینده در یادیفای بصورت بسیار کامل صحبت خواهیم کرد.

رابطه‌ی HTML و CSS

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

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

روش اجرای فایل های HTML

فایل های HTML برای اجرا شدن به هیچ تکنولوژی خاصی نیاز ندارد. شما برای اجرای فایل های HTML فقط نیاز به یک مرورگر دارید که از HTML پشتیانی کند و تمام مرورگرها این کار را برای شما انجام میدهند!

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

چرا HTML یک زبان برنامه نویسی نیست؟

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

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

HTML5 چیست و چه تفاوتی با HTML دارد؟

در ادامه‌ی پاسخ به سوال HTML چیست ، میخواهیم کمی درباره‌ی HTML5 صحبت کنیم.

HTML5 آخرین نسخه از HTML است که طراحی وب را برای طراحان وب بسیار ساده تر و جذاب تر کرده است و چندین ویژگی بسیار جدید و جالب دارد. اگر میخواهید یک طراح وب حرفه‌ای باشید، حتما باید از HTML5 استفاده کنید و به آن مسلط باشید.

در مقاله‌ی بعدی در یادیفای، بصورت کامل به معرفی HTML5 میپردازیم و خیلی جزئی بررسی میکنیم که چرا HTML5 میتواند فوق العاده باشد!

منبع: یادیفای

نوشته HTML چیست و چه کاربردی دارد؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

تفاوت ID و Class در طراحی وب (راهنمای کامل ویدئویی)

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

تفاوت id و class

برای اینکه تفاوت id و class را به خوبی درک کنید، پیشنهاد میکنیم که حتما فیلم آموزشی زیر را مشاهده کنید. حتما برای‌تان مفید خواهد بود.

https://www.aparat.com/v/u7ftM

id چیست؟

حتما در طراحی وب، اسم ایدی ها را شنیده اید. id ها یکی از اتریبیوت‌ ‌هایی (attribute) هستند که میتوانیم در تگ ها از آن‌ها استفاده کنیم. حتما دیده‌اید برای مثال زما‌ن‌هایی را که طراحان وب‌، برای یک تگ از id ها استفاده میکنند. کاربرد id ها این است که قسمت های مختلف صفحه وب را مشخص میکنند و شما میتوانید با مشخص کردن یک id برای یک تگ، در آینده با استفاده از css به آن تگ استایل دهید.

برای مثال کد زیر را نگاه کنید:

< div id="myId">This is my div

در این تکه از کد، ما به تگ div یک ایدی با نام myId داده‌ایم. حالا اگر بخواهیم با استفاده css به این تگ استایل دهیم، به این شکل میتوانیم اقدام کنیم:

#myId{
	color: green;
}

برای استایل دهی به id ها از طریق css، باید قبل از نام آن‌ها یک علامت # قرار دهیم و سپس نام آن ایدی را بنویسیم و سپس استایل های موردنظرمان را به آن ها اضافه کنیم. برای مثال در بالا رنگ سبز را برای المانی با ایدی myId مشخص کرده‌ایم.

کاربرد id در طراحی وب

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

یکی از مهم ترین نکاتی که در استفاده از id ها باید رعایت کنید, این است که تنها و تنها باید یکبار از انها در صفحه ی وب استفاده کنید.

فرض کنید که میخواهید بخش های مختلف صفحه وب را مشخص کنید. مثلا مشخص کنید که header کجاست, footer کجاست, منو کجاست و… یکی از بهترین راه ها این است که از id ها استفاده کنید.

نکته ی مهم درباره ی id ها این است که ایدی ها منحصر به فرد هستند:

  • هر المان فقط میتواند یک id داشته باشد.
  • هر صفحه‌ی وب فقط میتواند یک المان با آن ایدی داشته باشد.

class چیست؟

کلاس ها در html و css برای استایل دهی به صفحات وب به کار برده میشوند. بری استفاده از کلاس ها, به شکل زیر میتوانید عمل کنید:

< div class="myClass">This is a class

در این تکه از کد، ما به تگ div یک class با نام myClass داده‌ایم. حالا اگر بخواهیم با استفاده css به این تگ استایل دهیم، به این شکل میتوانیم اقدام کنیم:

.myClass{
	color: blue;
}

برای استایل دهی به class ها از طریق css، باید قبل از نام آن‌ها یک علامت . (نقطه) قرار دهیم و سپس نام آن کلاس را بنویسیم و سپس استایل های موردنظرمان را به آن ها اضافه کنیم. برای مثال در بالا رنگ آبی را برای المانی با کلاس myClass مشخص کرده‌ایم.

تفاوت id و class در چیست

همانطور که گفتیم, از ایدی ها برای مشخص کردن قسمت های مختلف صفحه وب مثل هدر, فوتر, منو و…استفاده میکنیم. و کلاس ها را برای استایل دهی و نشانه گذاری تگ ها.

نکته ی بسیار مهم در استفاده از id ها و class ها این است:

ID ها منحصر به فرد هستند

  • هر المان فقط میتواند یک id داشته باشد.
  • هر صفحه‌ی وب فقط میتواند یک المان با آن ایدی داشته باشد.

برای مثال اگر برای منوی کناری خودتان از کد <“div id=”sidebar>  استفاده کنید دیگر نمتوانید در جایی دیگر این id را به کار بگیرید و اینجا تنها جایی است که شما باید از “id=”sidebar استفاده کنید.

CLass ها منحصر به فرد نیستند

  • شما میتوانید یک class را روی چندین المان استفاده کنید.
  • شما میتوانید چندین class را برای یک المان تعیین کنید.

در این مقاله بصورت کامل درباره ی تفاوت id و class صحبت کردیم. امیدواریم با استفاده از این آموزش, تفاوت id و class به خوبی برای شما روشن شده باشد.

منبع: یادیفای

نوشته تفاوت ID و Class در طراحی وب (راهنمای کامل ویدئویی) اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟

در مقالات قبلی درباره برنامه نویسی، طراحی وب، برنامه نویسی وب و مفاهیم مختلف صحبت کردیم و به سوالات بسیاری پاسخ دادیم. در این مقاله و فایل ویدئویی میخواهیم درباره‌ی فول استک یا Full Stack صحبت کنیم و یاد بگیریم که Full Stack چیست . در این مقاله با من همراه باشید.

Full Stack چیست

اگر به دنبال یک پاسخ خیلی ساده ولی کاربردی برای سوال Full Stack چیست هستید، فیلم زیر را مشاهده کنید

https://www.aparat.com/v/yqi3X

مقدمه

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

Front End چیست و به چه کسی برنامه نویس فرانت اند میگویند؟

Back End چیست و به چه کسی برنامه نویس بک اند میگویند؟

بعد از مطالعه و مشاهده‌ی مطالب بالا، حالا میتوانید ادامه‌ی این مطلب را مطالعه بفرمایید.

همه چیز درباره برنامه نویس فول استک یا Full Stack Developer

همانطور که گفتیم، در دنیای طراحی سایت،‌ گروهی از افراد هستند که چیزهایی که کاربر میبیند را طراحی و کدنویسی میکنند و گروهی دیگر هستند که روی پشت صحنه (Back End) متمرکز میشوند و کدهای سمت سرور را مینویسند.

اما یک گروه دیگر نیز از برنامه نویسان سمت وب وجود دارد که مارا به پاسخ سوال Full Stack چیست می‌رساند:

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

عبارت بالا شاید بتواند یک تعریف خیلی ساده برای برنامه نویس Full Stack باشد. برنامه نویس فول استک، همانطور که از واژه‌ی Full پیداست، همه مهارت‌های لازم برای انجام یک پروژه را دارد. به این معنا که:

یک برنامه نویس فول استک، هم میتواند ظاهرهای بسیار خوبی را برای سرویس های آنلاین طراحی کند و هم میتواند برنامه نویس سمت سرور خوبی باشد.

یک مثال برای جواب دادن به سوال Full Stack چیست

همانطور که در مقالات دیگر مثال‌های متعددی زدیم، وقتی میخوایم یک سرویس آنلاین را طراحی و برنامه نویسی کنیم، حداقل به ۲ فرد نیاز داریم:

  • یک شخص که بتواند ظاهر سایت را با تکنولوژی هایی مثل HTML, CSS, Javascript و… طراحی کند.
  • و شخص دومی که بتواند کدهای بک اند و سمت سرور را با زبانی مثل PHP بنویسد و به پایگاه داده (دیتابیس) متصل شود و اطلاعات را از دیتابیس بخواند و اطلاعات جدید را وارد آن کند.

همانطور که گفتیم، هرکدام از این افراد، یک تخصص دارند و برای ساخت یک سایت، به ۲ فرد نیاز داریم.

اما در دنیای طراحی و برنامه نویسی وب اشخاصی هستند که به دلیل تجربه بالا در هرکدام از قسمت‌های Front End و Back End، میتوانند هر دو بخش ظاهر و سرور یک وبسایت را طراحی و برنامه نویسی کنند. برنامه نویسان Full Stack کسانی هستند که به تنهایی برای ساخت یک سرویس آنلاین خوب، کافی هستند و میتوانند یک نفره یک پروژه‌ی تقریبا بزرگ را مدیریت کنند.

آیا واقعا میتوان یک برنامه نویس فول استک واقعی بود؟

اما در پاسخ به سوال Full Stack چیست باید حواسمان به این نکته باشد که اگر مثلا ما میتوانیم هم با HTML-CSS کد بزنیم و هم PHP میدانیم، به این معنا نیست که از الان میتوانیم به خودمان یک Full Stack بگوییم.

یک برنامه نویس Full Stack شخصی است که مدت زیادی درگیر طراحی وب بوده است و بعد از آن نیز مدت زیادی خود را درگیر برنامه نویسی وب با یک زبان برنامه نویسی سمت سرور کرده است و به تمام پیچ و خم ها و نکات هر ۲ دنیای طراحی سایت واقف است.

معمولی کسی میتواند یک برنامه نویس Full Stack باشد که چندین سال سابقه‌ی کار در هر ۲ زمینه‌ی طراحی وب و برنامه نویسی وب را داشته باشد و به این راحتی‌ها نمیتوان در همان چند ماه ابتدای برنامه نویس بودمان، به خودمان یک Full Stack Developer بگوییم.

علاوه بر این، در پاسخ به سوال Full Stack چیست ، باید حواسمان به این نکته هم باشد:

یک برنامه نویس Full Stack علاوه از تسلط بر طراحی و برنامه نویسی وب، باید بتواند یک پیدا کننده‌ی مشکل حرفه‌ای (Debuger) باشد. همچنین باید توانایی بسیار خوبی در مدیریت سرور داشته باشد و همچنین از مدیریت پروژه نیز اندکی بداند. صرفا دانستن HTML,CSS,PHP, MySQL نمیتواند شما را یک برنامه نویس Full Stack کند!

در انتهای این مقاله‌ درباره مهارت های یک Full Stack Developer بیشتر صحبت خواهیم کرد.

آیا Full Stack Developer ها همه کارِ و هیچ کارِ هستند؟

تا الان به یک پاسخ خوبی درباره‌ی سوال Full Stack چیست رسیدیم. اما الان ممکن است این سوال برایتان پیش بیاید:

آیا میتوان هم طراحی وب را انجام داد و هم به برنامه نویسی آن مسلط شد و در کنار آن کلی مهارت دیگر مثل کار و مدیریت سرور، مدیریت پروژه و… را نیز دارا بود؟

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

در خصوص پاسخ به این سوال، باید چند نکته را بررسی کنیم:

Full Stack کارها با تجربه هستند

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

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

پس به راحتی و صرفا به دلیل دانستن HTML, CSS, Javascript, PHP, MySQL و… نمیتوانید به خودتان یک برنامه نویس فول استک بگویید. ماجرا خیلی پیچیده تر از این حرف‌هاست

اما نهایتا …

در پاسخ به سوال Full Stack چیست ، باید این را بپذیریم که نهایتا هر فرد، بالاخره در یکی از زمینه‌های طراحی وب یا برنامه نویسی وب، قوی تر از آن یکی است.

من دوستان برنامه نویس Full Stack زیادی دارم و با برنامه نویسان Full Stack بسیار زیادی نیز همکاری داشته ام. اما آن‌ها نهایتا در یکی از زمینه‌ها قوی تر بوده‌اند. به این معنا که:

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

یعنی هرچقدر فرد هم یک Full Stack Developer باشد،‌ باز هم در یکی از زمینه‌های طراحی وب یا برنامه نویسی وب قوی تر است و یکی از نیم کره‌های مغز او بهتر کار میکند. برای مثال ممکن است یک فرد یک برنامه نویس Full Stack باشد و هم طراحی وب فوق العاده ای انجام دهد و هم برنامه نویس سمت سرور بسیار خوبی باشد، اما نهایتا خود آن فرد هم میداند که در یکی از این زمینه‌ها حرفه‌ای تر و بهتر است.

مهارت‌های یک برنامه نویس فول استک (Full Stack)

در پاسخ به سوال Full Stack چیست‌ ، خیلی خوب است که بدانیم یک برنامه نویس فول استک، چه مهارت‌هایی باید داشته باشد. در ادامه‌ یک لیست بسیار ساده را میبینیم که یک برنامه نویس Full Stack باید به آن‌ها تسلط کامل داشته باشد و نیز تجربه‌ی بسیار خوبی در کار با هرکدام از آن‌ها داشته باشد تا بتواند یک Full Stack Developer واقعی باشد.

  • طراحی وب
  • طراحی رابط کاربری
  • برنامه نویسی وب
  • کار با پایگاه داده
  • هاست و سرور
  • توانایی کار با API ها
  • آشنایی با Version Controll System ها
  • توانایی مدیریت پروژه‌های نرم افزاری

در این مقاله و فایل ویدئویی سعی کردیم به سوال Full Stack چیست پاسخ دهیم. نظر شما چیست؟ طراح وب بودن بهتر است؟ یا برنامه نویس بودن؟ یا تبدیل شدن به یک Full Stack Developer؟ کدام یک آسان تر است؟

منبع: یادیفای

نوشته Full Stack چیست و به چه کسی برنامه نویس فول استک میگویند؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

Back End چیست و به چه کسی برنامه نویس بک اند میگویند؟

در مقاله ای دیگر در یادیفای درباره‌ی Front End و یا طراحی سمت وب صحبت کردیم. در این مقاله میخواهیم درباره برنامه نویسی سمت وب، یا برنامه نویسی بک اند یا Back End Development صحبت کنیم و تمام آن چیزی که نیاز دارید را بررسی کنیم. این مقاله و فایل آموزشی میتواند به سوال Back End چیست پاسخ دهد و شما را برای تبدیل شدن به یک برنامه نویس وب (یا برنامه نویس سمت وب یا برنامه نویس Server Side) آماده کند.

https://www.aparat.com/v/yTC1G

Back End چیست

اگر بخواهیم به سوال Back End چیست پاسخ دهیم، در مرحله‌ی اول خیلی خوب است که به دنبال معنی واژه‌ی Back در دیکشنری باشیم. در فست دیک، واژه‌ی Back اینگونه معنا شده است:

Back: عقب، پشت (بدن)، پس، عقبی، گذشته، پشتی، پشتی کنندگان، تکیه گاه، به عقب، درعقب، برگشت (و…)

همانطور که میبینید، یکی از اصلی ترین معانی واژه‌ی Back، پشت می‌باشد. و دقیقا این معنی با کاری که برنامه نویسی اند میکند ارتباط دارد.

وقتی از برنامه نویسی بک اند صحبت میکنیم، منظورمان تمام آن کارهایی است که در پشت صحنه انجام میشود و کاربر آن‌ها را نمیبیند.

ما در تعریف طراحی/برنامه نویسی فراند اند گفتیم:

طراحی یا کدنویسی هر آن چیزی که مربوط به جلوی وبسایت میشود. در واقع یک طراح وب یا یک Front End Developer، کسی است که چیزی را طراحی میکند کاربر آنرا میبیند.

اما برنامه نویسی بک اند (Back End)،‌ دقیقا آن سوی ماجرا قرار دارد. اگر بخواهیم به سوال Back End چیست خیلی ساده پاسخ دهیم، میتوانیم بگوییم:

برنامه نویسی بک اند (Back End) مربوط به کدنویسی و برنامه نویسی هر آن چیزی است که کاربر آن را مشاهده نمیکند و مربوط به کارهای پشت صحنه وب سایت است. برای مثال وقتی که یک وبسایت، مقالات را از دیتابیس دریافت میکند، یک امر مربوط به بک اند است. وظیفه‌ی یک برنامه نویس بک اند، برنامه نویسی چیزهایی است که هسته اصلی یک وبسایت هستند و کاربر کدهای آن‌را بصورت مستقیم مشاهده نمیکند.

مقایسه با فرانت اند

یک نکته‌ی خیلی جالب در تفاوت برنامه نویسی فرانت اند (Front End) و برنامه نویسی بک اند (Back End) وجود دارد. و آن هم نمایان بودن یا نبودن کدهای آن برای کاربران سایت شماست.

وقتی که شما در حال طراحی وب با تکنولوژی هایی مثل HTML, CSS, Javascript و… هستید، تمام کدهایی که نوشتید را کاربر میتواند به راحتی ببیند. زیرا آن کدها مربوط به کاربر هستند و به آن‌ها دسترسی مستقیم دارد.

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

برای اطلاعات بیشتر و درک بهتر سوالBack End چیست پیشنهاد میکنیم این مقاله را حتما مطالعه کنید: Front End چیست و به چه کسی برنامه نویس فرانت اند میگویند؟

Server Side و Client Side به چه معنا هستند.

در آینده حتما در خصوص تفاوت Server Side و Client Side بیشتر صحبت خواهیم کرد. اما برای اینکه بتوانیم به سوال Back End چیست بهتر پاسخ دهیم، خیلی خوب است که این دو مفهوم را کمی توضیح دهیم.

اما اگر بخواهیم خیلی ساده این دو مفهوم را معرفی کنیم، اینگونه میتوانیم بگوییم:

Client Side

از آن‌جایی که Client به معنای مشتری است، Client Side هم به معنی زبان‌هایی است که سمت کاربر کار میکنند. برای مثال میتوان به HTML, CSS, Javascript و… زبان‌های سمت کاربر و Client Side نیز بگوییم. و به مجموع کاری که این زبان‌ها انجام میدهند، طراحی وب یا Front End Development میگوییم.

Server Side

همانطور که از اسم این عبارت پیداست، زبان‌هایی که در این دسته بندی قرار میگیرند، روی سرور اجرا میشوند و برای اجرا شدن به یک سرور نیاز دارند. برای مثال زبان‌هایی مثل PHP یا ASP.NET برای اجرا حتما به یک سرور نیاز دارند،‌ که این سرور هم میتواند یک سرور واقعی در دنیای آنلاین باشد و هم یک شبیه ساز سرور یا لوکال هاست (Localhost). به زبان‌های برنامه نویسی‌ای که سمت سرور اجرا میشوند، زبان‌های Server Side و به مجموع کاری که این زبان‌ها انجام میدهند، برنامه نویسی بک اند یا Back End Development میگویند

همان مثال تئاتر

در مطلبی که به سوال Front End چیست پاسخ دادیم، گفتیم که طراحی وب و برنامه نویسی وب را میتوانیم به یک سالن تئاتر تشبیه کنیم. حالا دوباره همان مثال را میزنیم که پاسخ سوال Back End چیست برایمان واضح تر شود

تمام آن‌ کسانی که در صحنه فعالیت میکنند و نقش آفرینی میکنند و تماشاچیان آن‌ها را میبینند را میتوانیم بگوییم Front End  یک اجرای تئاتر.

و تمام کسانی که در پشت صحنه فعالیت میکنند، مثل طراح لباس، کارگردان، نویسنده، تهیه کننده و… که تماشاچیان آن‌ها را نمیبینند، ولی در پشت صحنه کار میکنند و کارشان روی اجرا تاثیر دارد را میتوانیم Back End یک اجرای تئاتر بنامیم.

در وب هم دقیقا به همین صورت است. تمام آن چیزی که کاربر در صفحه مانیتور خود میبیند مربوط به Front End میشود، و تمام آن چیزی که در پشت صحنه اجرا میشود، مربوط به Back End میشود.

مهارت‌های یک برنامه نویس Back End چیست

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

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

برای برنامه نویسی سمت سرور یا برنامه نویسی بک اند، اولین چیزی که نیاز دارید، یک زبان برنامه نویسی‌ای است که سمت سرور اجرا شود. برای مثال زبانی مثل PHP یک زبان برنامه نویسی Back End است که باید روی سرور اجرا شود. پر در اولین قدم شما به یک زبان برنامه نویسی نیاز دارید.

پایگاه داده

دومین چیزی که حتما و قطعا به آن نیاز دارید، پیدا کردن تسلط به یک دیتابیس (Database) یا پایگاه داده است.

میتوان گفت که اصلی ترین کار زبان های برنامه نویسی سمت سرور، توانایی ارتباط برقرار کردن آن‌ها با دیتابیس است.

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

مباحث پیشرفته زبان برنامه نویسی

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

برای مثال در برنامه نویسی PHP،‌ شما اگر بتوانید کدتان را به شیوه‌ی شی گرایی (Object Oriented) بنویسید، کد شما میتواند خیلی تمیزتر، سریع‌تر و حرفه‌ای تر باشد.

توانایی حل مسئله

وقتی در خصوص برنامه نویسی سمت سرور یا Back End  صحبت میکنیم، یکی از چیزهایی که برای شما ضروری است،‌توانایی حل مسئله و داشتن یک ذهن تحلیل‌گر است.

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

خبر خوب این است که این ذهن تحلیلگر،‌ ارثی نیست و میتوان آن‌را بدست آورد!

در آینده حتما در خصوص توانایی حل مسئله صحبت خواهیم کرد.

سوال پرسیدن

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

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

در این مقاله بصورت کامل سعی کردیم به سوال Back End چیست پاسخ دهیم و تمام آن چیزی که نیاز دارید را در اختیارتان قرار دهیم.

نظر شما چیست؟ به نظر شما برای تبدیل شدن به یک برنامه نویس وب خوب،‌ به چه مهارت‌هایی نیاز داریم؟

منبع: یادیفای

نوشته Back End چیست و به چه کسی برنامه نویس بک اند میگویند؟ اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی