জাভা এবং সি ++ এর চেয়ে বেশি কারণে আমি সি # বেছে নেব? [বন্ধ]


46

সি # আজকাল জনপ্রিয় বলে মনে হচ্ছে। শুনেছি সিনথেটিকভাবে এটি প্রায় জাভার মতোই। জাভা এবং সি ++ একটি দীর্ঘ সময়ের জন্য বিদ্যমান। জাভা এবং সি ++ এর চেয়ে বেশি কারণে আমি সি # বেছে নেব?


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

আমাকে কিছু edgeier আইটেম যোগ করুন। .NET এর ভাষার জন্য একটি সু-সংজ্ঞায়িত ডোম ( যেমন কোডডোম ) রয়েছে এবং ফলস্বরূপ রানটাইমগুলিতে গতিময় জিনিস তৈরি করা অনেক সহজ এবং আরও কার্যকর efficient এটি একটি অবকাঠামোগত ক্ষমতা হিসাবেও সহায়ক হতে পারে। এছাড়াও, টাইপ সিস্টেমে সমস্ত দেশীয় W3 প্রকারের সাথে 1-থেকে-1 ম্যাচ রয়েছে match এর মূল অংশে, ডাব্লু 3 এবং অন্যান্য ইন্টারপগুলি শুরু থেকেই ভাষায় বেক করা হয়েছিল। অন্যান্য ভাষার ক্ষেত্রে এই উদ্বেগগুলি কেবলমাত্র চালু ছিল এবং তাদের জন্য অনেক চ্যালেঞ্জ উপস্থিত রয়েছে। এছাড়াও, আপনি যদি প্রচুর ভাষা এবং / বা প্রোটোকল ব্যবহার করে
ইন্টারওপিং করছেন তবে নেটও

5
আরে, জোজিকি, প্রশ্নের উত্তর হিসাবে আপনার মন্তব্য যুক্ত করুন ।
অ্যান্টনি মাস্ট্রিয়ান

1
আসল প্রশ্নগুলি হ'ল: কী কারণে আমি সি # ওপরে নিমারল, এফ * এবং এফ # বেছে নেব? (অর্থাত, সব তিনটি ভাষায় মাইক্রোসফট থেকে এসেছ এবং তিনটি আরও ভাল হয়)
mrsteve

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

উত্তর:


76

প্রশ্নটি হওয়া উচিত "আধুনিক, সাধারণ অ্যাপ্লিকেশন বিকাশের জন্য কোন ভাষাটি আরও উপযুক্ত?"

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

সুতরাং আমার মাথার উপরের অংশটি (কিছু যুক্তি উভয় ভাষায় প্রযোজ্য) ...

সি # এতে সি ++ এর চেয়ে ভাল:

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

জাভা এর চেয়ে সি # আরও ভাল:

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

সম্পাদনা - মন্তব্য সম্বোধন

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

5
এবং আপনি যদি এখনও সি ++ এর জন্য কোনও আবর্জনা সংগ্রাহক চান তবে আপনি এটি ডাউনলোড করতে পারেন ।
ফ্রেডওভারফ্লো


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

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

2
-১ যেহেতু আমি বিভাগগুলি মিস করছি "সি ++ এর মধ্যে সি # এর চেয়ে ভাল ..." এবং "জাভা সি # ... এর চেয়ে ভাল।" আমি মনে করি না যে সমস্ত ক্ষেত্রে সি # উচ্চতর, সুতরাং এই দুটি বিভাগ ব্যতীত একটি উত্তর সম্ভবত কিছু গুরুত্বপূর্ণ তথ্যের অভাব রয়েছে।
জর্জিও

30

পরিবেশ

.NET ফ্রেমওয়ার্ক এবং উইন্ডোজ ক্লায়েন্ট

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

আইআইএস এবং উইন্ডোজ সার্ভার

আপনি যদি উইন্ডোজ পরিবেশে এবং সি # এর সাথে কাজ করতে ব্যবহার করেন তবে আপনার সার্ভার প্রোগ্রামিংয়ের জন্য আইআইএস এবং বেসিক প্রশাসনের জন্য উইন্ডোজ সার্ভার শেখার জন্য কমপক্ষে বিনিয়োগের প্রয়োজন হবে।

