আসল বিশ্বে হাস্কেল কীসের জন্য ব্যবহৃত হয়? [বন্ধ]


475

হাস্কেলকে ঘিরে প্রচুর হাইপ রয়েছে, তবে এটি বাস্তব বিশ্বের অ্যাপ্লিকেশনগুলিতে কীভাবে ব্যবহৃত হয় সে সম্পর্কে তথ্য পাওয়া শক্ত। হাস্কেলের সর্বাধিক জনপ্রিয় প্রকল্পগুলি / ব্যবহারগুলি কী এবং এটি কেন এই সমস্যাগুলি সমাধানে শ্রেষ্ঠ?


56
না, আমি তা করব না কারণ এটি একটি পরিষ্কার কাট উত্তর। মতামত এবং এর জন্য কোনও উইগল রুম নেই। আমি কেবল ভাষাটি কী জন্য তৈরি হয়েছিল তা জানতে চাই।
সের্জিও তাপিয়া


12
@ পাপুকিনো 1, অপেক্ষা করুন, আপনি কী এটির জন্য দরকারী , বা এটি কী জন্য তৈরি হয়েছিল তা জানতে চান ? পূর্ববর্তীটি প্রশ্নটি জিজ্ঞাসা করছে, এবং সেখানে মতামতের অনেক জায়গা রয়েছে ...
বিডনলান

3
@ পাপুচিনো 1 - আপনার শিরোনামে অতিরিক্ত শব্দগুলি কী উপকারে আসে? এছাড়াও, আমি মনে করি আপনি এই প্রসঙ্গে "ফাংশনাল" শব্দটির ব্যবহারটি ভুল বুঝছেন, তবে এটি বলা শক্ত।
ক্রিস লুটজ

2
তাদের নিজস্ব ওয়েবসাইট অনুসারে অনেক সংস্থা এটিকে বিভিন্ন ধরণের উদ্দেশ্যে ব্যবহার করে ... haskell.org/haskellwiki/Haskell_in_industry
জুলিয়ান

উত্তর:


309

এই ভাষার জন্য কিছু সাধারণ ব্যবহার কি?

রেপিড এপ্লিকেশন ডেভেলপমেন্ট.

আপনি যদি "কেন হাস্কেল?" জানতে চান, তবে আপনাকে কার্যকরী প্রোগ্রামিং ভাষার সুবিধা বিবেচনা করতে হবে ( https://c2.com/cgi/wiki?AvantagesOfFunctionalProgramming থেকে নেওয়া ):

  • কার্যকরী প্রোগ্রামগুলি তাদের ইম্পেরটিভ ল্যাঙ্গুয়েজ অংশগুলির তুলনায় অনেক বেশি সংশ্লেষিত হতে থাকে। প্রায়শই এটি বর্ধিত প্রোগ্রামার উত্পাদনশীলতার দিকে পরিচালিত করে

  • এফপি দ্রুত প্রোটোটাইপিংকে উত্সাহ দেয়। এর মতো, আমি মনে করি এটি এক্সট্রিমপ্রগ্রামের জন্য সেরা সফ্টওয়্যার ডিজাইনের দৃষ্টান্ত ... তবে আমি কী জানি?

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

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

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

  • নিরাপদ মাল্টিথ্রেডিং! অপরিবর্তনীয় ডেটা স্ট্রাকচারগুলি ডেটা রেসের শর্ত সাপেক্ষে নয় এবং ফলস্বরূপ লক দ্বারা সুরক্ষিত হতে হবে না। যদি আপনি সর্বদা নতুন জিনিসগুলি বরাদ্দ করে থাকেন তবে বিদ্যমানগুলি ধ্বংসাত্মকভাবে চালিত করার পরিবর্তে লকিংটি বরাদ্দ এবং আবর্জনা সংগ্রহ পদ্ধতিতে লুকানো যেতে পারে।

এটি বাদে হাস্কেলের নিজস্ব সুবিধা রয়েছে যেমন:

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

আপনি নিম্নলিখিত লিঙ্কগুলি পরীক্ষা করে দেখতে পারেন:


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

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

3
আপনি একটি বিষয় ভুলে গেছেন - হ্যাসকেলে কোডিং একটি পরম বিস্ফোরণ;) হেস্কেলের কিছু সমস্যার জন্য আমি আমার হাত চেষ্টা করে খুব মজা পেয়েছি।
জে আতকিন

