প্রোগ্রামিং ভাষার ক্ষেত্রে সিনট্যাক্সটি কি আসলেই গুরুত্বপূর্ণ? [বন্ধ]


41

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

আমি আপনার মতামত জানতে চাই।

দাবি অস্বীকার: আমি তর্ক শুরু করার চেষ্টা করছি না। আমি ভেবেছিলাম এটি আলোচনার একটি ভাল বিষয়।

আপডেট: এটি একটি ভাল বিষয় হিসাবে দেখা যাচ্ছে। আপনি সকলেই এতে অংশ নিচ্ছেন বলে আমি আনন্দিত।


16
হুঁ, এটা ধরে নেওয়া যায় যে সি / সি ++ সিনট্যাক্সটি খারাপ? অবশ্যই সি ++ টেম্পলেটগুলির কিছু উপাদান কুৎসিত, তবে যতদূর ভাষা যায় (icallyতিহাসিকভাবে), সি / সি ++ এখনও খুব, খুব পাঠযোগ্য।
ম্যাকনিল

2
আমি অনেক প্রোগ্রামারকে জানি যারা এর সাথে একমত নন, বেশিরভাগ রুবি সম্প্রদায়ের কাছ থেকে, যদিও এটি যতটা আমি বলতে পারি লিস্পের চেয়ে বেশি পঠনযোগ্য :)
সাইফ আল হারথি

9
এটি একটি তাত্ত্বিক কোর্স ছিল? মনে রাখবেন: অধ্যাপকরা প্রায়শই কিছু খারাপ প্রোগ্রামার হন। বনের মধ্যে এটি কী রকম তা তাদের কোনও ধারণা নেই।
চাকরি

2
পাঠযোগ্যতা দর্শকের চোখে পড়ে :)।
মাক

8
ভাল বাক্য গঠন আরও একটি দু: খজনক ভাষা তৈরি করতে পারে না। তবে কৃপণ্য বাক্য গঠনটি একটি ভাল ভাষা আরও খারাপ করে তুলতে পারে;)
দারিও

উত্তর:


65

হ্যাঁ এটা করে. যদি আপনার সন্দেহ হয় তবে এপিএল , জে , বা ব্রেনফাক , এমনকি সাধারণ এবং সরল লিস্প বা ফোর্থ নিন এবং এটিতে কোনও সম্পূর্ণ তুচ্ছ প্রোগ্রামকে বোঝার চেষ্টা করবেন না। তারপরে পাইথনের সাথে তুলনা করুন।

