জুনিয়র প্রোগ্রামারগুলিতে স্ক্রিপ্টিং ভাষার কী প্রভাব আছে? [বন্ধ]


18

আমি আমার শিক্ষকের সাথে অন্যদিন আলোচনা করেছি।

জুনিয়র প্রোগ্রামারগুলিতে সহজ স্ক্রিপ্টিং ভাষাগুলির (পাইথন বা রুবির মতো) প্রভাবগুলি নিয়ে আমরা বিতর্ক করেছি।

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

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

উভয় পক্ষের পুরোপুরি অন্বেষণের আগে ক্লাসটি শেষ হয়েছিল।


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

সুতরাং, স্ক্রিপ্টিং ভাষার জুনিয়র প্রোগ্রামারগুলিতে কী প্রভাব ফেলবে?


8
আমি একজন গাধা কিন্তু হওয়ার অর্থ না grammar.quickanddirtytips.com/affect-versus-effect.aspx
Singletoned

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

2
@ সিঙ্গেলটেড: সত্য।


4
ব্যক্তিগতভাবে আমি কম অপেক্ষাকৃত কম প্রোগ্রাম শিখতে অস্বাভাবিক মনে করি। আমরা হামাগুড়ি শিখি তারপর হাঁটা তারপর দৌড়াতে, কথা বলার পরে লিখতে। কলেজে প্রাকৃতিক শৃঙ্খলা বিপরীত করার পক্ষে যুক্তিটি কী তা নিশ্চিত নয়। আমি সাধারণত লোকদের এই সিদ্ধান্তটি শুনতে পাই "কারণ যদি আমার পক্ষে শেখা খুব কঠিন হত তবে আপনার পক্ষে কঠোর থাকা দরকার"। এমনকি জোয়েল এটি বলেছে। আমার ধারণা চক্রটি কখনই শেষ হবে না।
পি। ব্রায়ান.ম্যাকি

উত্তর:


26

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

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

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


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

+1, এই আমার চিন্তা ছিল! আমি আশা করি আমি ক্লাসের আগে এটি পড়তাম :)
joe_coolish

22

আপনি কোথায় শুরু করবেন তা বিবেচ্য নয়। আপনি শুরু করার পরে আপনি কোথায় যান সে বিষয়টি গুরুত্বপূর্ণ ।

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

আমি বেসিক দিয়ে শুরু করেছি। আমি সেখানে থাকিনি


নিখুঁত উত্তরের জন্য +1 - সংক্ষিপ্তভাবে দেখানো হচ্ছে আসল প্রশ্নটি কীভাবে ভুল জায়গায় রয়েছে! (একেবারে কাকতালীয়ভাবে, আমি বেসিক দিয়েও শুরু করেছি ;-)
পিটার টারিক

5
এটি আমাকে অবাক করে দেয় যে সেখানে কতজন লোক থাকেন ...: o /
গ্যারি উইলব্বি

1
উত্তোলন উত্তর। সংক্ষিপ্ত, সঠিক এবং মূল বিষয়। আমি বেসিক দিয়েও শুরু করেছি।
মাইকেল রিলে - এ কেএ গুনি

11

আপনার শিক্ষক সঠিক, তিনি ব্যতীত ধরে নেন যে তার পরিণতি খারাপ জিনিস।

কম্পিউটারগুলি কীভাবে কাজ করে তা শেখার জন্য যদি আপনি ভাষা শেখার নিখুঁতভাবে একটি একাডেমিক ক্রিয়াকলাপের দিকে লক্ষ্য করেন তবে তিনি সঠিক। আপনি যদি কাজগুলি করার উপায় হিসাবে তাদের দিকে লক্ষ্য করেন তবে আপনি সঠিক correct


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

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

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

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

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

5

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

একটি বোধগম্য পার্থক্য হ'ল উচ্চ স্তরের ভাষা এবং নিম্ন স্তরের ভাষাগুলির মধ্যে বা স্থিতিশীল এবং গতিশীল টাইপযুক্ত ভাষার মধ্যে, যা সত্যিকার অর্থেগোনাল।

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

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

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

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

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

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

