প্রথম প্রোগ্রামিং কোর্সের জন্য ভাষা বাছাইয়ের মানদণ্ড


35

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

আমার প্রশ্নটি হ'ল:

কোন শিক্ষাব্রতী প্রথম বছরের বিশ্ববিদ্যালয় প্রোগ্রামিং কোর্সের ভিত্তি হিসাবে প্রোগ্রামিং ভাষা নির্বাচন করতে কোন উদ্দেশ্য মানদণ্ড ব্যবহার করতে পারেন? এই মানদণ্ডের ভিত্তি কী?

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


এই প্রশ্নটি অন্য একটি প্রশ্ন দ্বারা অনুপ্রাণিত হয়েছিল যা অফ-টপিক হিসাবে বিবেচিত হয়েছিল: https://cs.stackexchange.com/questions/1946/critedia-for-choosing-a-first-programming-language


1
এই প্রশ্নটি অন- বা অফ-টপিকটি সম্পর্কে মেটা থ্রেড খোলা হয়েছে: meta.cs.stackexchange.com/questions/362/…
ডেভ ক্লার্ক

7
<গ্রাফিক্স পপকর্ন> অটো নিউজবাউয়ারকে চিত্রিত করতে : মানুষের কাছে পরিচিত কোনও প্রথম প্রোগ্রামিং ভাষা সকলকে নষ্ট করতে সক্ষম নয়।
জেফই

3
@ রাফেল: আমি মনে করি ডিজকস্ট্রার প্রতিক্রিয়া সম্ভবত " মানুষের কাছে পরিচিত প্রতিটি প্রোগ্রামিং ভাষা সকলকে নষ্ট করতে সক্ষম" "
জেফই

2
@ এডিএ-ক্য্যামোর্ট-ওরা-ওয়াই, হ্যাঁ, তাদের বেশ কয়েকটি প্রোগ্রামিং প্যারাডিজমের সংস্পর্শে আসা উচিত। না, এটি প্রথম কোর্সে করা যায় না।
ভনব্র্যান্ড

3
আমাদের SMLকেবল কারণ ছিল যে কোনও শিক্ষার্থী হাতের আগে সেই ভাষা জানে না। এই কোর্সটি শুরু করতে প্রতিটি শিক্ষার্থী কমবেশি একই স্তরে সুষম হয়।
মার্কাস মালকুশ

উত্তর:


14

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

সংক্ষেপে, আমি বলতে পারি যে ভাষাটি আপনি যা করতে চান তা করা উচিত , সহজ এবং দ্ব্যর্থহীনভাবে একটি উপায় এবং আরও বেশি না

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

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

আমি যে বিষয়গুলি গুরুত্বপূর্ণ বলে মনে করি তা ইতিমধ্যে বলা বেশ কয়েকটি বিষয়ের সাথে ওভারল্যাপ হতে পারে তবে আমি বিশ্বাস করি যে বেশিরভাগটি নিম্নলিখিত চারটির একটির সাবসেট হয়ে উঠবেন:

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

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

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

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

আবার, কোনও ভাষা এই তালিকার সাথে কীভাবে ফিট করে আপনি কী শেখানোর চেষ্টা করছেন তার উপর এটি দৃ strongly়ভাবে নির্ভরশীল!


4
ভিএইচডিএল এবং ভেরিলোগের মধ্যে প্রকৃতপক্ষে সার্কিট ডিজাইনের বিভাজন রয়েছে।
অবাক

@ ওভাকার: আঃ, বাজে। আমি আমার উত্তরে এটি ঠিক করব, এটি দেখানোর জন্য ধন্যবাদ!
পেড্রো

ওহে, এটি পড়ুন এবং এটি আমার প্রভাষকদের মধ্যে একটি বলে মনে করলেন। ওবেরনের জন্য +1, যতক্ষণ ব্যবহারের ছোট হাতের কীওয়ার্ড স্যুইচ স্বয়ংক্রিয়ভাবে সক্ষম হয়; তাই লিখতে বেদনাদায়ক WHILE expr DO stmts ENDইত্যাদি
ক্যালাম রজার্স

