প্রোগ্রামিং ভাষা
উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে
প্রোগ্রামিং ভাষা (ইংরেজি ভাষায়: programming language) হচ্ছে এক ধরনের কৃত্রিম ভাষা (artificial language) যা কোন যন্ত্রের, বিশেষ করে কম্পিউটারের আচরণ নিয়ন্ত্রণ করার জন্য ব্যবহার করা হয়। মানুষের মুখের স্বাভাবিক ভাষাগুলোর মত প্রোগ্রামিং ভাষাগুলোও বাক্যতাত্ত্বিক (syntactic বা বাক্যস্থিত বিভিন্ন পদের মধ্যে সম্পর্ক কী হবে সে-সংক্রান্ত) ও আর্থ (semantic বা শব্দের অর্থসংক্রান্ত) নিয়ম মেনে চলে।
তথ্য সুবিন্যস্তকরণ ও প্রক্রিয়াকরণে এবং অ্যালগোরিদমসমূহ নির্ভুলভাবে প্রকাশ করতে প্রোগ্রামিং ভাষা ব্যবহার করা হয়। কিছু কিছু লেখক প্রোগ্রামিং ভাষা বলতে কেবল সেই সব ভাষাকে বোঝান যেগুলো সম্ভাব্য সমস্ত অ্যালগোরিদম প্রকাশে সক্ষম; [১] কখনো কখনো সরল ধরনের কৃত্রিম ভাষাগুলোকে প্রোগ্রামিং ভাষা না বলে কম্পিউটার ভাষা (computer language) বলা হয়।
এ পর্যন্ত বহু হাজার প্রোগ্রামিং ভাষা সৃষ্টি করা হয়েছে [২], এবং প্রতি বছরই নতুন নতুন প্রোগ্রামিং ভাষা উদ্ভাবন করা হচ্ছে।
সূচিপত্র |
[সম্পাদনা] সংজ্ঞা
প্রোগ্রামিং ভাষার বিভিন্ন বৈশিষ্ট্যের ওপর ভিত্তি করে এর সংজ্ঞা দেয়া যায়:
- কাজ (Function): প্রোগ্রামিং ভাষা হচ্ছে এক ধরনের ভাষা যা দিয়ে কম্পিউটার প্রোগ্রাম লেখা যায়, এবং এই প্রোগ্রামগুলোর সাহায্যে কম্পিউটারকে কোন গণণামূলক কাজ করার নির্দেশ দেয়া যায় [৩], এবং সম্ভব হলে কম্পিউটারের বাইরের যন্ত্রাংশ যেমন প্রিন্টার, রোবট[৪], ইত্যাদি নিয়ন্ত্রণ করা যায়।
- লক্ষ্য (Target): প্রোগ্রামিং ভাষাগুলো থেকে স্বাভাবিক ভাষাগুলোর মধ্যে পার্থক্য হচ্ছে স্বাভাবিক মুখের ভাষা কেবল মানুষে-মানুষে যোগাযোগের জন্য ব্যবহৃত হয়, অন্যদিকে প্রোগ্রামিং ভাষাগুলোর মানুষকে যন্ত্রের কাছে আদেশ পৌঁছে দিতে সাহায্য করে। কিছু প্রোগ্রামিং ভাষা এক যন্ত্রকে আরেক যন্ত্রের সাথে যোগাযোগে সাহায্য করে। যেমন কিছু প্রোগ্রাম পোস্টস্ক্রিপ্ট প্রোগ্রাম তৈরির মাধ্যমে প্রিন্টার বা ডিসপ্লে নিয়ন্ত্রণ করতে পারে।
- সংগঠন (Constructs): প্রোগ্রামিং ভাষায় সাধারণত কিছু সংগঠন থাকে যেগুলো দিয়ে বিভিন্ন উপাত্ত কাঠামো (data structure) সংজ্ঞায়িত করা হয় কিংবা নির্দেশ পালনের প্রবাহ বা ধারা নিয়ন্ত্রণ করা হয়।
- প্রকাশক্ষমতা (Expressive power): গণনা তত্ত্বে (theory of computation) প্রোগ্রামিং ভাষাসমূহকে তারা কী ধরনের গণনা (computation) প্রকাশ করতে পারে, তার ওপর ভিত্তি করে শ্রেণীকরণ করা হয় (চম্স্কি অনুক্রম দেখুন)। সমস্ত টুরিং-সম্পূর্ণ ভাষাগুলো একই অ্যালগোরিদমের সেট বাস্তবায়ন করতে পারে। টুরিং-সম্পূর্ণ না হলেও কিছু ভাষাকে প্রায়ই প্রোগ্রামিং ভাষা বলা হয়, যেমন - অ্যানসাই/আইএসও এসকিউএল এবং চ্যারিটি। [৫][৬]
অ-গণনামূলক ভাষা (non-computational language), যেমন এইচটিএমএল-এর মত মার্ক-আপ ভাষা কিংবা বিএনএফ-এর মত বিধিবদ্ধ ব্যাকরণকে (formal grammar) সাধারণত প্রোগ্রামিং ভাষা হিসেবে গণ্য করা হয় না। অনেক সময় একটি প্রোগ্রামিং ভাষা অন্য একটি অ-গণনামূলক (ধারক) ভাষার মধ্য গ্রথিত থাকে।
[সম্পাদনা] উদ্দেশ্য
প্রোগ্রামিং ভাষাগুলো কম্পিউটারকে নির্দেশ দেওয়ার জন্য ব্যবহৃত হয়। সে কারণে মানুষের মুখের ভাষা ও অন্যান্য অভিব্যক্তি থেকে এই ভাষাগুলোর প্রকৃতি আলাদা। প্রোগ্রামিং ভাষাতে সম্পূর্ণতা ও নির্ভুলতার মূল্য দেয়া হয়। স্বাভাবিক ভাষায় কথা বলে বা লেখার মানুষেরা একই শব্দের বহু অর্থ করতে পারেন এবং ছোটখাট ভুল করতে পারেন, কিন্তু তাদের মনের কথা প্রকাশ এতে তেমন ব্যাহত হয় না। অন্যদিকে, কম্পিউটার কেবল তা-ই পালন করে যা তাকে নির্দেশ দেয়া হয়, এবং কম্পিউটারের পক্ষে প্রোগ্রামার আসলেই কোন্ নির্দেশ দিতে চেয়েছিলেন তা বুঝতে পারা সম্ভব নয়। কোন প্রোগ্রামার প্রোগ্রামিং ভাষার সংজ্ঞা (language definition), প্রোগ্রাম, এবং প্রোগ্রামের ইনপুট – এই তিনের সমন্বয়ে সম্পূর্নরূপে নির্দেশ করে দেন প্রোগ্রামটি চালালে কী ঘটবে।
অনেক প্রোগ্রামিং ভাষা একেবারে শূন্য থেকে নকশা করা হয়েছে, তারপর এগুলোতে প্রয়োজন অনুসারে পরিবর্তন আনা হয়েছে, অন্য প্রোগ্রামিং ভাষার সাথে এদের সম্মিলন ঘটানো হয়েছে, এবং পরিশেষে এগুলো বাস্তব ব্যবহার থেকে পরিত্যক্ত হয়েছে। একটি “সার্বজনীন” কম্পিউটার ভাষা তৈরি করার অনেক চেষ্টা করা হয়েছে, যে ভাষা হবে যেকোন উদ্দেশ্যে ব্যবহারযোগ্য, কিন্তু কোন চেষ্টাই সফল হয়নি।[৭] কাজের প্রকৃতির বৈচিত্র্যের কারণেই বিভিন্ন বিচিত্র কম্পিউটার ভাষা উদ্ভাবিত হয়েছে:
- শখের প্রোগ্রাম-লেখকেরা ছোট ছোট স্ক্রিপ্ট আকারের প্রোগ্রাম লেখেন, আবার শত শত প্রোগ্রাম-লেখক মিলে বিশাল ব্যবস্থা গড়ে তোলেন।
- প্রোগ্রাম-লেখকদের দক্ষতা তাদের পছন্দের প্রোগ্রামিং ভাষা কী হবে তা নির্ধারণ করে। নবিশ প্রোগ্রাম লেখক চান সরলতা, অন্যদিকে প্রতিষ্ঠিত প্রোগ্রাম-লেখকেরা জটিল ভাষাতে কাজ করতে অস্বাচ্ছন্দ্য বোধ করেন না।
- মাইক্রোকন্ট্রোলার থেকে শুরু করে সুপারকম্পিউটার – বিভিন্ন গতি, আকার ও জটিলতার যন্ত্রের ওপর নির্ভর করে প্রোগ্রাম কী ভাষায় লেখা হবে।
- কিছু প্রোগ্রাম একবার লেখা হয় ও যুগ যুগ ধরে পাল্টানো লাগে না। আবার কিছু প্রোগ্রামে প্রতিনিয়ত পরিবর্তন সাধন করতে হয়।
- প্রোগ্রাম-লেখকদের পছন্দেরও ব্যাপার আছে। প্রোগ্রামাররা সাধারণত একটি নির্দিষ্ট ভাষাতে তাদের সমস্যাগুলো নিয়ে চিন্তা করতে ও আলোচনা করতে পছন্দ করেন।
নিয়তই প্রোগ্রামিং ভাষাগুলোর উন্নতিসাধন করার চেষ্টা চলে এবং প্রায়ক্ষেত্রেই লক্ষ্য থাকে ভাষাতে উচ্চস্তরের বিমূর্তায়ন ব্যবহার করে সমস্যা সমাধানের ক্ষমতা বাড়ানো। একেবারে শুরুর দিককার প্রোগ্রামিং ভাষাগুলো কম্পিউটারের হার্ডওয়্যারের সাথে খুবই ঘনিষ্ঠভাবে জড়িত ছিল। নতুন প্রোগ্রামিং ভাষাগুলোতে অনেক নতুন ফিচার বা বৈশিষ্ট্য যোগ করা হয় যাতে প্রোগ্রামারদের কীভাবে তাদের প্রোগ্রামের হার্ডওয়্যার নির্দেশে রূপান্তরিত হবে তা নিয়ে চিন্তা করতে না হয়। ফলে প্রোগ্রামাররা এখন একই সময়ে আগের চেয়ে অনেক বেশি প্রোগ্রাম লিখতে পারেন[৮]
প্রোগ্রামিং-এর জন্য বিশেষায়িত ভাষার ব্যবহার দূর করে মানুষের স্বাভাবিক ভাষা ব্যবহারের জন্য স্বাভাবিক ভাষা প্রসেসরের ব্যবহার অনেকে প্রস্তাব করেছেন। কিন্তু এটা বাস্তবায়ন করা কঠিন। আর এর সুফল নিয়েও বিতর্ক আছে। এট্সখার ডেইক্স্ট্রা মনে করতেন বিধিবদ্ধ ভাষা অর্থহীন সংগঠনসমূহ দূর করতে অত্যন্ত জরুরি। তিনি স্বাভাবিক ভাষায় প্রোগ্রাম লেখাকে বোকামি বলে মনে করতেন। [৯] অ্যালান পেরলিস-ও এ ব্যাপারে নেতিবাচক অবস্থান নেন। [১০]
[সম্পাদনা] তথ্যসূত্র
- ↑ গণিতের ভাষায় এর অর্থ প্রোগ্রামিং ভাষাটি টুরিং-সম্পূর্ণ MacLennan, Bruce J. (1987). Principles of Programming Languages. Oxford University Press. ISBN 0-19-511306-3.
- ↑ মে, ২০০৬-এ The Encyclopedia of Computer Languages-এ ৮৫১২টি কম্পিউটার ভাষার উল্লেখ ছিল।
- ↑ ACM SIGPLAN (2003). Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery. Retrieved on 2006-06-19., The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation.
- ↑ Dean, Tom (2002). Programming Robots. Building Intelligent Robots. Brown University Department of Computer Science. Retrieved on 2006-09-23.
- ↑ Digital Equipment Corporation. Information Technology - Database Language SQL (Proposed revised text of DIS 9075). ISO/IEC 9075:1992, Database Language SQL. Retrieved on June 29, 2006.
- ↑ The Charity Development Group (December 1996). The CHARITY Home Page. Retrieved on 2006-06-29., Charity is a categorical programming language..., All Charity computations terminate.
- ↑ IBM in first publishing PL/I, for example, rather ambitiously titled its manual The universal programming language PL/I (IBM Library; 1966). The title reflected IBM's goals for unlimited subsetting capability: PL/I is designed in such a way that one can isolate subsets from it satisfying the requirements of particular applications. (Encyclopaedia of Mathematics » P » PL/I. SpringerLink. Retrieved on June 29, 2006.). Ada and UNCOL had similar early goals.
- ↑ Frederick P. Brooks, Jr.: The Mythical Man-Month, Addison-Wesley, 1982, pp. 93-94
- ↑ Dijkstra, Edsger W. On the foolishness of "natural language programming." EWD667.
- ↑ Perlis, Alan, Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9, September 1982, pp. 7-13
[সম্পাদনা] আরও পড়ুন
- David Gelernter, Suresh Jagannathan: Programming Linguistics, The MIT Press 1990.
- Samuel N. Kamin: Programming Languages: An Interpreter-Based Approach, Addison-Wesley 1990.
- Shriram Krishnamurthi: Programming Languages: Application and Interpretation, অনলাইন সংস্করণ।
- Burce J. MacLennan: Principles of Programming Languages, Harcourt Brace Jovanovich 1987.
- John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
- Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
- Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd ed., Addison-Wesley 1996.
- Richard L. Wexelblat (ed.): History of Programming Languages, Academic Press 1981.
[সম্পাদনা] বহিঃসংযোগ
- ৯৯টি বিয়ার বোতল - বিভিন্ন ভাষায় বাস্তবায়ন
- কম্পিউটার ভাষাসমূহের ইতিহাসের লেখচিত্র
- প্রোগ্রামিং ভাষাসমূহের অভিধান (Dictionary of Programming Languages)
- প্রোগ্রামিং ভাষাসমূহের ইতিহাস
- প্রোগ্রামিং ভাষাসমূহ – উন্মুক্ত ডিরেক্টরি
- বিভিন্ন প্রোগ্রামিং ভাষার সিনট্যাক্স বিন্যাস