সফ্টওয়্যার আর্কিটেকচার ভাষার উপর কতটা নির্ভর করে?


14

সফ্টওয়্যার আর্কিটেকচার এবং ডিজাইনের ধরণ সম্পর্কে নিজেকে শিক্ষিত করার সময় আমি লক্ষ্য করেছি যে বেশিরভাগ ক্ষেত্রে কিছু ভাষার বৈশিষ্ট্য এবং ডিজাইনের নির্দিষ্টকরণের ব্যাখ্যায় অন্তর্ভুক্ত থাকে।

উদাহরণস্বরূপ যে কোনও নিবন্ধ বা বই ক্লাস এবং ইন্টারফেস ব্যবহার করে ধারণাগুলি চিত্রিত করবে। এই বিষয়টিতে যে কেউ সহজেই সন্ধান করতে পারে সেগুলিতে অবজেক্ট এবং ওওপি ধারণাগুলির উল্লেখ থাকবে।

সিস্টেমটি যে ভাষায় লিখিত আছে তাতে যদি এমন ধারণা নেই তবে কী হবে? উদাহরণস্বরূপ, আমি যদি পাইথন বা নোড ব্যবহার করি, যা গতিশীলভাবে টাইপ করা হয় এবং ইন্টারফেসের ধারণা না থাকে? যদি আমি টাইপস্ক্রিপ্ট ব্যবহার করি যেখানে ইন্টারফেসটি একটি সাময়িক নির্মাণ, যা রানটাইমটিতে বিদ্যমান না? আমি যদি ফাংশনাল প্রোগ্রামিং আলিঙ্গনের চেষ্টা করছি? আমি কি উদাহরণস্বরূপ SOLID উপেক্ষা করে আমার ভাষার জন্য উপযুক্ত অন্যান্য ধারণাগুলি সন্ধান করব?

যদি হ্যাঁ তবে সেগুলি কী? দুর্ভাগ্যক্রমে সমস্ত ভালভাবে গৃহীত দৃষ্টান্তগুলি (যতদূর আমি সচেতন) কোনওভাবে ওওপি ধারণা এবং প্রকারগুলি উল্লেখ করে। যদি না হয়, আমার বিশেষ ভাষা এবং ব্যবহারের ক্ষেত্রে সাধারণ আর্কিটেকচার এবং নকশার নীতিগুলি খাপ খাইয়ে দেওয়ার সময় আমার কোন নিয়ম অনুসরণ করা উচিত?

আর্কিটেকচার এবং ভাষার মধ্যে নির্ভরতা কীভাবে সাধারণভাবে বর্ণনা করবেন?


ম্যানেজিং সফ্টওয়্যার জটিলতা: আমি সফ্টওয়্যার আর্কিটেকচারের উপর একটি নিবন্ধ লিখেছিলেন linkedin.com/pulse/...
overexchange

প্রথমত, হ্যাঁ, সফটওয়্যার আর্কিটেকচারটি আপনার মনে যে প্রযুক্তি রয়েছে তার ভিত্তিতে চালিত। উদাহরণস্বরূপ: পাইথনগুলি যতক্ষণ না সেই থ্রেডগুলি আইও সীমাবদ্ধ থাকে ততক্ষণ মাল্টিথ্র্যাডিংয়ের পক্ষে লাভ করে না। এটি মাল্টি-কোর সিপিউ বাউন্ড অপারেশনগুলি ব্যবহারের ক্ষেত্রে একটি আসল সীমাবদ্ধতা। দ্বিতীয়ত, আপনার এই কথাটি শুনতে হবে ... youtu.be/FF-tKLISfPE তৃতীয়ত, আপনার নূন্যতম 5-6 বছরের জন্য নির্দিষ্ট ডোমেনের বিদ্যমান স্থিতিশীল বিতরণ করা এন্টারপ্রাইজ পণ্যগুলির বিশ্লেষণ / কাজ করা উচিত। প্রযুক্তি কীভাবে ডিজাইনকে প্রভাবিত করে সে সম্পর্কে এটি একটি জৈবিক ধারণা। বিটিডব্লিউ..সুচ প্রোডাক্টগুলি স্ক্র্যাচ থেকে প্রাক-জাভা বিশ্বে লেখা হয়েছিল।

