টেক্স এর শব্দার্থবিজ্ঞান (প্রোগ্রামিং ভাষা হিসাবে) কখনও আনুষ্ঠানিক করা হয়েছে?


21

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

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

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

ভাষাটির জন্য একটি আনুষ্ঠানিক শব্দার্থকতা সমস্যার সমাধানের জন্য একটি সূচনা হতে পারে। টি এর শব্দার্থবিজ্ঞান আছে প্রোগ্রামিং ভাষা কখনও আনুষ্ঠানিক করা হয়েছে?টিএক্স



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

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

এই ব্লগ এন্ট্রি rjlipton.wordpress.com/2011/03/09/tex-is-great- কি-is-tex এ , লিপটন সম্পর্কিত করেছেন যে নূথ কখনই টি আনুষ্ঠানিকভাবে সংজ্ঞায়িত করেন নিটিএক্স
লামাইন

ঠিক আছে, আপনি initexযা পরামর্শ দেন তার কাছেই আসে , এটি একটি "প্রাকম্পাইলার", মূলত আপনি টেক্সকে কিছু নির্দিষ্ট ক্রিয়াকলাপ করতে পারেন, তারপরে এটি থামাতে পারেন, বর্তমান অবস্থাটিকে "ফর্ম্যাট" ( file.fmt) হিসাবে সংরক্ষণ করুন যা লোড হয় দ্রুত শেষ কর. এটি ল্যাকেক্স নিজেই যা ঘটছে তা হ'ল: এটি টেক্স কোরের উপরে এভাবে তৈরি করা হয়েছে, একইভাবে সরল টেক্স, কনটেক্সট (যদিও এটি কিছুটা জটিল), ইত্যাদি
'

উত্তর:


9

(দীর্ঘ উত্তরের জন্য ক্ষমা চেয়েছি যা সাইটের ক্ষেত্রের চেয়ে পৃথক দিকের দিকে চলে গেছে: সত্যি বলতে আমি এখানে প্রশ্নটি প্রথম স্থানে দেখে অবাক হয়েছিলাম।))


টেক্স টাইপসেটিংয়ের জন্য ডিজাইন করা হয়েছিল, প্রোগ্রামিংয়ের জন্য নয়; সুতরাং প্রোগ্রামিং ভাষা হিসাবে বিবেচনা করার সময় এটি সেরা "অদ্ভুত" হয়।

- ডোনাল্ড নুথ, ডিজিটাল টাইপোগ্রাফি, পৃষ্ঠা 235

টেক্সের প্রাথমিক ইতিহাস (১৯ 1977) প্রায় এবং নুথ যা লিখেছেন সে সম্পর্কে আমি গত কয়েক বছর ধরে প্রচুর পড়েছি। আমার উপসংহারটি হ'ল আমরা "টেক্স (প্রোগ্রামিং ভাষা হিসাবে)" সম্পর্কে যে মুহূর্তে কথা বলি , ইতিমধ্যে কিছু ভুল।

আমরা যদি টেক্স এর আগে রচিত “ডিজাইন ডকুমেন্টস” দেখতে পাই ( ডিজিটাল টাইপোগ্রাফিতে দেখুন TEXDR.AFTএবং TEX.ONEপ্রকাশিত ), তবে স্পষ্ট যে নথ প্রাথমিকভাবে আর্ট অফ কম্পিউটার প্রোগ্রামিং টাইপসেটিংয়ের উদ্দেশ্যে তৈরি একটি সিস্টেম ডিজাইন করেছিলেন (তিনি বলেছেন (যেমন এখানে )) যে প্রধান ব্যবহারকারীদের মনে তিনি ছিলেন তিনি নিজে এবং তাঁর সচিব), এই ধারণাটি নিয়ে যে উপযুক্তভাবে সংশোধন করা হয়েছে এটি সাধারণভাবে কার্যকর হতে পারে। টাইপিং সংরক্ষণ করার জন্য, বারবার করতে হবে এমন জিনিসগুলির জন্য (যেমন প্রতিবার টিএওসিপি-র দ্বারা কোনও লেখকের উদ্ধৃতি অন্তর্ভুক্ত করা দরকার, আপনি একটি নির্দিষ্ট পরিমাণে উল্লম্বভাবে সরানো, একটি নির্দিষ্ট লাইনস্কিপ সেট করতে, একটি নির্দিষ্ট ফন্ট বেছে নিতে, টাইপসেট টাইপ করতে চান উদ্ধৃতিটি ডান-প্রান্তিককরণ, অন্য ফন্টটি তুলুন, লেখকের নাম টাইপ করুন…), সেখানে ম্যাক্রোগুলি ছিল।

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

