গতিশীল টাইপ করা ভাষাগুলি কি সমস্ত সমালোচনার দাবি রাখে? [বন্ধ]


35

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

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

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

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

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


3
আমি মনে করি যে স্ট্যাটিক টাইপ সহ টাইপ ইনফারেন্স এবং সম্ভাব্য হাঁসের টাইপিং করাই সর্বোত্তম সম্ভাব্য উপায়। এটি খুব জটিল
কেসব্যাশ

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

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

2
@ চিন্ময়কঞ্চি: ভারবোসিটি? আপনি কেবল কিছু হিসাবে ঘোষণা করুন dynamicএবং এটি ব্যবহার শুরু করুন। এটি সাধারণ পদ্ধতি কল বা অপারেটর ওভারলোডের চেয়ে ভার্বোজের আর কোনও নয়।
জোয়

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

উত্তর:


46

হ্যাঁ, আমি বিশ্বাস করি যে তারা তা করে।

একটি নতুন প্রকল্পের জন্য কোনও ভাষা নির্বাচনের ক্ষেত্রে কয়েকটি কারণ বিবেচনা করা দরকার:

  • রান-সময় গতি। সি / সি ++ / ফোর্টরানের তুলনায় পার্ল এবং পাইথন এত মজাদার are
  • প্রারম্ভিক গতি। ফাস্ট ভাষায় উপরে তুলনায় জাভা বৃক্ষের পতন হয় এবং কাঁদে যেমন জেভিএম লোড হচ্ছে এবং লোড হচ্ছে এবং রাখে ... while(1)....
  • প্রোটোটাইপ-ক্ষমতা। সি ++ বা জাভার জন্য প্রয়োজনীয় বিবৃতি / সংজ্ঞা কাজের মধ্য দিয়ে নিঃশব্দে যাওয়া এবং করা એલওসি-র বৃদ্ধি করে, এটিই একমাত্র পরিচিত মেট্রিক যা নির্ভরযোগ্যভাবে বাগ-অ্যাকাউন্টগুলির সাথে সংযুক্ত থাকে। এটিও অনেক সময় নেয়। এটির জন্য প্রকার এবং সংযোগ সম্পর্কে আরও কিছুটা চিন্তা করা দরকার।
  • অভ্যন্তরীণ ফিডলেবিলিটি। আপনি আপনার স্ব-সংশোধনকারী কোডটি ডিবাগ করা শুরু না করা পর্যন্ত আপনার অভ্যন্তরগুলির সাথে ডায়নামিকভাবে গোলমাল করা দুর্দান্ত । (পাইথন, লিস্প, পার্ল)
  • সঠিকতা যাচাইকরণ। একটি সংকলক সি ++ এ আপনার কোডের আধিক-সঠিকতার একবারে দ্রুত পাস করতে পারে এবং এটি সত্যিই দুর্দান্ত হতে পারে ।
  • স্থির বিশ্লেষণ বিশদ। সি এবং জাভা বেশ ভাল স্থিতিশীল বিশ্লেষণ আছে। পার্ল কোনও তাত্ত্বিক স্তরে সম্পূর্ণ স্ট্যাটিক্যালি বিশ্লেষণযোগ্য নয় (সম্ভবত পাইথনও)। আমি যুক্তিসঙ্গতভাবে নিশ্চিত যে লিস্প হয় না।
  • অদ্ভুত প্ল্যাটফর্মগুলি সাধারণভাবে কেবল সি গ্রহণ করে।
  • সাপোর্ট চেইন। যদি আপনি এমন একটি চুক্তি করতে পারেন যা আপনার বাগগুলি দেখবে এবং তার সাথে কাজ করবে তবে তা বিশাল

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

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

অবশ্যই, আমি ওয়েব অ্যাপ / স্টার্টআপ ওয়ার্ল্ডের কথা বলছি না, যা উচ্চ ঝুঁকি / উচ্চ পুরষ্কারের নিয়মগুলির দ্বারা খেলতে থাকে এবং প্রযুক্তির ফ্র্যাংথিং প্রান্তে থাকার জন্য খুব উন্মুক্ত থাকে।