Wrt Technology ... জাভা বিশ্বে, জাভা 5/6/7 পর্যন্ত ভাষা নকশা প্রকৃত প্রতিষ্ঠাতাদের নিয়ন্ত্রণে ছিল। জাভা 8 থেকে, আমি জাভাটিকে একটি প্রচারমূলক যন্ত্র হিসাবে বিবেচনা করব তবে প্রোগ্রামিং ভাষা হিসাবে নয় language আমার মতে, জাভা একটি প্রকল্প পরিচালকের প্রযুক্তিতে পরিণত হয়েছে। সুতরাং, একজন শিক্ষানবিস হিসাবে, আমি সি / সি ++ / পাইথন ব্যবহার করে রচিত কোনও পণ্যের বিশ্লেষণ / কাজ করব

দয়া করে আপনার প্রশ্নে আর্কিটেকচার শব্দটি ব্যবহার করবেন না, এটি বিভ্রান্তিকর। আপনার প্রশ্ন নকশা সম্পর্কে। ভাষার পছন্দটি সাধারণত আর্কিটেকচার হিসাবে যোগ্য হয়ে উঠবে, আপনার প্রশ্নটি যেভাবে কথিত হয়েছে তা কোনওভাবেই বোঝায় না ...
মার্টিন ম্যাট

এছাড়াও পাইথন এবং JavaScript না ইন্টারফেসগুলি আছে, তারা শুধু একটি পৃথক শব্দ ব্যবহার করবেন না তাদের চিহ্নিত করতে
Caleth

উত্তর:


11

একটি সফ্টওয়্যার আর্কিটেকচার অনেকটা বাড়ি বা ব্রিজের আর্কিটেকচারের মতো। একটি ব্রিজ অবশ্যই নিজের ও তার উপর দিয়ে চলা গাড়িগুলি বা তার উপর দিয়ে চলা লোকেদের ওজন অবশ্যই ধরে রাখতে হবে। এটি আবহাওয়া সহ্য করতে হবে। আপনি এটি তৈরি করতে যে উপকরণগুলি ব্যবহার করেন তা অবশ্যই শক্তিশালী এবং তুলনামূলকভাবে কম ওজনের।

বাড়ি তৈরিতে আপনি ব্যবহার করতে পারেন এমন অনেকগুলি উপকরণ রয়েছে। আপনি ইট বা স্টুকো ব্যবহার করতে পারেন। আপনি কাঠের মরীচি বা ধাতবগুলি ব্যবহার করতে পারেন। ওজন, শক্তি এবং আরও কিছু ক্ষেত্রে প্রতিটি উপাদানের নিজস্ব বৈশিষ্ট্য রয়েছে। এই সমস্ত বৈশিষ্ট্য আর্কিটেকচারকে প্রভাবিত করে।

একইভাবে, আপনি যে প্রোগ্রামিং ল্যাঙ্গুয়েজটি ব্যবহার করেন তা আপনার আর্কিটেকচারটি তৈরি করার পদ্ধতিকে প্রভাবিত করে। আপনার আর্কিটেকচারটি এমন একটি প্রোগ্রামিং ভাষায় আলাদা দেখতে যাচ্ছে যা সি ++ এর মতো ক্লাসগুলি রয়েছে এমন একটি প্রোগ্রামিং ভাষার মতো নয় যা সি এর মতো নয় C.

সলাইড নীতিগুলি বেশিরভাগ অবজেক্ট-ওরিয়েন্টেড ভাষাগুলি সম্পর্কে (অর্থাত্ ক্লাসগুলি থাকা ভাষাগুলি) সম্পর্কে।


4

আর্কিটেকচার তার লক্ষ্যগুলি অর্জনের দক্ষতার উপর নির্ভর করে। ভাষার পছন্দগুলি সক্ষমতা সীমাবদ্ধ করতে পারে। যে কোনও টুরিং সম্পূর্ণ ভাষার কোনও প্রোগ্রামিংয়ের কাজ শেষ করার ক্ষমতা রয়েছে। এই বিন্দুর পরে এটি কীভাবে মানব পাঠযোগ্য ভাষা সমাধান হতে দেয়।

অনেকগুলি সফ্টওয়্যার আর্কিটেকচার স্কিম আপনাকে মূল ডোমেন ব্যবসার বিধি থেকে প্রযুক্তি পছন্দগুলির সমস্ত জ্ঞান সরিয়ে দিতে বলে ask আপনি যে প্রযুক্তিগত পছন্দটি জ্ঞানটি মূল থেকে সরাতে পারবেন না তা হ'ল এটি যে ভাষাতে আপনি তা প্রকাশ করতে বেছে নেন।

