সিগিলগুলি কি সোর্স কোডটি পড়া সহজ করে তোলে?


13

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

উদাহরণ;

 var $foo = "something";
 echo $foo;

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

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

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


19
আইএমও, কোড সিগিল ছাড়া আরও পঠনযোগ্য
জন ডিভোরাক

6
আমাকে দিনের নতুন শব্দ দেওয়ার জন্য @ জনডভোরাক +1। আমি sigilsকথোপকথনে আজ তিনবার ব্যবহার করার চেষ্টা করব ।

6
আইএমও এটি নির্ভর করে যদি আপনার সম্পাদকের সিনট্যাক্স হাইলাইট হয়।
কোডবার্ড

5
আপনি যদি ব্যবহার করেন var $x = ...বা type $x = ...তারপর আমার মনে হয় over ওভারকিল। আপনার যদি ঠিক তখন থাকে $x = ...তবে তা করার উপযুক্ত হতে পারে। বিশেষত যদি আপনি সাধারণ সম্পাদকগুলিতে সিনট্যাক্স হাইলাইটিং সমর্থন করতে না চান। তবে, অগ্রাধিকার হিসাবে, আমি পছন্দ করি নাsigils
কোডবার্ড

5
সিগিলগুলি হ'ল একটি প্রয়োগকৃত হবিয়ান স্বরলিপি
র‌্যাচেট ফ্রিক

উত্তর:


13

প্রকৃত প্রযুক্তিগত সম্ভাব্যতা এবং সীমাবদ্ধতা এই থ্রেড জুড়ে সাজানো কিছু নয়। আসুন প্রথমে সেগুলি পরিষ্কার করা যাক।

এখানে পিএইচপি-তে কী সম্ভব হচ্ছে তা এখানে রয়েছে:

  • পরিবর্তনশীল ভেরিয়েবল
  • $returnমূলশব্দের নাম সহ ভেরিয়েবলগুলি উদাহরণস্বরূপ বা ভেরিয়েবলের জন্য একই নাম ব্যবহার করতে সক্ষম হওয়া এবং একটি ফান্টন / ধ্রুবক উদাহরণস্বরূপ$__FILE__

সীমাবদ্ধতা বা বৈশিষ্ট্য যা $ উপসর্গের সাথে সম্পর্কিত নয়:

  • বাস্তবায়ন অন্যথায় ফাংশন এবং ভেরিয়েবলের মধ্যে পার্থক্য বলতে অক্ষম
  • পিএইচপি স্ট্রিং ইন্টারপোলেশন বা টেম্পলেট সিনট্যাক্স
  • প্রয়োজনীয় পরিবর্তনশীল ঘোষণা

এর অর্থ এমন কোনও প্রযুক্তিগত কারণ নেই যা আপনি করতে পারেন নি

foo = "something";
echo foo;

অথবা

foo = "something";
echo "foo = $foo";
//would print
//foo = something 

তবে আপনার থাকতে পারে না (ধরে returnনেওয়া একটি কীওয়ার্ড)

return = "something";

গুরুতর জটিলতা ছাড়াই। আপনি যদি উপসর্গটি ব্যবহার করেন $তবে কোনও সমস্যা হত না।

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


সম্পর্কে return = "something";, সি # এর "প্রাসঙ্গিক কীওয়ার্ড" রয়েছে, এটি ভাষা ডিজাইন করার সময়ও চেক করার মতো একটি বিকল্প।
লুসিপুবল

1
@ লিউসুবাল লিখিতভাবে যে সি # তে অবাক হওয়ার মতো একটি সিগিলের প্রয়োজন, তাই আপনি যদি এই কোডটি সংকলিত করতে চান তবে আপনাকে লিখতে হবে @return = "something;"। হ্যাঁ, কিছু প্রসঙ্গে প্রাসঙ্গিক কীওয়ার্ড রয়েছে তবে এগুলি সমস্তকে প্রাসঙ্গিক করে তোলার অর্থ আরও জটিল জটিল বাস্তবায়ন হবে।
ইসাইলিজা

7

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

একটি ব্যবহারকারীর লক্ষ্যবস্তু ভাষায় আমি কাজ করছি, আমি এমনকি আরও এগিয়ে গিয়ে শনাক্তকারীদের ক্ষেত্রে সংবেদনশীল হয়ে থাকি এবং স্পেস এবং অ্যাসোস্টোফেসের অনুমতি দেয়। এটি আমাকে এ জাতীয় পরিবর্তনশীল নামগুলি Karl's heightপ্রাকৃতিক ভাষার সাথে অনেক কাছাকাছি করতে দেয়।


