গতিশীল টাইপিংয়ের অনুমিত উত্পাদনশীলতা লাভ কী? [বন্ধ]


82

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

সুতরাং: ডায়নামিক টাইপিংয়ের সাথে উত্পাদনশীলতার জন্য কী বলা যায় যা প্রকৃতপক্ষে টাইপ মডেলেরই একটি সুবিধা?

স্পষ্টকরণ: আমি দ্রুত হ্যাকের চেয়ে বড় / মাঝারি আকারের প্রকল্পগুলিতে বেশি আগ্রহী। :-)


10
আপনি কি "স্ট্যাটিক জুটি" "গতিশীল জুটি" এর চেয়ে দ্রুত বা বেশি উত্পাদনশীল হওয়ার প্রত্যাশা করবেন?
স্টিভ 314

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

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

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

2
আমি সম্পূর্ণই জন স্কিট সাথে একমত msmvps.com/blogs/jon_skeet/archive/2009/11/17/...
ব্যবহারকারী

উত্তর:


99

আমি আসলে এটি একটি খুব কাছাকাছি কল মনে করি। গতিশীল টাইপিং এবং স্ট্যাটিক টাইপিং উভয়েরই তাদের সুবিধা রয়েছে।

গতিশীল টাইপিং আরও উত্পাদনশীল হওয়ার কারণগুলি:

  • এটি আরও সংক্ষিপ্ত - সমস্ত কিছু ডায়নামিকালি টাইপ করা থাকলে বহিরাগত বয়লারপ্লেট কোডটি মুছে ফেলা যায় - টাইপ ডিক্লেমারেশন, টাইপকাস্টিং যুক্তি ইত্যাদি। অন্যান্য সমস্ত জিনিস সমান হওয়ায়, সংক্ষিপ্ত কোডটি লেখার ক্ষেত্রে প্রান্তিক দ্রুত, তবে আরও গুরুত্বপূর্ণ বিষয়টি পড়তে তত দ্রুত হতে পারে এবং বজায় রাখুন (যেহেতু ঘটছে তার উপর একটি গ্রিপ পেতে আপনার অনেক পৃষ্ঠার কোডের মধ্য দিয়ে যাওয়ার প্রয়োজন নেই)
  • হাঁস টাইপিং এবং বানরের প্যাচিংয়ের মতো "হ্যাক" করার সহজ কৌশলগুলি আপনাকে খুব দ্রুত ফলাফল পেতে পারে (যদিও পরে আপনাকে বিভ্রান্ত করতে পারে ...)
  • আরও ইন্টারেক্টিভ - গতিশীল টাইপিং তাত্ক্ষণিকভাবে ইন্টারেক্টিভ, দ্রুত প্রোটোটাইপিং, রিয়েল-টাইম ডিবাগিং চলমান প্রোগ্রাম ইনস্ট্যান্স বা লাইভ কোডিংয়ের জন্য উপযুক্ত argu
  • পরীক্ষার কেসগুলি রানটাইম ত্রুটিগুলি ধরতে পারে - ধরে নিলে আপনি টিডিডি ব্যবহার করছেন বা খুব কমপক্ষে একটি ভাল টেস্ট স্যুট রয়েছে, এটি আপনার কোডে কোনও টাইপিংয়ের সমস্যা গ্রহণ করবে।
  • উন্নত পলিমারফিজম - গতিশীল ভাষাগুলি পলিমারফিক ফাংশন এবং বিমূর্ততা তৈরি করতে উত্সাহিত করার সম্ভাবনা বেশি, যা উত্পাদনশীলতা এবং কোড পুনরায় ব্যবহারকে উত্সাহ দিতে পারে। উদাহরণস্বরূপ ক্লোজার তার বহু বিমূর্ততায় গতিশীল পলিমারফিজমের দুর্দান্ত ব্যবহার করে ।
  • প্রোটোটাইপস - প্রোটোটাইপ ভিত্তিক ডেটা / অবজেক্ট মডেলগুলি আমার দৃষ্টিতে স্ট্যাটিকালি টাইপ করা উত্তরাধিকারের উত্তরাধিকারের চেয়ে আরও শক্তিশালী এবং নমনীয়। গতিশীল ভাষাগুলি একটি প্রোটোটাইপ-ভিত্তিক পদ্ধতির অনুমোদন বা উত্সাহ দেওয়ার সম্ভাবনা বেশি, জাভাস্ক্রিপ্ট একটি দুর্দান্ত উদাহরণ।

