কেন পিএইচপি সম্পূর্ণ ইউনিকোড সমর্থন করতে পারে না?


18

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

উত্তর:


16

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

বর্তমানে পিএইচপি-র বেশিরভাগ স্ট্রিং-প্রসেসিং ফাংশনগুলি হ'ল "বাইনারি-সেফ", যার অর্থ আপনি এগুলিকে কোনও এনকোডিংয়ের সাথে ফাইলের পাশাপাশি ইমেজ ডেটা ইত্যাদির মতো বাইনারি ফর্ম্যাটগুলি প্রক্রিয়া করতে ব্যবহার করতে পারেন means

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

আর একটি শক্ত, তবে সমাধানযোগ্য সমস্যা হ'ল ইউনিকোড স্ট্রিংগুলিতে এলোমেলো অ্যাক্সেস। $string[$offset]তুচ্ছ থেকে খুব ধীর বা সামান্য ধীর এবং খুব জটিলতে পরিবর্তনের বাস্তবায়ন ।

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

</speculation>


2
utf8 এ স্যুইচ করার সাথে সম্পূর্ণরূপে একমত।
গ্র্যান্ডমাস্টারবি

আপনি কি মনে করেন যে ইউটিএফ -১ data, ডাটা খণ্ডের আকার বাদে, ইউটিএফ -8 এর চেয়ে খারাপ?
ts01

3
@ ডিন হার্ডিং: আমি বলছি না যে ইউটিএফ -16 এর সাথে আদৌ কাজ করা অসম্ভব, কেবল এলোমেলো অ্যাক্সেস ( ও (1) এ ) সম্ভব নয়। ইউটিএফ -16 গ্যারান্টি দেয় না যে 100 তম কোডপয়েন্ট 200 তম বাইটে শুরু হবে, সুতরাং 100 তম কোডপয়েন্টে অ্যাক্সেস করতে আপনাকে পূর্ববর্তী সমস্তগুলি রৈখিকভাবে স্ক্যান করতে হবে (এবং ভাল প্রয়োগ অবশ্যই কোর্সের ফলাফলকে ক্যাশে করবে)। এই ক্ষেত্রে এটি ইউটিএফ -8 এর সমান (যেমন এন-থ্রি অক্ষর / কোডপয়েন্টে অ্যাক্সেস ও (এন) নয়, ও (1) )।
কর্নেল

1
@ ডিন: ইউটিএফ -16 এবং ইউটিএফ -8 এর মধ্যে কোলেশন বা রূপান্তরগুলির মতো বিষয়গুলি অবশ্যই সার্গ্রেটগুলির ক্ষেত্রে একইভাবে কাজ করে না যেমন তারা অক্ষরগুলির সংমিশ্রণের জন্য করে।
dan04

3
ইউটিএফ -১ over (বা অন্য কোনও এনকোডিং) ওভার ইউটিএফ -১ over (বা অন্য কোনও এনকোডিং) থেকে UTF-8 বেছে নেওয়ার কারণগুলি সম্পর্কে একটি দুর্দান্ত সংক্ষিপ্তসার পাওয়া যাবে utf8everybody.org.org এ
জোছিম সৌর

11

টিএলডিআর: অনেকগুলি পিএইচপি লাইব্রেরি হ'ল দেশীয় সি লাইব্রেরিগুলির তুলনায় কেবল একটি পাতলা স্তর যা ইউনিকোড সমর্থন করে না বা একে অপরের সাথে বেমানান নয় এমনভাবে সমর্থন করে। এই পরিস্থিতি সংশোধন করার ফলে পশ্চাদপটে বেমানান পরিবর্তনগুলি প্রবর্তিত হতে পারে।

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

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

ম্যাকিয়াভেলির কথায় যেমন বলা হয়েছে, "যিনি প্রথমে তার ভিত্তি স্থাপন করেননি সে পরে সেগুলি স্থাপনের যথেষ্ট দক্ষতার সাথে সক্ষম হতে পারে তবে তারা স্থপতিদের কাছে সমস্যায় পড়বে এবং ভবনের জন্য বিপদ হবে"।

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

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


ঠিক আছে, সবাই এখানে একমত, আমি মনে করি। তবে আমি বিশদ জিজ্ঞাসা করছিলাম;)
ts01

3
সমস্যাটি হ'ল অনেকগুলি অন্তর্নিহিত গ্রন্থাগারগুলি ইউনিকোড ভালভাবে পরিচালনা করে না এবং স্ক্র্যাচ থেকে শুরু না করেই সমস্যার সমাধান করা খুব কঠিন।
পাওলো স্কার্ডাইন

(এফআইআই, "কয়েক বছর আগে থেকে", পিএইচপি আরও ভাল এবং পাইথন আরও খারাপ হয়েছে)
জেডজেআর

1
@ জেডজেই: জেনে ভালো লাগল, ধন্যবাদ। আপনি কি আমাকে এই পরিবর্তন সম্পর্কে কিছু রেফারেন্স উপাদান নির্দেশ করতে যথেষ্ট দয়া করতে পারেন?
পাওলো স্কার্ডাইন

6

পুরাতন পিএইচপি 6 কাজ বন্ধ করার প্রাথমিক কারণগুলির মধ্যে একটি হ'ল এটি আনা অভ্যন্তরীণ জটিলতা এবং কাজ করার পরিমাণ, যা সবেই সম্পূর্ণরূপে অবিজ্ঞ।

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

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

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

এখন ভবিষ্যতে কী নিয়ে আসতে পারে? - পিএইচপি আরও অনেক কিছু utf-8 এর আশেপাশে তৈরি হয়েছে এমন একটি ধীর বিবর্তন ঘটছে। কোনও কাস্টম টাইপের সাথে শক্তিশালী উপায়ে নয় এবং সমস্ত কিছুতে বাধ্য করা এবং বর্তমানে বিকাশকারীরা এই গরম লোহাটি স্পর্শ করতে উদ্বুদ্ধ হয় না। কেউ আশা করতে পারেন যে কারও কাছে এটি সুন্দরভাবে কাজ করার জন্য একটি ভাল প্রস্তাব রয়েছে তবে বর্তমানে "প্রত্যেকে" কেবল শব্দটি শুনলে পালিয়ে যাবে। :)


1

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


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

1
ওয়েল, আমাদের পিএইচপি for এর জন্য একটি রোডম্যাপ ছিল help সাহায্য করেনি;) একটি রোডম্যাপ সমস্যা হ'ল পিএইচপি স্বেচ্ছাসেবীদের দ্বারা চালিত হয় যা উপস্থিত হয় (এবং যদি তাদের "ভাল ধারণা থাকে" তবে আমরা তাদের রাখতে এবং তাদের বৈশিষ্ট্যগুলি শীঘ্রই যুক্ত করতে চাই) এবং হঠাৎ অদৃশ্য হয়ে গেল (বিবাহিত হওয়া, চাকরি পরিবর্তন করা, ...)
জোহানেস

সুখের সাথে পিএইচপি 7 একটি সাফল্য।
বিপদ 89

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