স্কেলা ২.৮ সংগ্রহের পাঠাগারটি কি "ইতিহাসের দীর্ঘতম সুইসাইড নোট" এর একটি মামলা? [বন্ধ]


873

আমি সবেমাত্র স্কেলা সংগ্রহ লাইব্রেরির পুনঃ-বাস্তবায়ন সন্ধান করতে শুরু করেছি যা আসন্ন ২.৮ প্রকাশে আসছে । ২.7 থেকে গ্রন্থাগারের সাথে পরিচিত তারা লক্ষ্য করবেন যে ব্যবহারের দৃষ্টিকোণ থেকে গ্রন্থাগারটি সামান্য পরিবর্তিত হয়েছে। উদাহরণ স্বরূপ...

> List("Paris", "London").map(_.length)
res0: List[Int] List(5, 6)

... যে কোনও সংস্করণে কাজ করবে। গ্রন্থাগারটি বিশিষ্টভাবে ব্যবহারযোগ্য : বাস্তবে এটি দুর্দান্ত। তবে, স্ক্যালার সাথে পূর্বে অপরিচিত এবং ভাষার অনুভূতি অর্জনের জন্য ঘুরে বেড়ানোগুলিকে এখন পদ্ধতির স্বাক্ষরগুলি বোঝাতে হবে যেমন:

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That

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

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

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

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


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

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


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

32
এই প্রশ্নের Scala দিন 2010 মার্টিন Odersky উদ্বোধনী Talk- এ উল্লেখ করা হয়েছিল days2010.scala-lang.org/node/136
Binil টমাস

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

87
@ মার্টিনঅডারস্কি স্কাল ব্যবহারের পুনরায় মূল্যায়ন এবং এর ডকুমেন্টেশন সিস্টেমকে হাইড টাইপ সিস্টেমের বিবরণ কোনও আলোকিত আলোচনার উল্লেখ না করার কারণে এই প্রশ্নটি কীভাবে "গঠনমূলক নয়" হতে পারে?
জেরি 101

14
প্রকৃতপক্ষে, এসও কেবল সঠিক বিন্যাসে প্রযুক্তিগততার জন্য। আপনার যদি নাজুক, আগ্রহী এবং সুদূরপ্রসারী কিছু থাকে তবে দয়া করে অন্য কোথাও দেখুন। আমলাতান্ত্রিক মানসিকতা দীর্ঘজীবী করুন।
কেয়েড

উত্তর:


892

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

আসলে mapএর জটিলতা দ্বারা সমর্থিত এর কার্যকারিতা বেশ উন্নত। এই বিবেচনা:

scala> import collection.immutable.BitSet
import collection.immutable.BitSet

scala> val bits = BitSet(1, 2, 3)
bits: scala.collection.immutable.BitSet = BitSet(1, 2, 3)

scala> val shifted = bits map { _ + 1 }
shifted: scala.collection.immutable.BitSet = BitSet(2, 3, 4)

scala> val displayed = bits map { _.toString + "!" }
displayed: scala.collection.immutable.Set[java.lang.String] = Set(1!, 2!, 3!)

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

আমাদের সমস্যাটি হ'ল যে সমস্ত চালাক প্রযুক্তি যা এটি ঘটায় তা প্রকারের স্বাক্ষরে ফাঁস হয়ে যায় যা বড় এবং ভীতিজনক হয়ে ওঠে। কিন্তু সম্ভবত কোনও ব্যবহারকারীর ডিফল্টরূপে পুরো টাইপের স্বাক্ষরটি দেখানো উচিত নয় map? কিভাবে যদি সে তাকিয়ে সম্পর্কে mapমধ্যে BitSetতিনি পেয়েছেন:

map(f: Int => Int): BitSet     (click here for more general type)

ডক্স যে ক্ষেত্রে মিথ্যা বলবেন না, কারণ একটি ব্যবহারকারী দৃষ্টিকোণ প্রকৃতপক্ষে মানচিত্র টাইপ আছে তার কাছ থেকে (Int => Int) => BitSet। তবে mapআরও সাধারণ ধরণের রয়েছে যা অন্য লিঙ্কে ক্লিক করে পরিদর্শন করা যেতে পারে।

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


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

164
না, আমি মনে করি আপনি এই বিষয়টিকে আঘাত করতে একেবারেই ঠিক ছিলেন। এবং অন্যান্য ব্যক্তিরা ভয় পাবেন কারণ আমরা এটি সম্পর্কে কিছু না করি।
মার্টিন ওডারস্কি

33
মার্টিন, আমি আপনার প্রস্তাবটি একটি সরল পদ্ধতিতে স্বাক্ষরগুলি দেখানোর এবং কোনও লিঙ্কের পিছনে সাধারণ বিবরণ আড়াল করতে চাই।
ডেরেক মাহর

18
আমি মনে করি যে একটি সমাধান যা কমপক্ষে পাশাপাশি কাজ করবে তা ডক্সে আরও ব্যাখ্যা। আমি স্বাক্ষরগুলি এত ভয়ঙ্কর খুঁজে পেতাম না, যদি এটি সত্য না হয় যে বেশিরভাগ পদ্ধতির (এবং এমনকি বেশিরভাগ শ্রেণির) তাদের উদ্দেশ্য এবং ক্রিয়াকলাপ বর্ণনা করে একটি বাক্য ছাড়াও না থাকে।
নিক জনসন

98
আপডেট: চূড়ান্ত স্কেলা ২.৮ রিলিজটিতে আমি বর্ণনা করা মত একটি প্রক্রিয়া আছে। স্কেলডোকসগুলিতে আপনি যদি বিটসেটটি সন্ধান করেন তবে ডিএফ মানচিত্র [বি] (চ: (অন্তর্) ⇒ বি): বিটসেট [বি] [ব্যবহারের ক্ষেত্রে] এই বিটসেটের সমস্ত উপাদানগুলিতে একটি ফাংশন প্রয়োগ করে একটি নতুন সংগ্রহ তৈরি করে Build
মার্টিন ওডারস্কি

226

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

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

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

সুতরাং, পরিবর্তে

map :: (a → b)[a][b]

যা সনাতন ধরণের স্বাক্ষরের জন্য map, এটি একটি কংক্রিট Listনয় বরং কেবল একটি IterableLikeডেটা স্ট্রাকচারের প্রয়োজনে সাধারণীকরণ করা হয়

map :: (IterableLike i, IterableLike j)(a → b) → i → j

