অ্যাসাইনমেন্ট অপারেটরটি বাম-পাশ দিয়ে কেন বরাদ্দ করে?


47

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

আমি এর আগে খুব বেশি চিন্তা করিনি, কারণ এটি আমার কাছে স্বাভাবিক বলে মনে হয়েছিল, তবে তিনি বলেছিলেন যে বাম থেকে ডান তার কাছে আরও প্রাকৃতিক বলে মনে হয়, যেহেতু আমাদের বেশিরভাগ প্রাকৃতিক ভাষা পড়ে read

আমি এটি সম্পর্কে ভেবেছি এবং উপসংহারে পৌঁছেছি যে এটি কোড পাঠ করা আরও সহজ করে তোলে, যেহেতু যে নামগুলি বরাদ্দ করা হয়েছে (যা প্রোগ্রামারটির পুনরায় ব্যবহারের প্রয়োজন হবে) সহজেই দৃশ্যমান হয়, বাম দিকে প্রান্তিক হয়।

aligned = 2
on = 'foo' + 'bar' + 'foobar'
the = 5.0 / 2
left = 2 + 5

উল্টোদিকে:

2 = aligned 
'foo' + 'bar' + 'foobar' = on
5.0 / 2 = the 
2 + 5 = right 

# What were the names again...?

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


15
R ডান হাতের ( value -> variable) টিতে নির্ধারণ করতে পারে ।
আপনি

সম্ভবত এটি খারাপ পরিবর্তনশীল নামের কারণে? কিভাবে 'numAlided 2`' এবং 'মুরগি লেফটটি 2 + 5'?
চাকরি

18
আপনার বন্ধুর নাম ... ইয়োদা?
অ্যাড্রিয়ান

1
যদি সে এই সম্পর্কে লেখা শুরু করে, আমি অবাক হই যে সে যখন সি ++ ও কো দেখবে তখন সে কী করবে।
ব্ল্যাকবিয়ার

3
কেবলমাত্র একটি পার্শ্ব দ্রষ্টব্য: খান একাডেমির শিক্ষাগত প্রোগ্রামারদের জন্য পাইথন সম্পর্কে কিছু পাঠ্যক্রম রয়েছে: খানাচাদেমি.আর.আ. / কম্পিউটার কম্পিউটার- বিজ্ঞান এবং গুগল আরও উন্নতদের
লিন্ডন ফক্স

উত্তর:


56

ডিট্টো @ প্যাক্সিডিয়াবলো। প্রারম্ভিক প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি গণিতবিদরা লিখেছিলেন - আসলে এগুলি সবই ছিল। গণিতে, তার নিজস্ব নীতি অনুসারে - বাম থেকে ডান পড়া - এটি যেভাবে কাজ করে তাতে বোঝা যায়।

x = 2y - 4।

গণিতে আপনি এটি বলবেন: x 2y -4 এর সমান হোক।

এমনকি বীজগণিতায়ও আপনি এটি করেন। আপনি যখন কোনও ভেরিয়েবলের জন্য কোনও সমীকরণ সমাধান করেন, আপনি যে পরিবর্তনশীলটি সমাধান করছেন তার জন্য বাম দিকে আলাদা করুন। অর্থাৎ y = mx + b;

তদ্ব্যতীত, একবার ভাষার সম্পূর্ণ পরিবার - যেমন সি পরিবার - এর একটি নির্দিষ্ট বাক্য গঠন থাকে, তবে এটি পরিবর্তন করা আরও ব্যয়বহুল।


19
@ ফারমবয়: গণিতে, অ্যাসাইনমেন্ট এবং সমতা একই জিনিস, কারণ কম্পিউটারে যেমন একটি সূত্রের কোনও সিকোয়েন্স নেই। (একটি সমান খ এবং একই সময়ে খ সমান ক)
পেট্রুজা

1
@ এফবি কিছু একক অ্যাসাইনমেন্ট কার্যকরী ভাষা বাদে যেমন- এরলং। অ্যাসাইনমেন্ট এবং
আশ্বাসের সাম্যতা

18
@ পেত্রুজা নং, গণিতে অ্যাসাইনমেন্ট এবং সমতা একই জিনিস নয়। যদি আমি বলি 'লেট এক্স = 2 এ - 3' এটি 'এভাবে x = 2y - 3' থেকে পৃথক। আমি গণিত করি, সাধারণত প্রসঙ্গে তাদের পার্থক্য করে। যেহেতু আমাকে বিতর্কিত মন্তব্যটি সর্বজনীনভাবে প্রশংসিত হয়েছিল, তাই আমি উল্লেখ করব যে আমার পিএইচডি আছে do গণিতে, আমি এ সম্পর্কে বেশ নিশ্চিত।
এরিক উইলসন

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

