সংকলন বনাম ট্রান্সপিলিং


92

পার্থক্যটি অনুসন্ধান করার সময়, আমি এই সংজ্ঞাগুলি পেয়েছিলাম:

সংকলন হ'ল একটি শব্দে লিখিত উত্স কোড গ্রহণ এবং অন্য ভাষায় রূপান্তর করার জন্য সাধারণ শব্দ।

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

আমি বুঝতে পারি অ্যাবস্ট্রাকশন কী।

তবে উপরোক্ত সংজ্ঞায় "বিমূর্ততার অনুরূপ স্তর" এর অর্থ কী? এবং আমরা কীভাবে কোনও ভাষায় বিমূর্তির স্তর খুঁজে পাই?



উত্তর:


142

আপনি উপরে যে সংজ্ঞাটি উদ্ধৃত করেছেন তা কোনও শিক্ষানবিশকে পুরোপুরি বোঝার জন্য খুব সাধারণ এবং তাই আমি এটি ব্যবহারিকভাবে দেখতে পাই এমন কিছুতে এটি সহজতর করি।

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

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

ট্রান্সপোর্টারগুলির কয়েকটি উদাহরণ:

  1. এমস্ক্রিপ্টেন : সি / সি ++ জাভাস্ক্রিপ্টে স্থানান্তর করে
  2. বাবেল : ES6 + কোডটি ES5 তে রূপান্তর করে (ES6 এবং ES5 জাভাস্ক্রিপ্ট ভাষার বিভিন্ন সংস্করণ বা প্রজন্ম)

এখন, "বিমূর্ততার অনুরূপ স্তরের" দ্বারা তারা কী বোঝায়: যেমনটি আমি বলেছিলাম এটি একটি উত্স ফাইলে সংকলন / স্থানান্তর করে, যে কেউ তর্ক করতে পারে যে সমাবেশ ভাষাও একটি উত্স ফাইল এবং সুতরাং জিসিসিও ট্রান্সপ্লেলার। সুতরাং, এই যুক্তিটি কি বিমূর্ততা এর অনুরূপ স্তর voids।

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

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

সুতরাং, একটি ট্রান্সপ্লেলার এমন একটি ভাষার সাথে সংকলন করে যা আপনি এই বিমূর্ততার শর্তে (বা নিম্ন-মধ্য-উচ্চ স্তরের ভাষার মইতে সেই ভাষার স্তরের কাছাকাছি) যে ভাষাটির শুরু করেছিলেন তার কাছাকাছি।

আশাকরি এটা সাহায্য করবে!


9
"ট্রান্সপোর্টারগুলির কয়েকটি উদাহরণ:" --- বাবেল নিজেকে সংকলক বলে। ট্রান্সপোর্টার এবং সংকলকগুলির মধ্যে পৃথকীকরণ সত্যই কৃত্রিম।
zerkms

13
@ জারকামস আমি যেমন বলেছি, ট্রান্সপোর্টারগুলি সংকলকগুলির একটি উপসেট।
তপনানন্দ

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

4
মতামত: আমি পোষ্ট দিচ্ছি যে সংজ্ঞাগুলি হওয়া উচিত: সংকলন: ভাষা -> নিম্ন স্তরের ভাষা। প্রতিস্থাপন: ভাষা -> একই স্তরের ভাষা।
দেজি

4
@ দেজি একই স্তরের ভাষা নয়, বিমূর্ততার একই স্তরের ভাষা।
তপনানন্দ

33

এখানে উত্তর দেওয়ার মতো বর্ণনামূলক উপায় রয়েছে

যদি আপনি এই উদাহরণ হিসাবে বিমূর্ত স্তরগুলির কথা ভাবেন:

(1) CPU-level (actual logic gates on the CPU)
(2)machine code
(3)assembly code
(4)[C/C++, JVM/bytecode]
(5)[JavaScript, Python]

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


4
কৌতুহল, "বিমূর্ত স্তর" এর তালিকাটি কোথা থেকে এসেছে?
er

কেবল এলোমেলো উদাহরণস্বরূপ উদাহরণগুলি, আমি জানি প্রথম দুটি
হ'ল কান্ডা মুশি টিবিএইচ

4
আমি এটি পছন্দ করি এবং এটি যদি কিছু "অফিসিয়াল" শ্রেণিবিন্যাস হত তবে এটি সত্যিই দুর্দান্ত হবে। যেহেতু এটি ছাড়াই কোনও সরঞ্জাম (অনুবাদক) একটি বা অন্য বিভাগে রাখা শক্ত hard যেমন: javacএকটি সংকলক বা না।
3:30 এ জার্কम्स