এরপরে যা কেবলমাত্র এমন একটি ফাংশন বিদ্যমান যা প্রয়োজন অনুসারে ফলাফলকে সাধারণীকরণ করে যা ফলাফল ব্যবহারকারীকে যে কোনও ডেটা স্ট্রাকচারে রূপান্তর করতে পারে:

map :: IterableLike i ⇒ (a → b) → i → ([b] → c) → c

আমি স্বীকার করি যে সিনট্যাক্সটি কিছুটা ক্লানকিয়ার, তবে শব্দার্থবিজ্ঞানগুলি একই রকম। মূলত, এটি থেকে শুরু হয়

def map[B](f: (A) ⇒ B): List[B]

যা সনাতন স্বাক্ষর জন্য map। (স্কেলের অবজেক্ট-ওরিয়েন্টেড প্রকৃতির কারণে কীভাবে ইনপুট তালিকার প্যারামিটারটি নিখোঁজ হয় তা দ্রষ্টব্য, কারণ এটি এখন একক-প্রেরণ OO সিস্টেমের প্রতিটি পদ্ধতিতে অন্তর্নিহিত রিসিভার প্যারামিটার)) তারপরে এটি একটি কংক্রিট Listথেকে আরও সাধারণের দিকে সাধারণীকরণ করা হয়IterableLike

def map[B](f: (A) ⇒ B): IterableLike[B]

এখন, এটা প্রতিস্থাপন IterableLikeএকটি ফাংশন যে সঙ্গে ফলাফলের সংগ্রহ উত্পাদন করে , ভাল, সত্যিই ঠিক সম্পর্কে কিছু।

def map[B, That](f: A ⇒ B)(implicit bf: CanBuildFrom[Repr, B, That]): That

যা আমি সত্যই বিশ্বাস করি তা বোঝা খুব কঠিন নয় । আপনার কেবলমাত্র কয়েকটি বৌদ্ধিক সরঞ্জাম প্রয়োজন:

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

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

হ্যাঁ, Scala হয় জটিল। হ্যাঁ, স্কালায় মানুষের কাছে জ্ঞাত, প্রতিদ্বন্দ্বী এবং এমনকি হাস্কেল, মিরান্ডা, ক্লিন বা ঘূর্ণিঝড়ের মতো ভাষা ছাড়িয়ে যাওয়ার মতো একটি অত্যাধুনিক ধরণের সিস্টেম রয়েছে। তবে জটিলতা যদি কোনও প্রোগ্রামিং ভাষার সাফল্যের বিরুদ্ধে যুক্তি হয়ে থাকে তবে সি ++ অনেক আগেই মারা যেত এবং আমরা সকলেই স্কিম লিখতাম। স্ক্যালাল খুব সম্ভবত সফল না হওয়ার কারণ রয়েছে এমন অনেকগুলি কারণ রয়েছে তবে কীবোর্ডের সামনে বসে প্রোগ্রামাররা সম্ভবত তাদের মস্তিষ্ক চালু করতে বিরক্ত করা যাবে না এটি সম্ভবত প্রধান কারণ হতে পারে না।


36
@ জর্জি - এটি একটি দুর্দান্ত উত্তর; ধন্যবাদ. আপনি যদি একটি ডিগ্রী বা না থাকুক না কেন আপনি একটি উজ্জ্বল মানুষের চেয়ে আই শুধুমাত্র টাল আমি যে আমি বুঝতে করতে হয় বিস্তৃত ছবি কি পদ্ধতি স্বাক্ষর চলছে করুন। তবে, বিশদগুলি এখনও বিভ্রান্তিকর: কীভাবে Thatঅনুমান করা হচ্ছে এবং এই ধরণের সাথে কীভাবে যুক্ত Bহচ্ছে এটি একটি প্রশ্ন যা মনে মনে জাগে। অপরজন হওয়া থেকে কোথা থেকে আসে? এমনকি এই বিশদ পর্যবেক্ষণ ছাড়াও আমি ব্যক্তিগতভাবে অনুভব করি যে এটি একটি জটিল স্বাক্ষর। তবে স্পষ্টতই এখানে আপনার মতো লোক রয়েছে যারা এগুলি দ্বারা মোটেই বিরক্ত হন না!
অক্সবো_লাক্স

50
সুন্দর ব্যাখ্যা, তবে আপনি আমাকে আরও নিশ্চিত করেছেন যে স্কালা ২.৮ "মানচিত্র" পদ্ধতির স্বাক্ষরটি খুব জটিল।
ডেরেক মাহর

11
এমন একটি ভাষা যা দেখায়: ডিএফ মানচিত্র [বি] (চ: (এ) ⇒ বি): আইট্রেটেবল লাইক [বি] এর মতো দেখায় এমনগুলির চেয়ে অনেক বেশি আমন্ত্রণ জানায়: ডিএফ মানচিত্র [বি, সে] (চ: এ ⇒ বি) ) (অন্তর্নিহিত বিএফ: ক্যানবিল্ডফর্ম [পুনরায়, বি, সেই]): যে
মার্ক এসেল

215
আমার কাছে এটি বেশ আকর্ষণীয় মনে হয়েছে যে আপনি কেবলমাত্র বেসিক, রুবি এবং ছোট্ট টাল্ককে জানার দাবি করার মাধ্যমে এবং বিষয়টির বিষয়ে আপনার কোনও একাডেমিক পটভূমি নেই তা অবিরত করে শুরু করে। ... এবং তারপরে মিরান্ডা এবং ক্লিনের মতো ভাষায় টাইপ সিস্টেমগুলির জটিলতার উপর জ্ঞান দাবি করা; কেবলমাত্র গুরুতর প্রোগ্রামিং ভাষার ভাষা এবং শিক্ষাবিদদের মধ্যে পরিচিত ভাষা।
সামি

14
আপনার একটি বৈধ পয়েন্ট আছে যে হাস্কেলের সাথে তুলনাটি সেই "মানচিত্রে :: (ক -> বি) -> [এ] -> [বি]" তালিকার জন্য নির্দিষ্ট। যাইহোক, সাধারণ সংস্করণ, Functor ক্লাসের যে, এখনও Scala সংস্করণের তুলনায় অনেক সহজ: শ্রেণি Functor চ যেখানে fmap :: (ক -> খ) -> ফার্সী -> FB
Orclev

175

সি ++ তে একই জিনিস :

template <template <class, class> class C,
          class T,
          class A,
          class T_return,
          class T_arg
              >
C<T_return, typename A::rebind<T_return>::other>
map(C<T, A> &c,T_return(*func)(T_arg) )
{
    C<T_return, typename A::rebind<T_return>::other> res;
    for ( C<T,A>::iterator it=c.begin() ; it != c.end(); it++ ){
        res.push_back(func(*it));
    }
    return res;
}