আপনি একটি বিট কিভাবে Knuth কোন প্রোগ্রামিং জন্য চাননি আরও পড়তে TeX মধ্যে সম্পন্ন করা যাবে না, এবং কিভাবে তিনি "শুধুমাত্র সুস্থ ও সক্রিয় এবং বেদম হাসির পর TeX প্রোগ্রামিং অতিরিক্ত বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে অনেক রাখা", মধ্যে এই উত্তর । তার উদ্দেশ্য যাই হোক না কেন, যেমন আমি বলেছিলাম, প্রোগ্রামিংয়ের আশ্চর্যজনক কৌশলগুলি সম্পাদন করার জন্য লোকেরা টেক্স এক্স ম্যাক্রো সিস্টেমটি ব্যবহার করার উপায় (আব) করতে শুরু করেছিল। নথ এই আকর্ষণীয় দেখতে পেল এবং (টেক্স নিজেই কিছু বৈশিষ্ট্য যুক্ত করার পাশাপাশি) দ্য টেক্সবুকের পরিশিষ্ট ডি "ডার্টি ট্রিকস" এ কয়েকটি অন্তর্ভুক্ত করেছিল, তবে নাম সত্ত্বেও দেখা গেছে যে, "এর মধ্যে দশটির মধ্যে নয়টি উদাহরণ রয়েছে ল্যাটেক্স বাস্তবায়নে ব্যবহৃত হয়েছে ”।

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

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

টেক্সে দ্রুত প্রোগ্রামগুলি তৈরি করার কাজটি এই আলোতে দেখা গেলে প্রায় মজাদার এবং কাগজের চূড়ান্ত শব্দগুলির কথা মনে করিয়ে দেয় অন্য একটি "দুর্ঘটনাক্রমে টুরিং সম্পূর্ণ" প্রোগ্রামিং "ভাষা": টম ওয়াইল্ডেনহেনের সুন্দর "এমএসের টুরিং কমপ্লিটনেসিতে" পাওয়ারপয়েন্ট ( ভিডিও ) গত বছর থেকে:

যদিও পিপিটিএক্সটিএম পাওয়ার পয়েন্ট বিকাশের তাত্ত্বিক সম্ভাবনা প্রমাণ করে, […]। পাওয়ারপয়েন্ট অ্যাপ্লিকেশন অপ্টিমাইজেশনেও কাজ করা দরকার। পাওয়ারপয়েন্টের পরবর্তী স্লাইডের স্বয়ংক্রিয় বাফারিং কাজে লাগানোর অনেক সম্ভাবনা রয়েছে, যা সাবধানতার সাথে স্লাইড প্লেসমেন্টের সাহায্যে অ্যাপ্লিকেশন কর্মক্ষমতা বাড়ানোর জন্য ব্যবহৃত হতে পারে।

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

