আমি এখনও বুঝতে পারি না কিভাবে প্রোগ্রাম করব?


122

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

কিন্তু, আমি এখনও এমন কোনও প্রোগ্রাম লিখতে পারি যা দরকারী কিছু করে does

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

আমি সোর্সফোর্সে ওপেন-সোর্স প্রোগ্রামগুলি দেখেছি , তবে তারা আমার কাছে খুব একটা বোঝায় না। প্রতিটি প্রোগ্রামে শত শত ফাইল এবং কোডের কয়েক হাজার লাইন রয়েছে। তবে আমি কীভাবে এটি করব তা শিখব? আমি অ্যামাজনে কিনতে পারি এমন কোনও বইয়ের মধ্যে এমন কিছুই নেই যা আমাকে এই প্রোগ্রামগুলির কোনও লেখার সরঞ্জাম দেয় give

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

দেখে মনে হচ্ছে আপনি কোনও বইতে বা ক্লাস থেকে শিখতে পারার চেয়ে প্রোগ্রাম লেখার সাথে আরও অনেক কিছু জড়িত। আমার মনে হচ্ছে কিছু আছে।

আমাকে কীভাবে সঠিক ট্র্যাকে রাখা যায়?


52
কিছু লোক কেবল প্রোগ্রাম করার উদ্দেশ্যে নয়। কোনও বিকল্প পথ আপনাকে সাজিয়ে রাখবে বা অন্য কিছু করার চেষ্টা করার সময় যদি কেবল আপনি উত্তর দিতে পারেন। আপনি এখানে এমন কোনও উত্তর পাবেন যা কার্যকর হবে।
duffymo

3
আপনি কি "দরকারী" হিসাবে বিবেচনা করবেন?

7
@ মিশেল - আমি একজনকে অফ টপিক হিসাবে ভোট দিয়ে পিএসইতে চলে এসেছি আমি ভেবেছিলাম যে কর্মজীবন এবং একটি নৈপুণ্য হিসাবে প্রোগ্রামিং উপর আলোচনার জন্য এটি আরও উপযুক্ত জায়গা হবে।

12
@ ডিফাইমো: এবং কিছু লোক প্রশ্নগুলির উপর মন্তব্য করতে বোঝায় না।
ডেভিডক 01

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

উত্তর:


93

আরও জটিল প্রোগ্রাম নির্মাণের অভিজ্ঞতা নিয়ে আসে। যখন আমি প্রথম প্রোগ্রাম করেছিলাম আমি ভেবেছিলাম যে এটি 25 লাইন দীর্ঘ (এবং আমাকে স্ক্রোল বারটি ব্যবহার করতে হয়েছিল) ভাল হলে আমি এখন একই প্রকল্পের আবেদনে বছরের পর বছর কয়েকশ লাইন লিখি।

আপনি এই পৃষ্ঠায় আকর্ষণীয় "দশ বছরের মধ্যে নিজেকে প্রোগ্রামিং শেখান" পেতে পারেন http://norvig.com/21-days.html

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


13
+1 বিল কী বলেছেন এবং "লেখকের ব্লক" নিয়ে আলোচনা করার জন্য।
ডেভিড ওয়েজার 21

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

5
গল্প লেখার উপমাটির জন্য +1। আমার প্রোগ্রামগুলি এখনও "একবারে একবার ..." পর্যায়ে রয়েছে।
অ্যান্ডি

4
প্রোগ্রামিং সম্পর্কে ভীতিজনক বিষয়গুলির মধ্যে একটি হ'ল একটি খালি ডকুমেন্ট। একবার আপনি এই প্রতিবন্ধকতা অতিক্রম করার পরে, আপনি ভাল উন্নতি করেছেন।
গ্যাবলিন

1
লেখক এর ব্লক. আপনি সেখানে পেরেক!
আবেল

70

