আপনি কীভাবে কিছু কোড করবেন যখন আপনার কোনও ধারণা নেই যে এটি আসলে কীভাবে কাজ করে? [বন্ধ]


14

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

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

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

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


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

8
আপনি কেবল সাইকোফোনটিতে কিছু টিউন খেলতে শিখলেন, এবং এখন আপনি কোনও বড় আন্তর্জাতিক অর্কেস্ট্রাতে খেলতে চান? আসুন, আপনি খুব বেশি আশা করছেন are প্রোগ্রামিং কোনও যন্ত্র বাজানোর মতো - আপনি ছোট, সাধারণ সুরগুলি দিয়ে শুরু করেন এবং বেশ কয়েক বছর অনুশীলনের পরে আপনি সিম্ফনি বাজানো শিখেন।
ডক ব্রাউন

3
একমত। আপনার পক্ষে এমন কিছু শেখার সুযোগ হিসাবে নিন যা প্রচুর প্রাথমিকভাবে কঠোরভাবে শেখা হয়। একটু শুরু করুন । এবং ভিএম এর কোডও পড়েন। আপনি বিদ্যমান কোড পড়া প্রচুর শিখতে পারেন।
লাইভ

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

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

উত্তর:


17

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

সমস্যার দিকে এগিয়ে যাওয়া

সাধারণভাবে, বেশিরভাগ প্রকল্পের জন্য শুরু করার উপায় প্রায় একই রকম, যদিও:

  • আপনি আপনার প্রয়োজনীয়তা সংগ্রহ করুন। সফটওয়্যারটি ঠিক কী করবে?
  • আপনি খুব অল্প প্রয়োজনীয়তার সাথে শুরু করেন এবং তারপরে ক্রমে ক্রমে ক্রমে যুক্ত হন।
  • আপনি আপনার বর্তমান প্রয়োজনীয়তা দ্বারা উত্পন্ন সমস্যাগুলি উপ-সমস্যার মধ্যে ফেলে দিন omp
  • আপনি কীভাবে বাস্তবায়ন করবেন জানেন এমন কিছু না হওয়া পর্যন্ত আপনি আপনার উপ-সমস্যাগুলি সংশোধন করে চলেছেন।

উদাহরণ

টেক্সট সম্পাদক উদাহরণ গ্রহণ করা যাক।

  • আপনি স্ক্রিনে একটি পাঠ্য ফাইলের একটি অংশ প্রদর্শন করতে চান, অক্ষরগুলি সন্নিবেশ করান এবং সরান এবং বর্তমান সংস্করণটি সংরক্ষণ করতে চান।

  • কেবল একটি ফাইল পড়া এবং এর বিষয়বস্তু প্রদর্শন দিয়ে শুরু করুন।

  • আপনি নিম্নলিখিত উপ-সমস্যাগুলি (অন্যদের মধ্যে) সনাক্ত করতে পারবেন:

    • আমি কীভাবে ফাইল নামটি প্রদর্শন করতে পারি?
    • একটি ফাইলের নাম দেওয়া হয়েছে, আমি কীভাবে ফাইলের বিষয়বস্তু পেতে পারি?
    • কোনও ফাইলের বিষয়বস্তু দেওয়া হয়েছে, আমি কীভাবে সেগুলি প্রদর্শন করব?

আপনার প্রয়োজনীয়তা (ফাইলটি লোড করুন এবং এটি প্রদর্শন করুন) শেষ হয়ে গেলে আপনি কীভাবে কেবল এমন একটি অংশ প্রদর্শিত করতে পারেন যা স্ক্রিনের সাথে খাপ খায়, আপনার ফাইলে নেভিগেট করা ইত্যাদি considering

পরবর্তী ধাপ হল

সময়ের সাথে সাথে আপনি আরও জটিল সমস্যাগুলি গ্রহণ করার সময় আপনি বুঝতে পারবেন যে আপনার সমস্যাগুলি পচে যাওয়ার উপযুক্ত উপায়গুলি খুঁজে পাওয়া ক্রমশ কঠিন হয়ে পড়েছে। আপনি আরও লক্ষ্য করবেন যে কোড পরিবর্তন করা সময়ের সাথে সাথে ক্লান্তিকর হয়ে উঠতে পারে।

এই মুহুর্তে, কিছু বেসিক আর্কিটেকচার এবং ডিজাইনের ধারণা শেখার সময় এসেছে।


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

2
এটি যুক্ত করার জন্য, "আমি তাদের কীভাবে প্রদর্শন করব" সম্ভবত স্ক্রিনের একটি নির্দিষ্ট অবস্থানে একটি নির্দিষ্ট চরিত্র লেখার জন্য আরও ভেঙে যেতে পারে (যদি আমরা কমান্ড-লাইন সম্পাদক সম্পর্কে কথা বলি), যা এমন কিছু হওয়া উচিত অনলাইনে সহজেই উত্তর খুঁজে নিন।
ডিউক্লিং

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

15

আপনি না।

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


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

3
@ ফাইথলেসস - এমন কিছু যা ফাইল পড়তে এবং লেখতে কোনও প্রাথমিক মধ্যবর্তী পদক্ষেপ বলে মনে হয়।
টেলাস্টিন

9
একটি ফাইল ভিউয়ার তারপর একটি ভালো প্রকল্প, যেমন মত একটি পেজার হতে পারে less, moreঅথবা viewপ্রোগ্রাম। তারা সম্পাদকদের কিছু দিক ভাগ করে নিতে পারে, পরিবর্তিত পরিবর্তন সম্পাদনকারী বাফারগুলির জটিলতা ছাড়াই।
আমন

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

2
@ ফাইথলেসস এছাড়াও একটি লাইন সম্পাদক , পাঠ্য সম্পাদক প্রোগ্রামগুলির পূর্বসূরীর বৈশিষ্ট্যগুলি একবার দেখুন
বার্গি

2

আপনি কীভাবে আপনার পাঠ্য সম্পাদককে কাজ করতে চান তা সিদ্ধান্ত নিতে হবে ।

এটি আপনার নিজের প্রকল্পগুলি শুরু থেকে শেষের দিকে বিকাশের সবচেয়ে উদ্বেগজনক এবং ফলপ্রসূ অভিজ্ঞতা experiences আপনার কাছ থেকে তৈরি করার জন্য কেউ প্রয়োজনীয়তা প্রেরণ করছে না। আপনার নিজের প্রয়োজনীয়তা বিকাশ করা উচিত।

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

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

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


1

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

বিভিন্ন বিকল্প মাথায় আসে:

  • আপনি পরিচিত কিছু পণ্যের কোড অধ্যয়ন করুন আপনি যদি দক্ষ হন তবে vimএটি দেখুন এবং এটি কীভাবে ডেটা উপস্থাপন করে বা কোনও একক অক্ষর ( fকমান্ড) অনুসন্ধান করে তার মতো ছোট এবং বিচ্ছিন্ন কিছু বোঝার চেষ্টা করুন ।
  • একটি খুব সহজ প্রোগ্রাম কোড অধ্যয়ন ও আপনার পথ সেখানে থেকে কাজ: catতারপর কমান্ড wcতারপর grepতারপর sedউদাহরণস্বরূপ।
  • এমন একটি প্রোগ্রাম লেখার চেষ্টা করুন যা সম্পাদকের একক বৈশিষ্ট্যটি করে। হতে পারে কোনও ফাইলের প্রতিটি লাইনে দ্বিতীয় অক্ষর মুছুন (এটি আবার না লিখে) বা কেবল ফাইলের 50 থেকে 70 টি রেখা প্রদর্শন করুন।

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