আমরা সকলেই দেখেছি পূর্ণসংখ্যার, ভাসমান পয়েন্ট, স্ট্রিং এবং মাঝে মাঝে দশমিক প্রকার। আপনি সবচেয়ে কার্যকর বা অনন্য বা দরকারী ধরণের সম্মুখীন হয়েছিলেন, দরকারী বা না?
আমরা সকলেই দেখেছি পূর্ণসংখ্যার, ভাসমান পয়েন্ট, স্ট্রিং এবং মাঝে মাঝে দশমিক প্রকার। আপনি সবচেয়ে কার্যকর বা অনন্য বা দরকারী ধরণের সম্মুখীন হয়েছিলেন, দরকারী বা না?
উত্তর:
আমি ছোট হব:
Maybe a
হাস্কেলে
এই সহজ নির্মাণের সাহায্যে, ভাষা ক্র্যাশগুলির সমস্যা সমাধান করে বা NullPointerException
এটি খুব সুন্দরভাবে টনি হোয়ের "ওয়ান মিলিয়ন ভুল" এর পাশ কাটিয়েছে :)
স্পষ্টভাবে, একটি ileচ্ছিক উপস্থিতি সংকলন সময়ে পরীক্ষা করা হয়েছে? এটি স্বপ্নের মতো ...
Option
নামটি পছন্দ করতে হবে তা স্বীকার করতে হবে । কেন না Optional
! এটি হতে পারে কারণ আমি কোনও স্থানীয় বক্তা নই, তবে আমার Option
কাছে "alচ্ছিক" অর্থটি প্রকাশ করে না।
Maybe
নাম বুদ্ধিমান: "তোমার কি আছে?" "হতে পারে একটি আন্ত"। যাইহোক, সত্যিই ঝরঝরে বিট এটি একটি ফান্টেক্টর এবং একটি monad উভয়ই, স্পষ্ট ভাষায় বলতে গেলে, আপনি নিখরচায় বিনা মূল্যে প্রচার পান। আপনাকে কখনই ফাংশনগুলির ভিতরে বা আপনার কোডের মাঝখানে নাল চেক লাগাতে হবে না; আপনার কোডটির একেবারে শেষে আপনার এটি পরীক্ষা করা প্রয়োজন, যদি না হয়।
আমি বহুবার্ষিকভাবে পছন্দ করি void *
। এটি সম্ভবত আমার মধ্যে গভীরভাবে ত্রুটিযুক্ত কোনও কিছুর লক্ষণ।
void *
এবং পাস্কল / ডেলফি আছে Pointer
।
লুয়ার একটি বিল্ট-ইন টেবিল রয়েছে যা সবচেয়ে চিত্তাকর্ষক। এটি একটি অন্তর্নির্মিত হ্যাশটেবল এবং একটি ভেক্টর রয়েছে, এবং মেটাটেবলের ব্যবহারের সাথে একটি পদ্ধতিগত ভাষায় অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের মৌলিক ভিত্তি হতে পারে।
সারণীর প্রতিটি সূচী যে কোনও মূল ভাষার কাঠামো (সংখ্যা, বুলিয়ান, স্ট্রিং, ফাংশন-চোখ, ফাংশনগুলি লুয়া - এবং টেবিলগুলিতে প্রকারভেদ) পেতে পারে।
আমি অবাক হয়েছি এখনও কেউ মোনাদস বা বীজগণিত ডেটাটাইপস উল্লেখ করেনি।
লিস্পের দুটি আকর্ষণীয় প্রকার রয়েছে: t
এবং nil
। তাদের সম্পর্কে আকর্ষণীয় বিষয় হ'ল সবকিছু একটি t
এবং কিছুই হ'ল না nil
।
nil
একটি t
?
SNOBOL: প্যাটার্ন (মূলত একটি এলএল (1) পার্সার ট্রি, যদি আমি এটি সঠিকভাবে মনে করি)।
ফোর্টরানের সাধারণ ব্লক রয়েছে; এটি আধুনিক ভাষাগুলির মধ্যে অন্যতম একটি সাধারণ ডেটা, বা দক্ষতার সাথে ডেটা ভাগ করে নেওয়ার একটি অস্বাভাবিক উপায়।
ফোর্টরান 95 এর অন্তর অন্তর্নির্মিত ধরণের এবং অন্তর্নির্মিত বিরতি গণিত রয়েছে।
হাস্কেল-তে পাওয়া মোনাদিক ধরণ ছাড়া তালিকাটি সম্পূর্ণ হবে না । সেগুলি বুঝতে আপনার কিছুটা চেষ্টা করা দরকার।
ডেলফির সেট রয়েছে ( এটিও দেখুন ), যা আমি বিশ্বাস করি না যে অন্য ভাষায় একইভাবে প্রয়োগ করা হয়েছে।
এটি ডাটাবেসে একাধিক পরিবর্তনশীল বৈশিষ্ট্যগুলিকে একটি হাওয়া বাছাই করে তোলে: ডি
আমি এটা সত্যিই শুধুমাত্র অদ্ভুত একটি শাস্ত্রীয় আর্কিটেকচারের উপর প্রোগ্রামিং থেকে আসছে অনুমান, কিন্তু অবশ্যই কঠিন ধরনের কেউ আমায় আমার মাথার চারপাশে প্রথমে মোড়ানো ছিল কোয়ান্টাম রেজিস্টার , যা শো আপ QCL ।
পিএল / এসকিউএল আপনাকে প্রকারের ভেরিয়েবলগুলি ঘোষণা করতে দেয় my_table.some_column%type
... আমি দেখতে পেয়েছি যে এটি বেশ জঘন্য।
এবং সি # আপনাকে অবজেক্টগুলি অযোগ্য বা না হিসাবে ঘোষণা করতে দেয়, যদিও আমি নিশ্চিত নই যে এটি একটি প্রকার হিসাবে গণ্য।
cursor%rowtype
এটি আরও মজাদার: এটি একটি গতিশীলভাবে তৈরি রেকর্ড টাইপ যা কার্সারের কোয়েরিটি কলামগুলিতে প্রত্যাবর্তন করে তা প্রতিফলিত করে।
আমি যখন ছোট ছিলাম তখন ইউফোরিয়ার ডেটা টাইপের জন্য আমার হৃদয়ে একটি নরম জায়গা ছিল
এটি যেমন গঠিত হয়:
Object
-> Atom
-> Sequence
সিকোয়েন্স = অবজেক্টের ক্রম
-- examples of atoms:
0
98.6
-1e6
-- examples of sequences:
{2, 3, 5, 7, 11, 13, 17, 19}
{1, 2, {3, 3, 3}, 4, {5, {6}}}
{{"jon", "smith"}, 52389, 97.25}
{} -- the 0-element sequence
দেখুন: রেফ ম্যানুয়াল
দ্রষ্টব্য: "জন" আসলে ASCII মানগুলির ক্রম লেখার একটি ছোট্ট উপায়। যেমন "ABCDEFG"
হিসাবে একই{65, 66, 67, 68, 69, 70, 71}
ফেলিক্সের বেনামে যোগফল রয়েছে। টাইপটি এমনভাবে লেখা:
typedef il = int + long;
এটি তত্ত্ব হিসাবে হবে। মানগুলি কুৎসিত:
case 0 of il (1)
case 1 of il (2L)
সম্ভবত একটি ইউনিট যোগ ব্যতীত 3 = 1 + 1 + 1
case 0 of 3
case 1 of 3
যা দুর্ভাগ্যক্রমে "সি সামঞ্জস্য" এর জন্য শূন্য উত্স গণনা ব্যবহার করে। কাঠামোগত টাইপযুক্ত বীজগণিত ধরণের জন্য বেনামে যোগফলগুলি প্রয়োজনীয়, উদাহরণস্বরূপ:
(1 + T * li) as li
টি-এর একটি (এককভাবে সংযুক্ত) তালিকা, আমি নামমাত্র টাইপড পরিমাণের বিষয়ে জানি অন্য সমস্ত ভাষাগুলি, যেখানে নিজেই টাইপ এবং কনস্ট্রাক্টর উভয়েরই নাম দিতে হবে।
উপরে ব্যবহৃত শর্টহ্যান্ড 3টি দুর্দান্ত, নিম্নলিখিতটি গ্রন্থাগারে রয়েছে:
typedef void = 0;
typedef unit = 1;
typedef bool = 2;
এবং এই স্বরলিপি:
T ^ 3
স্থির দৈর্ঘ্য 3 এর অ্যারে .. 3 একটি পূর্ণসংখ্যা নয় 3 টি ইউনিটের যোগফল। কত দুঃখজনক বিষয় সাহসী নয় :)
q / kdb + এর মধ্যে অন্তর্নির্মিত টেবিল রয়েছে। এটি যেহেতু এটি একটি প্রোগ্রামিং ভাষা এবং একের মধ্যে কলাম-ভিত্তিক ডাটাবেস, তাই লিনকিউ বা ওআরএমের দরকার নেই।
উদাহরণস্বরূপ, এটির মতো একটি সারণী তৈরি করতে পারেন ( বেশিরভাগ ভাষার :
চেয়ে অ্যাসাইনমেন্টটি আলাদা করা হয় =
):
people:([]name:`Joe`Amy`Sarah; age:17 15 18; GPA:3.5 3.8 3.33)
এখন আমি আমার টেবিলটি দেখতে পারি:
q)show people
name age GPA
--------------
Joe 17 3.5
Amy 15 3.8
Sarah 18 3.33
এবং আমি এটি জিজ্ঞাসা করতে পারেন:
q)select from people where GPA>3.4
name age GPA
------------
Joe 17 3.5
Amy 15 3.8
আমি প্রথম ইউনিয়নটি সি ++ এ পেয়েছি যখন তাদের সম্পর্কে প্রথম শুনলাম তখন 'কৌতূহলপূর্ণ' হতে পারি। আমি এখনও এমন দৃশ্যে পৌঁছুতে পারি নি যেখানে তারা বাস্তবায়নের সুস্পষ্ট পছন্দ।
মাল্টি-প্যারামিটার ফাংশনটি F # এবং অন্যান্য কার্যকরী ভাষায় কী হয়ে যায় তার চারপাশে আমি এখনও আমার মাথা গুটিয়ে দেওয়ার চেষ্টা করছি। মূলত ইন্ট এফ (ফু, বার) ফানক এফ (ফু) হয়ে যায়
এটি দুটি পরামিতি ফাংশন যা একটি ফু এবং একটি বার নেয় এবং একটি পূর্বাবস্থায় ফিরে আসে আসলে একটি প্যারামিটার ফাংশন যা একটি ফু নেয় এবং একটি প্যারামিটার ফাংশন দেয় যা একটি বার নেয় এবং কোন পূর্বে ফিরে আসে। তবে আপনি যদি চান তবে দুটি পরামিতি সহ এটি কল করতে পারেন। আমি এটি সম্পর্কে এখানে একটি পোস্ট লিখেছিলাম
f(Foo, Bar)
ফাংশন হিসাবে একই f(Foo)
আরেকটি ফাংশনটি যে f'(Bar)
যা মান কত ফেরৎ f(Foo, Bar)
ফিরে আসবে। এটি হ'ল যদি আপনি 'ফু' যুক্তিটি ঠিক করেন তবে 'বার' নয়, আপনার একটি ফাংশন রয়েছে যা 'ফু' উপর নির্ভর করে না তবে এখনও 'বার' যুক্তির উপর নির্ভর করে। এটি কার্যকরী ভাষার জন্য সাধারণ; একে বলা হয় 'কারিটিং'।
এগুলি অত্যন্ত শক্তিশালী তবুও কমপ্যাক্ট অবজেক্ট।
যে ভাষাগুলি এগুলি তৈরি করেছে সেগুলির পাঠ্যগুলি ম্যানিপুলেট করার দুর্দান্ত ক্ষমতা রয়েছে (পার্স শব্দটি শুনতে পাবে না তারা এতো ভাল নয়)।
কার্যনির্বাহী পরিবারে মুষ্টিমেয় ভাষার এক ধরণের একতা রয়েছে যা ইউনিটি নামে পরিচিত। ইউনিটির ধরণের বিশিষ্ট বৈশিষ্ট্য হ'ল এগুলিতে কোনও তথ্য নেই, সেগুলি শূন্য বিট প্রকারের। একটি typeক্যের ধরণের (কিছু প্রকারভেদে) এটির একমাত্র মান বা (বেশিরভাগ ক্ষেত্রে) কেবলমাত্র একটি মান হয় (এটি নিজেই কোনও প্রকার নয়)।
এগুলি দরকারী, যদিও এগুলি পৃথক প্রকারের। যেহেতু আপনি স্পষ্টভাবে এক unityক্য প্রকার থেকে অন্য unityক্য প্রকারে রূপান্তর করতে পারবেন না, তাই আপনি খুব দক্ষ এবং অভিব্যক্তিক উপায়ে কাজ করার জন্য স্থিতিশীল প্রকারের পরীক্ষা করতে পারেন।
Ityক্য হ'ল বেশিরভাগ ভাষা যেমন এনামগুলিকে বর্ণনা করে, কোনও নতুন প্রকারকে অন্য ধরণের সংজ্ঞায়িত সেট হতে দেয় বা সম্ভবত প্রকারের বর্ণনা দিতে পারে, যেগুলি সাধারণত একটি সাধারণ ধরণের মান হতে পারে (বলুন, একটি পূর্ণসংখ্যা) , বা কোনও মান রয়েছে যা কোনও মূল্য নেই।
কিছু সংখ্যক ভাষা যা ব্যবহারকারীর সংজ্ঞায়িত unityক্য প্রকারের সমৃদ্ধিকে নিয়োগ করে না তাদের মধ্যে এখনও কোনও না কোনও রূপে একতা রয়েছে। উদাহরণ হিসেবে বলা যায়, পাইথন অন্তত তিনটি ঐক্য ধরনের আছে, NoneType
, NotImplementedType
, এবং EllipsisType
। এটি আকর্ষণীয় যে প্রথম দুটি উভয়ই "মূল্যহীন" এর মতো কিছু বোঝায় তবে তৃতীয়টি জটিল মানগুলিতে ব্যবহৃত হয় (বিশেষত, স্লাইস এক্সপ্রেশন) আকর্ষণীয় বিশেষ ক্ষেত্রে প্রতিনিধিত্ব করতে।
NULL
Unityক্যের অন্যান্য আকর্ষণীয় উদাহরণগুলি বর্গ এবং undefined
জাভাস্ক্রিপ্টে অন্তর্ভুক্ত , তবে void
সি বা সি ++ এ নয়। void
ব্যর্থ। যদিও এটি কোনও তথ্যের মান বর্ণনা করে তবে কোনও প্রকৃত মান টাইপ হতে পারে না void
।
রুবির ধরণটি symbol
কিছুটা অস্বাভাবিক। এটি মূলত একক প্যাটার্ন প্রয়োগকারী একটি স্ট্রিং। অথবা অন্যকিছু. এখনও অবধি, আমি খুঁজে পেয়েছি প্রতীকগুলির সর্বোত্তম ব্যবহারগুলি ট্র্যাকিং রাজ্যগুলিতে এবং ফাংশনের নামগুলি পাস করার ক্ষেত্রে।
ব্যবসায়িক কাজে ব্যবহৃত এক বিশেষ ধরনের কম্পিউটার ভাষা। মূলত মাত্র দুটি মৌলিক ডেটা টাইপ, স্ট্রিং এবং সংখ্যা, তবে আপনাকে সেটিকে ঠিক কীভাবে মেমোরিতে রেখে দেওয়া হয়েছে তা নির্দিষ্ট করতে হবে , যেমন PIC S9(5)V99 COMP-3
।
S
= স্বাক্ষরিত, 9(5)
= 5 টি সংখ্যা, V
= অন্তর্ভুক্ত দশমিক বিন্দু, 99
= 2 আরও সংখ্যা, COMP-3
= বিসিডি + চিহ্ন নিবিবল।
ক্লিপারের 'কোড ব্লক' ছিল, যা বেনামে পদ্ধতির মতো। এগুলি প্রায়শই কলব্যাকের একটি ফর্ম হিসাবে প্রয়োজনীয় হিসাবে মূল্যায়িত করা যেতে পারে এবং মূল্যায়ন করা যেতে পারে। ডেটা সারণী উপস্থাপন করার সময় আপনি প্রায়শই ফ্লাইতে গণনা সম্পাদনের মতো জিনিসের জন্য ব্যবহার করেন।
ভিএইচডিএল শারীরিক প্রকারের আছে। এই জাতীয় ধরণের আক্ষরিকের মধ্যে একটি মান এবং একক উভয়ই থাকে। আপনি পাশাপাশি subunits সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, একটি পূর্বনির্ধারিত শারীরিক ধরণ হ'ল time
:
type time is range <machine dependant> to <machine dependant>
units
fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
Ms = 1000 us;
sec = 1000 ms;
min = 60 sec;
hr = 60 min;
end units;
অপারেটর ওভারলোডিংয়ের সাথে একসাথে আপনি খুব আকর্ষণীয় জিনিস সংজ্ঞায়িত করতে পারেন।
Clojure আকর্ষণীয় কারণ এটি "বিমূর্ত" একটি মেটা ধারণা ধারণ করে যা ভাষাটি বিস্তৃত করে। উদাহরণ:
কিছুটা হলেও বিমূর্ততাগুলি " একক দায়িত্বের নীতি "টিকে চূড়ান্ত দিকে নিয়ে যায়। আপনি যে কার্যকারিতা চান তা রচনা করার জন্য এটি আপনার হাতে রইল তবে আপনি কীভাবে এগুলিকে একসাথে আটকিয়েছেন সে সম্পর্কে আপনি অত্যন্ত নমনীয় হতে পারেন।
উদাহরণস্বরূপ, যদি আপনি উত্তরাধিকার সহ কোনও শ্রেণিভিত্তিক ওওপি সিস্টেম চান, আপনি তুলনামূলকভাবে দ্রুত এই মূল বিমূর্ততাগুলির মধ্যে একটি তৈরি করতে পারেন।
অনুশীলনে, বিমূর্তিগুলি নিজেই এমনভাবে ডিজাইন করা হয় যে একাধিক বাস্তবায়ন সম্ভব হয়, যেমন ক্লোজার.আলং এর মতো নির্দিষ্ট ইন্টারফেসের মাধ্যমে sequ
এই বিষয় সম্পর্কে একটি আকর্ষণীয় ভিডিও আছে: অ্যাবস্ট্রাকশন আর্ট
গুগলস গোতে একটি "চ্যানেল" টাইপ রয়েছে যা বেশ অনন্য।