আমি লক্ষ করেছি যে আইডিই সমর্থনটি কোথাও ভাল হিসাবে খুব কাছাকাছি নেই, তবে ভাষা নিজেই ফাংশনাল প্রোগ্রামিং আইডিয়ামগুলিকে আরও পরিষ্কারভাবে সমর্থন করে।
আমি লক্ষ করেছি যে আইডিই সমর্থনটি কোথাও ভাল হিসাবে খুব কাছাকাছি নেই, তবে ভাষা নিজেই ফাংশনাল প্রোগ্রামিং আইডিয়ামগুলিকে আরও পরিষ্কারভাবে সমর্থন করে।
উত্তর:
আমি এখন এক বছরেরও বেশি সময় ধরে স্কালার প্রোগ্রামিং করছি, তাই আমি এই প্রশ্নের উত্তর দেওয়ার জন্য নিজেকে এক বছর পিছিয়ে রাখার চেষ্টা করব।
উপরের পয়েন্টগুলি আমি কমলা শিখতে শুরু করার আগে স্ক্যালাকে নিয়ে যা ভেবেছিলাম তা কমবেশি ছিল।
এক বছরের মধ্যে আমি এখানে যা পেয়েছি তা এখানে:
ঠিক আছে, আমি মনে করি স্কালা খুব জটিল। এটি সি ++ এর মতো অনুভব করে যে এতে বিভিন্ন কাজ করার বিভিন্ন উপায়ে অগণিত রয়েছে। কেউ কেউ এটিকে "nessশ্বর্য", "ভাবপ্রবণতা" বা "শক্তি" বলবেন তবে আপনার মাইলেজটি আলাদা হতে পারে vary অনেক বাস্তব বিশ্বের প্রকল্পে আপনাকে কৃত্রিমভাবে সীমাবদ্ধ করতে হবে আপনি কোন ভাষা বৈশিষ্ট্যগুলি ব্যবহার করতে যাচ্ছেন এবং কোনটি নয়, যাতে জড়িত সমস্ত বিকাশকারী ভাষার একই উপসেটটি বলতে পারে।
ফাংশনাল প্রোগ্রামিংয়ের জন্য আমি ক্লোজারকে বেশি পছন্দ করি যা স্কালার চেয়ে সহজ simp
পবিত্র যুদ্ধ শুরু হোক ;-)
প্রায় এক বছর আগে, আমি জাভা ব্যবহার অব্যাহত রাখার সাথে সাথে আমার স্টার্টআপের পণ্যগুলির ভবিষ্যত সম্পর্কে আরও হতাশ হয়ে পড়েছিলাম, তাই আমি স্কালাকে একবার চেষ্টা করার সিদ্ধান্ত নিয়েছি। আমি তখনই জাভাস্ক্রিপ্ট এবং পাইথনে প্রোগ্রামিং করছিলাম সেই সময়, রুবিও ছিল একটি ভাল বিকল্প, তবে আমি একটি স্ট্যাটিচ্যালি টাইপ করা ভাষা খুঁজছিলাম, সম্ভবত এটি এমন একটি ভাষা যা জেভিএম-এ চালানো যায়।
আমি সত্যিই স্কেলা পছন্দ করার চেষ্টা করেছি, আমি সত্যিই করেছি, তবে আমি দেখতে পেয়েছি এটি সম্পূর্ণ কুৎসিত এবং বুঝতে খুব কঠিন। আমি নাটকীয়ভাবে ভেবেছিলাম যে স্কালার যদি জাভা সম্পর্কে আমাদের সেরা উত্তর হয় তবে অবশ্যই আমি ভুল হয়ে গিয়েছিলাম এবং এমন ভাষায় কাজ করা চালিয়ে যাওয়ার জন্য শাস্তি পেয়েছি যা আমার পছন্দ হয়নি ...
ভাগ্যক্রমে, খুব বেশি দিন পরে, আমি ফ্যান্টম সম্পর্কে জানতে পারি । ওহ মানুষ, আমি কি এটি ভালবাসতাম! আমার কাছে এটা ছিল আমেরিকানদের জাঁকজমকের মতো জার্মান আমলাতন্ত্রীর জবাব! এটি স্ক্যালায় আমি যে প্রয়োজনীয়তাগুলি খুঁজছিলাম তার সাথে মিলেছে তবে আরও অনেক সুন্দরভাবে । এটি ছিল তেজ , অন্ধকার এবং Netbeans ইন্টিগ্রেশন, একটা চমৎকার ওয়েব ফ্রেমওয়ার্ক , পরিপক্ক পণ্য এটা একটি ছোট কিন্তু অবিশ্বাস্যভাবে সহায়ক দিয়ে চলছে সম্প্রদায় ... গতিশীল এবং স্ট্যাটিক টাইপিং! আমি আনন্দিত!
(আমি চালিয়ে যেতে পারলাম তবে এই পোস্টটি স্ক্যানাল সম্পর্কে বোঝানো হয়েছে, ফ্যান্টম নয়, তাই আমি এখানেই থামলাম My আমার পছন্দটি স্পষ্ট , তবুও এই পোস্টটির সাথে দুটিয়ের তুলনা করা যায় Sc স্ক্যানার তুলনায় ফ্যান্টম কেন এত কম মনোযোগ দেয় তা আমি কখনই বুঝতে পারি নি। তবে আপাতদৃষ্টিতে আমি একমাত্র নই, যদি আপনি শেষ পর্যন্ত এই পডকাস্ট [ এমপি 3 ] শোনেন ))
আমি যখন 2 বছর আগে প্রথম দিকে স্কালার সাথে ছড়িয়ে পড়েছিলাম তখন এটি আমার কাছে ভিনগ্রহ এবং ভয় দেখায়। এক পর্যায়ে আমি আবিষ্কার করেছি যে মূল ভাষাটি জাভা থেকে আসলেই অনেক সহজ, তবে এর বাক্য গঠন এবং শব্দার্থবিজ্ঞানগুলি এতটাই নমনীয় যে আপনি কোনও ম্যাক্রো বৈশিষ্ট্য ছাড়াই নতুন ভাষার কাঠামো তৈরি করতে পারবেন। আমি আমার সমস্ত জাভা প্রকল্পগুলির জন্য পুরোপুরি স্কালায় স্যুইচ করেছি, কারণ এটি আমাকে খুব বেশি বয়লারপ্লেট কোড ছাড়াই লিখতে দেয়।
আমি ক্লোজুরে পছন্দ করি তবে এমন পরিস্থিতি রয়েছে যেখানে প্ল্যাটফর্মটির জন্য আপনাকে স্ট্যাটিক বাইটোকড (অ্যান্ড্রয়েড, অ্যাপলেটস, ...) সংকলন করতে হবে এবং আপনি এটি করতে পারার সময় স্কালায় এটি ঠিক আছে।
স্ক্যালাল আপনাকে কার্যকরী উপায়ে অনেক সমস্যার সমাধান করতে দেয়, আমি প্রায়শই এমন সমস্যাগুলি পাই যেখানে ক্লাসগুলি ব্যবহার করা বেশি প্রাকৃতিক বলে মনে হয়। এটি জিনিসগুলিকে কিছুটা জটিল করে তোলে, তবে সি ++ এর জটিলতা এবং বেদনাগুলির কাছে কোথাও নেই।
আমি যখন ভাষাটি সত্যিই শিখতে শুরু করি তখন আমার জন্য সবচেয়ে বড় গ্রহণযোগ্যতাটি হ'ল আমি জাভাতে ঠিক যে প্রোগ্রামটি করতে পারি তা কেবল গোলমাল ছাড়াই (যখন আপনি গ্রোভি শুরু করার সময় কিছুটা হলেও) করতে পারেন তবে শেষ পর্যন্ত আপনি ক্ষমতার গভীরে ডুব দেওয়ার চেষ্টা করতে চান ভাষার - এটি আপনার সাথে বৃদ্ধি পায়।
আইডিই প্রশ্ন সম্পর্কে: সমস্ত কিছুর জন্য ইমাস ব্যবহার করার পরে, আমার আইডিই সংক্রান্ত সমস্ত সমস্যা চলে গেল :-)
আমি অনেক কারণে স্কালাকে পছন্দ করি তবে এর মধ্যে একটি রয়েছে যা প্রায়শই উপেক্ষা করা হয়: এর সরলতা।
স্কেল ওবেরনের মতো সহজ হতে পারে না তবে এটি অন্য কয়েকটি ভাষার তুলনায় অনেক সহজ। স্কালাল ভাষা স্পেসিফিকেশনটি 160 ডলার পৃষ্ঠা, জাভা ভাষার স্পেসিফিকেশনটি 600 ডলার (কেবল ভাষা, জেভিএম বা লাইব্রেরি নয়!), ইসিএমএ -৩৪৪ সি # ল্যাঙ্গুয়েজ স্পেসিফিকেশন (যা আফাইক ভিজ্যুয়াল সি # ২.০ এর একটি উপসেটের সাথে মিলেছে) 40 440 পৃষ্ঠাগুলি (এটি লিনকিউ কোয়েরি বোধগম্যতা, ল্যাম্বডা এক্সপ্রেশন, এক্সটেনশন পদ্ধতি, জেনেরিক কো- এবং বিপর্যয়, dynamic
ডিফল্ট মানগুলির সাথে alচ্ছিক আর্গুমেন্ট, কীওয়ার্ড আর্গুমেন্টস ইত্যাদি var
)) এমনকি ECMAScript 5.1 এর জন্য বর্তমান খসড়াটি 210 ডলার পৃষ্ঠায় বড়। এবং অবশ্যই আমার নিজের "ডিফল্ট" ভাষা, রুবি, যার বর্তমান আইএসও খসড়া 310 ডলার পৃষ্ঠাতে ওজনযুক্ত, যা কেবল রুবি ১.৮..6, ১.৯.১ এবং ১.৯.২ এর ছেদের প্রায় অসাধারণ ক্ষুদ্র উপসেটকে নির্দিষ্ট করে।
স্ক্যালাকে নিয়ে যা সফল হয় তা এখানে:
নাল পয়েন্টারটি শুরু করার জন্য বেশ খারাপ ধারণা ছিল। হোয়ার এটিকে তার "বিলিয়ন ডলারের ভুল" হিসাবে অভিহিত করেছেন, তবে স্কালা আরও খারাপ। এটিতে নাল, নুল, নন এবং নীল নামের বস্তু রয়েছে। নাল জাভা সঙ্গে আন্তঃব্যবহারযোগ্যতা জন্য। নাল হ'ল নাল পয়েন্টার ফর্ম ডাব্লু 3 সি ডম স্পেসিফিকেশন, নলের সাথে প্রতিস্থাপন করা উচিত ছিল না এবং নীল একটি ফাঁকা জিনিস।
ভাষার কন্সট্রাক্টসগুলি যখন হ্যাকি হিসাবে দেখা দেয় তখন সাধারণত প্রোগ্রামারই ভাষাটিকে দোষী করে না, তাকেই দোষ দেওয়া হয়। স্কালায়, তবে, মূল ভাষাটিতে ইতিমধ্যে গ্রন্থাগার ক্লাস রয়েছে যার কেবলমাত্র নথিভুক্ত আচরণ "এটি একটি হ্যাক"। বিশ্বাস করবেন না? Scala.xml.Group এর জন্য স্কেলডোক অনুসন্ধান করুন।
সর্বশেষে, স্কালার খারাপভাবে নথিভুক্ত করা হয়। অফিসিয়াল ডকুমেন্টেশনে খুব কমই স্কাল ক্লাস উদাহরণ কোড সহ আসে। স্কালার জাভা থেকে শেখার জন্য উল্লেখযোগ্যভাবে কঠিন এবং কম্পিউটার বিজ্ঞানে গভীর জ্ঞানের প্রয়োজন।
স্কেল-হেটরের ভুল হওয়া এড়াতে, আমি এটি সম্পর্কে যা পছন্দ করি তা এখানে:
null
এটি জাভার নাল পয়েন্টার, Null
এটি এর "টাইপ"। None
সম্ভাব্য একটি "রাষ্ট্র" Option[T]
, একটি বা শূন্য উপাদানগুলির সহ একটি সংগ্রহ। Nil
একটি খালি তালিকা। আপনি এটিকে ভয়ঙ্কর করে তুলতে চাইলে তা হয় না। এই ধরনেরগুলি একে অপরের সাথে প্রতিস্থাপনযোগ্য বা বিনিময়যোগ্য নয় এবং তাদের যেমন করা উচিত ঠিক তেমন আচরণ করে।
স্কলা হয় জটিল। এর আশেপাশে কোন উপায় নেই! এর সিনট্যাক্সটি অত্যন্ত নমনীয় এবং অসংখ্য উপায়ে কাস্টমাইজ করা যায় (সমস্ত অপারেটর / ইনফিক্স স্বরলিপি উপরে) - এবং টাইপ সিস্টেমে আমার জানা অন্য ভাষার চেয়ে আলাদা বৈশিষ্ট্য রয়েছে।
সুতরাং জিনিসগুলি যেমন সোজা নয় যেমন হাস্কেল: টাইপচ্লাসগুলি সমস্ত coverেকে রাখার জন্য।
স্কালা যেহেতু কার্যকরী প্রোগ্রামিং, ওও, পদ্ধতিগত প্রোগ্রামিং এবং জাভা গ্রন্থাগারগুলির পাশাপাশি নিজস্ব ধারণাগুলি একসাথে রাখার চেষ্টা করে, অবশেষে আমরা প্রচুর ধারণাটি শেষ করি যা কোনওভাবে "একই দিকে" যেতে দেখা যায়:
তাদের মধ্যে বাছাই করা প্রথমে কঠিন বলে মনে হচ্ছে এবং কেউ যদি সহজেই ভাবতে পারে যে কোনও সমস্যার সঠিক সমাধান খুঁজে পেয়েছে । এমনকি অপব্যবহার করে হ্যাকি স্টাফ উত্পাদন করা খুব সহজ implicit
।
তবে মজার বিষয় হ'ল: স্কালা কাজ করে। কখনও কখনও কেন এটি বুঝতে অসুবিধা হয় (বিশেষত কী অন্তর্নিহিত রূপান্তরগুলি + উত্তরাধিকার + ... কিছু বস্তুর কার্যকারিতা পেয়েছে তা আবিষ্কার করে X
) তবে আপনাকে বেশিরভাগ সময় বিরক্ত করার দরকার নেই।
স্ক্যালাকে যতটা সম্ভব সোজা করে লিখুন এবং এটি কার্যকর হবে। সম্ভব সমস্ত কিছুর দ্বারা বিভ্রান্ত হবেন না এবং আপনার যা প্রয়োজন কেবল তা ব্যবহার করুন। এবং আপনার যদি কিছু প্রয়োজন হয় তবে আপনি নিশ্চিত হতে পারেন যে কোনওভাবে স্কালায় এটি রয়েছে;)
এবং আপনি যত ভাল পাবেন, অপারেটর, ফলস্বরূপ, মনডস, মজাদার সিনট্যাক্সের সাহায্যে আপনি স্ক্যালাকে আরও কাস্টমাইজ করতে সক্ষম হবেন এবং অবশেষে কোনও ডিএসএল-এর কাছাকাছি এমন কিছু পাবেন যা আপনার সমস্যার পুরোপুরি সমাধান করবে।
সর্বোপরি, আপনি ক্লিনার, সহজ সিনট্যাক্স, টাইপ অনুমান এবং কিছু কার্যকরী বৈশিষ্ট্যগুলির সাথে স্ক্যালাকে আরও অনেক ভাল জাভা হিসাবে ব্যবহার করার সম্ভাবনা সবসময়ই রাখে।
এটি একটি দুর্দান্ত ভাষা যা জাভা থেকে অনেক উপায়ে সহজ।
বেশিরভাগ লোকেরা এটি পছন্দ করে না, জাভা প্রোগ্রামারটি পছন্দ করে না বা না, একই কারণে বেশিরভাগ লোক, প্রোগ্রামাররা বা না, নতুন প্রোগ্রামিং ভাষা শেখার পছন্দ করে না। আমি সন্দেহ করি যে বেশিরভাগ লোকেরা যারা প্রোগ্রামিংয়ের ভাষা শিখেছিলেন তারা শেখাও পছন্দ করেন না।
যদি আপনি কোনও ভাষা সি ++ এর মতো জটিল হওয়ার বিষয়ে উদ্বিগ্ন হন তবে আমি ক্লজুর মতো প্লেগের মতো এড়িয়ে যাব। ক্লোজারের চেয়ে স্কালা আরও জটিল বলে মনে করা যে কোনও একটি বা উভয় ভাষা সম্পর্কে সম্পূর্ণ অজ্ঞ যারা তাদের পক্ষে ফ্যালব্যাক যুক্তিতে পরিণত হয়েছে।
ক্লোজুরেতে ম্যাক্রোগুলি রয়েছে, যার অর্থ আপনি কেবলমাত্র "জিনিসগুলি করার বিভিন্ন উপায়ে অগণিত" নয় বরং জিনিসগুলি করার প্রায় অসীম সংখ্যক উপহার দিয়ে আপনি ভাষাটির বাক্য গঠনটিকে যতটা চান পরিবর্তন করতে পারবেন। এবং ম্যাক্রোগুলি দ্বারা প্রোগ্রামাররা তৈরি করা এই নতুন সিনট্যাক্সগুলির কোনওটিরও ভাষা স্পেসিফিকেশনে কোথাও নথিবদ্ধ করা হবে না।
"তবে আমরা ম্যাক্রোগুলি ব্যবহার এড়াতে পারি বা আমাদের কোডে কোনটি অনুমোদিত তা নিয়ন্ত্রণ করতে পারি", আপনি বলছেন। অভিনন্দন, আপনি এখন "আপনি কোন ভাষার বৈশিষ্ট্যগুলি ব্যবহার করতে যাচ্ছেন এবং কোনটি নয়" কৃত্রিমভাবে সীমাবদ্ধ করতে চলেছেন, এটি হ'ল স্কাবল ক্লজিউর ব্যবহার করা বাব্লিং ইডিয়টস স্ক্যালাকে এড়িয়ে যাওয়ার কারণ হিসাবে ব্যবহার করেছেন।
আমি সত্যিই স্কেলা লাইব্রেরির আরও দানাদার প্রকারগুলি পছন্দ করি। দেখে মনে হচ্ছে নতুন সংগ্রহের পাঠাগারটি সুচিন্তিত ছিল। আমি এটিও পছন্দ করি যে এটি কীভাবে সহজ ক্লাসগুলির জন্য প্রয়োজনীয় কোডের পরিমাণ হ্রাস করে এবং কার্যকরী ধারণাগুলি এটি যুক্ত করে। এটির ধরণের অনুমিতিও খুব সহায়ক। এটি প্রশিক্ষণের চাকা ছাড়াই জাভার মতো অনুভব করে। কিছু সময়ের জন্য সি # ব্যবহার করার পরে, স্কালা আসলে একটি প্রতিযোগীর মতো অনুভব করে, জাভা এখনও দরকারী তবে পিছনে রয়েছে।
একটি জাভা প্রোগ্রামার হিসাবে, আমি প্রথম দিকে স্কালাকে আকর্ষণীয় বলে মনে করি। যাইহোক, কিছুক্ষণের জন্য এটির সাথে ছড়িয়ে পড়ার পরে (এবং ইতিমধ্যে অন্যদের দ্বারা তালিকাভুক্ত প্রায় সমস্ত ধনাত্মক / নেতিবাচক মধ্যে দৌড়ানোর পরে), আমি এর প্রতি খুব "মেহ" বোধ করছি। ভাষার উন্নতিগুলি টুলসেটের কম উপলব্ধতার দ্বারা অফসেট করা হয়। আমি স্যুইচ ওভারের জন্য কোনও সংজ্ঞায়িত কারণ নিয়ে আসতে পারিনি। এটি ভাল, তবে স্যুইচিংয়ের জন্য কেস তৈরি করা "যথেষ্ট ভাল" নয়। না হয় বিষয়গত উত্তেজনা ফ্যাক্টর হয় না (যেমন Clojure বলে মনে হচ্ছে)।