8
@ মার্টিনড্রেটজবার্গ অবশ্যই বিবৃতি গ্যারান্টি সহ আসে। কোন ধরণের দরকারী ভাষার গ্যারান্টি ছাড়াই বিবৃতি থাকবে? সি উদাহরণস্বরূপ x = 5;গ্যারান্টি দেয় যে এটি কার্যকর করার পরে, xমানটি অন্তর্ভুক্ত করে 5
ব্যবহারকারী 253751

5
@ E4z9 হ্যাঁ তবে সি ++ তে এটি গ্যারান্টি দেয় operator =called এবং এটির গ্যারান্টি দেয় যদি আপনি কোনওoperator =
ব্যবহারকারী 253751

234

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


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

2
ফেসবুক এটি দিয়ে স্প্যাম শনাক্ত করে: কোড.ফেসबुक
অ্যালেক্স

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

5
কেরা স্টুডিওতে আমরা হাস্কেল ব্যবহার করে আইওএস এবং অ্যান্ড্রয়েড গেমস এবং অ্যাপস লিখি।
ইভান পেরেজ

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

87

হাস্কেলের মতো সাধারণ উদ্দেশ্য ভাষা যেটির জন্য ভাল তা জন্য একটি উত্তরের উত্তর রয়েছে: সাধারণভাবে প্রোগ্রাম লেখার জন্য।

এটি বাস্তবে যা ব্যবহৃত হয় তার জন্য, এটি প্রতিষ্ঠার জন্য আমার তিনটি পদ্ধতি রয়েছে:

ইঙ্গিত করে যে এটি গ্রাফিক্স, নেটওয়ার্কিং, সিস্টেম প্রোগ্রামিং, ডেটা স্ট্রাকচার, ডাটাবেস, উন্নয়ন, পাঠ্য প্রক্রিয়াকরণের জন্য ভাল ...

এবং পরিশেষে, এ সম্পর্কে সত্যই শক্তিশালী সম্পর্কে আমার মতামত:

আমি আশা করি যে এটি আপনার নির্দিষ্টতার সাথে যদি উত্তর দেওয়া হয় তবে আপনার প্রশ্নটি কতটা বিস্তৃত তা সম্পর্কে একটি ধারণা দেয়।


15
ট্যাগ মেঘ ভাঙা হয়েছে
ইলিয়ট ক্যামেরন

ট্যাগ ক্লাউড ওয়ার্ডক্লাউড ব্যবহার করে উত্পন্ন হয়েছিল ?
জানুস ট্রয়লসেন

29

অ্যাকশন ইন হাস্কেলের একটি উদাহরণ হল xmonad , "কোডের 1200 লাইনেরও কম লাইনে উইন্ডো ম্যানেজার"


18

থেকে Haskell, উইকি :

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

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

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

যদি আপনি এখনও নিজেকে জিজ্ঞাসা করছেন, "আমি এটি কেন ব্যবহার করব?", তবে কেন এটি ব্যবহার করবেন? হাস্কেল উইকি প্রবর্তনের অংশ।


13

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

এবং হ্যাঁ, আমি ড্রিমিনকোড থেকে রেইন। :)

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

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


9

আমার কাছে একটি দুর্দান্ত, ফেসবুক পিএইচপি কোড পুনর্লিখনের জন্য একটি স্বয়ংক্রিয় সরঞ্জাম তৈরি করেছে। তারা উত্সটি একটি বিমূর্ত সিনট্যাক্স ট্রিে পার্স করে, কিছু রূপান্তর করে:

if ($f == false) -> if (false == $f)

