গতিশীল এবং স্ট্যাটিক ভাষার মধ্যে আর্কিটেকচারাল পার্থক্য


22

স্থির ভাষা (যেমন সি # বা জাভা) এবং গতিশীল ভাষা (যেমন রুবি বা পাইথন) এ নির্মিত হবে এমন অ্যাপ্লিকেশনগুলি ডিজাইন করার সময় কি কোনও বড় স্থাপত্যের পার্থক্য রয়েছে?

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

এছাড়াও, কোনও গতিশীল-নির্দিষ্ট নকশার নিদর্শন রয়েছে?


1
এই স্থাপত্যগুলির পার্থক্য যাই হোক না কেন, গতিময় ভাষাগুলি - আয়রন রুবি এবং আয়রন পাইথন - সহজে প্রশংসা করে। নেট এর স্থির ভাষা।
আইএবস্ট্রাক্ট

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

উত্তর:


14

আসুন কিছু জিনিস সোজা পেতে:

  1. ইন্টারেক্টিভ স্ক্রিপ্টিং এবং স্থির ভাষা পারস্পরিক একচেটিয়া নয়। এফ # এবং হাস্কেল উভয়েরই আরপিএল ইন্টারফেস রয়েছে।
  2. গতিশীল ভাষা এবং উচ্চ কার্যকারিতা পারস্পরিক একচেটিয়া নয়, যদিও কিছু অপ্টিমাইজেশন রয়েছে। জাভাস্ক্রিপ্ট আজকাল বেশিরভাগ ব্রাউজারগুলিতে বেশ জঘন্য দ্রুত চালায়।
  3. এমনকি গতিশীল ভাষাগুলিতে, আপনার এখনও প্রকারগুলি ডকুমেন্ট করতে হবে, মনে রাখতে হবে এবং চিন্তা করতে হবে।
  4. প্রকারের অনুমানের ক্রমবর্ধমান জনপ্রিয়তার কারণে, প্রচুর স্থিতিক ভাষায় আর প্রায়শই প্রকারগুলি চিহ্নিত করতে হয় না। দৃ strong় প্রকারের অনুমিত সহ স্থিত ভাষায়, সংকলকটি আপনার কোড থেকে প্রকারগুলি কী কী তা বেশিরভাগ সময় নির্ধারণ করে এবং যদি আপনি কখনও এমন কিছু করেন যা টাইপ সংজ্ঞাগুলি লঙ্ঘন করে। যতক্ষণ সিনট্যাক্স সম্পর্কিত, এটি উভয় বিশ্বের সেরা সরবরাহ করে।
  5. ওওপি এবং গতিশীল ভাষা পারস্পরিক একচেটিয়া নয়। পিএইচপি এখন ক্লাস এবং এমনকি উত্তরাধিকার সমর্থন করে।

এই সমস্ত বিস্ময়কর মিলগুলি একদিকে রেখে, কিছু ব্যবহারিক পার্থক্য রয়েছে যা উন্নয়ন প্রক্রিয়াটিকে প্রভাবিত করে:

  1. ডায়নামিক ভাষায় প্রায় ডেটা ক্ষণস্থায়ী আকর্ষণীয় উপায়ে জন্য অনুমতি ছোট
  2. স্ট্যাটিক ভাষা আপনাকে বিভিন্ন ধরণের বাগ অসম্ভব করে তোলে যা করার জন্য পরীক্ষার পরিমাণ হ্রাস করতে দেয়।
  3. একই শিরাতে স্থির ভাষাগুলি এফ # এর পরিমাপের এককগুলির মতো আকর্ষণীয় বৈধতা এবং স্বয়ংক্রিয় রূপান্তর বৈশিষ্ট্যগুলিকে মঞ্জুরি দেয় ।
  4. চূড়ান্তভাবে গ্রহণ করা হয়, স্থির ভাষাগুলি কোড চুক্তি এবং আনুষ্ঠানিক যাচাইকরণের অনুমতি দেয় , যা সম্ভাব্য বিভাজন দ্বারা শূন্যগুলি, অসীম লুপগুলি, নাল রেফারেন্সগুলি, অবৈধ তালিকার আকার বা সূচকগুলি, পরিসীমা ত্রুটিগুলি এবং অন্যান্য যৌক্তিকভাবে অবৈধ রাষ্ট্রের মতো বিষয়গুলি ডকুমেন্ট এবং ফ্ল্যাট আউট করতে পারে allow আপনি ব্যাখ্যা করতে পারেন যে।
  5. আরও চূড়ান্তভাবে এগিয়ে নিয়ে যাওয়ার পরে, সিপিইউ অপ্টিমাইজেশানগুলি এই স্থিতিশীল বাধাগুলির উপর ভিত্তি করে তৈরি করা যেতে পারে, যা আরও ভাল পারফরম্যান্সও দেয়।

এখানে এক ধরণের প্রোগ্রাম রয়েছে যা স্থির টাইপিং ছাড়া কখনও তৈরি করা যেত না : এককতা ity , হার্ডওয়্যার প্রক্রিয়া সীমানা ছাড়াই একটি ওএস। এটি স্বল্প পরিমাণে সি, কিছু সি # এবং স্প # বলে সি # এর একটি উপভাষায় লিখিত, যা কোড চুক্তি সমর্থন করে।

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

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


সিঙ্গুলারিটি রিয়েলটাইম-সচেতন সর্বাধিক বিলম্বের গ্যারান্টি সরবরাহ করতে পারে?
ইওনিল

@ ইউনিল আসলেই আমার ক্ষেত্র নয়, তবে আমি মনে করি আপনি এটি জিজ্ঞাসা করছেন যে এটি রিয়েল-টাইম কঠোরভাবে করতে পারে কিনা। আমি এটি মনে করি না, যেহেতু এটি সমস্ত জায়গা জুড়ে আবর্জনা সংগ্রহ ব্যবহার করে। আমার জানা মতে একাকীত্ব কিছুক্ষণের মধ্যে আপডেট করা হয়নি তবে সম্ভবত কেউ রিয়েল-টাইম আবর্জনা সংগ্রাহকের সাথে কিছু মিলিয়েছে।
রেই মিয়াসাকা

ধন্যবাদ। আমি শুধু চেক করতে চেয়েছিলাম। কিছু রিয়েলটাইম জিসি বাস্তবায়ন আছে শুনেছি, তবে শিল্পে কীভাবে তারা ব্যবহারিকভাবে ব্যবহার করা হয় তা আমি শুনিনি…
ইওনিল

2

একটি উল্লেখযোগ্য স্থাপত্য পার্থক্য আছে। কর্মক্ষমতা.

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

প্রায়শই গতিময় ভাষাগুলির দ্বারা সরবরাহিত বিকাশ এবং নমনীয়তার গতি ধীরে ধীরে সাড়া দেয় সিপিইউ এবং মেমরির গ্রাসের গতি। তবে বাজেট বা কার্য সম্পাদনের সীমাবদ্ধতা সহ বৃহত সিস্টেমগুলির জন্য গতিশীল ভাষার ওভারহেডগুলি বেশি হতে পারে।


1

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


1

স্থির ভাষা (যেমন সি # বা জাভা) এবং গতিশীল ভাষা (যেমন রুবি বা পাইথন) এ নির্মিত হবে এমন অ্যাপ্লিকেশনগুলি ডিজাইন করার সময় কি কোনও বড় স্থাপত্যের পার্থক্য রয়েছে?

না।

গতিশীল ভাষার জন্য অভিনব ফ্রেমওয়ার্কগুলি লেখার জন্য এটি কিছুটা সহজ। তবে এটি কোনও প্রয়োগের জিনিস নয়।

ডিজাইনের সম্ভাবনাগুলি কোনটি যা এক ধরণের জন্য ভাল পছন্দ হতে পারে যা অন্যটির জন্য খারাপ?

আসলেই না।

আপনি উভয় সদয় ভাষায় ভাল জিনিস লিখতে পারেন।

অন্য জাতীয় (নকশা এবং আর্কিটেকচারে অবশ্যই) এর সাথে নয় এমন এক প্রকারের সাথে কী কী কার্যকর বৈশিষ্ট্য অর্জনযোগ্য?

না।

পার্থক্যটি হ'ল গতিশীল ভাষাগুলি হ'ল "লিখুন, চালান, ঠিক করুন"। আপনি পরীক্ষা এবং দ্রুত স্থির করতে পারেন।

স্থির ভাষা হ'ল "লিখুন, সংকলন করুন, বিল্ড করুন, রান করুন, ফিক্স করুন"। আপনি সহজে পরীক্ষা করতে পারবেন না।

এগুলি ছাড়াও তারা তাদের সামর্থ্যের সাথে প্রায় অভিন্ন।

কোন গতিশীল-নির্দিষ্ট নকশা নিদর্শন আছে?

হতে পারে. পাইথন eval()এবং execfile()ফাংশনগুলি - একভাবে - একটি স্থিতিকাল ভাষায় পরিচালনা করা কঠিন (তবে অসম্ভব থেকে দূরে) একটি গতিশীল ভাষার বৈশিষ্ট্যটি চিহ্নিত করুন। একই প্রক্রিয়া স্পেসে কোডটি সংকলন ও সম্পাদন করতে কোডের আরও অনেক লাইন হবে।

এটি গতিশীল-ভাষা নির্দিষ্ট নয়। এটা সহজ।


2
"আপনি সহজেই পরীক্ষা করতে পারবেন না" "- সত্য, ট্রেড অফটি হওয়ায় সংকলক আপনাকে ত্রুটিগুলি খুঁজে পেতে সহায়তা করে যেখানে ব্যাখ্যামূলক ভাষাগুলি সহ কোনও ব্যবহারকারী সেই কোডের লাইনটি কার্যকর না করা পর্যন্ত আপনি কোনও ত্রুটি খুঁজে পেতে পারেন না।
ডগ টি।

4
@ ডগ টি .: "সংকলক আপনাকে ত্রুটিগুলি খুঁজে পেতে সহায়তা করে"। কখনও কখনও। প্রায়শই যথেষ্ট হয় না। আকর্ষণীয় ত্রুটিগুলি কোনও সংকলক মোটেই খুঁজে পাওয়া যায় না। ইউনিট টেস্টিং এটাই।
এস .লট

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

1
@ কোয়ান্টিক্যাল: এটি আসলে স্থাপত্য নয়, তাই না?
এস .লট

2
"আপনি এত সহজে পরীক্ষা করতে পারবেন না।" - এফ # এবং হাস্কেল উভয় স্থিতিকর ভাষা এবং এগুলিতে পূর্ণাঙ্গ আর.পি.এল. রয়েছে এবং খুব কমই আপনাকে কোনও সনাক্তকারী বা অভিব্যক্তির ধরণ সম্পর্কে জিজ্ঞাসা করে।
রেই মিয়াসাকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.