সোর্সফোর্স বা গিটহাবের মতো আপনি যেগুলি খুঁজে পান তার মতো আমিও খুব বড় প্রকল্পগুলি দ্বারা সর্বদা অভিভূত হয়েছি। আমি ভাবলাম যে কেউ বা এমনকি একটি দল কীভাবে বুঝতে পারে যে 10 এবং 100 এর ফাইলগুলিতে কী ঘটছে যা সহস্র এবং কয়েক হাজার লাইনের কোড রয়েছে।

কেউ করে নি. কমপক্ষে প্রাথমিকভাবে।

প্রকল্পগুলি জৈব জিনিস। যা সত্যিই সহজ ধারণা হিসাবে শুরু হয় তা দ্রুত কাজের বিশাল অংশে প্রসারিত করতে পারে। এটি আমার ধারণা, ক্লাসিক জলপ্রপাতের পরিবর্তে পুনরাবৃত্ত বিকাশের মূল কারণ।

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

উদাহরণ:

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

তারপরে আপনি সেই থ্রেডিংয়ের কারণে সম্মতিযুক্ত ইস্যুগুলিতে চলে যান। সুতরাং আপনি সমবর্তী ডেটা স্ট্রাকচারগুলিতে পরিবর্তন করে এটি ঠিক করেছেন।

এখন প্রক্রিয়াটি ধীর হয়ে গেছে। সুতরাং আপনি একযোগে ডেটা স্ট্রাকচারগুলিকে নিয়মিত পরিবর্তন করেন তবে সমন্বয়সাধনের জন্য লকিং ব্যবস্থা সরবরাহ করেন।

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

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

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

দুটি টিকিট খোলা। তালিকার প্রক্রিয়াকরণে একটি ত্রুটি রয়েছে এবং এমন কিছু বিরল ঘটনা রয়েছে যা অচল করে দেওয়া।

আপনি ডেডলকিং মোকাবেলা করার সময় আপনার বন্ধু তালিকার প্রসেসিং বাগে কাজ করে। আপনি বুঝতে পেরেছেন যে পারমাণবিক ক্রিয়াকলাপগুলিতে মোটামুটি উল্লেখযোগ্য পুনরায় লেখার দরকার পড়ে।

... এবং তাই যায়.

প্রকল্পটি কীভাবে বৃদ্ধি পায় এটি মোটামুটি সাধারণ বলে মনে হয়। 10 বা তাই ফাইলগুলি কয়েক সপ্তাহের মধ্যে সবেমাত্র 20 এ বেড়েছে। নতুন বৈশিষ্ট্য যুক্ত করা হয়েছে যা মূল পরিকল্পনার বাইরে ছিল না। কনভোলিউটেড বাগ-ফিক্সগুলি যুক্ত করা হয়েছে যা কোডটি অপ্রাকৃতিকভাবে বড়।

আমার উপদেশ:

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


হ্যাঁ, এটি প্রায় ব্যক্তিগত অভিজ্ঞতা থেকে এসেছে বলে মনে হয়েছে ...
নিক অল্ডউইন

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

এটি আমি লিখেছি প্রায় প্রতিটি প্রোগ্রাম বর্ণনা করে।
টিম পোস্ট

সুতরাং এটি যায়। কুর্ট ভননেগুট কম্পিউটার প্রোগ্রামিংয়ের সাথে সাক্ষাত করেছেন
জুট করুন

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

28

এমনকি বৃহত্তম প্রোগ্রামটি একটি ধারণা দিয়ে শুরু হয় এবং এটি একবারে একটি লাইন লেখা হয়।

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

তবে কিছু কিছু জিনিস রয়েছে যা আপনার প্রথম থেকেই সচেতন হওয়া উচিত:

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