সংক্ষেপে: টেক্স প্রারম্ভিক সুযোগে টাইপসেটিংয়ে ফিরে আসে এবং যখন এটি ম্যাক্রোগুলি প্রসারিত করে তখন এটি অত্যন্ত মাতামাতি করে (টাইপসেটিংয়ের "প্রকৃত" কাজটি পেতে অধৈর্য) এবং এই বিস্তৃতিগুলি কয়েকশ 'ধরণের "রাষ্ট্রের মধ্যে নির্ভর করতে পারে within টেক্স প্রোগ্রাম ( বাক্সগুলি এবং অন্যান্য রেজিস্টারগুলির সামগ্রীগুলির মতো \hsizeবা এর মতো প্যারামিটারের মানগুলি \baselineskip...), যার কারণে টেক্সের যে কোনও আনুষ্ঠানিক শব্দার্থতাকে অবশ্যই প্রয়োজনীয় কিছু মনে করা উচিত যা প্রোগ্রামের পুরো অবস্থা এবং এর সমস্ত স্মৃতি বিবেচনায় রাখে, যতক্ষণ না আমরা টেক্স প্রোগ্রামের চেয়ে বেশি জটিল আকারে, "টেক্স কোডের অর্থ টেক্স যা কিছুই করেন না" এর মতো কিছু দিয়ে শেষ করুন।


ঠিক আছে, (যদি আমি আপনাকে বুঝিয়েছি) টেক্সটি প্রোগ্রামিং ভাষা হিসাবে তৈরি করা হয়নি এবং সত্যিকারের মতো কাজ করে না, কোনও আনুষ্ঠানিক শব্দার্থবিজ্ঞান নেই, এবং আজ প্রোগ্রাম করার আরও ভাল উপায় রয়েছে - তবে এগুলি আপনার সাথে সহায়তা করে না প্রকৃত প্রশ্ন / সমস্যার, যা যে অনুশীলন, অনেক কাগজপত্র TeX দ্বারা প্রক্রিয়াকরণের জন্য বোঝানো না (লেটেক্স এবং TikZ মত) ব্যবহার জটিল ম্যাক্রো, বিকট একে অপরের উপরে নির্মিত জটিলতা অত্যাশ্চর্য অট্টালিকা। কীভাবে আমরা এটিকে দ্রুত এবং "অনুকূলিতকরণের পাসগুলি" তৈরি করতে পারি?

আপনি সেখানে আনুষ্ঠানিক শব্দার্থক আইএমও নিয়ে পাবেন না। আমি এই সম্পর্কে সম্প্রতি চিন্তা করেছি, এবং নিম্নলিখিত কিছু প্রাথমিক চিন্তা।

