رفتن به مطلب

بررسي زبانهاي برنامه نويسي و ماشين هاي گوناگون مثل JVM و dot net CLR


ملیساا

ارسال های توصیه شده

وقتي مي خواهيم وارد دنياي كدها شويم يا مي خواهيم از يك زبان به يك زبان ديگر روي آوريم كمي اطلاعات اوليه درباره آن زبان مي تواند تصميم بهتري را براي ما به همراه داشته باشد

ابزارها و زبانهايي كه مختصرا در اين پست بررسي مي شوند عبارتند از :

ASP and VBS and VB - JavaS - JDK and JRE and Java - CPP(C++) - .NET and C# - PHP

 

--------------A-------------آشنايي اوليه براي دوستاني كه تازه مي آيند

برنامه مجموعه اي كد است كه توسط ماشين پردازش مي شوند. به اين كدها physical native code يا كد نهادي ماشين فيزيكي نيز گفته مي شود

تريتب مراحل از نوشتن كد برنامه تا اجرا براي انواع مختلف زبانها متفاوت است اما سه مرحله مشترك است

مرحله يك : programming يا scripting

مرحله نوشتن كد برنامه : programming براي برنامه هاي compile شونده و scripting براي برنامه هاي interpret شونده به كار مي رود كه به دلايلي كه ذكر خواهند شد زبانهاي اسكريپتينگ تا چند سال پيش فقط براي توليد برنامه هاي كوچك و اهدافي با پردازش سبك به كار مي رفتند

مرحله دو : compiling يا interpreting

ترجمه يا تفسير كد از زبان برنامه نويسي مربوطه مثل سي به زباني كه براي ماشين نزديك است مثلا اسمبلي. در كامپايل ، فايل برنامه نهايي به زبان ماشين تهيه مي شود تا زمان كمتري براي پردازش لازم باشد اما در اينترپرتينگ برنامه نهايي تهيه نمي شود بلكه اسكريپت نوشته شده كاملا كد باز بوده و همان برنامه خواهد بود و در زمان اجرا هم تفسير و هم اجرا مي شود لذا سرعت اجرا پايين بوده و تا چند سال پيش فقط براي اهداف خاص كوچكاز اين زبان ها استفاده ميشد

runtime

زماني كه پردازش هاي نهايي انجام مي شود تا برنامه اجرا شود

low level language

زبان سطح پايين به زبان هايي گفته مي شود كه بيشتر به كفه پردازش ماشين نزديكند مثلا اسمبلي كف سطح برنامه نويسي است و سي يك مرحله بالا تر است كه به كامپايل نياز دارد و c++ را مي توان به دليل يك پيش پردازنده دو مرحله بالاتر دانست و پي اچ پي سه مرحله بالا تر زيرا اسكريپت php روي interpreter پي اچ پي كه روي zend engine كار مي كند تفسير مي شود

Virtual Machine

ماشين مجازي ابتكار جديدي كه سان ميكروسيستمز sun microsystems در java به كار برد و اين زبان را همه جايي نمود. ماشين مجازي برنامه اي است كه توسط زبانهاي سطح پايين تر ايجاد شده تا يك زبان سطح بالا را روي خودش اجرا كند. در اين شيوه compiler كدي را ايجاد مي كند(java byte code) كه توسط ماشين مجازي پردازش مي شود. مزاياي اينكار : 1- ماشين مجازي مي تواند حجم و پردازش متفاوتي بسته به محل استفاده داشته باشد مثلا يك ماشين مجازي براي يك گوشي بسيار سبك است و براي يك پي سي مي تواند يك ران تايم ماشين كامل و بزرگ باشد 2- مديريت خودكار حافظه توسط ماشين مجازي كه در managed code توضيح مي دهم 3- توانايي وارد كردن كتابخانه ها و اجزاء برنامه نويسي در زمان اجرا به درون برنامه مثل dllها و component هاي مختلف در حالتي كه ماشين مجازي مسئول هماهنگي با انواع مختلف آنها باشد

Managed Code

كدي كه حافظه در آن مديريت شده : براي اجراي برنامه ابتدا حافظه لازم از مموري اخذ مي شود كه مثلا شي x داراي 10 پراپتي(متغيير) 2بايتي و 3 تابع(متد) است كه هر كدام از اين متدها stackهايي(بسته هاي حافظه) به مقدار 10 و 4 و 3 بايت مي گيرند كه نهايتا اين شئ 37 بايت حجم مي گيرد. در زبان هاي غير ويرژوال اولا بايد نوع و حجم متغيير را تعيين نمود و اين متغيير كه ممكن است حامل يك شئ بزرگ يا يك عدد كوتاه باشد تازماني كه برنامه نويس آن را نابود نكند يا اينكه اجراي تابع آن تمام نشود سر جاي خود باقي مي ماند حتي اگر از آن استفاده نشود اما در managed code ي كه توسط ماشين مجازي توليد مي شود حافظه اتوماتيك مديريت مي شود و ماشين مجازي اشياء و متغيير هايي را كه ديگر استفاده نخواهند شد را پاك مي كند.

