بازار کار زبان برنامه نویسی سی شارپ

۱۶ بازديد


بازار کار برنامه نویسی سی شارپ

وضعیت بازار کار برنامه نویسی سی شارپ در ایران و خارج کشور به شدت فرق میکند. در خارج کشور معمولا بازار کار اکثر زبان ها خوب است و میتوان کار پیدا کرد اما در ایران واقعا اینطور نیست. مثلا کسی که زبان برنامه نویسی روبی مسلط هستش شاید در ایران به سختی بتواند کار پیدا کند.
در حال حاضر بازار کار برنامه نویسی ایران ختم به چند زبان برنامه نویسی خاص و تکنولوژی می شود. مثل سی شارپ، php، تکنولوژی ASP.Net، تکنولوژی زامارین، اندروید استودیو، لاروال و … .
بقیه زبان های برنامه نویسی رو میتوان گفت بازار کار خاصی در ایران ندارد. مثلا همین برنامه نونیسی پایتون واقعا یک برنامه نویس فوق العاده و عالی است اما متاسفانه فعلا در ایران بازار کار آنچنانی ندارد و میتوان گفت سخت می شود برای آن کار پیدا کرد. مگر اینکه به صورت آزاد کار یا فریلنسری کار پیدا کنید.
حال بریم به سراغ بازار کار برنامه نویسی سی شارپ، چون بحث اصلی ما هم همینه، اگر میخواهید برای ویندوز برنامه بنویسید با جرات تمام میگم که تنها زبان برنامه نویسی که در ایران بازار کار دارد برنامه نویسی سی شارپ است و میتوان گفت 80 90 درصد این پروژه ها در دست زبان سی شارپ است. پس نرم افزارهای تحت ویندوز تمام بازارکارشون دست زبان سی شارپ است.
حال بیاید بازار کار برنامه نویسی سی شارپ در حوزه وب را مورد بررسی قرار دهیم. معمولا کسی که سی شارپ کار میکند برای وب کار کردن راه سختی را ندارد چون کافیه به سمت ASP.Net تحت سی شارپ برود و به راحتی هر سایتی رو دوست داشت بنویسد. اگر بخواهیم در مورد بازار کار ASP.Net صحبت کنیم باید همین نکته رو گفت از 100 سایت برتر ایران بیش از 50 سایت با ASP.Net تحت سی شارپ برنامه نویسی شده است. پس میتوان گفت بازار کار فوق العاده در این بخش برای سی شارپ وجود دارد. اگر بخواهم از این سایت ها نام ببرم میتوانم به سایت های: ورزش سه، بانک ملی، بانک ملت، دیجی کالا، بلاگفا، نی نی سایت، جام نیوز، تبیان، رویال مایند و … که با تکنولوژی ASP.Net تحت سی شارپ نوشته شده اند.

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

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

نیازی به گفتن نیست که برای استخدام در شرکت‌های ایرانی به عنوان یک توسعه‌دهنده، به طور حتم باید به زبان C# تسلط داشته باشید. اما این تنها شروع کار است. به عبارت دیگر یک توسعه دهنده علاوه بر آشنایی به زبان برنامه نویسی باید اطلاعات زیادی داشته و خود را با آن محدود نکند.
مهارت‌های دیگری که یک توسعه‌دهنده سی شارپ باید به آنها آشنایی داشته باشد عبارتند از تسلط به SQL Server، آشنایی به نحوه پیاده سازی الگوریتم‌های محاسباتی، آشنایی با پروتکل‌های شبکه، آشنایی با تکنولوژی‌های وب و ASP.NET، مسلط به برنامه نویسی به روش SOCKET، تسلط به Java script، CSS و Jquery و در نهایت یک رزومه کاری قابل قبول.

با زبان های برنامه نویسی کلاس پایین آشنایی دارید؟

۱۲ بازديد



قبل از اینکه شروع به برنامه نویسی کنید باید با دسته بندی کلی زبان های برنامه نویسی آشنایی داشته باشید.
یکی از دسته بندی ها زبان های برنامه نویسی سطح پایین می باشد.
حالا به نظر شما زبان های سطح پایین چیه و کدام زبان ها در دسته ی سطح پایین قرار می گیرند؟
در ادامه کامل درموردش صحبت می کنیم