স্থির টাইপিং বেশি উত্পাদনশীল হওয়ার কারণগুলি:

  • আরও ভাল নকশা - আপনার সফ্টওয়্যারটির সামনে ধরণের মান সম্পর্কে চিন্তা করতে বাধ্য করা আপনাকে ক্লিনার, আরও যৌক্তিক সমাধানের দিকে ঠেলে দিতে পারে। (আমি বলতে পারি - এটি এখনও সত্যই খারাপ কোড ডিজাইন করা সম্ভব ...)
  • সংকলনের সময় যাচাই করা আরও ভাল - স্থির টাইপিং সংকলন সময়ে আরও ত্রুটি ধরা সক্ষম করতে পারে। এটি একটি বিশাল সুবিধা, এবং সামগ্রিকভাবে স্ট্যাটিক্যালি টাইপ করা ভাষাগুলির মধ্যে সবচেয়ে ভাল জিনিস।
  • স্বতঃসমাপ্তি - স্ট্যাটিক টাইপিং আইডিইতে আরও তথ্য সরবরাহ করতে পারে যাতে কোড বা ডকুমেন্টেশন লুকের স্বয়ংক্রিয়ভাবে সমাপ্তি আরও কার্যকর হয়।
  • হ্যাকগুলিকে নিরুৎসাহিত করে - আপনাকে আপনার কোডে টাইপ শৃঙ্খলা রাখতে হবে, যা দীর্ঘমেয়াদী রক্ষণাবেক্ষণের পক্ষে একটি সুবিধা হতে পারে।
  • অনুমান টাইপ করুন - কিছু ভাষায় (যেমন স্কেলা) এটি আপনাকে গতিশীল ভাষার অনেকগুলি সংক্ষিপ্ত সুবিধা পেতে পারে তবে এখনও শৃঙ্খলা বজায় রাখবে type

গড়ে আমার উপসংহার (বেড়ার উভয় পক্ষের বহু বছরের অভিজ্ঞতার পরে) হ'ল গতিশীল টাইপিং স্বল্পমেয়াদে আরও বেশি উত্পাদনশীল হতে পারে তবে আপনার খুব ভাল পরীক্ষার স্যুট এবং পরীক্ষার শৃঙ্খলা না থাকলে শেষ পর্যন্ত এটি বজায় রাখা কঠিন হয়ে পড়ে becomes

অন্যদিকে, আমি আসলে সামগ্রিকভাবে স্থিতিশীলভাবে টাইপ করা পদ্ধতির পছন্দ করি, কারণ আমার ধারণা সঠিকতা বেনিফিট এবং সরঞ্জাম সমর্থন আপনাকে দীর্ঘমেয়াদে আরও ভাল উত্পাদনশীলতা দেয়।


14
+1, খুব বিস্তারিত উত্তর। "বেটার কম্পাইল টাইম চেকিং" পয়েন্টের মানটি যথেষ্ট চাপ দেওয়া যায় না।
NoChance

