آمار سايت
آمار مطالب
 کل مطالب کل مطالب : 7
کل نظرات کل نظرات : 0
آمار کاربران
افراد آنلاين افراد آنلاين : 1
تعداد اعضا تعداد اعضا : 1

تعداد اعضا کاربران آنلاين


آمار بازديد
بازديد امروزبازديد امروز : 11
بازديد ديروزبازديد ديروز : 0
گوگل امروزگوگل امروز: 0
 گوگل ديروز گوگل ديروز : 0
بازديد هفته بازديد هفته : 48
بازديد ماه بازديد ماه : 14
بازديد سال بازديد سال : 814
بازديد کليبازديد کلي : 7560
تاريخ امروزامروز: جمعه 14 اردیبهشت 1403
نظرسنجی
جستجو
موضوعات
اطلاعات کاربري

عضو شويد

نام کاربری :
رمز عبور :

فراموشي رمز عبور؟
نويسندگان
آخرين اعضا
آرشيو ماهيانه
خبرنامه
براي اطلاع از آپديت شدن سايت در خبرنامه سايت عضو شويد تا جديدترين مطالب به ايميل شما ارسال شود

به طور معمول برنامه نويس دستوراتي كه ميخواهد را در قالب كد، به زبان هاي برنامه نويسي مختلف مانند جاوا، سي شارپ و… مينويسد. ولي CPU نميتواند اين دستورات را به همين شكل متوجه بشود و آنها را اجرا بكند. پس به يك واسطه در اين وسط نياز داريم كه كد هاي برنامه نويس را به زباني كه CPU آنرا ميفهمد ترجمه كند. به اين واسط، كامپايلر ميگوييم.

كامپايلر چگونه شغل ميكند؟در زمان اجرا شدن (يا همان Run شدن برنامه)، كامپايلر پيش درآمد همه كدها و دستوراتي كه نوشته ايد را آناليز و رسيدگي ميكند كه از لحاظ سينتكس مشكلي نداشته باشد. اگر پس از بررسي هيچ مشكلي وجود نداشته باشد، كدهاي خروجي بدست كامپايلر ساخته ميشود. معمولا به اين كدي كه در نهايت فرآوري ميشود، Object Code يا گاهي اوقات Object Module ميگوييم. (البته اين رو هم بگم كه واژه Object اصلا هيچ ربطي به شي گرايي در برنامه نويسي نداره). در واقعيت Object Code همان كد به زبان ماشين است كه CPU ميتواند آنها را اجرا كند.
compiler شي گرايي چيست؟ آموزش مفاهيم شي گرايي در زبان جاوا
يك كامپايلر چهار مرحله اصلي را اتمام ميدهد:
اسكن كردن (Scanning): اسكنر حروف (كاراكتر) ها را تك به تك در سورس كد ما ميخواند و به خاطر ميسپارد كه كدام حرف در كدام خط و كدام موقعيت قرار داشت.بررسي لغوي (Lexical Analysis): كامپايلر دنباله هايي از حروف ميسازد (كه در سورس كد وجود داشتند و در مرحله قبل آنها را اسكن كرديم)، سپس اين دنباله ها به دودمان هايي از حروف تبديل ميشوند كه به آنها Token ميگوييم. پس اين Token ها توسط يك برنامه به اسم Lexical Analyzer به يكديگر پيوسته ميشوند. نرم افزار Lexical Analyzer از يك جدول مثال براي ذخيره واژه هايي كه داخل كد منبع (Source Code) هستي دارند استفاده ميكند كه مطمئن شود با Token هاي توليد شده مطابقت دارند.بررسي سينتكسي (Syntactic Analysis): در اين مرحله بررسي سينتكسي سپريدن ميشود. يعني Token هايي كه در تقدير پيش فرآوري شده اند را رسيدگي ميكند كه با شيوه واقعيت كه پيمان است استفاده بشوند فرآوري شده اند يا نه؟ سينتكس به زبان ساده به اجازه ساخت درست شماري كلمه كليدي گفته ميشود كه پيمان است نتيجه اي را براي ما فرآوري كنند. (سينتكس يا Syntax به فرمان زبان و نحوه نگارش زبان هاي برنامه نويسي گفته ميشه كه توي يه مقاله ديگه بصورت كامل توضيحاتش رو داديم و اين مقاله رو ميتونين از اينجا بخونين). كامپايلر بايد از لحاظ قوانين سينتكسي برنامه را بررسي كند كه اشكالي هستي نداشته باشد.بررسي سمنتيكسي (Semantic Analysis): اين مرحله از شماري از مراحل بالا برپايي شده است. نخست ساختار Token با پروا به قواعد گرامر يك زبان خاص، رسيدگي ميشود. ساختار Token با به كارگيري مفسر و كامپايلر معني پيدا ميكند و در نهايت يك كد به اسم Object Code توليد ميشود. اين كد آبجكت شامل دستوراتي است كه بدست CPU ميتوانند اجرا بشوند. در اين مرحله همه كدها تبديل به دستورات قابل فهم براي پردازنده ميشوند و برنامه ما اجرا ميشود.
كامپايلر در زبان جاوا چگونه پيشه ميكند؟زبان برنامه نويسي جاوا، كه در برنامه نويسي شي گرا بهره‌گيري ميشود، مفهومي را شناسايي كرد كه خروجي كامپايلر (كه در اينجا به آن bytecode گفته ميشود)، توانايي اجرا روي هر سيستم كامپيوتري را داشته باشد. توانايي اتمام اين شغل با به كارگيري ماشين مجازي جاوا شدني شده است. يعني نرم افزاري به نام ماشين مجازي جاوا (Java Virtual Machine) بايتكد هايي كه توليد شده اند را به دستوراتي تبديل ميكند كه براي همين دستگاهي كه الان در حال اجراي برنامه ما ميباشد، قابل درك است.
كامپايل كردنبه زبان ساده تر يعني كامپايل كردن برنامه هايي كه در زبان جاوا نوشته شده اند در دو مرحله سپريدن ميشود. ابتدا كدهايي كه نوشتيم به بايتكد تبديل ميشوند و سپس ماشين مجازي جاوا آنها را با توجه به سيستم ما به كدهاي قابل درك براي ماشين تبديل ميكند.