16
"এটি নিখরচায়, আপনি এতে কাজ করেন!" <- সাধারণভাবে এফ / ওএসএসের সাথে সবচেয়ে বড় সমস্যা, আমি +1 করতাম তবে আমি ভোটের বাইরে :(
বিলি ওনেল

4
চমৎকার সারসংক্ষেপ। আমি সেই ভাল-নির্মানিত ধরণের অর্থগুলি বোঝাবো (আমি কোনও প্রকারের দিকে তাকিয়ে বুঝতে পারি যে এটি কী করে, কীভাবে এটি ব্যবহার করা যেতে পারে) এবং সঠিকতা প্রয়োগ করতে ব্যবহার করা যেতে পারে (আমি এমন এক ধরণের তৈরি করতে পারি যা কেবলমাত্র সীমাবদ্ধ ইনপাস গ্রহণ করে ), এবং আমি টাইপগুলি থেকে বোবা ত্রুটিগুলি পাই না (আমি অটো-ভেরিয়েবল ঘোষণাকে ঘৃণা করি)
স্মিথকো

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

4
আমি আপনার উত্তরটি পছন্দ করি তবে জাভা গতিশীলভাবে টাইপ করা হয় না ...
মেহরদাদ

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

24

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

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

এবং আসুন ভুলে যাব না ভিবিএতে লিখিত কোডের বাগগিলিয়ন লাইনগুলি!


1
"এর জন্য +1 ... আগামীকালকের উদ্যোগগুলি [এবং] সেই ভাষাগুলি ব্যবহার করবে।"
rdmueller

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

17

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

উদ্যোগ না সম্পর্কে যত্ন:

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

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


1
আমি বিশ্বাস করতে পারি না কেউ এখনও আপনার উত্তরটিকে উঁচু করে তুলেছে।
সেবাস্তিয়ান এন।

11

উদ্যোগগুলি এরলং, রুবি এবং পাইথনের মতো ভাষা ব্যবহার শুরু না করার মূল কারণটি এগুলি ডাইনামিক টাইপের বলে মনে হয়।

আমি মনে করি এটি কেবল তাদের প্রাথমিক অজুহাত। আসল কারণ হ'ল ব্যবসাগুলি সেগুলি সত্যিই এগুলি গুরুত্বের সাথে নেয় না এবং মনে হয় যে তারা সম্ভবত কিছুটা অপেশাদার। জাভা এবং .NET হ'ল "বড় ব্যবসার নাম", ভাল বাণিজ্যিক বিপণন আছে, বাণিজ্যিক গ্রাহক সমর্থন রয়েছে এবং এইভাবে সত্যই এটি ব্যাপকভাবে গুরুত্ব সহকারে নেওয়া হয়।

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


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

13
@ চিন্ময় কাঞ্চি: আকর্ষণীয় আপনি কীভাবে একটি পরিসংখ্যান থেকে নিজের উপসংহারটি
আঁকেন

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

2
এছাড়াও, আপনি যদি মনে করেন যে ডায়নামিকালি টাইপ করা ভাষাগুলি ওপেন সোর্স পরিবেশে সর্বাধিক ব্যবহৃত হয় তবে এটি পরিষ্কার-পরিচ্ছন্নতা থেকে অনেক দূরে। আপনার চয়ন করা মেট্রিকের উপর নির্ভর করে এটি সত্য হতে পারে তবে এটি প্রায়শই হয় না। কোডের লাইনগুলি পরিমাপ করে সি লম্বা শটে জয়লাভ করে। আপনি যদি মাল্টি-ল্যাঙ্গুয়েজগুলি সহ ওপেন সোর্স প্রকল্পগুলিতে কোন ভাষাগুলি ব্যবহৃত হয় তা পরিমাপ করেন তবে সর্বাধিক জনপ্রিয় ভাষাগুলি সেই ক্রমে জাভাস্ক্রিপ্ট, সি, সি ++ এবং পিএইচপি হয়। আপনি যদি কেবল প্রাথমিক ভাষাটি পরিমাপ করেন তবে সর্বাধিক জনপ্রিয় ভাষা হ'ল পার্ল, জাভা, সি # এবং জাভাস্ক্রিপ্ট। bit.ly/C6xTB
কাঞ্চি

7
অবশ্যই গতিশীল টাইপযুক্ত ভাষার জন্য একটি অপ্টিমাইজার লেখা শক্ত, তবে কোনও অনুবাদক নয় : আপনি সমস্ত প্রকারের পরীক্ষা-নিরীক্ষা করতে পারেন, এবং বাকীটি একই রকম। কোনও অপেশাদার ভাষা নির্মাতা অপ্টিমাইজার লেখার কথা ভাবেন না। - শেষ বিটটি সম্পর্কে, আমি বোঝাতে চাইনি যে বেশিরভাগ ওপেন সোর্স সফ্টওয়্যারটি গতিশীল টাইপযুক্ত প্রোগ্রামিং ভাষায় রচিত, বরং বেশিরভাগ ওপেন সোর্স প্রোগ্রামিং ভাষা (আমি "পরিবেশ" বলেছিলাম কারণ আমি কথা বলছি) সংকলক / দোভাষী, আইডিই, ইত্যাদি) গতিশীল টাইপযুক্ত।
টিমভি

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

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


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

