আমি এখানে কার্যকরী ভাষা এবং স্টাফ সম্পর্কে প্রচুর আলাপ দেখছি। কেন আপনি "traditionalতিহ্যবাহী" ভাষার উপরের একটি ব্যবহার করবেন? তারা আরও ভাল কি? এগুলিতে তারা কী খারাপ? আদর্শ কার্যকরী প্রোগ্রামিং অ্যাপ্লিকেশন কী?
আমি এখানে কার্যকরী ভাষা এবং স্টাফ সম্পর্কে প্রচুর আলাপ দেখছি। কেন আপনি "traditionalতিহ্যবাহী" ভাষার উপরের একটি ব্যবহার করবেন? তারা আরও ভাল কি? এগুলিতে তারা কী খারাপ? আদর্শ কার্যকরী প্রোগ্রামিং অ্যাপ্লিকেশন কী?
উত্তর:
কার্যকরী ভাষা অপরিহার্য এবং অবজেক্ট-ভিত্তিক ভাষার চেয়ে পৃথক দৃষ্টান্ত ব্যবহার করে। তারা ভাষায় মৌলিক বিল্ডিং ব্লক হিসাবে পার্শ্ব-প্রভাব-মুক্ত ফাংশন ব্যবহার করে। এটি প্রচুর জিনিস সক্ষম করে এবং প্রচুর জিনিসকে আরও কঠিন করে তোলে (বা বেশিরভাগ ক্ষেত্রে লোকেরা অভ্যস্ত থেকে আলাদা)।
ফাংশনাল প্রোগ্রামিংয়ের সবচেয়ে বড় সুবিধা হ'ল পার্শ্ব-প্রভাব-মুক্ত ফাংশনগুলি কার্যকর করার ক্রমটি গুরুত্বপূর্ণ নয়। উদাহরণস্বরূপ, এরলং-এ এটি খুব স্বচ্ছ উপায়ে সম্মতিটি সক্ষম করতে ব্যবহৃত হয়। এবং যেহেতু কার্যকরী ভাষায় ফাংশনগুলি গাণিতিক ক্রিয়াকলাপগুলির সাথে খুব একই রকম আচরণ করে সেগুলি কার্যকরী ভাষায় অনুবাদ করা সহজ। কিছু ক্ষেত্রে, এটি কোডটিকে আরও পঠনযোগ্য করে তুলতে পারে।
Ditionতিহ্যগতভাবে, কার্যকরী প্রোগ্রামিংয়ের অন্যতম বড় অসুবিধাও ছিল পার্শ্ব প্রতিক্রিয়াগুলির অভাব। আইও ব্যতীত দরকারী সফ্টওয়্যারটি লেখা খুব কঠিন, তবে ফাংশনগুলিতে পার্শ্ব প্রতিক্রিয়া ছাড়াই আইও কার্যকর করা কঠিন। সুতরাং বেশিরভাগ মানুষ কোনও একক ইনপুট থেকে একক আউটপুট গণনা করার চেয়ে কার্যকরী প্রোগ্রামিং থেকে বেশি লাভ করেনি। এফ # বা স্কালার মতো আধুনিক মিশ্র-দৃষ্টান্তের ভাষায় এটি আরও সহজ।
প্রচুর আধুনিক ভাষায় ফাংশনাল প্রোগ্রামিং ল্যাঙ্গুয়েজের উপাদান রয়েছে। সি # 3.0 এর প্রচুর কার্যকরী প্রোগ্রামিং বৈশিষ্ট্য রয়েছে এবং আপনি পাইথনেও কার্যকরী প্রোগ্রামিং করতে পারেন। আমি মনে করি ফাংশনাল প্রোগ্রামিংয়ের জনপ্রিয়তার কারণগুলি মূলত দুটি কারণে: কনক্র্যাঙ্কিটি সাধারণ প্রোগ্রামিংয়ে একটি আসল সমস্যা হয়ে উঠছে কারণ আমরা আরও বেশি সংখ্যক মাল্টিপ্রসেসর কম্পিউটার পাচ্ছি; এবং ভাষাগুলি আরও অ্যাক্সেসযোগ্য হচ্ছে।
আমি মনে করি না যে প্রোগ্রামিং "ক্যাচিং অন" এর কার্যকরী পদ্ধতির বিষয়ে কোনও প্রশ্ন আছে কারণ এটি প্রায় 40 বছর ধরে ব্যবহৃত হচ্ছে (প্রোগ্রামিংয়ের একটি স্টাইল হিসাবে)। যখনই কোনও ওও প্রোগ্রামার ক্লিন কোড লিখেন যা অপরিবর্তনীয় বস্তুর পক্ষে, সেই কোডটি কার্যকরী ধারণা ধার করে।
তবে, যে ভাষাগুলি একটি কার্যকরী শৈলী প্রয়োগ করে তারা আজকাল প্রচুর ভার্চুয়াল কালি পাচ্ছে, এবং ভবিষ্যতে সেই ভাষাগুলি প্রাধান্য পাবে কিনা তা একটি মুক্ত প্রশ্ন। আমার নিজের সন্দেহ হ'ল হাইব্রিড, বহু-দৃষ্টান্তের ভাষা যেমন স্কেলা বা ওক্যামল সম্ভবত "পিউরিস্ট" ফাংশনাল ভাষার উপর একইভাবে প্রভাব ফেলবে যেভাবে খাঁটি ওও ভাষা (ছোট্টালক, বিটা ইত্যাদি) মূলধারার প্রোগ্রামিংগুলিকে প্রভাবিত করেছে তবে শেষ হয়নি। সর্বাধিক ব্যবহৃত-ব্যবহৃত স্বরলিপি হিসাবে আপ।
পরিশেষে, আমি এ কথাটি প্রতিহত করতে পারি না যে আপনার মন্তব্যগুলি এফপি পুনরায় প্রসেসরাল প্রোগ্রামারদের কাছ থেকে শুনেছি এমন মন্তব্যের সাথে সমান্তরাল যেগুলি বহু বছর আগে নয়:
গ্রাফিক্যাল ইউজার ইন্টারফেস এবং "ব্যবসায়ের মডেল হিসাবে কোড" যেমন ওও আরও ব্যাপকভাবে প্রশংসিত হতে সাহায্য করেছিল এমন ধারণা ছিল, আমি বিশ্বাস করি যে অপরিবর্তনীয়তা এবং সরল (বৃহত্তর) সমান্তরালতার বর্ধিত ব্যবহার আরও প্রোগ্রামারদের কার্যকারিত পদ্ধতির যে সুবিধা দেয় সেগুলি দেখতে সহায়তা করবে । তবে আমরা গত ৫০ বা তত বছরে যতটুকু শিখেছি যা ডিজিটাল কম্পিউটার প্রোগ্রামিংয়ের পুরো ইতিহাস তৈরি করে, আমার মনে হয় আমাদের এখনও অনেক কিছু শেখার আছে। আজ থেকে বিশ বছর পরে, প্রোগ্রামাররা এখন জনপ্রিয় ওও এবং এফপি ভাষা সহ , বর্তমানে আমরা যে সরঞ্জামগুলি ব্যবহার করছি তার আদিম প্রকৃতিতে বিস্মিত হয়ে ফিরে তাকাবে।
আমার জন্য প্রধান প্লাস হ'ল তার সহজাত সমান্তরালতা, বিশেষত যেহেতু আমরা এখন আরও মেগাহার্টজ থেকে দূরে সরে যাচ্ছি এবং আরও বেশি করে কোরের দিকে।
আমি মনে করি না এটি পরবর্তী প্রোগ্রামিং দৃষ্টান্ত হয়ে উঠবে এবং ওও টাইপ পদ্ধতিগুলি পুরোপুরি প্রতিস্থাপন করবে, তবে আমি মনে করি যে আমরা আমাদের এই কোডটি কার্যকরী ভাষায় কিছু লিখতে হবে, বা আমাদের সাধারণ উদ্দেশ্য ভাষাগুলি হবে আরও কার্যকরী নির্মাণ অন্তর্ভুক্ত বৃদ্ধি।
এমনকি যদি আপনি পেশাগতভাবে কোনও কার্যকরী ভাষায় কখনও কাজ না করেন তবে ফাংশনাল প্রোগ্রামিং বোঝা আপনাকে আরও উন্নত বিকাশকারী করে তুলবে। এটি আপনাকে সাধারণভাবে আপনার কোড এবং প্রোগ্রামিংয়ের ক্ষেত্রে একটি নতুন দৃষ্টিকোণ দেবে।
আমি বলি এটি শিখার কোনও কারণ নেই।
আমি মনে করি যে ভাষাগুলি কার্যকরী এবং অপরিহার্য শৈলীর মিশ্রণের জন্য ভাল কাজ করে সেগুলি সবচেয়ে আকর্ষণীয় এবং সম্ভবত সফল হওয়ার সম্ভাবনা বেশি।
আমি সর্বদা নেক্সট বিগ থিং সম্পর্কে সন্দেহবাদী। নেক্সট বিগ থিং হ'ল ইতিহাসের খাঁটি দুর্ঘটনা, প্রযুক্তিটি সঠিক কিনা তা সঠিক সময়ে সঠিক জায়গায় উপস্থিত হওয়া। উদাহরণ: সি ++, টিসিএল / টাকা, পার্ল। সমস্ত ত্রুটিযুক্ত প্রযুক্তি, সমস্ত বন্যভাবে সফল কারণ সেগুলি তখনকার সমস্যাগুলি সমাধান করার জন্য বা এনক্রেনড স্ট্যান্ডার্ডগুলির সাথে প্রায় অভিন্ন বা উভয়ই উপলব্ধি করা হয়েছিল। কার্যকরী প্রোগ্রামিং প্রকৃতপক্ষে দুর্দান্ত হতে পারে তবে এর অর্থ এই নয় যে এটি গৃহীত হবে।
তবে আমি আপনাকে বলতে পারি যে লোকেরা ক্রিয়ামূলক প্রোগ্রামিং সম্পর্কে কেন উচ্ছ্বসিত : অনেক, অনেক প্রোগ্রামার একটি ধরণের "রূপান্তর অভিজ্ঞতা" পেয়েছিলেন যা তারা আবিষ্কার করেছিলেন যে কার্যকরী ভাষা ব্যবহারের ফলে তারা উত্পাদন করার সময় দ্বিগুণ উত্পাদনশীল (বা হতে পারে দশগুণ উত্পাদনশীল) করে তোলে কোড যা পরিবর্তন করতে আরও স্থিতিস্থাপক এবং কম বাগ রয়েছে। এই লোকেরা ফাংশনাল প্রোগ্রামিংকে একটি গোপন অস্ত্র হিসাবে ভাবেন; এই মানসিকতার একটি ভাল উদাহরণ হ'ল পল গ্রাহামের গড় পিটানো । ওহ, এবং তার আবেদন? ই-কমার্স ওয়েব অ্যাপ্লিকেশন।
২০০ early এর প্রথম দিক থেকে কার্যকরী প্রোগ্রামিং এবং সমান্তরালতা সম্পর্কে কিছুটা গুঞ্জন রয়েছে। যেহেতু সাইমন পাইটন জোনসের মতো লোকেরা সমান্তরালতা সম্পর্কে চিন্তাভাবনা করছেন এবং কমপক্ষে ১৯৮৪ সাল থেকে, কার্যকরী ভাষাগুলি মাল্টিকোর সমস্যার সমাধান না করা পর্যন্ত আমি আমার নিঃশ্বাস ছাড়ছি না। তবে এটি এখনই অতিরিক্ত বাজেটের কিছু ব্যাখ্যা দেয়।
সাধারণভাবে, আমেরিকান বিশ্ববিদ্যালয়গুলি ফাংশনাল প্রোগ্রামিং শেখানোর একটি দুর্বল কাজ করছে। স্কিম ব্যবহার করে ইন্ট্রো প্রোগ্রামিং শেখানোর পক্ষে একটি শক্তিশালী মূল সমর্থন রয়েছে এবং হাস্কেল সেখানে কিছুটা সমর্থনও উপভোগ করেছেন তবে কার্যকরী প্রোগ্রামারকে উন্নত প্রযুক্তি শেখানোর পথে খুব কমই রয়েছে। আমি হার্ভার্ডে এই জাতীয় কোর্স শিখিয়েছি এবং টুফ্টসে এই বসন্তে আবার করব। বেনজামিন পিয়ার্স পেনে এমন কোর্স শিখিয়েছেন। আমি জানি না পল হুডাক ইয়েলে কিছু করেছে কিনা। ইউরোপীয় বিশ্ববিদ্যালয়গুলি আরও অনেক ভাল কাজ করছে; উদাহরণস্বরূপ, ডেনমার্ক, নেদারল্যান্ডস, সুইডেন এবং যুক্তরাজ্যের গুরুত্বপূর্ণ স্থানে ক্রিয়ামূলক প্রোগ্রামিংয়ের উপর জোর দেওয়া হয়েছে। অস্ট্রেলাসিয়াতে যা ঘটছে সে সম্পর্কে আমার কম ধারণা নেই।
আমি এখানে ঘরে হাতির উল্লেখ করতে কাউকে দেখতে পাচ্ছি না, তাই আমি মনে করি এটি আমার হাতে রয়েছে :)
জাভাস্ক্রিপ্ট একটি কার্যকরী ভাষা। যেহেতু আরও বেশি সংখ্যক লোক জেএসের সাথে আরও উন্নত জিনিসগুলি করে, বিশেষত জিকুয়ারি, ডোজো এবং অন্যান্য ফ্রেমওয়ার্কগুলির সূক্ষ্ম পয়েন্টগুলি উপার্জন করে, ওয়েব-বিকাশকারীর পিছনের দরজা দ্বারা এফপি চালু করা হবে।
ক্লোজারগুলির সাথে একত্রে, এফপি জেএস কোডটি সত্যই হালকা করে, তবুও পাঠযোগ্য।
চিয়ার্স, পিএস
বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ
ওও উপায় সর্বদা "স্বাভাবিক" হয় নি। এই দশকের মানটি গত দশকের প্রান্তিক ধারণা ছিল।
কার্যকরী প্রোগ্রামিং গণিত হয়। লিস্পে পল গ্রাহাম ( লিসপের বিকল্প ফাংশনাল প্রোগ্রামিং):
সুতরাং এই 1950 এর ভাষা কেন অপ্রচলিত নয় এর সংক্ষিপ্ত ব্যাখ্যাটি হ'ল এটি প্রযুক্তি ছিল না তবে গণিত ছিল এবং গণিতটি বাসি হয় না। লিস্পের সাথে তুলনা করার সঠিক জিনিসটি 1950 এর হার্ডওয়্যার নয়, তবে বলুন, কুইকসোর্ট অ্যালগরিদম, যা 1960 সালে আবিষ্কৃত হয়েছিল এবং এখনও সাধারণ-উদ্দেশ্য অনুসারে বাছাই করা হয়েছে।
আমি বাজি ধরছি আপনি যখন জানতেন যে আপনি কার্যক্ষম প্রোগ্রামিং ছিলেন:
গড় কর্পোরেট প্রোগ্রামার, যেমন আমি যাদের সাথে কাজ করি তাদের বেশিরভাগই এটি বুঝতে পারে না এবং বেশিরভাগ কাজের পরিবেশ আপনাকে এতে প্রোগ্রাম করতে দেয় না
যদিও এটি সময়ের ব্যাপার মাত্র। আপনার গড় কর্পোরেট প্রোগ্রামার বর্তমান বিগ থিং যা কিছু শিখেছে s 15 বছর আগে তারা ওওপি বুঝতে পারেনি। যদি এফপি ক্যাচ করে, আপনার "গড় কর্পোরেট প্রোগ্রামারগুলি" অনুসরণ করবে।
এটি আসলে বিশ্ববিদ্যালয়গুলিতে শেখানো হয় না (বা আজকাল এটি কি?)
অনেক কিছু পরিবর্তিত হয়। আমার বিশ্ববিদ্যালয়ে এসএমএল হ'ল প্রথম ভাষার শিক্ষার্থীদের সাথে পরিচয় করানো। আমি বিশ্বাস করি এমআইটি প্রথম বর্ষের কোর্স হিসাবে এলআইএসপি পড়ায়। এই দুটি উদাহরণ অবশ্যই প্রতিনিধি নাও হতে পারে তবে আমি বিশ্বাস করি যে বেশিরভাগ বিশ্ববিদ্যালয় এফপিতে কিছুটা optionচ্ছিক কোর্স সরবরাহ করে, এমনকি তারা এটিকে পাঠ্যক্রমের বাধ্যতামূলক অংশ না করে।
বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ
যদিও এটি আসলে "যথেষ্ট সহজ" বিষয় নয়। একটি সমাধান সহজ হবে (বা আরও পাঠযোগ্য, শক্তিশালী, মার্জিত, অভিনয়) হতে পারে? অনেকগুলি জিনিস "জাভাতে সমাধানের পক্ষে যথেষ্ট সহজ" তবে এটির জন্য এখনও এক ধার্মিক কোড দরকার।
যে কোনও ক্ষেত্রে, মনে রাখবেন যে এফপি সমর্থকরা দাবি করেছেন যে এটি বেশ কয়েক দশক ধরে নেক্সট বিগ থিং ছিল। সম্ভবত তারা ঠিক বলেছেন, তবে মনে রাখবেন যে তারা 5, 10 বা 15 বছর আগে একই দাবি করার সময় ছিল না।
একটি জিনিস যা অবশ্যই তাদের পক্ষে গণ্য করা হয়েছে, তা হল, সম্প্রতি, সি # এফপির দিকে তীব্র ঘুরিয়ে নিয়েছে, এটি প্রায়োগিক প্রোগ্রামারদের একটি প্রজন্মকে এফপি প্রোগ্রামারগুলিতে রূপান্তরিত করে, এমনকি তাদের লক্ষ্য না করেই । এটি কেবল এফপি "বিপ্লব" এর পথ প্রশস্ত করতে পারে। হতে পারে. ;)
মানুষ তার নির্বাচিত শিল্পের পরিপূর্ণতা এবং অপূর্ণতাগুলি বুঝতে পারে না যদি তিনি অন্য চারুকলার মূল্য দেখতে না পান। নিম্নলিখিত বিধিগুলি কেবল প্রযুক্তির এক পর্যায়ে উন্নয়নের অনুমতি দেয় এবং তারপরে ছাত্র এবং শিল্পীকে আরও শিখতে হবে এবং আরও অনুসন্ধান করতে হবে। এটি কৌশল হিসাবে অন্যান্য শিল্পকলা অধ্যয়ন করার জন্য অর্থবোধ করে।
কে অন্যের কর্মকাণ্ড দেখে নিজের সম্পর্কে আরও কিছু শিখেনি? তরোয়াল শিখতে গিটার পড়ুন। মুষ্টি অধ্যয়নের বাণিজ্য শিখতে। কেবল তরোয়াল অধ্যয়ন আপনাকে সংকীর্ণ করবে এবং আপনাকে বাহ্যিকভাবে বাড়তে দেবে না।
- মিয়ামোটো মুসাশি, "পাঁচটি রিংয়ের একটি বই"
ক্রিয়ামূলক ভাষায় একটি মূল বৈশিষ্ট্য হ'ল প্রথম শ্রেণির ফাংশনগুলির ধারণা। ধারণাটি হ'ল আপনি অন্য ফাংশনে প্যারামিটার হিসাবে ফাংশনগুলি পাস করতে পারেন এবং মান হিসাবে ফিরিয়ে দিতে পারেন।
কার্যকরী প্রোগ্রামিংয়ের সাথে লিখিত কোড জড়িত যা রাষ্ট্র পরিবর্তন করে না। এটি করার প্রাথমিক কারণটি হ'ল যাতে কোনও ফাংশনে ক্রমাগত কলগুলি একই ফল দেয়। আপনি প্রথম শ্রেণীর ফাংশন সমর্থন করে যে কোনও ভাষায় ফাংশনাল কোড লিখতে পারেন, তবে হাস্কেলের মতো কিছু ভাষা রয়েছে যা আপনাকে রাষ্ট্র পরিবর্তন করতে দেয় না। আসলে, আপনি মোটেই কোনও পার্শ্ব প্রতিক্রিয়া (পাঠ্য প্রিন্ট করার মতো) তৈরি করার কথা নেই - যা মনে হয় এটি সম্পূর্ণ অকেজো হতে পারে।
হাস্কেল পরিবর্তে আইও: মনাদাদের কাছে আলাদা পদ্ধতির নিয়োগ করে। এগুলি এমন বস্তু যা আপনার দোভাষীর শীর্ষ স্তরের দ্বারা কার্যকর করার জন্য পছন্দসই আইও অপারেশন ধারণ করে। অন্য যে কোনও স্তরে এগুলি কেবল সিস্টেমে অবজেক্ট।
ক্রিয়ামূলক প্রোগ্রামিং কি সুবিধা দেয়? ক্রিয়ামূলক প্রোগ্রামিং বাগগুলির জন্য কম সম্ভাবনার সাথে কোডিং করতে দেয় কারণ প্রতিটি উপাদান সম্পূর্ণ বিচ্ছিন্ন। এছাড়াও, পুনরাবৃত্তি এবং প্রথম শ্রেণির ফাংশনগুলি ব্যবহার করে সঠিকতার সহজ প্রমাণগুলির জন্য অনুমতি দেয় যা সাধারণত কোডটির কাঠামোকে মিরর করে।
আমি মনে করি না যে বেশিরভাগ বাস্তববাদী লোকেরা মনে করে যে কার্যকরী প্রোগ্রামিংটি ধরা পড়বে (ওওর মতো মূল দৃষ্টান্ত হয়ে উঠবে)। সর্বোপরি, বেশিরভাগ ব্যবসায়ের সমস্যাগুলি গণিতের সমস্যাগুলি নয় তবে লোকেদের চারপাশে স্থানান্তরিত করতে এবং বিভিন্ন উপায়ে প্রদর্শন করার জন্য লোমযুক্ত আবশ্যকীয় নিয়ম, যার অর্থ এটি খাঁটি কার্যকরী প্রোগ্রামিং দৃষ্টান্তের জন্য উপযুক্ত নয় (মোনাডের শেখার বক্ররেখা ওও ছাড়িয়ে গেছে))
OTOH, ক্রিয়ামূলক প্রোগ্রামিং যা প্রোগ্রামিংকে মজাদার করে তোলে। এটি আপনাকে মহাবিশ্বের অন্তর্নিহিত গণিতের সংক্ষিপ্ত প্রকাশের অন্তর্নিহিত, কালজয়ী সৌন্দর্যের প্রশংসা করে তোলে। লোকেরা বলে যে ফাংশনাল প্রোগ্রামিং শেখা আপনাকে আরও উন্নত প্রোগ্রামার করে তুলবে। এটি অবশ্যই অত্যন্ত সাবজেক্টিভ। আমি ব্যক্তিগতভাবে এটি সম্পূর্ণ সত্য বলে মনে করি না।
এটি আপনাকে আরও ভাল সংবেদনশীল সত্তা করে তোলে।
আমার অবশ্যই ঘন হওয়া উচিত, তবে আমি এখনও এটি পাই না। এফ # এর মতো কার্যকরী ভাষায় ছোট অ্যাপের লিখিত কোনও বাস্তব উদাহরণ রয়েছে যেখানে আপনি উত্স কোডটি দেখতে পারেন এবং দেখতে পারেন যে, সি # এর চেয়ে এই জাতীয় পদ্ধতির ব্যবহার কীভাবে এবং কেন ভাল হয়েছিল?
আমি উল্লেখ করতে পারি যে আপনি কার্যকরী ভাষাগুলি সম্পর্কে যা কিছু বলেছেন, বেশিরভাগ লোক প্রায় 20 বছর আগে অবজেক্ট-ভিত্তিক ল্যাঙ্গুয়েজ সম্পর্কে বলছিলেন। পিছনে তখন ওও সম্পর্কে শুনতে খুব সাধারণ ছিল:
* The average corporate programmer, e.g. most of the people I work with, will not understand it and most work environments will not let you program in it
* It's not really taught at universities (or is it nowadays?)
* Most applications are simple enough to be solved in normal IMPERATIVE ways
কোথাও থেকে পরিবর্তন আসতে হবে। পূর্বের প্রযুক্তিগুলিতে প্রশিক্ষণপ্রাপ্ত লোকেরা মতামত নেওয়া উচিত যে পরিবর্তন প্রয়োজন হয় না তা বিবেচনা না করেই একটি অর্থবহ এবং গুরুত্বপূর্ণ পরিবর্তন নিজেকে ঘটায় make আপনি কি মনে করেন যে সেই সময়ে যে সমস্ত লোক এর বিরুদ্ধে ছিল তারা সত্ত্বেও ওওতে পরিবর্তনটি ভাল হয়েছিল?
মাইক্রোসফ্ট এটি চাপ দিচ্ছে বলে এফ # ধরতে পারে।
প্রো:
বিরূদ্ধে:
সুতরাং, আমি গুরুত্বপূর্ণ হয়ে ওঠার জন্য 50 # 50 টি সুযোগ দিচ্ছি। অন্যান্য কার্যকরী ভাষাগুলি অদূর ভবিষ্যতে এটি তৈরি করতে যাচ্ছে না।
আমি মনে করি এর একটি কারণ হ'ল কিছু লোক মনে করেন যে কোনও ভাষা গৃহীত হবে কিনা তার সবচেয়ে গুরুত্বপূর্ণ অংশটি ভাষা কতটা ভাল । দুর্ভাগ্যক্রমে, বিষয়গুলি খুব কমই খুব সহজ। উদাহরণস্বরূপ, আমি যুক্তি দেব যে পাইথনের গ্রহণযোগ্যতার পিছনে বৃহত্তম ফ্যাক্টরটি ভাষা নিজেই নয় (যদিও এটি রয়েছে অত্যন্ত গুরুত্বপূর্ণ)। পাইথন এত জনপ্রিয় হওয়ার সবচেয়ে বড় কারণ হ'ল তার বিশাল স্ট্যান্ডার্ড লাইব্রেরি এবং তৃতীয় পক্ষের লাইব্রেরির এমনকি আরও বড় সম্প্রদায়।
ক্লোজার বা এফ # এর মতো ভাষাগুলি JVM / সিএলআর ভিত্তিতে নির্মিত তা বিবেচনা করে এই নিয়মের ব্যতিক্রম হতে পারে। ফলস্বরূপ, তাদের কাছে আমার কোনও উত্তর নেই।
[আপনার পছন্দসই ভাষা, দৃষ্টান্ত ইত্যাদি sertোকান] এখানে বেশিরভাগ অ্যাপ্লিকেশন সমাধান করা যায়।
যদিও এটি সত্য, বিভিন্ন সমস্যা বিভিন্ন সমস্যা সমাধানে ব্যবহার করা যেতে পারে। কার্যকরী কেবলমাত্র একটি উচ্চ (উচ্চতর?) স্তরের বিমূর্ততা দেয় যা সঠিকভাবে ব্যবহৃত হলে আমাদের কাজগুলি আরও কার্যকরভাবে করতে দেয়।
আমার কাছে মনে হয় যে সেই লোকেরা যারা স্নাতক হিসাবে কখনও লিপ্প বা স্কিম শিখেনি তারা এখন এটি আবিষ্কার করছে। এই ক্ষেত্রের অনেক কিছুর মতোই হাইপ এবং উচ্চ প্রত্যাশা তৈরি করার প্রবণতা রয়েছে ...
এটা পাস হবে।
ফাংশনাল প্রোগ্রামিং দুর্দান্ত। তবে এটি বিশ্বকে দখল করবে না। সি, সি ++, জাভা, সি # ইত্যাদি আরও প্রায় থাকবে।
এর মাধ্যমে আমার কী হবে তা হ'ল আরও ক্রস-ল্যাঙ্গুয়েজ ক্ষমতা - উদাহরণস্বরূপ একটি কার্যকরী ভাষায় জিনিসগুলি বাস্তবায়ন করা এবং তারপরে অন্যান্য ভাষায় সেই জিনিসটিতে অ্যাক্সেস দেওয়া।
অ্যাপিক গেমসের টিম সুইনি রচিত "দ্য নেক্সট মেইনস্ট্রিম প্রোগ্রামিং ল্যাঙ্গুয়েজ: একটি গেম ডেভেলপারের দৃষ্টিভঙ্গি" পড়ার সময় আমার প্রথম চিন্তা ছিল - আমি হাস্কেল শিখতে পেলাম।
কিছুক্ষণের জন্য জিনিসগুলি কার্যকরী দিকে এগিয়ে চলেছে। বিগত কয়েক বছরের দু'টি নতুন নতুন বাচ্চা, রুবি এবং পাইথন উভয়ই তাদের পূর্ববর্তী ভাষার তুলনায় কার্যকরী ভাষার কাছাকাছি ছিল - এতটাই যে কিছু লিস্পার একটি বা অন্যটিকে "যথেষ্ট কাছাকাছি" হিসাবে সমর্থন করতে শুরু করেছে।
এবং ব্যাপকভাবে সমান্তরাল হার্ডওয়্যার সকলের উপর বিবর্তনমূলক চাপ তৈরি করে - এবং কার্যকরী ভাষাগুলি পরিবর্তনের মোকাবেলায় সবচেয়ে ভাল জায়গায় - এটি একবারে ভাবা উচিত নয় যে হাস্কেল বা এফ # পরের বড় জিনিস হবে।
আপনি কি ইদানীং প্রোগ্রামিং ভাষার বিবর্তন অনুসরণ করছেন? সমস্ত মূলধারার প্রোগ্রামিং ভাষার প্রতিটি নতুন রিলিজ কার্যকরী প্রোগ্রামিং থেকে আরও বেশি বৈশিষ্ট্য ধার করে বলে মনে হয়।
বন্ধ, বেনামে ফাংশন, পাসিং এবং ফাংশনগুলি মান হিসাবে বহিরাগত বৈশিষ্ট্য হিসাবে ব্যবহৃত হয় কেবলমাত্র লিস্প এবং এমএল হ্যাকারদের কাছে পরিচিত। তবে ধীরে ধীরে, সি #, ডেলফি, পাইথন, পার্ল, জাভাস্ক্রিপ্ট বন্ধ হওয়ার পক্ষে সমর্থন যোগ করেছে। বন্ধ হওয়া ছাড়া কোনও আপ এবং আসন্ন ভাষার পক্ষে গুরুত্ব সহকারে নেওয়া সম্ভব নয়।
বেশ কয়েকটি ভাষায় উল্লেখযোগ্যভাবে পাইথন, সি # এবং রুবি তালিকার বোধগম্যতা এবং তালিকার জেনারেটরের জন্য স্থানীয় সমর্থন রয়েছে support
এমএল 1973 সালে জেনেরিক প্রোগ্রামিংয়ের সূচনা করেছিল, তবে জেনেরিকদের জন্য সমর্থন ("প্যারামেট্রিক পলিমারফিজম") গত 5 বছর বা তার পরে কেবল শিল্পের মান হিসাবে পরিণত হয়েছে। যদি আমি সঠিকভাবে মনে রাখি, ফোর্টরান ২০০৩ সালে জেনারিকদের সমর্থন করেছিল, তারপরে জাভা 2004, ২০০৫ সালে সি #, ২০০৮ সালে ডেলফি I ।)
প্রোগ্রামারদের কাছে এই বৈশিষ্ট্যগুলি কী আবেদন করে? এটি পরিষ্কারভাবে স্পষ্ট হওয়া উচিত: এটি প্রোগ্রামারদের সংক্ষিপ্ত কোড লিখতে সহায়তা করে । ভবিষ্যতে সমস্ত ভাষাগুলি প্রতিযোগিতামূলক থাকতে চাইলে - সর্বনিম্ন - ক্লোজার সমর্থন করতে চলেছে। এই ক্ষেত্রে, কার্যকরী প্রোগ্রামিং ইতিমধ্যে মূলধারায় রয়েছে।
বেশিরভাগ অ্যাপ্লিকেশনগুলি সাধারণ ওও উপায়ে সমাধান করার জন্য যথেষ্ট সহজ
কে বলে সরল জিনিসগুলির জন্যও ফাংশনাল প্রোগ্রামিং ব্যবহার করতে পারবেন না? প্রতিটি কার্যকরী প্রোগ্রামের সংকলক, উপপাদ্য প্রবাদ বা বৃহত্তর সমান্তরাল টেলিযোগযোগ স্যুইচ হওয়া দরকার না। আমি আমার আরও জটিল প্রকল্পগুলি ছাড়াও অ্যাডহক থ্রোওয়ে স্ক্রিপ্টগুলির জন্য নিয়মিত F # ব্যবহার করি।
এটি আকর্ষণীয় কারণ এটি জটিলতা নিয়ন্ত্রণের জন্য সর্বোত্তম সরঞ্জাম। দেখুন:
- সিমোন পিটন-জোনসের 109-116 এর স্লাইডগুলি "হাস্কেলের একটি স্বাদ"
- "টিম সুইউনি রচিত পরবর্তী মূলধারার প্রোগ্রামিং ভাষা: একটি গেম ডেভেলপারের দৃষ্টিভঙ্গি"
আমি প্রথম বিষয়টির সাথে একমত, তবে সময় বদলে যায়। কর্পোরেশনগুলি তারা দেরি করে গ্রহণকারী হওয়া সত্ত্বেও, প্রতিক্রিয়া জানাবে, যদি তারা দেখে যে কোনও সুবিধা পাওয়ার দরকার আছে। জীবন গতিশীল।
তারা 90 এর দশকের শেষদিকে স্ট্যানফোর্ডে হাস্কেল এবং এমএল পড়াতেন। আমি নিশ্চিত যে কার্নেগি মেলন, এমআইটি, স্ট্যানফোর্ড এবং অন্যান্য ভাল স্কুলগুলির মতো জায়গা এটি শিক্ষার্থীদের কাছে উপস্থাপন করছে।
আমি সম্মত হই যে বেশিরভাগ "ওয়েবে রিলেশনাল ডেটাবেসগুলি" অ্যাপ্লিকেশনগুলি সেই শিরাতে দীর্ঘ সময় অবিরত থাকবে। জাভা ইই,। নেট, আরআর এবং পিএইচপি এই সমস্যার জন্য বেশ কয়েকটি ভাল সমাধান তৈরি করেছে।
আপনি গুরুত্বপূর্ণ কিছুটিকে আঘাত করেছেন: এটি এমন সমস্যা হতে পারে যা অন্য উপায় দ্বারা সহজেই সমাধান করা যায় না যা কার্যকরী প্রোগ্রামিংকে উত্সাহিত করবে। সেটা কি হবে?
বিশাল মাল্টিকোর হার্ডওয়্যার এবং ক্লাউড কম্পিউটিং কি তাদের সাথে চাপ দেবে?
কারণ এফপির উত্পাদনশীলতা, নির্ভরযোগ্যতা এবং রক্ষণাবেক্ষণের ক্ষেত্রে উল্লেখযোগ্য সুবিধা রয়েছে। বহু-কোর একটি হত্যাকারী অ্যাপ্লিকেশন হতে পারে যা অবশেষে বড় বড় সংখ্যক উত্তরাধিকারের কোড থাকা সত্ত্বেও বড় কর্পোরেশনগুলিকে স্যুইচ করতে আসে F তদুপরি, সি # এর মতো বড় বাণিজ্যিক ভাষাগুলিও অনেকগুলি মূল উদ্বেগের ফলস্বরূপ একটি স্বতন্ত্র কার্যকরী স্বাদ গ্রহণ করছে - পার্শ্ব প্রতিক্রিয়াগুলি কেবল সমঝোতা এবং সমান্তরালতা সঙ্গে ভাল ফিট না।
"সাধারণ" প্রোগ্রামাররা এটি বুঝতে পারবে না বলে আমি সম্মত নই। তারা, যেমন তারা অবশেষে ওওপি বুঝতে পেরেছিল (যা ঠিক তেমন রহস্যময় এবং উদ্ভট, যদি না হয় তবে)।
এছাড়াও, বেশিরভাগ বিশ্ববিদ্যালয়গুলি এফপি শেখায়, অনেকে এমনকি এটি প্রথম প্রোগ্রামিং কোর্স হিসাবে পড়ায়।
বাহ - এটি একটি আকর্ষণীয় আলোচনা। এ সম্পর্কে আমার নিজস্ব ধারণা:
এফপি কিছু কাজ তুলনামূলকভাবে সহজ করে তোলে (না-এফপি ভাষার তুলনায়)। কোনও-এফপি ভাষা ইতিমধ্যে এফপি থেকে ধারণা নেওয়া শুরু করছে না, তাই আমি সন্দেহ করি যে এই ধারাটি অব্যাহত থাকবে এবং আমরা আরও সংহতকরণ দেখতে পাব যা লোকদের এফপিতে ঝাঁপিয়ে পড়া আরও সহজ করতে সহায়তা করবে।
আমি জানি না এটি কার্যকর হবে কি না, তবে আমার তদন্ত থেকে জানা যায় যে একটি কার্যকরী ভাষা প্রায় অবশ্যই শেখার জন্য মূল্যবান, এবং আপনাকে আরও উন্নত প্রোগ্রামার করে তুলবে। কেবল রেফারেন্সিয়াল স্বচ্ছতা বোঝার ফলে অনেকগুলি নকশার সিদ্ধান্ত এত সহজ হয় - এবং ফলস্বরূপ প্রোগ্রামগুলি সম্পর্কে বিতর্ক করা খুব সহজ। মূলত, আপনি যদি কোনও সমস্যার মধ্যে চলে যান তবে এটি কেবলমাত্র একটি একক ক্রিয়াকলাপের আউটপুট নিয়ে সমস্যা হতে পারে, বরং একটি অসামঞ্জস্যপূর্ণ অবস্থার সমস্যা থেকে, যা শত শত শ্রেণি / পদ্ধতি / ক্রিয়াকলাপের কারনেই হতে পারে পার্শ্ব প্রতিক্রিয়া সহ একটি প্রভাবশালী ভাষায়।
এফপির রাজ্যহীন প্রকৃতি ওয়েবের রাজ্যহীন প্রকৃতির কাছে আরও স্বাভাবিকভাবে ম্যাপ দেয় এবং এইভাবে কার্যকরী ভাষাগুলি আরও মার্জিত, বিশ্রামযুক্ত ওয়েব অ্যাপগুলিতে আরও সহজে নিজেকে ধার দেয়। জাভা এবং .NET ফ্রেমওয়ার্কগুলির সাথে বিপরীতে যেগুলি অ্যাপ্লিকেশনের অবস্থা বজায় রাখতে ভিউস্টেট এবং সেশন কীগুলির মতো মারাত্মক কুৎসিত হ্যাকগুলি অবলম্বন করা দরকার এবং ওয়েবের মতো মূলত রাজ্যহীন কার্যকরী প্ল্যাটফর্মে একটি রাষ্ট্রীয় অপরিহার্য ভাষার অ্যাবস্ট্রাকশন বজায় রাখা (মাঝে মাঝে বেশ ফাঁসিয়ে দেওয়া) অবলম্বন বজায় রাখতে হবে।
এবং এছাড়াও, আপনার প্রয়োগ যত বেশি রাষ্ট্রহীন, তত সহজেই এটি নিজেকে সমান্তরাল প্রক্রিয়াকরণে ndণ দিতে পারে। ওয়েবের জন্য মারাত্মকভাবে গুরুত্বপূর্ণ, যদি আপনার ওয়েবসাইটটি জনপ্রিয় হয়ে ওঠে। আরও ভাল পারফরম্যান্স পেতে কোনও সাইটে আরও বেশি হার্ডওয়্যার যুক্ত করা সর্বদা সোজা নয়।
আমার ধারণা এটি এখনই ধরা দেবে যে মাইক্রোসফ্ট এটিকে আরও মূলধারায় ফেলেছে। আমার জন্য এটি আকর্ষণীয় কারণ এটি আমাদের জন্য কী করতে পারে, কারণ এটি একটি নতুন চ্যালেঞ্জ এবং ভবিষ্যতের জন্য কাজের সুযোগগুলির কারণে।
একবার আয়ত্ত করা এটি প্রোগ্রামার হিসাবে আমাদের আরও উত্পাদনশীল করে তুলতে আরও সহায়তা করার জন্য আরেকটি সরঞ্জাম হবে।
আলোচনায় একটি বিষয় মিস করা হয়েছে যে সমসাময়িক এফপি ভাষায় সেরা টাইপ সিস্টেমগুলি পাওয়া যায়। আরও কী, সংকলকগণ স্বয়ংক্রিয়ভাবে সমস্ত (বা সর্বাধিক সর্বাধিক) প্রকারগুলি নির্ধারণ করতে পারে।
এটি আকর্ষণীয় যে জাভা প্রোগ্রামিং করার সময় টাইপের নাম লেখার জন্য অর্ধেক সময় ব্যয় করে, তবে জাভা খুব বেশি নিরাপদ নয়। আপনি কখনই হাস্কেল প্রোগ্রামে টাইপ লিখতে পারবেন না (এক ধরণের সংকলক পরীক্ষিত ডকুমেন্টেশন বাদে) এবং কোডটি 100% টাইপ নিরাপদ।
অন্যান্য উত্তরের পাশাপাশি, খাঁটি কার্যকরী শর্তে সমাধান oneালাই সমস্যাটিকে আরও ভালভাবে বুঝতে বাধ্য করে। বিপরীতে, একটি কার্যকরী শৈলীতে চিন্তাভাবনা আরও ভাল * সমস্যা সমাধানের দক্ষতা বিকাশ করবে।
* হয় কার্যকরী দৃষ্টান্ত আরও ভাল কারণ বা এটি আক্রমণে অতিরিক্ত কোণ বহন করবে।