জাভার একটি আধুনিক পর্যালোচনা [বন্ধ]


58

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

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

আমি আজ জাভা ভাষা হিসাবে কিছু উদ্দেশ্যমূলক মতামত পেতে চাই। সুতরাং আমার প্রশ্নের 4 অংশ আছে।

  1. কর্মক্ষমতা.

    ক। জাভার গতি আজ সি ++ এর সাথে কীভাবে তুলনা করে?

    B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর. জাভা ব্যবহার করে কি আধুনিক এএএ শিরোনাম তৈরি করা সম্ভব হবে?

    গ। কোন কোন ক্ষেত্রে জাভা সি ++ এর চেয়ে ধীরে ধীরে ধীরে ধীরে? (যেমন সংখ্যা-ক্রাঞ্চিং, গ্রাফিক্স বা কেবল চারদিকে)

  2. জাভা এখন একটি সংকলিত ভাষা বা ব্যাখ্যা করা ভাষা হিসাবে বিবেচনা করা হয়?

  3. প্রথম থেকেই জাভাতে কিছু প্রধান ত্রুটিগুলি সমাধান করা হয়েছে?

  4. জাভা এর কয়েকটি বড় ত্রুটিগুলি কী কী যা এখনও সমাধান করা যায়নি?

সম্পাদনা:

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



4
আমি 10 বছরের পুরানো কিছু আর আধুনিক নয় এমনটি পছন্দ করি।
cwallenpoole

4
আপনি যখন কেবল একটি ভাষার পরিবর্তে ফ্রেমওয়ার্ক / প্ল্যাটফর্ম হিসাবে দেখেন তখন জাভাটি অনেক আলাদা দেখায় । হয়তো সমস্যাটি হ'ল নামটি মূলত উভয়ের জন্য "জাভা"।
জো ইন্টারনেট

1
ঠিক বৈসাদৃশ্যের একটি বিন্দু হিসাবে - মাইনক্রাফ্ট সম্প্রতি 3 মিলিয়ন বিক্রয় হিট করেছে আমি মনে করি না যে জাভার কথিত ত্রুটিগুলি খেলাটিকে বিক্রয়কে খুব বেশি প্রভাবিত করতে যথেষ্ট আঘাত করেছে।
মাইকেল কে

3
নিখুঁত যে কোনও ভাষা হ'ল নিকৃষ্টতর "একরকম বা অন্যভাবে"। সংজ্ঞানুসারে.
এসকে-যুক্তি

উত্তর:


62

ক। জাভার গতি আজ সি ++ এর সাথে কীভাবে তুলনা করে?

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

তবে আমি যা বলব তা হ'ল জাভা জিসিকে প্রতিটি পরিস্থিতিতে দ্রুত চালাতে হবে । নেটিভ বরাদ্দকারী, তবে এটি আরও উপযুক্ত যেটির জন্য সেটআপ করা যেতে পারে। একটি সমমানের তুলনায় সি # কেন (আমার মেশিনে 0.45 এমএস) এক্সিকিউট করতে পারে সে সম্পর্কে আমি সম্প্রতি এসও তে একটি প্রশ্ন ফিল্ড করেছি whyDictionarystd::unordered_mapযা (আমার মেশিনে 10 মিমি) চালিত হয়েছিল। যাইহোক, আরও উপযুক্তগুলির জন্য কেবল বরাদ্দকারী এবং হ্যাশার অদলবদল করে, আমি মৃত্যুদন্ড কার্যকর করার সময়টি আমার মেশিনে 0.34ms এ কেটে ফেলেছি - মূল রানটাইমটির ত্রিশতম। আপনি কখনই জাভা দিয়ে এই জাতীয় কাস্টম অপ্টিমাইজেশান সম্পাদন করার আশা করতে পারেন নি। এটি যেখানে প্রকৃত পার্থক্য আনতে পারে তার একটি দুর্দান্ত উদাহরণ থ্রেডিং। টিবিবির মতো নেটিভ থ্রেড লাইব্রেরিগুলি থ্রেড-ক্যাচিং বরাদ্দ সরবরাহ করে যা প্রচুর থ্রেডে অনেক বরাদ্দ নিয়ে কাজ করার সময় প্রচলিত alloc

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

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

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