-کار کردن با زبان های سطح پایین کارسختیه؟
زبان های برنامه نویسی سطح پایین به طور مستقیم با پردازنده ی سیستم ارتباط دارد و با استفاده کردن از آنها دستورات پایه ای برنامه نویسی را اجرا می کنند ,فهمیدن دستورات این زبان ها کار سختی می باشد.
زبان های سطح پایین زبان هایی هستند که خیلی به زبان کامپیوتر نزدیک می باشند.

-زبان های کلاس پایین به دونسل تقسیم می شوند:
1.اولین نسل(زبان ماشین)
2.دومین(زبان اسمبلی)


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

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


-کدام زبان برنامه نویسی سریع تر است؟
مسلما زبان ماشین سریع تر می باشد به دلیل اینکه زبان مادری کامپیوتر هاست و نیازی به نرم افزار واسطی ندارد.


در دنیای برنامه نویسی، توسعه دهنگان چند دسته اند؟

۱۴ بازديد

انواع توسعه دهنده گان

توسعه دهندگان
Front-end

 توسعه نرم‌افزار front-end، بخشی از برنامه نرم‌افزاری است که شما می‌بینید و با آن تعامل دارید.

توسعه دهندگان فرانت-اند نیاز به یک خلاقیت بصری و ایده پردازی دارند تا بتوانند تجربه کاربری خوبی برای کاربر ایجاد کنند .

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

توسعه‌دهندگان Back-end

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

توسعه‌دهندگان full-stack

به یک توسعه‌دهنده نرم‌افزاری که مهارت‌های توسعه front-end و back-end را باهم داشته باشد، توسعه‌دهنده full-stack می‌گویند. 

توسعه‌دهندگان دسکتاپ

توسعه‌دهندگان دسکتاپ، نرم‌افزارهای کاربردی را برای دسکتاپ و سیستم‌های دیگر مثل ویندوز، macOS ، Linux یا BSD توسعه می‌دهند. در واقع نوشتن کد تمام برنامه های کاربردی که توی کامپیوتر ها میتوان نصب و اجرا شود را شامل می شود. مانند نرم افزارهای انبار داری، حسابداری، اتوماسیون های اداری و امثال این ها…

توسعه‌دهندگان وب

توسعه‌دهندگان وب، توسعه‌دهندگان نرم‌افزاری هستند که در توسعه وب تخصص دارند. درحالی‌که دانش CSS و HTML هنوز هم مورد تقاضا است، توسعه‌دهندگان وب باید درزمینهٔ JavaScript، PHP، پایگاه‌های داده، طراحی وب، طراحی بر اساس تجربه کاربر و بهینه‌سازی موتور جستجو، مهارت داشته باشند. 

توسعه‌دهندگان موبایل

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

 

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

۲۰ بازديد
برنامه نویسی شی گرا


برنامه نویسی شی گرا

در اوایل دهه ۱۹۷۰ توسط آلن کی (Alan Kay) طراحی شده یعنی اولین قدمهای این سبک برنامه نویسی توسط آلن کی برداشته شده است. اولین زبان شی گرا توسط آلن کی طراحی شد. اسم این زبان Small Talk می باشد، آلن کی گفته بود: آن چیزی که باعث شد این فکر به ذهنم برسد نحوه عملکرد سلولهای زیست محیطی بود. یعنی این سبک برنامه نویسی از روی سلولهای جاندارها الگو برداری شده است
همه چیز در مورد اشیا است. همانطور که اشیا در دنیای واقعی رفتار میکنند، در دنیای نرم افزار هم همینطور است. اشیا در یک برنامه تقریبا همه کار را انجام میدهد. به عنوان مثال ماشین ها شتاب میگیرند یا انسان ها راه میروند(انسان هم می تواند یک شی باشد) یا هواپیماها پرواز میکنند و ماهی ها شنا میکنند. به طور مشابه ما در نرم افزار نیز اشیایی میسازیم که رفتاری خاص را انجام میدهند. و ما از آن برنامه انتظار داریم که رفتارهای اشیا را انجام دهند(راه رفتن، پرواز کردن …). پس زمانی که نرم افزار ما اجرا میشود اشیا ما به وجود می آیند.

مثال شی گرایی در سی شارپ

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


مفاهیم اساسی در برنامه نویسی شئ گرا

سطح دسترسی (Access Modifiers)
سطوح دسترسی کلمات رزرو شده ای هستند که بر روی اعلان یک کلاس ، متد ، صفت ، فیلد و دیگر اعضای یک کلاس میتوانند اعمال شوند.
کلمات رزرو شده برای سطوح دسترسی در زبان سی شارپ به صورت زیر است:
• public
• private
• protected
• internal