সম্পাদনা: এবং যখন টাইপিংয়ের কথা আসে তখন আমি স্থিতিযুক্ত টাইপ করা ভাষা পছন্দ করি। এবং আমি মনে করি এন্ট্রি স্তরের প্রোগ্রামারদের ধরণের ধারণাটি পরিষ্কারভাবে বুঝতে হবে (যা একটি বিমূর্ত)।


3

পাইথন সম্পর্কে সহজ কিছু নেই। ইউনিকোড এবং মেটা-প্রোগ্রামিং একবার দেখুন।


আমি একমত যে পাইথন খুব জটিল এবং খুব শক্তিশালী হতে পারে। তবে
বেসিকগুলি

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

1
তাহলে আমার কেন যদি ফাইলসন্টেন্ট.লোয়ার () এ সার্চস্ট্রিং.লুয়ার (): কাজ করছিল না? পাইথন 2.7 সহ উইন্ডোতে টিএফএস-তে ইউটিএফ -16 এলএইএস স্কিল ফাইলটিতে বোমার কারণে in মজা ছিল না। এটা কাজ পেয়েছিলাম। কয়েক ঘন্টা সময় নিয়েছে। স্ট্রিং.ফাইন্ড () আর কাজ করছে না ... আরঘঘ!
ক্রিস্টোফার মহান

1
ইউনিকোড সিতে হ্যান্ডেল করা সহজ কীভাবে?
dan04

3

আমি আরও একটি গভীর সমস্যা দেখতে পাচ্ছি।

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

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


6
কিন্তু পাইথন এবং রুবি দৃ strongly়ভাবে টাইপ করা হয়। এটি গতিশীলভাবে টাইপ করা অরথোগোনাল । স্ট্রিংস এবং সংখ্যাগুলি স্পষ্টভাবে একে অপরকে রূপান্তর করে না
dsimcha

3
@ ডিএসিমচা: হ্যাঁ - এবং এটি কীভাবে @ ইঙ্গো যা বলেছিল তা খণ্ডন করে?
জিম জি।

1
কারণ এই প্রশ্নটি বেশিরভাগ ক্ষেত্রে রুবি এবং পাইথন নিয়ে। আমি ভেবেছিলাম তিনি বোঝাচ্ছেন যে তিনি মনে করেন রুবি এবং পাইথন দুর্বলভাবে টাইপ করেছেন, এটি একটি সাধারণ ভুল বোঝাবুঝি।
dsimcha

1
@ ডেভিডক ০১ - এটি আমার বক্তব্য: আমরা এটি চাই বা না চাই মানগুলির প্রকারভেদ রয়েছে। তবে গতিশীলভাবে টাইপ করা হয়েছে (যদি সেই শব্দটি আপনাকে আরও সন্তুষ্ট করে) ভাষা, ভেরিয়েবলগুলি নেই not পরিবর্তে, ইউনিটিপের বিভিন্ন রূপের মধ্যে পার্থক্য করার জন্য রানটাইমে টাইপ চেকিং করা হয়।
এঙ্গো

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

2

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

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

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


2

আমরা এটি কলেজের অন্য উপায়ে দেখেছি এবং আমি মনে করি এটি কার্যকর। * আমরা নিম্ন স্তরে শুরু। পয়েন্টার, মেমরি পরিচালনা, চরিত্রের অ্যারে ... সুতরাং হ্যাঁ, আমরা সি দিয়ে শুরু করেছি অ্যালগোরিদমগুলির সাথে একই: প্রথমে একটি লিঙ্কযুক্ত তালিকা, একটি হ্যাশটেবল, একটি ট্রি বাস্তবায়ন করুন ... এবং কেবলমাত্র তখন স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করুন।

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

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


1