8
টাইপ ইনফারেন্সের পাশাপাশি, হ্যাস্কেল-স্টাইলের ওভারলোডিং, সি ++ টেম্পলেট, জেনেরিকস এবং সম্ভবত কিছু অন্যান্য ভাষা বৈশিষ্ট্য রয়েছে যা স্ট্যাটিক-টাইপিং কাঠামোর মধ্যে হাঁস-টাইপের কিছু সুবিধা সরবরাহ করে - যতক্ষণ না অবজেক্ট প্রয়োজনীয় ইন্টারফেস সরবরাহ করে (এটি যতক্ষণ না "হাঁসের মতো হাঁসফাঁস") আপনি এটি ব্যবহার করতে পারেন, তা প্রায় নির্বিশেষে objects বস্তুর নামমাত্র। "প্রায়" কারণ কিছু পদ্ধতির জন্য কিছু প্রকারের "ধরণের ধরণের প্রাসঙ্গিক ধরণের" ঘোষণার প্রয়োজন হয় - যেমন হাস্কেলের "শ্রেণি" ঘোষণা।
স্টিভ 314

45
"সংক্ষিপ্ত কোড ... পড়তে এবং বজায় রাখা তত দ্রুত" আপনার এই দৃser় প্রতিবেদনের সাথে আমার দৃ strongly়ভাবে একমত হতে হবে না। একটি মধ্যবর্তী পদক্ষেপ রয়েছে, কোডটি বোঝা। আমাকে ডেল্ফি এবং জাভাস্ক্রিপ্ট উভয় ক্ষেত্রেই অন্যান্য লোকের কোড বজায় রাখতে হয়েছিল এবং ডেল্ফি কোডটি বোঝার পক্ষে আরও সহজ কারণ এটি আরও ভার্বোস। এবং সর্বাধিক বিশেষত কারণ ডেল্ফি কোডে প্রকারের ঘোষণাগুলি রয়েছে এবং জাভাস্ক্রিপ্ট নেই। আদিমদের চেয়ে জটিল কোনও কিছুর সাথে কাজ করার সময়, প্রকারের ঘোষণাগুলি আপনার ভেরিয়েবলগুলি কী এবং তারা কী করতে পারে তা তাত্পর্যপূর্ণ করে তোলে যা রক্ষণাবেক্ষণের কাজের জন্য প্রয়োজনীয় জ্ঞান।
ম্যাসন হুইলারের

21
আমি এখানে প্রদত্ত বেশিরভাগ কারণগুলির সাথে একমত হতে অনুরোধ করছি। হাস্কেলকে ধরুন, সেখানে সম্ভবত খুব কঠোর প্রকারের ব্যবস্থা রয়েছে। এটির একটি আরইপিএল রয়েছে (প্রকৃতপক্ষে কমপক্ষে দু'টি), এটি নির্মাণকারীদের সাথে প্যাটার্ন-ম্যাচিং করে খুব শক্তিশালী পলিমারফিজম দেখায় এবং এটি যতটা সংক্ষিপ্ত আশা করতে পারে - জাভাস্ক্রিপ্ট বা পাইথনের চেয়ে অনেক বেশি। সুতরাং আমি অনুমান করি যে কয়েকটি কারণ আপনি উল্লেখ করেছেন তা শিথিলভাবে টাইপ করা ভাষাগুলির চেয়ে অন্তর্নিহিত are
Andrea

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

56

গতিশীল ভাষার সাহায্যে আপনি টাইপ করা ভাষা ব্যবহারের চেয়ে ক্রেপি কোড দ্রুত লিখতে পারেন।

আপনি একবারে আপনার গতিশীল স্টাফগুলির বিশাল গাদাটি তৈরি করে নিলে, আপনি দীর্ঘমেয়াদী রক্ষণাবেক্ষণের যত্ন না নিয়ে নিরাপদে অন্য প্রকল্পে যেতে পারেন।

এটি উত্পাদনশীলতা লাভ :)

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

সুতরাং উত্পাদনশীলতা লাভটি তার জীবদ্দশায় মাঝারি / বড় প্রকল্পের জন্য একটি পৌরাণিক কাহিনী হতে পারে।


