দেখে মনে হচ্ছে বেশিরভাগ সাধারণ ওয়েব ব্রাউজারগুলি (ফায়ারফক্স, ক্রোম, সাফারি) সি ++ ব্যবহার করে তৈরি করা হয়েছে। হু হ্যা?
দেখে মনে হচ্ছে বেশিরভাগ সাধারণ ওয়েব ব্রাউজারগুলি (ফায়ারফক্স, ক্রোম, সাফারি) সি ++ ব্যবহার করে তৈরি করা হয়েছে। হু হ্যা?
উত্তর:
প্রশ্নটি জিজ্ঞাসার আরেকটি উপায় হ'ল ব্রাউজারটি কী ধরণের সহায়তার প্রয়োজন? সংক্ষিপ্ত তালিকাটি হ'ল:
বেশিরভাগ ভাষায় কিছু প্রকারের পার্সিং সমর্থন রয়েছে। আপনার কাছে সি, সি ++, সি #, জাভা ইত্যাদির জন্য পার্সার জেনারেটর রয়েছে তবে, সি এবং সি ++ এর বিকল্পগুলির বাকি কয়েক বছর শুরু হয়েছে যাতে অ্যালগরিদম এবং বাস্তবায়ন আরও পরিপক্ক হয়। জাভাতে ত্বরিত গ্রাফিক্স অ্যাক্সেস করা কোনও উপায় নয়, যদি না এটির কাজ করার জন্য আপনার কিছু নেটিভ এক্সটেনশন থাকে। সি # তে ডাব্লুপিএফ ত্বরণযুক্ত গ্রাফিক্সগুলিতে অ্যাক্সেস সরবরাহ করে তবে প্রযুক্তির সাথে একটি গুরুতর ব্রাউজার তৈরি করা খুব নতুন।
নেটওয়ার্কিং হ'ল জাভা বা সি # এর চেয়ে সি ++ চয়ন করার সবচেয়ে কম কারণ। কারণটি হ'ল যোগাযোগটি পৃষ্ঠাটি প্রদর্শন করতে যাওয়া বাকী প্রক্রিয়াজাতকরণের চেয়ে বহুগুণ ধীর। তারের কাঁচা গতি সীমাবদ্ধ ফ্যাক্টর। জাভা এবং সি # উভয়েরই সি -+ হিসাবে নন-ব্লকিং আইও সমর্থন রয়েছে। সুতরাং এই ক্ষেত্রে সত্যই কোন বিজয়ী নেই।
জাভা কেন নয়? আপনি কি কখনও জাভা দিয়ে ইউআই তৈরির চেষ্টা করেছেন? এটি অন্য যে কোনও কিছুর তুলনায় জটিল এবং ধীর বোধ করে, কারণ এটি। কোনও ত্বরিত গ্রাফিক্সও এখানে একটি বড় নেতিবাচক নয়। জাভার স্যান্ডবক্সিং সত্যিই ভাল, এবং এটি যদি সঠিকভাবে ব্যবহার করা হয় তবে কোনও ব্রাউজারের সুরক্ষা উন্নত করতে সহায়তা করতে পারে, তবে এটি কনফিগার করে কাজ করতে ব্যথা হয়। বেশিরভাগ আধুনিক ব্রাউজারের তুলনায় গ্রাফিক্স বিন্যাসের সমর্থন পিছিয়ে নেই।
সি # কেন নয়? আপনার একমাত্র লক্ষ্য যদি উইন্ডোজ হয় তবে সি # আসলে একটি ভাল উপস্থাপনা করতে পারে। আপনি যখন অন্য কিছু সমর্থন করতে চান তখন সমস্যাটি আসে। মনো এই কাজের পক্ষে ক্রস প্ল্যাটফর্ম হিসাবে বিবেচিত হওয়ার পক্ষে যথেষ্ট পরিমাণে ধরেনি - বিশেষত ত্বরণী গ্রাফিক্স সমর্থন এবং ডাব্লুপিএফ সহ। কে জানে যে এটি পরিবর্তন হতে কত দিন লাগবে।
সি না কেন? সেখানে প্রায় প্রতিটি প্ল্যাটফর্মের জন্য একটি এম সংকলক রয়েছে (এমবেডেড ডিভাইস সহ)। তবে, সি আপনার পক্ষে অনেক কিছুই করে না যা আপনাকে অতিরিক্ত সচেতন হতে হবে। আপনার কাছে API এর সর্বনিম্ন স্তরের অ্যাক্সেস রয়েছে তবে বেশিরভাগ সি বিকাশকারী GUI করেন না। এমনকি সি জিইউআই লাইব্রেরিগুলি কোনও অবজেক্ট ওরিয়েন্টেড পদ্ধতিতে লেখা হয়। আপনি ইউআই কথা বলা শুরু করার সাথে সাথে একটি অবজেক্ট ওরিয়েন্টেড ভাষা আরও ভাল বোধ করা শুরু করে making
উদ্দেশ্য সি না কেন? যদি আপনার একমাত্র টার্গেট অ্যাপল হয় তবে তা অনেক অর্থবোধ করে। তবে বেশিরভাগ বিকাশকারীরা উদ্দেশ্য-সি জানেন না এবং এটি শেখার একমাত্র কারণ হ'ল নেক্সটিটি বা অ্যাপল বাক্সগুলিতে কাজ করা। নিশ্চিত যে আপনি অবজেক্টিভ-সি দিয়ে যে কোনও সি লাইব্রেরি ব্যবহার করতে পারেন, এবং অনেক প্ল্যাটফর্মের জন্য সংকলক রয়েছে, তবে লোকেরা এতে কাজ করার সন্ধান করা আরও স্পর্শযুক্ত হবে। কে জানে? সম্ভবত অ্যাপল এই অনুভূত ঘাটতিটি ঘুরিয়ে দিতে পারে।
সি ++ কেন? এখানে প্রায় প্রতিটি প্ল্যাটফর্মের জন্য একটি সি ++ সংকলক রয়েছে। প্রায় প্রতিটি জিইউআই লাইব্রেরিতে একটি সি ++ ইন্টারফেস থাকে, কখনও কখনও এটি আরও ভাল হয় এবং কখনও কখনও এটি অন্যরকম হয়। উদাহরণস্বরূপ, মাইক্রোসফ্টের এটিএল উইন 32 সি ফাংশন কলগুলি বা এমএফসি লাইব্রেরির চেয়ে অনেক ভাল। ইউনিক্সে জিটিকে-র জন্য সি ++ র্যাপার রয়েছে এবং অ্যাপলটির উদ্দেশ্য-সি জিইউ লাইব্রেরির চারপাশে যদি কারও কাছে সি ++ র্যাপার না থাকে তবে আমি অবাক হয়ে যাব। প্রক্রিয়া পরিচালনা জাভা বা সি # এর তুলনায় সি ++ এর মধ্যে সহজ (সেই বিবরণগুলি আপনার জন্য বিমূর্ত করা হয়)। এটি কাঁচা পারফরম্যান্সের চেয়ে হার্ডওয়্যার ত্বরণ থেকে অনুভূত গতি বেশি আসে। সি ++ আপনার জন্য কাঁচা সি (যেমন সীমাবদ্ধ স্ট্রিং) এর চেয়ে বেশি জিনিসের যত্ন নেয় তবে এখনও আপনাকে জিনিসগুলিকে টুইঙ্ক করার স্বাধীনতা দেয়।
আপাতত, সি ++ বিকল্পগুলি সরিয়ে দেয়।
আমি এই সম্পর্কে একটি উপন্যাস লেখার সিদ্ধান্ত নিয়েছি যে লোকেরা এটি চকচকে করবে এবং আমাকে উজ্জীবিত করবে। না, না, মজা করছি! আমি প্রতিটি শব্দের উপর ভোগ করেছি। প্রতিটি শব্দ, আমি আপনাকে বলছি!
সমস্ত বড় ওয়েব ব্রাউজারগুলি 90 এর দশকে ফিরে তাদের উত্স সনাক্ত করতে পারে। কনকরার সাফারি এবং ক্রোমে পরিণত হয়েছিল; নেটস্কেপ ফায়ারফক্সে পরিণত হয়েছিল; আইই এবং অপেরা এখনও আইই এবং অপেরা। এই ব্রাউজারগুলির সবগুলিই আগতদের 15 বছরের শুরুর দিকে।
আমি আপনাকে পরামর্শ দিচ্ছি যে এমনকি আধুনিক ব্রাউজারগুলির উদ্ভবের সময় 1995 এর কাছাকাছি যে কোনও গ্রহণযোগ্য ক্রস প্ল্যাটফর্ম (উইন্ডোজ / ম্যাক / ইউনিক্স এবং আরও খারাপ) ভাষার নাম দেওয়ার চেষ্টা করুন । সি / সি ++ ব্যতীত অন্য কোনও ক্ষেত্রে কোরটি তৈরি করতে আপনাকে সম্ভবত একটি সংকলক এবং প্ল্যাটফর্মের লাইব্রেরিগুলি তৈরি বা কিনে সংশোধন করতে হবে।
শুধু মজা করার জন্য, আসুন আজ সমস্যাটি নিয়ে ভাবি। হ্যাঁ, বিকল্প আছে, কিন্তু এখনও বড় সমস্যা আছে।
ভাষা পছন্দ অন্তত এই সমস্যাগুলি উপস্থাপন করে:
আপনি ভাষাটি জানেন বা শিখতে পারেন এমন লোকেরা আপনি কোথায় পাবেন? এটি ওসিএএমএল, এফ #, হাস্কেল, কমন লিস্প এবং ডি এর মতো ভাষার পক্ষে বাধা যা দ্রুত এবং উচ্চ-স্তরের ব্রাউজারটি সুন্দরভাবে লেখার পক্ষে যথেষ্ট, তবে কয়েকটি অনুগামী রয়েছে (10 কে-100k পরিসরে, সম্ভবত) আপনি উদারপন্থী হলেও সমস্ত শখবিদ এবং শিক্ষাবিদ গণনা করুন।
উপরের কার্গো-কাল্ট উত্তরের উত্তর:
এমনকি আধুনিক সময়ে, আপনার রেন্ডারিং পৃষ্ঠাগুলি এবং জাভাস্ক্রিপ্ট চলমান গণনার নিবিড় অংশগুলির জন্য মোটামুটি দ্রুত ভাষা প্রয়োজন। আপনি জিইউআই উপাদান ইত্যাদি তৈরির জন্য একটি উচ্চ-স্তরের ভাষার সাথে পরিপূরক করতে পারেন etc. আপনি কেবল "ঠিক আছে, সি # এবং লুয়া" বলতে পারবেন না। যদি আপনি সি ভাষা বা সি ++ বেস ভাষা হিসাবে না বেছে নেন তবে আপনাকে সম্ভবত সেতুটি নিজেই তৈরি এবং ডিবাগ করতে হবে।
ক্রস-প্ল্যাটফর্ম বিকাশ হ'ল কৃমির আরেকটি ব্যাগ। আপনি সি # বা এফ # ব্যবহার করতে পারেন এবং জিটিকে # তে আপনার আঙ্গুলগুলি অতিক্রম করতে পারেন এবং মনো ভবিষ্যতে বেঁচে থাকতে পারে। আপনি প্রচলিত লিস্প, হাস্কেল, ওক্যামল চেষ্টা করতে পারেন ... উইন্ডোজ এবং ম্যাক এবং লিনাক্সে কাজ করা সবকিছুই শুভকামনা ।
এত কিছুর পরেও আপনাকে প্রচুর পরিমাণে কার্যকারিতা তৈরি করতে হবে, তাই আপনি যদি একটি নিম্ন-স্তরের ভাষা চয়ন করেন তবে আপনার আগে আগের তুলনায় কোডারদের এমনকি একটি হুজার আর্মি প্রয়োজন। মনে রাখবেন যে প্রায় পনেরো বছরে কেউ সত্যিই স্ক্র্যাচ থেকে কোনও ব্রাউজার তৈরি করেনি। এটি আংশিক কারণ (আশ্চর্য!) এটি শক্ত।
বিশেষত, জাভাস্ক্রিপ্ট দোভাষী হওয়া সমস্যা 3 (একটি অর্জন) বা সমস্যা 4 (একটি তৈরি করুন)।
আপনি যদি আজ (২০১১ শুরুর দিকে) একটি তিন-প্ল্যাটফর্ম (উইন্ডোজ / ম্যাক / * নিক্স) ব্রাউজারটি বিকাশ করেছেন, তবে কয়েকটি পছন্দ কী?
যদি আমরা পরের কয়েক বছরের মধ্যে আরও একটি বড় ব্রাউজারের উত্থান দেখতে পাই তবে আমি বাজি ধরবো এটি সি বা সি ++ এবং একটি গতিশীল ভাষায় (ফায়ারফক্সের মতো) লিখিত হবে, ওপেন সোর্স বা মালিকানাধীন কিনা।
সম্পাদনা (জুলাই ৩১, ২০১৩) : হ্যাকার নিউজ-এর মন্তব্যকারীরা মনে করছেন রাস্ট অ্যান্ড গো (বিশেষত আমার উত্তরের সাথে সম্পর্কিত নয়) উল্লেখ করেছেন, যা অস্পষ্টভাবে "বিবিধ দ্রুত" বালতিতে পড়েছে। ভাষাগুলির এই তালিকাটি সমতাবাদী এবং আপ টু ডেট রাখার চেষ্টা করা একটি পরাজয়ের লড়াই হবে, সুতরাং পরিবর্তে আমি এটিকে লেখার সময় হিসাবে এবং এটি একা রেখে যাওয়ার সময় হিসাবে একটি প্রতিনিধি নমুনা বলছি।
দ্রুততা
যতটা কুৎসিত তা হ'ল, যখন আপনি কোডের উপর একটি দ্রুত প্রয়োগ এবং সম্পূর্ণ নিয়ন্ত্রণ চান তখন সি ++ আপনি যা ব্যবহার করেন তা এখনও।
এই কারণেই গেমস, অফিসের নন-কোর অংশগুলি (যেমন ফাইল আমদানিকারক) এবং আরও অনেকগুলি এখনও সি ++ এ লেখা হয়।
MSalters এর প্রতিক্রিয়া অন্তর্ভুক্ত সম্পাদিত
আমি কেবল অনুমান করতে পারি তবে আপনি এমন সফ্টওয়্যার পণ্যগুলি উল্লেখ করছেন যা একাধিক প্ল্যাটফর্মকে লক্ষ্য করে এবং সি ++ যে কোনও প্ল্যাটফর্মে সংকলন করা যায়।
(আমি প্রায় পাঁচ বছর ধরে ফায়ারফক্সে কাজ করছি।)
প্রশ্নকর্তা ঠিক বলেছেন যে ফায়ারফক্সের অনেকগুলি কোড সি ++, এবং আপনি সি লাইনের কোড অনুসারে গণনা করলে সি ++ সংখ্যাগরিষ্ঠ হয় (যদিও এটি পুরো গল্পটি বলে না, যেহেতু আমাদের কাছে প্রচুর জাভাস্ক্রিপ্ট রয়েছে, এবং জেএস আরও বেশি সি ++ এর চেয়ে সংক্ষিপ্ত)।
তবে বাস্তবে, ফায়ারফক্স বিভিন্ন ভাষায় রচিত:
আমি নিশ্চিত কিছু ভুলে যাচ্ছি।
এই তালিকাটি গুরুত্বপূর্ণ কারণ এটি অবিশ্বাস্য জটিলতায় ইঙ্গিত দেয় যা একটি ওয়েব ব্রাউজারের পিছনে বসে।
হ্যাঁ, ফায়ারফক্সের প্রচুর সি ++ কোড রয়েছে এবং হ্যাঁ, নেটস্কেপ প্রতিষ্ঠিত হওয়ার সময় সি ++ এই ধরণের জিনিসগুলির জন্য সেরা ভাষা ছিল with তবে আমি আরও দাবি করি যে আমরা যা করি তার জন্য আজকের চেয়ে ভাল ভাষা আর নেই।
অন্য কোনও ভাষার গ্রন্থাগারগুলির মতো বাস্তুসংস্থান নেই (আমরা বাহ্যিক কোডের উপর নির্ভর করি) av অল্প কয়েকটি ভাষা আপনাকে সি ++ এর মতো পূর্ণ-স্ট্যাক নিয়ন্ত্রণ দেয় (আমরা নিয়মিতভাবে আমাদের কাস্টম হিপ বরাদ্দকারীটিকে কলঙ্ক করি এবং দ্রুত হতে বা কম স্মৃতি ব্যবহার করার জন্য সমস্ত ধরণের মেমরি-অনিরাপদ জিনিস করি) things কয়েকটি অন্যান্য ভাষা আপনাকে বেশিরভাগ স্ট্যান্ডার্ড গ্রন্থাগারকে বুদ্ধিমানভাবে পুনরায় প্রয়োগ করতে দেয় (আমাদের নিজস্ব স্ট্রিং এবং সংগ্রহের বাস্তবায়ন রয়েছে, আমাদের প্রয়োজন অনুসারে)। কয়েকটি অন্যান্য ভাষা আপনাকে নিজের আবর্জনা সংগ্রহকারীকে প্রয়োগ করতে দেয়। ইত্যাদি।
যদিও আমরা যা করি তার জন্য সি ++ হ'ল সুস্পষ্ট পছন্দ, এমন লোকেরা যাঁর পরামর্শ দেয় যে আমরা জাভাতে একটি ব্রাউজার লিখতে পারি এবং প্রয়োজনে আমাদের নিজের জেভিএম লিখতে পারি কোনও কিছুতে to এটি মূলত আমরা যা করি তা তবে জাভার পরিবর্তে জাভাস্ক্রিপ্ট। অবশ্যই, ব্রাউজারের বেশিরভাগ অংশ জাভাস্ক্রিপ্টে লেখা নেই। তবে একটি অবাক করা পরিমাণ।
হ্যাঁ, আপনি পেতে সেইসব পণ্যগুলির সরাসরি ডেভেলপার জিজ্ঞাসা আছে চাই উত্তর, কিন্তু আমি সন্দেহ এটা পরিচিত সংমিশ্রণ এর (যেমন বাইটকোড উল্টোদিকে একটি নেটিভ বাইনারিতে সংকলন), কর্মক্ষমতা, এবং (তা সেই ডেভেলপারদের সেরা জানত থাকবে) সরঞ্জামগুলি (সি, সি ++ এর মতো ভাষার সাথে তুলনায় এসটিএল এর মতো দুর্দান্ত শ্রম-সঞ্চয়কারী গ্যাজেটগুলি পূর্ণ)।
প্রতিটি ব্রাউজারেরই কিছু ইতিহাস রয়েছে যা ভাষার পছন্দকে প্রভাবিত করে।
উদাহরণস্বরূপ, ক্রোম এবং সাফারি উভয়ই ওয়েবকিটের উপর ভিত্তি করে রয়েছে, যার উত্স কেডিএ প্রকল্পের কেএইচটিএমএল অংশে রয়েছে। মূলত কে-ডি-কে-কে কিউটি জিইউআই টুলকিটের প্রদর্শন হিসাবে তৈরি করা হয়েছিল, সুতরাং কে-ডি-কে সামগ্রিকভাবে একটি সি ++ প্রকল্প। সমস্ত নতুন কে-ডি-কে প্রকল্পগুলি তখন সি -++ তে সম্পূর্ণ লিখিত ছিল, সুতরাং এটি কেএইচটিএমএলের জন্য যৌক্তিক পছন্দ ছিল। এরপরে এটি অন্য জিইউআই টুলকিটগুলি ব্যবহার করতে পোর্ট করা হয়েছে।
অপেরার প্রেস্টো ইঞ্জিনটি পারফরম্যান্স এবং একটি ছোট বাইনারি আকার মনে রেখে লেখা হয়েছিল: সি ++ ছিল যৌক্তিক পছন্দ।
মাইক্রোসফ্টের আইই অ্যাক্টিভএক্স উপাদানগুলির সংকলন হিসাবে লেখা হয়েছিল, যে কোনও ভাষায় সিওএম বাইন্ডিং থাকতে পারে, তবে সম্ভবত এটি সি ++ এর সাবসেটে লেখা হয়েছিল, কারণ তাদের কোডবেসের বেশিরভাগ অংশ ইতিমধ্যে সেই ভাষায় লেখা রয়েছে।
নেটস্কেপের মজিলা সম্ভবত সি ++ তে লেখা হয়েছিল কারণ পোর্টেবিলিটিটি তাদের জন্য একটি প্রধান উদ্বেগ ছিল। সি এবং সি ++ সংকলকগুলি (কার্যত) সর্বব্যাপী এবং তাই এটি একটি যৌক্তিক পছন্দ ছিল।
এই পছন্দগুলির জন্য কোনও সহজাত প্রযুক্তিগত কারণ নেই । এটি "এ সময়টিতে একটি ভাল ধারণা বলে মনে হয়েছিল"।
সি এবং সি ++ এ নেটওয়ার্কিং অপ্টিমাইজ করা সহজ, যেহেতু আপনি না চাইলে আপনাকে লাইব্রেরি ব্যবহার করতে হবে না। আমি সন্দেহ করি যে সি ++ হ'ল পছন্দের ভাষা কারণ এটি সি এর সুবিধার জন্য অনুমতি দেয়:
ওওপি এর সুবিধার সাথে মিলিত:
যখন প্রথম রাউন্ডের ব্রাউজারগুলির কোডের প্রথম লাইনগুলি লেখা হয়েছিল, তখন সি # এবং জাভা বিদ্যমান ছিল না। রুবিও করেনি। পাইথন প্রায় কাছাকাছি থাকতে পারে, কিন্তু এটি এখনও একটি ছোট হোমব্রু প্রকল্প ছিল।
মূলত, সত্যিই সি ++ ব্যতীত অন্য কোনও পছন্দ ছিল না যা এমন একটি ব্রাউজার তৈরি করতে দেয় যা দ্রুত হতে পারে এবং বিভিন্ন প্ল্যাটফর্মগুলিতে চালিত হয়।
তাহলে সেগুলি কেন সি ++ এ লেখা হয়েছিল? কারণ এগুলিই কেবলমাত্র উপলভ্য ছিল যেগুলিতে তারা লেখা যেতে পারে।
কারণ অন্যান্য ভাষায় লিখিত ব্রাউজারগুলি (যেমন হটজভা, স্পষ্টতই জাভাতে যথেষ্ট পরিমাণে লিখিত) বাজারের গ্রহণযোগ্যতা / অনুপ্রবেশের কোনও পর্যাপ্ত ডিগ্রি কখনও অর্জন করতে পারেনি।
হটজাবের বর্তমান পুনরাবৃত্তির (বা অতি সাম্প্রতিক - বেশ কিছুক্ষণের মধ্যে আপডেট হয়নি) সম্পর্কে আমি কিছু বলতে পারি না , তবে যখন আমি চেষ্টা করেছিলাম তখন বাজারের অনুপ্রবেশের অভাব (কমপক্ষে আমার কাছে) খুব সহজেই বোঝা যায় বলে মনে হয়েছিল - এটি বেশ কুশল, ধীর এবং বেশ কয়েকটি ওয়েব পৃষ্ঠার সাথে বেমানান ছিল। শেষ পর্যন্ত, এটি এমন একটি ভিত্তির উপর ভিত্তি করে বলে মনে হয়েছিল যা কখনই প্যানড হয়ে যায়নি: ওয়েবটি মূলত জাভা অ্যাপলেট দ্বারা গঠিত হবে, যেখানে কোনও অ্যাপলেট কোথায় প্রদর্শিত হবে তা বলার সাথে এইচটিএমএল থাকবে telling
এর বেশিরভাগ অংশ সম্ভবত .তিহাসিক: বেশিরভাগ বড় ওয়েব ব্রাউজারগুলি দীর্ঘ সময় ধরে চলেছে। যখন এগুলি প্রথম লেখা হয়েছিল, ল্যান্ডস্কেপটি অনেক আলাদা ছিল: সি ++ একটি "গরম" নতুন ভাষা ছিল, সুতরাং এটি প্রচুর নতুন বিকাশের জন্য ব্যবহৃত হচ্ছে। ব্রাউজারগুলি প্রায় খুব বেশি ব্যবহৃত বেশিরভাগ সফ্টওয়্যার হয়ে উঠেছে, অন্য সময় থেকে আরও অনেকে বিস্মৃত হয়ে গেছে।
আমি মনে করি ভাষার প্রদর্শিত "মনোভাব" এরও একটি প্রভাব রয়েছে: সি ++ (এর আগে সি এর মতো) সর্বদা ব্যবহারিকতা এবং বাস্তববাদকে জোর দিয়েছিল। এই মৌলিক মনোভাবটি এমন প্রোগ্রামারদের আকর্ষণ করতে ঝোঁক যাঁরা বাস্তববাদীও হন। অন্যান্য অনেকগুলি ভাষা কমনীয়তার মতো জিনিসের উপর আরও বেশি জোর দেয় - এবং এটি করে তারা প্রোগ্রামারদের আকর্ষণ করে যারা একই পদ্ধতিতে চিন্তা করে। তার সাথে সমস্যাটিই আমি "লিস্প এফেক্ট" বলি। লক্ষণগুলির মধ্যে রয়েছে:
আরও অনেক কিছু রয়েছে তবে আপনি সাধারণ ধারণাটি পেয়ে যান (এবং হ্যাঁ, আমি কিছুটা ডিগ্রি ছাড়াই - তবে কেবলমাত্র একটি ডিগ্রীতে)। হ্যাঁ, আপনি যে কোডটি পেয়েছেন তার কয়েকটি চমকপ্রদ সুন্দর হবে - তবে এটির সম্ভাবনা হ'ল এটি ছয় মাস দেরিতে, এবং সিস্টেমের (যেটি বলে মনে করা হবে) কোডের প্রতিটি অন্যান্য অংশের সাথে বেশিরভাগ ক্ষেত্রেই বেমানান, এবং আপনি যখন এটি গ্রহণ করবেন ততক্ষণে একটি সুন্দর ন্যায্য সুযোগ অন্যরকম কিছু পরিবর্তিত হয়েছে যা আপনি একেবারেই ব্যবহার করতে পারবেন না।
এমন ভাষাও রয়েছে যা নিঃসন্দেহে কেবল সূক্ষ্মভাবে কাজ করবে, তবে (সঠিকভাবে বা ভুলভাবে) কারও কাছে কোনও ব্রাউজার লিখে রাখার জন্য বাজারের ভাগ (বা গুরুত্বপূর্ণ সময়ে, ছিল না) কেবল নেই। একটি সম্পূর্ণ ব্রাউজারের আকার এবং জটিলতা দেওয়া, এটির বিকাশ করতে অনেক লোক এবং বেশ খানিকটা সময় লাগে। এই ধরণের বিনিয়োগের ফলে, অনেকে উন্নয়নের সরঞ্জামগুলির মতো জিনিসগুলির তুলনায় তুলনামূলকভাবে রক্ষণশীল হন।
gets
, এটি একটি ভয়ানক ফাংশন, তবে খুব কমই অনিবার্য (এবং অবশ্যই ভাষার "মৌলিক" নয়, বা এর মতো কিছু)। দ্বিতীয়ত, সি ++ কোনও ক্ষেত্রে সি এর মতো একই ভাষা নয়। তৃতীয়, ওপেনবিএসডি বেশ সুন্দরভাবে প্রমাণ করে যে সুরক্ষিত সফ্টওয়্যারটি সিতে লিখিত হতে পারে এবং সিটিতে লেখা হয়। সি-তে শক্ত, সুরক্ষিত সফ্টওয়্যার লিখতে বাধা দেয় এমন কোনও "অন্তর্নিহিত ভাষার ত্রুটি" নেই যে ওপেনবিএসডি-র ক্ষুদ্র বাজার ভাগ ইঙ্গিত দেয় যে সুরক্ষা বেশিরভাগ ক্ষেত্রেই প্রধান উদ্বেগ নয় isn't মানুষ।
gets
হল যে আপনি যে বাফারটি ব্যবহার করছেন তার দৈর্ঘ্যটি আপনি এটিকে পাস করেন না এমন একটি সাধারণ পরিণতি। এটি সম্পর্কে ভাষার মৌলিক কিছুই নয় - আপনি পাস্কালে একই জিনিস করতে পারেন (এবং আমার কাছেও)। কোনও বুদ্ধিমান আক্রমণকারীর বিরুদ্ধে সুরক্ষিত সফ্টওয়্যার রচনা ভাষা নির্বিশেষে সহজ নয়। তিনটিই অভিজ্ঞতার ভিত্তিতে এটি পাস্কালের চেয়ে সি তে কিছুটা সহজ এবং সি +++ এর চেয়ে সি এর চেয়ে অনেক বেশি সহজ
কার্গো-কাল্ট প্রোগ্রামিং। "সি ++ দ্রুত" এই ধারণাটি এখনও আছে, (খারাপভাবে ভাঙা অবজেক্ট মডেলের মতো দুর্বল-চিন্তিত ভাষা স্তরের বৈশিষ্ট্যগুলি যা জিনিসগুলিকে ধীরে ধীরে কমিয়ে দেয়) এবং লোকেরা তাদের ব্রাউজারগুলিকে দ্রুততর করতে চায়, তাই তারা সি ++ এ লিখেন ।
একটি বুদ্ধিমান বিশ্বে, নেটওয়ার্ক-মুখী সফ্টওয়্যার লেখার লোকেরা এমন কোনও ভাষা ব্যবহারের চিন্তায় আতঙ্কিত হয়ে পড়বে যা সি এর অন্তর্নিহিত সুরক্ষা সংক্রান্ত সমস্ত বিষয় নিয়ে স্যাডলড হয়ে আসে এবং আসলে তা করা অপরাধমূলক অবহেলার কাজ। (কেবল গত 15 বছর বা তার মধ্যে বিভিন্ন ব্রাউজারের বিরুদ্ধে কতগুলি বাফার ওভারফ্লো শোষণগুলি পাওয়া গেছে তা দেখুন! এই কোডারগুলি কত মিলিয়ন ডলারের ক্ষতির জন্য দায়ী?)
দ্রুত বাইনারি তৈরি করতে সক্ষম অন্যান্য সংকলিত ভাষা রয়েছে। সমস্যাটি হ'ল সি পরিবারের মতো তাদের এক্সপোজারটি নেই এবং আমাদের সবাইকে এর জন্য ভোগান্তি পোহাতে হচ্ছে।
মজাদার ঘটনা: ১৯৮৮ সালে মরিস কীট ইন্টারনেটে হিট হওয়ার পরে, সিটিতে ওএস এবং নেটওয়ার্ক-মুখোমুখি সফ্টওয়্যার লেখার সমস্যাগুলি চূড়ান্তভাবে প্রকাশ করে, (যা এখনও পর্যন্ত সমাধান করা হয়নি, কারণ তারা ভাষার অন্তর্নিহিত ত্রুটি রয়েছে're ,) অ্যাপল বেশ কয়েক বছর ধরে প্যাস্কেলে লিখিত বেশ কয়েক বছর ধরে বিশ্বের এখন পর্যন্ত দেখা সবচেয়ে উন্নত অপারেটিং সিস্টেমটি প্রকাশ করছিল।
নিয়ন্ত্রণ এবং বহনযোগ্যতা
বেশিরভাগ গতির আর্গুমেন্ট যে কোনও উপায়ে যেতে পারে, তবে যে কোনও ক্ষেত্রে যেখানে আপনার কীভাবে কিছু করা হয় তার উপর আপনাকে সুনির্দিষ্ট নিয়ন্ত্রণের প্রয়োজন যেখানে উচ্চ স্তরের ভাষাগুলির বেশ কয়েকটি আপনার প্যারেডে বৃষ্টি হবে। এর ব্যতিক্রম রয়েছে, তবে তাদের বেশিরভাগ ব্রাউজারের মতো কোনও ক্ষেত্রে গণনা করার পক্ষে পর্যাপ্ত ক্রস প্ল্যাটফর্ম নয়।
সি ++ বনাম অন্যান্য ভাষার গুণাগুণগুলির সাথে এর কোনও যোগসূত্র নেই। আপনি অবশ্যই হাস্কেলের মতো ভাষায় স্ক্র্যাচ থেকে আরও ভাল ব্রাউজার লিখতে পারেন; একটি প্রকল্প যা এই গুরুত্বপূর্ণ এমনকি তাদের নিজস্ব JVM বাস্তবায়ন করতে পারে যদি তাদের কিছু কার্য সম্পাদনের বৈশিষ্ট্যগুলির গ্যারান্টি প্রয়োজন হয়। ফেসবুক কীভাবে তাদের নিজস্ব পিএইচপি সংকলক / অপ্টিমাইজার লিখেছিল Like
একটি ব্রাউজার যা অ-মানক মার্কআপে বিরতি দেয় তা অকার্যকর থেকেও খারাপ। লিগ্যাসি কম্প্যাটটি এতটাই সমালোচনা এবং জটিল যে পুনর্লিখনটি কেবল একটি বিকল্প নয়। যুদ্ধ-পরীক্ষিত সুরক্ষা ইত্যাদিতে প্রচুর অর্থ এবং সময় ব্যয় করা হয়, আপনি কেবল বিনিয়োগটি ফেলে দিতে পারবেন না। আবার, ফেসবুকের মতো কীভাবে এখনও পিএইচপি-তে লেখা আছে।