2

আমি বেশিরভাগ ক্ষেত্রে তপনানন্দের উত্তরের সাথে একমত, কিন্তু ...


সংজ্ঞা

শব্দগুলি "তৈরি" হয়, সুতরাং তারা একটি উদ্দেশ্য পরিবেশন করে। এবং এটি সময়ের সাথেও পরিবর্তিত হয়।

আমরা এখন ট্রান্সপেলারটি ব্যবহার করে এমন সংকলক নির্দিষ্ট করেছিলাম যা কোডটিকে অন্য কোনও কোডে উত্সর সাথে "আরও অনুরূপ" অনুবাদ করে, সংকলকটি কি করতে পারে specify উভয়ই একই প্রসঙ্গে উল্লিখিত হয় (এবং প্রায়শই বোঝায় যে একটি ট্রাইপাইল ভাষা কমপক্ষে আরও একবার সংকলন করতে হবে) উভয়কেই আলাদা করতে ব্যবহার করা হয়


উদাহরণ

সুতরাং সবকিছু খুব বিষয়গত। এই লেখার সময়:

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

ফাজিত

সুতরাং ট্রান্সপাইল এই সময়ে খুব কমই ব্যবহৃত হয়, এবং কেবল দুটি সংকলককে আলাদা করতে বলে।

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


2

উদাহরণস্বরূপ: টাইপস্ক্রিপ্ট (টাইপ নিরাপদ চেকিং সহ জাভাস্ক্রিপ্টের একটি মাইক্রোসফ্ট সুপারসেট) জাভাস্ক্রিপ্ট কোডে স্থানান্তর করে যা বিভিন্ন ধরণের ব্রাউজারগুলিতে চলতে পারে।

https://en.wikedia.org/wiki/Mic Microsoft_TypeScript "মাইক্রোসফ্ট টাইপসক্রিপ্ট একটি মুক্ত-উত্স প্রোগ্রামিং ভাষা যা মাইক্রোসফ্ট দ্বারা বিকাশিত এবং রক্ষণাবেক্ষণ করা হয় It এটি জাভাস্ক্রিপ্টের একটি কঠোর সিনট্যাকটিক্যাল সুপারসেট, এবং ভাষাতে alচ্ছিক স্ট্যাটিক টাইপিং যুক্ত করে।

প্রকারের স্ক্রিপ্টটি জাভাস্ক্রিপ্টে বড় অ্যাপ্লিকেশন এবং ট্রান্সকোমাইলগুলির বিকাশের জন্য ডিজাইন করা হয়েছে [[5] যেহেতু টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের একটি সুপারস্টেট, বিদ্যমান জাভাস্ক্রিপ্ট প্রোগ্রামগুলিও বৈধ টাইপস্ক্রিপ্ট প্রোগ্রাম। টাইপস্ক্রিপ্ট ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড (নোড.জেএস) উভয়ের প্রয়োগের জন্য জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন বিকাশের জন্য ব্যবহার করা যেতে পারে। "


সেখানে "টাইপস্রিপ্ট সংকলক" (বা টিএসসি) সরঞ্জাম রয়েছে, এর নামকরণ থেকে বোঝা যায় যে টাইপস্ক্রিপ্টটি সংকলিত নয়, ট্রান্সপ্লাইড করা হয়েছে ... তবুও সরঞ্জামটি টাইপসক্রিপ্টটিকে জাভাস্ক্রিপ্টে রূপান্তর করে, যা বিমূর্ততার একই স্তরের অন্তর্নিহিত হার্ডওয়্যারকে রিট করে। টাইপস্ক্রিপ্ট কি সংকলিত, বা স্থানান্তরিত হয়?
অ্যালেক্স ম্যাকমিলান

@ অ্যালেক্সম্যাকমিলান টাইপসক্রিপ্টটি সংকলিত, কারণ এটি জাভাস্ক্রিপ্টের একটি সুপারস্টেট এবং এটি জাভাস্ক্রিপ্টে সংকলিত হয়ে যায়।
আরেমার

@ আরেমার আপনি কি সংকলন এবং প্রতিস্থাপনের মধ্যে পার্থক্য বুঝতে পেরেছেন? কারণ টিএস সংকলিত নয়; না জেএস।
অ্যালেক্স ম্যাকমিলান

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