11
হ্যাঁ, আমার অভিজ্ঞতাও একই রকম। একটি 100 লাইন পার্ল স্ক্রিপ্ট ঠিক আছে, এবং এই জাতীয় দুর্দান্ত সরঞ্জামগুলি ছাড়া আমরা হারিয়ে যেতে চাই। তবে একটি 100 কে লাইন পার্ল প্রকল্প সম্ভবত একটি দুঃস্বপ্ন হতে পারে।
ইনগো

3
... এবং তারপরে আপনার জাভাস্ক্রিপ্ট রয়েছে (কেবল গতিশীল নয়, দুর্বলভাবেও টাইপ করা হয়েছে)।
ডেন

16

এই সমস্যার একটি তাত্ত্বিক দৃষ্টিভঙ্গিও রয়েছে: একটি স্ট্যাটিক টাইপ সিস্টেমটি মূলত একটি বিশেষতত্ত্বের উপপাদ্য প্রবাদ হয় যা কেবল যখন প্রোগ্রামটি গ্রহণ করে তখনই এটি এর ধরণ-সঠিকতা প্রমাণ করতে পারে। সমস্ত স্ট্যাটিক টাইপ সিস্টেমগুলি কিছু বৈধ প্রোগ্রাম প্রত্যাখ্যান করে কারণ কোনও সম্ভাব্য টাইপ-সঠিক প্রোগ্রাম প্রমাণ করার মতো কোনও স্থিতিশীল স্ট্যাটিক টাইপ সিস্টেম যথেষ্ট শক্তিশালী নয়।

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

কিছু ক্ষেত্রে যেখানে আপনি টাইপ-চেকারকে লক্ষ্য করে দেখছেন যে জেনেরিক পাত্রে এবং আর্গুমেন্ট এবং রিটার্নের ধরণের ক্ষেত্রে সহ-বিপরীততা রয়েছে।


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

5
জেনেরিক পাত্রে এবং স্পষ্টত সহযোগিতা / বিপরীত বোঝানো যদি আপনি এটি ভুল করেন তবে "আপনার পথে চলে" to সংকলন কোড যা রানটাইম এ ব্যর্থ হবে কি লাভ?
এম স্ট্রামম

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

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

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

15

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

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

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

আসলে, হাস্কেল কিছু জেনেরিক কোড লিখতে পারে যা গতিময়ভাবে টাইপ করা ভাষাগুলি পারে না; একটি নিখুঁত উদাহরণ হ'ল readফাংশন যা মূলত এর বিপরীত toString। আপনি একটি Intবা একটি Doubleবা যে কোনও প্রকার যা চান তা পেতে পারেন (যতক্ষণ না এটি নির্দিষ্ট ধরণের শ্রেণিতে থাকে)। এমনকি আপনি বহুরুপী থাকতে পারে ধ্রুবক , তাই maxBoundসর্বোচ্চ হতে পারে Int, Double, Char... ইত্যাদি।, সমস্ত হতে কি ধরনের এটা অনুমিত এর উপর নির্ভর করে।

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

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

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


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

3
আপনার উত্তরটি সার্থক, তবে ভুল রয়েছে। প্রথমত, এটি সত্য নয় যে গতিশীল ভাষাগুলির "কোনও টাইপ সিস্টেম নেই", সুতরাং এটি কারণ হতে পারে না যে তারা "জেনেরিক কোড লিখতে সহজ করে তোলে"। হাস্কেল শো সহ আপনার নিজস্ব পাল্টা নমুনা হিসাবে এগুলি এটিকে সহজ করে না (আপনি নিজের দাবি উত্সাহিত করেন!)। "আপনাকে কখনই টাইপ সিস্টেমের সাথে লড়াই করতে হবে না" মিথ্যা: আপনি প্রতিবারই এটির সাথে লড়াই করুন আপনার অবশ্যই একটি বাগ ঠিক করতে হবে যা পর্যাপ্ত স্থির টাইপচেকিংয়ের কারণে নয় was পরিশেষে, Intএকটি তালিকা দ্বারা স্পষ্টভাবে প্রত্যাবর্তনকে জোর দেওয়া তুচ্ছ; উদাহরণস্বরূপ 1.0 + fromIntegral (length myList), যেমন কেবল ব্যবহার করুন fromIntegral
আন্দ্রেস এফ।

