কেন সর্বাধিক ব্রাউজারগুলি সি ++ এ বন্ধ করা হয় [বন্ধ]


99

দেখে মনে হচ্ছে বেশিরভাগ সাধারণ ওয়েব ব্রাউজারগুলি (ফায়ারফক্স, ক্রোম, সাফারি) সি ++ ব্যবহার করে তৈরি করা হয়েছে। হু হ্যা?


28
ফায়ারফক্স কেবল সি ++ নয়, সি ++ এবং জাভাস্ক্রিপ্টে লিখিত।
জেসি মিলিকান

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

1
এটি কি এই প্রশ্নের সঠিক গ্রুপ?
মার্টিন ইয়র্ক

6
@ জেসি জেএস দোভাষী সি ++ তে লেখা নেই? এটি কি সমস্ত সি ++ তৈরি করবে, না? (আমি ভুল হতে পারি ..)
ক্যামব্রাকা

5
@ ক্যামব্রাকা, সেই যুক্তি দিয়ে, সবকিছুই এসেম্বলি কোড!
হুয়ান মেন্ডেস

উত্তর:


165

প্রশ্নটি জিজ্ঞাসার আরেকটি উপায় হ'ল ব্রাউজারটি কী ধরণের সহায়তার প্রয়োজন? সংক্ষিপ্ত তালিকাটি হ'ল:

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

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

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

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

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

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

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

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

আপাতত, সি ++ বিকল্পগুলি সরিয়ে দেয়।


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

5
মনে রাখবেন যে জাভা অবশ্যই জিইউআইয়ের জন্য সুইং (যা একটি কৃপণ গ্রন্থাগার) ব্যবহার করবে না। উদাহরণস্বরূপ, আমাদের কিউটি বাইন্ডিং রয়েছে।
Anto

2
My.opera.com/kilsmo/blog/2008/01/29/opera-is-not-based-on-qt অনুযায়ী অপেরা কিউটি
অ্যান্টো

2
আমি কখনও বলিনি যে অপেরা কিউটিউটের উপর ভিত্তি করে ছিল। আমি বোঝাতে চেয়েছিলাম যে একটি অ-মুক্ত ব্রাউজার বিক্রয় করা সত্যিই খুব শক্ত যখন প্রচুর দুর্দান্ত নিখরচায় বিকল্প রয়েছে।
বেরিন লরিটস

7
পার্সার জেনারেটরের উপলভ্যতা আসলেই এটি প্রাসঙ্গিক নয় - সমস্ত ব্রাউজারগুলিতে এইচটিএমএল, এক্সএমএল এবং জেএস পার্সার হস্ত-লিখিত হয় এবং কিছুটা সিএসএস থাকে।
gsnedders

89

আমি এই সম্পর্কে একটি উপন্যাস লেখার সিদ্ধান্ত নিয়েছি যে লোকেরা এটি চকচকে করবে এবং আমাকে উজ্জীবিত করবে। না, না, মজা করছি! আমি প্রতিটি শব্দের উপর ভোগ করেছি। প্রতিটি শব্দ, আমি আপনাকে বলছি!

'কখন' আগে 'কেন' জিজ্ঞাসা করুন

সমস্ত বড় ওয়েব ব্রাউজারগুলি 90 এর দশকে ফিরে তাদের উত্স সনাক্ত করতে পারে। কনকরার সাফারি এবং ক্রোমে পরিণত হয়েছিল; নেটস্কেপ ফায়ারফক্সে পরিণত হয়েছিল; আইই এবং অপেরা এখনও আইই এবং অপেরা। এই ব্রাউজারগুলির সবগুলিই আগতদের 15 বছরের শুরুর দিকে।

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

আজকে কেমন? বিকল্পগুলি কি?

শুধু মজা করার জন্য, আসুন আজ সমস্যাটি নিয়ে ভাবি। হ্যাঁ, বিকল্প আছে, কিন্তু এখনও বড় সমস্যা আছে।