ديكامپايل كردن (Decompile) چيست؟ديكامپايل دقيقا وارونه كامپايل كردن است. يعني وقتي كدهاي كامپايل شده (يا همان آبجكت كد) را به كدهايي از زبان هاي برنامه نويسي سطح بالا كه خودمان با آنها برنامه نويسي ميكنيم تبديل ميكنيم، عمل ديكامپايل كردن رخ داده است.

كدام زبان هاي برنامه نويسي از كامپايلر AOT كاربرد ميكنند؟زماني كه همه كدها يكجا به زبان ماشين تبديل ميشوند قبل از اينكه به پلفترمي كه آن را اجرا ميكند برسند، به آن Ahead Of Time (به معني جلوتر از زمان) يا بصورت مخفف كامپايل كردن AOT گفته ميشود. يعني برنامه پيش از اينكه اجرا بشود، كاملا كامپايل ميشود و به كدهاي ماشين تبديل ميشود و سپس در پسنديدن پلتفرم قرار ميگيرد تا اجرا بشود. بسياري از زبان هاي برنامه نويسي معروف كه حتما نام آنها را هم شنيده ايد، احتياج به كامپايلر دارند. مانند:
FortanPascalAssembely LanguageCC++Swiftقبل از زبان جاوا و سي شارپ، كل برنامه هاي كامپيوتري يا كامپايل ميشدند يا با استفاده از Interpreter تفسير ميشدند.
دوره تعليم جاوا

كد تفسير شده چيست؟كدهاي تفسير شده (Interpreted Code) دستوراتي كه درون برنامه نوشته ايد را بدون كامپايل كردن و تبديل آنها به زبان ماشين، اجرا ميكند. كد تفسير شده، سورس كد را بصورت سر راست تجزيه ميكند، اين كدها با يك ماشين مجازي هماهنگ هستند كه آنها را بصورت همهنگام حين اجرا شدن براي ماشين برگردان ميكند. البته اين ماشين مجازي ميتواند از كدهايي كه از پيش كامپايل شده اند هم استفاده كند. مثلا زبان جاوا اسكريپت معمولا تفسير ميشود.
زبان كامپايل شده سريعتر از زبان تفسير شده اجرا ميشود. زيرا نياز نيست كه در سررسيد اجرا شدن برنامه، پيشه خاصي سپريدن بشود. تمام امور از پيش انجام شده اند.
Interpreter يا مفسر در برنامه نويسي چيست؟

