পার্ল এবং জাভার মধ্যে মিল কী? [বন্ধ]


14

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


"আমি এই ভাষা পছন্দ করি!" সিদ্ধান্ত নিয়ে সামনে শুরু করুন। যখনই আপনি কোনও সমস্যার জন্য দৌড়াচ্ছেন কেবল নিজের সিদ্ধান্তটি মনে রাখুন এবং নিজেকে দাঁত নাকাল ও চুল টানতে বাঁচান।

1
প্রস্তাবিত পাঠ: গরিলা বনাম শার্ক

উত্তর:


32

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

সুতরাং, উভয়ই উচ্চ-স্তরের :

একটি উচ্চ-স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজ একটি প্রোগ্রামিং ভাষা যা কম্পিউটারের বিবরণ থেকে শক্তিশালী বিমূর্ততা থাকে।

এবং সাধারণ উদ্দেশ্য :

কম্পিউটার সফ্টওয়্যারটিতে একটি সাধারণ উদ্দেশ্যমূলক প্রোগ্রামিং ল্যাঙ্গুয়েজ (জিপিএল) এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ যা বিভিন্ন অ্যাপ্লিকেশন ডোমেনে বিবিধ সফ্টওয়্যার লেখার জন্য ব্যবহৃত হয়।

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

কিন্তু সেখানেই মিলগুলি থেমে যায়। পার্ল হ'ল বহু-দৃষ্টান্ত, প্রোগ্রামিং প্যারাডাইমগুলির বিস্তৃত পরিসরকে সমর্থন করে:

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

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

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

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

যা আমাদের শেষ বড় পার্থক্যে নিয়ে আসে:

পার্ল গতিশীল 3 :

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

এবং গতিশীলভাবে টাইপ করা 4 :

একটি প্রোগ্রামিং ল্যাঙ্গুয়েজটি গতিশীল টাইপড বলা হয় যখন বেশিরভাগ টাইপ চেকিং রান-টাইমে সংকলন-সময়ের বিপরীতে সঞ্চালিত হয়।

এবং জাভা স্থিরভাবে টাইপ করা হয় :

একটি প্রোগ্রামিং ল্যাঙ্গুয়েজটি রান-টাইমের বিপরীতে কম্পাইল-টাইম চলাকালীন টাইপ চেকিংয়ের সময় স্ট্যাটিক টাইপিং ব্যবহার করার কথা বলে।

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

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

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

1 "টিম টয়ডি"

2 পার্ল সম্প্রদায় পার্টের মাধ্যমে পার্ল ভার্চুয়াল মেশিনের সম্ভাব্যতা সক্রিয়ভাবে অনুসন্ধান করছে ।

3 ডায়নামিক মানে সর্বদা ডায়নামিক টাইপ করা হয় না।

পার্ল ব্যবহারকারীর সংজ্ঞায়িত প্রকারের জন্য গতিশীলভাবে টাইপ করা হয়, স্থায়ীভাবে অ্যারে, হ্যাশ, স্কেলার এবং সাবরুটাইনগুলির মধ্যে পৃথকভাবে টাইপ করা হয় এবং এর মাধ্যমে দৃ strongly়ভাবে টাইপ করা হয় use strict, তাই মূলত এটি একটি ভেরিয়েবল টাইপ সিস্টেমের ভাষা, তবে কিছুটা বোধগম্যতা বজায় রাখার জন্য এটিকে গতিশীল বলি টাইপ করা।

5 আপত্তিজনক বিষয় হিসাবে, জোল স্পলস্কি জাভাস্কুলগুলির দ্য বিপদগুলিতে লিখেছেন ।


6
পার্লের সাথে তুলনা করে, জাভা কোনও উচ্চ-স্তরের ভাষা নয়। পার্ল কোডের চেয়ে কিছু লিখতে জাভা কোড লাগে।
tchrist

1
@ ট্রিচ্রিস্ট কোনও ভাষা উচ্চ স্তরের, বা অন্য ভাষার তুলনায় উচ্চতর / নিম্ন স্তর কিনা এর সাথে কোডের পরিমাণের কী সম্পর্ক রয়েছে?
ইন্নিস

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

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

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

2

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


@ ডাউনটোট, কেন? (আমি উত্তরের প্রেমে এতটা ভালবাসি না যে, আপনি কী সমস্যার সমাধান পেয়েছেন তা সম্পর্কে কেবল কৌতূহলী।)
কাইল হজসন

1

বর্তমানে নির্বাচিত একজন যেহেতু বিকল্প উত্তরে ছুরিকাঘাত করা দু'জনের মধ্যে পার্থক্যের দিকে মনোযোগ দিচ্ছে বলে মনে হচ্ছে (পার্ল এবং জাভার মধ্যে সত্যিকারের অনেক মিল নেই)।

মিল

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.