আমার ধারণাটি হ'ল 1960 এর দশকে নূত একজন অভিজ্ঞ সংকলক-লেখক ছিলেন (এই কারণেই তাকে কম্পিউটারের প্রোগ্রামিংয়ে আর্ট হিসাবে রূপান্তরিত সংকলক বইটি লিখতে বলা হয়েছিল ), এবং টেক্সটি (বিভিন্ন উপায়ে) কম্পাইলারগুলি যেভাবে লেখা হয়েছিল 1970 এর দশকে লেখা, বলুন। সংকলক কৌশল এবং ডিজাইন তখন থেকে উন্নত হয়েছে, এবং তাই টেক্স প্রোগ্রাম হতে পারে। এখানে জিনিসগুলি দ্রুত করার মাধ্যমে কিছু কাজ করা যেতে পারে:

  • হৃদয়গ্রস্থ, টেক্সকে একটি "ইন্টারপ্রিটিভ রুটিন" এর মতো লেখা হয়, যেখানে টেক্সটি "চোখ" এবং "মুখ" (এর ইনপুট রুটিনগুলি) একে একে মৃত্যুদণ্ড কার্যকর করার জন্য তার "পেট" (এর শব্দার্থক রুটিন) এর নির্দেশ দেয়। (আপনি টেক্স প্রোগ্রামের 15 তম অংশে একটি তালিকা দেখতে পাচ্ছেন )) উদাহরণস্বরূপ, যখন টেক্সের চোখ / মুখের মুখোমুখি হয় \hfillবা \hskipএর ইনপুট হয়, তখন পেট একটি "এইচএসকিপ" কমান্ড পায়, যা এটি কাজ করে। এটি আজকে বাইটকোড দোভাষী হিসাবে পরিচিত, এবং এই বাইকোডগুলি / অপকোডগুলি স্পষ্টভাবে নির্গত করার জন্য টেক্স প্রোগ্রামটি রিফ্যাক্টর করার মান থাকতে পারে, যাতে আমরা বিদ্যমান (আরও প্রচলিত আজ) সংকলক কৌশলগুলি ব্যবহার করতে সক্ষম হতে পারি। বা পুনরায় কাজ এড়াতে তাদের অন্তত ক্যাশে করুন। অবশ্যই অনেক চ্যালেঞ্জ রয়েছে:

    • "পেট" এর একটি কমান্ড কার্যকর করার পরে সাধারণত ইনপুট পড়া জড়িত থাকে, অর্থাত ইনপুট রুটিন এবং সিমেটিক রুটিনগুলির কাজ আলাদা পর্যায়ে ঘটে না। উদাহরণস্বরূপ, "এইচএসকিপ" কমান্ড, যদি দেওয়া হয় \hskip(পরিবর্তে বলা হয় \hfill) scan_glueইনপুট থেকে একটি আঠালো স্পেসিফিকেশন পড়তে অনুরোধ জানাবে , যার ফলে আঠালোকে প্রসারিত ম্যাক্রোগুলি জড়িত থাকতে পারে এবং আঠালোকে পর্যাপ্ত টোকেন না পাওয়া পর্যন্ত ইনপুট স্ট্যাকটিকে একটিতে রেখে দেয় যথেষ্ট আলাদা রাষ্ট্র।

    • ইটেক্স এবং পিডিএফটেক্স এবং এক্সটেক্স এবং লুয়াটেক্সের মতো ইঞ্জিনগুলি নতুন কমান্ড এবং প্রিমিটিভগুলি প্রবর্তন করে (ইটিেক্স / পিডিএফটেক্স প্রিমিটিভগুলি ব্যবহারিকভাবে অনুশীলনে প্রত্যেকে ব্যবহার করে); আপনার এগুলিও সমর্থন করতে হবে, কেবলমাত্র আসল নথের টেক্স প্রোগ্রামটিতে নয়।

  • আমরা "অনুমানমূলক বাস্তবায়ন", ভবিষ্যতের অনুচ্ছেদগুলি প্রক্রিয়াজাতকরণ (নতুন বিভাগ বা অধ্যায়গুলির মতো প্রাকৃতিক চেকপয়েন্টগুলি থেকে শুরু করে) সমান্তরালভাবে (একাধিক কোর ব্যবহার করে), তারা যে সমস্ত টেক্সের অভ্যন্তরীণ স্থিতি ব্যবহার করে (তার উপর নির্ভরশীল) ট্র্যাক করে রাখি এবং নিক্ষেপ করতে পারি something পরে সেই কাজটি (এবং এটি পুনরায় করা) যদি পরে আমরা জানতে পারি যে পূর্ববর্তী অনুচ্ছেদে সেই অবস্থার কিছুটা পরিবর্তন করে। এই মুহুর্তে টেক্স পুরোপুরি ক্রমানুসারে 1 টি প্রসেসরের উপর চলে; সাধারণ হার্ডওয়্যারটি অন্য দিকে চলে গেছে এবং একাধিক কোর উপলব্ধ।

  • এমনকি সহজ, আমরা সহজেই ইনপুট ফাইলের একটি নির্দিষ্ট বিভাগ দ্বারা কাজটি (কী টেক্স রাজ্যটি অ্যাক্সেস এবং সংশোধন করেছিলাম) ক্যাশে করতে পারি। (আমরা ইনপুট স্তরে এই ক্যাচিংটি করতে পারি - সমস্ত ম্যাক্রো প্রসারণের নিখরচায় ফলাফল — বা সেটগুলির বাক্সগুলি কীভাবে একত্রিত হয়েছিল তার স্তরে, বা প্রোগ্রামের সম্পূর্ণ অবস্থার সমস্ত উপায়ে।) একটি \begin{tikzpicture} … \end{tikzpicture}পৃষ্ঠা নম্বর কাউন্টার মত TeX রাষ্ট্র উপর অনেক নির্ভর করার সম্ভাবনা কম, তাই যখন আমরা TeX ডকুমেন্ট কেবলমাত্র আমরা সব কাজ পুনরায় ব্যবহার করতে পারেন কম্পাইল - যদি আমরা যথেষ্ট তথ্য জানাতে চাই যে, এটা এত কাজটি করা নিরাপদ ট্র্যাক রাখা আছে। (অবশ্যই টিকজেডের কাছে এটিকে বহিরাগত করার এবং ফলাফলগুলি অন্তর্ভুক্ত করার উপায় রয়েছে তবে ধারণাটি আরও সাধারণ)

  • "ছিদ্র" দিয়ে কিছু টেক্স প্রক্রিয়াকরণ করার জন্য আমরা কৌশলগুলি (উদাহরণস্বরূপ ফাংশনাল প্রোগ্রামিংয়ে ব্যবহৃত) - ব্যবহার করতে পারি - উদাহরণস্বরূপ, আপনি যখন \ref{foo}লেটেক্সে লেখেন (ভবিষ্যত বলুন) বিভাগ নম্বরটি উল্লেখ করার জন্য, এটি কেবলমাত্র দুটি সংকলন পাসে কাজ করে: প্রথম সম্পূর্ণ নথি প্রক্রিয়াকৃত হয় (সমস্ত অনুচ্ছেদের typeset, পাতায় স্থান floats ইত্যাদি) অধ্যায় সংখ্যার একটি দ্বিতীয় পাস উপর একটি অক্জিলিয়ারী ফাইলে আউট লেখা হচ্ছে, তারপর সবকাজটি আবার করা হয়েছে, বিভাগের নম্বরটি আসলে এই সময়ে উপলভ্য। (এই ধরণের হ্যাক সম্ভবত সেই সময়ে অনিবার্য হতে পারে এবং আমি জানি যে চলমান সময়ের উপর প্রভাবটি "শুধুমাত্র একটি ধ্রুবক উপাদান", তবে ...।) পরিবর্তে, যদি আমরা কেবল "গর্ত" দিয়ে নথিটি প্রক্রিয়া করতে পারি তবে কী হবে ( নির্ধারিত বিষয়বস্তুযুক্ত একটি বাক্স তবে কিছু আনুমানিক প্রস্থ) বিভাগ নম্বরের জন্য রেখে গেছে, তারপরে ডকুমেন্টের প্রসেসিং শেষে বাক্সটি জনপ্রিয় করুন? (হ্যাঁ, আমাদের আনুমানিক প্রস্থটি ভুল হতে পারে এবং অনুচ্ছেদের জন্য পৃষ্ঠার পুনরায় প্রসেসিং এবং ফলস্বরূপ এমনকি পৃষ্ঠের প্রয়োজন হতে পারে, তবে আমরা হয় প্রয়োজনে কাজটি করতে পারি, বা গতির জন্য, একটি মোড যার জন্য আমরা একটি ভুল প্রস্থকে অনুমতি দেব) বিভাগ নম্বর।)

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

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