তারপরে একই পাইথন (বা রুবি, বা এমনকি সি #) কোবল বা ভিবি 6 এর মতো জিনিসের সাথে তুলনা করুন ।

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


26
লিস্প অবশ্যই বোধগম্য।
cbrandolino

65
অপঠনযোগ্য ভাষার তালিকায় লিসপকে অন্তর্ভুক্ত করার জন্য +1।
asmeurer

65
অপঠনযোগ্য ভাষার তালিকায় লিস্পকে অন্তর্ভুক্ত করার জন্য -1।
পল নাথান

27
সাধারণভাবে প্রোগ্রামিং অবিচ্ছেদ্যদের কাছে অপঠনযোগ্য। যেমন সংগীত স্বরলিপি এবং আর্কিটেকচারাল মেঝে পরিকল্পনা। (= এক্সওয়াই) যেভাবে পড়তে জানে তার কাছে এক্স == ওয়াইয়ের মতোই পঠনযোগ্য।
পল নাথান

6
আমি এপিএলকে পছন্দ করতাম এবং কোডটি ইচ্ছাকৃতভাবে অবহেলায় লেখা ছিল না (করা খুব সহজ), এটি পড়া খুব সহজ ছিল। বাক্য গঠনের শক্তিটি হ'ল আপনি এপিএল কোডের 2 বা 3 লাইনে অ্যালগরিদমগুলি প্রোগ্রাম করতে পারেন যার জন্য সি, ফোর্টরান বা সিওবিএল কয়েক ডজন বা কয়েকশ লাইন লাগবে। এপিএলের মতো ভাষার সংক্ষিপ্ততা এবং শক্তি এই আলোচনার পক্ষে গুরুত্বপূর্ণ কারণ অন্য ভাষার শত শত কোড লাইনের মাধ্যমে পড়ার চেষ্টা করা ঠিক ততটাই হতাশার মতো হতে পারে যা এপিএলের अस्पष्ट উপাদানগুলি বোঝায়।
ওস্টারওয়াল

11

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

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


পৃথক করা সহজ যে টাইপস সম্পর্কে দুর্দান্ত পর্যবেক্ষণ।

7
তবে তত্ত্বের ক্ষেত্রে তত্ত্ব এবং অনুশীলনের মধ্যে কোনও পার্থক্য নেই।
কাজ

10

আমি বিশ্বাস করি আপনার অধ্যাপক সিন্ট্যাকটিক চিনির উল্লেখ করছেন ।

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

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

স্ট্রাকচার্ড প্রোগ্রামিং উপপাদ্য থেকে বেরিয়ে রবার্ট মার্টিন, রেলকনফ ২০১০- তে তার মূল বক্তব্যে প্রোগ্রামাররা মূলত প্রোগ্রামিং ভাষা নিয়ে যা করেন তা বিমূর্ত করেছেন : রবার্ট মার্টিন (ইউটিউব ভিডিও, 14 মিনিটের পরে দেখুন, যদিও আমি পুরো বিষয়টিই সুপারিশ করি):

  • সিকোয়েন্স (অ্যাসাইনমেন্ট)
  • নির্বাচন (বিবৃতি যদি)
  • ইন্টেরেশন (করণীয়)

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

সুতরাং সংক্ষেপে , সিনট্যাক্স কোন ব্যাপার না । তবে আপনি যদি সুনির্দিষ্ট হতে চান তবে স্পষ্টতই কিছু ভাষা এবং বাক্য গঠন অন্যের চেয়ে কিছু নির্দিষ্ট কাজের জন্য আরও উপযুক্ত where


আপনি সি কে এসেম্বলারের জন্য একটি সিনট্যাকটিক চিনি বলবেন?
গোরান জোভিক

1
আমি করতাম তবে আমি সিনট্যাক্স বিষয়গুলির দাবি করি। ;)
লেনার্ট রেজেব্রো

2
"... রবার্ট মার্টিন মূলত কি প্রোগ্রামারদের বিমূর্ততা দিয়েছিল ..." রবার্ট মার্টিন? রবার্ট মার্টিন ?? আপনি সম্ভবত এই কাগজটি বিবেচনা করতে চাইতে পারেন: সি। বোহম, জি। জ্যাকোপিনি, "ফ্লো ডায়াগ্রাম, কেবল দুটি গঠনের বিধি সহ ট্যুরিং মেশিন এবং ভাষা", কম। এসিএমের, 9 (5): 366-371,1966। যা সাধারণত 'কাঠামোগত প্রোগ্রাম উপপাদ্য' এর উত্স হিসাবে জমা হয়। en.wikipedia.org/wiki/Structured_program_theorem
leed25d

@ lee25d আমি চাচা ববকে বিমূর্তির প্রবর্তক হিসাবে ক্রেডিট করা বলতে চাইনি, তবে সম্প্রতি যেখানে শুনেছি এমন উত্স হিসাবে (এবং এর সাথে যুক্ত)। তবে লিঙ্কটির জন্য আপনাকে ধন্যবাদ, আমি আপনার লিঙ্কটি প্রতিফলিত করতে আমার উত্তর আপডেট করব।
spong

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

7

হ্যা এবং না.

সিনট্যাক্সের কয়েকটি ভিন্ন দিক রয়েছে।

  • সুপাঠ্যতা
  • expressivity
  • parsability

পঠনযোগ্যতা ইতিমধ্যে উল্লেখ করা হয়েছে।

এক্সপ্রেসিভিটি একটি আকর্ষণীয় ঘটনা। আমি উদাহরণ হিসাবে ফাংশন-পাসিং ব্যবহার করতে যাচ্ছি, কারণ এটি শব্দার্থ / সিনট্যাকটিক ব্যথার একটি প্রতিস্থাপন পয়েন্ট of

উদাহরণস্বরূপ সি ++ নেওয়া যাক। আমি এই ফ্যাশনের পরে একটি প্রথম-অর্ডার ফাংশন তৈরি করতে পারি:

class funcClass
{
  int operator()(int);
}
funcClass fun;

void run_func(funcClass fun)
{
   fun();
}