2
শেষ অবধি, "দ্রুত কোড লিখন"! = "আরও উত্পাদনশীল হচ্ছে"। আপনার কোড কাজ করতে হবে! আপনি যদি বগী সফ্টওয়্যারটি লিখে থাকেন যা আপনাকে পরে ডিবাগিং এবং ফিক্সিংয়ে ব্যয় করতে হবে তবে আপনি উত্পাদনশীল হচ্ছেন না।
আন্দ্রেস এফ।

"অত্যধিক চিন্তা না করেই" লাল পতাকাটি বেশিরভাগ লোকেরা যখন গতিশীলভাবে টাইপ করা ভাষাগুলি "বেশি উত্পাদনশীল" হওয়ার বিষয়ে কথা বলেন তখন তার অর্থ কি
অ্যাটারাক্সিয়া

যদি টাইপ সিস্টেমগুলি সত্যিই উত্পাদনশীলতার উন্নতি করে যেখানে হাস্কেল বা ইদ্রিসের সমস্ত দরকারী অ্যাপ্লিকেশন রয়েছে? আমি মনে করি প্রকার ত্রুটি, "প্যাচাবিলিটি" (অপ্রত্যাশিত উপায়ে আপনার অ্যাপ্লিকেশনটি সম্পাদনা করার ক্ষমতা) এবং ডকুমেন্টগুলির 90% ত্রুটি তদন্ত এবং টাইপ অনুমানের বিষয়গুলি বোঝার মতো বিষয়গুলি আরও গুরুত্বপূর্ণ হতে পারে things
aoeu256

7

প্রশ্ন: আমি প্রায়শই দাবিটি শুনেছি যে স্ট্যাটিকালি টাইপ করা ভাষার চেয়ে গতিশীল টাইপ করা ভাষাগুলি বেশি উত্পাদনশীল। এই দাবির কারণ কী? "

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

এখানে কিছু বিষয় বিবেচনা করতে হবে:

আবর্জনা সংগ্রহ : আবর্জনা সংগ্রহ একটি বিশাল উত্পাদনশীলতা বৃদ্ধি। আমি বিশ্বাস করি যে জাসা হ'ল জিসির সাথে প্রথম মূলধারার স্থির ভাষা ছিল। এর আগে, স্ট্যাটিক মূলত ম্যানুয়াল মেমরি পরিচালনা। (দ্রষ্টব্য: এখানে এবং নিম্নলিখিতগুলিতে আমি কেবল মূলধারার ভাষাগুলি বিবেচনা করছি L প্রচুর পরীক্ষামূলক এবং কুলুঙ্গিক ভাষা বিদ্যমান যা আমার যে কোনও বিন্দুতে জবাবদিহি দেবে))

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

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

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

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

বন্ধ এবং ল্যাম্বদা সিনট্যাক্স - গতিশীল ভাষাগুলি সাধারণত শুরু থেকেই এটি ছিল, তবে স্থির ভাষাগুলি এটি সম্প্রতি গ্রহণ করেছে Java

ইন্টারফেসিভিত্তিক কোড স্নিপেটগুলি দ্রুত পরীক্ষা করার ক্ষমতা রিপল করুন একটি বিশাল वरदान। তবে আইডিই সরঞ্জামগুলি, ভিজ্যুয়াল স্টুডিওতে "তাত্ক্ষণিক" উইন্ডোর মতো, স্থির ভাষাগুলি কিছুটা হলেও এটি অনুকরণ করতে পারে।

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

নীচের লাইন: icallyতিহাসিকভাবে এটি সত্য ছিল, তবে আজ উত্তরটি কম পরিষ্কার হয়েছে।