B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর. জাভা ব্যবহার করে কি আধুনিক এএএ শিরোনাম তৈরি করা সম্ভব হবে?

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

গ। কোন কোন ক্ষেত্রে জাভা সি ++ এর চেয়ে ধীরে ধীরে ধীরে ধীরে? (যেমন সংখ্যা-ক্রাঞ্চিং, গ্রাফিক্স বা কেবল চারদিকে)

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

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

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

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

মূলত, জাভা এর শব্দার্থবিজ্ঞান নির্দেশ করে যে এটি সি ++ এর চেয়ে ধীর ভাষা।

জাভা এখন একটি সংকলিত ভাষা বা ব্যাখ্যা করা ভাষা হিসাবে বিবেচনা করা হয়?

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

প্রথম থেকেই জাভাতে কিছু প্রধান ত্রুটিগুলি সমাধান করা হয়েছে?

স্বয়ংক্রিয় বক্সিং এবং আনবক্সিংই আমি জানি। জেনেরিকগুলি কিছু সমস্যা সমাধান করে তবে অনেকের থেকে দূরে।

জাভা এর কয়েকটি বড় ত্রুটিগুলি কী কী যা এখনও সমাধান করা যায়নি?

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


10
আধুনিক জেআইটি কীভাবে কাজ করে সে সম্পর্কে আপনার কিছু ভুল ধারণা রয়েছে বলে মনে হয়। অন্যথায় ভাল তথ্য।
শান ম্যাকমিলান

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

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

19
+1 সুন্দর উত্তর। অবশেষে এমন কেউ, যা জাভা কেন সবসময় সি ++ এর চেয়ে ধীর হবে তা বোঝে।
jeffythedragonslayer

2
এই বিন্দুগুলির কোনও বাস্তব বিশ্বের পারফরম্যান্স সমস্যাগুলি (এক্সেসডোটাল বা বেঞ্চমার্কযুক্ত) এক্সবিট করে? এটি কি বেশিরভাগ ব্যবহারকারীর দ্বারা লক্ষণীয়? ভাষা X এর চেয়ে ভাষা Y এর চেয়ে 0.25% দ্রুত, এর অর্থ ভাষা Y ধীর নয়। ভিডিও গেমসের সাথে, আপনি কি কঠোরভাবে কনসোলের কথা বলছেন বা এর মধ্যে পিসি গেমস অন্তর্ভুক্ত রয়েছে?
TheLQ

34

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

1A। গতি: আপনি সি ++ বা জাভা উভয়ের কাছ থেকে যে গতি পাবেন তা সাধারণত প্রোগ্রামার (গুলি) ব্যবহারের দক্ষতার চেয়ে ভাষা বা এটির প্রয়োগের উপর কম নির্ভর করবে। শেষ পর্যন্ত, সি ++ সম্ভবত গতির পক্ষে বেশি বেশি বার জিততে পারে তবে আপনি যে কোডটি লিখেছেন তার মধ্যে পার্থক্যগুলি আসলেই গুরুত্বপূর্ণ।
1B। হ্যাঁ সম্ভবত. একই সময়ে, সি ++ ইতিমধ্যে সুপ্রতিষ্ঠিত এবং আমি সন্দেহ করি যে বেশিরভাগ গেম স্টুডিও জাভাতে স্যুইচিংয়ের ঝামেলা করতে যথেষ্ট সুবিধা দেখছে।
1c। এর একটি পুঙ্খানুপুঙ্খ উত্তর সম্ভবত একটি বড় পরিমাণ ভরাট করতে পারে। সি ++ আরও সীমাবদ্ধ সংস্থান সহ আরও ভাল করবে। জাভা প্রচুর "অতিরিক্ত" মেমরি উপলব্ধ থাকার থেকে (যেমন উদাহরণস্বরূপ) আরও বেশি উপকার করে।
2. ধীরে ধীরে কার্যকর করা এবং ধীর আবর্জনা সংগ্রহ সম্ভবত দুটি সবচেয়ে সুস্পষ্ট হবে। প্রারম্ভিক উইন্ডোটিং লাইব্রেরি (এডাব্লুটি) বেশ আনাড়ি ছিল - সুইং ছিল একটি বড় উন্নতি।
3. ভার্বোসিটি। অপারেটরের ওভারলোডিংয়ের অভাব। আবর্জনা সংগ্রহের ব্যবহার। একাধিক উত্তরাধিকারের অভাব। জাভা জেনেরিকস সি ++ টেম্পলেটগুলির তুলনায় অত্যন্ত সীমাবদ্ধ।

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


