আপনার লিস্প ওয়ার্কফ্লো দেখতে কেমন? [বন্ধ]


39

আমি এই মুহুর্তে লিস্প শিখছি, এমন একটি ভাষা অগ্রগতি থেকে এসেছি যা লোকোমোটিভ বেসিক -> জেড 80 এসেম্ব্লার -> পাস্কাল -> সি -> পার্ল -> সি # -> রুবি। আমার পদ্ধতি একই সাথে:

  • এসবিসিএল, কুইকলিপস, ক্লোজার-এইচটিএমএল এবং ড্রাকমা ব্যবহার করে একটি সাধারণ ওয়েব স্ক্র্যাপার লিখুন
  • ঘড়ি SICP বক্তৃতা

আমি মনে করি এটি ভালভাবে কাজ করছে; আমি ভাল 'লিস্প গগলস' বিকাশ করছি, এর মধ্যে এখন আমি যুক্তিসঙ্গতভাবে সহজেই পড়তে পারি। আমি কীভাবে লিস্প ইকোসিস্টেম কাজ করে তার জন্য অনুভূতি পাচ্ছি, যেমন নির্ভরতার জন্য কুইললিপ।

আমি যা অনুভব করছি তা হ'ল একটি পাকা লিস্পার আসলে কীভাবে কাজ করে তা অনুভূতি ।

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

সুতরাং, আমার প্রশ্নটি: একজন অভিজ্ঞ লিস্পার হিসাবে আপনার কর্মপ্রবাহটি কেমন দেখাচ্ছে? আপনি কি বেশিরভাগই আরপিএল, বা সম্পাদক এ কাজ করেন? আপনি ইউনিট পরীক্ষা কিভাবে করবেন? একটানা সমাকলান? প্যাকেজিং এবং স্থাপনা? আপনি যখন আপনার ডেস্কে বসবেন, একদিকে কফির বাষ্প মগ এবং অন্যদিকে জন ম্যাকার্থির ফ্রেমযুক্ত ফটো, আপনি কী করছেন ?

বর্তমানে, আমার মনে হচ্ছে আমি লিস্প কোডিংয়ের সাথে আঁকড়ে ধরছি, তবে লিস্পের বিকাশ নয় ...


2
এই প্রশ্নটি অফ-টপিক হিসাবে উপস্থিত বলে মনে হচ্ছে কারণ এটি একটি পোল এবং এটি এমন উত্তরগুলি আকর্ষণ করতে পারে যা সাইটের স্থায়ী মান প্রদান করবে না।

উত্তর:


13

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

স্লাইম আপনাকে ইমা্যাকস এবং আরপিএল এর মধ্যে সংহতকরণ দেয়। আমি সাধারণত যা করি তা হ'ল আমার সমস্ত ফাইল লোড করা, তারপরে ইমাসে আমি কাজ করছি এমন একটিটি খুলুন। আমি প্রতিটি ফাংশন টাইপ বা পরিবর্তন করার পরে, আমি টিপুন C-x C-e, যা REPL- এ ফাংশন সংজ্ঞা কার্যকর করে। তারপরে আমি আরপিএল বাফারে স্যুইচ করতে পারি এবং ফাংশনটি চেষ্টা করতে পারি। REPL- র সমস্ত ইতিহাস মানক Emacs কী সিকোয়েন্সগুলি ব্যবহার করে উপলভ্য এবং সম্পাদনাযোগ্য, তাই বিভিন্ন পরামিতিগুলির সাথে ফাংশন কলগুলি আবার করা সহজ।


4

আমি ক্লোজারের সাথে প্রাথমিকভাবে কাজ করি এবং এখানে আমার সেটআপটি রয়েছে:

  1. Eclipse IDE (আমি এটি অনেকটা জাভা কাজ করে থাকি বলে মাঝে মাঝে ক্লোজুরে হিসাবে একই প্রকল্পেও ব্যবহার করি)
  2. ক্লোজারের জন্য কাউন্টার ক্লকওয়াইজ প্লাগইন (এটিতে একটি আরপিএল অন্তর্ভুক্ত)
  3. নির্ভরতা এবং বিল্ড ম্যানেজমেন্টের জন্য ম্যাভেন
  4. উত্স কোড নিয়ন্ত্রণের জন্য ডিম্বাণু

কোডিং করার সময় ওয়ার্কফ্লো সাধারণত:

  1. সমস্ত বর্তমান উত্স ফাইল লোড করে একটি REPL খুলুন
  2. আরপিএলে কোড এবং পরীক্ষা
  3. যখন আমি কিছু কোড নিয়ে খুশি তখন উত্স ফাইলে কপি / পেস্ট করুন
  4. মাঝেমধ্যে আরপিএল পুনরায় বুট করুন (হয় যখন আমি অপরিবর্তনীয়ভাবে একটি নেমস্পেসে গোলমাল করেছি, অথবা কেবলমাত্র উত্স ফাইলগুলিতে এখনও সবকিছু কাজ করছে কিনা তা যাচাই করার জন্য)
  5. উত্স ফাইলগুলিতে পরীক্ষাও লিখুন, যা প্রতিটি মাভেন বিল্ড দ্বারা স্বয়ংক্রিয়ভাবে চালিত হয়। কখনও কখনও আমি অনানুষ্ঠানিক পরীক্ষাগুলি কেবলমাত্র আরআরপিএলে করেছি সরাসরি ইউনিট পরীক্ষায় পরিণত হয়।
  6. এই সময়ে প্রতিশ্রুতিবদ্ধ - প্রায় একটি নিয়মিত বিকাশ কর্মপ্রবাহ

সামগ্রিকভাবে এটি নিয়মিত জাভা / সি # ওয়ার্কফ্লো থেকে খুব আলাদা নয় বিকাশের সময় আরএপিএল এর আরও ইন্টারেক্টিভ ব্যবহারের থেকে পৃথক।


সম্ভবত আপনি nrepl + emacs উল্লেখ করতে পারেন: যতদূর আমি জানি এটি একটি পরিবেশ দেয় যা স্লাইমের সাথে আরও সাদৃশ্যপূর্ণ।
জর্জিও

4

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

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

আপনি যখন জানেন যে আপনার বর্তমান সমাধান সাবপটিমাল যা আমি সেটিকে সর্বাধিক করার চেষ্টা করি তখন লিস্পটি দিকনির্দেশকে পরিবর্তন করা এবং আলাদা পদ্ধতির পক্ষে এত সহজ করে তোলে।

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

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

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


2

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

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

প্যাকেজিং যতদূর যায়, আমার এএসডিএফ-ইনস্টলযোগ্য প্রকল্পগুলি প্যাকআপ করতে, ডাউনলোড রিপোজিটরিতে চড় মারতে এবং ভার্সন ভার্শনিংয়ে সহায়তা করার জন্য আমার কাছে কিছু ইউটিলিটি কোড রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.