কেন বৈজ্ঞানিক প্রোগ্রামিং ভাষা এত অদ্ভুত? [বন্ধ]


9

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

  • মতলব-এ প্রতিটি ফাংশন আলাদা আলাদা ফাইলে রাখতে হবে
  • আর-তে, <- প্রায় প্রতিটি অন্যান্য ভাষায় = এর বিপরীতে অ্যাসিগমেন্ট অপারেটর
  • মতলব, আর, জুলিয়া এবং অন্যান্যরা সকলেই 1-সূচকযুক্ত
  • মতলব মন্তব্যগুলির জন্য% ব্যবহার করে, এবং মান # বা // না

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

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


6
সংক্ষিপ্ত উত্তর: কারণ সেগুলি প্রোগ্রামারদের জন্য নয়, বিজ্ঞানীদের জন্য তৈরি হয়েছিল।
বার্ট ভ্যান ইনজেন শেেনা

19
সংক্ষিপ্ত উত্তর: কারণ আপনি যে ভাষাটি স্বাভাবিক বলে মনে
রস প্যাটারসন

3
আমি মনে করি আপনি ভাষা জুড়ে যে কোনও সম্মেলন খুঁজে পেতে সংগ্রাম করবেন । এটি তাদের heritageতিহ্যের উপর নির্ভর করে।
রবি ডি

6
এর কিছুই অদ্ভুত নয়। এটা ঠিক অন্যরকম । কারণ নির্দিষ্ট ভাষার সুনির্দিষ্ট লেখক যেটি ব্যবহার করতেন তা ব্যতীত অন্যটির উপর একটি সিনট্যাক্স বেছে নেওয়ার বিশেষ কারণ নেই।
জানু হুডেক

8
আপনার 99% ভুল। আপনি যদি কেবল সি এবং এর ডেরাইভেটিভগুলিই জানেন তবে আপনি সম্ভবত এটি ভাবতে পারেন, তবে 50% এরও বেশি নন-সি ভাষা অ্যাসাইনমেন্ট, ইনডেক্সিং এবং / অথবা মন্তব্যের জন্য আলাদা কিছু ব্যবহার করে।
david.pfx

উত্তর:


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

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

"=" হিসাবে, অনেকেরই অভ্যস্ত হতে সমস্যা হয় যে এটি সাম্য নয়, বরাদ্দ। বিটিডাব্লু, পাস্কলে এটি সমতা এবং অ্যাসাইনমেন্টটি ": ="।

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

1 থেকে সূচীকরণ সম্পর্কে - এটি একমাত্র প্রাকৃতিক। যখন আপনি শিশু ছিলেন, আপনি কবিতা এবং গান শিখেছিলেন, যেখানে আপনি গণনা করেছেন: এক, দুই, তিন ... এবং 0,1,2 নয় ... বিদ্যালয়ের গণিতে আমরা অধ্যয়ন করেছি যে গণনাটি 1 থেকে শুরু হয় এবং 0 প্রাকৃতিক / গণনা সংখ্যার সাথে সম্পর্কিত নয়। শুধুমাত্র ফাংশনগুলির সংজ্ঞা দিয়েই অ-প্রাকৃতিক সূচক আসে। সর্বোপরি, আমাদের পূর্বপুরুষ একটি আঙুল উত্থাপিত করার পরে 0 হাজার হাজার বছর পরে আবিষ্কার হয়েছিল।

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

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


1
": =" অ্যাসাইনমেন্টের জন্য এবং 1-ভিত্তিক সূচীকরণটি ছোট্টকলিতেও ব্যবহৃত হয়।
ররি হান্টার

1
আমি 0 ভিত্তিক সূচীকরণটি বাস্তবায়নের স্বাচ্ছন্দ্যের কারণেই কিনছি না (ফোরট্রান এটি অনেকটা অস্বীকার করে) cs.utexas.edu/users/EWD/transferences/EWD08xx/EWD831.html কেউ 0-ভিত্তিক সূচক পছন্দ করতে পারে এমন কিছু কারণ দেয় তবে নোট পছন্দটি মোটামুটি স্বেচ্ছাচারী is
জে কে।

2
ফরট্রানের 1-ভিত্তিক সূচক ছিল। পাস্কাল নির্বিচারে-ভিত্তিক সূচকের অনুমতি দেয়: আপনি এমন একটি অ্যারে ঘোষণা করতে পারেন যার সূচকটি শেষ হয়েছে, উদাহরণস্বরূপ, -42 থেকে +57। (দেখুন en.wikipedia.org/wiki/... একটি উদাহরণ যেখানে এই দরকারী জন্য।)
জন আর Strohm

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

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

16

1 থেকে সূচকটি অদ্ভুত নয়, এটি প্রোগ্রামার ব্যতীত সম্পূর্ণ স্বাভাবিক এবং প্রত্যাশিত , কারণ তারা সি দ্বারা 0-ভিত্তিক গণনা আশা করার শর্তযুক্ত হয়েছিল (যা প্রসেসরের আর্কিটেকচারের বৈশিষ্ট্য থেকে শর্তযুক্ত ছিল)।