অ্যাক্টিভ ডিরেক্টরি এবং উইন্ডোজ সার্ভার

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

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

হ্যাঁ, সি ++ এবং জাভা থেকে আরও আধুনিক বৈশিষ্ট্যযুক্ত একটি ভাল ভাষা, তবে এটি সি # নির্বাচন করার জন্য সবচেয়ে গুরুত্বপূর্ণ জিনিস নয়

সারাংশ

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

আপনি যদি ইউনিক্স পরিবেশে যেমন ওয়েব সার্ভিস সহ কাজ করেন তবে জাভা আমার পছন্দ হবে। এবং যদি আপনি এম্বেড থাকা সিস্টেমগুলির সাথে কাজ করেন বা হার্ডওয়্যার ডিভাইসগুলির সাথে সংহত করতে হয় সি ++ ভাল পছন্দ হবে।


3
অবশ্যই - এই কারণেই আমি সি # ব্যবহার করি অন্য কোনও কারণে নয়
মারফ

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

কোনটি নির্ভরশীলতা বলতে আপনি বোঝাতে চাইছেন "এম্বেড থাকা সিস্টেমগুলির জন্য আমি সি ++ বেছে নেব যদি আমি অনেকগুলি নির্ভরশীলতা না করি।" আপনি জাভা লাইব্রেরি মানে?
পাকল

@ পাকল হ্যাঁ, তবে বেশিরভাগই জেভিএম / জেআর।
জোনাস

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

15

সি # এবং জাভা