‍CLR يا CLI

Common Language Runtime : ماشين مجازي اي كه مي تواند با تمام زبان هاي برنامه نويسي استاندارد شده تحت CIL كار كند. ميكروسافت در دات نت ابتكار ديگري زد. يك ماشين مجازي كه همچون ماشين مجازي جاوا كه يك byte code ورودي و يك managed code خروجي داشت بود اما با يك تفاوت چشمگير. ورودي اين ماشين به جاي يك بايت كد خاص يك IL-Common Intermediate Language يا زبان ميانه عمومي بود كه شباهت زيادي به اسمبلي دارد و از طرفي اقدام به ثبت CLR تحت عنوان CLI يا Common Language Infrastructure تحت ECMA-European Computer Manufacturer Association نمود. IL زباني است شبيه assembly و همه كامپايلرهاي زبان هاي مختلف مي توانند به سادگي و با تغييراتي كوچك برنامه هاي خروجي خود را وارد CLR كنند بنابراين امروزه مي بينيم كه اكثر زبان ها در .net كار مي كنند حتي زبان هاي اسكريپتينگ با ورود به اين عرصه از حصار هاي اينترپرت خارج شده اند.

DLL : Dynamic Link Library

كتابخانه توابع و اشيائي كه به صورت مشترك در برنامه هاي سي پي پي استفاده مي شدند

COM : Component Object Model

راه حلي كه براي هماهنگي بين دي ال ال هاي كامپايلر هاي مختلف ايجاد شد

 

---------------------------------------------------------------------------------------

--------------B-------------خوب برويم سراغ بررسي چند زبان

**** VB و VBS

VISUAL BASIC (SCRIPT)

اين دو زبان از نظر سينتكس كاملا شبيه هم هستند. وي بي توابع و دستورات بسيار قوي اي در مديريت بايت و رشته هاي پيچيده و باينري دارد اما اين زبان براي توسعه حرفه اي برنامه مثل شكنجه است و سينتكس اين زبان بسيار كند و نامنظم مي باشد اما به دليل شباهت بسيار زياد آن با نامه نگاري بين دو انسان سالها به عنوان زبان شيرين برنامه نويسي همچون پدر بزرگش بيسيك آغازگر كار مبتديان بود

**** ASP

active server page را مي توان يك برنامه قديمي سرور براي صفحات وب خواند كه روي IIS كار مي كند و يكي از كامپوننت هاي ويندوز است و اشياء لازم ابتدايي را براي زبان برنامه نويسي مورد نظر ما فراهم مي كند. البته مجموعه زبان هايي كه در asp كار مي كنند به كامپوننت هاي توليد شده محدود مي شوند اما به صورت پيشفرض فقط كامپوننت هاي javascript و vbscript روي asp كار ميكنند.

براي استفاده از asp فقط كافيست در ديسك ويندوز از قسمت add/remove components كامپوننت IIS را تيك زده و نصب نماييم

**** JavaScript

اين زبان برخلاف آنكه جدي گرفته نشده حقيقتا يك زبان دايناميك ، تماما جسم گرا(شئ گراي يكپارچه) ، زيبا و منظم و خارق العاده است كه مي شناسم. در اين زبان مي توان با هر چيز مثل يك شئ رفتار كرد و هر شئ مي تواند والد شئ ديگري باشد. براي ايجاد اشياء حتما لازم نيست كلس تعريف نمود و شيوه هاي بسيار متنوعي براي ايجاد شئ وجود دارد كه به نظم بخشيدن برنامه كمك بزرگي مي كنند. دايناميك است و نوع متغيير در اين زبان به سادگي تغيير مي كند و بررسي نوع متغيير بسيار آسان و مطمئن است. همچنين كار با آرايه به عنوان شئ در اين برنامه در يك حالت بسيار تكامل يافته است. به نظر من javascript شئ گرا از همه نظر مطمئن ترين و سريع ترين زباني است كه وجود دارد.

لينك زير آينده اين زبان را بهتر روشن مي كند

“A re-introduction to JavaScript”

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

همچنين مي توانيد در صفحات 1695 و 1696 كتاب Sams ASP.NET 3.5 Unleashed در قسمت Making JavaScript Look Like C# Sharp در مورد استفاده از اين زبان در دات نت مطالبي را مطالعه فرماييد.

