কম্পিউটার প্রোগ্রামিংয়ে স্নাতক কোর্স পড়ানোর সময় আমার কোন ভাষাটি ব্যবহার করা উচিত?


22

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


9
@ কে ২০: আমি আশা করি আপনার পরামর্শটি জিভ-ইন-গাল ছিল; অন্যথায় এটি একাডেমিক নৈতিকতার গুরুতর লঙ্ঘন হতে চাই।
ক্রিশ্চান ক্লাসন

6
@ কে ২০: এগুলি সমস্ত বিষয়বস্তু নয়, তবে শিক্ষকের কাছে কিকব্যাকস (কোনও প্রকারের) ভিত্তিতে এবং শেখানো সামগ্রীর উপর ভিত্তি করে সফ্টওয়্যার নির্বাচন করা অবশ্যই অনৈতিক ical (কেবল এটি পরিষ্কার করার জন্য, এটি "স্ব্যাগ" আমার আপত্তি।) সাধারণত যা করা হয় তা হ'ল সংস্থাগুলি উল্লেখযোগ্যভাবে হ্রাস ব্যয়ে (বা বিনামূল্যে) সফ্টওয়্যার সরবরাহ করে।
ক্রিশ্চান ক্ল্যাসন

3
@ কে ২০: এছাড়াও, মনে রাখবেন যে সফ্টওয়্যার সংস্থার অনুপ্রেরণা সম্পূর্ণ পরার্থবাদী নয়: আপনার শিক্ষার্থীরা এখনই সফ্টওয়্যারটি ফ্রি পেতে পারেন, তবে সম্ভবত তাদের জীবনের কিছু সময় পরে তাদের সফ্টওয়্যারটি কিনতে হবে (বা একটি নতুন শিখতে হবে) সফটওয়্যার).
Wrzlprmft

3
@ কে ২০ মতলব এবং ম্যাথমেটিকাকে সত্যই গুরুতর বৈজ্ঞানিক গণনার জন্য খুব বেশি ব্যবহার করা হয় না। তারা ধারণাগুলি চেষ্টা করার জন্য আরও অনুসন্ধানের সরঞ্জাম। কোর্সের উদ্দেশ্যটি যদি বেসিক অ্যালগরিদম শেখানো হয় তবে এগুলি উপযুক্ত হতে পারে (বিশেষত মতলব) তবে এটি যদি সাধারণ প্রোগ্রামিং হয় তবে আপনি সি ++ এর পাইথনের মতো আরও সাধারণ প্রোগ্রামিং ভাষার সাথে যেতে চান।
ট্রুম্যান এলিস

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

উত্তর:


32

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

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

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

পাইথন

আমি সাধারণত প্রথম থেকেই নম্পি ব্যবহার করার পরামর্শ দিই এবং আমি এটি নিম্নলিখিত ব্যবহারের জন্য অনুমান করছি।

সুবিধাদি:

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

অসুবিধা:

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

সি / সি ++

সুবিধাদি:

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

অসুবিধা:

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

সি ++ ওভার সি (ক্লাস, টেম্পলেট) এর প্রধান সুবিধাগুলি আপনার কোর্সের জন্য প্রাসঙ্গিক হওয়া উচিত নয় এবং এটি কেবল বৃহত্তর প্রকল্পগুলির জন্য প্রাসঙ্গিক হয়ে উঠছে। সুতরাং আমি দু'জনের সি বেছে নেব, কারণ এটি আরও সংক্ষিপ্ত।

অন্যরা

অন্যান্য ভাষায় কিছু মন্তব্য:

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

¹ কমপক্ষে আমাদের গ্রুপে স্ট্যান্ডার্ড ওয়ার্কফ্লো।


খুব সুনির্দিষ্ট উত্তর
আফনান বশির

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

গণনা পদার্থবিজ্ঞানের অজগরটিতে রয়েছে একটি আশ্চর্যজনক বাস্তুতন্ত্র। নমুনা, ভিজ্যুয়ালাইজেশনের জন্য মৌলিক অবকাঠামো, মায়াভি, টিভিটিক সরবরাহের জন্য স্কিপি। পাইথন বৈজ্ঞানিক কম্পিউটিং সম্প্রদায়ে বেশ পরিপক্ক। আমি উত্পাদনে সি ++ ব্যবহার করি তবে এটি ব্যবহারে কোনও ব্যথা হ'ল তা নয়।
সাই ভেঙ্কট

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

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

22

