কেন F # এর ইন্টারেক্টিভ মোড আছে তবে সি # নয়?


32

এফ # বাক্সের বাইরে একটি ইন্টারেক্টিভ আরপিএল নিয়ে আসে। সি # এর ধরণের কিছুই নেই এবং আসলে একটি সম্পূর্ণ প্রকল্প স্থাপন না করেই চারপাশে খেলা খুব কঠিন (যদিও লিনকিউপ্যাড কাজ করে এবং পাওয়ারশেলের মাধ্যমে এটি করাও সম্ভব)।

ভাষাগুলি সম্পর্কে মৌলিকভাবে আলাদা কিছু রয়েছে যা F # কে ইন্টারেক্টিভ কনসোল পেতে দেয় কিন্তু সি # এর জন্য এটি কার্যকর করা কঠিন করে তোলে?


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


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


আমার মনে আছে প্রকল্পটি রোজলিন ডেমো রিলিজ সার্কা 2012 এর ভিএস 2010 এর জন্য একটি রিপল ছিল
জেমস

@ ড্যানিয়েল হাকিমি: এই মন্তব্যের জন্য ধন্যবাদ, আমার এই ধারণাটি ছিল না যে এটি ভিএস ২০১৫ এ অন্তর্ভুক্ত ছিল, আমি কেবল ভেবেছিলাম আপনি ডিবাগ করার সময় তাত্ক্ষণিক উইন্ডোটি ব্যবহার করতে পারবেন। ভিএস ২০১৫-তে এখন সি # ইন্টারেক্টিভ সরঞ্জাম উইন্ডো রয়েছে, যা ভিউ -> অন্যান্য উইন্ডোজ -> সি # ইন্টারেক্টিভের মাধ্যমে অ্যাক্সেসযোগ্য, যা ডিবাগিং পরিবেশ থেকে পৃথক একটি সম্পূর্ণ রোজলিন ভিত্তিক আরপিএল বলে মনে হয়।
লু

উত্তর:


56

ভাষাগুলি সম্পর্কে মৌলিকভাবে আলাদা কিছু রয়েছে যা F # কে ইন্টারেক্টিভ কনসোল পেতে দেয় কিন্তু সি # এর জন্য এটি কার্যকর করা কঠিন করে তোলে?

হ্যাঁ।

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

প্রথমত, সেই ভাষাগুলির C # তে আপনি যেভাবে ভাবছেন সে সম্পর্কে সত্যই বিবৃতি নেই । বরং প্রায় প্রতিটি জিনিসই একটি অভিব্যক্তি যার একটি মূল্য রয়েছে , তাই মূল্যায়ন-এবং-তখন-প্রিন্ট-দ্য-মান প্রক্রিয়াটি প্রায় প্রতিটি পরিস্থিতিতেই উপলব্ধি করে।

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

তৃতীয়ত, আপনি এই ভাষাগুলিতে বেশিরভাগ কাজ "শীর্ষ স্তরের" হয়; সাধারণত কোনও শ্রেণিবদ্ধ "শ্রেণি" বা "নেমস্পেস" বা অন্যান্য প্রসঙ্গ নেই।

বিপরীতে, সি # পার্শ্ব প্রতিক্রিয়া তৈরি করে এমন বিবৃতিগুলির সাথে প্রোগ্রামিং নিয়ন্ত্রণ প্রবাহকে জোর দেয় এবং এই বিবৃতিগুলি সর্বদা একাধিক নেস্টেড পাত্রে থাকে - একটি নামস্থান, একটি শ্রেণি, একটি পদ্ধতি এবং এই জাতীয়।

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

কেন F # এর ইন্টারেক্টিভ মোড আছে তবে সি # নয়?

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

রোজলিন প্রকল্পের একটি সি # আরপিএল রয়েছে (এবং শেষ পর্যন্ত এটিতে একটি ভিবি আরইপিএলও থাকবে, তবে এটি এখনও প্রস্তুত নয়)) আপনি এটির কীভাবে পছন্দ করেন তা দেখতে আপনি এটির পূর্বরূপের ডাউনলোডটি ডাউনলোড করতে পারেন

http://www.microsoft.com/en-us/download/details.aspx?id=27746


7
পাইথনের একটি দুর্দান্ত আরপিএল রয়েছে এবং এর বিবৃতি, পার্শ্ব প্রতিক্রিয়া এবং নেমস্পেস রয়েছে। এবং তাই জাভাস্ক্রিপ্ট, বাশ ইত্যাদি করে Many
মিথ্যা রায়ান

2
স্বাগতম এরিক! আমি আশা করি আমরা আপনার কাছ থেকে আরও উত্তর দেখতে পাবেন।
সমাধান

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

