post

JAVA vs Python

Pythonدر مقابل JAVA:

Duck Typing, Parsing on whitespace and other cool differences

پایتون جذابیتهای زیادی برای برنامه نویسان جاوا دارد، و این دو زبان شباهت ها و تفاوت های جالبی با یکدیگر دارند. در این مقاله تا حدی به صورت عمیق به بررسی تفاوت های این دو زبان می پردازیم. بزرگترین شباهت های آنها یکی طراحی شیء گرا در آنها می باشد به نحوی که هر دو زبان جمله ی "(almost) everything is an object" را در پس طراحی خود دارند، و دوم cross-platform بودنشان می باشد که این موضوع شامل مواردی از قبیل immutable strings و کتابخانه های استاندارد deep relative می باشد. همچنین تفاوت های بزرگی میان این دو زبان وجود دارد. در سطح community جاوا همواره از یک اسپانسر مالی بزرگ بهره مند بوده است در حالی که پشتیبانی پایتون بیشتر به صورت توزیع شده می باشد. از نظر Syntax نیز هر چند هر دو زبان در خانواده Algol-like می گنجند ولی Syntax پایتون بر پایه Whitespace می باشد در حالی که جاوا به مانند زبان های خانواهد C از پرانتزها و سمی کالن ها استفاده می کند. سختی کار در درک whitespace باعث شده برخی از برنامه نویسان از پایتون صرف نظر کنند، مثل برنامه نویسانی که به استفاده از ابزارهای مبتنی بر SGML عادت دارند. ولی استفاده از whitespace فی نفسه بد نیست و با استفاده از آن و غلبه بر عادت های قبلی برخی از افراد ادعا می کنند که این روش طبیعی تر و فطری تر نیز می باشد. هر دو زبان با عمل کامپایل به کد میانی bytecode ترجمه می شوند که بر روی ماشین های مجازی قابل اجرا می باشد. اما نکته اینجاست که پایتون به صورت خودکار و در زمان اجرا و اصطلاحاً به صورت Interpreter این کار را انجام می دهد و این در حالیست که جاوا یک برنامه مجزا به نام javac را برای این کار در نظر گرفته است.

یک تفاوت کلیدی: Dock Typing

بزرگ ترین تفاوت میان پایتون و جاوا اینست که جاوا Statically Typed بوده ولی پایتون Dynamically Typed می باشد. یعنی در زمان تعریف یک متغیر در پایتون نیاز به مشخص نمودن نوع داده آن نخواهیم داشت. هر چند پایتون نسبت به نوع متغیر ها حساس می باشد ولی تعیین نوع متغیر را به زمانی موکول می کند که این کار را واجب بداند یعنی زمانی که یک عملگر بر روی متغیر اعمال می شود و این عملگر خاص یک نوع داده یا کلاس خاص می باشد. پایتون در این زمینه یک جمله جالب دارد: "if it walks like a duck and talks like a duck, it's a duck" Dock Typing باعث می شود کد نویسی در پایتون بسیار ساده شود، خواندن کد نیز نسبتاً راحت خواهد بود ولی تحلیل کد کار دشواری می باشد. کلاس ها در برنامه نویسی شیء گرا معادل مفهوم مدل می باشند ولی این مفهوم یک ساختار ذهنی برای ما می باشد که سعی دارد ذهن ما را به دنیای واقعی نزدیک تر سازد. Dock Typing این کار را به زیبایی انجم می دهد چرا که دیگر نیاز نداریم از نوع یک شیء به دقت آگاه باشیم و فقط کاربرد پذیر بودن شیء است که برای ما جذابیت ایجاد می کند. بعنوان مثال یک تکه سنگ و یا یک چکش در برخی از کاربردها مثل شکستن گردو عملکرد یکسانی دارند.

یک نکته منفی در مورد نداشتن اطلاعات نوع داده

ایراد عدم آگاهی از نوع داده اینست که تحلیل کد دشوار شده و نمی توان فهمید در چه قسمتی از برنامه چه اتفاقی خواهد افتاد به خصوص وقتی که نام گذاری متغیرها به صورت معنادار انجام نشده باشد که معمولاً هم اینگونه است. بعنوان یک مثال افراطی دستور b.polish() مشخص نیست که قرار است چه کاری انجام دهد. در مقابل، جاوا Statically Typed می باشد متغیر ها در زمان کامپایل به انواع داده مقید می شوند. این بدان معناست که بسیاری از خطاهای نوع داده که در زبان پایتون در زمان اجرا رخ می دهند در جاوا در زمان کامپایل و قبل از اجرای برنامه کشف می شوند. و تقید متغیرها به نوع داده هایشان درک انسان و نیز کامپایلر را نسبت به کدها بالا می برد. هزینه ی این دست آورد اینست که برنامه نویس باید مراقب نوع داده ها باشد. در جاوا تبدیل نوع داده اتوماتیک بسیار محدود و ضعیف است و برنامه نویس مجبور است با دقت و آگاهی بالا نوع داده ها را مشخص کند. از طرفی پایتون نیازی به طراحی نوع داده قوی ندارد و از اینرو برای کارهای Prototyping مناسب می باشد. همچنین این خصیصه پایتون باعث می شود این زبان برای افرادی که دانش و تخصص بالایی در برنامه نویسی ندارند به راحتی از آن استفاده کنند در حالی که جاوا از این نظر نیاز دارد که برنامه نویس از دارای تخصص کافی باشد.

پایتون کار راه انداز است

پایتون به شما این امکان را می دهد که به سرعت کار خود را انجام دهید چرا که کدنویسی در آن ساده بوده و نیز در فضای وب کدهای آماده زیادی برای استفاده وجود دارد. از طرف دیگر تست های کاربردی نشان داده است که پایتون قابلیت ارائه سرویس ها و اپلیکیشن های بزرگ را دارد. همچنین پایتون این امکان را به شما می دهد که کتابخانه های ریاضی Fortran را در الگوریتم های آماری R به خدمت بگیریم. در آخر باید به این نکته هم اشاره کنیم که یک نسخه از پایتون به نام Jython نیز وجود دارد که به JVM byte-code کامپایل می شود، که به خوبی امکان بهره مندی همزمان از محاسن پایتون و کتابخانه های جاوا را فراهم می سازد.

ارزش یک بار دیدن را برای برنامه نویسان جاوا دارد

جاوا یک گام بزرگ در ساده سازی صنعت نرم افزار در مقابل C++ بوده است به طوری که بسیاری از برنامه نویسان شیفته ی همین ویژگی جاوا هستند. پایتون نیز یک گام بزرگ دیگر در همین مسیر می باشد، که محیطی ساده تر و قابل فهم تر برای انسان فراهم آورده است و به این صورت دنیای ماشین ها را به واقعیت نزدیک تر می سازد. با این وضع برنامه نویسان جاوا خوب است که نگاهی به پایتون داشته باشند. این زبان برای اتوماسیون کارهای تکراری و خسته کننده عالی بوده، و نیز یک زبان خوب برای توکار شدن در اپلیکیشن های جاوا می باشد. بنابراین پایتون یک جایگزین مناسب جاوا در بسیاری از موقعیت ها خواهد بود. و در کل دلیلی ندارد که پایتون را دوست نداشته باشیم.   در پایان لازم می دانیم یک دوره آموزشی ساده و با کیفیت پایتون که رایگان نیز می باشد را معرفی کنیم. این دوره آموزشی شامل ویدئو و نیز کنسول آنلاین برنامه نویسی می باشد و از مجموعه دوره های Code School می باشد: https://www.codeschool.com/courses/try-python