জাভা
সময়কাল। দাড়ি. গল্পের শেষে.
কোথা থেকে শুরু? ওহ, আমি জানি কোথায় শুরু করতে হবে: জাভার অত্যন্ত উন্মাদিত জটিল এবং কুরুচিপূর্ণ এবং বোকা এবং সহজাত ভাঙা জেনেরিকগুলি। আমি আরও বলতে চাই? :( ঠিক আছে ঠিক আছে, তারপরে: ক্ষয় টাইপ করুন ।
তারপরে নন-ডিসট্রিমেন্টিক রিসোর্স ম্যানেজমেন্ট রয়েছে। কেওল পাদদেশ!
এরপরে কী হবে? ওঁ হ্যাঁ: জাভার মূ .় রেগেক্সগুলি আমার সবচেয়ে বিরক্তিকর, সিটিং গরুর মাংস। পর্যাপ্ত ব্যাকস্ল্যাশ না থাকার কারণে আমি কতবার পোড়া হয়েছি তা গণনা করতে পারি না। এটি সহস্রাব্দ থেকে কোনও ইউনিকোড বৈশিষ্ট্য অ্যাক্সেস না করার চেয়ে আরও খারাপ - এটি সম্পূর্ণ ষাঁড়। দশটি ফ্রিকিং বছর শেষ হয়ে গেল !!! সম্পূর্ণ অকেজো। এটা ট্র্যাশ।
তারপরে বাগটি রয়েছে যে অক্ষর শ্রেণীর শর্টকাটগুলি নন-এসএসআইআই-তে কাজ করে না। কী রাজকীয় যন্ত্রণা! এবং এমনকি ব্যবহার বিবেচনা করবেন না \p{javaWhiteSpace}
; এটি বেশ কয়েকটি সাধারণ ইউনিকোড হোয়াইটস্পেস কোড পয়েন্ট সহ সঠিক কাজ করে না।
আপনি কি জানতেন \p{javaJavaIdentifierStart}
সম্পত্তি আছে? তারা কী ভাবছেন? তারা খুব স্মরণ করলেন যে তারা এই ধরণের স্মার্ট পীপার্সকে খুব শক্ত করেই পেয়েছিলেন।
কখনও CANON_EQ পতাকা ব্যবহার করার চেষ্টা করেছেন? আপনি কি জানেন যে এটি সত্যই করে এবং এটি কী করে না ? তথাকথিত "ইউনিকোড কেস" সম্পর্কে কীভাবে? প্রচুর সাধারণ কেসিং জিনিসগুলি মোটেই কাজ করে না।
তারপরে তারা রক্ষণাবেক্ষণযোগ্য রেজেক্সগুলি লিখতে শক্ত করে তোলে। জাভা এখনও কীভাবে মাল্টলাইন স্ট্রিং লিখতে পারে তা বুঝতে পারেনি, সুতরাং আপনি এই জাতীয় পাগল জিনিস লিখে শেষ করবেন:
"(?= ^ [A-Z] [A-Za-z0-9\\-] + $) \n"
+ "(?! ^ .* \n"
+ " (?: ^ \\d+ $ \n"
+ " | ^ [A-Z] - [A-Z] $ \n"
+ " | Invitrogen \n"
+ " | Clontech \n"
+ " | L-L-X-X \n"
+ " | Sarstedt \n"
+ " | Roche \n"
+ " | Beckman \n"
+ " | Bayer \n"
+ " ) # end alternatives \n"
+ ") # end negated lookahead \n"
এই সব নিউলাইন কি? ওহ, শুধু জাভা বোকা। তারা পার্ল মন্তব্য ব্যবহার করেছে, জাভা মন্তব্য নয় ( ইডিয়টস! ) যা লাইনের শেষ অবধি চলে। সুতরাং আপনি যদি \n
সেগুলিকে সেখানে না রাখেন তবে আপনি আপনার বাকি প্যাটার্নটি কেটে ফেলুন। দুহ ও ডাবল দুহ!
জাভাতে রেজিক্সগুলি ব্যবহার করবেন না: আপনি কেবল জিনিসগুলি ছিন্ন করতে ইচ্ছুক হবেন, এটি সব এত বেদনাদায়ক এবং ভাঙ্গা। আমি বিশ্বাস করতে পারি না লোকেরা এটি সহ্য করে। কিছু না ।
তারপরে আমরা জাওয়ার ইডিয়ট বাজে কথাগুলি এনকোডিং সহ শুরু করতে পারি। প্রথমত, জাভাটির চার্চারগুলি ইউনিকোড থাকা সত্ত্বেও ডিফল্ট প্ল্যাটফর্মের এনকোডিংটি সর্বদা কিছু লম্পট 8-বিট এনকোডিং হয় fact তারপরে কীভাবে তারা এনকোডিংয়ের ত্রুটিতে ব্যতিক্রম বাড়াবে না। আপনি খ্যাতি পেতে গ্যারান্টিযুক্ত। বা এটি সম্পর্কে:
OutputStreamWriter(OutputStream out)
Creates an OutputStreamWriter that uses the default character encoding.
OutputStreamWriter(OutputStream out, Charset cs)
Creates an OutputStreamWriter that uses the given charset.
OutputStreamWriter(OutputStream out, CharsetEncoder enc)
Creates an OutputStreamWriter that uses the given charset encoder.
OutputStreamWriter(OutputStream out, String charsetName)
Creates an OutputStreamWriter that uses the named charset.
পার্থক্য কি? আপনি কি জানতেন যে আপনার যদি একটি এনকোডিং ত্রুটি থাকে তবে তার মধ্যে কেবলমাত্র একটি ব্যতিক্রম বাড়িয়ে তুলবে? বাকিরা কেবল তাদের বিদ্রূপ করে।
তারপরে জাভা চরগুলির বোকামি একটি চরিত্র ধরে রাখার পক্ষে যথেষ্ট নয়! তারা কী চিন্তা করা হয়? এজন্য আমি তাদেরকে চার্চার বলি। আপনি যদি সঠিকভাবে কাজ করে আশা করেন তবে আপনাকে এ জাতীয় কোড লিখতে হবে:
private static void say_physical(String s) {
System.out.print("U+");
for (int i = 0; i < s.length(); i++) {
System.out.printf("%X", s.codePointAt(i));
if (s.codePointAt(i) > Character.MAX_VALUE) { i++; } // UG!
if (i+1 < s.length()) { System.out.printf("."); }
}
}
আর কে কখন তা করতে ভাবছে? কারও পাশে নেই।
কয়টি চরিত্র আছে "\uD83D\uDCA9"
? এক বা দুই? আপনি এগুলি কীভাবে গণনা করেন তার উপর নির্ভর করে। অবশ্যই রেজেক্স ইঞ্জিন যৌক্তিক চরিত্রগুলির সাথে কাজ করে, সুতরাং একটি প্যাটার্ন ^.$
সফল হবে এবং একটি প্যাটার্ন ^..$
ব্যর্থ হবে। এই উন্মাদনা এখানে প্রদর্শিত হয়:
String { U+61, "\u0061", "a" } =~ /^.$/ => matched.
String { U+61, "\u0061", "a" } =~ /^..$/ => failed.
String { U+61.61, "\u0061\u0061", "aa" } =~ /^.$/ => failed.
String { U+61.61, "\u0061\u0061", "aa" } =~ /^..$/ => matched.
String { U+DF, "\u00DF", "ß" } =~ /^.$/ => matched.
String { U+DF, "\u00DF", "ß" } =~ /^..$/ => failed.
String { U+DF.DF, "\u00DF\u00DF", "ßß" } =~ /^.$/ => failed.
String { U+DF.DF, "\u00DF\u00DF", "ßß" } =~ /^..$/ => matched.
String { U+3C3, "\u03C3", "σ" } =~ /^.$/ => matched.
String { U+3C3, "\u03C3", "σ" } =~ /^..$/ => failed.
String { U+3C3.3C3, "\u03C3\u03C3", "σσ" } =~ /^.$/ => failed.
String { U+3C3.3C3, "\u03C3\u03C3", "σσ" } =~ /^..$/ => matched.
String { U+1F4A9, "\uD83D\uDCA9", "💩" } =~ /^.$/ => matched.
String { U+1F4A9, "\uD83D\uDCA9", "💩" } =~ /^..$/ => failed.
String { U+1F4A9.1F4A9, "\uD83D\uDCA9\uD83D\uDCA9", "💩💩" } =~ /^.$/ => failed.
String { U+1F4A9.1F4A9, "\uD83D\uDCA9\uD83D\uDCA9", "💩💩" } =~ /^..$/ => matched.
এই মূর্খতা সব কারণ আপনি নিখুঁত যুক্তিসঙ্গত লিখতে পারবেন না \u1F4A9
, বা আপনি অবশ্যই এটি করতে পারবেন না এমন কোনও সতর্কতা পান না। এটি কেবল ভুল কাজটি করে।
Stoooopid।
আমরা যখন এটিতে এসেছি তখন পুরো \uXXXX
স্বরলিপিটি জন্মগতভাবে মস্তিষ্কের মৃত। জাভা প্রিপ্রোসেসর ( হ্যাঁ, আপনি আমাকে শুনেছেন ) জাভা করার আগে এটি পেয়ে যায়, সুতরাং আপনাকে পুরোপুরি যুক্তিসঙ্গত জিনিসগুলি লিখতে নিষেধ করা হবে "\u0022"
, কারণ জাভা যখন দেখবে তখন এর প্রিপ্রসেসর এটি পরিণত করেছে """
, তাই আপনি হেরে যান। ওহ অপেক্ষা করুন, যদি এটি একটি রেজেক্সে না থাকে! সুতরাং আপনি "\\u0022"
ঠিক জরিমানা ব্যবহার করতে পারেন ।
Riiiiiiiight!
আপনি কি জানতেন যে জাভাতে কোনও isatty(0)
কল করার কোনও উপায় নেই ? এমন ভাবনা ভাবতেও আপনার অনুমতি নেই। এটি আপনার পক্ষে ভাল হবে না।
এবং তারপরে পুরো ক্লাসপাথ ঘৃণা আছে।
বা এই সত্যটি যে আপনার জাভা উত্স ফাইলটির এনকোডিংটি সেই একই উত্স ফাইলে নির্দিষ্ট করার কোনও উপায় নেই যাতে আপনি এটি হারাবেন না? আমি আবারও জানতে চাই: তারা কী ভাবছে ‽‽‽
পাগলামি থামো! আমি বিশ্বাস করতে পারি না মানুষ এই আবর্জনা দিয়েছিল। এটি সম্পূর্ণ রসিকতা। আমি বরং ওয়ালমার্ট গ্রিটার হতে পারছি না তার চেয়ে ভয়াবহ জাভা পাগলামির ঝাঁকুনি এবং তীরগুলি ভোগ করার চেয়ে। এটি সমস্ত ভেঙে গেছে, এবং তারা কেবল এটি ঠিক করতে পারে না, তারা এটিও ঠিক করবে না ।
এটি একই শিয়াল-গ্রাপি লোক যারা এই ভাষায় নিজেকে অহংকার করে যে কোনও printf()
কাজকে এটি বেআইনী করে তুলেছে । জিৎ, নিশ্চিত যে সত্যিকারের ভাল কাজ করেছে, তাই না !?
নিছক নাম্বারস্কুলস। তাদের জন্য দুশ্চরিত্রা-চড় মারা খুব দয়ালু। আমি যদি সমাবেশে প্রোগ্রাম করতে চাই, আমি চাই। এটি উদ্ধারযোগ্য ভাষা নয়। সম্রাটের কোন পোশাক নেই।
আমরা এটিকে ঘৃণা করি। আমরা চিরকালের জন্য এটি ঘৃণা করি । মরে যেতে দাও মরে !