كدام زبان هاي برنامه نويسي از كامپايلر JIT استفاده ميكنند؟كامپايلر JIT مخفف سه كلمه Just In Time ميباشد. اين مدل از كامپايلر ها تركيبي از كامپايلر هاي AOT و مفسر ها هستند كه بالاتر در ارتباط با آنها توضيح داديم. زبان هاي جاوا و سي شارپ از كامپايلر هاي JIT كاربرد ميكنند. هنگاميكه يك برنامه جاوا نوشته ميشود، JIT Compiler اين برنامه را به بايتكد تبديل ميكند. اين بايتكد ها دربرگيرنده كدهايي نيستند كه دستورات مشخصي براي پردازنده يك پلتفرم دشوار افزاري ويژه داشته باشد.
يعني بايتكد ها گزين كردن به پلتفرم ندارند پس ميتوانند روي كل Platform هايي كه از جاوا پشتيباني ميكنند اجرا بشوند. سپس اين بايتكد ها با ماشين مجازي جاوا به زبان ماشين برگردان ميشوند. ولي اين زبان ماشين با پروا به سيستمي كه برنامه روي آن اجرا ميشود فرق ميكند. به عبارت ساده تر، كامپايل كردن اين برنامه ها دو مرحله اي است.

مزايا و معايب كامپايل كردن هاي AOT و JITكامپايل كردن بصورت Ahead Of Time يا AOT آغاز سريعتري را براي شما فراهم ميكند، مخصوصا زمانهايي كه دستورات زيادي در موعد آغاز شدن برنامه بايد اجرا بشوند كارايي بيشتري خواهد داشت. اما در عين حال، به رم و فضاي هارد ديسك اكثريت احتياج دارد.
كامپايل كردن JIT يا همان Just In Time، هنگام اجرا شدن با توجه به پلتفرمي كه روي آن اجرا ميشود كامپايل را انجام ميدهد و همين باره مايه ميشود كه عملكرد بهتري را تحويل ما بدهد. كامپايلر JIT كدهاي تقويت شده اي را فرآوري ميكند زيرا پلتفرمي كه الان برنامه روي آن در حال اجرا شدن است را در عقيده ميگيرد. البته بايد اين را هم بگوييم كه نسبت به كامپايلر AOT به موعد بيشتري براي اجرا شدن نياز دارد.

براي مشاهده روش كار كامپايلر و زدن درصد بالاي درس كامپايلر در كنكور فيلم آموزش كامپايلر را مشاهده نماييد.

به طور معمول برنامه نويس دستوراتي كه ميخواهد را در قالب كد، به زبان هاي برنامه نويسي مختلف مانند جاوا، سي شارپ و… مينويسد. ولي CPU نميتواند اين دستورات را به همين شكل متوجه بشود و آنها را اجرا بكند. پس به يك واسطه در اين وسط نياز داريم كه كد هاي برنامه نويس را به زباني كه CPU آنرا ميفهمد ترجمه كند. به اين واسط، كامپايلر ميگوييم.