2014 সালে, আমি পাইথন বলেছি। 2017 সালে, আমি আন্তরিকভাবে বিশ্বাস করি যে স্নাতকদের স্নাতক পড়ানোর ভাষাটি জুলিয়া is

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

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

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

আপনি যদি প্রোগ্রামিং ভাষা নিজেই অধ্যয়ন করতে চান তবে @code_loweredকী কী কমছে তা দেখার সাথে সংকলনটি কীভাবে কাজ করে তার পদক্ষেপগুলি শিখতে পারেন, টাইপড-এএসটি দিয়ে @code_typedএলএলভিএম আইআর সহ @code_llvmএবং শেষ পর্যন্ত এর সাথে দেশীয় সমাবেশ কোডটি দেখুন @code_native। ডায়নামিক ভেরিয়েবলের দাম কী এবং সঠিকভাবে "ভেরিয়েবল বক্সিং" কীভাবে কাজ করে তা দেখানোর জন্য এটি ব্যবহার করা যেতে পারে এবং এই ব্লগ পোস্টটি দেখায় যে কীভাবে সংকলক অপ্টিমাইজেশানগুলি ঘটতে পারে / কীভাবে সংঘটিত হতে পারে তা শেখানোর জন্য এই অন্তর্মুখী সরঞ্জামগুলি কীভাবে ব্যবহার করা যেতে পারে।

অন্বেষণ করার জন্য কেবল কম্পিউটার বিজ্ঞান এবং সফ্টওয়্যার ইঞ্জিনিয়ারিং ধারণা নেই, তবে সমৃদ্ধ গাণিতিক ধারণাও রয়েছে। যেহেতু জুলিয়ার মূল গ্রন্থাগারগুলি জেনেরিক টাইপিংয়ের কথা মাথায় রেখে লেখা হয়েছে তাই ম্যাট্রিক্স-মুক্ত অপারেটর তৈরি করা এবং এগুলি ব্যবহার করে জিএমআরএস সম্পাদন করতে IterativeSolvers.jl ব্যবহার করা তুচ্ছ। আপনি @whichকীভাবে কোনও কিছু বাস্তবায়িত হয়েছিল তা আপনাকে সঠিকভাবে দেখানোর মতো অন্তর্নির্ধারণের সরঞ্জামগুলি ব্যবহার করতে পারেন । উদাহরণস্বরূপ, কিভাবে \কাজ করে?

@which rand(10,10)\rand(10)
#\(A::AbstractArray{T,2} where T, B::Union{AbstractArray{T,1}, AbstractArray{T,2}} where T) in Base.LinAlg at linalg\generic.jl:805

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

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

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

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


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

1
সে কারণেই আমি জুলিয়া আগে বলতাম না, তবে এখন এটি খুব সাধারণ যে আপনি এটি ব্যবহার করতেও পারেন।
ক্রিস রাকাকাকাস

আমি মনে করি জুলিয়া এখনও খুব নতুন। শিল্পে, শিক্ষার্থীরা পাইথন, সি ++, (ইও) ম্যাটল্যাব এবং আর.কে জানার প্রত্যাশা করবে I শিক্ষার্থীরা অদূর ভবিষ্যতে আবার জুলিয়া ব্যবহার করার সম্ভাবনা নেই।
মতিন উলহাক

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

2

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

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

শুধু আমার দুই সেন্ট।


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

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

0

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

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


0

সংক্ষিপ্ত: বিবেচনা করুন যে বৈজ্ঞানিক কম্পিউটিং নিজেই জটিল itself আপনি কি সত্যিই চান প্রোগ্রামিং ভাষাটি কার্যকর হয়?

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

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

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

যদি আপনার কোর্সটি "এসসি'র পরিচিতি" হয় তবে আমি বিশ্বাস করি যে পাইথনের সর্বোত্তম ফলাফল / প্রচেষ্টা অনুপাত রয়েছে।

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


আপনার পিএস সম্পর্কিত: কেন কেবলমাত্র স্নাতকদের জন্য পারফরম্যান্স গুরুত্বপূর্ণ নয়? আন্ডারগ্রাজুয়েটদের জন্য কর্মক্ষেত্রগুলি কল্পনা করা সহজ যেখানে কর্মক্ষমতা গুরুত্বপূর্ণ, এগুলি ছাড়াও এটি সেই কাজগুলি নয় যা তারা বাস্তব জীবনের জন্য পারফরম্যান্স শিখছে। এছাড়াও, কম্পিউটারের গতি আরও বেশি হয়ে উঠতে পারে, তবে আমাদের প্রত্যাশাও।
Wrzlprmft

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