এই নির্দিষ্ট প্রতিমাটি সাধারণত স্টেপানভের প্রোগ্রামিং এর উপাদানগুলির ক্ষেত্রে ব্যবহৃত হয় ।

অন্যদিকে, আমি ভালো কিছু সঙ্গে সাধারণ পাতার মর্মর এটা অনুকরণ করতে পারে এই :

(defun myfunc() )

(defun run_func(fun)
  (fun))

বা, পার্ল -

   sub myfunc
   {
   }

   sub run_func
   {
      my $func = shift;
      $func->();          #syntax may be a little off.
   }

বা, পাইথনে -

def myfunc():
    pass

def run_func(f):
    f()

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

কোন পদ্ধতির সমস্যা ডোমেন সেরা স্যুট? কোন পদ্ধতির মাধ্যমে আপনার মাথার মধ্যে অন্তত 'প্রতিবন্ধকতা মেলে না' তার ভাবনাগুলি সবচেয়ে ভাল প্রকাশ করতে পারে?

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

যদিও বিবেচনা করুন - বাস্তব-বিশ্বের সমস্যাগুলি সমাধান করার জন্য প্রতিটি গুরুতর ভাষা নিয়ে সমস্ত প্রকারের প্রধান সিস্টেমগুলি তৈরি করা হয়েছে। যদিও সিনট্যাক্স কিছু জিনিস প্রকাশে বাধা, তবে এটি একটি পরিশ্রমী-সক্ষম বাধা। টুরিং সমতুল্যতা এবং সমস্ত কি।


5

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

if (AlertCode = RED)
   {LaunchNukes();}

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

এজন্য আপনার যোদা শর্তসাপেক্ষ ব্যবহার করা if(RED = AlertCode)উচিত , অর্থাত্ কখনই সংকলন করা উচিত নয় কারণ লাল ধ্রুবক (বা হওয়া উচিত!)
মলফিস্ট

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

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

3
কিসের উপর নির্ভর করে RED। যদি এটি 0 হয় তবে LaunchNukes()কখনই ডাকা হবে না।
dan04

5

সিনট্যাক্সটি গুরুত্বপূর্ণ, এবং আমি আপনাকে দুটি সহায়ক উদাহরণ দিতে পারি: ডিলান, যা আরও প্রচলিত সিনট্যাক্সের সাথে লিস্প এবং লিসপেল, যা লিস্পের মতো সিনট্যাক্সের সাথে হাস্কেল is প্রতিটি ক্ষেত্রে, ভাষার একটি বৈকল্পিক প্রস্তাব করা হয়েছিল যা ঠিক একই শব্দার্থক, তবে মূলত পৃথক বাক্য গঠন রয়েছে different

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

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

এখানে জিনিসটি: সিনট্যাক্স যদি কারও কাছে আসে না, তবে পরীক্ষার চেষ্টাও করা হত না।


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

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

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

ডিলান কখন এস-এক্সপ্রেশন হারিয়েছিল সে সম্পর্কে সঠিক বিবরণ আমার মনে নেই। আমি দীর্ঘকাল ধরে কম.লং.লাস্পের দিকে ঝুঁকছি, এবং মনে রাখছি বিষয়টি বন্ধুত্বগুলি নিয়ে তাদের পর্যায়ক্রমিক শিখাগুলির মধ্যে একটিতে আসে।
ল্যারি কোলেম্যান

ডিলান জাভা সম্পর্কে পূর্বাভাস দেয় এবং আমি মনে করি না যে তখন অনেক সি ++ পথ ছিল।
টম হাটিন -

3

উত্তরটি কম্পিউটার বিষয়ক এবং মানুষের উপাদানগুলির মধ্যে "বিষয়গুলি" আলাদা করার ক্ষেত্রে হতে পারে । সিনট্যাক্সে অনেকগুলি মানবিক কারণ রয়েছে:

  • সুপাঠ্যতা
  • Succinctness
  • Maintainability
  • শিক্ষাবিজ্ঞান
  • ত্রুটি প্রতিরোধ
  • উদ্দেশ্যটির জন্য উপযুক্ততা - এটি কি একটি REPL ভাষা, একটি স্ক্রিপ্ট ভাষা বা একটি বৃহত সিস্টেমের ভাষা?

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

এই কারণেই আপনি এই প্রশ্নের সদায় "হ্যাঁ এবং না" উত্তর পেতে পারেন - কারণ এর দুটি দিক রয়েছে।