সি # একটি খুব ভাল ভাষা যদি:

  • আপনি সাধারণ উদ্দেশ্য অবজেক্ট ভিত্তিক উন্নয়ন করতে চান। এটি একটি ক্লাসিক, স্ট্যাটিকালি টাইপ করা OOP ভাষা।
  • আপনি কেবল মাইক্রোসফ্ট প্ল্যাটফর্মকে লক্ষ্যবস্তু করছেন (এটি মনে রাখা দরকার যে মাইক্রোসফ্ট জাভাটিকে সি # তৈরি করার জন্য কার্যকরভাবে ক্লোন করেছিল কারণ তারা জাভা-জাতীয় ভাষা চেয়েছিল যা মানুষকে উইন্ডোজে লক করে রাখত They তারা জাভা ব্যবহার করতে পারত, তবে এটি লোকেদের সহজেই অ্যাপ্লিকেশনগুলি চালাতে সক্ষম করত) অন্যান্য প্ল্যাটফর্ম ....)

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

অন্যদিকে জাভাতেও কিছু বড় সুবিধা রয়েছে:

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

সুতরাং জাভা বনাম সি # একটি খুব কাছের কল এবং আপনি মাইক্রোসফ্ট শিবিরে বা ওপেন সোর্স / ক্রস-প্ল্যাটফর্ম শিবিরে থাকতে চান কিনা তা সত্যিই নেমে আসে।

ব্যক্তিগতভাবে আমি জাভা পছন্দ করি কারণ:

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

সি / সি ++

সি / সি ++ মূলত সম্পূর্ণ আলাদা একটি জন্তু। আমি আজকাল নিম্নলিখিত কারণে সাধারণ উদ্দেশ্যে অ্যাপ্লিকেশন বিকাশের জন্য এটি সুপারিশ করব না :

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

তবে নিঃসন্দেহে এটি নির্দিষ্ট সীমিত সংখ্যক বিশেষ ডোমেনগুলির মধ্যে একটি বিশেষ পছন্দ, বিশেষত:

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

সুতরাং মূলত, সি / সি ++ হ'ল একটি দুর্দান্ত পছন্দ যদি হয় এবং কেবলমাত্র যদি আপনি কোনও কোনও ডোমেনের দিকে দৃষ্টি নিবদ্ধ করেন যেখানে এটি বিশেষভাবে উপযুক্ত suited


1
আপনি জাভা আরও ভাল সরঞ্জাম উদাহরণ হিসাবে maven উল্লেখ। আমি এটির সাথে বিশেষত ফ্যামিলির নই, তবে ডকুমেন্টেশনের দিকে তাকিয়ে, মাভেন স্থানীয় নেটের সাথে একইরকম দেখায়। নেট বিল্ড টুল এমএসবিল্ড। ম্যাভেনকে এমএসবিল্ডের চেয়ে আরও ভাল কী করে?
কেভিন ক্যাথকার্ট

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

2
সবাই কেন সি ++ কোড ম্যানুয়াল মেমরি পরিচালনায় পূর্ণ বলে মনে করে? এটি আপনি জানেন না সিআই, আরআইআই এর অর্থ আপনাকে প্রায়শই ম্যানুয়ালি / ফ্রি মেমরি বরাদ্দ করতে হবে না (আপনি যে সময়গুলি করেন সে ক্ষেত্রে সি # এর মতো ভাষা আপনার পক্ষে অকেজো হবে)।
gbjbaanb

3
@gbjbaanb - সম্ভবত কারণ RAII সাধারণ উদ্দেশ্যে মেমরি পরিচালনার জন্য অপর্যাপ্ত। আপনি জাভা বা সি # তে দেখেন এমন কোনও সম্পূর্ণ জিসি সিস্টেমের নমনীয়তার সাথে এটি কোনওভাবেই সমান নয়। RAII এর সীমা ছাড়িয়ে যাওয়ার সাথে সাথে আপনি ম্যানুয়াল মেমরি পরিচালন অঞ্চলে ফিরে আসবেন।
মাইকের

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

13
I heard that syntactically they are almost the same.

শব্দবিন্যাসগত দিক থেকে? সিনট্যাক্স সম্পর্কে উড়ন্ত বানর কে দেয়? সিনট্যাক্স কেবল একটি জিনিসের জন্য ভাল: সিন্ট্যাক্টিক্যালি অনুরূপ ভাষা থেকে দ্রুত স্থানান্তরকে মঞ্জুরি দেয়। এটাই.

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

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


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

2
@ জর্জিও: মনো প্রকল্পের অস্তিত্ব আছে। তবে দ্বিতীয়ত, মাইক্রোসফ্ট আসলে তাদের প্ল্যাটফর্মের যত্ন নেয় - তারা এটিকে নিয়মিত বড় বড় আপগ্রেড দেয়। জাভা খুব কমই নতুন কিছু আছে। এছাড়াও, প্রশ্নটি সি # বনাম জাভা সম্পর্কে, সিএলআর বনাম জেভিএম নয়।
ডেড এমএমজি

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

3
@ জর্জিও, আপনি যে কোনও সি # প্রোগ্রাম গ্রহণ করতে এবং মনো দিয়ে এটি তৈরি করতে পারেন। আপনি নির্দিষ্ট গ্রন্থাগার ব্যবহার করতে পারবেন না (যা যাইহোক সি # ভাষার অংশ নয়)। এবং জাভা "বেশি বেশি বহনযোগ্য" নয়। আপনি আইওএসের জন্য সি # তে কোড করতে পারেন, তবে জাভাতে নয়, উদাহরণস্বরূপ।
এসকে-যুক্তি

2
@ জিওজিও, মনো কমপক্ষে জেভিএমের মতো বহনযোগ্য।
এসকে-যুক্তি

7

ওয়েলের C#মতো কিছু সুন্দর অন্তর্নির্মিত বৈশিষ্ট্য রয়েছে যেমন LINQএবং প্রতিনিধিরা। এটি উভয় বিশ্ব থেকে সেরা হচ্ছে - Javaএবং C++। একটি সম্পূর্ণ তুলনা জন্য এখানে দেখুন ।

তবে আমি Javaবিশ্বের আরও ভাল পছন্দ করি - অনেকগুলি ওপেন সোর্স ফ্রেমওয়ার্ক এবং এটি প্রতিটি প্ল্যাটফর্মে চলে। এবং আমাকে সম্পর্কে বলবেন না Mono- এটি একটি নির্ভরযোগ্য বিকল্প নয়।


9
+1: "তবে আমি জাভা বিশ্বকে আরও ভাল পছন্দ করি - অনেকগুলি ওপেন সোর্স ফ্রেমওয়ার্ক এবং এটি প্রতিটি প্ল্যাটফর্মে চলে" " আসুন আশা করি ওরাকল এটি পরিবর্তন করে না!
জর্জিও

15
মন বুঝিয়ে বলছে, মনোতে "নির্ভরযোগ্য" কী নেই?
এসকে-যুক্তি

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

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

3
@ পিটার মিনচেভ, জিটিকে # পোর্টেবল। পরিবর্তে এটি ব্যবহার করুন।
এসকে-যুক্তি

3

কিছু উত্স অনুসারে (উদাহরণস্বরূপ http://www.indeed.com/jobtrends দেখুন ) সি # এখনও জাভার চেয়ে কম জনপ্রিয়, এবং সি ++ এর মতো জনপ্রিয়।

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

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

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


"আমি লিনাক্সে সম্পূর্ণরূপে সি # র প্রতিপন্ন করতে পারি না" - আপনি কি এ বিষয়ে বিস্তারিত বলতে পারবেন? আপনি কী বোঝাতে চাইছেন যে পূর্ণ। নেট ফ্রেমওয়ার্কটি উপলভ্য নয় কারণ আমি লিনাক্সে সি # ল্যাঙ্গুয়েজ নিজেই (বা এফএফের জন্য) কোনও সমস্যা নিয়ে যাইনি?
ওয়েসলি উইজার

@ ওয়াওয়া: আমার জ্ঞানের কাছে। নেট ফ্রেমওয়ার্কটি জেডিকে-র সাথে সম্পর্কিত, এবং। নেট ফ্রেমওয়ার্কটি কেবল উইন্ডোজের জন্য উপলব্ধ যেখানে জেডিকে বেশ কয়েকটি ওএসের জন্য উপলব্ধ। এটি সঠিক না হলে আমি আমার উত্তর সম্পাদনা করতে পারি (এবং আমার মতামতও পরিবর্তন করতে পারি)।
জর্জিও

1
আমি মনে করি আরও ঘনিষ্ঠ সাদৃশ্যটি জেডিকে বেস ক্লাস লাইব্রেরি হবে। ছাত্রলীগ মানসম্মত এবং অ-মানহীন যন্ত্রাংশ করেছে। মনো প্রকল্পটি মানসম্পন্ন পাশাপাশি অযৌক্তিক টুকরো অনেকগুলি কার্যকর করে।
ওয়েসলি উইজার

@ ওয়াওয়া: তথ্যের জন্য আপনাকে ধন্যবাদ। আমি মনো ব্যবহার করে সি # একবার দেওয়ার চেষ্টা করছি। তবুও, আমার এখনও দৃ strong় অনুভূতি আছে যে জাভা ওরাকল (বা অতীতে সূর্যের সাথে) এর চেয়ে সি # মাইক্রোসফ্টের সাথে অনেক বেশি দৃ tied়ভাবে আবদ্ধ।
জর্জিও

3

"কোন সফ্টওয়্যার ডেভলপমেন্ট ফ্রেমওয়ার্ক, এতে একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ অন্তর্ভুক্ত রয়েছে" সে সম্পর্কে আরও কী?

আপনি "পরিবেশ" এর মতো অন্যান্য জিনিসগুলি অন্তর্ভুক্ত করতে ভুলে গেছেন।

  1. আপনি কি কেবল উইন্ডোজ ওএসের জন্য কাজ করছেন, তবে, নিম্ন স্তরের হতে হবে না, এবং প্রচুর স্মৃতি এবং অন্যান্য সংস্থান আছে?

    উইন্ডোজের ফ্রেমওয়ার্ক হিসাবে। নেট বেছে নিন এবং সি # ব্যবহার করুন।

  2. আপনি কি কেবল উইন্ডোজের জন্য কাজ করতে যাচ্ছেন, তবে, নিম্ন স্তরের হতে হবে না, তবে খুব বেশি সংস্থান নেই?

    ডেল্ফি ফ্রেমওয়ার্কটি চয়ন করুন (এবং পাস্কেল ডেল্ফি প্রোগ্রামিং ভাষা বা ল্যাজারাস অবজেক্ট পাস্কাল প্রোগ্রামিং ভাষা)

  3. আপনার অ্যাপ্লিকেশন। বিভিন্ন মোবাইলে গেমের মতো বেশ কয়েকটি প্ল্যাটফর্ম সমর্থন করা দরকার?

    জাভা ফ্রেমওয়ার্ক এবং জাভা প্রোগ্রামিং ভাষা চয়ন করুন।

  4. গ্রাফিক ইন্টারফেস হিসাবে এটি কি লিনাক্স কে।

    সি ++ সহ কিউটি ফ্রেমওয়ার্ক চয়ন করুন

  5. এটি গ্রাফিক ইন্টারফেস হিসাবে জিনোমের সাথে লিনাক্স?

    সি ++ সহ গবজেক্ট / জিএলিব ফ্রেমওয়ার্কটি চয়ন করুন

  6. আপনি কি অনেকগুলি নিম্ন স্তরের অপারেশন, যেমন উন্নয়নশীল ড্রাইভারদের সাথে কাজ করছেন?

    সমতল সি বা সি ++ এর কাঠামো হিসাবে স্ট্যান্ডার্ড লাইব্রেরি সহ বেশ কয়েকটি অপারেটিং সিস্টেমের জন্য ব্যবহৃত হয়।

শুধু আমার 2 সেন্ট।


1
আমি 3 সম্পর্কে নিশ্চিত নই Smart স্মার্টফোনগুলি আজ এবং এএফাইক খুব জনপ্রিয়, তারা সকলেই কোনও না কোনও রূপে সি # সমর্থন করে তবে কেবল অ্যান্ড্রয়েড জাভা সমর্থন করে।
সুইভ

দেলফি মারা গেল না? :)
jলজাকার

@ এলজেকার না, তবে এই দিনগুলিতে খুব জনপ্রিয় নয়।
ইউলক্যাট

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

1

আপনি যদি কোনও অনুসন্ধান করেন তবে আপনি শীর্ষস্থানীয় প্রোগ্রামিং ভাষাগুলির আলোচনায় হোঁচট খাওয়ার সম্ভাবনা রয়েছে। এখানে অনুসন্ধানের ফলাফলগুলির মধ্যে একটি - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html - জাভা এখনও সর্বাধিক জনপ্রিয় ভাষা বলে মনে হচ্ছে।

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


1

ইতিমধ্যে কিছু উল্লেখ করা হয়নি যে দুটি জিনিস:

সি # সি ++ এর চেয়ে ভাল কারণ:

এটি হেডার ফাইলগুলির সাথে দূরে চলে যায়, যা দুর্দান্ত সরলতায় অনুবাদ করে।

সি # জাভা থেকে ভাল কারণ:

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

এটি প্রতিনিধিদের সমর্থন করে, যা একক-পদ্ধতি ইন্টারফেসের মতো, ফলে ঘন ঘন ঘটে যাওয়া কনস্ট্রাক্টের কোডিং সহজতর করে যা একক-পদ্ধতি অবজেক্টগুলিকে জড়িত।


আপনি কী ব্যাখ্যা করতে পারেন যে রেফারেন্স-টাইপ এবং মান-ধরণের উভয়ই সি # তে পারফরম্যান্স সুবিধা পেতে পারে?
জর্জিও

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

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

আমি বুঝেছি. সুতরাং ক্লাসগুলি স্তূপে ইনস্ট্যান্ট করা হয় এবং রেফারেন্সের মাধ্যমে অ্যাক্সেস করা হয় যখন স্ট্রাকগুলিতে স্ট্রাকগুলি ইনস্ট্যান্ট করা হয় (?)
জর্জিও

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

1

আপনার প্রত্যাশিত পরিবেশ এবং আপনার দক্ষতার জন্য আপনার সেরা ভাষাটি বেছে নেওয়া উচিত।

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

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

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

আপনি যদি কোনও সময় নিজেকে উইন্ডোজ ছেড়ে চলে যেতে দেখেন তবে আমি সি / সি ++ এবং জাভা উভয়ই শিখার পরামর্শ দেব - যা উভয়ই এই মুহুর্তে বাজারজাতযোগ্য।


0

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

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

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

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