آشنایی با مفاهیم اصلی زبان برنامه‌نویسی شی گرا

1.انتزاع(Abstraction)
انتزاع به فرآیندی گفته می‌شود که در زمان بررسی یک شی، تنها خصوصیت و رفتارهایی باید در تعریف آن شی لحاظ شوند که در سیستم مستقیما کاربرد دارند. در واقع انتزاع یا Abstraction مثل یک فیلتر عمل می‌کند که تنها ویژگی‌ها یا خصوصیات و رفتارهایی که در برنامه مورد استفاده است را از آن عبور می‌دهد.

2.کسپوله سازی(Encapsulation)
کپسوله سازی به معنی پنهان کردن فرآیند اصلی اجرای یک برنامه‌ از دید کاربران است. که این اتفاق درون یک شی رخ می‌دهد.

3.ارث‌ بری(Inheritance)
وراثت یکی از اصلی‌ترین مفاهیم موجود در برنامه‌نویسی شی گرا است. همانطور که از نام آن مشخص است وقتی یک فرزند متولد می‌شود قطعا خصوصیات و رفتارهایی را از والدین خود به ارث می‌برد. در دنیای برنامه‌نویسی هم به همین صورت است.
وقتی یک کلاس از کلاس دیگری ارث‌ بری می‌کند یعنی به خصوصیات و رفتارهای کلاس والد دسترسی دارد. این کار باعث می‌شود تا حجم کدهای نوشته شده به شدت کاهش یابد.

4.چندریختی(Polymorphism)
برای درک مفهوم چند ریختی یا پلی مورفیسم در دنیای برنامه‌نویسی مثالی را از دنیای واقعی خدمت شما عزیزان ارائه می‌دهیم. در این کره‌ی خاکی انسان‌های بسیاری وجود دارند که دارای گویش‌های مختلف، زبان‌های مختلف هستند و در شهرهای متفاوت زندگی می‌کنند. اما تمامی این افراد به عنوان یک انسان شناخته می‌شوند. اگر در اینجا انسان را به عنوان یک کلاس والد درنظر بگیریم و انسان ایرانی، آفریقایی، چینی و … را به عنوان کلاس فرزند، متوجه خواهید شد که انسان ایرانی از کلاس والد مشتق شده است. اما انسان ایرانی نحوه‌ی صحبت کردن اش با نحوه‌ی صحبت کردن یک انسان آفریقایی متفاوت است یعنی در واقع دارای رفتار متفاوت هستند. یعنی رفتاری که در شیء والد وجود دارد گاها در شکل فرزند ممکن است تغییر کند. در زبان‌ برنامه‌نویسی شیءگرا به پلی مورفیسم یا Polymorphism تغییر رفتار یک شیء در اشیاء فرزند آن گفته می‌شود. که در زبان برنامه‌‎نویسی #C این تغییر رفتارها به کمک تعریف متدها به صورت virtual و override است و در فصول بعدی به تفصیل آنها را توضیح خواهیم داد.

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

۱۵ بازديد

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

 

Docker and Kubernetes

 من معتقدم که هر برنامه‌نویس، مهندس نرم افزار، دانشمند داده و حتی مدیر پروژه باید درباره کانتینرها و ابزارهایی مانند Docker و Kubernetes بداند.

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

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

این به این معناست که دیگر نیازی به نگرانی در مورد مقیاس پذیری برنامه خود ندارید و Kubernetes یا K۸ می‌تواند این کار را برای شما به صورت خودکار انجام دهد. پس پیشنهاد می‌کنم داکر و کوبرنتیز را بیاموزید، این کار نه تنها در شغل فعلی شما بلکه بعدا هم به شما کمک خواهد کرد.

 

پلتفرم‌های ابری (AWS ، GCP یا Azure)

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

یادگیری پلتفرم‌های Cloud، مانندPlatform (GCP)، Amazon Web Service (AWS) ،Google Cloud  یا Microsoft Azure شما را یک قدم جلوتر از رقبای خود قرار می‌دهد. البته شما نیازی به یادگیری همه‌ی آن‌ها ندارید و یادگیری یکی نشان دهنده تسلط شما بر پلتفرم های ابری است و در آینده اگر نیاز به دیگر پلتفرم ها داشته باشید به راحتی می توانید آموزش ببینید.

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

 

ساختار داده و الگوریتم