এছাড়াও, ভবিষ্যতের যে কোনও কাজ সম্ভবত লুয়াটেক্সকে বিবেচনা করা উচিত (এটি বিল্ড করা) যা বর্তমানে আমাদের কাছে টেক্সের সেরা পরিবর্তন রয়েছে।

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


আমি অবশ্যই আপনার সাথে একমত হই যে টেক্সে প্রোগ্রামিং ম্যাসোকিস্টিক তবে আপনি যেমন বলেছিলেন, লোকেরা যেভাবেই হোক না কেন এবং আপনি যেমন উল্লেখ করেছেন, উন্নত সরঞ্জামের সুবিধা সবচেয়ে বেশি ব্যবহারকারীদের কাছে চলে যাবে। আপনার উত্তরের দ্বিতীয় অংশে আপনি প্রশ্ন জিজ্ঞাসার আগে আমার মনে থাকা অনেক ধারণাগুলি স্পর্শ করেছেন। আমি যুক্ত করতে পারি \ প্রস্থের এবং এর অনুরূপ কারণে, একটি লুপের সমাপ্তি পুরো টাইপসেটিং অ্যালগরিদম এবং ফন্ট সংজ্ঞাগুলির উপর নির্ভর করে। সুতরাং এটি সত্যিই অদ্ভুত হ্যাঁ এক্সডি
গিগা বাইট

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

