ভাল প্রোগ্রামার সম্পর্কে টরভাল্ডসের উক্তি [বন্ধ]


238

দুর্ঘটনাক্রমে আমি লিনাস টোরভাল্ডসের নীচের উদ্ধৃতিতে হোঁচট খেয়েছি:

"খারাপ প্রোগ্রামাররা কোডটি নিয়ে চিন্তিত Good ভাল প্রোগ্রামাররা ডেটা কাঠামো এবং তাদের সম্পর্কের বিষয়ে উদ্বিগ্ন হন।"

আমি গত কয়েক দিন ধরে এটি সম্পর্কে ভেবেছি এবং আমি এখনও বিভ্রান্ত হয়ে পড়েছি (যা সম্ভবত ভাল চিহ্ন নয়), তাই আমি নিম্নলিখিতগুলি নিয়ে আলোচনা করতে চেয়েছিলাম:

  • এই সম্ভাব্য / ব্যাখ্যাটি কী বোঝায়?
  • এর থেকে কী প্রয়োগ / শেখা যায়?

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

5
হতে পারে আপনি যদি ডেটা স্ট্রাকচারকে "মার্জিত" তৈরি করতে সময় নেন তবে এই ডেটা স্ট্রাকচারগুলি মোকাবেলা করার জন্য কোডটি বিশিষ্ট হতে হবে না? আমি সম্ভবত টরভাল্ডসের উক্তিটির অর্থটি জানার জন্য খুব বোবা :}
প্রোগ্রামার

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

83
টরভাল্ডস এই পথে একা নন: "আমাকে আপনার ফ্লোচার্ট দেখান এবং আপনার টেবিলগুলি গোপন করুন এবং আমি রহস্যজনক হতে থাকব your আমাকে আপনার টেবিলগুলি দেখান, এবং আমার সাধারণত আপনার ফ্লোচার্টের প্রয়োজন হবে না; এটি সুস্পষ্ট হবে। " - ফ্রেড ব্রুকস, পৌরাণিক মানব-মাস। "আমাকে আপনার কোডটি দেখান এবং আপনার ডেটা স্ট্রাকচারগুলি গোপন করুন এবং আমি রহস্যজনক হতে থাকব your এবং "স্মার্ট ডেটা স্ট্রাকচার এবং বোবা কোড চারপাশের অন্যান্য পদ্ধতির চেয়ে অনেক বেশি ভাল কাজ করে।" - এরিক এস রেমন্ড, ক্যাথেড্রাল এবং দ্য বাজার।
জার্গ ডব্লু মিট্টাগ

4
এটি ব্যাখ্যা করে যে লিনাক্স কার্নেলটি কেন বিশৃঙ্খলা :)
l1x

উত্তর:


326

টরভাল্ডস এর ঠিক আগে কী বলেছিল তা বিবেচনা করতে সহায়তা করতে পারে:

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

তিনি যা বলছেন তা হ'ল ভাল ডেটা স্ট্রাকচারগুলি কোডটি ডিজাইন এবং বজায় রাখতে খুব সহজ করে তোলে, তবে সেরা কোডটি খারাপ ডেটা স্ট্রাকচারের পক্ষে তৈরি করতে পারে না।

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

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

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


25
দুর্বল ডেটা স্ট্রাকচারের জন্য সেরা কোডটি তৈরি করতে পারে না ভাল
গ্রেভী

5
তিনি প্রোগ্রামারদের দৃষ্টিভঙ্গি থেকে গিটে নিজেই পরিবর্তন আনছেন। কম ব্যাগ এবং দ্রুত বৈশিষ্ট্য সংযোজনগুলির জন্য সহজেই রক্ষণাবেক্ষণযোগ্য কোড তৈরি করা ব্যতীত শেষ ব্যবহারকারী দৃষ্টিকোণটি এই আলোচনার সম্পূর্ণরূপে অর্থেগোনাল।
কার্ল বিলেফেল্ট

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