17
আমি গতিশীল টাইপিং পছন্দ করি তবে ভেরিয়েবলগুলি পূর্বনির্ধারিত না করে আমি ঘৃণা করি ! আমি বহুবার ঘটনাক্রমে নতুন ভেরিয়েবল প্রবর্তন করি কারণ আমি একটি ভেরিয়েবলের নাম ভুল বানান করে।
ফ্রাঙ্ক শিয়েরার

1
@ ফ্র্যাঙ্ক: আমি অনিচ্ছাকৃতভাবে ভালবাসি যে পার্লের পরিবর্তনশীল ঘোষণাকে জোর করার জন্য একটি সেটিংস রয়েছে। এটি আমার মতে পার্লের অন্যতম সুবিধা।
পল নাথান

8

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

গতিযুক্ত টাইপ করা ভাষাগুলি স্ক্রিপ্টিং ভাষা বলে মনে হয়। আপনি বাশ বা কোনও ব্যাচ ফাইলে কোনও অ্যাপ্লিকেশন লিখবেন না। সমস্ত গতিশীল টাইপ করা ভাষা সেই বিভাগে লুপ করা হয় (অন্যায়ভাবে)।

ডায়নামিকালি টাইপ করা ভাষাগুলি ধীরে ধীরে স্ট্যাটিকালি টাইপ করা ভাষা। (তবে আমরা দেখতে পাব যে জেআইটি-র কতটা ভাল কাজ করে তা পরিবর্তন করে)


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

1
@ ফ্র্যাঙ্ক আপনি কি বলছেন যে যারা গতিশীল টাইপিংয়ের নিকৃষ্টতার জন্য তর্ক করেন তারা সাধারণত এটি ব্যবহার করেন নি?
উইনস্টন ইওয়ার্ট

2
@ ফ্র্যাঙ্ক: আমি সেই ধরণের ভাষা ব্যবহার করেছি এবং বেশিরভাগ সময় ফলাফলটি অবিস্মরণীয় গোলযোগ। (সত্যি বলতে গেলে এটি পিএইচপি, এবং পিএইচপি-র গতিশীল টাইপিংয়ের পাশাপাশি অন্যান্য সমস্যাও রয়েছে)
বিলি ওনেল

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