3
"আপনার কোর্সের লক্ষ্যগুলি কী?" এবং একটি অতিরিক্ত নোট, এটির বানান না থাকলেও সর্বাধিক সাধারণ লক্ষ্যগুলির মধ্যে একটি হ'ল অন্যান্য বিষয়গুলির জন্য বুনিয়াদি দেওয়া (কোর্স এবং ইন্টার্নশীপ) যা পূর্বশর্ত হিসাবে প্রোগ্রামিং রয়েছে।
এপ্রোগ্রামার

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

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

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

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


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

3
@ রাফেল: public static void main()জাভাতে এড়ানো অসম্ভব , যা কিছু শ্রেণির প্রসঙ্গে থাকতে হবে। এটি প্রথম ভাষা হিসাবে জাভাটিকে আদর্শের চেয়ে কম করে তোলে তবে অবশ্যই বাধা খুব বেশি নয়।
ডেভ ক্লার্ক

একটি ভাল আইডিই public static void main()খুব দীর্ঘ সময়ের জন্য মুলতবি করতে পারে । ব্লুজে একটি আইডিইর একটি ভাল উদাহরণ যা শিক্ষার্থীদের যাতে mainকোথাও একক ছাড়াই প্রোগ্রাম লিখতে দেয় ।
ব্যারি ব্রাউন

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

11

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

আমি @ কাভেহের এই ধারণার সাথে একমত নই যে শিল্পের প্রাসঙ্গিকতা গুরুত্বপূর্ণ; এটি একটি বোনাস হতে পারে, তবে এটি এখানে সামান্য গুরুত্বপূর্ণ। সিএস নীতিগুলির একটি শক্ত ভিত্তি সহ, পরবর্তী কোর্সে একটি "শিল্প" ভাষা শেখা তুলনামূলকভাবে সহজ হবে।

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


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

@ কাভেঃ এটি আমার কাছে কারিগরি বিশ্ববিদ্যালয়ের পাঠ্যক্রমের মতো মনে হচ্ছে।
রাফেল

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

3
@ কাভেঃ রিয়েল ওয়ার্ল্ডে জিনিসগুলি অর্জনের জন্য ডিজাইন করা ভাষাগুলি ধারণাগুলি শেখানোর বা দক্ষতার বিকাশের জন্য প্রয়োজনীয়ভাবে অনুকূল নয়। লক্ষ্যগুলি খুব আলাদা।
জেফই

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

8

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

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

... তবে এটি কেবল সাধারণ জ্ঞান।


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

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

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

@ ডেভ ক্লার্ক: বাহ আমি সে সম্পর্কে শুনিনি। খুব সুন্দর! দুর্ভাগ্যক্রমে যদিও এটি হাস্কেল শেখার জন্য খুব কার্যকর, এটি যে সমস্যাটিকে অন্য ভাষাগুলি শেখার ক্ষেত্রে সহায়তা করে না সেটির সমাধান করে না।
jmad

4
@ বেন: আমার অনুভূতি হ'ল ম্যানুয়াল মেমরি ম্যানেজমেন্ট হ'ল এমন একটি বিষয় যা আজকাল কিছু ভাষার জন্য নির্দিষ্ট (এবং আপনি এই নির্দিষ্ট ক্ষেত্রে শিখতে পারেন) প্রোগ্রামিংয়ের মৌলিক জিনিসের চেয়ে বেশি। আপনি যদি এর সাথে একমত না হন তবে আমার ধারণা এটি সি (বা সি ++) এর দিকে নির্দেশ করে না।
jmad

8