মন্তব্যগুলি বিভিন্ন ভাষায় অনেকগুলি বিভিন্ন উপায়ে বোঝানো হয়; নেই কোন আদর্শ উপায় প্রতিটি ভাষায় একটি প্রতীক বা digraph যে ইতিমধ্যেই নেওয়া হয় না পছন্দ।

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

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


4
আমি একমত নই যে 1 থেকে সূচীকরণ অদ্ভুত নয়। 0-সূচকগুলি গণিতে 1-সূচক হিসাবে কমপক্ষে সাধারণ এবং মাতলাব বা এস / আর এর আবির্ভাবের আগে বহু বছর ধরে প্রোগ্রামিংয়ের ক্ষেত্রে এটি সাধারণভাবে ছিল।
হরোবা

9
@ আকভিস ওহ, হ্যাঁ, আমি ইতিমধ্যে বাচ্চাকে শূন্য, এক, দু'টি গণনা করতে দেখেছি ... সত্যিই খুব প্রাকৃতিক উপায়।
গাংনাস

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

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

1
@ ফ্রেসনেল উত্তর থেকে প্যারাফ্রেজ করতে: 1 থেকে সূচীকরণ স্বাভাবিক। প্রোগ্রামার ব্যতীত, কারণ তারা এটি প্রত্যাশা করার শর্তযুক্ত হয়েছে [০ থেকে সূচী] সি থেকে
রবি ডি

5

তিনটি সমস্যা রয়েছে:

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

এখন আপনার নির্দিষ্ট পয়েন্ট:

  • আমি মতলবকে চিনি না, তাই ফাইল সংস্থার প্রয়োজনীয়তার বিষয়ে আমি মন্তব্য করতে পারি না। নোট করুন যে জাভা আপনার প্রতি পাবলিক ক্লাসে একটি ফাইল ব্যবহার করতে চায়।

  • আর-তে, =একটি অ্যাসাইনমেন্ট অপারেটর হিসাবেও ব্যবহার করা যেতে পারে। নোট করুন এটির একাধিক অ্যাসাইনমেন্ট অপারেটর প্রয়োজন <-এবং <<-স্কোপিংয়ের এর ধারণাটি মোকাবেলা করার জন্য ( <<-কোনও ফাংশনের অভ্যন্তরে নতুন প্রতীক তৈরি করার পরিবর্তে বাইরের স্কোপে প্রতীককে বরাদ্দ করা হয়)। তীর অন্যান্য দিক খুব ব্যবহার করা যেতে পারে, সম্ভাব্য ক্লিনার কোড উপার্জন: complex_calculation() -> x

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

  • %মন্তব্যগুলির জন্য টেক্স / ল্যাটেক্সেও ব্যবহৃত হয়। #শুধুমাত্র ইউনিক্স স্ক্রিপ্টিং ভাষা, এবং তাদের উত্তরাধিকাররা থেকে একটি কনভেনশন হয়।

আপনি এড়িয়েও যান যে "বাস্তব" প্রোগ্রামিং ভাষার অনেকগুলি অদ্ভুত অংশ রয়েছে। স্কিম ব্যবহার হয় না কেন =? পরিবর্তে:

(define foo 5)

কেন সি de *তিহ্য নির্ধারণের জন্য ব্যবহার করে , যখন স্পষ্টতই ^xঅন্যান্য careতিহ্যগুলিতে একটি ক্যারেট বেশি দেখা যায়?


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

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

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

1

আমার ধারণা এটি আপনার অন্যান্য ভাষায় প্রকাশের উপর নির্ভর করে। আমার মাথার উপরে:

  • সি / সি ++ এর পৃথক উত্স ফাইল রয়েছে (.c / .cpp & .h)
  • -> অক্ষরগুলি লম্বা এক্সপ্রেশনগুলির জন্য সি # তে ব্যবহৃত হয়
  • ভিবি-র পুরানো সংস্করণগুলি ডিফল্ট সূচক হিসাবে 1 ব্যবহার করেছে (যদিও এটি অপশন বেসের সাথে পরিবর্তন করা যেতে পারে)

1
সি এবং সি ++ এ আপনি একটি ফাইলে যতগুলি ফাংশন চান তার সংজ্ঞা দিতে পারেন।
হরোবা

আমি কেবল এই বিষয়টি তৈরি করছি যে মডিউলগুলি একাধিক ফাইলের মধ্যে বিভক্ত হওয়া অস্বাভাবিক নয়। আপনি আকাঙ্ক্ষিত যদি পারে সঙ্গে .NET ভাষায় ব্যবহার পৃথক ফাইলে আপনার সব ফাংশন করা আংশিক বর্গ কনস্ট্রাক্ট।
রবি ডি

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

3
এইচটিএমএলে মন্তব্যগুলি দেখতে দেখতে ভাল লাগে <!-- ... -->। শতাংশ-চিহ্নটি ইউআরএল-এনকোডিংয়ের জন্য ব্যবহৃত হয়: http://example.com/()হয়ে যায় http://example.com/%28%29
আমন

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