105
... এবং তারা বলে যে স্কালা অস্পষ্ট। Duh!
মিসিংফ্যাক্টর

24
একটু কল্পনা করুন, যদি নির্বিচারে মূলধন অক্ষরের পরিবর্তে যথাযথ স্ব-বর্ণনাকারী শনাক্তকারীগুলি ব্যবহার করা হত তবে এটি দেখতে কেমন হত। :-)
ত্রি স্টারগা

14
এই তুলনাটি দেখতে এটি দরকারী, তবে বাস্তবায়ন বাদ দিলে এটি আরও ন্যায্য হবে।
অ্যারন নভস্ট্রাপ

2
আমি বাধ্যতামূলক ফাংশন পয়েন্টারের কোনও বড় ফ্যান নই। স্পষ্টত ধরণের ধরণের funcটেমপ্লেট প্যারামিটার হওয়া উচিত এবং আপনার অন্যান্য ধরণের ব্যবহার result_ofএবং is_callableযথাযথভাবে ওভারলোড সেটটি সীমাবদ্ধ করা উচিত :-)
কেরেক এসবি

1
আমার চোখ জ্বলছে !!!
আশকান খ। নাজরী

71

ঠিক আছে, আমি আপনার ব্যথা বুঝতে পারি, তবে, সত্যি বলতে গেলে আপনার মতো আমি এবং আমি - বা প্রায় কোনও নিয়মিত স্ট্যাক ওভারফ্লো ব্যবহারকারী - এই নিয়ম নয়।

আমি এর দ্বারা যা বোঝাতে চাইছি তা হল ... বেশিরভাগ প্রোগ্রামাররা সেই ধরণের স্বাক্ষরের বিষয়ে চিন্তা করবে না, কারণ তারা সেগুলি কখনই দেখবে না ! তারা ডকুমেন্টেশন পড়েন না।

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

এই বিষয়গুলি মাথায় রেখে, আমি মনে করি যে:

  1. যে কোনও (যেমন, বেশিরভাগ লোক) যে কোনও সময় এই স্বাক্ষরটি উপস্থিত হয় সে স্কালাকে বিদ্রূপ করবে যদি তারা এর বিরুদ্ধে প্রাক-নিষ্পত্তি হয় তবে তারা স্কালাকে পছন্দ করলে এটিকে স্কেলার শক্তির প্রতীক হিসাবে বিবেচনা করবে।

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

  3. দীর্ঘমেয়াদে, এতে কিছু আসে যায় না। এটি স্কালা এর মতো স্টাফ করতে পারে যা স্কালার জন্য রচিত লাইব্রেরিগুলিকে আরও বেশি শক্তিশালী এবং ব্যবহার করা নিরাপদ করে তুলবে। এই লাইব্রেরি এবং ফ্রেমওয়ার্কগুলি প্রোগ্রামারগুলিকে শক্তিশালী সরঞ্জামগুলিতে আকৃষ্ট করবে।

  4. প্রোগ্রামাররা যারা সরলতা এবং প্রত্যক্ষতা পছন্দ করে তারা পিএইচপি, বা অনুরূপ ভাষা ব্যবহার করতে থাকবে।

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

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


10
As long as they saw some example of how the code works, and the code doesn't fail them in producing the result they expect, they won't ever look at the documentation. When that fails, they'll look at the documentation and expect to see usage examples at the top.দুঃখের হলেও সত্য.
গামিলিয়েলা

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

55

এটি কি লোকজনকে স্কেলে আসা বন্ধ করবে?

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

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

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

লাইব্রেরিটি কি একটি বুদ্ধিমান ধারণা তৈরি করেছিল?

একেবারে। এটি বাকী ভাষা এবং টাইপ সিস্টেমের সাথে সংগ্রহগুলি আরও ভাল ফিট করে তোলে, এমনকি এর কিছু রুক্ষ প্রান্ত থাকলেও।

আপনি যদি স্কেলটি বাণিজ্যিকভাবে ব্যবহার করছেন তবে আপনি কি এই সম্পর্কে উদ্বিগ্ন? আপনি কি অবিলম্বে ২.৮ গ্রহণ করার পরিকল্পনা করছেন বা কী ঘটে তা দেখার জন্য অপেক্ষা করছেন?

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

এর অন্যতম সাধারণ বিষয় "মূলধারার বিকাশকারীদের জন্য স্কেলা কি খুব জটিল?" ...

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

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


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

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

16
"আগামীকাল মূলধারার বিকাশকারীরা নতুন অ্যাপ্লিকেশনগুলির আজকের সবচেয়ে সফল বিকাশকারীরা যে ভাষাটি ব্যবহার করছেন তা ব্যবহার করবে।" +1 টি। উজ্জ্বলভাবে ড।
ভাসিল রেমেনিয়ুক

46

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

এই সাইটগুলিতে কিছু সময় ব্যয় করার পরে, একজন দ্রুত বুঝতে পারে যে স্কালা এবং এর গ্রন্থাগারগুলি সম্ভবত নকশা করা এবং প্রয়োগ করা কঠিন, বিশেষত সাধারণ ক্ষেত্রে ব্যবহার করা এতটা কঠিন নয়।


43

আমি একটি সস্তা "গণ বাজার" মার্কিন বিশ্ববিদ্যালয় থেকে স্নাতক ডিগ্রি অর্জন করেছি, তাই আমি বলতে পারি যে আমি ব্যবহারকারীর বুদ্ধিমত্তার (বা কমপক্ষে শিক্ষা) স্কেলের মাঝখানে পড়ি :) আমি কয়েক মাস ধরে স্কালার সাথে ছড়িয়ে পড়েছি been এবং দুটি বা তিনটি তুচ্ছ অ্যাপগুলিতে কাজ করেছেন।