ভাষা পছন্দ অন্তত এই সমস্যাগুলি উপস্থাপন করে:

  1. জ্ঞানের সমস্যাগুলি - বিকাশকারীদের প্রশিক্ষণ / প্রশিক্ষণদান বা অনুদানকারীদের আকর্ষণ করা
  2. সাংগঠনিক / সামাজিক সমস্যা - ভাষা গ্রহণযোগ্যতা
  3. ভাষা বাস্তবায়ন: গতি, প্ল্যাটফর্ম সমর্থন, সরঞ্জামদান
  4. ভাষা শক্তি

1: জ্ঞান সমস্যা

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

2: সামাজিক / সাংগঠনিক সমস্যা

উপরের কার্গো-কাল্ট উত্তরের উত্তর:

  • একটি ওপেন সোর্স সি, সি ++, সি # বা জাভা ব্যবহার করছেন না ব্রাউজার হবে কল্পনানুসারে অবদানকারী কোনো সমস্যা থাকে।
  • সি, সি ++, সি # বা জাভা ব্যবহার না করে এমন একটি মালিকানাধীন ব্রাউজার বেশিরভাগ সংস্থায় প্রকল্প পরিচালকদের কঠোরভাবে চিৎকার করেছিল।

৩. প্রযুক্তিগত সমস্যা

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

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

৪. ভাষা শক্তি

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

বিশেষত, জাভাস্ক্রিপ্ট দোভাষী হওয়া সমস্যা 3 (একটি অর্জন) বা সমস্যা 4 (একটি তৈরি করুন)।

উপসংহার:

আপনি যদি আজ (২০১১ শুরুর দিকে) একটি তিন-প্ল্যাটফর্ম (উইন্ডোজ / ম্যাক / * নিক্স) ব্রাউজারটি বিকাশ করেছেন, তবে কয়েকটি পছন্দ কী?

  • সি: দেখুন (2) প্রত্যেকে সি ++ এর জন্য চিৎকার করছে। ক্রস-প্ল্যাটফর্মের সরঞ্জামকিট নির্বাচন করে বা একটি তৈরি করতে মজা করুন (1, 2, 3 এবং 4)। আরও দেখুন (4); এটিতে একটি স্থিতিশীল, সুরক্ষিত ব্রাউজার তৈরি করতে মজা করুন।
  • সি ++: ক্রস-প্ল্যাটফর্মের সরঞ্জামকিট নির্বাচন করে বা একটি তৈরি করতে মজা করুন (1, 2, 3 এবং 4)। এতে মজাদার (4) বিল্ডিং স্থিতিশীল, সুরক্ষিত ব্রাউজারে রয়েছে।
  • সি বা সি ++ এবং এইচএলএল: আপনার সেরা বাজি। গতিশীল ভাষায় আপনার বিষটি চয়ন করুন; (1) এবং (2) দেখুন। অনেক ভাল ভাষা, প্রত্যেকের খুব কম অনুসারী। (1, 2, 3 এবং 4) সরঞ্জামদণ্ডে।
  • জাভা: দ্বিতীয় সেরা বাজি, আপনার যদি মাঝারি ব্যবস্থাপনাকে সন্তুষ্ট করতে হয়। দেখুন (4); জাভাতে বিশাল জিনিস তৈরি করা এই তালিকার অন্য যে কোনও কিছুর চেয়ে অনেক বেশি কোড নেয় তবে সম্ভবত সি C.
  • স্কালা: জাভা বিট করুন (4); (1) এবং (2) তবে এটি দ্রুত ধরা পড়ছে।
  • সি এবং জাভাস্ক্রিপ্ট: একটি বিশেষ কেস হিসাবে এটি আবেদনময়ী কারণ আপনি ইতিমধ্যে জাভাস্ক্রিপ্ট দোভাষীকে তৈরি করতে বা অর্জন করতে এবং সংহত করতে হবে। (অতএব ফায়ারফক্স।) (1, 2, 3 এবং 4) টুলকিটে; মজিলা লোকেরা তাদের নিজস্ব আইআইআরসি তৈরি করেছিল।
  • সি #: মজা করুন (3)। আপনি সম্ভবত জিটিকে # এর সাথে আটকে আছেন, তবে এটি ভাল, বা আপনার নিজের স্তর তৈরি এবং জিটিকে # এবং উইন্ডোজ ফর্মগুলির উপরে উপস্থাপক।
  • রুবি / পাইথন / পার্ল / র‌্যাকেট / লুয়া / এরলঞ্জ ইত্যাদি: আপনি ক্রস-প্ল্যাটফর্ম উইজেট লাইব্রেরি এবং গতিতে পেয়েছেন (3)। মুর আইন আপনার সাথে রয়েছে (4); ব্রাউজারগুলিতে ক্রমবর্ধমান চাহিদা আপনার বিরুদ্ধে।
  • ওক্যামেল, হাস্কেল, কমন লিস্প, স্মলটাক: (1) এবং (2) কোদাল। কোনও গতির সমস্যা নেই, সম্ভবত (3) ক্রস প্ল্যাটফর্মের বিকাশের জন্য এবং আপনাকে নিজের কিছু তৈরি করতে হবে বা কোনওভাবে সি / সি ++ লাইব্রেরিতে ব্রিজ বানাতে হবে।
  • উদ্দেশ্য-সি: (৩) আমি নিশ্চিত নই যে এখানে ক্রস-প্ল্যাটফর্মের বিকাশ কীভাবে কার্যকর হবে।

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

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