1
+1 টি। এই উত্তরটি এমন একটি বিবৃতিতে প্রসঙ্গ রেখেছিল যা অন্যথায় খুব আলাদা কিছু বোঝাতে পারে। যে কেউ ফাইলে 5000 লাইনের এককথায় পড়েছেন তিনি জানেন আমার অর্থ কী।
রিওয়ালক

20
"প্রথমে ডেটা স্ট্রাকচারগুলির বিষয়ে চিন্তিত হোন এবং আপনার কোডটি স্বাভাবিকভাবেই পরিষ্কার হয়ে যাবে" ": রোমান রাষ্ট্রবিদ কাতো ( en.wikedia.org/wiki/Cato_the_Elder )" রিম টেনে, ভার্ভা সেভেনচার "বলতেন" = "যুক্তিটি পরিষ্কার করুন আপনার মন, শব্দগুলি স্বাভাবিকভাবে অনুসরণ করবে "। প্রোগ্রামিংয়ের ক্ষেত্রে একই জিনিস: ডেটা স্ট্রাকচার এবং ডিজাইনটি আগে বুঝতে হবে, আসল কোডটি নিজেরাই অনুসরণ করবে।
জর্জিও

60

অ্যালগরিদম + ডেটা স্ট্রাকচার = প্রোগ্রাম

কোড কেবলমাত্র অ্যালগরিদম এবং ডেটা স্ট্রাকচার প্রকাশ করার উপায়


সর্বশেষ সংস্করণ ethoberon.ethz.ch/WirthPubl/AD.pdf
ডিসিস্ট

পদ্ধতিগত প্রোগ্রামিংয়ের ক্ষেত্রে এটি সত্য; ওওপিতে কিছুটা আলাদা।
m3th0dman

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

31

এই উক্তিটি "দ্য আর্ট অফ ইউনিক্স প্রোগ্রামিং" -র একটি নিয়মের সাথে খুব পরিচিত যা লিনাক্সের স্রষ্টা হওয়ায় টরভাল্ডসের ভুলে যাওয়া। বইটি এখানে অনলাইনে অবস্থিত

বই থেকে নীচের উক্তিটি টরভাল্ডস যা বলছে তা ব্যাখ্যা করে।

প্রতিনিধিত্বের বিধি: ডেটাতে জ্ঞান ভাজুন যাতে প্রোগ্রাম যুক্তি বোকা এবং মজবুত হতে পারে।

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

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

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


আমারও মনে আছে!
জেসভিন জোস

1
ওটিওএইচ, সম্পর্কে স্ট্যাকওভারফ্লো প্রশ্নটি দেখুন int**। এর ফলে আপনাকে বোঝানো উচিত যে ডেটা বাস্তবে সুস্পষ্ট নয়; এটি কেবল তথ্যের সাথে সংযুক্তি দ্বারা হয়ে যায়। এবং যে অর্থ কোড হয়।
MSalters

29

কোড সহজ, কোডটির পিছনে যুক্তিটি জটিল।

আপনি যদি কোডটি নিয়ে চিন্তিত হন তবে এর অর্থ আপনি এখনও সেই বেসিকগুলি পান না এবং সম্ভবত জটিল (যেমন ডেটা স্ট্রাকচার এবং তাদের সম্পর্ক) এ হারিয়ে যান।


17
হেই, আমি ভাবছি যে পরবর্তী প্রজন্মের প্রোগ্রামাররা জিজ্ঞাসা করবে: "মরনস একবার বলেছিলেন Code is easy, it's the logic behind the code that is complex, তার মানে কী?"
ইয়ানিস

36
@YannisRizos বিশেষ করে বিভ্রান্তিকর হতে হবে যখন মানুষ নিশ্চিত কিনা এটা বলেছেন নয় মানুষ যারা নির্বোধ, অথবা morons নামে একটি একক ব্যক্তি ছিলেন।
কেচালোক্স