আইএমএইচও বর্তমানে সর্বোত্তম স্কেল প্লাগইন যা রয়েছে তা দিয়ে ইন্টেলিজ তাদের সূক্ষ্ম আইডিই প্রকাশ করেছে, বিশেষত স্কেল বিকাশ তুলনামূলকভাবে বেদনাবিহীন:

  • আমি খুঁজে পেয়েছি যে আমি স্ক্যালাকে "অর্ধবৃত্তবিহীন জাভা" হিসাবে ব্যবহার করতে পারি, অর্থাৎ আমি জাভাতে যা করতাম তার অনুরূপ বর্ণনামূলক কোডটি লিখি এবং টাইপ ইনফারেন্সের মাধ্যমে সিনট্যাকটিক ব্রিভিটি থেকে কিছুটা উপকৃত হলাম। ব্যতিক্রম হ্যান্ডলিং, যখন আমি এটি কিছু করি তখন আরও সুবিধাজনক। শ্রেণি সংজ্ঞা গিটার / সেটার বয়লারপ্লেট ছাড়াই অনেক কম ভার্বোজ।

  • একবারে আমি জাভার একাধিক লাইনের সমতুল্য একক লাইন লিখতে পরিচালনা করি। প্রযোজ্য যেখানে কার্যকরী পদ্ধতির শৃঙ্খলা যেমন মানচিত্র, ভাঁজ, সংগ্রহ, ফিল্টার ইত্যাদি রচনা করা মজাদার এবং দেখার জন্য মার্জিত।

  • আমি খুব কমই স্কেল এর আরও উচ্চ-শক্তিযুক্ত বৈশিষ্ট্যগুলি থেকে নিজেকে উপকৃত হতে দেখি: বন্ধকরণ এবং আংশিক (বা তরকারি) ফাংশন, প্যাটার্ন মেলানো ... সেই ধরণের জিনিস।

নবাগত হিসাবে, আমি সংশ্লেষ এবং প্রতিচ্ছবি সিনট্যাক্স সঙ্গে সংগ্রাম অবিরত। প্যারামিটার ছাড়াই মেথড কলগুলির প্যারেন্টেসির প্রয়োজন নেই যেখানে তারা যেখানে থাকে; ম্যাচের বিবৃতিতে কেসগুলির জন্য একটি চর্বিযুক্ত তীর প্রয়োজন ( =>), তবে এমন কয়েকটি জায়গা রয়েছে যেখানে আপনার পাতলা তীর প্রয়োজন ( ->)। অনেকগুলি পদ্ধতির সংক্ষিপ্ত তবে ক্রিপ্টিক নামগুলির মতো /:বা \:- আমি পর্যাপ্ত ম্যানুয়াল পৃষ্ঠাগুলি ফ্লিপ করলে আমার জিনিসগুলি সম্পন্ন করতে পারি তবে আমার কিছু কোড পার্ল বা লাইনের শোরগোলের মতো দেখতে শেষ হয়। হাস্যকরভাবে, সিনট্যাক্টিক শর্টহ্যান্ডের অন্যতম জনপ্রিয় বিট ক্রিয়াতে অনুপস্থিত: আমি Intকোনও ++পদ্ধতির সংজ্ঞা দেয় না এমন বিষয়টি দ্বারা আমি কামড় বজায় রেখে চলেছি ।

এটি কেবল আমার মতামত: আমি মনে করি স্কালার সি ++ এর জটিলতা এবং পাঠযোগ্যতার সাথে একত্রে সি ++ এর শক্তি রয়েছে। ভাষার সিনট্যাকটিক জটিলতা এপিআই ডকুমেন্টেশনগুলি পড়া শক্ত করে তোলে।

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


9
দুঃখিত সমস্ত মন্তব্য আউট। 1 সপ্তাহ ব্যবহারিকভাবে কোনও ভাষার জন্য একটি রসিকতা, তবে এটি পরিচালকদের এই রসিকতাটি অনুশীলন করতে বাধা দেয় না। আমাকে একবার "ক্র্যাশ-ট্রেন" দেওয়ার জন্য C ++ বিকাশকারীদের একটি গ্রুপের জাভাতে 3 দিন দেওয়া হয়েছিল। আমি 5 দিনের জন্য জিজ্ঞাসা করেছি কিন্তু বাজেটের কারণে সংক্ষিপ্ত হয়েছি।
কার্ল স্মট্রিক্জ

22
আমার প্রথম কাজের জন্য সোমবার কাজ শুরু করার আগে আমাকে শিখতে সাক্ষাত্কার শেষে একটি সি ++ বই দেওয়া হয়েছিল। আপনি সব wusses।
টম হাটিন -

12
@ টম @ এরিক আপনার ছেলেরা এটি সহজ করে দিয়েছে। আমাকে কম্পিউটারে সার্কিট ডায়াগ্রাম দেওয়া হয়েছিল (ততক্ষণে কোনও সিপিইউ নেই), এবং বলেছিলাম যে আমার কাছে ইন্টার্ভিউ হিসাবে একটি বাগ ঠিক করতে দুই ঘন্টা সময় রয়েছে ।
ড্যানিয়েল সি সোব্রাল

33
@ ড্যানিয়েল @ টম @ এরিক আমাকে একবার 0 এবং 1 দেওয়া হয়েছিল এবং সেগুলি সাক্ষাত্কারের সময় রৈখিক সময়ে ন্যাপস্যাক সমস্যা সমাধান করার জন্য তাদের ব্যবহার করতে বলা হয়েছিল। আমি এটিকে একটি শট দিয়েছি তবে দুর্ভাগ্যক্রমে আমার কাছে কেবল একটিগ্রিপ তৈরির সময় ছিল (যা আমি সন্দেহ করি যে ন্যাপস্যাকটি হ্রাসযোগ্য)। # টাল_টেল
অ্যালেক্স মিলার

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

33

আমি মনে করি যে পদ্ধতির সাথে প্রাথমিক সমস্যাটি হ'ল (implicit bf : CanBuildFrom[Repr, B, That])কোনও ব্যাখ্যা ছাড়াই চলে। যদিও আমি জানি কী কী অন্তর্নিহিত যুক্তি রয়েছে তাতে বোঝা যাচ্ছে যে কীভাবে এটি কলকে প্রভাবিত করে। স্ক্যালাডোকের মাধ্যমে তাড়া করা আমাকে কেবল আরও বিভ্রান্ত করে ফেলেছে ( CanBuildFromএমনকি ক্লাসগুলির মধ্যে কয়েকটিও ডকুমেন্টেশন রয়েছে)।

আমি মনে করি একটি সহজ "সেখানে সুযোগ একটি অন্তর্নিহিত বস্তুর হওয়া আবশ্যক জন্য bfযে ধরনের অবজেক্টের জন্য একটি রচয়িতা প্রদান করে Bরিটার্ন টাইপ মধ্যে That" কিছুটা সাহায্য করবে, কিন্তু এটা একটা হঠকারী ধারণা ধরনের যখন সমস্ত আপনি কি সত্যিই কাজ করতে চান মানচিত্র A'থেকে গুলি B's। আসলে, আমি নিশ্চিত না যে এটি সঠিক, কারণ আমি জানি না টাইপটির Reprঅর্থ কী, এবং ডকুমেন্টেশনগুলি Traversableঅবশ্যই কোনও ক্লু দেয় না।