6
"রিয়েল-ওয়ার্ল্ড প্রোগ্রামগুলি কীভাবে লিখতে হয় তা শেখার সর্বোত্তম (সম্ভবত একমাত্র) উপায় তা করা শুরু করা" " কম-বেশি যা বলতে চাইছি। আপনি কেবল এতগুলি "বেসিকগুলি বুঝতে" বুঝতে এবং পড়তে পারবেন ... রাবারকে কোথাও কোথাও রাস্তায় আঘাত করতে হবে।
ওয়ার্নারসিডি

1
"এটি করা শুরু করুন" রেখার জন্য +1। আপনি কোনও বই থেকে অভিজ্ঞতা শিখতে পারবেন না।
রিওয়ালক

"ক্লিন কোড" বইটি উল্লেখ করার জন্য +1। আপনার কোডটি সর্বদা পঠনযোগ্য হওয়া উচিত। পড়তে সহজ == সহজেই বোঝা == পরিবর্তন করা সহজ
ইগর পপভ

15

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

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

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

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

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

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

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

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

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

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


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

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

চিন্তা দিয়ে শুরু জন্য +1 সম্পর্কে ছোট জিনিষ, এবং তারপর চিন্তা থেকে সরানোর মধ্যে একই জিনিস এবং সম্পর্কে বৃহত্তর জিনিস।
গ্যাবলিন

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

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

9

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

শেষের সারি. এটি সব অনুশীলন সম্পর্কে। খনন এবং কোড, কোড, কোড চালিয়ে যান।


7

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

সাধারণ নিয়মটি হ'ল পর্যাপ্ত স্টাফ লেখার পরে, একরকম আলোকপাত অনিবার্যভাবে ঘটবে।

শুরু করার জন্য একটি দুর্দান্ত পয়েন্টটি (যদি আপনি সি এর মতো মনে করেন) হ'ল http://gamedev.net/ , বিশেষত http://nehe.gamedev.net/ । আরও অনেক ভাল পয়েন্ট শুরু করার জন্য রয়েছে: ডি


4
(হে এবং আমি ঠিক বুঝতে পেরেছি কেন সবাই গেম দিয়ে শুরু হয় তেলতেলে এবং সুন্দর কাপড় প্রেরণা হয়।।)

10
সবাই ? সাহসী দাবি।

4
আমি কোন খেলা দিয়ে শুরু করিনি। আমি জটিলটি ছাড়িয়ে এটি খুঁজে পেয়েছি = পি
জোশ স্মিটন

4
আজকাল বেশিরভাগ লোকেরা ওয়েব অ্যাপ দিয়ে শুরু করে, প্রবেশের ক্ষেত্রে অনেক কম বাধা (এটি কেবল পাঠ্য)।
slebetman

4
আপনার প্রথম মন্তব্যটি সম্ভবত আপনার উত্তরের চেয়ে ভাল ছিল - চকচকে এবং সুন্দর জিনিস প্রেরণাদায়ক । এটাই গুরুত্বপূর্ণ।
স্কর্চিও

6

আপনি পুরো বিশাল প্রোগ্রামটি দেখছেন এবং এটি অসম্ভব বলে মনে হচ্ছে। তবে পুরো জিনিসটি ছোট মূর্খ প্রোগ্রামগুলির মতো তৈরি যা আপনি বলছেন যে "দরকারী কিছু করবেন না"।

আপনার যা দরকার তা হ'ল বিশাল জটিল কাজকে ক্ষুদ্র সহজ কাজগুলিতে ভাঙ্গা experience এটিই সমস্ত প্রোগ্রামিংয়ের মূল। বাকিগুলি কেবল শব্দার্থবিজ্ঞানের।


6

ড্রাইভিং বা রান্না করার মতোই প্রোগ্রামিং হ'ল এমন কিছু যা আপনি করতে শিখেন। অনুশীলন অপরিবর্তনীয়।

