একজন হার্ড প্রোগ্রামার হিসাবে ম্যাটল্যাব এবং আরকে বাঁচা [বন্ধ]


25

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

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

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

আর আর ম্যাটল্যাবকে কেন আমার কাছে এত অদ্ভুত লাগছে? এমন কি অন্য কোনও বড় সমস্যা আছে যা আপনি লক্ষ্য করেছেন যে এই ভাষাগুলি হার্ডকোর প্রোগ্রামারগুলিতে অদ্ভুত হিসাবে আসতে পারে? যখন তাদের ব্যবহারের প্রয়োজন হয়, বেঁচে থাকার ভাল কিছু টিপস কি?

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


40
পাইথন এখন "হার্ডকোর" প্রোগ্রামারদের জন্য রচিত? কখন তা হবে?
TZHX

3
@ টিজেডএক্স: ঠিক আছে, তাই সম্ভবত হার্ডকোরটি ভুল শব্দ ছিল। এর চেয়ে ভাল একটি বাক্যটি হ'ল "যারা প্রোগ্রামার এবং প্রোগ্রামারগুলির মতো ভাবেন।"
dsimcha

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

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

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

উত্তর:


29

বৃহত্তর প্রোগ্রামিংয়ের জন্য প্রয়োজনীয় মানসিকতার সাথে ডোমেন নির্দিষ্ট ভাষাগুলির কাছে পৌঁছানো বা সাধারণ উদ্দেশ্যে ভাষাগুলির সাথে সাধারণ প্রোগ্রামিং প্রোগ্রামিং করার পক্ষে এটি সম্ভবত একটি খারাপ ধারণা। ডোমেন সুনির্দিষ্ট হওয়ার কারণে, তাদের সর্বাধিক দক্ষতার সাথে ব্যবহার করার জন্য সম্ভবত একটি স্টিপার লার্নিং কার্ভ এবং একটি অস্বস্তিকর মন প্রয়োজন। আমি মতলবতে লিখিত কোডটিকে অত্যন্ত অনুকূলিতকরণ, ডোমেন নির্দিষ্ট কোড (সমতুল্য, দক্ষ এবং পরিষ্কার ওপেনএল কোড লেখার সমতুল্য) লেখার সমতুল্য বিবেচনা করি। আমি এগুলিকে অন্যান্য ভাষায় ব্যবহার করার জন্য লাইব্রেরি হিসাবে আরও কার্যকর হওয়ার দিকে আরও বেশি এগিয়ে যেতে দেখেছি - উদাহরণস্বরূপ, http://www.mathworks.com/matlabcentral/fileexchange/12987-integrating-matlab-with-c

আমি বলব, এই ডিএসএল এর জন্য একই প্রক্রিয়াটি আপনি অন্য কারও জন্য ব্যবহার করুন:

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

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

25

আমি ম্যাটল্যাবের সাথে পরিচিত, তবে আর নয়, তা উল্লেখ করে এটির উপস্থাপনা করব R

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

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

ম্যাটল্যাব আপনার কাছে এতটা এলিয়েন কারণ এটি বিজ্ঞানীদের এবং ইঞ্জিনিয়ারদের ম্যাট্রিক্সের গুণ এবং ODE গণনাগুলি খুব দ্রুত করতে দেওয়ার জন্য ডিজাইন করা হয়েছিল। ম্যাটল্যাব আপনার "হার্ডকোর" ভাষার সংজ্ঞাটি পরিমাপ করে না কারণ এটি কখনই করা উচিত ছিল না। পাইথন বা ডি এর ক্ষেত্রে ম্যাটল্যাব সম্পর্কে চিন্তাভাবনা করা সিআই এর পরিপ্রেক্ষিতে এলআইএসপি বা হাস্কেল সম্পর্কে বা জাভাস্ক্রিপ্টের নিরিখে ভেরিলোগ এবং ভিএইচডিএল সম্পর্কে ভাবার চেষ্টা করার মতো --- তারা বিভিন্ন সমস্যা সমাধান করে এবং সমস্যা সমাধানের জন্য মূলত বিভিন্ন উপায়ে যোগাযোগ করে। ন্যায়সঙ্গত হওয়ার জন্য, ম্যাটল্যাব এমন কিছু (ঠিক আছে, প্রচুর) উদ্ভট ভাষা-নকশার পছন্দ করেছে যা আমি কেবল একটি মাথা-ঘেঁষতে পারি না এমনকি কোনও ডোমেন-নির্দিষ্ট ভাষার দৃষ্টিকোণ থেকেও head তবে কোনও জ্যোতির্বিজ্ঞানীকে কেন খেয়াল করা উচিত যে আকাশের দেহ এক্সটি 48.0 এউ এর বিপরীতে স্বর্গীয় শরীরের ওয়াই থেকে ঠিক 48 এউ দূরে রয়েছে care

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

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