সুতরাং, আমি দুটি বিকল্প রেখেছি, তাদের উভয়ই সুখকর নয়:

  • ধরুন এটি পুরানো মানচিত্রটি কীভাবে কাজ করে এবং মানচিত্রটি অন্যান্য বেশিরভাগ ভাষায় কীভাবে কাজ করে তা কেবলমাত্র কাজ করবে
  • উত্স কোডটিতে আরও কিছু খনন করুন

আমি পেয়েছি যে স্কালা মূলত এই জিনিসগুলি কীভাবে কাজ করে তার সাহসগুলি প্রকাশ করে এবং শেষ পর্যন্ত এটি অক্সবো_লাকগুলি যা বর্ণনা করে তা করার একটি উপায় সরবরাহ করে। তবে এটি স্বাক্ষরে একটি ব্যাঘাত।


2
Reprহ'ল traversable উপস্থাপনা, অর্থাত। Listবা Setবা Map। আমি মনে করি যে, একটি কাঠামো হিসাবে আপনি যদি পদ্ধতি স্বাক্ষরগুলি সন্ধান করতে শুরু করেন (উদাহরণগুলি অনুলিপি করে কেবল পদ্ধতিগুলি ব্যবহার না করে), আপনাকে প্রথমে সাধারণ নকশাটি বুঝতে হবে। আইএইচএইচএলডোক উদাহরণের পূর্ণ ব্যবহারে হওয়া উচিত
অক্সবো_লাক্স

10
সুতরাং, আমি কীভাবে নির্ধারণ করবো যার Reprঅর্থ? আমি স্ক্যালাডকটিতে একটি ব্যাখ্যা আশা করব, তবে এটি আমার কাছে সত্যই স্পষ্ট ছিল না। আমি মনে করি এটি স্কেলডোকের একটি সাধারণ প্যাটার্ন (এটি দেখুন Actor.reactএবং Actor.receive- আমাকে বলা হয়েছে, এবং দেখেছেন যে তারা সম্পূর্ণ ভিন্ন কাজ করে, তবুও তাদের স্ক্যালডোকটি অভিন্ন)।
davetron5000

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

22

আমি একজন স্কালার শিক্ষানবিশ এবং আমি সত্যতার সাথে সেই ধরণের স্বাক্ষরের কোনও সমস্যা দেখতে পাই না। প্যারামিটারটি মানচিত্রের ফাংশন এবং নির্ধারিত পরামিতিটি সঠিক সংগ্রহটি ফেরত দেওয়ার জন্য নির্মাতা। পরিষ্কার এবং পঠনযোগ্য।

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

Map(1 -> "a", 2 -> "b").map((t) => (t._2) -> (t._1)) // returns Map("a" -> 1, "b" -> 2)
Map(1 -> "a", 2 -> "b").map((t) =>  t._2)            // returns List("a", "b")

এটি বহুবর্ষটি সঠিকভাবে সম্পন্ন হয়েছে।

এখন, অনুমোদিত, এটি মূলধারার দৃষ্টান্ত নয় এবং এটি অনেককে ভয় দেখাবে। তবে, এটি তাদের আকর্ষণীয়তা এবং কমনীয়তার মূল্য দেয় এমন অনেককেও আকৃষ্ট করবে।


20

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

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

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

traverse :: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)

আমি এটিকে স্কালায় রূপান্তর করব:

def traverse[A, B](f: A => F[B], a: T[A])(implicit t: Traversable[T], ap: Applicative[F]): F[T[B]

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

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

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

"গড় প্রোগ্রামার" থেকে নির্দিষ্ট প্রতিক্রিয়ার পূর্বাভাস দিয়ে আপনি সম্ভবত আপনার বক্তব্য তৈরি করছিলেন। যে লোকেরা দাবি করবে "তবে এটি খুব জটিল!" বা এই জাতীয় কিছু। এগুলি হ'ল ইয়েগস বা ব্লচস যা আপনি উল্লেখ করেছেন। বুদ্ধি-বিরোধী / বাস্তববাদবাদী আন্দোলনের এই লোকগুলির প্রতি আমার প্রতিক্রিয়া বেশ কঠোর এবং আমি ইতিমধ্যে প্রতিক্রিয়াগুলির একটি ব্যারেজ প্রত্যাশা করছি, তাই আমি এটিকে বাদ দেব।

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


3
হাই টনি - এখানে আপনার চিন্তাশীল ইনপুট জন্য ধন্যবাদ। আমি এটিতে 2 টি প্রতিক্রিয়া জানাব। প্রথমটি হ'ল আমি "গড় প্রোগ্রামার" উল্লেখ করিনি এবং বিশ্বাস করি না যে স্কালার প্রয়োজন একটাই at এটি আমার কাছে অহঙ্কারী হোক বা অন্যথায়, আমি বিশ্বাস করি যে আমি গড়ের চেয়েও বেশি; যাইহোক, আমি এখনও মনে করি যে টাইপ স্বাক্ষর ভয়ঙ্কর হয়! আমি এখনও চিন্তিত, অন্য কথায়, উপরের গড় প্রোগ্রামারগুলি, স্কালার টার্গেট মার্কেটটি এড়িয়ে চলে যেতে পারে।
অক্সবো_লাক্স

6
দ্বিতীয় বিন্দু যে আমি মৌলিকভাবে কি Scala সম্পর্কে আপনাকে সঙ্গে মতানৈক্য হয় হয় : Scala একটি বাস্তবমুখী ভাষা - না একটি তাত্ত্বিক বিশুদ্ধ এক। কেন অন্যটি এটি জেভিএমের শীর্ষে তৈরি করা হত? এটি একটি নিখুঁত বাস্তববাদী সিদ্ধান্ত - এটি "সত্যিকারের বিশ্বে" বিকাশকারীদের লক্ষ্য করা হচ্ছে - এমন একটি পছন্দ যা সমঝোতার প্রয়োজন হতে পারে! আরও মনে রাখবেন যে ব্লচ এবং ইয়েগেজ গড় প্রোগ্রামারগুলি থেকে অনেক দূরে - তবে এটি আমার বক্তব্য। এমনকি অত্যন্ত সম্মানিত এবং বুদ্ধিমান ব্যক্তিদের জটিলতা এবং বিশুদ্ধতা সম্পর্কে আপনার মতামত থাকতে পারে যা আপনার থেকে পৃথক। দুর্ভাগ্যক্রমে আপনার জন্য, তারাও অত্যন্ত প্রভাবশালী।
অক্সবো_লাক্স

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

5
আমি ব্লচ বা ইয়েজকে অত্যন্ত সম্মানিত বা বুদ্ধিমান হিসাবে বিবেচনা করি না, তবে তারা অবশ্যই বেশ প্রভাবশালী। হ্যাঁ, এটি দুর্ভাগ্যজনক।
টনি মরিস

9
আপনি স্ক্যালার প্রসারিত স্বাক্ষরের সাথে কেন ট্র্যাভার্সকে সম্পর্কযুক্ত? মোনফান্টেক্টরের জন্য স্কালার মানচিত্র, এটি স্ট্যান্ডার্ড এফএমএপ। তবে বা বিটসেট বা মানচিত্র [এ, বি] একবিন্দু নয়, তবুও মানচিত্রে তাদের একটি অর্থবহ সংজ্ঞা রয়েছে। এটাই স্কেলার স্বাক্ষরের প্রেরণা এবং ট্র্যাভার্স এই সমস্যাটি সমাধান করে না। সাধারণতা কেন খারাপ জিনিস? প্রয়োগকারী ফান্ট্যাক্টরা ট্র্যাক এফেক্টস, স্কালায় তাদের বিন্দু কী? পরিশেষে, আমি বিশ্বাস করি যে স্কালার জেনেরিক মানচিত্রটি সাধারণীকৃত ট্রান্সভারের ক্ষেত্রে প্রয়োগ করা যেতে পারে, একটি ক্যানবিল্ডফর্ম গ্রহণ করে এবং সম্ভাব্যভাবে আলাদা ট্র্যাভারেবলকে ফিরিয়ে দিতে হবে: বোঝার জন্য ত্যাগ করার দরকার নেই!
ব্লেসরব্ল্যাড

15

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

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

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

স্ক্যালাডোকের উদাহরণটি নিতে ...

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That

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

def map(f: A => B): That

এটি সুন্দর এবং স্পষ্ট এবং সুস্পষ্ট আপনি ভাবতে পারেন যে 'এটি' কী, আপনি যদি মাউস ধরে থাকেন বা এটি ক্লিক করেন তবে উদাহরণস্বরূপ এটি 'বি' কে হাইলাইট করে [B, That] পাঠ্য প্রসারিত করতে পারে।

সম্ভবত [] ঘোষণা এবং (অন্তর্নিহিত ...) ব্লকের জন্য একটি সামান্য আইকন ব্যবহার করা যেতে পারে যাতে এটি পরিষ্কার হয়ে যায় যে বিবৃতিটির সামান্য বিটগুলি ধসে গেছে? এটির জন্য একটি টোকেন ব্যবহার করা শক্ত, তবে আমি একটি ব্যবহার করব। আপাতত ...

def map.(f: A => B).: That

সুতরাং ডিফল্টরূপে টাইপ সিস্টেমের 'গোলমাল' লোকেরা যা দেখতে হবে তার প্রধান 80% থেকে লুকানো রয়েছে - পদ্ধতির নাম, তার প্যারামিটারের ধরনগুলি এবং তার রিটার্নের ধরণটি খুব সাধারণ সংক্ষিপ্ত উপায়ে - বিশদটির সামান্য বিস্তৃত লিঙ্ক সহ যদি আপনি সত্যিই অনেক যত্ন।

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

এখানে আরও একটি উদাহরণ ...

def orElse[A1 <: A, B1 >: B](that: PartialFunction[A1, B1]): PartialFunction[A1, B1]

এখন যদি আমরা জেনেরিকস ঘোষণাটি লুকিয়ে রাখি তবে এটি পড়া সহজ

def orElse(that: PartialFunction[A1, B1]): PartialFunction[A1, B1]

তারপরে যদি লোকেরা ঘোরাফেরা করে, বলুন, A1 আমরা A1 এর A1 হওয়ার ঘোষণাটি প্রদর্শন করতে পারলাম <: A. জেনেরিকের মধ্যে কোভেরিয়েন্ট এবং বিপরীতমুখী প্রকারগুলি প্রচুর শব্দ যোগ করে যা আমি মনে করি ব্যবহারকারীদের পক্ষে আঁকাবাঁকা উপায়কে আরও সহজতর উপস্থাপন করা যেতে পারে।


5
তবে ফলাফলের ধরণ হিসাবে "এর" অর্থ কী?
ব্লেজারব্লেড

11

আপনার কাছে এটি কীভাবে ভাঙ্গতে হয় তা আমি জানি না, তবে আমার কেমব্রিজ থেকে পিএইচডি আছে, এবং আমি ঠিক ২.৮ ব্যবহার করছি।

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

সুতরাং: আমি একজন "নতুন ব্যবহারকারী" এবং আমাকে ছেড়ে দেওয়া হয়নি - এটি জাভা এর মতো কাজ করে এমন বিষয়টি আমাকে যে বিটগুলি বোঝেনি সেগুলি উপেক্ষা করার যথেষ্ট আত্মবিশ্বাস দিয়েছে।

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


22
আমি মনে করি কেমব্রিজ থেকে পিএইচডি না করা লোকেরা স্কেলা ২.৮ পরিচালনা করতে পারে কিনা তা তিনি জানতে চান।
কেন ব্লুম

2
হাহা: ছোঁয়া! ওয়েল, আমি বলেছিলাম যে স্কেলা ২.৮ ব্যবহার করা সহজ - আমার প্রশ্নটি এপিআই ব্রাউজ করে এমন কাউকে কেমন লাগবে তা দেখার জন্য এটি আরও ছিল যে তারা স্ক্যালায় পূর্বের অভিজ্ঞতা নেই বলে ধরে নিয়েছিল it
অক্সবো_লাক্স

1
@ অ্যান্ড্রু - আপনার ওয়েবসাইট ( acooke.org ) এর চেহারা থেকে , আপনি চাক্ষুষরূপে ভয় দেখানো ধারণাগুলি নিয়ে অস্বস্তি করছেন না
অক্সবো_লাক

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

10

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

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


5
এটি কখনই স্বরলিপি সম্পর্কে নয় (বা স্বীকৃতি সম্পর্কে 10-15% এর চেয়ে বেশি কখনও বলবেন না), এটি সবসময় ধারণাগুলি সম্পর্কে। এবং যদি আপনি যুক্তিযুক্ত বুদ্ধিমান হন এবং আপনি কয়েক দশক ধরে বিভিন্ন, সম্ভবত বিপরীত মডেলগুলি (যেমন আমি সম্ভবত) থেকে জ্ঞান অর্জন করতে না পারি তবে সাধারণত এই বিষয়গুলি বোঝা খুব কঠিন নয়। তবে যদি আপনি জিনিসগুলি সম্পর্কে চিন্তাভাবনা ও কাজ করার এক পদ্ধতিতে খাঁটি হয়ে থাকেন তবে এটি খাপ খাইয়ে নেওয়ার কিছুটা প্রচেষ্টা এবং এ জাতীয় পরিবর্তনের বিরুদ্ধে অনেকে প্রতিক্রিয়া জানান। এটি কেবল মানুষের মনস্তত্ত্ব / প্রকৃতি (আমি অবাক হই যে প্রায় 40 বছর পরে ওয়েইনবার্গের সাইকোলজি অফ কম্পিউটার প্রোগ্রামিং কীভাবে ধরে রেখেছে?)
র্যান্ডাল শুল্জ

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

7

স্কালায় প্রচুর ক্রেজি বৈশিষ্ট্য রয়েছে (বিশেষত যেখানে অন্তর্নিহিত পরামিতিগুলির সাথে সম্পর্কিত) যা খুব জটিল এবং একাডেমিক দেখায় তবে জিনিসগুলি সহজেই ব্যবহার করার জন্য ডিজাইন করা হয়েছে। সর্বাধিক উপকারীরা সিনট্যাকটিক চিনি পান ( [A <% B]যার অর্থ হ'ল টাইপ এ-এর একটি অবজেক্ট বি টাইপের একটি বস্তুর সাথে অন্তর্নিহিত রূপান্তরিত হয়) এবং তারা কী করে তার একটি ডকুমেন্টেড ব্যাখ্যা। তবে বেশিরভাগ সময়, এই লাইব্রেরির ক্লায়েন্ট হিসাবে আপনি অন্তর্নিহিত পরামিতিগুলি উপেক্ষা করতে পারেন এবং সঠিক কাজটি করার জন্য তাদের বিশ্বাস করতে পারেন।


হ্যাঁ, সিনট্যাক্সটি দেখাকে বোঝা আরও দ্রুত করা যায়।
উদাগা

6

এটি কি লোকজনকে স্কেলে আসা বন্ধ করবে?

আমি মনে করি না যে এটি মূল ফ্যাক্টর যা স্ক্যালালটি কীভাবে জনপ্রিয় হবে তা প্রভাবিত করবে, কারণ স্কালার প্রচুর শক্তি আছে এবং এর সিনট্যাক্সটি জাভা / সি ++ / পিএইচপি প্রোগ্রামার হিসাবে হাস্কেল, ওক্যামেল, এসএমএল, লিসপস, এর মতো বিদেশী নয়, ইত্যাদি ..

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

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

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

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

লাইব্রেরিটি কি একটি বুদ্ধিমান ধারণা তৈরি করেছিল?

স্পষ্টভাবে.

আপনি যদি স্কেলটি বাণিজ্যিকভাবে ব্যবহার করছেন তবে আপনি কি এই সম্পর্কে উদ্বিগ্ন? আপনি কি অবিলম্বে ২.৮ গ্রহণ করার পরিকল্পনা করছেন বা কী ঘটে তা দেখার জন্য অপেক্ষা করছেন?

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


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

একজন বিল্ডার বিমূর্তনের 2.8 স্কালা সংগ্রহগুলি একটি শব্দ নকশার নীতি। আমি নীচে দুটি ডিজাইন ট্রেড অফগুলি অন্বেষণ করতে চাই।

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

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

  2. AD-HOC সংগ্রহের নকশা: এই বিভাগটি লেখার পরে, আমি টনি মরিসের মন্তব্য পড়লাম এবং বুঝতে পেরেছিলাম যে আমি প্রায় একই পয়েন্টটি করছি। সম্ভবত আমার আরও ভার্বোজ এক্সপোশনটি বিষয়টি আরও পরিষ্কার করে দেবে।

    "টাইপিং বিট রট উইথ টাইপস" এ ওডারস্কে ও মুরসে, দুটি ব্যবহারের কেস উপস্থাপন করা হয়েছে। এগুলি ইনট উপাদানগুলিতে বিটসেটের সীমাবদ্ধতা এবং টুপল উপাদানগুলিকে জোড়া দেওয়ার জন্য মানচিত্র, এবং সাধারণ উপাদান ম্যাপিং ফাংশন, এ => বি, অবশ্যই বিকল্প গন্তব্য সংগ্রহের ধরণের তৈরি করতে সক্ষম হওয়ার কারণ হিসাবে সরবরাহ করা হয়। তবে আফিক এটি বিভাগের তত্ত্বের দৃষ্টিকোণ থেকে ত্রুটিযুক্ত। বিভাগের তত্ত্বের সাথে সামঞ্জস্য বজায় রাখতে এবং কোণার কেসগুলি এড়াতে, এই সংগ্রহের ধরণগুলি হ'ল ফান্টেক্টর, যাতে প্রতিটি রূপচর্চা, এ => বি, অবশ্যই একই ফান্টারের বিভাগের অবজেক্টের মধ্যে মানচিত্র তৈরি করতে হবে, তালিকা [এ] => তালিকা [বি], বিটসেট [এ] => বিটসেট [বি]। উদাহরণস্বরূপ, একটি অপশন হ'ল ফান্টেক্টর যা একের কিছু (বস্তু) এবং কোনওটির সেট সংগ্রহ হিসাবে দেখা যায়। অপশনের কোনওটি নয়, বা তালিকার নীল থেকে অন্য ফান্টকারদের কাছে কোনও সাধারণ মানচিত্র নেই যা '

    এখানে একটি ট্রেড অফ নকশা পছন্দ রয়েছে। আমার নতুন ভাষার সংগ্রহের লাইব্রেরির নকশায়, আমি সমস্ত কিছুকে ফান্টর হিসাবে বেছে নিয়েছি, যার অর্থ আমি যদি একটি বিটসেট বাস্তবায়ন করি তবে এটি কোনও অ-বিট ক্ষেত্রের অভ্যন্তরীণ উপস্থাপনা ব্যবহার করে একটি নন-বিট উপস্থাপনের মাধ্যমে সমস্ত উপাদান ধরণের সমর্থন করে needs পূর্ণসংখ্যার ধরণের পরামিতি, এবং সেই কার্যকারিতাটি সে স্কেলে এর উত্তরাধিকার সূত্রে ইতিমধ্যে রয়েছে in এবং আমার নকশায় মানচিত্রে এর মানগুলি কেবলমাত্র মানচিত্রের প্রয়োজন, এবং এটি এর (কী, মান) জোড়া টিপলস ম্যাপিংয়ের জন্য একটি পৃথক নন-ফান্ট্যাক্টর পদ্ধতি সরবরাহ করতে পারে। একটি সুবিধা হ'ল প্রতিটি ফান্টেক্টর সাধারণত একটি আবেদনকারী এবং সম্ভবত একটি মোনাডও হয়। সুতরাং উপাদান ধরণের মধ্যে সমস্ত ফাংশন, যেমন এ => বি => সি => ডি => ..., স্বয়ংক্রিয়ভাবে উত্তোলিত আবেদনকারী ধরণের মধ্যে ফাংশনগুলিতে স্থানান্তরিত হয়, উদাহরণস্বরূপ তালিকা [এ] => তালিকা [বি] => তালিকা [ সি] => তালিকা [ডি] => .... অন্য স্ট্রাকচার থেকে অন্য সংগ্রহের ক্লাসে ম্যাপিংয়ের জন্য, আমি একটি মানচিত্রের ওভারলোড অফার করি যা একটি মনোয়েড লাগে যেমন, নীল, কিছুই নয়, "", অ্যারে () ইত্যাদি So সুতরাং বিল্ডার বিমূর্ত ফাংশনটি একটি মনোয়েডের সংযোজন পদ্ধতি এবং প্রয়োজনীয় ইনপুট প্যারামিটার হিসাবে স্পষ্টভাবে সরবরাহ করা হয়, সুতরাং কোনও অদৃশ্য অন্তর্নিহিত রূপান্তর নেই। (ট্যানজেন্ট: এই ইনপুট প্যারামিটারটি খালি খালি মনোয়েডগুলিতে সংযোজন সক্ষম করে, যা স্কালার মানচিত্রের নকশা করতে পারে না)) এই জাতীয় রূপান্তরগুলি একই পুনরাবৃত্তির পাসের মানচিত্র এবং একটি ভাঁজ। এছাড়াও আমি বিভাগের অর্থে একটি ট্র্যাভারেবল সরবরাহ করি, "ম্যাকব্রাইড এবং প্যাটারসন" এফেক্টস সহ অ্যাপ্লিকেশনাল প্রোগ্রামিং, যা মানক + ভাঁজকে কোনও ট্র্যাভারেবল থেকে যে কোনও আবেদনকারীর কাছে একক পুনরাবৃত্তির পাসে সক্ষম করে, যেখানে বেশিরভাগ প্রতিটি সংগ্রহ শ্রেণি উভয়ই।

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

    আমি কোথাও পড়েছি, আমার মনে হয় এটি ওডারস্কি ছিল, গ্রন্থাগারের নকশার আর একটি যুক্তি হিসাবে, খাঁটি কার্যকরী স্টাইলে প্রোগ্রামিংয়ের সীমিত পুনরাবৃত্তি এবং গতির ব্যয় হয় যেখানে লেজ পুনরাবৃত্তি ব্যবহৃত হয় না। আমি এখনও পর্যন্ত যে সমস্ত ক্ষেত্রে মুখোমুখি হয়েছি তার ক্ষেত্রে লেজ পুনরাবৃত্তি নিয়োগ করা আমার পক্ষে খুব কঠিন হয়নি।


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


তো, আপনার ভাষা কি বস্তু-কেন্দ্রিক হতে চলেছে?
অনুপস্থিতি

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

5

এখানে ডিগ্রি ডিগ্রি দেওয়া জরুরি বলে মনে হচ্ছে: রাষ্ট্রবিজ্ঞানে বিএ এবং কম্পিউটার বিজ্ঞানে বিড।

যথাযথ:

এটি কি লোকজনকে স্কেলে আসা বন্ধ করবে?

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

যদি এই শিক্ষা উপলব্ধ থাকে তবে প্রত্যেকেই এটি করতে পারে। গত বছর আমি এসসিএএলএতে একগুচ্ছ স্কুল বাচ্চাদের সাথে একটি দাবা কম্পিউটার তৈরি করেছি! তাদের সমস্যা ছিল তবে তারা শেষ পর্যন্ত ভাল করেছে।

আপনি যদি স্কেলটি বাণিজ্যিকভাবে ব্যবহার করছেন তবে আপনি কি এই সম্পর্কে উদ্বিগ্ন? আপনি কি অবিলম্বে ২.৮ গ্রহণ করার পরিকল্পনা করছেন বা কী ঘটে তা দেখার জন্য অপেক্ষা করছেন?

আমি উদ্বিগ্ন হবে না।


4

অক্সফোর্ড থেকে আমারও গণিতের ডিগ্রি আছে! নতুন সংগ্রহের জিনিসগুলি 'পেতে' আমার কিছুটা সময় লেগেছিল। তবে আমি এখন এটি অনেক পছন্দ করি। প্রকৃতপক্ষে, 'ম্যাপ' টাইপ করা প্রথম বৃহত্তম জিনিসগুলির মধ্যে একটি যা আমাকে ২.7 এ ছুঁড়ে মারে (সম্ভবত প্রথম কাজটি করার পরে যেহেতু সংগ্রহের ক্লাসগুলির মধ্যে একটি ছিল সাবক্লাস)।

নতুন ২.৮ সংকলনে মার্টিনের কাগজটি পড়ার ফলে প্রকৃত অর্থে ব্যবস্থাগুলির ব্যবহার ব্যাখ্যা করা সম্ভব হয়েছিল, তবে হ্যাঁ ডকুমেন্টেশনটি অবশ্যই মূল APIs এর পদ্ধতি স্বাক্ষরের মধ্যে বিভিন্ন ধরণের প্রভাবের ভূমিকা ব্যাখ্যা করার জন্য আরও ভাল কাজ করা দরকার।

আমার মূল উদ্বেগ এটি আরও: ২.৮ কখন প্রকাশিত হবে? বাগ রিপোর্টগুলি কখন এর জন্য আসা বন্ধ করবে? স্কেলা দল কি তারা 2.8 দিয়ে চিবানো যায় তার চেয়ে বেশি কামড়ে ফেলেছে / একবারে খুব বেশি পরিবর্তন করার চেষ্টা করেছে?

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


-1

ব্যবহার সাইটে ত্রুটি বার্তাগুলি সম্পর্কে কী?

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

এটি বেশিরভাগ ক্ষেত্রেই সহজ তবে তা জানা খুব ভাল necess কমপক্ষে একটি লোক অবশ্যই আছে যিনি এই জিনিসগুলি জানেন যদি বিস্তৃত গ্রন্থাগারটি ডিজাইন করা হয়।


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