4
যখন নির্দিষ্ট কোনও ব্রাউজারটি প্রথম বিকাশ করা হয়েছিল তখন এটিও উল্লেখযোগ্য ভূমিকা পালন করে +
স্পার্কি

3
উল্লেখ্য যে যখন আই ই ক্রস-প্ল্যাটফর্ম নাও হতে পারে এর মূল্য আজ , এটা অবশ্যই এক সময়ে ছিল, এবং তার বর্তমান মার্কেট শেয়ার প্রায় অবশ্যই যে ক্রস-প্ল্যাটফর্ম সামর্থ্য থেকে আহরিত (অন্তত আংশিকভাবে)।
জেরি কফিন

2
নোট করুন যে আইই একবার আই 4 এর চারপাশে ক্রস প্ল্যাটফর্ম ছিল
জেসনফ্রুট

2
যখন জন্য +1। যে একমাত্র কারণ। যদি আজ কোনও ব্রাউজার প্রকল্প শুরু করে থাকে তবে তারা সম্ভবত সি ++ ব্যবহার করবেন না
হেনরি

4
@ হেনরি, তারা সি ++ ব্যবহার করে বাদ দেবেন এমন সম্ভাবনা নেই। উত্তরের নোটগুলি যে সি ++ এখনও ধাঁধাটির অংশ হতে চলেছে।
বেনামে টাইপ

36

দ্রুততা

যতটা কুৎসিত তা হ'ল, যখন আপনি কোডের উপর একটি দ্রুত প্রয়োগ এবং সম্পূর্ণ নিয়ন্ত্রণ চান তখন সি ++ আপনি যা ব্যবহার করেন তা এখনও।

এই কারণেই গেমস, অফিসের নন-কোর অংশগুলি (যেমন ফাইল আমদানিকারক) এবং আরও অনেকগুলি এখনও সি ++ এ লেখা হয়।

MSalters এর প্রতিক্রিয়া অন্তর্ভুক্ত সম্পাদিত


3
গেমস ব্যতীত, আমি বিশ্বাস করি না যে এই কারণগুলি কেন এই অ্যাপ্লিকেশনগুলি সি ++ এ লেখা হয়। যদিও আপনার যদি প্রথম হাতে জ্ঞান থাকে তবে আমি ভুল প্রমাণিত হওয়ায় খুশি।
হেনরি