তাই টেক্স একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ তবে আমাকে লাথি মেরে চিৎকার করতে হবে features […] একরকমভাবে আমি প্রতিটি ভাষা সর্বজনীন হওয়াতে অসন্তুষ্ট কারণ তারা আলাদাভাবে সর্বজনীন হবে। […] আমি সত্যিই টেক্সকে এমন কিছু হিসাবে ভাবছিলাম যা এতে আরও বেশি প্রোগ্রামিং করছিল, টাইপসেটিংয়ের আসল মিশনটি তত কম করছিল। আমি যখন টেক্স ম্যানুয়ালটিতে প্রাইম সংখ্যাগুলির গণনাটি রেখেছি তখন আমি এটিকে টেক্স ব্যবহারের উপায় হিসাবে ভাবছিলাম না। আমি ভাবছিলাম, "ওহ, যাইহোক, এটি দেখুন: কুকুরগুলি তাদের পেছনের পায়ে দাঁড়াতে পারে এবং টেক্স মূল সংখ্যাগুলি গণনা করতে পারে” "
শ্রীভাতসার

সত্যই আমি নথকে টিক্সে "লাথি মেরে এবং চিৎকার করে" প্রোগ্রামিংয়ের সুবিধা যুক্ত করার কারণ দেখতে পাচ্ছি না। টেক্স এক্স প্রোগ্রামিংটি স্বেচ্ছাচারী গণনা করতে ব্যবহৃত হয় না, তবে প্রায়শই টেক্স সিনট্যাক্স থেকে আসা সমস্যাগুলির চারপাশে বিমূর্ততা তৈরি করতে ব্যবহার করা হয়, যাতে ব্যবহারকারীরা টাইপসেটিংয়ের জন্য আরও শক্তিশালীভাবে এটি ব্যবহার করতে পারেন। সুতরাং নূথের সাথে আমি যতটা প্রোগ্রামিং রেখেছি তাতে টাইপসেটিংয়ের পরিমাণ কম হবে বলে আমি একমত নই। তিনি যদি প্রথম থেকেই সাধারণ প্রোগ্রামেবলতার প্রয়োজনীয়তা গ্রহণ করেন তবে তিনি আরও ভাল কিছু নিয়ে আসতে পারতেন। ওয়েবের সাথেও একই ঘটনা ঘটেছে এবং এখন বিশ্ব জাভাস্ক্রিপ্টে চলে।
গিগা বাইট

11

না, আমার জানা মতে আপনি যেভাবে আগ্রহী তেমন টেক্সকে আনুষ্ঠানিক করার কোনও কাজ হয়নি।

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

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

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

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


ধন্যবাদ। যেমনটি আপনি বলেছেন, বর্ধিত সংকলনটি এখানে আরও অনুকূল হতে পারে যে বিশেষত আমরা যদি ভাষাটির সাথে খুব খারাপভাবে সম্পাদকরা কীভাবে সংহত করতে পারি সে সম্পর্কে বিশেষত যদি চিন্তা করি
গিগা

অপ্টিমাইজেশনের সাথে সম্পর্কিত আরেকটি অ্যাপ্লিকেশন হ'ল স্বয়ংক্রিয়ভাবে ক্লিনআপ কোড, উদাহরণস্বরূপ অকেজো "\ সম্প্রসারিত" গুলি বা অনুরূপ অপসারণ।
গিগাবাইট

"জটিল গ্রাফিক্স প্যাকেজ" অবশ্যই, আপনি যদি টিক্জ বা পিজিএফ গ্রাফিক্স ব্যবহার করেন তবে আপনি সর্বদা সেগুলি বহিরাগত করতে পারেন এবং যখন পরিবর্তন হয় না তখন বিল্ডগুলিতে প্রচুর সময় সাশ্রয় করতে পারেন (এটি আসলে অনেকগুলি বর্ধিত সংকলনের মতো)।
জাব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.