পাঠ্যপুস্তকের উদাহরণগুলি যদি আপনার জন্য ইতিমধ্যে খুব মৌলিক হয় তবে তা দুর্দান্ত! আরও জটিল কিছুতে যাওয়ার সময় - এবং আপনি ইতিমধ্যে নিজের জন্য কিছু চ্যালেঞ্জিক অনুশীলনগুলি বের করতে পারেন।

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


5

200 লাইনের স্ক্রিপ্ট লিখুন। তারপরে এটি উন্নত করা শুরু করুন।

ফিচারাইটিসগুলি আপনাকে 100 উত্স ফাইল এবং অল্প সময়ের মধ্যে কয়েকশত কেএলকে নিয়ে যাবে :)


5

"কীভাবে এমন জটিল প্রোগ্রামগুলি বিকাশ করা যায় যা বাস্তবে কার্যকর যে কোনও কিছুই করে!"

"দরকারী" এর সংজ্ঞা ব্যতীত আপনাকে "ডান" ট্র্যাকটিতে পেতে আমরা আসলেই খুব বেশি কিছু করতে পারি না।

আমরা জানি না আপনি কীভাবে ব্যর্থ হচ্ছেন, বা কী ভুল হচ্ছে। আপনি কোন ট্র্যাকে রয়েছেন তা আমরা বলতে পারি না।

একরকম, আপনার মাথায় ধারণা রয়েছে যে আপনি যোগাযোগ করছেন না।

সফটওয়্যার - প্রোগ্রামিং - আপনার মাথা থেকে কিছু ভাষায় (পাইথন, জাভা, ইংরাজী, যাই হোক না কেন) ধারণা পাওয়া যায়।

প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ পদক্ষেপ (এবং প্রশ্ন জিজ্ঞাসা করা) হ'ল আপনার শর্তাদি সংজ্ঞায়িত করা। "দরকারী কিছু করতে" বলতে কী বোঝ? খুব পরিষ্কার, খুব সম্পূর্ণ এবং খুব নির্ভুল হতে হবে।


ভোট দিয়েছেন, আমি এই বিষয়ে ওপির উত্তরে সত্যই আগ্রহী।
স্কর্চিও

5

আমি এই প্রশ্নটি সর্বদা জিজ্ঞাসা করি, যেমন কীভাবে শুরু করব। এটা সত্যিই সহজ। এখানে একটি ধাপে ধাপে দেওয়া হয়।

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

কর্মপ্রবাহের জন্য +1 - এটি কোনওভাবেই কাজ করা উচিত। দ্বিতীয় ধাপটি কতটা গুরুত্বপূর্ণ তা আমি বলতে পারি না। হতে পারে এটি সেই পদক্ষেপ যা আপনি কাজটি পরিচালনা করতে পারবেন কিনা তা সিদ্ধান্ত নেবে।
স্কর্চিও

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

আসলে, ইমো, আপনার অ্যাপ্লিকেশনটির জন্য লজিক লিখে শুরু করা উচিত, তারপরে এটিতে ইউআই যুক্ত করুন। এটা সহজ।
ক্যাফগিকে

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

1
@ চাদ আমি আপনার সাথে একমত নই নুবসের জন্য, যুক্তি বিমূর্ত, তবে ইউআই বোঝা সহজ। বিপরীত অভিজ্ঞতা সঙ্গে আসে।
ক্রোধহ্যাকার

4

কিছু ছোট জিনিস তৈরি করুন। কিছু মনে করবেন না, যে আপনার প্রোগ্রামটি এটি করা 1000 তম হবে।

কিছু ধারণা:

  • একটি ঘড়ি (প্রথমে ডিজিটাল, তারপরে অ্যানালগ চেহারা),
  • স্বয়ংক্রিয় ল্যাবিরিন্থ নির্মাতা,
  • ডিরেক্টরি কাঠামো প্রদর্শক,
  • এমপি 3 অ্যালবাম লিস্টার,
  • প্রভৃতি

প্ল্যাটফর্ম নির্বাচন করা, সরঞ্জামগুলি কার্যের অংশ।


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