2
প্রথম হাতে জ্ঞান? ভিএস ২০১০, অফিস ২০১০ উভয়ই বিশাল অ্যাপ্লিকেশন স্যুইট তবে তারা যা করে তা তারা অত্যন্ত দ্রুত। উভয়েরই বরং একটি বৃহত্তর সিওএম উত্তরাধিকার এবং এমএস হেরিটেজ রয়েছে তবে ব্যবহারকারীদের কাছে পারফরম্যান্স এখনও সবচেয়ে গুরুত্বপূর্ণ বিষয়।
বেনামে টাইপ

8
অফিসে আর কী লেখা থাকবে? ভিবি? সি এবং সি ++ শুধুমাত্র অপশন মাইক্রোসফট বৃহৎ অ্যাপস লিখতে হয় বলে না C # এর দয়া করে।
টবি অ্যালেন

4
@ ভিক্টর: আমি ভিএস ২০১০ এর উত্সটি দেখিনি, তাই এটি খুব ভালভাবে সি # তে লেখা যেতে পারে।
রায়ান হেইস

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

17

পোর্টেবিলিটি

আমি কেবল অনুমান করতে পারি তবে আপনি এমন সফ্টওয়্যার পণ্যগুলি উল্লেখ করছেন যা একাধিক প্ল্যাটফর্মকে লক্ষ্য করে এবং সি ++ যে কোনও প্ল্যাটফর্মে সংকলন করা যায়।


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

আমি প্রথমে এটি ভেবেছিলাম, তবে একটি ওয়েব ব্রাউজারের মতো জিইউআই কেন্দ্রিক অ্যাপ্লিকেশনটির জন্য। জাভা বলার চেয়ে অন্যান্য অপারেটিং সিস্টেমের ক্ষেত্রে সি ++ কি আসলেই অনেক বেশি পোর্টেবল?
জনএফএক্স 21

1
একটি ব্রাউজার কি সত্যিই জিইউআই কেন্দ্রিক?
ক্রিস ভ্যান বেল

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

এটি আমার বোঝা ছিল যে এইচটিএমএল প্রসেসিংয়ের বেশিরভাগ সাহসিকতা ওয়েবকিটের মতো কয়েকটি মূল সরঞ্জাম দ্বারা সম্পন্ন হয়। সম্ভবত এটি পুরো ব্রাউজারগুলির সি ++ তে থাকার কারণে?
জনএফএক্স

13

(আমি প্রায় পাঁচ বছর ধরে ফায়ারফক্সে কাজ করছি।)

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

তবে বাস্তবে, ফায়ারফক্স বিভিন্ন ভাষায় রচিত:

  • সি ++
  • সি (এনএসএস, এনএসপিআর, বিভিন্ন লাইব্রেরি আমরা আমদানি করেছি)
  • x86 এবং এআরএম সমাবেশ
  • জাভাস্ক্রিপ্ট
  • XUL (একটি HTML- মত মার্কআপ ভাষা) এবং সিএসএস
  • উদ্দেশ্য সি (শুধুমাত্র ম্যাকোস কোড)
  • জাভা (অ্যান্ড্রয়েড-কেবল কোড)
  • একাধিক কাস্টম ইন্টারফেস-সংজ্ঞা ভাষা (এক্সপিআইডিএল, আইপিডিএল)
  • ওয়েবআইডিএল (অন্য ইন্টারফেস-সংজ্ঞা ভাষা, তবে কোডটি জেনারেটর হলেও এটি কাস্টম নয়)
  • পাইথন (কোড জেনারেটর)

আমি নিশ্চিত কিছু ভুলে যাচ্ছি।

এই তালিকাটি গুরুত্বপূর্ণ কারণ এটি অবিশ্বাস্য জটিলতায় ইঙ্গিত দেয় যা একটি ওয়েব ব্রাউজারের পিছনে বসে।

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

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

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


