আমার উপদেশ:
bash
(এবং এর জাতীয়) সাধারণ উদ্দেশ্য প্রোগ্রামিং ভাষা নয়। যদিও কিছু পরিশীলিত স্ক্রিপ্টিং সম্পাদন করা সম্ভব তবে bash
সাধারণভাবে প্রোগ্রামিং শেখার সেরা উপায় নয়। সিস্টেম প্রশাসনের কাজগুলি সম্পাদন করার এটি সবচেয়ে প্রাকৃতিক উপায় যা প্রাথমিকভাবে অন্যান্য প্রোগ্রামগুলি সম্পাদন করে, তাদের ডেটা ফাইল এবং ডিরেক্টরি পরিচালনা করে এবং ইনপুট এবং আউটপুট মার্শালিং করে এবং সেখান থেকে আবর্তিত হয়। যদি bash
হাতুড়ি হয় তবে এটি এমন সমস্যার জন্য সংরক্ষণ করুন যা সত্যিই নখের মতো লাগে। অপ্রয়োজনীয় bash
কিছু করতে শেখা খুব সহজ হবে যদি আপনি কয়েকটি খুব ছোট সাবসেট শিখেন sed
এবং awk
(যেহেতু স্ট্রিং ম্যানিপুলেশন bash
মূলত এই "ছোট" ভাষায় অনুরূপ ক্রিয়াকলাপ দ্বারা অনুপ্রাণিত হয়)।
- লিনাক্সের অধীনে সাধারণ উদ্দেশ্যে প্রোগ্রামিংয়ের জন্য আপনি অনেক অনুভূতিযুক্ত যুক্তি শুনতে পাবেন। দুটি সেরা প্রতিযোগী হলেন পার্ল এবং পাইথন । এগুলি উভয়ই উচ্চ স্তরের স্ক্রিপ্টিং ভাষা যা সাধারণ উদ্দেশ্য, যা আপনার সিস্টেমে যে কোনও ব্যবহারকারী স্থান প্রক্রিয়াতে অ্যাক্সেসযোগ্য প্রায় কোনও ক্রিয়াকলাপ সম্পাদন করার জন্য এবং প্রাক-লিখিত মডিউল এবং গ্রন্থাগারগুলির বিশাল সংকলন সহ যথেষ্ট নিম্ন স্তরের কার্যকারিতা প্রকাশ করে।
আমি সুপারিশ যে আপনি সি উপর একটি পরিচায়ক টেক্সট পড়া এবং কিছু সময় চলমান ব্যয় strace
এবং ltrace
মত কিছু সহজ ইউটিলিটি কমান্ড কমান্ড ls
এবং mkdir
এবং /bin/echo
ইত্যাদি (আসলে এই দিন আমি আপনাকে পরামর্শ দিচ্ছি চাই ltrace -S
পরিবর্তে strace
উভয় কমান্ড থেকে এবং মধ্যে আউটপুট মধ্যে কিন্তু পাচ্ছিল ltrace
আউটপুট দ্বারা বৃদ্ধি -S
বিকল্প অত্যন্ত শিক্ষামূলক থাকবে)।
সি হল প্রাথমিক প্রোগ্রামিং ভাষা যেখানে লিনাক্স কার্নেল এবং জিএনইউ লিবিসি লেখা হয়। (ছোট অংশগুলি সমাবেশে রয়েছে)। একটি লিনাক্স (বা অন্যান্য ইউনিক্স-মত) সিস্টেমের প্রায় সমস্ত প্রোগ্রাম সি লাইব্রেরির (লিবিসি) বিপরীতে লিঙ্কযুক্ত। প্রাথমিক পার্ল এবং পাইথন দোভাষী (এবং বেশিরভাগ অন্যান্য স্ক্রিপ্টিং ভাষাগুলি) সি তেও লিখিত হয় এই প্রোগ্রামগুলি (কার্নেল, সাধারণ সিস্টেম লাইব্রেরি এবং বিভিন্ন স্ক্রিপ্টিং ভাষার অনুবাদক) সমস্ত সি প্রোগ্রামারদের দ্বারা রচিত হয় তাদের নকশা এবং বৈশিষ্ট্যগুলি দৃ strongly়ভাবে প্রভাবিত তাদের অন্তর্নিহিত বাস্তবায়ন দ্বারা। সুতরাং এগুলির যে কোনও একটি গভীর বোধগম্যতা শেষ পর্যন্ত সি বোঝার জন্য জড়িত You এই স্তরে প্রোগ্রামিং বুঝতে আপনার সি ++ বা জাভা সম্পর্কে কিছু জানতে হবে না। (এগুলি প্রতিটি আপনার কেরিয়ারের প্যাচের উপর নির্ভর করে তাদের নিজস্বভাবে আকর্ষণীয় এবং প্রয়োজনীয় হতে পারে,
সুতরাং, আপনি যদি এখনও অবধি আমার প্রাঙ্গণের সাথে একমত হন, আমরা পার্ল এবং পাইথনের মধ্যে একটি পছন্দ হিসাবে এটি সিদ্ধ করেছি।
এখানেই আসল শিখা যুদ্ধ শুরু হয়।
আমার পরামর্শটি পাইথনকে (2.x) প্রথমে ফোকাস করা। পাইথনের তুলনামূলক সহজ এবং সামঞ্জস্যপূর্ণ বাক্য গঠন রয়েছে। আপনি পাইথন সিনট্যাক্সের বেসিকগুলি কয়েক ঘন্টার মধ্যে শিখতে পারেন এবং এটি আপনার পক্ষে যে সিনট্যাক্সের মুখোমুখি হবে তার বেশিরভাগ অংশ। কেবলমাত্র কয়েকটি বৈশিষ্ট্য রয়েছে (তালিকার বোধগম্যতা, জেনারেটর এক্সপ্রেশনস, ডেকোরেটর) যা প্রাথমিক বাক্য গঠনগুলিতে রিঙ্কেলস। তাই পাইথন শেখার আপনার বেশিরভাগ প্রচেষ্টা বিস্তৃত স্ট্যান্ডার্ড লাইব্রেরিগুলি শেখার এবং সেগুলি ব্যবহারের "সেরা" উপায় অনুসন্ধান করার জন্য নিবেদিত হবে (এবং ব্যতিক্রমগুলির নির্দিষ্ট সেটগুলি যা আপনার প্রোগ্রামগুলিকে শক্তিশালী করার জন্য হ্যান্ডলিংয়ের উপযুক্ত তা খুঁজে বের করতে) এবং, সবচেয়ে গুরুত্বপূর্ণ, অন্তর্নিহিত ধারণাগুলি শেখার ক্ষেত্রে।
আমি মনে করি পাইথনের বিস্তৃত গ্রন্থাগার এবং তুলনামূলক সহজ বাক্য গঠন দুটি পৃথক অসুবিধা রয়েছে have
প্রথমত, আপনি পাইথনের খুব উচ্চ স্তরে কীভাবে কাজ করবেন তা শিখতে গিয়ে আপনি ক্লান্তিকর হতে পারে এমন একটি নিম্ন স্তরে কাজ করার চিন্তাভাবনা পেতে পারেন। আমি যেখানে পার্ল কাজ করি তা মানক। আমি পাইথনে আমার কাজটির প্রোটোটাইপ করি, যেখানে আমি জানি যে আমি পার্লে আরও দ্রুত এবং নির্ভরযোগ্যতার সাথে এটি কাজ করতে পারি; তারপরে আমি আমার সহকর্মীদের জন্য পার্লকে পোর্টে যেতে এবং ভয় পাচ্ছি। (আমি পাইথন ব্যবহারের আগে পার্ল বছরগুলিতে আমি যুক্তিসঙ্গতভাবে ভাল ছিলাম --- সুতরাং এটি সাধারণ পরিচিতির বিষয় নয়)।
অন্য অসুবিধাটি হ'ল পাইথনে কোনও প্রদত্ত কাজ সম্পাদনের সর্বোচ্চ স্তরের উপায় খুঁজে পাওয়া কখনও কখনও কঠিন। উদাহরণস্বরূপ কোনও ওয়েব পৃষ্ঠা আনার জন্য আপনি প্রথমে নিম্ন স্তরের সকেট দিয়ে এটি করার চেষ্টা করতে পারেন ... যা কাজ করবে। তবে, আপনি ইতিমধ্যে urllib
এবং / অথবা urllib2
মডিউলগুলি সহ সন্ধান করতে পারেন এমন বেশিরভাগ কোডের নকল করে যাবেন । 2.7.1 হিসাবে স্ট্যান্ডার্ড লাইব্রেরিগুলিতে এই উভয়টিই অন্তর্ভুক্ত হ'ল সত্যটি। পাইথনের রক্ষণাবেক্ষণকারীরা পুরানো মডিউল এবং এপিআইগুলি স্বচ্ছভাবে বাড়িয়ে দিয়েছেন; তবে এমন কয়েক ডজন মামলা রয়েছে যেখানে পাইথন দুটি বা তিনটি মডিউল ধরে রেখেছে যেখানে কোনও কারণে স্বচ্ছ বর্ধন সম্ভব ছিল না। (অন্য উদাহরণস্বরূপ, আপনি কমাণ্ড লাইন অপশন সম্বন্ধে পার্স জন্য বিকল্পগুলি তাকান পারে: argparse
, optparse
, এবংgetopt
। আপনার প্রোগ্রামগুলি getopt
(এগুলির মধ্যে প্রাচীনতম) ব্যবহার করে কিছু লেখার ক্ষতি নেই । কয়েকটি বিকল্প এবং একটি অনমনীয় কলিং কনভেনশন সহ খুব সাধারণ ইউটিলিটির জন্য (উদাহরণস্বরূপ কেবলমাত্র একটি ছোট্ট লোক ব্যবহার করে) তবে sys.argv
নিজের উপর দিয়ে হাঁটার অভ্যন্তরীণ কিছু নেই । তবে এটি সাধারণত ডকসগুলি সাবধানতার সাথে পড়ার এবং পুরানো বা নিম্ন স্তরের মডিউলগুলির নীচে থাকা লিঙ্কগুলি অনুসরণ করে যা নতুন এবং উচ্চ স্তরের বৈশিষ্ট্য উপলব্ধ তা বর্ণনা করে worth
আমার পরামর্শ আমার মতামতের ভিত্তিতে যে আপনি গভীর ধারণাগুলিতে মনোনিবেশ করতে চান এবং সিনট্যাকটিক এবং ভাষা নির্দিষ্ট বিষয়ে আপনার বেশিরভাগ সময় এবং প্রচেষ্টা ব্যয় করতে হবে না। কোন সাব-প্রসেস, বনাম একটি থ্রেড, বা পাইথনের সাথে অন্তর্ভূক্ত মাল্টি-প্রসেসিং বৈশিষ্ট্যগুলি কখন ব্যবহার করতে হবে তা বোঝার ভাষা এবং ভাষা নির্বিশেষে প্রোগ্রামিং দক্ষতার সাথে করার সাথে তুলনামূলকভাবে খুব কম সম্পর্ক রয়েছে। (পয়েন্টে আপনি থ্রেডিং এবং মাল্টিপ্রসেসিংয়ের সাথে তুলনা করে টুইস্টের ইভেন্ট চালিত মডেল সম্পর্কে যুক্তিগুলি বুঝতে পারবেন তবে সম্ভবত আপনি পাইথনে আয়ত্ত করেছেন এবং যে কোনও ভাষায় প্রোগ্রাম করার জন্য প্রস্তুত থাকবেন)।
পার্লের পক্ষে পাল্টা যুক্তিটি সহজ এবং ব্যবহারিক। পার্লের সাথে দক্ষতার জন্য এখানে বেশ কয়েকটি আরও কাজ রয়েছে যা বিশেষত কল করবে। পার্ল একটি শক্তিশালী ভাষা এবং এর অত্যন্ত বিস্তৃত গ্রন্থাগার রয়েছে। (বেশিরভাগ লিনাক্স সিস্টেমের সাথে বিতরণ করা পার্লের মূলটি পাইথন লাইব্রেরিগুলির তুলনায় কার্যকারিতার একটি ছোট পরিসীমা জুড়ে রয়েছে; এটি ধরে নেওয়া হয় যে আপনি আপনার বিতরণ থেকে বা সিপিএএন এর মাধ্যমে উল্লেখযোগ্য সংখ্যক অতিরিক্ত প্যাকেজ ইনস্টল করেছেন --- কমপ্রেসিভরিজ পার্ল আর্কাইভ অন্তর্জাল). (এর বিপরীতে কম পাইথন মডিউল এবং প্যাকেজ রয়েছে যা আমাকে আলাদাভাবে আনতে হবে ... সেগুলি পাইপিআই --- পাইথন প্যাকেজ সূচক থেকে পাওয়া যায়)।
সুতরাং, আপনি যদি পার্ল শিখেন তবে স্বল্প মেয়াদে চাকরি, বিশেষত স্যাসাদমিন চাকরির সন্ধানের জন্য আপনার একটি পদক্ষেপ থাকবে। তবে পার্লের বাক্য গঠনটি হ'ল ... ভাল ... এর নিজস্ব কৌতূহলীদের কথায় ... "রোগগতভাবে সারগ্রাহী!" পার্ল অত্যন্ত ক্ষুদ্র হতে পারে এবং এর কোডটি বেশ কয়েকটি বিরামচিহ্ন দিয়ে পূর্ণ। যারা এটি পছন্দ করেন তারা অবিচ্ছিন্নভাবে তর্ক করবেন যে এটি "সহজ" এবং সঠিক ধারণা তৈরি করে --- এবং ফোরামে এমন করার অফুরন্ত সুযোগ থাকবে যা প্রদত্ত কোডের প্রদত্ত স্নিপেটকে কীভাবে ব্যাখ্যা করা হয়েছিল তা নিয়ে বিভ্রান্তিতে ভরা। ডকুমেন্টেশনে ব্যবহৃত সিনট্যাক্স এবং ভাষা এবং যারা পাবলিক ফোরামে এটি সমর্থন করে তাদের কাছে এই বিষয়টির গুরুত্ব রয়েছে যে আপনি সেগুলি শেখার জন্য যথেষ্ট প্রচেষ্টা ব্যয় করতে পারেন।
এখন, দয়া করে বুঝতে পারেন যে এই পূর্ববর্তী ভাষ্যটি বিষয়গত এবং পক্ষপাতদুষ্ট। এটা সম্ভব যে আপনি পার্ল চেষ্টা করে দেখুন এবং এর বাক্য গঠনটি স্বজ্ঞাত এবং মনোরম হতে পারে। যদি তা হয় তবে আপনার কাছে আরও শক্তি। যাইহোক, আমি ব্যক্তিগতভাবে দেখতে পাচ্ছি যে পার্লের আইডিয়োসিঙ্ক্রিজিগুলি সম্পর্কে আমার উপলব্ধি খুব দ্রুত ক্ষয় হয়। আমি যে ফান্ডামেন্টালগুলি ধরে রেখেছি তা হ'ল আমি যখনই কোডটির কয়েক লাইনের চেয়ে বেশি এর জন্য ফিরে যেতে চাই তখনই এটি একটি লড়াই হতে পারে।
আপনার আরও অনেক ভাষা রয়েছে যা আপনি পড়াবেন, জাভা, লিস্প এবং স্কিম, টিসিএল, স্কেলা এবং আরও অনেক কিছু। তবে, আমি ইউটিলিটি এবং সরলতার মধ্যে সেরা ভারসাম্য সরবরাহ করে এমন একটি দিয়ে শুরু করার পরামর্শ দেব।