@ জোশ, এমপি 3 ডিকোডিং কোনও প্রারম্ভিক প্রোগ্রামারটির জন্য সঠিক হওয়ার জন্য তুচ্ছ নয়।

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

@ জোশ, আমি এখনও এমপি 3 ডিকোডারটি ছোট জিনিস এবং এই উদ্দেশ্যে উপযুক্ত বলে মনে করি না।

3

ঠিক আছে চলুন শুরু করা যাক এক্স এক্স এর জন্য আপনার ধারণাটি যা কার্যকর কিছু করে এবং আসুন এটি ভেঙে দিন:

  • প্রোগ্রামটির লজিক্যাল ফ্লো / ফ্লো (গুলি) বিন্যাস করতে কাগজ, মাইন্ড ম্যাপিং বা ডায়াগ্রামিং সফ্টওয়্যার ব্যবহার করুন।

  • আপনি যেহেতু সবে শুরু করছেন সেই আইটেমগুলির মধ্যে একটি বেছে নিন (প্রায়শই শুরুতে কাছে) এবং এটিকে আরও ভেঙে দিন।

  • প্রথমে আপনার কোডটি লিখুন এবং এটি তৈরিতে এটি ব্যবহার করুন

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

প্রবাদটি যেমন রয়েছে - জ্নোম কোনও দিনে নির্মিত হয়নি :-)


3

(ইতিমধ্যে মন্তব্যে উপরে উত্তর দেওয়া হয়েছে। প্রশ্নটি পুনরায় খোলার পরে এটি উত্তর হিসাবে জমা দেওয়ার পরামর্শ দেওয়া হয়েছিল।)

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

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

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


3

আপনি যখন শিক্ষানবিশ হয়ে থাকেন তখন করণীয় সবচেয়ে কঠিন কাজগুলির মধ্যে একটি হল "কীভাবে আমি উন্নতি করতে পারি" - অনুশীলনের জন্য আপনার বর্তমান স্তরে কী কী হওয়া উচিত তার জন্য বাস্তব লক্ষ্য নির্ধারণ করা হচ্ছে।

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

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি http://projecteuler.net/ এ ঘনিষ্ঠভাবে নজর রাখুন যার প্রচুর অনুশীলন এবং একটি স্বয়ংক্রিয় "চেক উত্তর" সিস্টেম রয়েছে যা আপনাকে আপনার নিজের গতিতে কাজ করতে দেয়। অনুশীলনগুলি ভাল শব্দযুক্ত তবে আপনাকে ভাবতে হবে। কিছু এমনকি আপনার অনেক চিন্তা করার প্রয়োজন হতে পারে তবে এগুলি সমাধান করতে ব্যর্থ হলেও আপনাকে দরকারী কিছু শেখাতে হবে।

সমস্যা 1 এর পুরো শব্দটি হ'ল:

যদি আমরা 10 এর নীচে সমস্ত প্রাকৃতিক সংখ্যাগুলি 3 বা 5 এর গুণক হিসাবে তালিকাভুক্ত করি তবে আমরা 3, 5, 6 এবং 9 পাই these এই গুণকের যোগফল 23 হয়।

1000 এর নীচে 3 বা 5 এর সমস্ত গুণকের যোগফলটি সন্ধান করুন।

আপনি কি মনে করেন আপনি এটি সমাধান করতে পারেন? তাহলে এটা করো!


3

আপনার বাস্তব বিশ্বের অভিজ্ঞতা প্রয়োজন !! । কোনও বই আপনাকে তা শেখাতে পারে না!