প্রশ্ন: সুতরাং: ডায়নামিক টাইপিং সহ উত্পাদনশীলতার জন্য কী বলা যায় যা টাইপ মডেলের নিজেই একটি সুবিধা?

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

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

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

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

রোজলিন রোজলিন মূলত প্রয়োগ করে eval, যা একসময় সত্যিকারের গতিশীল ভাষার সংজ্ঞা বৈশিষ্ট্য হিসাবে বিবেচিত হত।

ডায়নামিকdynamic টাইপ C # এর মধ্যে সবচেয়ে স্পষ্টভাবে গতিশীল বৈশিষ্ট্য, এবং বহিরাগত বস্তু এবং সহজ এবং আরো উত্পাদনশীল ভাষার সঙ্গে মিথষ্ক্রিয়া উপার্জন এ বিজ্ঞাপনে করা হয়। তবে এটি সুবিধার্থে এএসপিএনভি এমভিসিতেও ব্যবহৃত হয়।

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


আমি এই উত্তরটি সত্যই পছন্দ করি না, কারণ প্রায় সমস্ত পয়েন্টই মূল প্রশ্নটিকে সম্বোধন করে না, "গতিশীল টাইপিংয়ের অনুমিত উত্পাদনশীলতা কী ?" না গতিশীল ভাষায়
আয়া

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

@ নান্নি: প্রশ্নটি আসলে "গতিময় টাইপ করা ভাষা" সম্পর্কে জিজ্ঞাসা করে, কেবল "গতিশীল টাইপিং" নয়।
জ্যাকবিবি

@ মিশেলটি দুঃখিত আমি পরিষ্কার ছিলাম না। ডায়নামিক টাইপিং সমস্ত গতিশীল ভাষার একটি দিক। এই উত্তরটি অন্যদের এমন দিক সম্পর্কে কথা বলছে যা historতিহাসিকভাবে, গতিশীল ভাষাগুলি আসলে গতিশীল টাইপিং অংশটি সম্বোধন না করেই আসে come
আয়া

1
@ নান্নি: আমি মূলত এর জবাব দিচ্ছি: "আমি প্রায়শই দাবিটি শুনেছিলাম যে গতিশীলভাবে টাইপ করা ভাষাগুলি স্ট্যাটিকালি টাইপ করা ভাষার চেয়ে বেশি উত্পাদনশীল। এই দাবির কারণগুলি কী?" - আমি বিশ্বাস করি যে এই দাবির কারণগুলি historicalতিহাসিক এবং কেবল গতিশীল টাইপিংয়ের সাথে নয় তবে গতিশীল ভাষার বৈশিষ্ট্যগুলির উন্নতকরণের অন্যান্য উত্পাদনশীলতার সাথেও সম্পর্কিত।
জ্যাকবিবি

6

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

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

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

ব্যক্তিগতভাবে, আমি হ্যাক্স ব্যবহার করি, যা টাইপ ইনফারেন্স সহ একটি ভাষা, নামমাত্র এবং কাঠামোগত সাব টাইপিং উভয়ই, untচ্ছিক অপরিবর্তিত কোড, প্রথম শ্রেণির ফাংশন ধরণের, বীজগণিতীয় ডেটাটাইপস এবং (যথেষ্ট পরিপক্ক নয় তবে অত্যন্ত শক্তিশালী নয়) লেসিকাল ম্যাক্রোস থাকে, আরকেন সিনট্যাক্সকে এড়িয়ে চলার পরেও। এখন প্রায় ৩ বছর হ্যাক্স ব্যবহার করার পরে, আমি একটি সাধারণ সিদ্ধান্তে পৌঁছেছি:

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

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

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