প্রথম প্রোগ্রামিং ভাষা চয়ন করার সময়, অনেকগুলি বিষয় বিবেচনা করা দরকার। এগুলির অনেকগুলি উপরের উত্তরে বিবেচনা করা হয়েছে। আমি এটিকে আরও 3 টি অন্তর্ভুক্ত করি কারণ এগুলি বন্ধ প্রশ্নের (আমার https://cs.stackexchange.com/questions/1946/criteria-for-choosing-a-first-programming-language ) উত্তরগুলির অংশ ছিল যা মূলত এই প্রশ্নটিকে অনুপ্রাণিত করেছিল । বন্ধ উত্তরগুলি মুছে ফেলার বর্তমান নীতিমালার ভিত্তিতে আমি আমার উত্তর এখানে (এবং এটি সংশোধিত) অনুলিপি করেছি।

উদাহরণস্বরূপ কয়েকটি প্রোগ্রামিং ভাষা ব্যবহার করে এখানে তিনটি বিষয় বিবেচনা করতে হবে।

ছোট মধ্যে বিশাল বনাম প্রোগ্রামিং মধ্যে প্রোগ্রামিং

প্রোগ্রামে প্রথম শেখার সময়, বৃহত্তর প্রোগ্রামিংয়ে সহায়তা করার প্রক্রিয়া শিখতে যাওয়ার আগে, ছোটটিতে কীভাবে প্রোগ্রাম করা যায় তা শিখতে হবে ।

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

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

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

প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন সি ++ এর বৃহত্তর প্রোগ্রামিংয়ে সহায়তা করার জন্য অনেকগুলি বৈশিষ্ট্য রয়েছে তবে খুব সহজে বসে বসে খুব সাধারণ প্রোগ্রামটি লেখা শুরু করা আরও কঠিন। জাভাও একই রকম।

অন্যদিকে পাইথন, রুবি, স্কিম বা হাস্কেলের মতো একটি ভাষা সরাসরি কোনও প্রোগ্রাম লিখতে অনেক সহজ করে তোলে।

উচ্চ-স্তরের বনাম নিম্ন-স্তরের

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

পাইথনের মতো একটি উচ্চ-স্তরের ভাষা সমস্যা ডোমেনের ক্ষেত্রে ধারণাটিকে আরও সরাসরি প্রকাশ করা সহজ করে তোলে।

স্ট্যাটিক্যাললি টাইপড বনাম ডায়নামিকালি টাইপড

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

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

সি এর মতো ভাষার দুর্বল টাইপিং রয়েছে, যার অর্থ এই যে সংকলকটি কিছু ত্রুটি নিয়ে সহায়তা করেছে, রান-টাইম অন্যকে ঘটে যাওয়া ফাঁদে ফেলতে ব্যর্থ হয়েছে, যেমন অবৈধ মেমরির প্রবেশাধিকার। ফলস্বরূপ, প্রোগ্রামারটিতে ফিরে আসা ত্রুটি বার্তাটি "প্রোগ্রাম ক্র্যাশ হয়েছে" এর অনুরূপ। একটি গতিশীল টাইপ করা ভাষা এই ত্রুটিগুলি ফাঁদে ফেলবে এবং তাদের আরও বোধগম্য ত্রুটি বার্তায় রূপান্তরিত করবে।

অন্যরা

অন্যান্য ভাষার ক্ষেত্রে বিভিন্ন বিবেচ্য বিষয়গুলি কার্যকর হতে পারে যেমন প্রোগ্রামিং পরিবেশের দ্বারা সরবরাহিত সমর্থন, উপলব্ধ এপিআই, বইয়ের মান এবং অনলাইন টিউটোরিয়াল ইত্যাদি etc.


আন্তরিকভাবে একমত।
ভনব্র্যান্ড

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

8

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

কিন্তু এখন মানদণ্ডের জন্য, স্বেচ্ছাসেবী ক্রমে।

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

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

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

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

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

উপলভ্যতা : আসলে এমন লোকেরা আছেন যারা মতলব বা ভিজ্যুয়াল সি ++ ব্যবহার করে শেখান। বিবেচনা করুন যে প্রত্যেকের কাছে লাইসেন্স বা মেশিন নেই যা প্রয়োজনীয় প্রোগ্রামগুলি চালাতে পারে। আপনার সম্ভবত নিখরচায় ভাষাগুলির পক্ষে হওয়া উচিত যা বিভিন্ন প্ল্যাটফর্মগুলিতে চলে।

পরিচ্ছন্নতা : আপনি সম্ভবত আপনার ছাত্রদের ভাবনাটিকে আকার দিতে চান। তারা যে ভাষা নিয়ে ম্যাসিয়ার করবে, মেসিয়ার তারা ভাববে; আমি কখনও কোর্সে পিএইচপি প্রস্তাব দেব না। সাধারণ গতিশীল ভাষার এখানে অসুবিধাগুলি রয়েছে: এগুলি কখনও কখনও খারাপ অভ্যাসের প্রচার করে, এমনকি মাঝে মাঝে প্রচার করে।

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


For example, if you want to discuss higher-order functions, you need a language where functions are values, such as functional languages or Scala. ... বা সি বা পাস্কাল, উভয় ফাংশন পয়েন্টার ছিল চিরকাল। ব্যবহারিকভাবে একমাত্র (মূলধারার) ভাষাটি এই মানদণ্ডটি জাভা হ'ল।
ম্যাসন হুইলারের

নবাবিদের বিভিন্ন সিনট্যাক্স এবং অন্তর্নিহিত ধারণাগুলির এক ঝাঁকুনি পড়ানোর চেষ্টা করা কেবল মস্তিষ্কের স্ক্র্যামব্লিং।
ভনব্র্যান্ড

6

আকর্ষণীয় প্রশ্ন; উদ্দেশ্যমূলক মানদণ্ডে আপনার জোর আমি পছন্দ করি। আমরা নতুন শিখতে চাই:

প্রোগ্রামিং ধারণা : প্রথম প্রোগ্রামিং ভাষা অবশ্যই সমর্থন করবে: ফাংশন কল, পুনরাবৃত্তি, পুনরাবৃত্তি

মৌলিক ধারণা : প্রথম প্রোগ্রামিংয়ের ভাষা অবশ্যই অ্যারেগুলিকে সমর্থন করবে (মেমরিটি কীভাবে সত্য কাজ করে এবং পয়েন্টার কীভাবে কাজ করে তার মৃদু পরিচয়ের প্রথম পদক্ষেপের জন্য)

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

পূর্ব-লিখিত গ্রন্থাগারগুলি বাছাইয়ের মতো জিনিসের জন্য বিদ্যমান () এবং কীভাবে সেগুলি ব্যবহার করবেন - অর্থাত, স্ক্র্যাচ থেকে সমস্ত কিছু লেখার প্রয়োজন নেই।

প্রথম ভাষার জন্য অন্যান্য মানদণ্ড :

ব্যাখ্যা করা (দ্রুত প্রতিক্রিয়া শেখার প্রক্রিয়াটিতে সহায়তা করে)।

একটি ইন্টারেক্টিভ পরিবেশ যা শিক্ষণ, পরীক্ষা এবং ডিবাগিংয়ের গতি বাড়ায়।

শিক্ষার্থীদের সেই ভাষায় পড়ার জন্য উচ্চ-মানের উত্স কোড উপলব্ধ

"পড়তে সহজ", "প্রাকৃতিক ভাষায় আগত সিনট্যাক্স" (সোর্সকোডটি পড়তে ও গ্রেড করা সহজ করার জন্য)

পোর্টেবল (ম্যাক ওএস, উইন্ডোজ, ইউনিক্সে চালিত হয়)। ভাষার কমপক্ষে একটি ফ্রি সফ্টওয়্যার বাস্তবায়ন।

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

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

দ্বিতীয় প্রোগ্রামিং ভাষার জন্য মানদণ্ড

স্টাফ আমরা শিক্ষার্থীরা শিখতে চাই, তবে সম্ভবত এটি দ্বিতীয় প্রোগ্রামিং ভাষার জন্য অপেক্ষা করতে পারে:

একটি "প্রাসঙ্গিক" ভাষা যা "খুব বেশি রহস্যজনক নয়"; কিছু "শিল্পে জনপ্রিয়"

জটিলতা তত্ত্ব: বর্তমান প্রযুক্তির সাথে অসম্ভব কাজগুলিকে কীভাবে সনাক্ত করা যায়।

উচ্চ স্তরের স্টাফ: কাজের জন্য সঠিক সরঞ্জামটি কীভাবে চয়ন করা যায় , কীভাবে একটি সংকলক, কাঠামো, অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং, ফাংশনাল প্রোগ্রামিং, লজিক প্রোগ্রামিং, সংকলক ডিজাইন, রচনা এবং পরিচালনা সংক্রান্ত কার্যাদি (লিস্প / এমএল অর্থে) ব্যবহার করতে হয়, একযোগে এবং বিতরণ প্রোগ্রামিং,

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

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

সুতরাং আমি আমার আগের অনানুষ্ঠানিক লিঙ্কটিতে আরও আনুষ্ঠানিক উদ্ধৃতি যুক্ত করছি , ন্যায্য ব্যবহার এবং অন্যান্য উইকি কপিরাইট ইস্যু মেনে চলার চেষ্টা করছি ।

এই উত্তরটি পোর্টল্যান্ড প্যাটার্ন রেপোজিটরিতে ফ্রেশম্যানের প্রথম ভাষার (অ্যানো 2011) সংক্ষিপ্তসার।

(আনোন ২০১১) অনেক বেনামে এবং অন্যান্য বিভিন্ন লেখক। "ফ্রেশম্যান্স প্রথম ভাষা"। পোর্টল্যান্ড প্যাটার্নের সংগ্রহস্থল। 27 সেপ্টেম্বর, 2011. http://c2.com/cgi/wiki?FreshmansFirstLanguage


আপনি কি মূল লেখকদের সাথে চেক করেছেন যে আপনি তাদের সামগ্রীগুলি পুনঃ উত্পাদন করতে পারবেন কিনা? উত্সটি একটি কর্পোরেট ওয়েবসাইট এবং আমি এই ঘোষণাটি খুঁজে পেলাম না যে সামগ্রীটি বিনামূল্যে ছিল, সুতরাং এটি কোনও আইনী পোস্ট নাও হতে পারে!
রাফেল

1
@ রাফেল উত্সটি একটি উইকি (যাতে সম্ভাব্য বিভিন্ন লেখক রয়েছে)। যদি এই উপাদানটির লেখক (কোনও সহ-লেখক) এটি এখানে অন্তর্ভুক্ত করতে না চান তবে তার উচিত [এই পৃষ্ঠার নীচে তালিকাভুক্ত যোগাযোগের ঠিকানা] (মেইলটো: টিম++@sackexchange.com) এ একটি ডিএমসিএ টেকডাউন নোটিশ পাঠানো উচিত । তদ্ব্যতীত, তথ্যটি কপিরাইটের আওতায় আসে না, কেবল এটি প্রকাশ করা হয়। কিছুটা রিফ্যাক্টরিং এবং রিমুভিংওয়ার্ডসআরটিওউইকিউইকিউইস্টাইল এই উত্তরটির উন্নতি করবে এবং কপিরাইট লঙ্ঘনের যে কোনও ঝুঁকি সরিয়ে ফেলবে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

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

5

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

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

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

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

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


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

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

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

5

সুতরাং, আমি সঙ্গে সঙ্গে আমার হাঁটু- ঝাঁকুনির প্রতিক্রিয়াটি বিতরণ করব, যার অর্থ প্রত্যেককে এসআইসিপি-র মাধ্যমে প্রোগ্রামিং শিখানো উচিত কারণ লিস্প হ'ল সঠিক বিষয় ing

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

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

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

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

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

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

আমি প্রস্তাব দেব যে রুবি (পাশাপাশি অন্য একটি পোস্ট দ্বারা সম্ভাব্য হিসাবে প্রস্তাবিত) প্রোগ্রামিং কোর্সে পরিচিতির জন্য একটি ভাষা ব্যবহার করার জন্য অনেক গুণকে উদাহরণ দিয়ে দেখায়।

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

যাইহোক, রুবিকে একটি প্রাথমিক ভূমিকা হিসাবে ন্যায্যতা ...

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

যাইহোক, আপনি অনেকগুলি দৃষ্টান্ত থেকে বহু ভাষা শেখার বিকল্প নেই, আপনি সেগুলি পেশাদারভাবে ব্যবহার করুন বা না করুন। মূলত, আমি মনে করি প্রত্যেককে সি এবং লিস্প ব্যবহার না করা উচিত, বুঝতে হবে । পরিচিতি সেমিস্টারের জন্য রুবি হ'ল সেরা সমঝোতা।

যাইহোক ... এটি আমার মার্কিন ডলার .02। আমি আপনাকে রুবি ব্যবহার করতে রাজি করার চেষ্টা করছি না, মনে রেখো ... কেবলমাত্র একটি অন্তর্ভুক্ত পাঠ্যক্রম শেখানোর জন্য কোনও ভাষা সন্ধানের জন্য এটি গুণের উদাহরণ হিসাবে ব্যবহার করছি as


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

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

3
আমি আরও বিশ্বাস করি যে পাইথন হ'ল নতুন বেসিক। তবে পাইথনের বিরুদ্ধে কেন এই যুক্তি ?
জেফই

1
@ রাফেল, পয়েন্টার কেবল তখনই শক্ত হয় যখন আপনি সি দিয়ে শুরু করেন যা আপনাকে কিছুটা পয়েন্টারের কাছে প্রকাশ করতে বাধ্য করে যখন যখন অনেকগুলি জিনিস নিষ্পত্তি না হয় এবং যেখানে অ্যারের সাথে তাদের একটি বিভ্রান্তিকর সম্পর্ক রয়েছে। আমি যখন পাস্কালকে স্ব-শিক্ষণ করতাম তখন পয়েন্টারগুলি আমার পক্ষে খুব কঠিন ছিল না। পয়েন্টারগুলি আমার শ্রেণীর লোকদের পক্ষে কঠিন ছিল না যারা তাদের আলগোল 68৮ এ পড়ানো হয়েছিল (তাদের নাম এখানে রেফারেন্স করা হয়েছে, তবে তারা জাভা এর মতোই অন্য নামে পয়েন্টারযুক্ত; অলগল hard৮ এ যা শক্ত তা স্বয়ংক্রিয় বিন্যাসের নিয়ম), পয়েন্টারগুলি সি ++ দিয়ে এমনকি কঠিন নয় যদি আপনি সি উপসেটটি শেখানোর মাধ্যমে শুরু না করেন।
এপ্রোগ্রামার 12

1
@ ডেভ ক্লার্ক: এটি হোয়াইট স্পেসে প্রবেশ করে, যা তাদের চেয়ে বেশি তৈরি করে।
রাফেল

5

আমার প্রথম প্রোগ্রামিংয়ের ভাষা ছিল একটি খেলনা সমাবেশের ভাষা। দ্বিতীয়টি ছিল ফোর্টরান। এর মধ্যে, আমাকে একটি "অ্যালগরিদম" স্বরলিপি শেখানো হয়েছিল, যা মোটামুটি আলগোল 60০। ছিল I আসলে, আমি আমার যা শিখিয়েছি তা বেশ নিখুঁত বলে মনে করি।

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

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

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


5

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

আমরা এই কারণে এটি পছন্দ।

  1. পাইথন কোনও ফ্রি-ফর্ম্যাট ভাষা নয়। এটি শিক্ষার্থীদের ইনডেন্টেশন ব্যবহার করে ব্লকগুলিতে তাদের কোড লিখতে বাধ্য করে। (একটি প্রযুক্তিগত নোট হিসাবে, আমরা set tabstop=4 set etবিরক্তিকর সমস্যাগুলি দূর করতে এবং কোড ইনডেন্টেশন লক্ষণীয় হতে পারে তবে কুৎসিত অত্যধিক অনুভূমিক প্রবাহের কারণ না ঘটানোর জন্য, ভিএম টেক্সট সম্পাদক ব্যবহার করি এবং [ ] .vimrc এ রাখি) আমাদের শিক্ষার্থীরা হোয়াইট স্পেস দ্বারা ডিলিট প্রোগ্রামগুলির শ্রেণিবদ্ধ কাঠামো দেখতে অভ্যস্ত হয়ে যায়। ফলস্বরূপ, তারা অন্যান্য ভাষায় প্রোগ্রাম করার সাথে তাদের ফর্ম্যাট করার অভ্যাসগুলি খুব ভাল থাকে।

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

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

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

  5. পাইথন নিখরচায় এবং সমস্ত বড় প্ল্যাটফর্মে চালিত হয়। আমাদের স্কুলটি হরেক রকম মেশিনের সাথে একটি বিজাতীয় ওএস পরিবেশ। সামঞ্জস্যতার মতো মাথাব্যথা নিয়ে আমাদের মাথা ঘামানোর দরকার নেই। এটি যে কোনও কম্পিউটারে চলবে।

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

পাইথন নিয়ে আমরা খুব খুশি হয়েছি।


1
স্বাগত! এটি একটি দুর্দান্ত কেস স্টাডি, তবে নির্বাচনের মানদণ্ডের পরে প্রশ্নের জবাব দিতে খুব সামান্যই কাজ করে, হ্যাঁ। আপনার আইটেমগুলি পিছন দিকে পড়া এটির মতো করে করতে পারে তবে আপনি এটি সেভাবে উদ্দেশ্যে করেছিলেন কিনা তা আমি নিশ্চিত নই।
রাফেল

কোনও নির্দিষ্ট আদেশের উদ্দেশ্য ছিল না। এটি একটি "এবং"।
ncmathsadist

3

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

( https://cs.stackexchange.com/questions/1946/critedia-for-choosing-a-first-programming-language/ থেকে স্থানান্তরিত উত্তর )


1

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


আমি মনে করি কিছু চমত্কার পোস্ট ইতিমধ্যে উপস্থিত রয়েছে, তবে আমি আমার নিজস্ব 2 সেন্ট যুক্ত করব।

কোন শিক্ষাব্রতী প্রথম বছরের বিশ্ববিদ্যালয় প্রোগ্রামিং কোর্সের ভিত্তি হিসাবে প্রোগ্রামিং ভাষা নির্বাচন করতে কোন উদ্দেশ্য মানদণ্ড ব্যবহার করতে পারেন?

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

কেন? কারণ এমনকি যখন আমরা পেড্রোর উত্তরে উল্লিখিত যুক্তিসঙ্গত মানদণ্ডটি দেখি , তবুও প্রত্যেকেরই কারও কারও মতামতের বিপরীতে কীভাবে "ধারণ করে" তার একটি বিষয়গত দৃষ্টিভঙ্গি থাকবে ।

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

এটি পরবর্তী প্রশ্নের দিকে নিয়ে যায়।

এই মানদণ্ডের ভিত্তি কী?

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

উদাহরণস্বরূপ, কেন না

  • দক্ষতা: মৃত্যুদন্ড কার্যকর করার সময় এবং মেমরির পদক্ষেপগুলি মাপা যায়।
  • আকার: সম্ভব কয়েকটি সংখ্যক সংরক্ষিত শব্দের সাহায্যে ভাষা শিখতে সহজ হবে।
  • বৈশিষ্ট্য সেট: সমর্থিত বৈশিষ্ট্যগুলির একটি বৃহত্তর সেট (যেমন ল্যাম্বডাস, জেনেরিকস, অবজেক্ট-ওরিয়েন্টেশন, অপারেটর ওভারলোডিং ইত্যাদি) আপনাকে ভাষা পরিবর্তন না করে আরও স্ক্র্যাপ একে ফিরে যেতে আরও ধারণা শেখানোর অনুমতি দেয়।
  • আন্তঃঅযুক্তিযোগ্যতা: এমন একটি ভাষা যা অন্য ভাষা এবং নেটিভ সিস্টেমগুলির সাথে কাজ করা সহজ করে (যেমন সি # বা পাইথন থেকে উইন 32 এপিআই) আরও দীর্ঘমেয়াদী সময় বিনিয়োগ ইত্যাদি হিসাবে উত্থাপিত হতে পারে

মুল বক্তব্যটি হ'ল, আমি যখন মূল্যায়নের বিভিন্ন মানদণ্ডের একটি আলাদা সেট নিয়ে এসেছি এবং এখনও যুক্তিসঙ্গত বলে বিবেচিত হতে পারি, আমরা এটি উদ্দেশ্যমূলকভাবে দাবি করতে পারি না অন্য কারও চেয়ে উচ্চতর / নিকৃষ্ট।

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

এর অর্থ এই নয় যে আপনার পছন্দগুলি ন্যায্য করার পক্ষে আপনার কাছে ভাল কারণ থাকতে পারে না , তবে দিনের শেষে, তারা কেবল আপনার পছন্দ।

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