আপনাকে অন্যের কোডটি কীভাবে পড়তে হবে, কীভাবে এটি বজায় রাখতে হবে, কীভাবে তাদের ঘৃণা করতে হবে (কোড এবং কোডার উভয়ই) কীভাবে এটি উন্নত করতে হবে, কীভাবে আপনি আরও ভাল করতে পারবেন তা ভাবতে হবে এবং কয়েক মাস পরে উচ্চস্বরে চিৎকার করতে হবে I ' কে মারবে কে এই কোডের টুকরো লিখেছিল !!! কেবলমাত্র উত্স সংস্করণে নিয়ন্ত্রণ করতে এটিই আপনি ছিলেন!

আপনাকে বুঝতে হবে বইগুলি খুব নির্দিষ্ট এবং কিছু সময় যারা ইতিমধ্যে সফ্টওয়্যার বিকাশ করতে জানেন তাদের জন্য।

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

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

আপনি যদি মেধাবী বিকাশকারীদের সাথে চাকরি পাওয়ার ব্যবস্থা করেন তবে আরও ভাল। তাদের কাছ থেকে শিখুন, ভুল করতে ভয় পাবেন না।

আপনার প্রথম লাইভ-প্রযোজনীয় জরুরী বাগটি ঠিক না করা অবধি আপনি জানেন না যে সফ্টওয়্যার বাগ কী!

:)


2

একটি ওপেন সোর্স প্রকল্প চেষ্টা করুন, আপনি ফিট করতে পারেন কিনা তা দেখুন the উত্সটি ডাউনলোড করে শুরু করুন এবং দেখুন আপনি কিছু টিকিট তুলতে পারবেন কিনা


15
নবীন প্রোগ্রামারদের একটি ওপেন সোর্স প্রকল্পে যোগদানের চেষ্টা করা উচিত নয়; আপনি সহজভাবে পেতে হবে । ওপেন সোর্স প্রকল্পগুলি টিউটর নতুনদের জন্য নেই।

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

3
@ জেলিফিশত্রী, আপনি যদি প্রোগ্রাম না করতে পারেন তবে এটি কিছুটা অত্যুক্তি হতে পারে।

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

@ জেলিফিশ, নিশ্চিত, এবং আমি নিশ্চিত যে এটি নেওয়া ভাল পদক্ষেপ, তবে এখনও এই ক্ষেত্রে হয়নি।

2

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

এটি খুব কার্যকর নয়, তবে আপনি অনেক কিছু শিখেন এবং দেখতে এটি সুন্দর।


আমি এটি পছন্দ করি - একটি নতুন ভাষা শেখার জন্য বেশ কাব্যিক উপায়। তবে আমি জানি না যে আমাদের এটি একটি শিক্ষানবিসের জন্য সুপারিশ করা উচিত: ডি
স্কোরচিও

2

প্রোগ্রামিং সমস্যা সমাধান এবং যোগাযোগ সম্পর্কিত, প্রচুর কোড না লিখে। কোড কেবল একটি প্রয়োজনীয়তা, আপনার সাধারণত কম কোড লেখার চেষ্টা করা উচিত, বেশি কিছু নয়।

আপনি কোথায় শুরু করবেন তা না জানলে হয়তো আপনার কোনও সমস্যা নেই!

লিনাক্স এবং অন্যান্য ইউনিক্সের মতো সিস্টেমগুলির দিকে তাকান: এগুলি সবগুলিতে অনেকগুলি ছোট ছোট অ্যাপ্লিকেশন থাকে যা কেবল একটি কাজ করে তবে এটি ভাল করে

যখন আমার কম্পিউটারে একটি ফোল্ডারে 10 টি বড় ফাইল সন্ধানের জন্য আমার স্ক্রিপ্টের প্রয়োজন ছিল, আমি বই পড়ছিলাম না। আমি সবেমাত্র গুগল করেছি এবং বিদ্যমান সমাধানগুলির মধ্যে একটি ব্যবহার করেছি। আমি কি কোনও কোড লিখেছি? - না সমস্যা কি সমাধান হচ্ছে? - হ্যাঁ. এটি কি এক লাইনের প্রোগ্রামটি কার্যকর? - হেক হ্যাঁ

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


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

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