"নিয়মটি হল, আপনার ভাষার বৈশিষ্ট্যগুলি তত ভাল, আপনার কোডটি আরও খাটো"। এটি কোনও স্তরের মতামত থেকে কম হতে পারে তবে আমি মনে করি না যে এই বিবৃতিটি সঠিক is সংক্ষিপ্ত কোডটি লেখার সময় কম টাইপ করা এবং সম্ভবত ডিস্কের কম স্থান গ্রহণ (যা যাইহোক সংকলিত ভাষাগুলির একটি অ-ফ্যাক্টর) গ্রহণ করা ব্যতীত নিজে থেকে খুব বেশি সুবিধা দেয় না। আমি মনে করি একটি ভাল ভাষার চিহ্নটি এটি সবচেয়ে সংক্ষিপ্ত পদ্ধতিতে কী করছে সে সম্পর্কে যতটা তথ্য পৌঁছেছে। গতিশীল টাইপিং খুব স্ব-ডকুমেন্টিং নয় এবং ফলস্বরূপ ইমো হিসাবে রক্ষণাবেক্ষণ হারায়
আটারাক্সিয়া

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

3

ব্যক্তিগতভাবে, ডায়নামিক টাইপিংয়ের সাহায্য করার একমাত্র কারণ হ'ল যদি আপনি সত্যিই ধীর টাইপিস্ট হন বা আপনি দানবীয় ফাংশন / পদ্ধতি / whetvers নির্মাণ করেন যা নেভিগেট করা শক্ত। আপনাকে পুরো ইউনিট পরীক্ষার ইস্যুতেও যেতে হবে। গতিশীল ধরণেরগুলির প্রয়োজন (যদি না আপনি ভাঙা কোড লিখতে পছন্দ করেন) জোর ইউনিট পরীক্ষাগুলি (আপনার গতিশীল ধরণেরগুলি অপ্রত্যাশিতভাবে প্রস্ফুটিত না হয় তা নিশ্চিত করার জন্য (যেমন ভেরিয়েবল বেশিরভাগ ক্ষেত্রে হাঁস হয়, তবে দুর্ঘটনাক্রমে কখনও কখনও dcuk থাকে))। পরিসংখ্যানগুলি এটি প্রতিরোধের জন্য আরও কঠোর চেষ্টা করবে (এবং হ্যাঁ, আপনি জোরালো ইউনিট পরীক্ষার পক্ষে যুক্তি তৈরি করতে পারেন)


0

আমি মনে করি সবার আগে আপনার "উত্পাদনশীলতা" সংজ্ঞায়িত করা উচিত। "উত্পাদনশীলতা" এর অর্থ এবং অন্তর্ভুক্ত কী?

যদি "আরও উত্পাদনশীল" বলতে বোঝায় আপনি একই বৈশিষ্ট্যটি প্রয়োগ করতে কোডের কম লাইন লিখেছেন, তবে হ্যাঁ, গতিশীল-টাইপিং প্রোগ্রামিং ভাষা স্থির-টাইপিং ভাষার চেয়ে "উত্পাদনশীল" are

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


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

@AndresF। ওহ, আমি সাধারণত পাইথন এবং সি ++ ব্যবহার করি।
yaobin

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

হ্যাঁ, তবে আপনি যদি আপনার প্রোগ্রামটি চলমান অবস্থায় সম্পাদনা করেন? যে কোনও রানটাইম সমস্যাগুলি সহজভাবে আসবে এবং আপনি তাদের ঠিক সেখানেই ঠিক করতে পারেন। লিস্পে, যখনই আপনি কোনও ত্রুটি পান আপনি কেবল নিজের প্রোগ্রামটি ঠিক করতে পারেন এবং তারপরে এটি চালিয়ে যেতে পারেন ... হ্যাঁ আরও জটিল পাথের জন্য টীকা টীকাগুলি ভাল হবে [সম্ভবত আপনি মাইপি এবং লিস্পের মতো ধীরে ধীরে টাইপিং ব্যবহার করতে পারেন] তবে আরও জটিল পথগুলি complex নন-টাইপ ত্রুটির সম্ভাবনাও রয়েছে তাই যে কোনও ভাষায় জটিল পাথগুলি এড়ানো ভাল ধারণা হতে পারে।
aoeu256

