Syntax | سینتکس – Telegram
تفاوت بین برنامه نویس و توسعه دهنده با مهندس نرم افزار؟

بنظرتون فرق بین هر کدومشون چیه؟
آیا هر برنامه نویسی مهندس نرم افزار هم هست ؟
بیاید با هم بررسی کنیم ببینیم قضیه از چه قراره

@citax_tel 👈 سیتاکس
👍6
از کدر تا مهندس نرم افزار: مراحل تکامل در دنیای برنامه‌نویسی

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

1. کدنویس (Coder):
تو این مرحله، فرد تازه‌کار با اصول و مفاهیم برنامه‌نویسی آشنا میشه. اون می‌تونه کدهای ساده رو بنویسد و به تدریج با زبان‌ها و ابزارهای برنامه‌نویسی آشنا بشه. کدنویس ها عموماً داخل تیم‌های توسعه نرم‌افزار به عنوان افرادی با توانمندی‌های فنی اولیه مشغول به کار می‌شن.

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

3. توسعه‌دهنده (Software Developer):
تو این مرحله، فرد به درک عمیق‌تری از توسعه نرم‌افزار می‌رسه و توانایی‌های مهارتی و فنی بیشتری پیدا می‌کنه. توسعه‌دهندگان مسئولیت طراحی و ساختاردهی بهترین راه‌حل‌های فنی رو برای توسعه نرم‌افزار بر عهده دارن. اون ها با توجه به نیازمندی‌ها و الزامات پروژه، طرح‌ریزی فنی می‌کنن و راه‌حل‌های بهینه رو برای مشکلات فنی ارائه میدن.

4. مهندس نرم‌افزار (Software Engineer):
مهندسان نرم‌افزار تخصص و تجربه فنی بالاتری نسبت به مراحل قبلی دارن. اون ها مسئولیت طراحی، توسعه و مدیریت پروژه‌های نرم‌افزاری را بر عهده دارن. به علاوه، اون ها با توجه به اصول مهندسی نرم‌افزار، بهینه‌سازی، مدیریت کیفیت و معماری نرم‌افزار مشغول به فعالیت می‌شن. مهندسان نرم‌افزار به طور گسترده از ابزارها و تکنولوژی‌های پیشرفته استفاده می‌کنن و توانایی حل مسائل پیچیده رو دارن.

نکته‌ای که باید تأکید بشه اینه که مراحل مذکور یک تکامل طبیعی در دنیای برنامه‌نویسی رو نشون می‌ده و تقسیم‌بندی ممکنه تو بعضی موارد نسبی و متغیر باشه. همچنین، عناوین شغلی ممکنه تو صنعت و محیط‌های مختلف متفاوت باشن. اما در کلیت، تکامل از کدنویس تا مهندس نرم‌افزار به معنای پیشرفت فرد در مسیر حرفه‌ای برنامه‌نویسی است.

#توسعه_دهنده #برنامه_نویس #مهندس_نرم_افزار

@citax_tel 👈 سیتاکس
👍6🔥1🥰1
تفاوت بین برنامه نویس و مهندس نرم افزار

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

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

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

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

#برنامه_نویس #مهندس_نرم_افزار

@citax_tel 👈 سیتاکس
👍8
Maintain a project

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

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

@citax_tel 👈 سیتاکس
👍7
What is an api?

مشخصا هر کسی که برنامه نویس باشه با API ها سر و کله زده اما بیایم ببینیم مفهوم API دقیقا چیه.

ای پی آی (API) یا Application Programming Interface به معنای واسط برنامه‌نویسی است. API یک مجموعه از توابع و روش‌های برنامه‌نویسی است که به توسعه‌دهندگان اجازه می‌دهد تا بتوانند از قابلیت‌ها و امکانات یک سامانه، برنامه یا سرویس دیگری استفاده کنند.

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

مشخصات اصلی API عبارتند از:

- تعریف یک سری قوانین برای تعامل بین سیستم‌ها یا اجزا