برای برنامه نویس شدن باید ساختار داده‌ها و الگوریتم‌ها را به خوبی بدانید. هیچ راه فراری هم نیست. این‌ها یکی از مباحث مهم هر مصاحبه شغلی برنامه نویسی هستند و بدون آگاهی از ساختار داده‌های اصلی مانند یک آرایه، linked list ،map ،set، نوشتن یک برنامه در دنیای واقعی امکان پذیر نیست.

به همین دلیل است که هر برنامه‌نویس باید در دوره علوم رایانه، تلاش جدی برای یادگیری ساختار داده و الگوریتم انجام دهد.

 

ابزار کنترل ورژن (Git)

از سورس کنترل برای ذخیره کد استفاده می‌شود؛ اگر می‌خواهید یک کدنویس یا توسعه‌دهنده‌ نرم‌افزار شوید، باید با ابزارهای کنترل ورژن مانند Git و SVN آشنا شوید.

خوشبختانه گیت و گیت‌هاب بازار را بهبود بخشیده‌اند و اکنون بیش از ۷۰٪ سازمان‌ها از Git استفاده می‌کنند. از این رو یادگیری Git بهترین گزینه است و باید تلاش کنید تا آن را به خوبی یاد بگیرید. باید با مفاهیم کنترل ورژن پیشرفته مانند branching و merging و همچنین خود ابزار، راحت باشید؛ هم در خط فرمان و هم با استفاده از GUI. برای مبتدیان، GitHub Ultimate: Master Git و GitHub مکان مناسبی برای شروع است.

 

یک ویرایشگر متن (VIM)

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

من اکثرا از NotePad در ویندوز و VIM در لینوکس استفاده کرده‌ام ، اما امروزه شما از نظر ویرایشگرهای پیشرفته مانند Sublime، NotePad ++ ، VS Code گزینه‌های زیادی در دسترس دارید که عملکردی مانند IDE را ارائه می‌دهند.

 

IDEs 

IDE های مدرن مانند Eclipse و ..... مهم‌ترین ابزار برای هر برنامه نویسی است. برای برنامهنویسان C ،C ++  و C # انتخاب واضح است، ویژوال استودیو؛ برای توسعه‌دهندگان پایتون، Jupiter Notebook هر روز بهتر و بهتر می‌شود. 

برای برنامه‌نویسان جاوا، سه IDE اصلی برای انتخاب وجود دارد، مانند Eclipse ،NetBeans، IntelliJ

بانک اطلاعاتی و SQL

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

بسیاری از بانک‌های اطلاعاتی مانندOracle ، MySQL ، Microsoft SQL Server ، PostgreSQL و …  وجود دارد؛ اما دانستن فقط یکی از آن‌ها کافی است. نکته مهم این است که شما باید با بانک اطلاعاتی آشنا باشید. شما باید بدانید که چگونه داده‌ها را وارد کنید/ به‌روز کنید/ حذف کنید و برای آن کوئری بنویسید.

آگاهی از مفاهیم پیشرفته مانند join کردن یک aggregate function، یک امتیاز بزرگ است و اگر می‌خواهید آن را یادبگیرید، The Complete SQL BootCamp مکان بسیار خوبی برای شروع است.

 

لینوکس

مانند SQL، یونیکس نیز تست زمان را تحمل کرده است. همچنین بیش از ۳۰ سال است که از آن می‌گذرد و امیدوارم تا سا‌ل‌های آینده نیز همینطور پابرجا باشد. از آنجا که بیشتر اوقات، برنامه‌نویسان مجبورند با UNIX کار کنند، مانند سرورهای لینوکس، داشتن دانش خوب از خط فرمان linux، از آن‌ها انتظار می‌رود.

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

 

مبانی شبکه

دنیای امروز دنیای به‌هم پیوسته‌ای است و هر کجا که بروید، شبکه‌های رایانه‌ای را پیدا خواهیدکرد، از خانه‌ای که در آن از WIFI استفاده می‌کنید گرفته تا مدرسه، دانشگاه‌ها و دفاتر، از شبکه محلی (LAN)  تا اینترنت استفاده می‌کنند.

بیشتر برنامه‌هایی که شما خواهید نوشت نیز، مستقل نخواهند بود و شما باید برنامه‌ای بنویسید تا مشتریان بتوانند از هرجای دنیا به برنامه شما دسترسی پیدا کنند.

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

 

یک زبان اسکریپتی یاد بگیرید

چرا باید یک زبان اسکریپتی یاد گرفت؟ آیا نمی‌توان از همان زبان برنامه نویسی به عنوان زبان اسکریپتی استفاده کرد؟

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