এই মেমরি-অনিরাপদ ক্রিয়াগুলি কি সুরক্ষা সমস্যার উত্স?
ডেমি

12

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


10

ইতিহাস

প্রতিটি ব্রাউজারেরই কিছু ইতিহাস রয়েছে যা ভাষার পছন্দকে প্রভাবিত করে।

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

অপেরার প্রেস্টো ইঞ্জিনটি পারফরম্যান্স এবং একটি ছোট বাইনারি আকার মনে রেখে লেখা হয়েছিল: সি ++ ছিল যৌক্তিক পছন্দ।

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

নেটস্কেপের মজিলা সম্ভবত সি ++ তে লেখা হয়েছিল কারণ পোর্টেবিলিটিটি তাদের জন্য একটি প্রধান উদ্বেগ ছিল। সি এবং সি ++ সংকলকগুলি (কার্যত) সর্বব্যাপী এবং তাই এটি একটি যৌক্তিক পছন্দ ছিল।

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


8

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

  • দ্রুততা
  • অপ্টিমাইজেশান
  • নির্দিষ্ট পরিমাণে বহনযোগ্যতা
  • সংকলিত ভাষা, ব্যাখ্যা করা যায় না

ওওপি এর সুবিধার সাথে মিলিত:

  • extensibility
  • আরও সহজ দৃশ্যায়ন
  • স্ট্রিং প্রসেসিং এবং ডেটা স্ট্রাকচারের মতো অ-সমালোচনামূলক কাজের জন্য আরও ভাল লাইব্রেরির সহায়তা

জাভা বা সি # এর কি এই সুবিধা নেই?
নিপুনা

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

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

5
না, তাদের ব্যাখ্যা করা হয়। তারা বাইটোকোডে সংকলন করে এবং একটি ভার্চুয়াল মেশিনে চালায়। সেই ভিএম এর নির্দেশিকাটি দেশীয়টির কাছে সেট করা থেকে কোনও একের সাথে যোগাযোগ নেই।
মাইকেল কে

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

4

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

মূলত, সত্যিই সি ++ ব্যতীত অন্য কোনও পছন্দ ছিল না যা এমন একটি ব্রাউজার তৈরি করতে দেয় যা দ্রুত হতে পারে এবং বিভিন্ন প্ল্যাটফর্মগুলিতে চালিত হয়।

তাহলে সেগুলি কেন সি ++ এ লেখা হয়েছিল? কারণ এগুলিই কেবলমাত্র উপলভ্য ছিল যেগুলিতে তারা লেখা যেতে পারে।


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

2
এফএফ উত্তরাধিকার নেটস্কেপ কোড থেকে মুক্তি পেয়েছে (অর্থাত্ 90 এর দশকের মাঝামাঝি ফুল) এবং তাদের নিজস্ব রেন্ডারিং ইঞ্জিন প্রয়োগ করেছে। ওয়েবকিট একটি তুলনামূলকভাবে নতুন রেন্ডারিং ইঞ্জিন (ক্রোম এবং সাফারি দ্বারা ব্যবহৃত)। আইইয়ের এখনও লিগ্যাসি ব্লাট রয়েছে যা এটিকে আরও কমিয়ে দেয়। সুতরাং আমি এখানে দ্বিমত করব।
Berin Loritsch

2
কমপক্ষে উইকিপিডিয়া অনুসারে, গেকো এবং ওয়েবকিট উভয়ই ১৯৯৯ সালের দিকে শুরু হয়েছিল C তখন সি # ততটা বেঁচে ছিল না, এবং জাভা সেই দৃশ্যে নতুন ছিল (এবং ততক্ষণে গুইয়ের পিছনে সত্যই ভয়াবহ), এটি সম্ভবত একটি সম্ভাব্য বিকল্প ছিল না। সুতরাং অন্যান্য ভাষাগুলি কী উপযুক্ত হবে তা আমি জানি না। হতে পারে পাস্কাল।
গ্র্যান্ডমাস্টারবি

