eyes_shut_number1
چهارشنبه 01 دی 1389, 15:52 عصر
منبع : Wanalyst.net (http://wanalyst.net/ShowContent.aspx?PageID=215&CatID=130)
برای درک کامل جاوا باید دلایل به وجود آمدن آن و نیرو های شکل دهنده آن و میراثی که به ارث برده است رو درک کنیم. زبان برنامه نویسی جاوا هم مثل زبان های برنامه نویسی موفقی که قبل از اون مطرح شده؛ ترکیبی از بهترین عناصر میراث غنی خود است که با مفاهیمی که منحصر به این زبان است ادغام شده است.
اگر چه جاوا به طور تنگاتنگی با محیط اینترنت ارتباط داره اما لازمه به خاطر داشته باشید که که بیش از هر چیز یک زبان برنامه نویسی است.
ابداع؛توسعه و تکامل زبانها به دو دلیل رخ می دهد:
۱- برای تطبیق با محیط ها و کاربرد های در حال تغییر
۲- برای عملی ساختان موارد خاص و پیشرفته هنر برنامه سازی
پیشینیان زبان جاوا
زبان جاوا ارتباط تنگاتنگی با C++ دارد که به نوبه خودش؛ به طور مستقیم از زبان C مشتق شده است. بیشتر ویژگی های جاوا از این دو زبان به ارث رسیده است به طور مثال ساختار گرامری جاوا از C مشتق شده است.
زبان C++ هم بر بسیاری از ویژگی های شیئ گرایی Object Oriented جاوا تاثیر گذاشته است. علاوه بر این شکل گیری زبان جاوا در فرآیند “تصفیه و تطبیق” Refinement and Adaption ریشه داره که عموما در چند دهه اخیر در زبان های جدید رخ داده است.
دلیل هر یک از این نوآوری های مطرح در طراحی هر زبان؛ نیاز به حل مسائلی بوده که زبان های پیشین قادر به حلشون نبودن.
تولد زبان برنامه سازی نوین C
زبان برنامه سازی C دنیای کامپیوتر ها رو متحول کرد و تغییر اساسی در نگرش برنامه نویسی ایجاد کرد. طراحی و پیاده سازی زبان C نتیجه مستقیم نیاز به یک زبان ساختار یافته ؛ کادآمد و سطح بالا بود که بتونه جایگزین زبان اسمبلی در نوشتن برنامه های سیستمی بشه. زبان C هم مثل هر زبان دیگه ای تونست بین موارد زیر توازن نسبی ایجاد کنه:
سهولت استفاده
امنیت در مقابل بازدهی
استحکام در مقابل گسترش
برنامه سازان معمولا قبل از مطرح شدن C باید زبانی رو از بین زبانهای دیگه انتخاب می کردن که تنها یکی از خصوصیات گفته شده رو داشته باشه .مثلا زبان فرترنFORTRAN امکان نوشتن برنامه های نسبتا کارآمد برای کاربرد های علمی رو به ما میده اما این زبان برای نوشتن برنامه های سیستمی مناسب نیست یا با اینکه یادگیری بیسیکBASIC آسونه اما زبان قدرتمندی نیست و در ساختارش نقص داره. با استفاده از زبان اسمبلیAssembly می تونیم برنامه های بسیار کارآمد تولید کنیم اما یادگیری اون مشکله و به کار بردن اونم خیلی سخته علاوه بر این اشکال زدایی در آن هم دشوار و وقت گیره.
مشکل دیگه اینه که زبان هایی وثل بیسیک و کوبولCOBOL و فرترن بر اساس اصول ساختار یافته طراحی نشده اند و همه این زبان ها از دستور GOTO برای هدایت کنترل برنامه ها استفاده می کردند و در نتیجه برنامه هایی که با این زبان ها نوشته می شدند منجر به تولید کد اسپاگتی(حجم زیادی از انشعابات شرطی و غیر شرطی که درک برنامه رو سخت میکنه) می شدند.
گرچه زبانی مثل پاسکالPascal ساختار یافته است اما طراحی اون با هدف بازدهی و کارایی صورت نگرفته و فاقد ویژگی بود که بشه با اون برنامه های گسترده رو نوشت و علاوه بر این به دلیل استاندارد بودن ساختار گرامری اش قادر به نوشتن برنامه های سیستمی نیست.
در اوایل دهه ۷۰ میلادی انقلاب کامپیوتری فراگیر شده بود و نیاز به رسیدن به نرم افزار های بهتر؛برنامه سازان را به شدت برای تولید سریع اینگونه نرم افزار ها تحت فشار قرار میداد. در محافل آکادمیک هم همه نیروی برنامه سازان برای طراحی و پیاده سازی یک زبان بهتر به کار می رفت.
برنامه سازان برای اولین بار دستیابی نا محدودی به کامپیوتر ها داشتند و این امر آزادی عمل برای انجام هر آزمایشی رو به اونا میداد.
زبان برنامه نویسی C توسط دنیس ریچی طراحی و برای اولین بار در یک کامپیوتر PDP-11 تحت سیستم عامل یونیکس اجرا شد. این زبان نیز نتیجه فرآیندی بود که با زبان قدیمی تری به نامBCPLکه توسط مارتین ریچاردز طراحی شده بود؛ آغاز شده بود.
C++ گام بعدی
زبان برنامه نویسی C در اواخر دهه ۷۰ و اوایل دهه ۸۰ میلادی با زبان برنامه سازی غالب تبدیل شد و هنوز هم طرفداران مخصوص به خود را دارد. با این وجود سوالی که مطرح است این است که با در نظر گرفتن قابلیت های زیاد این زبان چرا نیاز به تولید یک زبان دیگر با وجود آمد؟ پاسخ این سوال پیچیدگی است.
در سرتاسر تاریخ برنامه سازی پیچیدگی رو به رشد برنامه ها؛ موجب مطرح شدن ضرورت روشهای بهتر برای مدیریت این پیچیدگی شده است.
روش برنامه سازی جدیدی به نام برنامه سازی شیئ گرا Object Oriented Program برای حل مشکل پیچیدگی ابداع شد.OOP نوعی متدلوژی برنامه سازی است که امکان سازماندهی برنامه های پیچیده را از طریق وراثت inheritance ؛ نهان سازی encapsulation و پلی مورفیزم فراهم می کند.
اگر چه C یکی از بزرگترین زبان های برنامه سازی جهان است اما توانایی محدودی جهت مدیریت پیچیدگی دارد. وقتی حجم برنامه ای از ۲۵۰۰۰ تا ۰۰۰/۱۰۰ سطر بیشتر می شود آنقدر پیچیده شده است که تسلط بر تمام آن مشکل است. C++ امکان حل این مشکل رو فراهم کرد.
BJarne StroustrupPowerPoint در سال ۱۹۷۹ وقتی در آزمایشگاه بل در نیوجرسی مشغول کار بودC++ را ابداع کرد و در ابتدا نام اونو C with classes گذاشت.
زمینه برای جاوا فراهم می شود
در اواخر دهه ۸۰ میلادی برنامه سازی شی ئ گرا با C++ فراگیر شد.
چون C++ بازدهی بالا و عناصر دارای سبک زبان Cرا با سبک شی ئ گرا ترکیب کرده بود؛ زبانی بود که میشد از اون برای ایجاد محدوده گسترده ای از برنامه ها استفاده کرد.
با این وجود مانند قبل نیرو هایی در حال ترکیب شدن هستند تا یا بار دیگه تکاملی در زبان های برنامه سازی ایجاد کنند.
ظهور جاوا
جاوا در سال ۱۹۸۱ توسط جیمز گاسلینگ ؛ پاتریک نوتون ؛ کریس وارث ؛ اد فرانگ و مایک شرایدن در شرکت سان میکرو سیستم ایجاد شد. نخستین نگارش اون پس از ۱۸ ماه کاری تولید شد .اسم این زبان در ابتداOaK بوداما در سال ۱۹۹۵ به جاوا تغییر کرد. در فاصله زمانی بین نخستین پیاده سازی OaK در پاییز سال ۱۹۹۲ و اعلام موجودیت جاوا در بهار سال ۱۹۹۵ افراد زیادی در طراحی و تکامل این زبان مشارکت داشتن.
جالبه بدونید که محرک اولیه برای آماده سازی جاوا اینترنت نبود بلکه در عوض محرک اصلی ؛ نیاز به یک زبان مستقل از محیطPlatform independent یا معماری خنثی بود که بتوننن از اون برای ایجاد نرم افزار های قابل استفاده در تجهیزات الکترونیکی خانگی مثل ماکرو فر و دستگاه های کنترل از راه دور ؛استفاده کنن.
می دونید که CPU هایی هستن که به عنوان کنترلر استفاده میشن؛ مشکل CوC++ و اکثر زبانهای دیگه اینه که طراحیشون طوری است که برای یک مقصد خاص کامپایل میشن. هر چند این امکان وجود داره کهبرنامه های C++ رو برای تقریبا هر CPUای کامپایل کرد اما این کار مستلزم داشتن یک کامپایلر خاص برای اون نوعCPU است.
تولید کنندگان زبان جاوا برای پیدا کردن راه حلی برای این مشکل کار بر روی زبانهای قابل انتقال و مستقل از محیط رو شروع کردن تا بتونن کدی رو تولید کنن تا در CPUهای مختلف تحت محیط های مختلف قابل اجرا باشه و این منجر به تولید جاوا شد.
همزمان با تولید جاوا عامل دوم و مهمتری نیز ایجاد شد که نقش زیادی در آینده جاوا داشت.این نیرو وب جهانی WW بود.هرچند وب جهانی همزمان با پیاده سازی جاوا شکل نگرفته بود اما این امکان وجود داشت که جاوا زبانی مهم و گمنام برای آماده سازی تجهیزات الکترونیکی باقی بمونه. با ظهور وب جهانی جاوا پیشرفت قابل ملاحظه ای کرد زیرا وب جهانی هم نیاز به برنامه های قابل انتقال داشت.
گفتیم جاوا شباهت های زیادی به CوC++دارد. طراحان جاوا می دونستن که استفاده از ساختار گرامری C و استفاده از میژگیهای شی ئ گراییC++ به خوبی برنامه نویسان با تجربه این دو زبان رو به جاوا جذب میکنه.
جاوا زبانی ست که بر ساسا نیازها و تجربیات کسانی که اونو طراحی و پیاده سازی کردن شکل گرفته پس این زبان؛ زبان برنامه سازان هست. جاوا پیوسته و یکپارچه است و کنترل نا محدودی رو در اختیار شما میذاره(به جز وحدودیت هایی که ممکنه اینترنت ایجاد کنه).اگه برنامه خوبی در جاوا بنویسید کامپایلر اونو منتقل میکنه اگه برنامه بدی بنویسید باز هم اونو منتقل میکنه به عبارت دیگه جاوا زبانی صرفا برای آموزش دیدن نیست این زبان برنامه نویسان حرفه ای است.
به دلیل شباهتهای جاوا باCو C++ اغلب به اشتباه تصور میشه که این زبان صرفا نگارش اینترنتی دو زبان ذکر شده است اما جاوا تفاوتهای فلسفی با آنها دارد.
ارتباط با C#
موفقیت جاوا بسیار مهمتر از اونه که نادیده گرفته بشه. شاید مهمترین مثال از تاثیر جاوا ؛ C# باشه. C# ارتباط تنگاتنگی با جاوا داره و توسط شرکت میکرو سافت به منظور پشتیبامی از.NET Framework طراحی و پیاده سازی شده.
ساختار گرامری مشابه ای بین جاوا و C# وجود داره ؛ هر دو اونا از برنامه سازی توزیع شده Distributed و از مدل شی ئ گرای یکسانی بهره مند هستن.
برای درک کامل جاوا باید دلایل به وجود آمدن آن و نیرو های شکل دهنده آن و میراثی که به ارث برده است رو درک کنیم. زبان برنامه نویسی جاوا هم مثل زبان های برنامه نویسی موفقی که قبل از اون مطرح شده؛ ترکیبی از بهترین عناصر میراث غنی خود است که با مفاهیمی که منحصر به این زبان است ادغام شده است.
اگر چه جاوا به طور تنگاتنگی با محیط اینترنت ارتباط داره اما لازمه به خاطر داشته باشید که که بیش از هر چیز یک زبان برنامه نویسی است.
ابداع؛توسعه و تکامل زبانها به دو دلیل رخ می دهد:
۱- برای تطبیق با محیط ها و کاربرد های در حال تغییر
۲- برای عملی ساختان موارد خاص و پیشرفته هنر برنامه سازی
پیشینیان زبان جاوا
زبان جاوا ارتباط تنگاتنگی با C++ دارد که به نوبه خودش؛ به طور مستقیم از زبان C مشتق شده است. بیشتر ویژگی های جاوا از این دو زبان به ارث رسیده است به طور مثال ساختار گرامری جاوا از C مشتق شده است.
زبان C++ هم بر بسیاری از ویژگی های شیئ گرایی Object Oriented جاوا تاثیر گذاشته است. علاوه بر این شکل گیری زبان جاوا در فرآیند “تصفیه و تطبیق” Refinement and Adaption ریشه داره که عموما در چند دهه اخیر در زبان های جدید رخ داده است.
دلیل هر یک از این نوآوری های مطرح در طراحی هر زبان؛ نیاز به حل مسائلی بوده که زبان های پیشین قادر به حلشون نبودن.
تولد زبان برنامه سازی نوین C
زبان برنامه سازی C دنیای کامپیوتر ها رو متحول کرد و تغییر اساسی در نگرش برنامه نویسی ایجاد کرد. طراحی و پیاده سازی زبان C نتیجه مستقیم نیاز به یک زبان ساختار یافته ؛ کادآمد و سطح بالا بود که بتونه جایگزین زبان اسمبلی در نوشتن برنامه های سیستمی بشه. زبان C هم مثل هر زبان دیگه ای تونست بین موارد زیر توازن نسبی ایجاد کنه:
سهولت استفاده
امنیت در مقابل بازدهی
استحکام در مقابل گسترش
برنامه سازان معمولا قبل از مطرح شدن C باید زبانی رو از بین زبانهای دیگه انتخاب می کردن که تنها یکی از خصوصیات گفته شده رو داشته باشه .مثلا زبان فرترنFORTRAN امکان نوشتن برنامه های نسبتا کارآمد برای کاربرد های علمی رو به ما میده اما این زبان برای نوشتن برنامه های سیستمی مناسب نیست یا با اینکه یادگیری بیسیکBASIC آسونه اما زبان قدرتمندی نیست و در ساختارش نقص داره. با استفاده از زبان اسمبلیAssembly می تونیم برنامه های بسیار کارآمد تولید کنیم اما یادگیری اون مشکله و به کار بردن اونم خیلی سخته علاوه بر این اشکال زدایی در آن هم دشوار و وقت گیره.
مشکل دیگه اینه که زبان هایی وثل بیسیک و کوبولCOBOL و فرترن بر اساس اصول ساختار یافته طراحی نشده اند و همه این زبان ها از دستور GOTO برای هدایت کنترل برنامه ها استفاده می کردند و در نتیجه برنامه هایی که با این زبان ها نوشته می شدند منجر به تولید کد اسپاگتی(حجم زیادی از انشعابات شرطی و غیر شرطی که درک برنامه رو سخت میکنه) می شدند.
گرچه زبانی مثل پاسکالPascal ساختار یافته است اما طراحی اون با هدف بازدهی و کارایی صورت نگرفته و فاقد ویژگی بود که بشه با اون برنامه های گسترده رو نوشت و علاوه بر این به دلیل استاندارد بودن ساختار گرامری اش قادر به نوشتن برنامه های سیستمی نیست.
در اوایل دهه ۷۰ میلادی انقلاب کامپیوتری فراگیر شده بود و نیاز به رسیدن به نرم افزار های بهتر؛برنامه سازان را به شدت برای تولید سریع اینگونه نرم افزار ها تحت فشار قرار میداد. در محافل آکادمیک هم همه نیروی برنامه سازان برای طراحی و پیاده سازی یک زبان بهتر به کار می رفت.
برنامه سازان برای اولین بار دستیابی نا محدودی به کامپیوتر ها داشتند و این امر آزادی عمل برای انجام هر آزمایشی رو به اونا میداد.
زبان برنامه نویسی C توسط دنیس ریچی طراحی و برای اولین بار در یک کامپیوتر PDP-11 تحت سیستم عامل یونیکس اجرا شد. این زبان نیز نتیجه فرآیندی بود که با زبان قدیمی تری به نامBCPLکه توسط مارتین ریچاردز طراحی شده بود؛ آغاز شده بود.
C++ گام بعدی
زبان برنامه نویسی C در اواخر دهه ۷۰ و اوایل دهه ۸۰ میلادی با زبان برنامه سازی غالب تبدیل شد و هنوز هم طرفداران مخصوص به خود را دارد. با این وجود سوالی که مطرح است این است که با در نظر گرفتن قابلیت های زیاد این زبان چرا نیاز به تولید یک زبان دیگر با وجود آمد؟ پاسخ این سوال پیچیدگی است.
در سرتاسر تاریخ برنامه سازی پیچیدگی رو به رشد برنامه ها؛ موجب مطرح شدن ضرورت روشهای بهتر برای مدیریت این پیچیدگی شده است.
روش برنامه سازی جدیدی به نام برنامه سازی شیئ گرا Object Oriented Program برای حل مشکل پیچیدگی ابداع شد.OOP نوعی متدلوژی برنامه سازی است که امکان سازماندهی برنامه های پیچیده را از طریق وراثت inheritance ؛ نهان سازی encapsulation و پلی مورفیزم فراهم می کند.
اگر چه C یکی از بزرگترین زبان های برنامه سازی جهان است اما توانایی محدودی جهت مدیریت پیچیدگی دارد. وقتی حجم برنامه ای از ۲۵۰۰۰ تا ۰۰۰/۱۰۰ سطر بیشتر می شود آنقدر پیچیده شده است که تسلط بر تمام آن مشکل است. C++ امکان حل این مشکل رو فراهم کرد.
BJarne StroustrupPowerPoint در سال ۱۹۷۹ وقتی در آزمایشگاه بل در نیوجرسی مشغول کار بودC++ را ابداع کرد و در ابتدا نام اونو C with classes گذاشت.
زمینه برای جاوا فراهم می شود
در اواخر دهه ۸۰ میلادی برنامه سازی شی ئ گرا با C++ فراگیر شد.
چون C++ بازدهی بالا و عناصر دارای سبک زبان Cرا با سبک شی ئ گرا ترکیب کرده بود؛ زبانی بود که میشد از اون برای ایجاد محدوده گسترده ای از برنامه ها استفاده کرد.
با این وجود مانند قبل نیرو هایی در حال ترکیب شدن هستند تا یا بار دیگه تکاملی در زبان های برنامه سازی ایجاد کنند.
ظهور جاوا
جاوا در سال ۱۹۸۱ توسط جیمز گاسلینگ ؛ پاتریک نوتون ؛ کریس وارث ؛ اد فرانگ و مایک شرایدن در شرکت سان میکرو سیستم ایجاد شد. نخستین نگارش اون پس از ۱۸ ماه کاری تولید شد .اسم این زبان در ابتداOaK بوداما در سال ۱۹۹۵ به جاوا تغییر کرد. در فاصله زمانی بین نخستین پیاده سازی OaK در پاییز سال ۱۹۹۲ و اعلام موجودیت جاوا در بهار سال ۱۹۹۵ افراد زیادی در طراحی و تکامل این زبان مشارکت داشتن.
جالبه بدونید که محرک اولیه برای آماده سازی جاوا اینترنت نبود بلکه در عوض محرک اصلی ؛ نیاز به یک زبان مستقل از محیطPlatform independent یا معماری خنثی بود که بتوننن از اون برای ایجاد نرم افزار های قابل استفاده در تجهیزات الکترونیکی خانگی مثل ماکرو فر و دستگاه های کنترل از راه دور ؛استفاده کنن.
می دونید که CPU هایی هستن که به عنوان کنترلر استفاده میشن؛ مشکل CوC++ و اکثر زبانهای دیگه اینه که طراحیشون طوری است که برای یک مقصد خاص کامپایل میشن. هر چند این امکان وجود داره کهبرنامه های C++ رو برای تقریبا هر CPUای کامپایل کرد اما این کار مستلزم داشتن یک کامپایلر خاص برای اون نوعCPU است.
تولید کنندگان زبان جاوا برای پیدا کردن راه حلی برای این مشکل کار بر روی زبانهای قابل انتقال و مستقل از محیط رو شروع کردن تا بتونن کدی رو تولید کنن تا در CPUهای مختلف تحت محیط های مختلف قابل اجرا باشه و این منجر به تولید جاوا شد.
همزمان با تولید جاوا عامل دوم و مهمتری نیز ایجاد شد که نقش زیادی در آینده جاوا داشت.این نیرو وب جهانی WW بود.هرچند وب جهانی همزمان با پیاده سازی جاوا شکل نگرفته بود اما این امکان وجود داشت که جاوا زبانی مهم و گمنام برای آماده سازی تجهیزات الکترونیکی باقی بمونه. با ظهور وب جهانی جاوا پیشرفت قابل ملاحظه ای کرد زیرا وب جهانی هم نیاز به برنامه های قابل انتقال داشت.
گفتیم جاوا شباهت های زیادی به CوC++دارد. طراحان جاوا می دونستن که استفاده از ساختار گرامری C و استفاده از میژگیهای شی ئ گراییC++ به خوبی برنامه نویسان با تجربه این دو زبان رو به جاوا جذب میکنه.
جاوا زبانی ست که بر ساسا نیازها و تجربیات کسانی که اونو طراحی و پیاده سازی کردن شکل گرفته پس این زبان؛ زبان برنامه سازان هست. جاوا پیوسته و یکپارچه است و کنترل نا محدودی رو در اختیار شما میذاره(به جز وحدودیت هایی که ممکنه اینترنت ایجاد کنه).اگه برنامه خوبی در جاوا بنویسید کامپایلر اونو منتقل میکنه اگه برنامه بدی بنویسید باز هم اونو منتقل میکنه به عبارت دیگه جاوا زبانی صرفا برای آموزش دیدن نیست این زبان برنامه نویسان حرفه ای است.
به دلیل شباهتهای جاوا باCو C++ اغلب به اشتباه تصور میشه که این زبان صرفا نگارش اینترنتی دو زبان ذکر شده است اما جاوا تفاوتهای فلسفی با آنها دارد.
ارتباط با C#
موفقیت جاوا بسیار مهمتر از اونه که نادیده گرفته بشه. شاید مهمترین مثال از تاثیر جاوا ؛ C# باشه. C# ارتباط تنگاتنگی با جاوا داره و توسط شرکت میکرو سافت به منظور پشتیبامی از.NET Framework طراحی و پیاده سازی شده.
ساختار گرامری مشابه ای بین جاوا و C# وجود داره ؛ هر دو اونا از برنامه سازی توزیع شده Distributed و از مدل شی ئ گرای یکسانی بهره مند هستن.