5
@Petruzza - কিন্তু সেখানে নেই sequentiality। গাণিতিক ডকুমেন্টগুলি শুরু থেকে শেষ অবধি লেখা থাকে, অন্য কোনও নথির মতোই। আমি যদি প্রথম x = 1এক অধ্যায়টিতে দৃsert়তা জ্ঞাপন করি তবে x = 2দ্বিতীয় অধ্যায়ে দৃ as়তার সাথে বলতে পারি যে এটি কোনও ভয়াবহ দ্বন্দ্ব নয় - প্রতিটি দৃser়পদ কেবলমাত্র একটি নির্দিষ্ট প্রসঙ্গে প্রযোজ্য। জরুরী প্রোগ্রামিংয়ের পার্থক্য হ'ল আংশিকভাবে একটি বাধা অপসারণ (আমাদের প্রসঙ্গে পরিবর্তনের দরকার নেই), এবং আংশিকভাবে বাস্তবায়ন এবং উপযোগিতা সম্পর্কে।
স্টিভ 314

26

BASIC, প্রাচীনতম কম্পিউটারের একটিতে "যথাযথ" ফর্মটি ছিল:

10 LET AREA = HEIGHT * WIDTH

যা একটি ভেরিয়েবল নির্দিষ্ট করার গাণিতিক মানসিকতার সাথে মেলে, যেমন "বস্তুর উচ্চতা হউক" like

COBOLএর COMPUTEবিবৃতিতেও একই রকম ছিল । কাজ করার বিভিন্ন উপায়ের মতো, এটি কেবল একটি নির্বিচার সিদ্ধান্ত হতে পারে যা বহু ভাষায় চালিত হয়েছিল।


7
আমি মনে করি যে প্রোগ্রামের লাইনগুলিকে "ক্রিয়াকলাপগুলির" বিরোধী হিসাবে "বিবৃতি" হিসাবে বিবেচনা করা হলে এই ফর্মটি আরও স্বাভাবিক। হিসাবে, I declare that X must equal THISআরও লিনিয়ার পরিবর্তেEvaluate THIS and store it in X
voithos

অপেক্ষা করুন, বেসিক একটি 'প্রাথমিক' কম্পিউটার ভাষা ছিল?
অ্যালেক্স ফেনম্যান

2
@ অ্যালেক্স এটি 1960 এর দশক থেকে ক্ষয়ক্ষতি বিবেচনা করে, আমি বলতে পারি যে এটি খুব তাড়াতাড়ি।
বেন রিচার্ডস

1
অন্যদিকে, সিওবিওএলতে আপনি লিখতে পারতেন MULTIPLY HEIGHT BY WIDTH GIVING AREA, সুতরাং ফলটি যে ভেরিয়েবলটি পায় তা বিবৃতিটির খুব ডানদিকে।
ব্যবহারকারী 281377

25

প্রকৃতপক্ষে, একটি প্রোগ্রামিং ভাষা রয়েছে যা ডানদিকে নির্ধারণ করে: টিআই-বেসিক ! কেবল এটিই নয়, এটি অ্যাসাইনমেন্ট অপারেটর হিসাবে '=' ব্যবহার করে না, বরং "এসটিও" অপারেটর হিসাবে পরিচিত একটি তীর ব্যবহার করে।

উদাহরণ:

5→A
(A + 3)→B
(A - B)→C

উপরের উদাহরণে, তিনটি ভেরিয়েবল ঘোষণা করা হচ্ছে এবং মান দেওয়া হচ্ছে। ক হবে 5, বি হবে 8, এবং সি হবে -3। প্রথম ঘোষণা / অ্যাসাইনমেন্টটি 'স্টোর 5 এ হিসাবে' পড়া যায়।

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

Sin(7 + Cos(3))
                    -.26979276
Ans→{variable name}
                    -.26979276

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

(উপাখ্যান: টিআই-বেসিক আমি প্রথম যে ভাষা শিখেছি সেগুলির মধ্যে একটি ছিল, তাই যখন আমি যখন কলেজে জাভা শিখছিলাম তখন আমার মনে হয়েছিল যে বামদিকের দায়িত্ব অর্পণ করা অস্বাভাবিক এবং 'পিছনের দিকের'!))