12
জাভা জেনেরিকগুলি এমনকি সি ++ টেম্পলেটগুলির সাথে তুলনীয় নয়। জাভা টেমপ্লেটগুলি সংকলন-সময় প্রকারের পরীক্ষায় সহায়তা করার জন্য সিনট্যাকটিক চিনি। সি ++ টেমপ্লেটগুলি একটি টিউরিং-সম্পূর্ণ কোড জেনারেশন সিস্টেম।
কেভিন ক্লাইনে

10
ভার্বোসিটির জন্য +1। দীর্ঘ বাঁকা অর্থহীন সিনট্যাক্সের জন্য এখানে সিওবিওএল রয়েছে। সমস্ত "চেষ্টা" "ধরা" এবং সমস্ত এইচটি ই এক্সট্রিমেন্টলি লংক্লাসনাম অত্যন্তলংঅবজেক্টনাম = নতুন এক্সট্রেমলি লংক্লাসনেম () টাইপ কোড সহ কোনও কোডের টুকরা আসলে কী করার চেষ্টা করছে তা কার্যকর করা বেশ চ্যালেঞ্জ হতে পারে।
জেমস অ্যান্ডারসন

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

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

2
সি ++ টেমপ্লেটগুলি ট্যুরিং-সম্পূর্ণ হওয়ার উদ্দেশ্য ছিল না - এটির নকশার ফলস্বরূপ দুর্ঘটনাক্রমে ঘটেছিল। তবুও, এটি মাঝে মাঝে দরকারী: সি ++ টেমপ্লেট রূপক রূপে দেখুন।
আসন্ন ঝড়

11
  1. কর্মক্ষমতা সম্পর্কে;
    1. খাঁটি কোড এক্সিকিউশন গতিতে জাভা প্রায় সোজা সি ++ এর সমান। তবে জাভা আরও অনেক বেশি স্মৃতি ব্যবহার করতে ঝোঁক - আংশিক কারণ এটি এটি জিসি ভিত্তিক, আংশিক কারণ এর নকশায় দক্ষতার চেয়ে সরলতা এবং সুরক্ষার দিকে বেশি নজর দেওয়া হয়েছে। ক্যাশে সমস্যার কারণে, আরও মেমরি কম গতিতে অনুবাদ করে। একজন অনেক কম যখন অত্যন্ত টিউন সি ++ তুলনায়।
    2. আপনি যদি ধরে নেন যে একটি এএএ শিরোনাম অবশ্যই বর্তমান হার্ডওয়্যার ব্যবহার করে যা সম্ভব তার কিনারায় কাজ করবে, না। কমপক্ষে ক্লায়েন্টের পক্ষে নয়। আমি বাজি রাখতে আগ্রহী যে কিছু এএএ শিরোনাম ইতিমধ্যে ব্যাকএন্ড অবকাঠামোর অংশগুলির জন্য জাভা ব্যবহার করেছে।
    3. আপনি বড় ডেটাসেট এবং সি ++ দিয়ে যেখানেই কাজ করেন না কেন যে কোনও কিছু ক্যাশে-বান্ধব উপায়ে সেগুলি অ্যাক্সেস করতে অনুকূলিত করা যেতে পারে।
  2. এটি রানটাইমতে বাইকোড এবং জেআইটি-সংকলিত সংকলিত। সংকলিত বনাম ব্যাখ্যা করা একটি মিথ্যা, পুরানো ডিকোটোমি।
  3. & 4. এগুলি সমস্ত তালিকাভুক্ত করার জন্য অনেক কিছুই আছে এবং তাদের বেশিরভাগের মধ্যে মতবিরোধ থাকবে।

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

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

1
@ মিশেলবর্গওয়ার্ট আপনি উল্লেখ করতে পারেন যে গতির সময় প্রয়োজন কারণ বেশিরভাগ জেভিএমের প্রয়োজন প্রতিবার স্ক্র্যাচ থেকে শুরু করা। পূর্ববর্তী রান থেকে প্রোফাইলিং তথ্য পুনরায় ব্যবহার করা হয় না।

11