হ্যাঁ, সামগ্রিকভাবে আমি নম্পি / স্কিপি / ম্যাটপ্ল্লোলিবকে ভালবাসি এবং যখনই স্পষ্ট বিকল্পটি ম্যাটল্যাব / আর হবে তখন এগুলি ব্যবহার করি। এগুলি সম্পর্কে আমার কেবল অভিযোগগুলি হ'ল এগুলি ম্যাটল্যাব / আর এর মতো গভীর নয় এবং যেহেতু তারা পাইথন, তারা এখনও কিছুটা ধীর।
dsimcha

4
@ ডিএসিমচা, এটি সত্যই ভুল । এই পারফরম্যান্স সমীক্ষায়, নম্পি এমএটিএলবিএর সমতুল্য, এবং পাইরেক্স সি ++ এর 2 এর একটি ফ্যাক্টরের মধ্যে ভাল।
wvoq

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

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

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

14

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

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


2
-1। আমি কখনই বোঝাতে চাইছিলাম না যে ম্যাটল্যাব এবং আর ডিজাইনাররা খুব ভাল, হার্ডকোর প্রোগ্রামার ছাড়া অন্য কিছু than তবে, ম্যাটল্যাব এবং আর হার্ড প্রোগ্রামারগুলির জন্য ডিজাইন করা হয়নি ।
ডিসিমচা

3
"... দেখে মনে হচ্ছে যে এই ভাষাগুলি এমন লোকেরা ডিজাইন করেছিলেন যারা হার্ডকোর প্রোগ্রামার নন এবং তারা হার্ড ডিজিটাল প্রোগ্রামারদের মতো ভাবেন না।"
wvoq

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

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

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

9

ভেক্টর এবং ম্যাট্রিকগুলিতে চূড়ান্ত জোর এমন পরিমাণে যে কোনও সত্য আদিম নেই।

এটি নির্ভর করে আপনি যাকে সত্য সত্য আদিম বলছেন। আর এ, একটি ভেক্টর একটি সত্য আদিম; অর্থাৎ সমস্ত ভেরিয়েবল ভেক্টর are অনুরূপভাবে, ম্যাটল্যাবে সমস্ত ভেরিয়েবলগুলি ম্যাট্রিক্স।

বেসিক স্ট্রিং ম্যানিপুলেশন এর অসুবিধা।

ম্যাট্ল্যাব-এ স্ট্রিং ম্যানিপুলেশন শক্তিশালী তবে আমি সম্মত হই যে কোডটি প্রায়শই কুৎসিত এবং অশুচি (কমপক্ষে আপাতত)। আর এর জন্য, stringrপ্যাকেজটি রয়েছে, যা অন্য কোনও ভাষায় সরঞ্জাম হিসাবে ব্যবহার করতে ততই দুর্দান্ত।

হ্যাশ টেবিল এবং "রিয়েল", যেমন টাইপ-প্যারামেট্রিক এবং নেস্টেবল, অ্যারেগুলির মতো বুনিয়াদি ডেটা স্ট্রাকচারের পক্ষে সমর্থন বা অদ্ভুততা।

আর-তে ভেক্টরগুলির নাম রয়েছে যা হ্যাশের মতো কাজ করে। এছাড়াও hashএবং filehashপ্যাকেজ রয়েছে। ম্যাটল্যাব বাস্তবায়ন সম্পর্কে নিশ্চিত নয়, তবে আপনি চাইলে খুব সহজেই জাভা বা .NET সংস্করণগুলিতে কল করতে পারেন।

আপনার কোডটি ভেক্টরাইজ করার জন্য আপনি যদি পিছনের দিকে বাঁক না দেন তবে এগুলি সত্যই, ব্যাখ্যাযুক্ত ভাষার মান দ্বারা এমনকি ধীরে ধীরে।

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

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

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

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

