প্রোগ্রামিংয়ের ভাষা পরিবর্তনের জন্য আরও স্থিতিশীল (সামঞ্জস্যপূর্ণ) করার কোনও ব্যবস্থা আছে কি?


14

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

ভাষা নকশা পর্যায়ে এমন কোনও স্থাপত্য নীতি বা পদক্ষেপ রয়েছে, যা এটিকে আরও স্থিতিশীল করতে সহায়তা করতে পারে যাতে ভাষা ডিজাইনাররা পশ্চাদপদ সামঞ্জস্যতা ভঙ্গ করতে ভয় পাবে না?


2
ভাষার স্থিতিশীলতা কোনও ধরণের ব্রেকিং পরিবর্তন করে না। আপনি আপনার প্রশ্ন পরিষ্কার করতে পারেন?
সাইমন বার্গোট

আমার কাছে আরও স্থিতিশীল হওয়ার অর্থ কম পরিবর্তন হচ্ছে (আশা করি কারণ সেগুলি প্রয়োজনীয় নয়), পিছনের দিক থেকে-অসামঞ্জস্যপূর্ণ পরিবর্তনের ঠিক বিপরীত। আপনি কোনটি সম্পর্কে আগ্রহী, বা আপনি উভয় সম্পর্কে আধা-স্বাধীনভাবে জিজ্ঞাসা করছেন?

@ সিমন এমন একটি ভাষা কীভাবে ডিজাইন করবেন যে আপনি যখন নতুন বৈশিষ্ট্য যুক্ত করার চেষ্টা করছেন আপনি তুলনামূলকতা ফিরে
ভাঙতে

@ ডেলানান, উভয়ই বলতে দিন।
ভাইচাস্লাভ কন্দ্রাটুক

@ ভাইকন্ড্রাটুক ভয় পাচ্ছেনা এমন কিছু নয় যে ভাষার ডিজাইনের পরিবর্তন হতে পারে। আরও ভাল প্রশ্ন হতে পারে "কোনও ভাষা কীভাবে ডিজাইন করা যায় যাতে নতুন বৈশিষ্ট্য যুক্ত করা ভাঙ্গা পরিবর্তনের কারণ না ঘটে ?"
এসভিচ

উত্তর:


6

ভাষার স্থায়িত্ব কোনও প্রযুক্তিগত সিদ্ধান্ত নয়। এটি ভাষা লেখক এবং ব্যবহারকারীদের মধ্যে একটি চুক্তি।

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

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

