গুগল গো কি টাইপ-সেফ ভাষা?


14

এই পৃষ্ঠাটি http://golang.org/doc/go_faq.html লিখেছেন:

যদিও গো স্থির ধরণের রয়েছে ভাষাটি সাধারণত ওও ভাষাগুলির চেয়ে হালকা ওজন বোধ করার চেষ্টা করে

সুতরাং আমার প্রশ্নটি হ'ল এটি নিরাপদে জেনেরিক (সি # এর মতো) টাইপ করা বা আলগাভাবে টাইপ করা (জাভাস্ক্রিপ্টের মতো) বা alচ্ছিক (ভিবি.নেটে বিকল্পের মতো কঠোর)


@ জেমস ম্যাসনেলিস অর্থ, যদি কোনও প্রকার ব্যর্থ হয় তবে এটি কেবল কারণ আমি টাইপ-কাস্ট করতে পারি (অন্য কোনও ক্রিয়াকলাপের ফলে ব্যতিক্রম
ঘটানো

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

উত্তর:


26

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

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

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

গুগল গো এই ধরণের ক্ষেত্রেও সুরক্ষিত যে আপনি প্রকারের সাথে গোলমাল করতে পারবেন না এবং প্রোগ্রামটি ক্র্যাশ করতে পারবেন না (পয়েন্টারগুলিতে সরাসরি অ্যাক্সেস নেই)।


যদি আপনি "অনিরাপদ" প্যাকেজটি ব্যবহার না করেন, তবে আপনি নিজের পছন্দ মতো প্রোগ্রামটি ক্র্যাশ করতে পারেন :)
এলফ

আপনি যা করতে পারেন ধরনের নিয়ে জগাখিচুড়ি এবং পয়েন্টার অ্যাক্সেস আছে। এবং হ্যাঁ, আপনি সহজেই এটি করে আপনার প্রোগ্রামটি ক্রাশ করতে পারেন।

4

এটি নিরাপদে টাইপ করা হয়েছে যে কোনও প্রকারের কখনই ভুল ব্যাখ্যা করা যায় না, তবে একটি ভুল ধরণের কারণে প্রোগ্রামটি আতঙ্কিত হতে পারে।


আমি এটি পাই না, এর অর্থ কি নন-টাইপ নিরাপদ কোডটি আসলে সংকলন করা যায়? (যা গতিশীলতা ব্যবহার না করে সি # তে সম্ভব নয়)
পেসারিয়ার

প্রকারভেদ, প্রকার অনুসারে কাজ করা করাই মূলত একটি গতিশীল ধরণের পদ্ধতিতে কল করার মতো
ড্যান_ওয়াটারওয়ার্থ

ঠিক আছে তাই সংক্ষেপে এটি টাইপ-সুরক্ষা সি # অনুমতি দেয় না?
পেসারিয়ার

আপনি টাইপ assertions না করেন এটি করে।
ড্যান_ওয়াটারওয়ার্থ

5
@ পেসারিয়র: গতিবিধি ছাড়াই সি # তে ভুল টাইপযুক্ত এক্সপ্রেশন চালানো পুরোপুরি সম্ভব: কেবল সর্বত্র ক্যাসেট সন্নিবেশ করান (মূলত এটি কী ধরণের দাবি রয়েছে)।
sepp2k

-1

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

প্রকারের সুরক্ষা এবং মেমরির সুরক্ষা দীর্ঘমেয়াদী লক্ষ্য, এখানে মিথ্যা সমস্যা রয়েছে।

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

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

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

সংমেয় আদিম ভবিষ্যতের। প্রকার সুরক্ষা বরাবরই একটি অত্যন্ত বিতর্কিত বিষয় এবং 20 বছর বা আলগোলের পর থেকে এই সমস্যাটির সমাধান করার জন্য সম্ভবত প্রথম ভাষা যান।


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

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