+1 আমি পুরোপুরি ভুলে গেছি! টিআই বেসিকটিও আমার প্রথম ভাষা ছিল, তবে আমি এই বিশদটি মনে করি না।
বরজাক

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

15

হিউরিস্টিক 1: কোনও ভাষা ডিজাইনের সময় যখন কিছু করার একাধিক সম্ভাব্য উপায়ের মুখোমুখি হন, সর্বাধিক সাধারণ, অতি স্বজ্ঞাত বাছাই করুন, অন্যথায় আপনি পার্ল + এর সাথে সমাপ্ত হবেন।

এখন, কীভাবে এটি আরও প্রাকৃতিক (কমপক্ষে একটি ইংরেজী স্পিকারের কাছে)? আসুন আমরা ইংরেজিতে কীভাবে জিনিস লিখি / বলি তা দেখুন:

স্টিভেন এখন 10 বছর বয়সী (10 বছর বয়সে স্টিভেনের বিপরীতে)। আমার ওজন 190 পাউন্ডেরও বেশি (আমার ওজনের 190 পাউন্ডের বিপরীতে)।

কোডে:

steven = 10
i > 190

নিম্নলিখিতগুলি আরও প্রাকৃতিক শোনাচ্ছে:

"যদি মেরি 18 বছর বয়সী হয় তবে তার একটি ক্যান্ডি থাকতে পারে"। "আমি যদি 21 বছরের চেয়ে কম বয়সী হয়ে থাকি তবে আমি আমার ভাইকে আমার কাছে টেকিলা জিজ্ঞাসা করব"।

if (mary == 18) { ... }
if (i < 21) { ... }

চেয়ে:

"যদি 18 yo মেরি হয় ..." "21 যদি আমার বয়সের চেয়ে বেশি হয় ..."

এখন কোড:

if (18 == mary) { ... }
if (21 > i) { ... }

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

অবশ্যই, যে কোনও একটিতে অভ্যস্ত হতে পারে। উদাহরণস্বরূপ, 81 নম্বরটি লিখিত রয়েছে:

আশি জন (ইংরেজি) আশি এবং এক (স্প্যানিশ) ওয়ান এবং আশি (জার্মান)।

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

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


4
... এবং ফরাসি ভাষায়, 81
জনকে

1
@ মার্টিন, আমি বিশ্বাস করি ড্যানিশ খুব একই রকম।
একটি সিভিএন

7
@ মার্টিন এটি সত্যই অদ্ভুত, কারণ একগুণ একুশ 84।
পিটার ওলসন

6
@ পিটার: আপনি আপনার প্রথম বন্ধনী ভুল পেয়েছেন, এটি(four times twenty) one
সিঙ্গেলএগ্রেশনএলিমিনেশন

4
@ জোব: আপনার "যদি 18 জো মেরি হয় ..." পড়ছেন, তখন আমি ইয়াদাকে অনিবার্যভাবে মনে করিয়ে দিয়েছিলাম "যখন নয়শ বছর বয়সে আপনি পৌঁছান, ঠিক তেমন ভাল লাগবেন না, হুঁ?" জেডি এর
রিটার্নে

11

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

অন্যদিকে এর কাছাকাছি সমসাময়িক সিওবিওএলটি বোঝানো হচ্ছিল ইংরাজির মতো এবং ডানদিকে নির্ধারিত (বেশিরভাগ!)।

MOVE 1 TO COUNTER.
ADD +1 TO LINE-CNT.
MULTIPLY QTY BY PRICE GIVING ITEM-PRICE.

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

5

ঠিক আছে, @ ডাইসগাইড 30 যেমন উল্লেখ করেছে, উভয় চিহ্ন আছে।

  • <Identifier> = <Value>মানে " আইডেন্টিফায়ারকে মান হতে দিন " অথবা প্রসারিত করতে যে: নির্ধারণ করুন (অথবা পুনরায় সংজ্ঞায়িত) পরিবর্তনশীল আইডেন্টিফাইয়ার করার মূল্য
  • <Value> -> <Identifier>মানে হলো "দোকান মূল্য থেকে আইডেন্টিফাইয়ার "। বা এটি প্রসারিত করার জন্য: সনাক্তকারীর দ্বারা নির্ধারিত স্থানে মান রাখুন ।

অবশ্যই, সাধারণত আইডেন্টিফায়ার বলতে আসলে কোনও এল-মান হতে পারে।