সুতরাং এটি একটি যোগাযোগ ও বিশ্বাসের সমস্যা। মরিচা ভাষার বিকাশ দেখুন। তারা কী পরিবর্তন করছে এবং কী রাখছে সে সম্পর্কে তারা স্ফটিক। যখন তারা কোনও প্রদত্ত বৈশিষ্ট্য সম্পর্কে কোনও সিদ্ধান্তে বিলম্ব করতে চায়, তখন তারা যা বৈশিষ্ট্য গেট বলে তা ব্যবহার করে। অন্যদিকে, কৌণিক দলটি তাদের 2.0-এর ঘোষণাকে কেন্দ্র করে প্রচুর ক্ষোভের মুখোমুখি হয়েছিল কারণ পরিবর্তনগুলি প্রত্যাশার চেয়ে বড় ছিল।

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


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

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

    • অপারেটর ওভারলোডিং, যেখানে ব্যবহারকারী-সংজ্ঞায়িত প্রকারগুলি বিদ্যমান অপারেটরগুলিকে তাদের নিজস্ব অর্থ নির্ধারণ করতে পারে। এটি গণিত-ভারী অ্যাপ্লিকেশনগুলিতে কোনও ভাষাকে অনেক বেশি উপভোগ করে।
    • আক্ষরিক ওভারলোডিং। আমি কি স্ট্রিং লিটারেলগুলিকে নিজের স্ট্রিং টাইপের হতে পারি? আমি কি বর্তমান পরিসরে সমস্ত সংখ্যাসূচককে বাইনগুম করে তুলতে পারি?
    • মেটাওবজেক্ট প্রোটোকল। যদি ভাষাটির বৈশিষ্ট্য না থাকে তবে আমি কি তাদের বর্তমান অবজেক্ট সিস্টেমের মধ্যে প্রয়োগ করতে পারি? আমি কি আলাদা পদ্ধতি সমাধানের আদেশ বাস্তবায়ন করতে পারি? কীভাবে অবজেক্টগুলি সংরক্ষণ করা হয় বা কীভাবে পদ্ধতি প্রেরণ করা যায় তা আমি পরিবর্তন করতে পারি?
  • রিগ্রেশন পরীক্ষা আছে। প্রচুর পরীক্ষা। কেবল ভাষা ডিজাইনারদের দ্বারা নয়, ব্যবহারকারীরাও লিখেছেন। কোনও বৈশিষ্ট্য যুক্ত করার পরে এই পরীক্ষাগুলি ভাঙ্গা হয়, সাবধানতার সাথে পিছনের সামঞ্জস্যের সুবিধার বিরুদ্ধে সেই বৈশিষ্ট্যটির সুবিধাগুলি বিবেচনা করুন।
  • আপনার ভাষা সংস্করণ। কেবল আপনার ডকুমেন্টেশনেই নয়, উত্স কোডেও। একবার আপনি এটি করেন, আপনার ভাষার একমাত্র অংশ যা পরিবর্তন করতে পারে না তা হ'ল এই সংস্করণ প্রগমা সিনট্যাক্স। উদাহরণ: র‌্যাকেট আপনাকে একটি উপভাষা নির্দিষ্ট করার অনুমতি দেয়। পার্ল আপনাকে অনুমতি দেয় use v5.20, যা পার্ল ভি 5.20 এর সমস্ত পেছনের-অসামঞ্জস্যিত বৈশিষ্ট্যগুলিকে সক্ষম করে। আপনি একক বৈশিষ্ট্যগুলি স্পষ্টভাবে লোড করতে পারেন use feature 'state'। অনুরূপ: পাইথনের from __future__ import division
  • আপনার ভাষা এমনভাবে ডিজাইনের বিবেচনা করুন যাতে কয়েকটি সংরক্ষিত শব্দের ফলাফল হয়। classক্লাসের সাথে পরিচয় করিয়ে দেওয়ার কারণে আমি বোঝাতে পারি না যে আমি স্থানীয় ভেরিয়েবলের নাম রাখতে সক্ষম হব না class। অনুশীলনে, এর ফলাফলগুলি এমন কীওয়ার্ডগুলিতে আসে যা ভেরিয়েবল বা পদ্ধতি ঘোষণার প্রবর্তন করে, ঘোষণাগুলি প্রবর্তনের জন্য টাইপের নাম ব্যবহারের সি-জাতীয় traditionতিহ্যের বিরোধিতা করে। $variablesপার্ল এবং পিএইচপি-র মতো আপনার জন্য সিগিল ব্যবহার করা অন্য বিকল্প ।

এই উত্তরের অংশগুলি গাই স্টিলের ভাষণ "একটি ভাষা বাড়ানো" (1998) ( পিডিএফ ) ( ইউটিউব ) দ্বারা প্রভাবিত হয় ।


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

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

1

আমি মনে করি একটি প্যাকেজ ম্যানেজারকে উন্নীত করা একটি গুরুত্বপূর্ণ গুরুত্বপূর্ণ পদক্ষেপ, যা নিজেও ভাষার সংস্করণ পরিচালনা করতে পারে।

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

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


তাত্ক্ষণিকভাবে যে যতটা সম্ভব ভাষাটি যতটা সম্ভব আমদানিযোগ্য প্যাকেজ / মডিউলগুলিতে সংজ্ঞায়িত করা উচিত
জে.কে.

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