14

মরনসের উত্তরে কিছুটা প্রসারিত করার জন্য ধারণাটি এই যে কোডটির বিবরণগুলি (সিনট্যাক্স এবং কিছুটা হলেও কাঠামো / বিন্যাস) বুঝতে পারার পক্ষে যথেষ্ট সহজ যে আমরা এটি করতে পারি এমন সরঞ্জামগুলি তৈরি করি। কম্পাইলাররা কোডটিকে কার্যকরী প্রোগ্রাম / লাইব্রেরিতে রুপান্তরিত করার জন্য যা কিছু জানা দরকার তা বুঝতে পারে। কিন্তু একটি সংকলক আসলে প্রোগ্রামাররা যে সমস্যাগুলি সমাধান করে তা সমাধান করতে পারে না।

আপনি যুক্তিটি আরও একধাপ এগিয়ে নিয়ে যেতে পারেন এবং বলতে পারেন "তবে আমাদের কাছে এমন প্রোগ্রাম রয়েছে যা কোড উত্পন্ন করে" তবে এটি যে কোডটি উত্পন্ন করে তা কিছুটা ইনপুট ভিত্তিতে তৈরি হয় যা প্রায়শই হাতে তৈরি hand

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


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

13

লিনাস এর অর্থ:

আমাকে আপনার ফ্লোচার্টস [কোড] দেখান, এবং আপনার টেবিলগুলি গোপন করুন [স্কিমা], এবং আমি রহস্যজনক হতে থাকব; আমাকে আপনার টেবিলগুলি [স্কিমা] প্রদর্শন করুন এবং আমার সাধারণত আপনার ফ্লোচার্ট [কোড] লাগবে না: সেগুলি স্পষ্ট হবে।

- ফ্রেড ব্রুকস, "দ্য মিথোলিক্যাল ম্যান মাস", সিএইচ 9।


12

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

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


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

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

5

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

তবে উচ্চতর জিনিসগুলি আরও গুরুত্বপূর্ণ।

যদি আমি দু'পক্ষের সমস্যার মধ্যে ভুলত্রুটি সৃষ্টি করি যা ভুল আচরণের কারণ হয়ে থাকে, তবে সম্ভবত এটি ঠিক করা খুব কঠিন নয়। যদি এটি এটিকে নিম্ন-সম্পাদন করে তোলে, সম্ভবত এটি কোনও বিষয় নয় probably

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

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

এবং এটি হ'ল যা নিম্ন স্তরের সমস্যাগুলি খুঁজে পাওয়া মুশকিল করে তোলে (নিম্ন স্তরের বাগগুলি ফিক্সিং করা সহজভাবে সহজ, এটি যেগুলি কঠিন হতে পারে তা খুঁজে পাওয়া যায়)।

নিম্ন স্তরের কাপড় হয় গুরুত্বপূর্ণ, এবং তার অবশিষ্ট গুরুত্ব প্রায়ই গুরুত্বের অস্পষ্ট, কিন্তু এটি বড় কাপড় তুলনায় ম্লান করে।


2

কোড জানে এমন কেউ "গাছগুলি" দেখে। তবে যে কেউ ডেটা কাঠামো বোঝে সে "বন" দেখে। সুতরাং একটি ভাল প্রোগ্রামার কোডের চেয়ে ডেটা স্ট্রাকচারগুলিতে বেশি মনোনিবেশ করবে।


2
তবে বন বা অন্য গাছগুলিকে অন্যের বাদ দিয়ে ফোকাস করা ক্ষতিকারক হতে পারে, তাই এই উপমাটি খাপ খায় বলে আমি মনে করি না।
কোজিরো

1
@kojiro: এক্সপ্রেশনে গাছ জন্য বন দেখতে পারে না , ধারণা করা হয় যে কেউ বন দেখতে পারেন এছাড়াও গাছ (দেখুন দেখতে হবে en.wiktionary.org/wiki/see_the_forest_for_the_trees )। সুতরাং আমি মনে করি এটি এখানে একটি ভাল উপমা।
ট্রেব