2

ভাগ এবং বিজয়।

এটি যতটা সহজ, তত কঠিন।


2

আমি যখন প্রোগ্রামিং শুরু করি, তখন আমি কম্পিউটার গেম পছন্দ করতাম। তাই আমি আমার নিজের গেমগুলি লিখতে শুরু করেছি, এটি করার জন্য আমার কাছে কোনও সরঞ্জাম উপস্থিত হওয়ার সাথে সাথে।

বেশ স্বাভাবিকভাবেই, আমার প্রথম খেলাটি একটি পাঠ্য অ্যাডভেঞ্চার ছিল। একইভাবে, আপনি একটি কুইজ বা কিছু, বা অনুমানের গেমগুলির সাথে শুরু করতে পারেন।

এছাড়াও, আপনি কোনও স্লট মেশিনের মতো কোনও কিছু দিয়ে শুরু করতে পারেন (আপনার সত্যিই অ্যানিমেশন বা এমনকি ছবিগুলির দরকার নেই Just কেবলমাত্র এ = আপেল, এল = লেবু, এস = শুরু, পি = বরই ইত্যাদি)।

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

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

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

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

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


2

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

আমি নিম্নলিখিতগুলির এক বা একাধিক পরামর্শ দেব:

  • একটি মুক্ত উত্স প্রকল্প ডাউনলোড করুন এবং কিছু যুক্ত করুন। এটি দরকারী বা ভাল হতে হবে না, তবে আপনাকে কাঠামোটি দেখতে হবে, যা আপনাকে বোঝাবে যে কত বড় প্রকল্প নির্মিত is

  • নির্ভরতার জন্য তীর সহ কেবলমাত্র আপনার শেষ প্রকল্পটি কাগজে ডিজাইন করুন। আপনি যদি সাপ তৈরি করে থাকেন তবে আপনার কাছে সাপের মাথা, সাপের লেজ, খাবার, খালি জায়গা, প্রাচীর, বোর্ড, বর্তমান দিক ইত্যাদি থাকতে পারে realize আপনার প্রজেক্টটি যা ভাবেন তার চেয়ে অনেক বড় কিনা তা বুঝতে আপনাকে সহায়তা করতে পারে।

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

  • যদি আপনি কাউকে অভিজ্ঞ জানেন, তাদের একটি প্রকল্পের জন্য আপনার ধারণাটি বলুন এবং তাদের আপনার ক্লাসগুলি + কিছু গুরুত্বপূর্ণ পদ্ধতি লিখতে বলুন, সম্ভবত এক ঘন্টা বা আরও বেশি সময় লাগবে। এইভাবে আপনি কেবল পদ্ধতিগুলি পূরণ করতে পারেন এবং আপনার পরবর্তী কী করার দরকার তা সর্বদা জানুন।

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

মনে রাখবেন, এই পদক্ষেপটি শক্ত। এটি সত্য যে কিছু লোক কেবল প্রোগ্রাম করতে পারে না তবে আপনি সম্ভবত এই পর্যায়ে আটকে আছেন। শুভকামনা!


2

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

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

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

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

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


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

1

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


1

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

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

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

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

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

আপনার সিস্টেম তৈরি করুন। এটি একটি স্বয়ংক্রিয় বিল্ড সিস্টেম এবং ক্রমাগত সংহত করার জন্য ভাল সময় হবে time তারা কী তা যদি আপনি না জানেন তবে হয় এটি শিখুন এবং চেষ্টা করুন, বা কেবল নিজের ঝুঁকিতে চালিয়ে যান; যেভাবেই কাজ চালিয়ে যান।

এখন অন্য একটি বৈশিষ্ট্য বাছাই করুন এবং পুনরাবৃত্তি করুন এবং পুনরাবৃত্তি করুন।

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

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

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


1

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