نگاهي به چند شيوهء شئ سازي javascript:

 

کد:

var obj1={ "inner_obj_1":new function(){ this.mthd=function(){ ...; } }, "mthd_1":function(){ ....; }, "conf_1":122, "conf_2":225, ".":end}obj1.inner_obj_1.mthd()obj1.mthd_1()//--var obj2=new Object();obj2.n=2//--var obj3=new function(){ var _this=this this.prpty=32 function privateMthd(){ return typeof(_this.prpty)=='undefined' ...;} this.public_privateMthd=privateMthd() this.publicMthd=function(){ return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{1,3})$/.test( "sls_tech@yahoo.com" ); ....; }}obj3.publicMthd()//--function cls(arg1, arg2){...;}var obj=new cls('x', 'y')cls.prototype.my_prpty=32var x=obj.my_prpty //expression returns 32

**** Java

J2EE - Java 2 platform enterprise edition

JDK - Java Development Kit مجموعه اي از قطعه برنامه هاي لازم براي كامپايل ، ديباگ ، لينك و ران

JRE - Java Runtime Environment

JVM - Java Virtual Machine محيط ماشين مجازي مجري برنامه هاي جاوا كه CLR ميكروسافت هم مشابه اين محيط است

جاوا هم يك زبان شئ گراء و سرشار از كلس هايي ست كه گويا تمامي ندارند با قابليت توليد managed code و توانايي سازگاري با سيستم عامل هاي مختلف بواسطه JCL - Java Class Library كه مي تواند برنامه را با دي ال ال هاي مختلف ، سيستم COM و يا اي پي آي در محيط هاي مختلف سازگار نمايد

سان جاوا java byte code هايي را كه از كامپايلر هاي زبان هاي ديگر براي اجرا در ويرژوال ماشين جاوا ايجاد شوند را تضمين نكرده است لذا براي كار در اين ماشين مجازي حتما بايد از كامپايلر java (javac.exe) استفاده نمود

جاوا زبان بسيار خوبي براي ايجاد برنامه هاي گوناگون و كم حجم موبايل ، اپلت هاي اينترنتي (برنامه هاي كم حجمي كه روي مرورگرها مجهز به JWS يا JRE اجرا مي شوند و از روي وبسايت قابل كنترل هستند) و همينطور ساخت بازيها و برنامه هاي رايانه اي است و سرعت مناسب تر JVM جاوا در runtime همچنان مسئله اي است كه در ساخت برنامه هاي پر حجم و بزرگ در برابر CLR دات نت ميكروسافت قدرت نمايي مي كند.

براي توليد نرم افزار در جاوا مي توان حتي از يك borland J Builder قديمي استفاده نمود و JDK آن را ارتقاء داد. اين محيط امكانات ويژوال(بصري) مناسبي را فراهم مي كند

**** CPP - C++

يك زبان برنامه نويسي شئ گرا كه جزء بهترين و زيبا ترين زبان هاي برنامه نويسي سطح پايين است و دنياي نرم افزار ها و بازي ها ي رايانه اي را جان بخشيد. البته اين زبان به دليل سطح پايين بودنش از نظر ظرافت برنامه نويسي قابل مقايسه با زبان هاي ويرژوال نيست زيرا هر چند class library دارد اما مثل جاوا و دات نت managed code ندارد اما فراموش نكنيم كه بسياري از نرم افزارهاي بنيادين امروزي با اين زبان نوشته مي شوند.

كامپايلر cpp همان كامپايلر سي است كه بواسطه يك پيش پردازنده c pre processor ارتقاء داده شده و از زبان ساختاري قديمي سي يك زبان شئ گراء و سطح پايين با قدرت شئ گرايي بالا ايجاد گرده است.

براي توليد نرم افزار در c++ هم مي توان همانند جاوا از borland C++ استفاده نمود اما مسلما visual c++ در microsoft visual studio 2008 مناسب تر است

**** .NET framework and C# and J# and ...

برنامه نويسي .net محيط استانداردي ست كه برنامه نويسان را از هر شاخه اي به سمت خود مي كشد چرا كه ديگر ديوار هاي محدوديت نوع زبان برداشته شده.

زباني كه بيشتر براي .net استفاده مي شود C# است كه كامپايلر csc هم به عنوان كامپايلر استاندارد .net در ECMA تاييد شده اما از هر زباني مي توان وارد شد.

چرا C# ؟ C# را مي توان تركيبي از c++ با java ياد كرد كه به سادگي VB شده است چرا كه با وجود سينتكس C++ زائده هاي آن حذف شده مثلا ديگر نياز به مديريت حافظه نيست يا استفاده از پوينتر براي متدهاي ويرژوال و يا مشتگيري(ميراث) چندگانه ، همچنين كتابخانه هاي گسترده BCL - Base Class Library را يكجا دارد