1
ভেরিয়েবলের স্পেসগুলির জন্য +1, তবে কীভাবে এটি প্রয়োগ করা যায় সে সম্পর্কে আমার কোনও ধারণা নেই। নিশ্চিত না যে আমি পড়তে এত সহজ খুঁজে পেয়েছি। আমি শুধু এটি অভ্যস্ত না।
17:36

1
আমি ধারণা পছন্দ। তবে আমি সনাক্তকারীতে স্পেসের সাথে কোনও ভাষার জন্য পার্সার লিখতে পছন্দ করব না। :-)At Karl's for the night = true;
মার্টিন ইয়র্ক

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

2
যদিও সংবেদনশীলতার ক্ষেত্রে আন্তর্জাতিকীকরণের সমস্যা রয়েছে। আপনি যদি অনেকগুলি ভাষা থেকে অক্ষরগুলি মঞ্জুর করেন তবে আপনি কিছু লোকেলগুলিতে "একই" নামগুলিতে চলে যেতে পারেন তবে অন্যগুলিতে নয়।
লুস্কুবাল

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

7

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


পিএইচপি sigil তার Perl প্রভাব (যা দ্বারা প্রভাবিত হয়েছিলেন থেকে আসে awkএবং sh)। পার্লের সিগিলটি $বিভিন্ন ধরণের বিভিন্ন শনাক্ত করতে পারে তার চেয়ে কিছুটা বেশি :

  • $ স্কালে
  • @ তালিকা
  • % কাটা
  • & উবুন্টুতে
  • * typeglob

সিগিল চিহ্নিত করছে যে আপনি সারণী কাঠামোর কাঠামোর দিকে তাকিয়ে আছেন। পর্দার আড়ালে, *foofoo- এর প্রতীক টেবিল এন্ট্রি (এর মাধ্যমে অ্যাক্সেস করা হয়েছে - টাইপগ্লোব) এমন কিছু রয়েছে যা ফু হতে পারে। নেই $foo, @foo, %foo, বিন্যাস foo , &foo, filehandle foo বিন্যাস, ইত্যাদি ...

এটি অন্য একটি ভেরিয়েবলের একটি উপাধ তৈরি করতে দেয়:

#!/usr/bin/perl

$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;

print "$bar @bar\n";

এই মুদ্রণগুলি foo 1 2- পার্লে, সিগিলগুলি সত্যই এটির জন্য যা আপনাকে এই কাজটি করা উচিত নয় বরং তারা যা করছেন সেগুলির পিছনে এটি রয়েছে।

Sigils পাঠযোগ্যতা জন্য আপনাকে অনেক নেই, বরং তাই এক থাকতে পারে $fooএবং @fooনামস্থানে একটি সংঘর্ষের করেও (অন্যান্য ভাষায় তুলনা এক উভয় থাকতে পারে না যেখানে int foo; int[] foo;)


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

এর লাইন বরাবর লেক্সে কিছু:

typeChar  [is]
capLetter [A-Z]
letter    [a-z]
digit     [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%

এবং তারপরে আপনার মতো কোড থাকতে পারে

iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;

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

যাইহোক, এইভাবে সংজ্ঞায়িত কোনও ভাষা নিয়ে কাজ করার পরে আমি সম্ভবত সমস্যা ছাড়াই এটি পড়তে পারি।

কিছু লোক তাদের পছন্দ করে, কিছু লোক তা পছন্দ করে না। বিভিন্ন ফোরামে এটি নিয়ে বিতর্ক করার জন্য দুর্দান্ত পবিত্র যুদ্ধ রয়েছে এবং আপনি তাদের কতটা ব্যবহার করেছেন তা সত্যিই এটি ফোটে।

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

আসলেই কিছু যায় আসে না। কী ব্যাপার তা হল সিগিলগুলি যদি ভাষা ব্যবহার করে তবে সেগুলি ব্যবহার না করে। আপনি কি করতে সক্ষম হতে চান "123 $foo 456"বা আপনার অবশ্যই করা উচিত "123 " + foo + " 456"? এখানেই সিদ্ধান্ত নেওয়া উচিত।


1
স্ট্রিং ইন্টারপোলেশন যেমন "123 $foo 456"সিগিল উপসর্গ দ্বারা সক্ষম নয় এবং এটি সম্পূর্ণরূপে অর্থেগোনাল।
ইসাইলাইজা

1
এর ভেরিয়েবলগুলির বিভাজনের অংশ এবং এটি নির্ভর করে যে কোনও স্ট্রিংকে কীভাবে পার্স করে। সিগিলগুলি এটিকে আরও সহজ করে তুলতে পারে ( জাভাস্ক্রিপ্টে পরিবর্তনশীল দ্বিখণ্ডিত করার সর্বোত্তম পদ্ধতি অনুসারে এটি অন্যান্য উপায়ে করা যেতে পারে ? তবে এটি মূল ভাষার অংশ নয় isn't সিগিলগুলি যুক্তিযুক্তভাবে এটি এটিকে লিখতে এবং বুঝতে খুব সহজ করে তোলে

1
@ মিশেল না, ভেরিয়েবলের উপসর্গ রয়েছে এই সত্যটি স্ট্রিং ইন্টারপোলেশন বাস্তবায়ন সহজ বা শক্ত করে না। এগুলি মাত্র 2 সম্পূর্ণ সম্পর্কিত নয়। একজন মানব পাঠকের কাছে, $asdস্ট্রিং ইন্টারপোলেশন সিনট্যাক্সটিতে $ইতিমধ্যে ভেরিয়েবল উপসর্গের জন্য ব্যবহার করা ভাল ছিল তবে এটির প্রথম স্থানে স্ট্রিং ইন্টারপোলেশন বাস্তবায়নের প্রকৃত সম্ভাবনার সাথে কিছুই করার ছিল না।
ইসাইলিজা

2
@ এসাইলিজা আপনি কীভাবে সম্পর্কযুক্ত তা বর্ণনা করতে পারবেন? একদিকে যেমন, এন.ইউইকিপিডিয়া.আর্গ / উইকি / ভারিয়েবল_ইন্টারপ্লোলেশন - "যে ভাষাগুলি ভেরিয়েবল ইন্টারপোলেশন সমর্থন করে তাদের মধ্যে পার্ল, পিএইচপি, রুবি, টিসিএল, গ্রোভি এবং বেশিরভাগ ইউনিক্স শেল রয়েছে these এই ভাষাগুলিতে, পরিবর্তনশীল ইন্টারপোলেশন কেবল তখনই ঘটে যখন স্ট্রিং আক্ষরিক হয় ডাবল-কোটড, তবে এটি যখন একক-উদ্ধৃত হয় না তখন ভেরিয়েবলগুলি স্বীকৃত হয় কারণ ভেরিয়েবলগুলি এই ভাষাগুলিতে একটি সিগিল (সাধারণত "$") দিয়ে শুরু হয়। "

#@ মিশেলটি ভেরিয়েবল উপসর্গ এবং স্ট্রিং ইন্টারপোলেশন ব্যবহার করা ডলার প্রতীকটি পুরোপুরি পর্যাপ্ত পছন্দ (যার কেবল পাঠযোগ্যতার যুক্তি রয়েছে, বাস্তবায়নের ক্ষেত্রে কিছুই করার নেই, এটি উদাহরণস্বরূপ কোফিস্ক্রিপ্টে ব্যবহৃত হতে পারে And ভেরিয়েবলগুলি সহ #- বাস্তবে এটি ভেরিয়েবলগুলি
একেবারে

3

আমি সম্মত নই যে পিএইচপি ফানসি থেকে পৃথক পৃথক uses ব্যবহার করে। কমপক্ষে পিএইচপি-তে সি-এর মতো সিনট্যাক্স রয়েছে এবং ফানস () এর নামের পরে প্যারেন্স রয়েছে।

পিএইচপি- তে কেন about সে সম্পর্কে স্ট্যাক ওভারফ্লোতে এই পোস্টটি পড়ুন ।

অনেক জনপ্রিয় ভাষা যেমন সি, সি ++, সি #, জাভা ব্যবহার করে না $ এবং আমরা ফাংশন থেকে সহজ বর্ণ পৃথক করতে পারি।

পিএইচপি-তে সহায়তা করে, উদাহরণস্বরূপ, আপনি যখন লিখবেন: প্রতিধ্বনি "var = $ var"

Without ছাড়া এই কৌশলটি অসম্ভব হবে।


আরও বেশি অর্থ দেয় এমন +1 আহ। ধন্যবাদ।
Reactgular

3
সিগিল থাকার একটি ভাষার সাথে স্ট্রিং ইন্টারপোলেশন থাকার কোনও সম্পর্ক নেই যেমন আপনার উদাহরণ হিসাবেecho "var = $var"

4
-1। পিএইচপি সিনট্যাক্স quirks কিছু প্রকৃত সীমাবদ্ধতার কারণে নয় তবে ব্যাকরণের নিয়মগুলি খুব খারাপভাবে ডিজাইন করা হয়েছে, যদি একেবারেই ডিজাইন করা থাকে। এ কারণেই তাদের সক্ষম করার জন্য হ্যাকের প্রয়োজন fn()[]যেখানে বোধগম্য ব্যাকরণ যেমন বাক্সের বাইরে চিন্তা না করেই কাজ করে।
ইসাইলাইজা

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

@ ইজকাটা আপনি কোন ভাষায় ভেরিয়েবল ব্যবহার করেন তার সাথে স্ট্রিং ইন্টারপোলেশন সিনট্যাক্সের কোনও সম্পর্ক নেই। তবে এটি এই উত্তরে অন্তর্ভুক্ত ছিল, সুতরাং -১ ...
ইসাইলাইজা

3

এই সমস্ত উত্তর পরে, আমি ম্যাথিউ ফস্কারিনি আরও কিছু পয়েন্ট দিতে চাই।

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

এই LEXER এর পার্শ্ব প্রতিক্রিয়া , কারণ এটি একটি টোকেনকে চিনতে সক্ষম।

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

পিএস মাইকেলটি থেকে খুব ভাল মন্তব্য।


দুর্দান্ত লিঙ্কটির জন্য +1 ধন্যবাদ। আমি এটি ব্যবহার করে শেষ করেছি, তবে আপনার লিঙ্কটি আরও ভাল দেখাচ্ছে। গোল্ডপার্সার.অর্গ
অগস্ট

আপনার লিঙ্কের জন্য ধন্যবাদ। আমি এই সোনার পার্সারটি আগে কখনও দেখিনি। আকর্ষণীয়ও লাগে।
Ruslan Zasukhin

@ রাস্লানজাসুখিন যদি আপনি আমার উত্তরের উল্লেখ করে থাকেন তবে আমি কখনই বলিনি যে কীওয়ার্ড সক্ষম করার বিকাশকারীর উদ্দেশ্য's আমি কেবল বলেছি যে ভেরিয়েবলের নামের হিসাবে কীওয়ার্ড ব্যবহার করা প্রযুক্তিগতভাবে সম্ভব যখন ভেরিয়েবলগুলির মতো একটি প্রতীক সহ প্রিফিক্স করা হয় $। এছাড়াও "স্ট্রিংয়ের অভ্যন্তরে ভেরিয়েবল স্থাপনের ক্ষমতা" ভেরিয়েবলের মতো একটি প্রতীকের সাথে উপস্থাপিত হওয়ার কারণে নয় $। অর্থাৎ "123 $foo 456"যদি পরিবর্তনশীল সিনট্যাক্স মত হল এমনকি যদি কাজ করবে foo = 3বা @foo = 3। তারা একে অপরের সাথে সম্পর্কিত নয়।
ইসাইলিজা

3

... একটি সিগিল অনুমতি দেয়:

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

  • ভেরিয়েবলের নাম হিসাবে সংরক্ষিত কীওয়ার্ড বা ফাংশনের নাম ব্যবহার করুন । মাঝে মাঝে আমি সেই কয়েকটি নাম ভেরিয়েবলের জন্য সঠিক হিসাবে খুঁজে পেয়েছি (যেমন কোনও ফাংশন সংজ্ঞায়িত করার সময়) এবং সিগিলগুলি তাদের ব্যবহার করার অনুমতি দেওয়ার জন্য ধন্যবাদ জানায়। $countcount()

এছাড়াও আমি ফাংশনটির নামটি ঘন ঘন পুনঃব্যবহার করার জন্য ঘটতে থাকি কারণ কোনও ফাংশনটির ফলটি থ্রোওয়ে ভেরিয়েবলে রাখা হয়, যেমন:

$isdir=isdir($dir);

if(/* complex condition implying $isdir */) {
/* etc */
}


1
জেডএইচআর, এর মানে আরও ভাল কী? সি ++ তে আমরা আমাদের সমস্ত ভেরিয়েবলগুলি $ ব্যতীত লিখি এবং আমরা পুরোপুরি এবং সহজে তাদের পার্থক্য করি। উদাহরণ: {int z = 0; z = 55; z- র (য); C এবং সি ++ এ আমরা কার্যকারিতা নামও ব্যবহার করতে পারি যদি প্রয়োজন হয়, উদাহরণস্বরূপ কাজ করতে পয়েন্টার।
রুসলান জাসুখিন

@ রাস্লানজাসুখিন, কম্পিউটার নিরক্ষর, আপনি কিছু জানেন? তাদের সি ++ শেখানোর চেষ্টা করুন, আপনি অবাক হয়ে যাবেন।
জেডজেআর

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