- تعریف ساختار داده‌ها، پارامترها و قالب‌های ارتباطی

- فراهم کردن توابع و متدها برای انجام کارهای مورد نیاز

- محافظت از بخش‌های داخلی سامانه از دسترس خارجی

- استانداردسازی روش تعامل بین برنامه‌ها

بنابراین API یک ابزار قدرتمند است که تعامل و همکاری بین برنامه‌ها را بسیار آسان‌تر می‌کند.

#API

@citax_tel
9
Media is too big
VIEW IN TELEGRAM
واکنش پدر مادرا درباره شغل های نسبتا جدید و امروزی
هنوزم بعضی از پدر مادرا میگن "تو خونه پول درآوردن و پشت میز نشستن که کار نیست 😕 "

@citax_tel 👈 سیتاکس
😁10👎2
phind.com
یه موتور جستجو برای برنامه نویس ها است ... تلفیق جالبی از ریزالت گوگل و GPT که تمام چند صفحه اول رو میخونه و نتیحه رو برامون مینوسیه، کدش رو هم مینویسه

https://zzzcode.ai/
این هم یه ابزار شدیدا باحاله که هم میتونه داکیومنت براتون درست کنه هم میتونه کد های هر زبانی رو به زبان دیگه تبدیل کنه و هم ....
گفتم شاید بد نباشه شیر کنم که شما هم استفاده کنید

[Shahriar]

#هوش_مصنوعی
@citax_tel 👈 سیتاکس
8
قرار زبان برنامه نویسی Mojo رو یکم بررسی کنیم.
البته فکر می کنم خیلی زوده بخوایم دربارش حرف بزنیم اما با توجه به اینکه سر و صدای زیادی کرده پس بیاید ببینیم چیه
#mojo

@citax_tel 👈 سیتاکس
🔥6👍2
Mojo

زبان برنامه نویسی Mojo یک زبان جدید است که توسط شرکت Modular AI در سال ۲۰۲۳ معرفی شده است.

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

زبان Mojo دارای سینتکس‌های شبیه به پایتون و کمی js است، اما عملکرد آن مشابه به زبان‌های C و Rust است(این قسمتش یکم عجیبه).

این زبان از کل اکوسیستم کتابخانه‌های پایتون پشتیبانی می‌کند (در این صورت چجوری می تونه 35 هزار برابر سریع تر باشه) و همچنین قابلیت استفاده از سخت افزارهای مختلف مانند CPU، GPU، TPU و ASIC را دارد.

برخی از ویژگی‌های منحصر به فرد زبان Mojo عبارتند از:

- موازی سازی خودکار کدها برای بهره‌وری بالاتر از منابع سخت افزاری (قطعا پوینت مثبتی هستش در مقابل پایتون)

- بررسی و ارزیابی نوع داده در زمان کامپایل برای جلوگیری از خطاهای زمان اجرا

- کامپایل ایستا به وسیله LLVM برای تولید کد ماشین بهینه

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

- قابل توسعه با استفاده از ماژول‌ها و پکیج‌های خارجی
#Mojo

@citax_tel 👈 سیتاکس
👍8
متخصصین درباره Mojo چی میگن !

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

برخی از نظرات مثبت و منفی درباره زبان Mojo:

نظرات مثبت:

 "موجو یک زبان بسیار جذاب و قدرتمند است که سادگی پایتون را با عملکرد C و Rust ترکیب می‌کند. این زبان به توسعه دهندگان هوش مصنوعی امکان می‌دهد که بدون نگرانی از جزئیات سخت افزار، برنامه های با پرفورمنس بالا و کارآمد بسازند."

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