স্ক্রিপ্টিং ভাষাগুলি প্রোগ্রামারগুলিকে ঝাপসা করে না। সমস্যার ডোমেন বোঝার স্পষ্টতার অভাব (উদাহরণস্বরূপ প্রোগ্রামটি যে ব্যবসায়টি দেয় সেগুলি) আচ্ছন্নতার কারণ।

পুরানো প্রবাদটি যেমন চলেছে, "আপনি যে কোনও ভাষায় সিওবিওএল লিখতে পারেন" ", যদিও আমি সন্দেহ করি যে যখন প্রতিটি ডেটা টাইপ একই রকম হয় , তখন আপনার প্রোগ্রামের প্রয়োজনীয় দিকগুলি কী তা বোঝা আরও শক্ত হয়ে যায়, সিওবিএল- এর একটি প্রধান বৈশিষ্ট্য- ization।


1
সন্দেহ করার আগে চেষ্টা করে দেখুন। মূল পার্থক্য হল, আপনি কোথায় এটা একটি সম্পর্কে একটি অভিশাপ দিতে না Fooবা Barবা সম্পূর্ণভাবে আপনি যা করতে পারেন যতদিন ভিন্ন কিছু .frobnicate()এটা হয় উপায়। সুস্পষ্ট ইন্টারফেস ছাড়া।

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

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

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

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

1

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

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

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

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

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

কেবল মনে রাখবেন যে প্রতিটি কাজের জন্য কোনও সরঞ্জামই সেরা নয়। পরিস্থিতির জন্য সবচেয়ে উপযুক্ত সরঞ্জামটি চয়ন করুন। এটি প্রোগ্রামিং ভাষার ক্ষেত্রে যেমন যায় তেমন কোনও সরঞ্জামের জন্য।


0

আমি আপনার শিক্ষকের সাথে রয়েছি, তবে @ সিঙ্গলেটনেডের সাথেও যখন তিনি বলেন যে আপনার শিক্ষক ফলাফলটি ধরে নিচ্ছেন (যেমন, পারফরম্যান্সের কোনও জ্ঞান) খারাপ নয় bad

আমি মনে করি স্ক্রিপ্টিং ভাষা দিয়ে শুরু করার চেয়ে সি দিয়ে শুরু করা ভাল। একজন শিক্ষক হিসাবে, আমি পুরো ভন নিউমান আর্কিটেকচার জিনিস (আ.ল.উ., রেজিস্টারস, মেমরি, আই / ও পোর্টস, ...) এর দিকে মনোনিবেশ করবো, সরাসরি পয়েন্টারগুলিতে এগিয়ে চলুন (আমি দুঃখিত, এটি সত্যিই একটি মূল ধারণা [প্রকাশ করছে না ভিএম ভাষাগুলিতে রেফারেন্স (অর্থাত্ পয়েন্টার) মেমরি ফাঁসের একটি প্রধান উত্স]], কিছু ডেটা স্ট্রাকচার (ট্রি, লিঙ্কযুক্ত তালিকা, হ্যাশটেবল 1 ) টিপুন এবং তারপরে ... এটিকে বিস্মৃতকরণের স্তরটিকে অন্য কোনও কিছুতে কিক করুন (ওও, ক্রিয়ামূলক প্রোগ্রামিং, কিছু - দৃ strong় স্ট্যাটিক টাইপিং বিধি , yo \ m /, সুতরাং কোনও "স্ক্রিপ্টিং ভাষা"> :() নেই।

1 হুম, সম্ভবত আমি ডাব্লু / আপনার শিক্ষকের সর্বোপরি পারফরম্যান্স বিবেচনায় সম্মত।


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

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

0

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


0

তুমি দুজনেই ঠিক

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

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

মূলত, আমি মনে করি যতক্ষণ আপনি গভীর জলের জন্য প্রবাহিত করবেন ততক্ষণ পুলের অগভীর প্রান্তে শুরু করা ঠিক হবে।


0

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

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

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

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