BCL

از دوران c++ تلاش هاي بسياري براي آسان و هماهنگ شدن كاربرد كتابخانه هاي توابع و كلس ها يا همان dll هاي كامپايلر هاي مختلف شده است مثل com و win32 API اما BCL واقعا كامل است حتي بهتر از JCL زيرا با هر زباني مي توانيم فقط از يك قاعده براي استفاده از كتابخانه هاي سيستم عامل هاي گوناگون استفاده كنيم يعني يك برنامه را بدون هيچ گونه نگراني توليد مي كنيم و مطمئن هستيم كه در تمام سيستم عامل هايي كه BCL با كتابخانه هاي آنها هماهنگ شده چه در امروز و چه در آينده به صورت تضميني اجرا خواهد شد.

درباره .net در زمينه asp ، وب كدهاي نوشته شده پس از اولين request كامپايل شده و در مراجعات بعدي نسخه كامپايل شده برنامه وب پردازش مي شود كه سرعتي چشمگير نسبت به interpreterها به همراه دارد. براي كار با asp.net حتي از JScript يا Javascript يا حتي php هم مي توان استفاده نمود كه ديگر از دسته اسكريپت ها به كامپايل شونده ها منتقل مي شوند.

براي كار با .net مي توانيد به سادگي :

كامپوننت iis را از ديسك ويندوز نصب كرده و يكي از نسخه هاي .net framework را نصب نماييد. نصب دات نت بعد از iis به دليل نياز به تنظيم iis الزامي ست اما اگر تنظيمات انجام نشود مي توان فايل aspnet_regiis.exe را از يكي از دايركتوري هاي WINDOWS\Microsoft.NET\Framework يافت و اجرا كرد. براي قرار دادن يك شاخه روي هاست محلي مثلا شاخه alix22 را از طريق properties آن web share نموده و كد هاي *.aspx را در آن قرار مي دهيم و از طريق IE و آدرس localhost/alix22 برنامه را كامپايل و بررسي مي نماييم.

اما بهترين راه نصب microsoft visual studio 2008 است كه همه ابزارهاي لازم را نصب مي نمايد و نيازي به iis براي آزمايش كدها و برنامه هاي وب نيست

**** PHP

perl hypertext preprocessor - personal home page

php يك اينترپرتر سرور سايد وب عمومي با سابقه اي درخشان در وبسايت هاي عموم مردم است كه با ورود zend engine به آن از دسته اينترپرتر هاي عادي كه سرعت پاييني دارند خارج و جزء زبان هاي مناسب سرور سايد شده. php سينتكس مخصوص خود را دارد كه البته شباهت هاي كمي هم به سينتكسهايي مثل java و javascript دارد.

هرچند كه از نسخه پنج به بعد شرايط يك زبان شئ گرا در php ايجاد شده ولي كلا زبان آن از نظر ساخت و استفاده از اشياء و حتي متغييرها حالتي خشك و ملالت آور دارد و روند دست نيست.

php گزينه بسيار خوبي براي طراحي يك وبسايت ارزان با سرعتي مناسب و امكانات كامل سرور سايد است اما معايب زبان پر پيچ و خم(از نظر هندل كيبوردي) آن را نيز بايد قبول كرد. اما براي مقاصدي كه هزينه مطرح نيست همچنان استفاده از C# دات نت گزينه بهتري ست

نكته : براي برنامه نويسي وب دو عنصر اصلي راه انداز كار هستند اولا يك نرم افزار وب سرور كه اشياء و مقادير لازم را بر اساس request و response و ... در محيط برنامه نويسي مورد نظر شما فرا هم مي كند. و ثانيا يك اينترپرتر يا كامپايلر يا ماشين مجازي يك زبان برنامه نويسي مثل php يا asp كه شامل نسخه .net آن هم مي شود.

حالت استاندارد اين است كه براي php از سرور apache و براي asp و asp.net از سرور iis استفاده مي نمايند

براي استفاده از اين زبان مي توان با نصب wamp يا easyphp سرور apache و اينترپرترPHP و سرور بانك mysql را به صورت همزمان و هماهنگ شده نصب نمود.

براي عملكرد بهتر در اين زبان من نرم افزار rapid php را پيشنهاد مي كنم. البته notepad++ علي الخصوص در نسخه هاي جديدش اديتور بسيار روند و راه دستي است براي تمام زبان هاي برنامه نويسي كه شامل php نيز مي شود.

 

اميدوارم كه هميشه اميدوار و سلامت باشيد

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...