প্রথম পদ্ধতির পরিবর্তনশীলগুলির বিমূর্ত ধারণাটিকে সম্মান জানানো হয়, দ্বিতীয় পদ্ধতির প্রকৃত স্টোরেজ সম্পর্কে আরও বেশি।

মনে রাখবেন যে প্রথম পদ্ধতির ভাষাগুলিতেও সাধারণ, যার কোনও অ্যাসাইনমেন্ট নেই। আরও মনে রাখবেন, পরিবর্তনশীল সংজ্ঞা এবং কার্যনির্বাহী তুলনামূলকভাবে নিকটবর্তী <Type> <Identifier> = <Value>বনাম <Identifier> = <Value>


3

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

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


2
আমি আপনার ব্যাখ্যাটি বুঝতে পেরেছি, তবে সংকলকটি কি বিবৃতি শেষ না হওয়া পর্যন্ত কেবল সামনে তাকিয়ে থাকতে পারে না?
voithos

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

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

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

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

3

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

identifier = function();
function();

দুটি স্পষ্টভাবে দ্বিতীয় টোকেন থেকে বিচ্ছিন্ন করা হয়। অন্য দিকে,

function() = identifier;
function();

মজা না. আপনি অ্যাসাইনমেন্ট এক্সপ্রেশন বাসা বাঁধতে শুরু করলে এটি আরও খারাপ হয়।

function(prev_identifier = expression) = identifier;
function(prev_identifier = expression);

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

identifier1 = expressionOfAnArbitraryLength;
identifier2 = expressionOfAReallyReallyReallyArbitraryLength;
identifier3 = expression;
identifier4 = AlongLineExpressionWithAFunctionCallWithAssignment(
    identifier = expr);

সহজ, কেবল বাম দিকে তাকান। অন্যদিকে ডানদিকে

expressionOfAnArbitraryLength = identifier1;
expressionOfAReallyReallyReallyArbitraryLength = identifier2;
expression = identifier3;
AlongLineExpressionWithAFunctionCallWithAssignment(expr = identifier
    ) = identifier4;

বিশেষত যখন আপনি grepকার্ডগুলি পাঞ্চ করতে পারবেন না , আপনি চান সনাক্তকারীটি খুঁজে পাওয়া আরও শক্ত।


হ্যাঁ, আমি ঠিক সেই বিষয়টি ভেবেছিলাম।
voithos

2

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

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

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


হ্যাঁ, তবে আমি সন্দেহ করি যে সম্পাদকদের
পাঠ্যটিও ডানদিকী করা হবে

8
অ্যাসেম্বলি ভাষা সম্পর্কে আপনি এর মতো সাধারণকরণ করতে পারবেন না। গন্তব্য অপারেন্ড যেখানে হয় সেগুলির ক্ষেত্রে সেগুলি পরিবর্তিত হয়।
দ্রুত_আগস্ট

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

3
@ টাঙ্গুরেনা - কিছু সংঘবদ্ধ ভাষা বামদিকে অনুভূতি রয়েছে। না opcode (যে একত্র অবজেক্ট কোড), কিন্তু নির্দেশ স্মৃতিসম্বন্ধীয় জন্য আর্গুমেন্ট তালিকার বাম করুন। তবে অন্যের ডানদিকে গন্তব্য রয়েছে। 68000 এসেম্বলারের মধ্যে আপনি লিখবেন mov.b #255, d0, উদাহরণস্বরূপ, d0রেজিস্টারটি কোথায় নির্ধারিত হবে। বয়স্ক সমাবেশকারীদের কেবলমাত্র নির্দেশ অনুসারে একটি যুক্তি থাকে। 6502 LDA #255(লোড অ্যাকিউমুলেটর) এ, আপনি তর্ক করতে পারেন যে Aবাম দিকে রয়েছে, তবে এটি STA wherever(স্টোর একিউমুলেটর) এর বাম দিকেও রয়েছে ।
স্টিভ 314

2
এমনকি এমনকি ইন্টেল 4004 (৮৮৮৮ এবং এর মধ্যে ৮০৮০ সহ ৮ the৮০ পরিবারের 4-বিট চূড়ান্ত পূর্বপুরুষ) উচ্চ স্তরের ভাষাগুলিতে নিয়োগের পরে তৈরি হয়েছিল । আপনি যদি ধরে নিচ্ছেন যে 8086 সিরিজ 50 এর দশকের আগে এবং এর আগে সমাবেশকারীরা যা করেছিল তার প্রতিনিধিত্ব করে তবে আমি খুব সন্দেহ করি যে এটি সত্য।
স্টিভ 314

