জাভা দেব পাইথন শিখছেন: আমার মাথাটি চারপাশে আবদ্ধ করার জন্য আমার কী ধারণাগুলি প্রয়োজন?


38

পটভূমি: আমি কয়েকটি টিউটোরিয়াল দিয়েছি এবং কিছু ছোট প্রকল্প লিখেছি। গুগল এবং স্ট্যাকওভারফ্লো ব্যবহার করে সমস্ত কিছু ঠিকঠাক চলছে

গত কয়েক দিনে বেশ কয়েকবার নিজেকে ভাবছিলাম যে "আমি কী মিস করছি?" - আমি অনুভব করি যে পাইথনে লেখার মতো আমি এখনও জাভাতে ভাবছি।

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

আমি আসলে যা করতে চাই তা হল আমার মাথাটি জাভাটির ছদ্মবেশে জাভাটির পরিবর্তে পাইথন পাইথন লিখতে সক্ষম হওয়ার জন্য আমার মাথাটি জাভা দক্ষতা না হারিয়ে is

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

দ্রষ্টব্য: আমি ভাষা ধারণা সম্পর্কে জিজ্ঞাসা করছি, ভাষা বাক্য গঠন সম্পর্কে নয়।


9
প্রোগ্রামিংটি হার্ড হওয়ার কথা।
কাজ

উত্তর:


40

ইতিমধ্যে যা বলা হয়েছিল সেগুলি ছাড়াও কয়েকটি বিষয়:

  • পাইথন গতিশীল। একটি শ্রেণি তৈরি একটি এক্সিকিউটেবল স্টেটমেন্ট , যেমন একটি মডিউল আমদানি করা হয়; এটি শর্তযুক্ত করা যেতে পারে। একটি শ্রেণি তৈরির পরে পরিবর্তন করা যেতে পারে; এটি সহজ রূপান্তরকরণ এবং এওপি-র জন্য মঞ্জুরি দেয়।

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

  • যদিও সবকিছু একটি বস্তু, ফাংশন বস্তুর আগে আসে। একটি মডিউলে কেবল ফাংশন (এবং কোনও ক্লাস নেই) থাকা পুরোপুরি ঠিক fine

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

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

  • পাইথনের মোটামুটি এফপি সমর্থন রয়েছে; তালিকার উপলব্ধি এবং তারপরে পুনরাবৃত্তকারী এবং জেনারেটর শিখুন learn এগুলি অনেক সাহায্য করে।

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

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

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

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

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

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


+1 খুব ভাল পয়েন্ট। Nitpicking: Noneসাধারণত ঘটায় AttributeError(কিন্তু কোন ব্যাপার না, সাধারণত আপনি তবুও এটি প্রয়োজন নেই) এবং আপনি করতে পারেন (এবং কিছু কিছু ক্ষেত্রে উচিত) অপরিবর্তনীয় অবজেক্ট লিখুন (যেমন মাধ্যমে namedtuple)।

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

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

1
আমি ডেটা স্ট্রাকচারে সেট যুক্ত করব।
সাকিস্ক

2
আমি এই প্রশ্নটি জিজ্ঞাসা করার পরে 3 বছরেরও বেশি সময় পরে। আমাকে বলতে হবে এই পরামর্শটি খুব ভালভাবে উঠে দাঁড়িয়েছে।
এলআরই

14

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


6
"এক্সএমএল এর উত্তর নয়" " - এটি জাভা বনাম পাইথন ছাড়িয়ে যায় ;-)
এলআরই

3

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

পাইথনে ফ্রেমওয়ার্কগুলিও কিছুটা কম সংজ্ঞায়িত হয়েছিল। ওয়েব স্ট্রিমের 10 টি কাজ কেবল শুরু করার জন্য রয়েছে। জ্যাঙ্গো কম-বেশি হাইবারনেটের জন্য স্প্রিং এবং এসকিউএল অ্যালকেমিকে প্রতিস্থাপন করে।


2

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

class MyJob:
    pass        # an empty class
job = MyJob()
job.title = "Ruler of Omicron Persei 8"
job.startDate = "2086"
job.startDate = time.strptime("2035/01/02", "%Y/%m/%d")
myjobtitle = job.title
import new
def myjobduration(self, when):  # create a function
    return when - time.mktime(self.startDate)
MyJob.duration = myjobduration
job.duration(time.time()) # now

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


1

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

আমার উত্তরের উপর ভিত্তি করে পাইথন থেকে জাভাতে যাওয়ার সময় আমার কী চিন্তা করা উচিত? যেহেতু প্রশ্নটি এখন এটির নকল হিসাবে বন্ধ হয়ে গেছে!

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