-1

ডায়নামিক টাইপিংয়ের বড় সুবিধা হ'ল উত্পাদনশীলতা।

পাইথন, রুবি ইত্যাদিতে ডায়নামিক টাইপিংয়ের পাশাপাশি প্রচুর অন্যান্য উত্পাদনশীলতা বুস্টার রয়েছে (ডিফল্ট পরামিতি, অভিধান ইত্যাদিতে নির্মিত অভিধান) program প্রোগ্রামার উত্পাদনশীলতার উপর সংশ্লেষিত প্রভাব চিত্তাকর্ষক।

গতির ক্ষেত্রে জরিমানা (বা অভাব!) এবং রিসোর্স ব্যয় ততটা খারাপ নয় যতটা আপনি আশা করেন এবং বেশিরভাগ ক্ষেত্রে উন্নয়নের গতি এবং নমনীয়তার দ্বারা ক্ষতিপূরণ দেওয়ার চেয়ে বেশি হয় more

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

আজ করা গবেষণাটি কী হতে পারে (সম্ভবত) আলাদা হতে পারে: -

  1. জাভা জেভিএম স্বীকৃতি ছাড়াই উন্নত হয়েছে।
  2. আধুনিক আইডিইগুলি সি ++ এবং জাভা কোডারগুলির উত্পাদনশীলতার উন্নতি করতে পারে তবে স্ক্রিপ্টিং ভাষাগুলিতে খুব কম পার্থক্য করেছিল।
  3. সি # অন্তর্ভুক্ত হবে এবং সম্ভবত জাভা হিসাবে একই বল পার্কে হতে পারে তবে কিছুটা ভাল।

সুতরাং বার্তাটি হ'ল যদি না পারফরম্যান্স সত্যই গুরুতর সমস্যা না হয় তবে গতিশীল ভাষাগুলি আপনার উত্পাদনশীলতা বাড়িয়ে তুলবে।


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

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

@ ম্যাসন - এই ক্ষেত্রে খুব কম প্রকৃত উদ্দেশ্য অধ্যয়ন রয়েছে। এটি প্রকৃত সংখ্যা ইত্যাদি সহ কয়েকটি আসল অধ্যয়নের মধ্যে একটি "নমুনা" প্রোগ্রামটি তুচ্ছ নয়! এটি অভিধান হ্যান্ডলিং, জটিল অ্যালগরিদম এবং বড় ডেটা ভলিউমের উপাদানগুলিকে একত্রিত করে। ব্যর্থ এবং ক্রাশিংয়ের প্রচেষ্টার উচ্চ শতাংশই এই কাজের অ-ক্ষুদ্র প্রকৃতির বিষয়টি নিশ্চিত করে।
জেমস অ্যান্ডারসন

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

1
@ জেমসএন্ডারসন আরও খারাপ, আপনি যে কাগজের সাথে লিঙ্ক করেছেন সেটি আপনার বক্তব্যকে সমর্থনও করে না। এটি "স্ক্রিপ্টিং ভাষা" (প্রায়শই গতিশীল) " প্রচলিত ভাষা" (প্রায়শই স্থিতিশীল) সাথে তুলনা করে । এখন, বলো তো, ঠিক কি হয় "প্রচলিত" Languages? আপনি কি মনে করেন এটি স্ট্যাটিক টাইপিংয়ের সাথে ভাষার সেটগুলির সমান? এমনকি খারাপ, কাগজ নয় যে বয়সী। 2000 সাল নাগাদ, স্ট্যাটিক টাইপিং সহ প্রচুর দুর্দান্ত ভাষাগুলি ইতিমধ্যে অস্তিত্বশীল গতিশীল ভাষার চেয়ে বেশি উত্পাদনশীল ছিল।
আন্দ্রেস এফ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.