এটি আপনাকে একটি মোটামুটি জ্ঞাত সমাধানের সাথে তুলনামূলক সহজ সমস্যা দেয় যার জন্য কেবলমাত্র অটোমেশনের একটি স্তর প্রয়োজন। মনে রাখবেন এটি পরবর্তী এমএস ওয়ার্ড / ওয়ার্ডপ্যাড / নোটপ্যাড হওয়ার দরকার নেই; আপনার (সহজ) সমস্যা সমাধান করে এমন কিছু।

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


1

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


1

আমার ধারণা আপনার সমস্যাটি এসেছে: ১. তত্ত্ব এবং অনুশীলনের মধ্যে যে সঙ্কট রয়েছে, এবং এটিও ... ২. ... আপনার অবশ্যই বুঝতে হবে যে আপনার কোডটি অন্যের কোড দ্বারা চালিত হবে। ৩. আপনি কী তৈরি করতে পারবেন সে সম্পর্কে আপনার যদি ধারণা না থাকে তবে আপনি কিছু কোড করতে পারবেন না। 4. আপনি অসুবিধা অর্ধেক জানেন

  1. তত্ত্ব অনুসারে কোনও ভাষা জানার অর্থ আপনি এটিকে "কথা বলতে" বলছেন না: এটি ইংরেজি পড়া এবং বলার মধ্যে পার্থক্য। সংকলন, লিঙ্ক, একটি উত্স কোড সম্পাদনা করার জন্য উপলব্ধ বিভিন্ন সংখ্যক সরঞ্জাম আপনার মাথাকে স্পিন করে তুলবে।

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

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

  4. আসলে তত্ত্বটি অনুশীলন করা প্রয়োজন, তবে এটি সমস্ত কিছু নয়: অ্যালগরিদম এবং প্রযুক্তিগুলি প্রোগ্রামিং তত্ত্বের অংশ নয়, আপনার কোডটি করার অনেকগুলি দৃষ্টান্ত এবং অন্যান্য "স্ট্যান্ডার্ড" উপায় রয়েছে: নকশার নিদর্শন, লিঙ্কযুক্ত তালিকাগুলি, ইত্যাদি ইত্যাদি


1

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

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

এক কথায়, আপনি যদি দ্রুত উপায়ে প্রোগ্রামিং শুরু করতে চান তবে স্ক্রিপ্টিং ভাষাটি একটি ভাল পছন্দ হতে পারে :-)


1

একটি স্পেসিফিকেশন লিখুন। আপনি আপনার প্রোগ্রামটি কী করতে চান? পর্দা (এটি যদি কোনও ইউআই ভিত্তিক প্রোগ্রাম হয়) যুক্তি, ইনপুট / আউটপুট ইত্যাদি the সুযোগটি সীমিত রাখুন যা আপনি যুক্তিসঙ্গত পরিমাণে করতে পারেন (এক সপ্তাহ? এক মাস?)।

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

একবার শেষ হয়ে গেলে, আপনার কোডটি রিফ্যাক্টর করুন, আরও কার্যকর করার চেষ্টা করুন। তারপরে আপনি যদি মনে করেন যে আপনার প্রোগ্রামটি এখনও শেষ হয়নি, আবার শুরু করুন, নির্দিষ্টকরণের উন্নতি করুন, কোডটি উন্নত করুন এবং এটি চালিয়ে যান।

মনে রাখবেন, বেশিরভাগ বাণিজ্যিক সফ্টওয়্যার একটি প্রয়োজন সমাধান করে .. প্রয়োজনটিকে সংজ্ঞায়িত করা খুব গুরুত্বপূর্ণ এবং সমস্যাটি সমাধানের আগে সেই প্রয়োজনটি পূরণ করার সমাধান। এবং প্রয়োজনীয়তা আরও বাড়তে থাকে এবং সময়ের সাথে সাথে আপনার সফ্টওয়্যারটিও বাড়তে থাকে!

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