মজাদার. আমি যুক্ত করব যে, ভিএস 2010 প্রকাশের পূর্বে .NET কাঠামোর জন্য এতগুলি সংকলক তৈরি করার অভিজ্ঞতা অর্জন করেছে (আমি চার সি #, চারটি ভিবি.এনইটি, দুটি জে # এবং দুটি সি ++ / সিএলআই গণনা করেছি) অবশ্যই কীভাবে ব্র্যান্ডের নতুন সংকলকটির জন্য প্রভাবিত হয়েছিল একটি ব্র্যান্ড নতুন। নেট ভাষা নির্মিত হয়েছিল। আমি নিশ্চিত যে এটি রজলিন-এস্কু স্টাইলে তৈরি করা হয়েছিল কীভাবে কম্পাইলার-হিসাবে-একটি পরিষেবা দৃশ্যে সক্ষম করতে হয় তার চারপাশে প্রচুর চিন্তাভাবনা, যা আপনি ভবিষ্যতের সমস্ত নেট। সংকলক এবং সংকলক সংশোধনগুলি বিকাশ করবেন বলে মনে হচ্ছে। আমার কাছে এটি মনে হয় যে সেই যুগে যে F # জন্মেছিল, এর সংকলকটি কীভাবে রচিত হয়েছিল তাতে অনিবার্যভাবে একটি ভূমিকা পালন করেছিল।
অ্যালন গুরালেক

দুর্দান্ত উত্তর। পাইথন বনাম সি # সম্পর্কে:}} বাক্য গঠনগুলি আরপিএলগুলির জন্য ভালভাবে বাঁকায় না, ইনডেন্টেশন ভিত্তিক ভাষাগুলির এখানে দুর্দান্ত অগ্রগতি রয়েছে। কখনই ভাবিনি আমি কখনই এটি ভাবব বা বলব: ইনডেন্টেশন সিনট্যাক্স}} সিনট্যাক্সের চেয়ে ভাল। আরপিএলগুলির পাশাপাশি কোডের পঠনযোগ্যতার জন্য। সুতরাং যতক্ষণ না কোনও সি # মেটাসি্যান্ট্যাক্স রয়েছে যা ent with এর সাথে ইনডেন্টেশন প্রতিস্থাপন করে, আরএইপিএল অভিজ্ঞতা কখনও এফ # বা পাইথনের উদাহরণের মতো মসৃণ হবে না।
সিটিকিড

22

মনো-র একটি সি # রেপেল রয়েছে: http://www.mono-project.com/CsharpRepl

এমনকি এটির একটি জিইউআই সংস্করণ রয়েছে যা আপনাকে সরাসরি গ্রাফিক্স অবজেক্টগুলি পরিচালনা করতে বা Gtk # উইজেট তৈরি করতে দেয়:

এখানে চিত্র বর্ণনা লিখুন


অবশ্যই, এবং এটি অবশ্যই সম্ভব, তবে সি # সম্পর্কে এমন কিছু আছে যা এটি আরও শক্ত করে?
জর্জ মাউয়ার

2

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

অন্যদিকে, ওওপি সম্প্রদায়তে এ জাতীয় কোনও বৈশিষ্ট্য সাধারণ ছিল না।

তবে সি, জাভা বা সি # সহ অনেকগুলি অ-কার্যকরী ভাষার জন্য REPL গুলি উপলব্ধ। এটি একটি পূর্ণাঙ্গ আরআরপিএল থেকে দূরে সরে যাওয়ার সময়, ভিএস-এ অটোস বৈশিষ্ট্যটি দেখায় যে এটি অবশ্যই সি # এর সাথে কার্যকর with


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

@ অ্যারন এলআইএসপি ১৯৫৯, কিন্তু এলপিএসটি এলআইএসপি মেশিনগুলিতে দায়ী করা হয়, ১৯3৩. ততক্ষণে ইতিমধ্যে প্রায় অনেকগুলি ভাষা ছিল। উল্লেখযোগ্যভাবে পাস্কাল এবং স্মলটালক।
স্প্র্যাগ

1

আমি বিশ্বাস করি সি # মূলত অবজেক্ট-ভিত্তিক। এমনকি সহজ কোড লিখতে, আপনার এটি একাধিক ক্লাসে বিভক্ত করা উচিত। আরপিএল ব্যবহার করতে আপনাকে প্রচুর কোড লিখতে হবে।

এফ # প্রাথমিকভাবে ক্রিয়াকলাপযুক্ত হওয়ার এই সমস্যাটি নেই এবং আপনি সহজেই সরাসরি জটিল ফ্যাসিশনে জটিল কোডও লিখতে পারেন এবং এটি পরে অবজেক্ট / সেকরে রূপান্তর করতে পারেন।

ক্লাস লেখার চেয়ে ফাংশনের একক লাইন লেখার চেয়ে অনেক সহজ, এটি বহু লাইনের বিস্তৃত।


1
REPL বিবৃতিতে বাহ্যিক ফাইলগুলিতে সংজ্ঞায়িত ফাংশন / শ্রেণি ব্যবহার থেকে আপনাকে বিরত করার কিছুই নেই। ওওপি আরও ভার্বোজ হ'ল সত্যই আরপিএল কার্যকারিতা বাধা দেয় না।
scrwtp

1
পাইথন, বেশ অবজেক্ট-ওরিয়েন্টেড এবং সিনট্যাক্টিক্যালি তাৎপর্যপূর্ণ লাইনব্রেকগুলি বৈশিষ্ট্যযুক্ত, এতে একটি শালীন আরপিএল রয়েছে। স্ক্যালাল, স্ট্যাটিকালি টাইপ করা, সংকলন করা, এবং বরং বস্তু-ভিত্তিক হচ্ছে, একটি রিপ্লে আছে। বিদ্যমান ক্লাস আমদানি করা এবং কিছু পদ্ধতি কল করার মতো সংক্ষিপ্ত জিনিসগুলির জন্য REPL সবচেয়ে দরকারী; ভাষার ভার্বোসটি কোনও উদ্বেগ নয়। যেমন এসকিউএল বেশ ভার্জোজ তবে প্রতিটি এসকিউএল ডাটাবেস একটি রেপিল (একটি 'ক্যোয়ারী সরঞ্জাম') নিয়ে আসে।
9000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.