1
@Berin Loritsch: হ্যাঁ, কিন্তু কোন বিন্দু হয়নি তারা কেবল বর্জন এ সব খুব প্রারম্ভে, যা প্রায় কাছাকাছি তারা অন্য ভাষায় রূপান্তর করতে ছিল চাই কি থেকে বিদ্যমান কোড এবং (সবকিছু দিকে) শুরু। এছাড়াও, এফএফ স্টিক থাকার বিষয়ে তাদের সিদ্ধান্তের জন্য সি ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ এফএফ স্টিক রাখার বিষয়ে তাদের সিদ্ধান্তের জন্য যারা সি +++++++++++++++++++++++++++++++++++++++++++++++++++ তে कम বেশি জানত।
জেরি কফিন

2
পুনঃটুইট এফএফ এখনও গেকো (1997) এবং ওয়েবকিট কেএইচটিএমএল (1998) এর উপর ভিত্তি করে রয়েছে।
হেনরি

4

কারণ অন্যান্য ভাষায় লিখিত ব্রাউজারগুলি (যেমন হটজভা, স্পষ্টতই জাভাতে যথেষ্ট পরিমাণে লিখিত) বাজারের গ্রহণযোগ্যতা / অনুপ্রবেশের কোনও পর্যাপ্ত ডিগ্রি কখনও অর্জন করতে পারেনি।

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

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

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

  1. সর্বাধিক তুচ্ছ জিনিসগুলির সবচেয়ে মার্জিত বাস্তবায়ন নিয়ে অন্তহীন যুক্তি ।
  2. বৈশিষ্ট্য হিমশীতল এবং শিপ করা যায় এমন কিছু সমাপ্ত করতে অক্ষমতা (এমনকি ত্রুটি সহ)
  3. আপস করতে অক্ষমতা। যে কেউ আমার সাথে একমত নয় সে কেবল ভুল নয়, তবে অবশ্যই সে বোকা বা মন্দ হতে হবে।

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

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


1
WRT বিন্দু 3, আমি স্পষ্টভাবে যোগ্যতা ছাড়া জাহির করবে, যে লেখা নেটওয়ার্কের ফেসিং সি পরিবারে সফ্টওয়্যার হল পারেন মূঢ় বা মন্দ, কারণ এটি entails পারেন অজান্তে (মূঢ়) অথবা জ্ঞাতসারে (মন্দ) একটি সিস্টেম ব্যাপকভাবে নিরাপত্তা পরিচয় করিয়ে দিতে পরিচিত সঙ্গে কাজ গর্ত যে হবে আপনার ব্যবহারকারীদের কাছে ক্ষতির কারণ। এটি নৈতিকভাবে একটি সৈনিকের দেহের বর্মটি আঁকানো লক্ষ্য সহ সমান equivalent
ম্যাসন হুইলারের

9
@ ম্যাসন: আপনার প্রশ্নে ঠিক ধর্মান্ধতার প্রদর্শন অবশ্যই প্রশংসাযোগ্য।
জেরি কফিন

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

5
@ ম্যাসন: না, আপনি আছেন। প্রথমত, মরিস কৃমি একটি প্ররাম ব্যবহার করেছিল যা ব্যবহার করেছিল gets, এটি একটি ভয়ানক ফাংশন, তবে খুব কমই অনিবার্য (এবং অবশ্যই ভাষার "মৌলিক" নয়, বা এর মতো কিছু)। দ্বিতীয়ত, সি ++ কোনও ক্ষেত্রে সি এর মতো একই ভাষা নয়। তৃতীয়, ওপেনবিএসডি বেশ সুন্দরভাবে প্রমাণ করে যে সুরক্ষিত সফ্টওয়্যারটি সিতে লিখিত হতে পারে এবং সিটিতে লেখা হয়। সি-তে শক্ত, সুরক্ষিত সফ্টওয়্যার লিখতে বাধা দেয় এমন কোনও "অন্তর্নিহিত ভাষার ত্রুটি" নেই যে ওপেনবিএসডি-র ক্ষুদ্র বাজার ভাগ ইঙ্গিত দেয় যে সুরক্ষা বেশিরভাগ ক্ষেত্রেই প্রধান উদ্বেগ নয় isn't মানুষ।
জেরি কফিন

