مقدمه:
در حال نوشتن نرم افزاری برای شرکتی هستم که سیستم مدیریت اون به صورت سنتی و به وسیلهی قلم و کاغذ و دفتر حساب انجام میشه.
کارهایی که انجام دادم:
۱) نیاز سنجی کامل + طراحی نرمافزار شی گرا به وسیلهی UML Diagram رو انجام دادم.
۲) ابتدا با اکسل و VBA سیستم رو کامل پیادهسازی کردم و نرم افزار رو به دلیل اینکه پلتفرم انعطاف پذیر نبود در مرحله ی تست نهایی رها کردم.
سوال:
۱) نوشتن نرمافزار تحت وب رو برای این موضوع پیشنهاد میدید یا نرم افزار native؟
۲) در ادامهی پاسخ سوال بالا چه پلتفرمی هایی رو برای پیاده سازی پیشنهاد میدید؟
پ ن: اولش از این ناراحت بودم که زمانی که گذاشتم برای نوشتن نرم افزار با VBA اطلاف وقت و انرژی بوده اما دقیقتر که شدم دیدم اینکارم بسیار بسیار کمکم کرد که اشکالات طراحی که با UML انجام دادم رو کشف و منهدم کنم.
مهمترین قسمت پروژه های نرم افزاری همین نیازسنجی درست و تا حد ممکن کامل می باشد که همین نیازسنجی باعث می شود انعطاف و داینامیک بودن سیستم رو هم در نظر بگیرید
در مورد انتخاب پلت فرم برای پیاده سازی پروژه اگر درون سازمانی یا شرکتی باشه بیشتر به صورت نرم افزار پیادش می کنن مگر اینکه چند سکویی باشه ینی در ارتباط با پلت فرم های مختلف باشه اما بیرون سازمانی باشه بیشتر به صورت وب اپلیکیشن پیاده می کنن
نرم افزار قراره امور جاری شرکت {مدیریت کارمندان، مدیریت کارگر ها، مدیریت مشتری ها، حسابداری(ساده)، انبارداری(ساده)} رو اتوماسیون کنه، قبلا نرمافزار ی رو در حالت Dictator Mode در اکسل پیادهسازی کرده بودم که از جداول اکسل به عنوان پایگاه داده و از VBA برای ایجاد تغییرات در داده ها استفاده میکرد، ولی همینطور که گفتم کلا روش مناسبی نبود و بعد از پیادهسازی در مرحله ی تست کنار گذاشتمش.
درون سازمانی باشه داخل یه شرکت مثلا می شه گفت شما یه سرور بانک اطلاعاتی می تونید داشته باشید با برنامه ای که پیاده می کنید برای شرکت روی کلاینت های مختلف نصب میشه مهم بحث نیازسنجی درست و تجزیه و تحلیل هست برای پیاده سازیش می تونید به هر زبان یا ابزاری که مسلط هستید استفاده کنید بستگی به خودتون داره انتخاب های مختلفی وجود داره مثل
(rad studio (c++, delphi
.net
java
qt
,…
نه از اسکالا استفاده نکردم، یکم در مورد مقایسه پایتون و سی پی پی و اسکالا تحقیق کردم، اما من هنوز متوجه نشدم منظورتون از “اسکالا برای اینکار ساخته شده” چیه.
من قبلا تو دام این موضوع افتادم، راحتی نوشتن کد مخصوصا استفاده از زبان های برنامهنویسی که از قبل بلدم یک فاکتور مهم هست ولی فقط یکی از فاکتورهاست
الان بیشتر دنبال گزینه ی «مناسب و معقول» برای این موضوع هستم, حتی اگر نیاز باشه یک زبان جدید یاد بگیرم.
یادگرفتن یک زبان برنامهنویسی جدید برام سخت نیست من معمولا همون هفته اول «کمکی های دوچرخه رو باز میکنم» و سواری میکنم
راستش من این ها رو با هم مقایسه نمیکنم چون اصلا معنی درستی نداره.
سکالا در انترپرایز ها خیلی زیاد استفاده میشه و توسعه دهنده زیاد داره و سویچ کردن از جاوا به سکالا کار سختی نیست و صعود پذیری سکالا از C++ وپایتون که اصلا برای concurrency ساخته نشدند خیلی راحت تره. اما همونطور که عرض کردم امکانات تیمی شما از همه چیز مهم تره.
اگر من جای شما باشم اول طراحی سیستم رو انجام میدم و بعد از مشخص شدن معماری کلی میرم سراغ زبان برنامه نویسی، سیستم های اداری خیلی ماژولار ساخته میشند و جوری طراحی میشند که ماژل ها به راحتی با api روی http با هم کار کنند که همه سیستم در یک ماشین نباشه و صعود عمودی و افقی هم کار راحتی باشه.
من شاید در گزینه های خودم Elixir و Rust رو هم جا بدم اما این معنیش این نیست که اگر هدفم Microservices باشه به Go فکر نخواهم کرد. درضمن لازم نیست همه کارها در یک زبان یا اکوسیستم انجا بشه.
چیزی که مشخصه اینه که شما نیاز به یک سیستم با ضریب اطمینان بالا و صعود پذیری مناسب دارید که به راحتی قابل اجرا باشه و در این صورت پایتون یا C++ دوستان خوبی نخواهند بود چون کمک چندانی به دولوپر ها در جلوگیری از بروز خطا نمی کنند. و در پایان احتمالا نیاز به ORM قدرتمندی هم دارید که بتونید بهش اعتماد کنید.
ترجیح میدم بجای js از یک زبان safe یا یک زبان فانکشنال یا هر دو برای همچینکاری استفاده کنم، شاید دلیل دومش این باشه که خیلی علاقه وافری به js برای همچین کاری ندارم چون فکر میکنم نگهداری و توسعش کار ساده ای نیست.
اگر مجبور باشم یک زبان dynamic و oop انتخاب کنم اونقت احتمالا برمسراغ روبی و بازم خیلی بستگی به امکانات تیمی داره.