2

কি এটা এর মূল্য জন্য, ব্যবসায়িক কাজে ব্যবহৃত এক বিশেষ ধরনের কম্পিউটার ভাষা সবচেয়ে বিবৃতি পড়তে বাঁ দিক থেকে ডানদিকে, তাই দুই operands প্রথম নামে করা হয়েছে, এবং গন্তব্য শেষ, মত: multiply salary by rate giving tax

তবে আমি প্রস্তাব দিচ্ছি না যে আপনার ছাত্রটি কোবোলকে পছন্দ করতে পারে, এই ভয়ে যে আমি এইরকম একটি নিম্ন, খালি, স্বাদহীন মন্তব্য করার জন্য পতাকাঙ্কিত হব (বেশ সঠিকভাবে)! :-)


1

তিনি বলেছিলেন যে বাম-থেকে-ডান তার কাছে আরও প্রাকৃতিক বলে মনে হয়েছে, যেহেতু আমাদের বেশিরভাগ প্রাকৃতিক ভাষা পড়ে।

আমি এই একটি ভুল মনে হয়। একদিকে, আপনি "এসাইন 10 থেকে এক্স" বা "10 থেকে x এ সরান" বলতে পারেন। অন্যদিকে, আপনি "সেট এক্স টু 10" বা "এক্স 10 হয়ে যায়" বলতে পারেন।

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


0

সিউডোকোডে অ্যাসাইনমেন্ট অপারেটরটি ডানদিকে খুব সাধারণভাবে লেখা থাকে। উদাহরণ স্বরূপ

2*sqrt(x)/(3+y) -> z

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

A+2B → C

ফোরমে ভেরিয়েবলটি ডানদিকেও রয়েছে

expression variable !

এক্স ৮ In-এ, ইন্টেল সিনট্যাক্সের বাম দিকে গন্তব্য রয়েছে তবে জিএএস সিনট্যাক্সটি ক্রমটিকে বিপরীত করে, অনেককে কিছুটা বিভ্রান্তি তৈরি করে, বিশেষত বিয়োগ বা তুলনা যেমন পরামিতিগুলির ক্রম সম্পর্কিত নির্দেশকে। এই নির্দেশাবলী 2 টি ভিন্ন উপভাষায় একই are

mov rax, rbx    ; Intel syntax
movq %rbx, %rax ; GAS syntax

তারা উভয়ই rbx এর মানটিকে রেক্সে নিয়ে যায়। আমি জানি অন্য কোনও সমাবেশের ভাষা GAS এর মতো ডানদিকে গন্তব্যটি লিখুন।

কিছু প্ল্যাটফর্মগুলি বামদিকে অভিব্যক্তি এবং ডানদিকে পরিবর্তনশীল রাখে:

MOVE expression TO variable      COBOL
expression → variable            TI-BASIC, Casio BASIC
expression -> variable           BETA, R
put expression into variable     LiveCode

https://en.wikipedia.org/wiki/Assignment_%28computer_science%29#Notation

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

তবে কিছু লোক "মুভিটি এক্স থেকে y" বলতে এবং ডানদিকে পরিবর্তনশীল লিখতে পছন্দ করে।


-1

আমি মনে করি এটি চিন্তার যৌক্তিক পদ্ধতি অনুসরণ করে।
প্রথমে একটি বাক্স (পরিবর্তনশীল) থাকতে হবে, তারপরে আপনি এটির ভিতরে কোনও বস্তু (মান) রাখবেন।
আপনি বস্তুকে বাতাসে রাখবেন না এবং তার চারপাশে একটি বাক্স রাখবেন না।


2
হ্যাঁ তুমি কর. বেশিরভাগ ভাষায় বামের আগে ডান দিকটি মূল্যায়ন করা হয়।
জাভিয়ের

3
এটি "রাস্তার ডানদিকে ড্রাইভিং" ধরণের জিনিস। এটি যৌক্তিক মনে হয় তবে কেবল কারণ এটি আপনি সর্বদা এটি করেছেন। সমস্ত উন্নত দেশ বাম দিকে চালিত করে।
জেমস অ্যান্ডারসন

1
@ জামেসএন্ডারসন উন্নত দেশসমূহ? : ও
নওফাল

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