6
@ ম্যাসন: বাফারটি ওভাররন করা getsহল যে আপনি যে বাফারটি ব্যবহার করছেন তার দৈর্ঘ্যটি আপনি এটিকে পাস করেন না এমন একটি সাধারণ পরিণতি। এটি সম্পর্কে ভাষার মৌলিক কিছুই নয় - আপনি পাস্কালে একই জিনিস করতে পারেন (এবং আমার কাছেও)। কোনও বুদ্ধিমান আক্রমণকারীর বিরুদ্ধে সুরক্ষিত সফ্টওয়্যার রচনা ভাষা নির্বিশেষে সহজ নয়। তিনটিই অভিজ্ঞতার ভিত্তিতে এটি পাস্কালের চেয়ে সি তে কিছুটা সহজ এবং সি +++ এর চেয়ে সি এর চেয়ে অনেক বেশি সহজ
জেরি কফিন

3

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

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

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

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


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

5
2000-এর পূর্বের অ্যাপলের অপারেটিং সিস্টেমগুলি এমএস সমমানের চেয়ে বেশি স্থিতিশীল ছিল না। আমি যখন 90 এর দশকে দুটি প্রকল্প কাজ করছিলাম, তখন একটি ম্যাক ওএস এবং একটি এনটি সহ আমার একই সংখ্যক ক্র্যাশ এবং রিবুট দরকার ছিল required এখন তারা সমস্ত সি ভিত্তিক ভাষা কিছু। (অ্যাপল তার বর্তমান স্টাফের জন্য অবজেক্টিভ-সি ব্যবহার করে)। সি ভিত্তিক ভাষাগুলিতে সুরক্ষা আরও কঠিন হতে পারে তবে ভিন্ন ভাষা ব্যবহার করা হঠাৎ করে আরও সুরক্ষিত করে না।
বারিন লরিটস

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

5
@ মেসন: আপনার অভিজ্ঞতাটি স্পষ্টতই আলাদাভাবে (বিশালভাবে) কারও এবং অন্য সবার থেকে - অনেক দিক থেকে। :-)
জেরি কফিন

3
@ মেসন: প্রাক-ম্যাক ওএসএক্সকে "অ্যাডভান্সড" হিসাবে উল্লেখ করার ক্ষেত্রে এলএলএল। অ্যাপল ওএস হ'ল ক্র্যাশগুলির একটি ধ্রুবক উত্স ছিল, কমপক্ষে তার অত্যন্ত প্রাথমিক ফাইল সিস্টেমের কারণে নয়।
বেনামে টাইপ

2

সিস্টেম-স্তরের API গুলি অ্যাক্সেস করুন

সমস্ত ব্রাউজারকে কোনও সময়ে ওএসের সাথে ইন্টারফেস করতে হয় এবং বেশিরভাগ বড় ওএসগুলিতে সি এবং সি ++ এপিআই এবং লাইব্রেরিগুলি সু-প্রতিষ্ঠিত থাকে। র‍্যাপারগুলি রচনা না করে সি বা সি ++ এ those APIগুলির সাথে কাজ করা সহজ।


0

নিয়ন্ত্রণ এবং বহনযোগ্যতা

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


0

উত্তরাধিকারের সামঞ্জস্যতা - পুরানো কোড ফেলে দিতে পারে না

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

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


আমি বুঝতে পারি কেন লোকেরা এটিকে কেন উজ্জীবিত করতে পারে না ... তবে নিম্নচোটিত? এটা বিরক্তিকর. আপনার জন্য এখানে একটি +1 দেওয়া আছে।
থমাস এডিং

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