সাহিত্যের প্রোগ্রামিং ভাল আদর্শ আছে। আপনি কেন ভাবেন যে এটি মূলধারার নয়? এটি বিতরণ করতে ব্যর্থ হয়েছে কারণ?
সাহিত্যের প্রোগ্রামিং ভাল আদর্শ আছে। আপনি কেন ভাবেন যে এটি মূলধারার নয়? এটি বিতরণ করতে ব্যর্থ হয়েছে কারণ?
উত্তর:
আমি প্রথমে এটি নুথের লেখার বইয়ে দেখেছি এবং ভেবেছিলাম এটি ঝরঝরে দেখাচ্ছে। তারপরে আমি প্রোগ্রামটিতে কী চলছে তা বোঝার জন্য সাহিত্য প্রোগ্রামিং ডিসপ্লেটি ব্যবহার করার চেষ্টা করেছি এবং এটি দেখতে তার চেয়ে কঠিন বলে মনে হয়েছে। এটি হতে পারে যে আমি প্রোগ্রামের তালিকাগুলির মধ্য দিয়ে যেতে অভ্যস্ত ছিলাম তবে এটি বিভ্রান্তিকর বলে মনে হয়েছিল seemed
তারপরে আমি সোর্স কোডটির দিকে চেয়েছিলাম এবং এটি আমাকে তখন এবং সেখানেই বন্ধ করে দিয়েছে। প্রোগ্রামের পাঠ্য এবং সংকলক যা দেখেছিল তার মধ্যে কম চিঠিপত্রের সাথে আমি পুরোপুরি নতুন উপায়ে প্রোগ্রামগুলি লিখতে শিখেছি এবং এর সাথে কোনও উপকার দেখেনি।
তদ্ব্যতীত, লোকেরা দীর্ঘ এবং দৃinc়প্রত্যয়ী যুক্তি লিখতে পারে যে কোডটি এক্সটি করছে যখন এটি আসলে ওয়াই করছে এবং আমি বিভ্রান্তিমূলক মন্তব্যগুলিতে আমার অংশ নিয়েছি। মোটামুটি তাড়াতাড়ি কী করছে তা দেখতে কোডটি পড়ার জন্য আমি আগ্রহ অনুভব করেছি। সাহিত্যের প্রোগ্রামিং হ'ল এর বিরোধী।
আমি নেটওয়ার্কের প্রভাবটিকে দোষ দেব । অন্যদের আপনার কোড এবং ডকুমেন্টেশন সম্পাদনা করার জন্য তাদের অবশ্যই এটি বুঝতে সক্ষম হতে হবে।
এটি লোকেদেরকে cweb / noweb এর মতো কিছু থেকে দূরে ঠেলে দেয় কারণ এগুলির ব্যবহারের জন্য আপনি প্রকল্পের জন্য যে প্রোগ্রামিং ভাষার ব্যবহার করছেন তার উপরে টেক্স এবং প্রোগ্রাম-নির্দিষ্ট সিনট্যাক্স শিখতে হবে। এটিকে সময়ের অপচয় হিসাবে দেখা যায়, বিশেষত যদি তাদের কোনও গণিতের টাইপসেটিংয়ের প্রয়োজন না হয় যা টেক্সের জন্য প্রথম দিকে এত বড় অঙ্কন। (এবং অনেক অ্যাপ্লিকেশন প্রোগ্রামারদের, তাদের সত্যই এটির প্রয়োজন হবে না)) পরিবর্তে তারা ভিজ্যুয়াল স্টুডিওর এক্সএমএল মন্তব্যের মতো কিছু পছন্দ করে, কারণ এটি ইতিমধ্যে জনপ্রিয় এবং সুপ্রতিষ্ঠিত।
আমি যে জায়গাগুলি সাক্ষর প্রোগ্রামিং প্রত্যাহার করে দেখেছি সেগুলি বৈজ্ঞানিক / পরিসংখ্যানগত কম্পিউটিংয়ে রয়েছে, যেখানে বেশিরভাগ প্রোগ্রামারগণ গণিত, সিএস বা পরিসংখ্যানগুলিতে উল্লেখযোগ্য প্রশিক্ষণ (ওরফে পিএইচডি) রাখেন এবং এভাবে ইতিমধ্যে লটেক্সের সাথে ফ্যামিলিয়ার রয়েছে। তারা যে ডকুমেন্টেশনটি লেখেন তাতে জটিল জটিল সূত্রগুলি অন্তর্ভুক্ত হওয়ার সম্ভাবনা রয়েছে যা টেক্সে সবচেয়ে ভাল লেখা হয় এবং তারা আর-তে প্রোগ্রামিং করার সম্ভাবনা বেশি থাকে program আর এস প্রোগ্রামারদের অনুপাত যারা এসওয়েভ সম্পর্কে জানে তারা অবশ্যই বলার চেয়ে অনেক বেশি say সি প্রোগ্রামার যারা অনুপাত সম্পর্কে জানে অনুপাত।
org-mode
প্রোগ্রামিংয়ের জন্য সমর্থনগুলি একবার দেখে নিতে পারেন । এটা বেশ সুবিধাজনক, এবং আমি এটা খুঁজে অনেক (যদিও উল্লেখ করতে হৃদয়ঙ্গম করা সহজ পরিচালনা ) ওয়েব বা NOWEB একা থাকে। কোডের একটি গুরুত্বপূর্ণ বিষয় হ'ল পাঠযোগ্যতা এবং এটি পঠনযোগ্য। (সিএফ github.com/vermiculus/stack-mode )
পড়াশুনা করার সময় 90-এর দশকের শেষের দিকে আমি লিটারেট প্রোগ্রামিংয়ের ধারণাটি দেখে মুগ্ধ হয়েছি এবং আমি এখনও প্রোগ্রামিং, এবং টাইপসেটিংয়ের জন্য নুথের পদ্ধতির সাথে আগ্রহী। সেরা কিছুই করবে না।
লিখিত সাহিত্যের প্রোগ্রামিং সিস্টেম যা নুথ ডিজাইন করেছিলেন তা তাত্ক্ষণিকভাবে চোখের সাক্ষাত হওয়ার চেয়ে অনেক বেশি, অর্থাত্ অন্তর্নিহিত প্রোগ্রামিং ভাষায় এমন অনেকগুলি ত্রুটিগুলি কাটিয়ে উঠেছে যা নথস উত্স নথি থেকে উত্পন্ন কোড জেনারেশন সরঞ্জাম, স্ট্যান্ডার্ড পাস্কাল।
ভাগ্যবানদের জন্য যারা স্ট্যান্ডার্ড পাস্কালটি ব্যবহার না করে, তাদের জন্য এখানে কয়েকটি হাইলাইট দেওয়া আছে।
এই সমস্ত বিষয়গুলির মূলত অর্থ হ'ল নথের আরও ভাল প্রোগ্রামিং ভাষার প্রয়োজন ছিল (সুতরাং তিনি একটি আবিষ্কার করেছিলেন) এবং এটি পাস্কালকে এর সমাবেশের ভাষা হিসাবে ব্যবহার করেছিল।
বেশিরভাগ আধুনিক ভাষাগুলি খুব বেশি প্রচেষ্টা ছাড়াই এই জিনিসগুলি করতে পারে, সুতরাং লিটারেট প্রোগ্রামিংয়ের যে কাজটি সমাধান করা উচিত ছিল তার একটি বড় অংশ সরিয়ে ফেলুন।
এছাড়াও আধুনিক ভাষাগুলি আরও ভাববাদী যা আরও বেশি চিন্তাভাবনা কোডে রাখে।
তো, কী বাকি? সোর্স কোড থেকে ডকুমেন্টেশন একটি typeset ফর্ম জেনারেট করতে ক্ষমতা এবং যে আজ বিদ্যমান।
জাভাডোকটি মনে করুন - জাভা রানটাইম এপিআই সম্ভবত আজ লিটারেট প্রোগ্রামিংয়ের বৃহত্তম টুকরা উপলব্ধ (কোডটি প্রকৃতপক্ষে উপস্থাপন করা ব্যতীত, তবে জাভা শুরু থেকেই খোলা স্রোত থাকলে এটিই ছিল)। উদাহরণস্বরূপ দেখুন http://download.oracle.com/javase/6/docs/api/java/util/ Collections.html এ সংগ্রহের কাঠামোর উপস্থাপনা দেখুন
আমি বিশ্বাস করি। নেট এবং অন্যান্য মূলধারার প্রোগ্রামগুলির জন্য একই রকম সিস্টেম বিদ্যমান।
To make it possible to have a single-pass compiler, all declarations had to come in a certain order.
এর মতো একটি ঘোষণার আদেশ অবশ্যই সংকলক ডিজাইনকে সহজতর করে তবে এটি একক-পাস সংকলন সক্ষম / প্রতিরোধ করে না। উদাহরণস্বরূপ, ডেলফির সেই আদেশের সীমাবদ্ধতা নেই, তবে এটি এখনও কঠোরভাবে একক-পাস পাস্কাল সংকলক।
নব্বইয়ের দশকে আমি যখন সাক্ষর প্রোগ্রামিংয়ের সাথে আমার ঝাপটায় পড়েছিলাম তখন আমি একটি জিনিস আবিষ্কার করেছিলাম এটি হ'ল খুব আবেগপ্রবণ লোকদের প্রতি আকৃষ্ট করেছিল যারা সঠিকভাবে সঠিক জিনিসটি করতে চেয়েছিল - এবং এতে তাদের নিজস্ব সাক্ষরিত প্রোগ্রামিং সিস্টেম লেখার সাথে জড়িত ছিল কারণ তাদের পক্ষে বিদ্যমান কোনওটিই যথেষ্ট ভাল ছিল না। প্রত্যেকের জন্য যথেষ্ট পরিমাণে সাধারণতম ডিনোমিনেটর সরবরাহ করে এখনই কেটে ফেলার একটি ভাল প্রচেষ্টা ছিল, যদিও তারপরেও আমি আমার বেশিরভাগ এলপি সময়টির জন্য একটি প্রিন্ট-প্রিন্টার তৈরি করতে ব্যয় করেছি ...
আরেকটি বিষয় হ'ল এটি সত্যই চঞ্চলবিরোধী। কিছু উপায়ে, ধীর হয়ে যাওয়া ভাল কারণ এটি আপনাকে আরও বেশি মুখোমুখি চিন্তা করতে এবং জিনিসগুলি প্রথমবারে পেতে বাধ্য করে। অন্যদিকে, সাবধানতার সাথে ডকুমেন্ট করার সময় আপনার কোডটি রিফ্যাক্টর করার ক্ষেত্রে একটি বড় বাধা রয়েছে। এবং যদি আপনি এলপি-ইফির আগে আপনার কোডটিকে কঠোর না করা পর্যন্ত অপেক্ষা করেন তবে আপনি একটি বহু দিনের ডকুমেন্টেশন টাস্কটি শেষ করেন, যা আপনাকে সত্যই আপনার ট্র্যাকগুলিতে থামিয়ে দিতে পারে।
আমার নম্র মতামত অনুসারে, অনেক সংস্থার একটি সংস্কৃতি রয়েছে যারা লিট্রেট প্রোগ্রামিংয়ের লক্ষ্যগুলির বিপরীতে: তারা দ্রুত ফলাফল চায় (অ্যাপটি উত্পাদনশীল অবস্থায় তারা কেবল মানের বিষয়ে কাঁদে)। আমার নিজের অভিজ্ঞতায়, আমার কর্তারা তা বুঝতে অস্বীকার করেছিলেন যে দ্রুত ফলাফলের অর্থ "আমার কাছে জিজ্ঞাসার পরের দিন একটি প্রোগ্রাম চলমান" নয়। তাদের জন্য, যদি কোনও বিকাশকারী তার কীবোর্ডে টাইপ করতে ব্যস্ত না হন, তবে তিনি কাজ করছেন না, তিনি "ডিজাইন-অ-বুদ্ধিতে তার সময় নষ্ট করছেন"। হ্যাঁ, আমি জানি, আমার বস একটি আর্সহোল।
কোডাররা ইংরেজী নয় কোড লেখেন।
কোডার্স ডকুমেন্টেশন লিখতে পছন্দ করেন না কারণ এটি কোড চালাতে সহায়তা করে না।
কোডার ডকুমেন্টেশন লিখতে ভাল নয় কারণ এটি তাদের মতামত প্রকাশের জন্য একটি দুর্বল মাধ্যম।
সাহিত্যের প্রোগ্রামিংটি পরবর্তী স্তরে ডকুমেন্টেশন নেওয়ার ধারণা বলে মনে হচ্ছে যেখানে কোডটি চিন্তা-ভাবনার পরে বেশি। সম্ভবত এটি কাজ করবে তবে বেশিরভাগ কোডারের কাছে এটি অদৃশ্য ডকুমেন্টেশনের মতো দেখাচ্ছে।
মূলত কারণ মানুষেরা খুব বোকা। স্পষ্ট সাক্ষ্য হ'ল এই সাধারণ কৌশলটির প্রকৃতি সম্পর্কে তরুণরা অনুমান করা এবং ভুল বোঝাবুঝির অন্তহীন প্রবাহ।
লোকজন এলপিকে গ্রহণ করে: (ক) ডকুমেন্টেশনের একটি পদ্ধতি (খ) কিছু পালিশ রচনা লেখার একটি পদ্ধতি যা কিছু বিশেষ দক্ষতা বা দক্ষতার প্রয়োজন হয় (গ) কেবল তার কোনও ক্লু নেই - লিও প্রোগ্রামিং সম্পাদকের স্রষ্টা হিসাবে, তার নিজের স্বীকৃতি দ্বারা ইত্যাদি ইত্যাদি ইত্যাদি
এলপি অবশ্য সহজভাবে: (1) মানব ভাষাতে কোড এবং বাক্যাংশের মিশ্রণে প্রোগ্রামগুলি লেখার জন্য, যেখানে পরবর্তী কোডগুলি এবং / অথবা অন্তর্ভুক্ত বাক্যাংশের জন্য রয়েছে। সংক্ষিপ্ত প্রোগ্রামিং পাঠ্যপুস্তকের লেখকরা ঠিক এটিই করেন এবং .. (2) এটি একটি সাধারণ প্রিপ্রেসেসর যা মানুষের সেই বাক্যাংশগুলিকে প্রসারিত করে (যা অন্তর্ভুক্ত সাব্রোটাইনগুলির নাম হিসাবে পরিণত হয়েছিল) ফলাফলটি কম্পিউটারের মাধ্যমে আবশ্যকভাবে উন্মোচন করতে পারে (বা অনুবাদক)। অন্যথায় কেউ "স্বাক্ষর উত্স" কে একটি ভাল-বিন্যাসযোগ্য পাঠযোগ্য পাঠ্যে রূপান্তর করতে ফর্ম্যাটিং প্রতীকগুলি অন্তর্ভুক্ত করার জন্য লিখিত পাঠ্যটিকে অন্য একটি ছোট্ট ইউটিলিটি সহ প্রসারিত করতে পারেন।
তরুণরা কখনও এই অত্যন্ত সহজ ধারণাটি ব্যবহার করে না - এবং কল্পনা করেই বা ভুয়া কারণগুলির কল্পনা করে কেন তারা কখনই চেষ্টা করে না বা করবে না।
মূলত একটি মানব ভাষায় লিখিত "ইন সিউডোকোড" প্রোগ্রামিংয়ের মূল ধারণা এবং তারপরে একটি সাধারণ প্রিপ্রোসেসর ইউটিলিটি হেল্পস ম্যানেজমেন্ট এন্টিটিশন (সীমিত, যে কোনও দীর্ঘস্থায়ী প্রোগ্রামের জন্য একটি প্রধান অসুবিধা) এর সাহায্যে এটি প্রসারিত করার মূল ধারণা, আপনার কোড ফোল্ডিং বা আপনার প্রোগ্রামের প্রবাহের বিভাজনের মতো আপনার নিজের বিবরণে না হারাতে প্রয়োজন, তবে মেশিনের সঞ্চালনের জন্য সম্পূর্ণ অপ্রয়োজনীয় ফাংশন / সাবরুটাইনগুলিতে।
সেখানে শিক্ষিত প্রোগ্রামিং এর 2 দিক যে, আমি হয় না অভিলাষও অবশিষ্ট মূলধারার প্রোগ্রামিং মধ্যে গ্রথিত হয়ে যায় - এম্বেড চিত্রাবলী (যেমন, নকশা ডায়াগ্রামে) এবং পূর্ববর্তী এবং বিকল্প প্রচেষ্টা (পয়েন্টার যেমন, "কারণ এটা ভালো হয়, কারণ আমি এই অন্য উপায় চেষ্টা এবং এটি কার্যকর হয়নি কারণ ... ")। এই উভয় দিকই ডক-মন্তব্য এবং ইউআরআই দিয়ে পরিচালনা করা যায়।
কারণ প্রোগ্রামগুলির লজিক আমাদের কথা মতো কাজ করে না। একটি প্রোগ্রামের একটি ভাল নির্দিষ্ট প্রবাহ এবং শর্তাদি এবং লুপ রয়েছে।
প্রচুর কোডিং করার পরে, আমি এই পদগুলিতে ভাবি। আমার মস্তিষ্ক সমস্যাগুলি এক্সিকিউটেবল কোডের লক্ষ্য ডোমেনে রূপান্তর করে। আমার প্রোগ্রামগুলি সাক্ষর করতে অতিরিক্ত রূপান্তর পদক্ষেপ না করে আমার কাছে সাধারণত একটি প্রোগ্রামিং ভাষায় এটি লেখার পক্ষে আরও দক্ষ is
প্রকৃতপক্ষে, আমি বিশ্বাস করি যে আমার প্রোগ্রামগুলি ইতিমধ্যে শিক্ষিত ... স্পিকার শনাক্তকারী, ভাল ফাংশন নাম, মন্তব্য যেখানে আমি কিছু হ্যাকারি করেছি যা আমি কয়েক মাস পরে তত্ক্ষণাত নিজেই বুঝতে পারি না।
উপসংহারে: প্রতিটি "সাক্ষর" প্রোগ্রামিং যেমন চায় তেমনভাবে আমার জাভা কোডটি আরও স্বাক্ষরিত।
আমি অন্যান্য উপায়ে প্রোগ্রামিংকে সাক্ষর করতে এসেছি - আমি স্বপ্ন দেখেছিলাম যে কোডটি আমার মনের সাথে খাপ খায় এমনভাবে সংগঠিত করে, সংকলকটির এটির প্রয়োজন হয় না। আমি লিওকে এই উদ্দেশ্যে প্রায় আদর্শ বলে মনে করেছি। এটি বাইরে পরিবর্তিত ফাইলগুলির ট্র্যাক রাখতে সহায়তা করে। এই ফাইলগুলিতে কোনও বিশেষ মার্কআপ থাকতে হবে না, তাই আমি টিমের অন্যদের জানার দরকার ছাড়াই নিজের জন্য লিওটি ব্যবহার করতে পারি। এই বৈশিষ্ট্যটি - "@ শ্যাডো ট্রি" - খুব আশাব্যঞ্জক, যদিও এখনও কিছুটা বগিযুক্ত, আরও চোখের বলের প্রয়োজন। এবং এটি গাছের রূপরেখায় এবং বাহ্যিক ফাইলগুলির জন্য সমর্থন দ্বারা সবকিছুকে সংগঠিত করে "ওহ, না, একটি বড় ফাইলের সবকিছু" সমস্যা উভয়ই সমাধান করে।
আমার কাছে, নামের বিপরীতে, "লিট্রেট প্রোগ্রামিং" ডকুমেন্টেশন মোটেই নয়। আমার কাছে আগের চেয়ে বেশি ডকুমেন্টেশন নেই। এটি এমন কাঠামো থাকার কথা যা আমাকে হারিয়ে যেতে না সহায়তা করে । আমি এর শপথ করছি বিশেষত বেহমথ জেএসপি ফাইলগুলি পরিচালনা করার সময় (এবং যে লিও সত্ত্বেও মূলত পাইথনের উদ্দেশ্যে ছিল এবং এটি জেএসপি ভাষার পক্ষে সমর্থন করে না - আমাকে ফাইলটি নিজেই লিও ট্রিতে বিভক্ত করতে হবে!)।
আমি এটিকে একটি মূল্যবান শিক্ষণীয় সরঞ্জাম হিসাবে দেখছি, যেখানে কোডের উপর একটি গবেষণামূলক লিখন লেখা যেতে পারে এবং তারপরে কোডটির কীভাবে, কী এবং কী হবে তা পাঠকদের নির্দেশ দেওয়ার জন্য এতে ওয়ার্কিং কোডের স্নিপেট।
খাঁটি শিক্ষামূলক পরিবেশের বাইরে, আমি মনে করি কেবল নথই এটি ব্যবহার করবেন কীভাবে সেরা তা বুঝতে পারে।
এটি সমস্ত বিশ্বের সবচেয়ে খারাপ - আপনাকে একটি খুব অ-নির্দিষ্ট ভাষা = ইংরেজিতে একটি অত্যন্ত সঠিক, অত্যন্ত নির্দিষ্ট কম্পিউটার প্রোগ্রাম লিখতে হবে। সুতরাং আপনাকে সঠিক বাক্যাংশটি ব্যবহার করে সাবধানতার সাথে এটি লিখতে হবে - যাতে আপনি কেবল কোড লিখতে পারেন।