كامپايلر چگونه شغل ميكند؟در زمان اجرا شدن (يا همان Run شدن برنامه)، كامپايلر پيش درآمد همه كدها و دستوراتي كه نوشته ايد را آناليز و رسيدگي ميكند كه از لحاظ سينتكس مشكلي نداشته باشد. اگر پس از بررسي هيچ مشكلي وجود نداشته باشد، كدهاي خروجي بدست كامپايلر ساخته ميشود. معمولا به اين كدي كه در نهايت فرآوري ميشود، Object Code يا گاهي اوقات Object Module ميگوييم. (البته اين رو هم بگم كه واژه Object اصلا هيچ ربطي به شي گرايي در برنامه نويسي نداره). در واقعيت Object Code همان كد به زبان ماشين است كه CPU ميتواند آنها را اجرا كند.
compiler شي گرايي چيست؟ آموزش مفاهيم شي گرايي در زبان جاوا
يك كامپايلر چهار مرحله اصلي را اتمام ميدهد:
اسكن كردن (Scanning): اسكنر حروف (كاراكتر) ها را تك به تك در سورس كد ما ميخواند و به خاطر ميسپارد كه كدام حرف در كدام خط و كدام موقعيت قرار داشت.بررسي لغوي (Lexical Analysis): كامپايلر دنباله هايي از حروف ميسازد (كه در سورس كد وجود داشتند و در مرحله قبل آنها را اسكن كرديم)، سپس اين دنباله ها به دودمان هايي از حروف تبديل ميشوند كه به آنها Token ميگوييم. پس اين Token ها توسط يك برنامه به اسم Lexical Analyzer به يكديگر پيوسته ميشوند. نرم افزار Lexical Analyzer از يك جدول مثال براي ذخيره واژه هايي كه داخل كد منبع (Source Code) هستي دارند استفاده ميكند كه مطمئن شود با Token هاي توليد شده مطابقت دارند.بررسي سينتكسي (Syntactic Analysis): در اين مرحله بررسي سينتكسي سپريدن ميشود. يعني Token هايي كه در تقدير پيش فرآوري شده اند را رسيدگي ميكند كه با شيوه واقعيت كه پيمان است استفاده بشوند فرآوري شده اند يا نه؟ سينتكس به زبان ساده به اجازه ساخت درست شماري كلمه كليدي گفته ميشود كه پيمان است نتيجه اي را براي ما فرآوري كنند. (سينتكس يا Syntax به فرمان زبان و نحوه نگارش زبان هاي برنامه نويسي گفته ميشه كه توي يه مقاله ديگه بصورت كامل توضيحاتش رو داديم و اين مقاله رو ميتونين از اينجا بخونين). كامپايلر بايد از لحاظ قوانين سينتكسي برنامه را بررسي كند كه اشكالي هستي نداشته باشد.بررسي سمنتيكسي (Semantic Analysis): اين مرحله از شماري از مراحل بالا برپايي شده است. نخست ساختار Token با پروا به قواعد گرامر يك زبان خاص، رسيدگي ميشود. ساختار Token با به كارگيري مفسر و كامپايلر معني پيدا ميكند و در نهايت يك كد به اسم Object Code توليد ميشود. اين كد آبجكت شامل دستوراتي است كه بدست CPU ميتوانند اجرا بشوند. در اين مرحله همه كدها تبديل به دستورات قابل فهم براي پردازنده ميشوند و برنامه ما اجرا ميشود.
كامپايلر در زبان جاوا چگونه پيشه ميكند؟زبان برنامه نويسي جاوا، كه در برنامه نويسي شي گرا بهره‌گيري ميشود، مفهومي را شناسايي كرد كه خروجي كامپايلر (كه در اينجا به آن bytecode گفته ميشود)، توانايي اجرا روي هر سيستم كامپيوتري را داشته باشد. توانايي اتمام اين شغل با به كارگيري ماشين مجازي جاوا شدني شده است. يعني نرم افزاري به نام ماشين مجازي جاوا (Java Virtual Machine) بايتكد هايي كه توليد شده اند را به دستوراتي تبديل ميكند كه براي همين دستگاهي كه الان در حال اجراي برنامه ما ميباشد، قابل درك است.
كامپايل كردنبه زبان ساده تر يعني كامپايل كردن برنامه هايي كه در زبان جاوا نوشته شده اند در دو مرحله سپريدن ميشود. ابتدا كدهايي كه نوشتيم به بايتكد تبديل ميشوند و سپس ماشين مجازي جاوا آنها را با توجه به سيستم ما به كدهاي قابل درك براي ماشين تبديل ميكند.

ديكامپايل كردن (Decompile) چيست؟ديكامپايل دقيقا وارونه كامپايل كردن است. يعني وقتي كدهاي كامپايل شده (يا همان آبجكت كد) را به كدهايي از زبان هاي برنامه نويسي سطح بالا كه خودمان با آنها برنامه نويسي ميكنيم تبديل ميكنيم، عمل ديكامپايل كردن رخ داده است.