যখন আর্কিটেকচারের বইগুলি তাদের লক্ষ্যগুলি সম্পর্কে আপনাকে বলার জন্য আটকে থাকে তবে ভাষাটি এতদিনের পক্ষে লক্ষ্য অর্জনে সক্ষম হওয়ায় এটি ততটা গুরুত্বপূর্ণ নয়। বইগুলি যখন আপনাকে এই লক্ষ্যগুলি অর্জন করতে যায় তখন ভাষাটি ম্যাটার থেকে শুরু করে।


আপনার উত্তরে দুর্দান্ত পয়েন্টস, তবে নিশ্চিত, historতিহাসিকভাবে সফ্টওয়্যার আর্কিটেকচারটি প্রযুক্তির প্রবণতা অনুসারে এড বাস্তবায়ন করেছিল।
3

@ সার্বভৌম বিনিময়টি একটি ভাল আর্কিটেকচারের মূল বিষয় হল এমন একটি সফ্টওয়্যার তৈরি করা যা পরেরটির জন্য প্রস্তুত হয়ে বর্তমান ট্রেন্ডকে ছাড়িয়ে যেতে পারে।
candied_orange

মিডওয়্যার ওয়ার্ল্ডে অন্ততপক্ষে, পণ্য স্থাপত্যগুলি 1990 এর দশক পর্যন্ত আরপিসি / আরএমআই / করর্বা ছাড়িয়ে চিন্তা করতে সক্ষম ছিল না। আমি দেখেছি ক্লাসিক ডিজাইনগুলি প্রক্রিয়া ভিত্তিক রিমোর কলগুলিতে নির্ভর করে। তারপরে সার্ভিসআর্চ আর্কিটেকচারের দিক থেকে মিডলওয়্যারের প্রবণতা পরিবর্তন করেছে।

2
পছন্দ করেছেন অনুশীলনে, আমি অনেক লোককে এমনটি করতে দেখেছি যা কখনও কখনও "হাইপ চালিত বিকাশ" বলে ডাকা হয় - ডিজাইন করার সময় তাদের সমকালীন সমবয়সীদের যে বৃত্তটি সবচেয়ে বেশি কথা বলছে তা করুন তাই আপনি সেই আলোচনায় অংশ নিতে পারেন।
marstato

@ মার্সাত্তো একমত সর্বোত্তম উদাহরণ হ'ল স্প্রিং / স্প্রিংবুটকে বর্তমান ট্রেন্ডে ব্যবহার করে, কোনও নতুন প্রকল্পের জন্য, না জেনে, কেন?
13:58 এ 10

1

একটি শব্দ হিসাবে আর্কিটেকচারের সত্যিকারের নির্দিষ্ট অর্থ রয়েছে যা শারীরিক জগতের স্থাপত্যের সাথে খুব সম্পর্কিত এবং এর মূল অংশটি জিনিস তৈরির শিল্প এবং অনুশীলন সম্পর্কে, কীভাবে জিনিসগুলি তৈরি করা হয় এবং একসাথে রাখা হয় সে সম্পর্কে। সেভাবে নেওয়া, যখন আর্কিটেকচারটি ভালভাবে করা হয় তখন আমি মনে করি ভাষাটি স্থাপত্যের সাথে খুব বেশি সংযুক্ত রয়েছে, ঠিক যেমন একটি সু-স্থিত বিল্ডিংয়ের তৈরির উপাদানটি অন্তরঙ্গভাবে অবহিত করা উচিত।

সফ্টওয়্যারটিতে, স্থাপত্য পছন্দগুলি এমনভাবে করা উচিত যা ভাষার বৈশিষ্ট্যের সাথে একমত। যদি আপনি এমন কোনও ভাষা নিয়ে একটি সিস্টেম তৈরি করে যা অবজেক্ট-ওরিয়েন্টেড, তবে আমি আশা করব যে সিস্টেমটির আর্কিটেকচারটিও বস্তু-কেন্দ্রিক হবে। আপনি যদি একটি কার্যকরী ভাষা দিয়ে একটি সিস্টেম তৈরি করে থাকেন তবে আমি সেই সিস্টেমটির আর্কিটেকচারটিও কার্যকরী হবে বলে আশা করব।

ধারণা তৈরী কর?


আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ! যে কোনও সুযোগে আপনি কি কোনও সংস্থান সম্পর্কে সচেতন, গতিশীল টাইপড বা কার্যকরী ভাষা সম্পর্কিত সফ্টওয়্যার আর্কিটেকচারের বিবরণ দিচ্ছেন? tbh সমস্ত আমি উদাহরণস্বরূপ বাক্সের বাইরে জাভা হিসাবে কাজ করে তবে কিছুটা অভিযোজন প্রয়োজন যেমন জেএসের জন্য। দুর্বলভাবে টাইপ করা ভাষায় সাধারণ আর্কিটেকচারের নিদর্শনগুলিকে অভিযোজিত করার জন্য গাইডলাইনগুলি কোনটি? এমন কি একজনেরও চেষ্টা করা উচিত বা এটি সম্পূর্ণ আলাদা হওয়া উচিত?
ত্রিস্তান জাজারা

আমার উদ্বেগটি ছিল যে যদি কেউ উদাহরণস্বরূপ জাভা ব্যবহার করে থাকে তবে আর্কিটেকচারের জন্য প্রচুর সেরা অনুশীলন এবং নিদর্শন রয়েছে, তবে আমি বিভিন্ন ধরণের ভাষার জন্য কোনটি দেখিনি। সুতরাং আমি ভাবছিলাম, কীভাবে তাদের সাথে আচরণ করব
ত্রিস্তান জাজারা

মূলত, উদাহরণস্বরূপ SOLID এখনও এই ক্ষেত্রে দাঁড়িয়ে? যদি হ্যাঁ হয় তবে এটি কীভাবে মানিয়ে নিতে পারে? না হলে কি করার কথা?
ত্রিস্তান জাজারা

সলাইড নীতিগুলি মূলত উত্স-ভিত্তিক। তবে আমি মনে করি তারা উচ্চ-অর্ডার নীতিগুলি এনকোড করেছে যা ভাষা নির্বিশেষে যে কোনও সফ্টওয়্যার সিস্টেমে প্রযোজ্য হতে পারে। তবে মূল নীতিগুলি হ'ল: পাখি খাওয়ানোর বাহিরে অনেক কিছু গড়ার আগে আপনার সেগুলি জানা এবং বুঝতে হবে।
রিবল্ড এডি

@ ত্রিস্তানটজারা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের উদ্ভাবন আগে এবং কোনও অবজেক্ট ওরিয়েন্টেড ভাষা ছাড়া হয়েছিল। আপনি এটি কোনও সাধারণ উদ্দেশ্যে ভাষায় করতে পারেন। এমনকি যেগুলির ক্লাস নেই।
candied_orange

1

আমি বলব, শুরু করার জন্য, আপনি যে ভাষাটি ভাবেন সেটিরও আপনার ধারণার গভীর প্রভাব রয়েছে। একটি কারণ রয়েছে যে পাস্কাল নিক্লাস রাইথ এবং সি ব্রায়ান কর্নিগান এবং ডেনিস রিচি তৈরি করেছিলেন।

উচ্চতর স্তরে, কিছু ধারণা (এবং অন্যের অভাব) প্রকাশ করার ক্ষমতা আপনার চিন্তাকে নির্দেশ করবে এবং আপনাকে এমন কিছু নির্দিষ্ট সমাধানে পৌঁছে দেবে যা অগত্যা ভিন্ন ব্যাকগ্রাউন্ড সহ একই ব্যক্তি হবেনা।

অবশেষে, আপনি যে ধারণাগুলি উল্লেখ করেছেন সেগুলি যে কোনও সাধারণ-উদ্দেশ্যমূলক ভাষায় প্রয়োগ করা যেতে পারে। এটি কেবলমাত্র এটিতে সিন্ট্যাকটিক সমর্থন নাও থাকতে পারে এবং বাস্তবায়ন করা জটিল। আপনি সি-এর সাথে যেমন করতে পারেন তেমন যথেষ্ট প্রতিশ্রুতিবদ্ধ (বা যথেষ্ট পাগল) আপনি অবজেক্ট-ওরিয়েন্টেড x86 অ্যাসেম্বলি কোডটি লিখতে পারেন বাস্তবে, সি ++ এর প্রথম বাস্তবায়নগুলি ছিল প্রিপ্রোসেসর যা আপনার সি ++ কোডটি সিতে সংকলিত করেছিল (এবং মংগলড প্রতীক নামগুলি তৈরি করেছিল) ডিবাগিং আরও অনেক মজা)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.