2

ডেটা কীভাবে প্রবাহিত হবে তা জেনে রাখা গুরুত্বপূর্ণ। ফ্লো জানার জন্য আপনার ভাল ডেটা স্ট্রাকচার ডিজাইন করা দরকার।

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

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


2

এর থেকে কী প্রয়োগ / শেখা যায়?

আমি যদি হতে পারি তবে গত কয়েক সপ্তাহের মধ্যে আমার অভিজ্ঞতা। পূর্ববর্তী আলোচনাগুলি আমার প্রশ্নের উত্তর স্পষ্ট করে: "আমি কী শিখলাম?"

আমি কিছু কোড পুনরায় লিখেছিলাম এবং যে ফলাফলগুলি দেখছিলাম এবং তার উপর "কাঠামো, কাঠামো ..." বলেছি তা প্রতিবিম্বিত করার কারণেই এরকম নাটকীয় পার্থক্য রয়েছে। এখন আমি দেখতে পাচ্ছি যে এটি ডেটা স্ট্রাকচারই সমস্ত পার্থক্য তৈরি করেছিল। এবং আমি সব বলতে চাই ।

  • আমার আসল বিতরণ পরীক্ষা করার পরে, ব্যবসায় বিশ্লেষক আমাকে বলেছিলেন যে এটি কাজ করছে না। আমরা বলেছিলাম "30 দিন যোগ করুন" তবে আমাদের অর্থ "মাস যোগ করুন" ( ফলাফলের তারিখের দিনটি পরিবর্তন হয় না)। বিযুক্ত বছর, মাস, দিন যোগ করুন; উদাহরণস্বরূপ 18 মাসের জন্য 540 দিন নয়।

  • সমাধান: ডেটা স্ট্রাকচারে একক পূর্ণসংখ্যাকে একাধিক পূর্ণসংখ্যার শ্রেণীর সাথে প্রতিস্থাপন করে, এটির নির্মাণের পরিবর্তনটি একটি পদ্ধতিতে সীমাবদ্ধ ছিল। আসল তারিখের গাণিতিক বিবৃতিগুলি পরিবর্তন করুন - এর মধ্যে দুটিও।

পেওফ

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

কোড আচরণ / ফলাফল ঠিক করার ক্ষেত্রে:

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

1

আমি লক্ষ লক্ষ এলোমেলো এবং উজ্জ্বল বই সহ একটি সুন্দরভাবে তৈরি লাইব্রেরিতে লাইব্রেরিয়ানদের একটি খুব চতুর দল কল্পনা করতে চাই, এটি বেশ বোকামি হবে।


1

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


0

আমি দেখেছি এটি বহু অঞ্চল।

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

একটি ওয়েবপৃষ্ঠা করা বিবেচনা করুন। আপনি প্রথমে (এইচটিএমএল) কী প্রদর্শন করতে চান সে সম্পর্কে চিন্তাভাবনা করা এবং স্টাইল (সিএসএস) এবং স্ক্রিপ্টিং (আপনার সরঞ্জামটি বেছে নেওয়ার) পরে চিন্তা করা ভাল।

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


0

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

কোড সূচক মানের = [কোড পরিবর্তন] / [ডাটাবেস স্কিমা পরিবর্তন]

"আমাকে আপনার ফ্লোচার্টগুলি দেখান এবং আপনার টেবিলগুলি গোপন করুন এবং আমি রহস্যজনক হতে থাকব your আমাকে আপনার টেবিলগুলি দেখান এবং আমার সাধারণত আপনার ফ্লোচার্টের প্রয়োজন হয় না; সেগুলি স্পষ্ট হবে।" (ফ্রেড ব্রুকস)


-2

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


-4

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

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