প্রথমত কিছু প্রসঙ্গে, আমার সি ++ খুব মরিচা, তাই জাভার সাথে আমার বেশিরভাগ অভিজ্ঞতা সি # এর সাথে আমার সাম্প্রতিক অভিজ্ঞতার সাথে সম্পর্কিত, যা আপেলের তুলনায় তুলনায় অনেক বেশি আপেল।

1. গতি

ক। জাভার গতি আজ সি ++ এর সাথে কীভাবে তুলনা করে?

আমি মনে করি এসও প্রশ্নের উত্তরে এর সর্বোত্তম জবাব দেওয়া হয়েছে কেন জাভা ধীর হওয়ার সুনাম অর্জন করেছিল? তবে আমি আরও মনে করি এই পুরো প্রশ্নটি রঙিন হয়েছে জেফ আতউডের ব্লগ পোস্ট, গরিলা বনাম শارکপেটার এবং ক্রিস্টোফারকে ধন্যবাদ।

B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর. জাভা ব্যবহার করে কি আধুনিক এএএ শিরোনাম তৈরি করা সম্ভব হবে?

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

আমি বেশ কয়েকটি গেম সম্প্রতি দেখেছি যে তারা লোড করার সময় তারা একটি পাইথন পরিবেশটি লোড করছে এবং আমি সন্দেহ করি যে ছুটির মরসুমের জন্য সময়মতো আপনার শিরোনাম বের করতে চাইলে কোর্সগুলির জন্য ঘোড়াগুলি একটি প্রেরণা is ।

গ। কোন কোন ক্ষেত্রে জাভা সি ++ এর চেয়ে ধীরে ধীরে ধীরে ধীরে? (যেমন সংখ্যা-ক্রাঞ্চিং, গ্রাফিক্স বা কেবল চারদিকে)

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

তারা বলার সাথে সাথে দুর্দান্ত শক্তির সাথে দুর্দান্ত দায়িত্ব আসে (আপনার গাদা * 8 'কে পুরোপুরি স্ক্রু করার ক্ষমতাটি উল্লেখ না করা)।

২. জাভা কি এখন একটি সংকলিত ভাষা বা ব্যাখ্যা করা ভাষা হিসাবে বিবেচনা করা হয়?

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

৩. জাভাতে কিছু প্রধান ত্রুটিগুলি কী যা প্রাথমিক দিন থেকেই সম্বোধন করা হয়?

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

৪. জাভা এর কয়েকটি বড় ত্রুটিগুলি কী কী যা এখনও সমাধান করা যায়নি?

মনে মনে, জাভাতে একটি সমস্যা হ'ল নতুন বৈশিষ্ট্যগুলি ধীরে ধীরে গ্রহণ করা।

সি # থেকে জাভাতে এসে, এবং উইকিপিডিয়া তুলনা পৃষ্ঠাটি সন্ধান করে , এই জিনিসগুলি আমার পক্ষে গুরুত্বপূর্ণ:

সি # এর তুলনায় জাভাতে যে জিনিসগুলি আমি মিস করি সেগুলি

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

সি # এর তুলনায় জাভাতে যে জিনিসগুলি আমি মিস করি না

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

যেমন আপেলকে আপেলের সাথে তুলনা করার সময়ও জাভা পিছনে পড়েছে বলে মনে করা হয়।

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


1
এই যে প্রশ্নটি আপনি যুক্ত করেছেন, স্বীকৃত উত্তরটি অবিশ্বাস্যরকম, হাস্যকরভাবে ভুল।
ডেড এমএমজি

না, আমি বোঝানো stackoverflow.com/questions/2163411/...
DeadMG

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

8

আমি আপনাকে এমন একটি উত্স নির্দেশ করতে পারি যা আপনার প্রশ্নের প্রথম অংশের উত্তর দিতে সহায়তা করতে পারে। প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি http://shootout.alioth.debian.org/u64q/which-programming-languages-are-fastest.php গুলি একে অপরের সাথে কীভাবে দ্রুত তুলনা করে তা দেখতে বেশ ভাল উত্স। এমনকি অঞ্চলগুলিতে অন্যদের তুলনায় কোন অঞ্চলে ভাষা আরও ভাল করে তা দেখতে বিভিন্ন বিভাগে এগুলি ফিল্টার করা যেতে পারে several বেশ কয়েক বছর আগে জাভা এর চেয়ে অনেক দ্রুত।



হ্যাঁ আমার সম্ভবত এই পৃষ্ঠার সাথে সরাসরি লিঙ্ক করা উচিত ছিল দুঃখিত।
bschaffer13

4

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

2) এই পার্থক্যটি ইদানীং এত ঝাপসা হয়ে গেছে যে এর সত্যিই খুব কম মূল্য নেই।

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