نظرات منفی:

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


 "موجو یک زبان بدون هدف است. این زبان سعی دارد همه چیز را در خود جای دهد، اما هیچ کدام را به خوبی انجام نمی‌دهد. Mojo نه سادگی پایتون را دارد، نه عملکرد C و Rust را. این زبان فقط گیج کننده و پر مشکل است."


 "موجو یک زبان بلا استفاده و بلا مصرف است. این زبان هیچ چیز جدید و متفاوتی به دنیای برنامه نویسی نمی‌افزاید. Mojo فقط یک تقلید بد از پایتون است که سعی دارد با قول دادن سرعت بالا، توجه کاربران را جلب کند."

#Mojo

@citax_tel 👈 سیتاکس
👍5
با این کار ها سرعت یادگیریتو سه برابر کن !

هیچوقت پست های اینستاگرام سیتاکس رو توی تلگرام قرار نمیدم چون محتواش تو فضای تلگرام نمیچسبه. اما این پست خیلی خاصه شبیه به کامیک شده منکه واقعا کیف کردم.
همچنین به گرافیست کارمون خسته نباشید میگم
ایدی گرافیست کارمون اگه پروژه دارید می تونید بهش پی ام بدید:
@Ali_reza_Jalilian

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

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

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

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

@citax_tel 👈 سیتاکس
🔥9
سوال:

برای یک سرویس چت میخوام از Fastapi و سوکت نویسی استفاده کنم (جنگو چنلز بلد نیستم)

یک monolithic برنامه اصلی هست
این قسمت چت رو میخوام میکروسرویس بچسبونم بهش

مدل کاربر اعتبار سنجی ها (jwt ) رو چطور درست میکنن
یا اگر با مدل دیگه تو برنامه اصلی کار داشتیم چطور کار می‌کنند باهاش.

[Mojtaba]

@citax_tel 👈 سیتاکس
👍7
Syntax | سینتکس
سوال: برای یک سرویس چت میخوام از Fastapi و سوکت نویسی استفاده کنم (جنگو چنلز بلد نیستم) یک monolithic برنامه اصلی هست این قسمت چت رو میخوام میکروسرویس بچسبونم بهش مدل کاربر اعتبار سنجی ها (jwt ) رو چطور درست میکنن یا اگر با مدل دیگه تو برنامه اصلی…
اطلاعات مورد نیاز کاربر رو توی توکن مینویسی و توی سرویسای دیگت میتونی از توکن بخونی، مثل یوزرنیم، تلفن، یوزر آیدی، نقش ها، زبان، ادرس تصویر پروفایل..
برای امنیت بیشتر توکن رو رمز‌نگاری میکنی که با یک‌کلید مشخص که فقط برنانه خودت داره میتونه خونده و ادیت بشه.
حالا اون سرویس چت از توکن کاربر رو میشناسه. برای باقی مباحث ممکن هست نیاز به ذخیره اطلاعات کاربر و مشتقاتش روی سرویس چتت هم داشته باشی. این جزو چالش های میکروسرویس ها هست دیگه. یا باید هر بار نیاز داری بری از سرویس اصلیت بگیری یا تو سرویس ثانویه ات هم‌نگهداری کنی و اپدیت بکنی در صورت تغییر ( یکپارچگی داده  ها)

ارتباط مابین سرویس ها، میتونه از طریق rest api ها باشه، میتونه از طریق grpc باشه، میتونه از طریق message broker ای مثل rabbitmq باشه..
شکستن وظایف یک پروژه به سرویس های مجزا شروع میکروسرویسی شدنه معماریت هست. هر چند که به این میگیم bounded contexts تا میکروسرویس.

سمت سوکت نویسی هم‌ نرو وقتی کتابخونه های خوبی مثل signalr و grpc و امثالهم هست. سیگنال آر راحته همه جا میتونی استفاده کنی پرفورمنسشم خوبه.
کلاینت ها همه به یک Hub لیسن میشن که متد های خودش رو داره مثلا send و get.‌ به محض اومدن پیام یک ایونت بهشون داده میشه که بیا بگیر دیتات رو اپدیت کن
ارتباط bidirectional و duplex

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

[mrgrayhat]

@citax_tel 👈 سیتاکس
🔥7