1

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


আমার উত্তরটি কেন নিচে ভোট হয়েছে?
IAbstract

1

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

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


সি এর সাথে আমার কোনও কোয়ালিটি নেই তবে এমএল / হাস্কেল ভিড়ের থ্রেডিংয়ের বিষয়ে সম্ভবত কিছু বলার দরকার ছিল।
রেই মিয়াসাকা

"এপিআই অ্যাক্সেস" এর জন্য +1: আমি মনে করি এটি ভাষা বৈশিষ্ট্যের চেয়ে আরও গুরুত্বপূর্ণ হতে পারে।
জর্জিও

1

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


ডিএসএলগুলি সিনট্যাক্স চিনির সব কিছু নয়। শব্দার্থবিজ্ঞান একটি অনেক বেশি মূল্যবান অংশ। ইডিএসএলগুলি ডিজাইন করা ঠিক আছে যা বিদ্যমান সিনট্যাক্সে কোনও কিছুই যুক্ত করবে না।
এসকে-যুক্তি

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

1

এখানে এমন একটি প্রোগ্রাম যা 6 টি অনুষদের গণনা করে:

S(K(S(S(SI(KK))(K(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)(S(S(KS)(S(KK)
(S(KS)(S(K(SI))K))))(KK)KK))))))(S(K(S(S(K(SI))(SII)(S(K(SI))(SII))
(S(K(S(S(KS)(S(KK)(S(SI(KK))(K(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)KK)))))))
(S(K(S(S(KS)(S(K(SI(KK)))(SI(K(KI)))))))(S(K(S(K(S(S(K(SI))(SII)(S(K(SI))
(SII))(S(K(S(S(KS)(SI(KK)))))(S(S(KS)(S(K(S(KS)))(S(K(S(KK)))(S(S(KS)K)
(K(SI(K(KI))))))))(K(K(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)))))))))))
(S(S(KS)K)(K(SI(K(KI)))))))))))(S(S(KS)K)(K(SI(K(KI))))))(S(S(KS)(S(KK)(S(KS)
(S(K(SI))K))))(KK)(KI)(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)(S(S(KS)(S(KK)
(S(KS)(S(K(SI))K))))(KK)(KI)(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)(S(S(KS)
(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)(KI)
(S(S(KS)(S(KK)(S(KS)(S(K(SI))K))))(KK)KK)))))))

বাক্য গঠনটি ন্যূনতম:

expression: expression term | term
term: ‘(‘ expression ‘)‘ | combinator
combinator: 'S' | 'K' | 'I' 

একটি প্রচলিত বিশ্বাস বলে মনে হয় যে বাক্য গঠনই ভাষাটিকে কঠিন করে তোলে। যেহেতু প্রায়শই সাধারণভাবে অনুষ্ঠিত বিশ্বাস বিশ্বাস করে, ঠিক এর বিপরীতটি সত্য।

নোট করুন যে এলআইএসপি সিনট্যাক্সটি কেবল পঠনযোগ্য (যদি আদৌ) তবে উপরের তুলনায় এর অনেক বেশি বাক্য গঠন রয়েছে। সুতরাং, যদি এলআইএসপি অনুরাগীরা আপনাকে বলে যে "সিনট্যাক্স কোনও বিষয় নয়", তাদের ফলস্বরূপ হতে বলুন এবং এসকেআই ক্যালকুলাস চেষ্টা করুন। তাদের স্বীকার করতে হবে যে কিছুটা বাক্য গঠন এতটা খারাপ নয়।


আমি ডাউন ভোট বুঝতে পারি না। এটি একটি সত্যই অন্তর্দৃষ্টিপূর্ণ উত্তর। +1
স্ক্র্যাভি

0

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


6
"বাজারের সময়", "উপকারের জন্য ব্যয়" ইত্যাদি কীভাবে?
চাকরি

0

হ্যাঁ, সিনট্যাক্স বিষয়গুলি সত্যই কেবল পাঠযোগ্যতার জন্য। তুলনা করা:

for i in range(10):
   print(i)

(হ্যাঁ পাইথন) সাথে with

FOR(i<-RNG-<10){PRN<-i}

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

 @property
 def year(self):
     return self._date.year

চেয়ে পড়া সহজ

 def year(self):
     return self._date.year
 year = property(year)

0

হ্যাঁ, নিশ্চিত

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