كدام زبان هاي برنامه نويسي از كامپايلر AOT كاربرد ميكنند؟زماني كه همه كدها يكجا به زبان ماشين تبديل ميشوند قبل از اينكه به پلفترمي كه آن را اجرا ميكند برسند، به آن Ahead Of Time (به معني جلوتر از زمان) يا بصورت مخفف كامپايل كردن AOT گفته ميشود. يعني برنامه پيش از اينكه اجرا بشود، كاملا كامپايل ميشود و به كدهاي ماشين تبديل ميشود و سپس در پسنديدن پلتفرم قرار ميگيرد تا اجرا بشود. بسياري از زبان هاي برنامه نويسي معروف كه حتما نام آنها را هم شنيده ايد، احتياج به كامپايلر دارند. مانند:
FortanPascalAssembely LanguageCC++Swiftقبل از زبان جاوا و سي شارپ، كل برنامه هاي كامپيوتري يا كامپايل ميشدند يا با استفاده از Interpreter تفسير ميشدند.
دوره تعليم جاوا

كد تفسير شده چيست؟كدهاي تفسير شده (Interpreted Code) دستوراتي كه درون برنامه نوشته ايد را بدون كامپايل كردن و تبديل آنها به زبان ماشين، اجرا ميكند. كد تفسير شده، سورس كد را بصورت سر راست تجزيه ميكند، اين كدها با يك ماشين مجازي هماهنگ هستند كه آنها را بصورت همهنگام حين اجرا شدن براي ماشين برگردان ميكند. البته اين ماشين مجازي ميتواند از كدهايي كه از پيش كامپايل شده اند هم استفاده كند. مثلا زبان جاوا اسكريپت معمولا تفسير ميشود.
زبان كامپايل شده سريعتر از زبان تفسير شده اجرا ميشود. زيرا نياز نيست كه در سررسيد اجرا شدن برنامه، پيشه خاصي سپريدن بشود. تمام امور از پيش انجام شده اند.
Interpreter يا مفسر در برنامه نويسي چيست؟

كدام زبان هاي برنامه نويسي از كامپايلر JIT استفاده ميكنند؟كامپايلر JIT مخفف سه كلمه Just In Time ميباشد. اين مدل از كامپايلر ها تركيبي از كامپايلر هاي AOT و مفسر ها هستند كه بالاتر در ارتباط با آنها توضيح داديم. زبان هاي جاوا و سي شارپ از كامپايلر هاي JIT كاربرد ميكنند. هنگاميكه يك برنامه جاوا نوشته ميشود، JIT Compiler اين برنامه را به بايتكد تبديل ميكند. اين بايتكد ها دربرگيرنده كدهايي نيستند كه دستورات مشخصي براي پردازنده يك پلتفرم دشوار افزاري ويژه داشته باشد.
يعني بايتكد ها گزين كردن به پلتفرم ندارند پس ميتوانند روي كل Platform هايي كه از جاوا پشتيباني ميكنند اجرا بشوند. سپس اين بايتكد ها با ماشين مجازي جاوا به زبان ماشين برگردان ميشوند. ولي اين زبان ماشين با پروا به سيستمي كه برنامه روي آن اجرا ميشود فرق ميكند. به عبارت ساده تر، كامپايل كردن اين برنامه ها دو مرحله اي است.

مزايا و معايب كامپايل كردن هاي AOT و JITكامپايل كردن بصورت Ahead Of Time يا AOT آغاز سريعتري را براي شما فراهم ميكند، مخصوصا زمانهايي كه دستورات زيادي در موعد آغاز شدن برنامه بايد اجرا بشوند كارايي بيشتري خواهد داشت. اما در عين حال، به رم و فضاي هارد ديسك اكثريت احتياج دارد.
كامپايل كردن JIT يا همان Just In Time، هنگام اجرا شدن با توجه به پلتفرمي كه روي آن اجرا ميشود كامپايل را انجام ميدهد و همين باره مايه ميشود كه عملكرد بهتري را تحويل ما بدهد. كامپايلر JIT كدهاي تقويت شده اي را فرآوري ميكند زيرا پلتفرمي كه الان برنامه روي آن در حال اجرا شدن است را در عقيده ميگيرد. البته بايد اين را هم بگوييم كه نسبت به كامپايلر AOT به موعد بيشتري براي اجرا شدن نياز دارد.

براي مشاهده روش كار كامپايلر و زدن درصد بالاي درس كامپايلر در كنكور فيلم آموزش كامپايلر را مشاهده نماييد.


صفحات سايت

تعداد صفحات : 0