এটি পছন্দের বিষয়

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

সোজা কথায় বলতে গেলে, এটি সত্যিই কেবল পছন্দের বিষয়।

তবে, একটি বিষয় হ'ল জাভার বিকল্প হিসাবে সি ++ সহ আপনি নিজের বাধা বেছে নিতে পারেন। অথবা আপনার সমস্ত নিয়ন্ত্রণের সাথে বাদাম ছড়িয়ে দেওয়া, আপনার সহকর্মীদের পুরোপুরি বিভ্রান্ত করার ঝুঁকি নিয়ে:

আমি দেখেছি `কোটকে" হ্যালো ওয়ার্ল্ড "বার বামে স্থানান্তরিত করা হয়েছে এবং ডানদিকে সেখানে থামানো হয়েছে।
- স্টিভ গোনিডেস

জাভা সেই কারণেই অপারেটরকে ওভারলোডিং অফার না করে বেছে নিয়েছিল। অবশ্যই এটি তালিকা সহ ফাংশন পয়েন্টারগুলিকে গুণ করে তাদের কোডগুলি অবলম্বন করতে বাধা দেয়। তবে একই সাথে এটি অন্যান্য লোককে সাধারণ অপারেটরগুলির সাথে জ্যামিতিক / বীজগণিত গণনা করতে বাধা দেয়। (v1 * v2 / scale) + (v3 * m)সত্যিই তুলনায় অনেক পরিষ্কার v1.multiply(v2).divide(scale).add(v3.multiply(m))। আমি দেখতে পাচ্ছি কেন এটি 3 ডি গ্রাফিক্স এবং গণনা নিয়ে কাজ করে এমন লোকদের বন্ধ করতে পারে।

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

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

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


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

0

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

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


বেশিরভাগ আধুনিক আবর্জনা সংগ্রাহক বিশ্বকে থামান না।

-1

3) ত্রুটিগুলি যা স্থির ছিল।

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

4) বর্তমান ত্রুটি

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


1
পাগল হচ্ছে? কষ্ট করে তাই ভাবেন। এবং স্পষ্টতই আপনার জাভা

-1

আমি এই প্রশ্নের উপর এক ধরণের প্রতিক্রিয়া জানিয়েছি কারণ এটি বিভ্রান্তিকর এবং মূলত অপ্রাসঙ্গিক উত্তর দেবে:

B ইংরেজী বর্ণমালার দ্বিতীয় অক্ষর. জাভা ব্যবহার করে কি আধুনিক এএএ শিরোনাম তৈরি করা সম্ভব হবে?

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

জাভা ব্যবহার করে যুক্তিসঙ্গত সাফল্যের সাথে একটি আধুনিক শিরোনাম তৈরি করা সম্ভব?

উত্তরটি " হ্যাঁ, আপনি পারেন "। তবে সমীকরণের আসল সাফল্য অংশটি আপনার অধ্যবসায় এবং ভাগ্যের উপর ভিত্তি করে (বা জিটজিস্টের আনুগত্য) তবে এটি এই সাইটের আওতার বাইরে।


-6

গতির একটি সার্টিয়ান অঞ্চল কমপায়ার বনাম সংকলক নেমে আসে। ভাষা বনাম ভাষা নয়। জেআইটি সংকলনের সুবিধাগুলি থাকতে পারে যেহেতু এটি যে মেশিনটিতে চলছে তার চশমাগুলির জন্য এটি অনুকূলিত করতে পারে। আরও "" আপেল থেকে আপেল "সংকলক তুলনার জন্য জেআইটি সংকলিত সি ++ বনাম জাভা তুলনা করুন।

তবে কিছু জিনিস রয়েছে যেখানে জাভা ভাষা নিজেই এটির নিজস্ব কর্মক্ষমতা সীমাবদ্ধ করে।

  1. স্ট্যাক বরাদ্দ। জাভা এটি করতে পারে না। অ-পুনরাবৃত্ত সমাধানে ছোট ফিক্সড আকারের ক্লাসগুলির জন্য এটি প্রায়শই আদর্শ। আপনি গাদা বিভাজন এড়াতে পারেন।

  2. অ ভার্চুয়াল ফাংশন। জাভা এটি করতে পারে না। সমস্ত পদ্ধতির কলগুলি ওভাররাইড করার পরিকল্পনা না থাকলেও স্থায়ী হিট গ্রহণ করে receive

সম্ভবত কিছু অন্যান্য জিনিস তবে আমি এটাকে আমার মাথার উপরের দিক থেকে ভাবতে পারি।


2
আধুনিক জেআইটি সংকলকরা উভয় ক্ষেত্রেই অনুকূল করতে পারে। জাভা (6 হিসাবে) স্ট্যাক বরাদ্দ আছে: en.wikedia.org/wiki/Ecreen_analysis । নন-ভার্চুয়াল ফাংশন হিসাবে, জেআইটি সংকলকটি ভার্চুয়াল পদ্ধতি কলগুলি সমাধান করবে যা কেবলমাত্র একটি গন্তব্যে চলে যায় (এবং কখনও কখনও এটি ইনলাইনও করতে পারে) অ-ভার্চুয়াল কলগুলিতে।
স্টিভেন শ্লানস্কার

1
# 2 হ'ল বোগাস: যে কোনও শালীন জেআইটি ভার্চুয়াল বা নন ভার্চুয়াল হিসাবে এটি বর্তমানে ওভাররাইড হচ্ছে কিনা তার ভিত্তিতে ফাংশন চিহ্নিত করে ।
আমারা

-16

1) অপ্রাসঙ্গিক এবং বুট যুক্তিযুক্ত।
জাভাতে কেবলমাত্র বড় বড় সফটওয়্যারই তৈরি করা যায় না, এই জাতীয় সিস্টেমগুলি প্রতিদিন সরবরাহ করা হয় এবং এখন অবধি বিশ্বের বেশিরভাগ বড় সংস্থাগুলি চালিত হয়।
2) ditto।
জেভিএম স্পেকটি পড়ুন এবং আপনি জানেন। জাভা কখনই কোনও ব্যাখ্যামূলক ভাষা ছিল না।
3) ditto।
রিলিজ নোট 15 বছরের পড়ুন। আপনি কীভাবে "প্রধান ত্রুটিগুলি" বিবেচনা করবেন তা নির্ধারণ করা আমাদের পক্ষে অসম্ভব।
4) ডাইটো।
যে প্রধান ত্রুটিটি মোকাবিলা করতে হবে তা হ'ল জেএসপি যা জেএসআর-এ সোমেনের নাম পাওয়ার চেয়ে অন্য কোনও আপাত কারণে মূল ভাষা এবং গ্রন্থাগারগুলিতে হস্তক্ষেপের ঝুঁকিতে পড়েছে যাতে তারা একটি লেখক ব্লার্ব সহ একটি বই লিখতে পারে যে "তারা ছিল জেএসআর -666 "এর নেতা। আশা করি জেসিপির পুনর্গঠন ওরাকল এর যত্ন নেবে।
আপনি এখানে কেবল একটি ভাষা যুদ্ধ চালিয়ে যেতে চাইছেন এবং জাভার বিরুদ্ধে আপনার কুসংস্কার অন্যদের দ্বারা নিশ্চিত হয়ে গেছে কারণ আপনি নিজেই এর কোনও সত্যিক সমর্থন পেতে পারেন না।


আহা, আমি দেখতে পাচ্ছি যে জনগণ যে কেউ জাভাতে স্ল্যাগিং না করে তাকে ডাউনভোট দিয়ে যুদ্ধের শুরু শুরু করেছে। ভাল হয়েছে, মানুষ!
জেভেন্টিং

10
আমি মনে করি ডাউনভোটদের কারণ আরও সত্য যে আপনার উত্তরটি আসলে একটি নয়।
blubb

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

4
ওপি একটি খুব ভাল একসাথে প্রশ্ন লিখেছিল এবং ভাল-উত্তরযুক্ত উত্তর পেয়েছে। তাকে কিছুতেই আলোড়িত করার অভিযোগ করার দরকার নেই।
অ্যাডাম লিয়ার

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