কেন জানি না, তবে এটি তাদের নির্দিষ্ট স্টাইল বলে মনে হয় এবং তারপরে তারা এটি প্রিন্ট করে।

https://github.com/facebook/lex-pass

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

আসলে সব ধরণের স্টাফ। আপনি যদি কিছুটা গাণিতিকভাবে ঝুঁকে থাকেন তবে এটি খুব শক্তিশালী এবং দরকারী বৈশিষ্ট্যযুক্ত একটি দৈনন্দিন সাধারণ উদ্দেশ্য ভাষা।


6
পুনরায়: এফবি স্টাইলটি, == এর আগে মিথ্যা রাখার অর্থ যদি আপনি ভুলে যান এবং কেবল একটি একক লিখেন তবে ফলস্বরূপ আচরণটি নিঃশব্দে একটি নির্ধারিত অ্যাসাইনমেন্ট অপারেশন সম্পাদন এবং স্বাভাবিকভাবে চালিয়ে যাওয়ার পরিবর্তে আরও স্পষ্টতই ভুল হবে
ম্যাগনাস

একটি যে চালাক, আপনার শক্তি যে বিশেষত ত্রুটি তখন সময় সংকলন পরিচিত।
এডগার ক্লার্কস

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

যদিও আমি falseবামে লেখার সুবিধাটি দেখছি, তবে এটি স্বয়ংক্রিয়ভাবে করার জন্য কোনও সরঞ্জাম ব্যবহার করার বিন্দুটি আমি দেখতে পাচ্ছি না: যদি আপনি ইতিমধ্যে একটি ==অপারেটর পেয়ে থাকেন তবে আপনি ইতিমধ্যে জেনে ফেলেছেন যে আপনার যে অংশটি রয়েছে সেটির ত্রুটি নেই লেক্স-পাস ধরা মানে, এবং যদি আপনি =এর পরিবর্তে পেয়ে থাকেন তবে এটি ইচ্ছাকৃতভাবে এর মতো কিনা তা বলার কোনও সঠিক উপায় নেই।
জেরেমি তালিকা

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

6

হাস্কেল থেকে :

হাস্কেল হ'ল একটি স্ট্যান্ডার্ডাইজড, সাধারণ-উদ্দেশ্য বিশুদ্ধরূপে কার্যকরী প্রোগ্রামিং ল্যাঙ্গুয়েজ সহ, অ-কঠোর শব্দার্থবিজ্ঞান এবং শক্ত স্ট্যাটিক টাইপিং সহ। এটি যুক্তিবিদ হাস্কেল কারির নামে নামকরণ করা হয়েছে।

মূলত হ্যাস্কেলকে আপনি সাধারণত অন্যান্য সাধারণ-উদ্দেশ্যমূলক ভাষাগুলি (যেমন সি #, জাভা, সি, সি ++ ইত্যাদি) ব্যবহার করে যা কিছু তৈরি করতে পারেন তা তৈরি করতে ব্যবহার করা যেতে পারে।


5

উদাহরণস্বরূপ, ইন্টারেক্টিভ বিকাশের জন্য, রিয়েলটাইম এইচটিএমএল 5 ওয়েব অ্যাপ্লিকেশন। এলম দেখুন , যার সংকলকটি হাস্কেলের মধ্যে প্রয়োগ করা হয়েছে এবং সিনট্যাক্স যা হাস্কেল থেকে প্রচুর .ণ নিয়েছে।


3

এটি হাস্কেল এবং এর ব্যবহার সম্পর্কে তথ্যের জন্য একটি দুর্দান্ত উত্স:

ওপেন সোর্স হাস্কেল প্রকাশ ও বৃদ্ধি G


কেবলমাত্র লিঙ্ক-উত্তরই আদর্শ নয়। এটি বলেছে যেহেতু এই প্রশ্নটি বন্ধ রয়েছে তাই মুছে ফেলার চেয়ে এটি সম্পাদনা করা ভাল।
ডিফিউয়ার

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