একমত; এগুলি মূলত প্রক্রিয়াগত ভাষা।

কোনও রেফারেন্স ধরণের পাওয়ার জন্য কোনও সুস্পষ্ট, সহজ উপায় নয়। কোনও পয়েন্টার বা শ্রেণি রেফারেন্স নেই। উদাহরণস্বরূপ, কোনও ধারণা নেই যে আপনি কীভাবে আপনার নিজের লিঙ্কযুক্ত তালিকাকে এই ভাষার কোনও একটিতে রোল করেন।

আর। এর সাথে সম্মত AT

খুব দীর্ঘ ফাংশন এবং কাট-পেস্ট কোডিংকে উত্সাহিত করে আপনি একক ফাইলে একাধিক শীর্ষ স্তরের ফাংশন রাখতে পারবেন না।

ছাইপাঁশ. কেবল একাধিক ফাইল তৈরি করুন।

প্রথম শ্রেণীর ধরণের হিসাবে পূর্ণসংখ্যার দৃশ্যত অস্তিত্ব নেই।

তারা করে. দেখুন int8, int16, int32এবং int64

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

তারা ডেটা বিশ্লেষণ করতে উপযুক্ত। অপ্রত্যাশিত আচরণের নির্দিষ্ট উদাহরণ দিন।

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

বিভিন্ন ধরণের ডকুমেন্টেশন রয়েছে। দিয়ে শুরু করুন ?some_function, RSiteSearch('some concept'), rseek.org , এবং sosপ্যাকেজ। ম্যানুয়ালগুলি ইনস্টলের সাথে আসে তা উল্লেখ না করে। বা একটি ভাল বই

কমপক্ষে আমি যতটা সচেতন, এর পক্ষে ভাল কোনও আইডিই নেই। আবার, এমনকি ডি, একটি ছোট সম্প্রদায়ের সাথে মোটামুটি আলফা-ইশ ভাষা আরও ভাল করে।

স্থপতি বা আরস্টুডিও বা বিপ্লব বিশ্লেষণ আইডিই ব্যবহার করে দেখুন Try লিঙ্ক এবং আরও বিকল্পের জন্য স্ট্যাক ওভারফ্লো তথ্য পৃষ্ঠাটির "আইডিআই এবং সম্পাদকদের জন্য আর" দেখুন।


3

ম্যাটল্যাব জাভা এবং সি / সি ++ এর সাথে সংহত করতে পারে। আপনি এই ভাষাগুলিতে আপনার সমস্ত অ-সংখ্যাগত কাজের চাপ প্রয়োগ করতে পারেন এবং ম্যাটল্যাব থেকে তাদের কাছে প্রার্থনা করতে পারেন।

তাদের ব্যবহার প্রয়োজনীয়

এটি প্রয়োজনীয় হওয়ার কোনও কারণ আছে কি? আপনি কি অন্য ব্যক্তিদের দ্বারা লিখিত একটি বিদ্যমান ম্যাটল্যাব কোড বেসে কাজ করছেন? এটি কি কাজের প্রয়োজন? (বা আপনি যদি বিদ্যালয়ে থাকেন তবে শ্রেণির প্রয়োজন) যদি তা না হয় তবে আপনি এর পরিবর্তে সায়পি বা নম্পপি ব্যবহার বিবেচনা করতে পারেন।

দুর্ভাগ্যক্রমে, আমার ব্যক্তিগত মতে, যদি এই পরিস্থিতিটি কাউকে চাপিয়ে দেওয়া হয়, তবে এটি সর্বদা বেঁচে থাকে না। এমনকি কলেজেও প্রতিটি প্রকৌশলী শিক্ষার্থী গণনাत्मक চিন্তার ম্যাটল্যাব পদ্ধতিতে অভ্যস্ত হতে পারে না।


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

2
@ ডিএসিমচা আপনি সিএ থেকে এমএটিএলবি এবং আর গ্রন্থাগারগুলিতে কল করতে পারেন mathworks.com/help/techdoc/matlab_extern/f38569.html বা math.univ-montp2.fr/~pudlo/R_files/call_R.pdf
চার্লস ই গ্রান্ট

0

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

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

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

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


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