void foo() {
  // blah
}

বনাম

void foo()
{
  // blah
}

এমনকি ভিএস

void foo() 
{ // blah
}

এবং এটি ঠিক একই ভাষা! এছাড়াও, তাদের স্পেসগুলি সম্পর্কে জিজ্ঞাসা করুন যেখানে তারা এগুলি রাখে (ফাংশনের নাম এবং ব্রেসেট, অপারেটর ইত্যাদি)।

1000 উত্তর গ্যারান্টিযুক্ত!


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

0

সিনট্যাক্স ব্যাপার না। তবে এই দিন এবং যুগে আমি বলব এটি পাঠ্যতার কারণে প্রায় পুরোপুরি গুরুত্বপূর্ণ এবং কী-স্ট্রোকের প্রয়োজনীয় পরিমাণের ক্ষেত্রে তা নয়। কেন?

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

এটি বলেছে, এটি যদি খুব ভার্জোজ হয় তবে এটি এমন পয়েন্টে পৌঁছতে পারে যেখানে এটি পাঠযোগ্যতার উপর প্রভাব ফেলে। আমি এরকম কিছু দেখতে পছন্দ করি:

foreach (স্ট্রিংলিস্টে স্ট্রিং)

প্রতি:

স্ট্রিংলিস্ট ভেরিয়েবল দ্বারা রেফারেন্স অনুসারে তালিকায় থাকা প্রতিটি স্ট্রিংয়ের জন্য

...যে কোন দিন!


0

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

অত্যধিক পরিশ্রমী এবং অস্বচ্ছ (পার্ল) মাত্রাতিরিক্ত ভার্বোস এবং শব্দযুক্ত (অ্যাপলস্ক্রিপ্ট) এর মতোই খারাপ।

ভারসাম্য, প্রবেশের ক্ষেত্রে কম বাধা, উচ্চ উত্পাদনশীলতা এবং সহজ রক্ষণাবেক্ষণের দরকার আছে।


-2

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


3
উম্ম ... রুবিতে 10000 এসএলওসি parse.yএকমত নয়। একটা কারণ কেন আছে প্রতি একক এক 7 বর্তমান-অর-শীঘ্রই উৎপাদন-প্রস্তুত রুবি প্রয়োগের ব্যবহার একই পার্সার এবং প্রতি একক রুবি বাস্তবায়ন যে কখনও তাদের বিকাশ করার চেষ্টা করেছে নিজের পার্সার ব্যর্থ হয়েছে।
Jörg W Mittag

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

-2

এটিকে সহজভাবে বলতে গেলে: সিনট্যাক্সের মতো কিছু আসে যায় না। শব্দার্থক আপনি এটি মাধ্যমে প্রকাশ করতে পারেন।


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

1
@ 9000: আমি হাসকেলে বেশ কয়েকটি ডিভাইস ড্রাইভার দেখেছি। আমি তাদের সাথে বিশেষত কোনও ভুল দেখতে পেলাম না। বিশদ যত্ন?
Jörg W Mittag

2
@ 9000, ডি সি ডিভাইস ড্রাইভার পাওয়া ঠিক কতটা কঠিন তা দিয়েও আপনি নিশ্চিত হন না যে আপনি একটি ভাল উদাহরণ বেছে নিয়েছেন।

1
@ 9000: এটি আমার বক্তব্য ছিল exactly সিনট্যাক্টিক কনস্ট্রাক্টের কংক্রিট প্রকৃতির কোনও বিষয় নেই, আপনি এটির সাথে এটিই প্রকাশ করেন। হাস্কেলের হুবহু সিনট্যাক্স সহ একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ , তবে এটি একটি ভিন্ন মূল্যায়ন কৌশল ব্যবহার করে প্রচুর হাস্কেল ভয়ঙ্করভাবে পারফর্ম করতে পারে বা এমনকি অসীম লুপগুলিতে আটকে যায়। যখন এটি সিনট্যাকটিক কনস্ট্রাক্টস (বা বিস্তৃত: ভাষার বৈশিষ্ট্যগুলি) নিয়ে আসে, এটি তাদের কংক্রিট সিনট্যাক্সের জন্য গুরুত্বপূর্ণ নয়, তবে তাদের শব্দার্থবিজ্ঞান, অর্থাৎ আপনি তাদের সাথে কী প্রকাশ করতে পারেন।
back2dos

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