@ উইনস্টন: আমি বলছি যে যাদের সাথে আমি যুক্তি দিয়েছিলাম তারা তা করেনি। এটি আমার ক্ষেত্রে, "ডায়নামিক টাইপিং সম্ভবত কাজ করতে পারে না" ... তবে তারা আনন্দের সাথে ডাইনামিক ভাষায় (আইডিই, রিফ্যাক্টরিং, আমার মাথার উপরের অংশে) প্রথমে তৈরি অনেক কৌশল ব্যবহার করবে techniques এছাড়াও, এই জাতীয় প্রশ্নগুলি: স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ২৩১797979 indicate ইঙ্গিত দেয় যে সম্ভবত সর্বজনীন না হলেও আমার এটির সাথে কাজ করার পক্ষে-তে-চেষ্টা-প্রোগ্রামারদের সাথে তর্ক করার বিষয়টি বিচ্ছিন্ন নয়। (আমি, আমি মনে করি উভয়
পদ্ধতিরই

8

দ্রষ্টব্য: এটি বেশিরভাগ বিষয়গত এবং আমার অভিজ্ঞতা এবং ছাপগুলির উপর ভিত্তি করে।

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

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

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

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

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

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

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

tl; dr: স্থির ভাষাগুলি আমলাতন্ত্রের মতো বেশি অনুভূত হয়, তাই এন্টারপ্রাইজীয় পরিচালকরা তাদের আরও ভাল পছন্দ করেন।


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

1
@ সুপের্যাট, আমি মনে করি পিএইচপি এবং জাভাস্ক্রিপ্ট এই সমস্যাটি মোকাবেলা করার দুটি উপায়ের জন্য অপারেটরগুলির ক্ষেত্রে (উদাহরণস্বরূপ) ভাল উদাহরণ: পিএইচপি অপারেটরগুলিতে দ্ব্যর্থহীন - +সংখ্যার দরকার হয় এবং সেগুলি যুক্ত করে, আপনি যদি কনটেন্টেশন চান তবে আপনাকে ব্যবহার করতে হবে .; জেএসে উভয় অপারেশন একই অপারেটরকে ভাগ করে - আপনার মানগুলি কীভাবে আচরণ করবে তা যদি আপনি না জানেন তবে আপনি সেগুলি স্পষ্টভাবে রূপান্তর করতে পারবেন বলে আশা করা হচ্ছে। অবশ্যই এটি আলগা টাইপিং বনাম কঠোর টাইপিংয়ের সাথেও করতে হবে (পাইথন এমনকি আরও কঠোর) তবে মূলত আপনাকে হয় আপনার মানগুলির সঠিক টাইপ আছে কিনা তা নিশ্চিত করতে হবে বা আপনার ক্রিয়াকলাপটি প্রত্যাশিত প্রকারগুলিকে কার্যকর করতে হবে।
অ্যালান বরই

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

1
... যদি দু'জন ব্যক্তি স্বাধীনভাবে একই রকম ইন্টারফেস বিকাশ করে তবে কোনও তৃতীয় পক্ষের কোড লিখিত হওয়ার কোনও উপায় নেই যা সেগুলি আন্তঃবিন্যভাবে ব্যবহার করতে পারে। যদি কোনও তৃতীয় পক্ষ কোনও নতুন ইন্টারফেস সংজ্ঞায়িত করতে পারে এবং ঘোষণা করতে পারে যে বিদ্যমান বা উভয় উভয়েরই প্রয়োগের ফলে নতুনটিকে স্বয়ংক্রিয়ভাবে প্রয়োগ করা উচিত (প্রয়োজনে নতুন ইন্টারফেসে সরবরাহ করা র‌্যাপারগুলি ব্যবহার করে) আমি মনে করি যে শব্দার্থগতভাবে 99% যা পরিচালনা করবে গতিশীল টাইপিং সম্পর্কে ভাল।
সুপারক্যাট

3

না, আমি মনে করি না যে গতিশীল টাইপ করা ভাষাগুলি সমস্ত সমালোচনার দাবি রাখে। (বা আপনি যদি পছন্দ করেন তবে এগুলি স্ট্যাটিকালি টাইপ করা ভাষার মতোই সমালোচনার দাবিদার serve)

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

কেবলমাত্র যখন আমি দাবি করি যে প্রযুক্তিগতভাবে ফু সম্ভবত একটি গতিশীল টাইপ করা ভাষায় করা যায় না (বা এটি করা খুব কঠিন হতে পারে) ... যখন সেই কৌশলটি আবিষ্কার করা হয়েছিল, তখন এবং গতিশীলভাবে টাইপের জন্য ভাষা. IDEs? স্বল্প কথা. স্বয়ংক্রিয় রিফ্যাক্টরিং? স্বল্প কথা. Callers অফ / প্রয়োগকারীরা অফ? স্বল্প কথা.


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

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

0

উদ্যোগগুলি কেবলমাত্র নতুন ভাষা এবং সরঞ্জামগুলিকে দ্রুত পর্যাপ্ত গ্রহণ করছে না এবং এর পিছনে ভাল কারণ রয়েছে। তবে, যখন সি # এর মতো একটি মূলধারার সরঞ্জাম যখন এই বৈশিষ্ট্যগুলির কয়েকটি প্রয়োগ করে, তখন তারা মূলধারার উদ্যোগগুলিতে জটিল হয়ে উঠবে ....


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