مرکز اقتصادی
مرکز اقتصادی یک شهر جهانی است که مرکز فعالیتهای تجاری و شرکتها میباشد. همچنین یک مرکز اقتصادی مقر بانکهای معروف جهان و یا بورسهای بزرگ است.

بازار بینالمللی
در پنجاه سال گذشته، گسترش مبادلات کالا آن هم تا این اندازه که فاصله و مسافت فرهنگها را به چند گام تبدیل کرده، به ذهن هیچ انسانی خطور نمیکرد. هر چند امروز همه این کم و بیش در همه جای دنیا اتفاق افتاده است. شعار خودکفایی، جای خود را به شعارهایی نظیر تلاش برای یافتن جایگاهی مناسب در بازار بینالمللی داده است. با توجه به این مسائل سازمان باید به صورت و شکلی از درک کامل محیط بازار بینالمللی برسند. این بازار در دو دهه اخیر تغییرات شگرفی داشته است که موجبات ایجاد فرصتها و موانع بسیاری شده است. حجم مبادلات بینالمللی در صنایع اتومبیل سازی، الکترونیک و غیره رشد چشمگیری داشته است. شرکتهای چند ملیتی علاوه بر گسترش فعالیتهای بازار یابی خود، امکانات تولید خود رد کشورهای مختلف را افزایش دادهاند که این گونه شرایط موجب ایجاد اقتصاد صنعتی در کشورهای جهان شده است و جهان را به سوی صنعتی شدن میکشاند. برخی کشورها صادرکنندگان عمده کالاهای صنعتی و سرمایه هستند. آنها مبادلات بسیاری با هم انجام میدهند و واردکنندگان مواد خام و کالاهای نیمه ساخته به شمار میآیند. همچنین این کشورها یا واردکنندگان بازار خوبی برای کالاهای صنعتی با ارزش افزوده کم و انواع گوناگون کالاهای مصرفیاند. هر چند بسیاری از کشورهای دنیا در تلاش هستند که از رقبا پیشی گیرند و بازار صادرات را به دست آورند.
سازمان تجارت جهانی
سازمان تجارت جهانی (به انگلیسی: World Trade Organization) (به شکل مخفف: WTO) یک سازمان بینالمللی است؛ که قوانین جهانی تجارت را تنظیم و اختلافات بین اعضا را حل و فصل میکند. اعضای سازمان تجارت جهانی کشورهایی هستند که موافقتنامههای (حدود ۳۰ موافقتنامه) این سازمان را امضا کردهاند. مقر سازمان تجارت جهانی در ژنو، سویس قرار دارد. تا مارس ۲۰۱۳، ۱۵۹ کشور عضو این سازمان شدهاند. تاجیکستان در حال حاضر جدیدترین عضو این سازمان محسوب میشود.
اهداف سازمان تجارت جهانی
اهدافی که سازمان تجارت جهانی برای خود تعریف کردهاست بدین شرح میباشد:
ارتقای سطح زندگی
تامین اشتغال کامل در کشورهای عضو
توسعه تولید و تجارت و بهرهوری بهینه از منابع جهانی
دستیابی به توسعه پایدار با بهرهبرداری بهینه از منابع
حفظ محیط زیست
افزایش سهم کشورهای در حال توسعه و کمتر توسعه یافته از رشد تجارت بینالمللی
اصول سازمان تجارت جهانی
این سازمان همچنین برای دستیابی به اهداف تعیین شده، اصولی را تدوین کردهاست که کشورهای عضو میبایست به این اصول پایبند باشند و درصورت پایبند نبودن، مجازاتهایی علیه این کشورها اعمال میشود. مهمترین این اصول عبارتاند از:
اصل عدم تبعیض و اصل دولت کاملة الوداد (به معنی (MOST FAVORED NATION (MFN) CLAUSE): طبق این اصل، اگر کشوری امتیاز بازرگانی یا تعرفهای را در مورد یکی از کشورهای عضو اعمال نماید، این امتیاز یا تعرفه میبایست در مورد تمام شرکای تجاری عضو سازمان تجارت جهانی تعمیم یابد. البته این اصل یک استثنا نیز دارد که به همگراییهای اقتصادی مانند اتحادیههای گمرکی بین چند کشور مربوط میشود. این استثنا بدین معناست که سازمان تجارت جهانی، سایر پیمانهای تجاری (مانند اتحادیه اروپا یا نفتا) را نیز به رسمیت میشناسد.
استفاده از محدودیتهای غیرتعرفهای در تجارت همچون سهمیهبندی و صدور پروانه واردات ممنوع است و کشورها تنها با استفاده از وضع تعرفههای گمرکی مجازند از صنایع داخلی حمایت نمایند.
پس از حذف موانع تجاری غیرتعرفهای، کشورها میبایست تعرفههای گمرکی خود را تثبیت نمایند و بهتدریج آن را کاهش دهند. البته این اصل نیز در مورد محصولات کشاورزی در کشورهایی که با مشکلات در پرداختها مواجه هستند، استثنا قایل شدهاست.
برای کمک به رقابت محصولات تولیدی در کشورهای در حال توسعه، برقراری نظام تعرفههای ترجیحی با هدف اعطای امتیازات تجاری به بعضی از فراوردههای این کشورها مجاز است.
کشورها مجاز به انجام هرگونه اقدامی که جنبه فروش زیرقیمت تمام شده (DUMPING) داشته باشد، نیستند.
لازم است کشورها در مورد کالاهای داخلی و وارداتی رفتار کاملاً یکسانی داشته باشند.
انجام مشورت در مورد سیاستهای بازرگانی با دیگر اعضا و حل وفصل اختلافات ناشی از روابط تجاری از طریق مذاکره.
ارکان سازمان تجارت جهانی
سازمان تجارت جهانی برای دستیابی به موافقتنامههای مورد تایید اعضا و نیز نظارت بر حسن انجام آنها از وجود ارکان مختلف تصمیمگیری، نظارتی، اجرایی و حقوقی بهره میبرد. این ارکان عبارتاند از: کنفرانس وزیران، شورای عمومی، رکن حل اختلاف، رکن بررسی خط مشی تجاری و شوراها.
کنفرانس وزیران
کنفرانس وزیران بالاترین رکن سازمان تجارت جهانی است و نمایندگان همه اعضا را دربر میگیرد. اختیارات کنفرانس وزیران عبارت است از: محقق ساختن کارکردهای سازمان، اتخاذ اقدامهای لازم در این راستا و تصمیمگیری در زمینه توافقنامههای تجارت چندجانبه در صورت درخواست هریک از اعضا.
جلسات کنفرانس وزیران حداقل هر دو سال یک بار تشکیل میشود. کنفرانس وزیران سازمان تجارت جهانی برای اولین بار در دسامبر سال ۱۹۹۶ در سنگاپور تشکیل شد. این کنفرانس همچنین در سالهای ۱۹۹۸ در ژنو، ۱۹۹۹ در سیاتل آمریکا، ۲۰۰۱ در دوحه قطر، ۲۰۰۳ در کنکان مکزیک و ۲۰۰۵ در هنگکنگ برگزار شد.
کنفرانس اول وزراWTO در سال ۱۹۹۶
کنفرانس افتتاحیه وزرا در سال ۱۹۹۵ در سنگاپور برگزار گردید. عدم توافق اقتصادهای کاملاً پیشرفته و در حال توسعه در این کنفرانس بر سر مسایل مطروحه عیان شد و به آنها عنوان " مسایل سنگاپور " را بخشید.
کنفرانس دوم وزراWTO در سال ۱۹۹۸
این کنفرانس در سوئیس برگزار شد.
کنفرانس سوم وزراWTO در سال ۱۹۹۹
این کنفرانس در سیاتل واشنگتن برگزار شد و به شکست انجامید تظاهرات گسترده و تلاش پلیس وگارد ملی برای کنترل جمعیت معترض توجه جهانیان را به خود جلب نمود.
کنفرانس چهارم وزراWTO در سال ۲۰۰۱
این کنفرانس در دوحه برگزار شد.
کنفرانس پنجم وزراWTO در سال ۲۰۰۳
این کنفرانس در کنکون مکزیکو و با هدف توافق برسر گفتگوهای دور دوحه انجام گرفت. ائتلاف کشور جنوب جی.۲ (به رهبری هند، چین و برزیل) با تقاضای شمالیها مبنی بر پذیرش به اصطلاح «مسایل سنگاپور» مخالفت کردند و خواستار پایان پرداخت یارانه کشاورزی در اتحادیه اروپایی و ایالات متحده شدند. مذاکرات بی هیچ نتیجهای متوقف شد.
کنفرانس ششم وزرا WTO در سال ۲۰۰۵
کنفرانس مذکور در هنگ کنگ و از ۱۳ دسامبر تا ۱۸ دسامبر سال ۲۰۰۵ برگزار گردید. اگر قرار بود مذاکرات دوحه پس از چهار سال پیشرفتی داشته باشد این کنفرانس بسیار جالبی بود این روند میشد به نتیجهگیری از دور جدید مذاکرات در سال ۲۰۰۶ منتهی شود. دراین کنفرانس کشورها تصمیم گرفتند تا پایان سال ۲۰۱۳ هر گونه یارانه برای صادرات محصولات کشاوری خود را قطع کنند و تا پایان سال ۲۰۰۶ نیز پرداخت یارانه برای صادرات پنبه را متوقف سازند. بعلاوه بحث کشورهای در حال توسعه این بود که باید به کالاهای بدون تعرفه و آزاد از کشورهای دارای کمترین سطح توسعه هم دسترسی داشته باشند. همه کالاها به جز تسلیحات نظامی از سوی اتحادیه اروپایی تا سقف ۳ درصد از خطوط تعرفهای معاف شدند. سایر مسایل مهم نیز به مذاکرات بیشتر وکامل شدن در پایان سال ۲۰۰۶ موکول شدند.
شورای عمومی
شورای عمومی، عالیترین رکن تصمیمگیری بعد از کنفرانس وزیران در سازمان تجارت جهانی است که درباره موضوعات روزمره و کارکردهای این سازمان نظر میدهد. مقر این شورا در ژنو قرار دارد و معمولاً هردو ماه یک بار تشکیل جلسه میدهد. شرکتکنندگان در جلسات شورای عمومی را نمایندگان همه اعضا (معمولاً سفرا یا معادل آنها) تشکیل میدهند. شورای عمومی مستقیماً به کنفرانس وزیران گزارش میدهد.
رکن حل اختلاف
ممکن است یک دولت عضو سازمان مدعی شود که عضو دیگری معاهده یا تعهدی را برخلاف مصالح وی نقض نمودهاست. در چنین شرایطی، شورای عمومی بهعنوان رکن حل اختلاف تشکیل جلسه میدهد.
رکن بررسی خط مشی تجاری
شورای عمومی، همچنین میتواند بهعنوان رکن بررسی خط مشی تجاری تشکیل جلسه دهد. این رکن ریاست، قوانین و رویه خاص خود را دارد و به تجدیدنظر در سیاستهای تجاری اعضا برای آماده کردن آن در مکانیزم بازنگری در سیاست تجاری میپردازد. در ابتدای هرسال ریاست و دو معاونت این رکن از بین اعضا برای یک سال انتخاب میگردند.
شوراها
شوراها برای اجرای وظایف سازمان تجارت جهانی و عموماً زیر نظر شورای عمومی تشکیل میشوند. این شوراها بهصورت تخصصی وظیفه بررسی و تدوین موافقتنامههای عمومی را بر عهده دارند. این شوراها عبارتاند از:
شورای تجارت کالا: شورای تجارت کالا وظیفهٔ بررسی و نظارت بر موافقتنامههای چندجانبه مربوط به تجارت کالا را برعهده دارد. سیزده موافقتنامه در زمینهٔ تجارت کالا به امضای اعضای سازمان تجارت جهانی رسیدهاست که مهمترین آنها، موافقتنامه عمومی تعرفه و تجارت و توافقات مربوط به آن میباشد. این شورا ۱۰ کمیته دارد که هرکدام در زمینه خاصی فعالیت میکند (مانند کشاورزی، دستیابی به بازار، یارانهها، اقدامات ضدفروش زیر قیمت تمام شده و غیره).
شورای تجارت خدمات: بررسی و نظارت بر موافقتنامه عمومی تجارت خدمات برعهدهٔ شورای تجارت خدمات است. شرکت در این شورا برای تمام اعضای سازمان تجارت جهانی آزاد است. کمیته خدمات مالی، کمیته تعهدات مشخص و گروههای کاری آیین نامههای داخلی و قواعد موافقتنامه عمومی تجارت خدمات، جزو ارکان متمم حاضر در این شوراست.
شورای جنبههای مرتبط با تجارت حقوق مالکیت فکری: حقوق مالکیت معنوی، حقوقی است که افراد بهواسطه خلق اندیشهها و ایدهها از آن برخوردارند. این شورا وظیفهٔ بررسی و نظارت بر کارکردهای موافقتنامههای مربوط به مالکیت معنوی را برعهده دارد.
کمیتهها و سایر بدنههای متمم: سه کمیتهٔ اصلی در سازمان تجارت جهانی وجود دارد:
کمیته تجارت و توسعه
کمیته محدودیتهای تراز پرداختها
کمیته بودجه، مالی و تشکیلاتی
وظایف این کمیتهها بر مبنای موافقتنامههای تجاری چندجانبه و مصوبات شورای عمومی تعریف میشود. عضویت در این کمیتهها برای تمامی اعضای سازمان تجارت جهانی آزاد است.
همچنین کمیتههای تجارت و محیط زیست و موافقتنامههای منطقهای تجاری نیز زیر نظر شورای عمومی فعالیت میکنند.
عضویت در سازمان تجارت جهانی
عضویت در سازمان تجارت جهانی مستلزم پذیرفتن اصول و معاهدات متعددی است که مورد قبول کشورهای عضو قرار گرفتهاست. این مراحل شامل تقاضای عضویت، پذیرش درخواست (الحاق به عنوان عضو ناظر)، تدوین گزارش سیاستهای تجاری کشور، تشکیل گروه کاری الحاق و در نهایت مذاکرات دوجانبه و چندجانبهای بهمنظور تعیین شرایط عضویت و حصول توافق برای الحاق میباشد. هم اکنون سازمان تجارت جهانی ۱۵۳ عضو دارد (نزدیک به تمامی ۱۲۳ کشوری که اجلاس اروگوئه شرکت کردند، امروز در این سازمان عضو دائم شدهاند) بیست و هفت بخش از اتحادیه اروپا نیز به عنوان نمایندگان اتحادیه حضور دارند اعضا میبایست در طی مراوداتی با دیگر کشورهای عضو تعامل داشته باشند و لزوم عضویت در سازمان این امر را تایید نمیکند که کشورها میتوانند در منطقه اقلیمی خود خودکفا باشند و یا به استقلال دیگر کشورها صدمهای وارد بیاورند.
براساس گزارش رویترز در ژوئیه ۲۰۱۲، کشورهایی که عضو سازمان تجارت جهانی نیستند شامل ایران، عراق، لیبی، سوریه، بلاروس، الجزایر، بوسنی، صربستان، سودان، ازبکستان و قزاقستان میشود.
عضویت ایران در سازمان تجارت جهانی
در حال حاضر اقتصاد دنیا به سازمان جهانی تجارت پیوسته است و این بدان معناست که ایران و چند کشور نحیف و کوچک از نظر اقتصادی و سیاسی هنوز به بزرگترین سازمان تصمیم گیر در خصوص فرایندهای تجاری در جهان نپیوستهاند و حق تصمیم گیری و قدرت تصمیم سازی در ساختار اقتصادی جهانی را دارا نیستند. سازمان تجارت جهانی امروز یکی از پایههای جهانی شدن، به ویژه در حوزه اقتصاد به شمار میرود. بدین سان، کشورهای مختلف تلاش میکنند برای تسریع روند جهانی شدن و استفاده از منافع آن، این سازمان بینالمللی را توسعه داده و جایگاهش را ارتقاء بخشند. از دیگر سو کشورهایی که عضو این سازمان نیستند نیز، تلاش مینمایند تا به عضویت آن درآمده و با استفاده از امتیازات عضویت در این نهاد بینالمللی به توسعه اقتصادی و صنعتی دست یابند.
یکی از این کشورها جمهوری اسلامی ایران است که از سال۱۹۹۵از این سازمان درخواست عضویت ناظر کرده و به مدت ده سال پشت درهای آن به انتظار نشسته است. با اینکه کشور ایران در موافقتنامههای قبلی حوزه تجارت مانند سازمان جهانی تجارت و گات، حضور تقریباً خوبی داشتهاست اما اکنون در خصوص سازمان تجارت جهانی این مساله تکرار نگشته و اکنون از متقاضیان الحاق به شمار میآید.اولین درخواست ایران برای پیوستن به سازمان تجارت جهانی در ۱۹ ژوئیه ۱۹۹۶ به این سازمان ارسال شد. ایران در ۲۶ مه ۲۰۰۵ به عنوان عضو ناظر سازمان تجارت جهانی پذیرفته شد. گروه کاری ایران برای پیوستن به این سازمان هنوز تشکیل نشدهاست. ایران در آبان ۱۳۸۸ متن گزارش رژیم تجاری خود را تقدیم دبیرخانه سازمان تجارت جهانی نمود. بعد از آن، گزارش رژیم تجاری ایران در میان اعضای سازمان تجارت جهانی توزیع گردید و اعضای سازمان تجارت جهانی سئوالات خود را از ایران بیان میدارند که سری اول سئوالات که شامل ۷۰۰ سئوال میباشد به وزارت بازرگانی ایران د اسفند ۱۳۸۸ ارسال گشت. اما در خصوص رئیس گروه کاری الحاق ایران به سازمان تجارت جهانی، با آنکه توافق بر سر رئیس گروه کاری الحاق ایران صورت گرفتهاست، ایالات متحده آمریکا از قرار گرفتن تعیین رئیس گروه کاری الحاق در دستور جلسه شورای عمومی سازمان تجارت جهانی جلوگیری مینماید.
پیشینه تدوین گزارش رژیم تجاری ایران
اولین ویرایش یادداشت نظامنامه تجارت خارجی (گزارش رژیم تجاری ایران) در سال ۱۳۷۸ تهیه شده که طی سنوات بعد متناسب با تغییرات در قوانین و مقررات گزارش اولیه به طور مکرر مورد بازبینی و تکمیل قرار گرفتهاست. دو ماه پس از پذیرش درخواست الحاق ایران توسط شورای عمومی سازمان جهانی تجارت در پنجم خردادماه سال ۱۳۸۴، آخرین ویرایش گزارش رژیم تجاری جهت بررسی و ارائه نظرات دستگاهها، انجام بررسیها و اعمال تغییرات و تعدیلات لازم در سال ۸۵ به دولت ارائه شد. بررسی درخواست عضویت ایران در سازمان جهانی تجارت ۹ سال به طول انجامید. به نحوی که تا پنج سال تقاضای عضویت ایران در شورای عمومی سازمان مطرح نشد و پس از طرح نیز تا چهار سال اجماع در این زمینه صورت نگرفت و در نهایت پس از ۹ سال درخواست ایران در پنج خرداد ۸۴ با اجماع کشورها مواجه و پذیرفته شد و ایران به عنوان عضو ناظر پذیرفته شد. تمام اینها در حالی است که میانگین زمان عضویت دیگر کشورهایی که سال ۱۹۹۵ به این سو، در سازمان عضو شدهاند چیزی حدود هفت سال بودهاست.
مراحل الحاق ایران به سازمان تجارت جهانی
ارائه درخواست الحاق ایران به دبیرخانه سازمان تجارت جهانی
تصویب درخواست الحاق ایران در شورای عمومی و تشکیل گروه کاری الحاق ایران
ارائه نظامنامه رژیم تجاری ایران به سازمان تجارت جهانی.
بررسی و پرسش در مورد گزارش و نظامنامه از ایران و همچنین بررسی شرایط و ضوابط مورد نظر که طی اولین نشست بعدی انجام خواهد گرفت
در این مرحله که مهمترین مرحله نیز محسوب میگردد، ایران با دیگر اعضا وارد مذاکرات چند جانبه میشود و به این ترتیب شرایط و ضوابطی که ایران ملزم به رعایت آنها در صورت عضو شدن در سازمان است، مورد بررسی قرار میگیرد.
در مرحله ششم که بیشتر اوقات در حین مرحله پیشین انجام میگیرد، مذاکرات دو جانبه بین ایران و دیگر اعضا صورت میگیرد که باید منجر به توافقی محکم گردد. این توافقات شامل تعهدات و امتیازاتی است که بایست بین کشورها رعایت گردد.
نتایج مذاکرات ایران در دو مرحله آخر شامل سه سند جداگانه خواهد بود که باید در نهایت به تصویب نهایی اعضای کارگروه برسد.
سند اول شامل خلاصه توافقات و شرایط پذیرش عضویت است.
سند دوم شامل خلاصه مذاکرات بین ایران و دیگر کشورهاست.
سند سوم شامل خلاصه مذاکرات دوجانبه بین ایران و کشورهای عضو دیگر است.
ودست آخر در مرحله ششم گزارشات نهایی به شورای عمومی سازمان ارایه و عضویت قطعی میگردد. قابل توجهاست که تمامی اسناد مربوط به الحاق هر کشور به سازمان جهانی تجارت در تمامی مراحل مورد بررسی در کارگروه، محرمانه بوده و تنها پس از تصویب شورای عمومی این سازمان قابل انتشار است. پس از تصویب نهایی اسناد الحاقی ایران به سازمان تجارت جهانی در شورای عمومی یا کنفرانس وزیران این سازمان، سه ماه به ایران مهلت داده میشود تا مصوبه شورای عمومی سازمان تجارت جهانی را در مجلس به تصویب برساند. پس از گذشت مهلت ۳۰ روزه، دولت باید این تائیدیه را به اطلاع دبیرخانه این سازمان برساند. پس از گذشت این مراحل، ایران به عضویت کامل و دائم در سازمان تجارت جهانی در خواهد آمد.
انتقادها
به عقیدهٔ مخالفان برنامههای سازمان تجارت جهانی، این سازمان، تریبونی است که از طریق آن کشورها میتوانند خواستهای شرکتهای خود را به کرسی بنشانند. هیچ کشوری به اندازهٔ امریکا در استفاده از سازمان تجارت جهانی برای گشودن بازارهای خارجی و دفاع از صنایع داخلیاش فعال نبودهاست. این سازمان بدون توجه به حقوق کارگران و حفظ محیط زیست، از قدرت خود برای واداشتن کشورها (ازجمله آمریکا) به فسخ سایر موافقت نامهها و لغو قوانین ملی (از همه معروفتر لغو قانون مربوط به حمایت از لاک پشتهای دریایی در خطر انقراض) به عنوان بخشی از مسئولیتاش استفاده میکند، با این استدلال که چنین «محدودیتهایی» موانعی در مقابل تجارت جهانی هستند. چنین مواضعی است که سازمان تجارت جهانی را نزد طرفداران محیط زیست و فعالان حقوق کارگری نامحبوب کردهاست. متن صفحه.
شاپور رواسانی معتقد است که دولتهای سرمایه داری استعماری در تلاش برای توسعه سلطه خود در زمینه تجارت و مبادله کالا سازمان تجارت جهانی را به صورت دستگاهی پدید آوردند که به کمک آن انحصارات بزرگ و دولتهای سرمایه داری استعماری میتوانند به صورت قانونی مبادله کالا و انتقال سرمایههای پولی در همه کشورها را قبضه نمایند و کشورهایی که عضویت در این سازمان را میپذیرند از نظر اقتصادی در همه زمینههای تجاری، تولیدی، و مالی تحت کنترل و نظارت کامل و شامل انحصارات بزرگ و دولتهای سرمایه داری استعماری قرار میگیرند و استقلال سیاسی آنها پوستهای است که مغز و محتوایی ندارد.
شرکتهای فراملیتی و نهادهای مالی طرفهای عمدهٔ ذینفع از قوانین و سازو کارهای اجرایی هستند که نهادهای مالی جهانی را رواج میدهند، گرچه این سیاستها را به عنوان منافع تمام شهروندان جهان عرضه میکنند. مقاومت در برابر پیامدهای غالباً واپس گرایانهٔ چنین سیاستهایی آشکارتر و سازمان یافتهتر شدهاست.
علم اقتصاد
علم اقتصاد (در انگلیسی Economics)، شاخهای از علوم اجتماعی است که به تحلیل تولید، توزیع و مصرف کالاها و خدمات میپردازد.
کانون توجه دانش اقتصاد بر این است که عوامل اقتصادی چگونه رفتار و تعامل میکنند و اقتصادهای مختلف چگونه کار میکنند. در این راستا، یک تقسیمبندی اولیه کتابهای پایهای اقتصاد، اقتصاد خرد در برابر اقتصاد کلان است. اقتصاد خرد، رفتار عوامل پایهای اقتصاد، شامل عوامل فردی مانند خانوارها و شرکتها و یا خریداران و فروشندگان را بررسی میکند. در مقابل اقتصاد کلان، کلیت اقتصاد و عوامل موثر بر آن شامل بیکاری، تورم، رشد اقتصادی و سیاست پولی و مالی را تحلیل میکند.
دیگر تقسیم بندیهای رایج علم اقتصاد، این رشته را به اقتصاد اثباتی (به انگلیسی: positive economics) (تعریف کننده "آنچه هست") در برابر اقتصاد هنجاری (به انگلیسی: normative economics) (دفاع از "آنچه که باید باشد")؛ اقتصاد نظری در مقابل اقتصاد کاربردی؛ اقتصاد عقلانی در برابر اقتصاد رفتاری؛ و اقتصاد جریان اصلی یا متداول (به انگلیسی: mainstream economics) (اقتصاد ارتدوکس که بیشتر با پیوند میان عقلانیت، فردگرایی و تعادل سروکار دارد) و اقتصاد دیگراندیش (به انگلیسی: heterodox economics) (که رادیکال است و با پیوند میان نهادها، تاریخ و ساختار اجتماعی سروکار دارد).
تحلیل اقتصادی در تمامی ابعاد جامعه کاربرد دارد، از بازرگانی، دارایی، مراقبت بهداشتی گرفته تا موضوعات متنوعی از قبیل جرم و جنایت، آموزش و پرورش، خانواده، حقوق، سیاست، مذهب، نهادهای اجتماعی، جنگ، و علوم پایه. در ابتدای شروع قرن بیست و یکم، از گسترش دامنه اقتصاد در علوم اجتماعی دیگر بعنوان امپریالیسم اقتصاد تعبیر شده است. در یکی دو دهه اخیر برخی از اقتصادددانان برای تاکید بیشتر بر پایدار نگاه داشتن محیط زیست شاخه اقتصاد محیط زیست تاسیس کردهاند و نیز مطالعاتی را در زمینه اقتصاد بومشناختی (به انگلیسی: Ecological economics)صورت دادهاند.
ریشه لغوی
واژه اقتصاد (به انگلیسی: economy) از واژه οἰκονομία (اُیکُنُمیا) در زبان یونان باستان گرفته شده که خود از ترکیب دو کلمه οἶκος (اُیکُس به معنای خانواده) و νόμος (نُمُس به معنای روش یا قانون) حاصل شده است. این دو کلمه روی هم معنای «قواعد خانه (خانوار)»را میدهند.
تاریخچه نام
اقتصاد سیاسی نام سنتی این رشته است که آنتوان دو مونکرتین نخستبار آن را عنوان کتاب خود ساخت.. این سنت تا قرن نوزدهم ادامه یافت، چنانکه جان استوارت میل کتابش را تحت عنوان «مبانی اقتصاد سیاسی» و دیوید ریکاردو تحت عنوان «اصول اقتصاد سیاسی و مالیت ستانی» نوشت. حتی مارکس که موضعی تهاجمی نسبت به دانش اقتصاد داشت کتابش را «نقد اقتصاد سیاسی» نام نهاد.
اما اقتصاددانان در اواخر قرن نوزدهم واژه "اقتصاد" (به انگلیسی: economics) را بعنوان فرم کوتاهتر "علوم اقتصادی" (به انگلیسی: economic science) پیشنهاد کردند تا از دلالت ضمنی این واژه بر منافع سیاسی محدود جلوگیری کرده باشند و همچنین به این واژه صورتی مشابه واژگان دیگر علوم مانند "ریاضیات" (به انگلیسی: mathematics)، "اخلاق" (به انگلیسی: ethics) و مانند آنها ببخشند.
تعاریف
تعاریف متفاوتی برای علم اقتصاد وجود دارد. برخی از تفاوتها بازتاب دهنده تکامل دیدگاهها درباره موضوع اقتصاد و یا دیدگاههای مختلف در میان اقتصاددانان است. آدام اسمیت در سال ۱۷۷۶ چیزی که در آن روزگار اقتصاد سیاسی خوانده میشد را اینگونه تعریف کرده است:
شاخهای از دانش یک دولتمرد یا قانونگزار با اهداف دوگانه فراهم کردن درآمد سرشار و معاش خوب برای مردم ... و تامین کردن درآمد برای دولت برای هزینه کردن در خدمات عمومی.
ژان باپتیست سه در ۱۸۰۳، همزمان با جدا کردن علم اقتصاد از کاربرد آن در سیاستگزاری عمومی (به انگلیسی: public policy)، آن را بعنوان علم تولید، توزیع و مصرف ثروت تعریف میکند. توماس کارلایل تاریخدان انگلیسی اصطلاح "دانش کسل کننده" را بعنوان صفتی طعنه آمیز برای اقتصاد کلاسیک وضع کرد، که در این زمینه بیشتر به تحلیل بدبینانه مالتوس ارتباط پیدا میکرد. جان استیوارت میل اقتصاد را در بستری اجتماعی بصورت ذیل تعریف میکند:
علمی که قوانین پدیدههایی در جامعه را دنبال میکند که از کارهای مختلف نوع بشر برای تولید ثروت برمیخیزد، تا جائی که این پدیدهها بوسیله تعقیب هدف دیگری متعین نشوند.
آلفرد مارشال در کتاب خود اصول علم اقتصاد (۱۸۹۰) تعریفی ارائه میدهد که تاکنون نیز ذکر شده است و تحلیل اقتصادی را از مقوله ثروت فراتر میبرد و از سطحی اجتماعی به سطح اقتصاد خرد میکشاند:
اقتصاد، مطالعه انسان است در کسب و کار معمولیاش در زندگی. اقتصاد به کاوش در این میپردازد که چگونه انسان درآمدش را کسب و آن را مصرف میکند. بنابراین، از یک جنبه مطالعه ثروت است و از جنبه مهم دیگر، بخشی از مطالعه خود انسان است.
لیونل رابینز اقتصاددان انگلیسی به تعریف مفهومی از اقتصاد پرداخت که "شاید مقبولترین تعریف جاری از اقتصاد باشد:
اقتصاد دانشی است که رفتار انسان را در رابطه با اهداف و وسائل کمیابی که قابلیت استفادههای دیگری نیز دارند، مطالعه میکند.
رابینز این تعریف را بعنوان تعریفی میشناسد که نه طبقه بندی کننده، "بمعنای انتخاب انواع معینی از رفتار"، بلکه بیشتر تحلیلی، بمعنای "تمرکز بر جنبههای مشخصی از رفتار است که تحت تاثیر کمیابی تحمیل میشوند".
برخی از نظراتی که متعاقباً درباره این تعریف ابراز شده، آن را بیش از حد گسترده و ناتوان از محدود کردن موضوع به تحلیل بازارها می دانند. به هرحال، از دهه ۱۹۶۰، به دلیل اینکه تئوری بیشینه ساختن رفتار (به انگلیسی: maximizing behavior) و مدلهای انتخاب عقلائی، دامنه علم اقتصاد را به حوزهها و موضوعاتی گسترش داد که قبلاً بعنوان رشتههایی مجزا تلقی میشدند، اینگونه نظرات و انتقادات فروکش کردند.
گری بکر، یکی از گسترش دهندگان علم اقتصاد به حوزههایی نوین، رویکرد خود را بعنوان "ادغام فرضیههای تئوری بیشینه ساختن رفتار، ترجیحات ثابت (به انگلیسی: stable preferences) و تعادل بازار که بصورتی بی ملاحظه و مصمم بکار گرفته میشد" تعریف میکند. یک تفسیر، این تعریف را تبدیل اقتصاد به یک رویکرد به جای یک موضوع علمی خوانده است؛ رویکردی که با این حال از خاص گرایی زیادی در زمینه "فرایند انتخاب و نوع تعامل اجتماعی که این تحلیل دربرمیگیرد" برخوردار است. منبع همان تفسیر، سلسلهای از تعاریف اقتصاد در کتابچههای اقتصادی را بررسی میکند و نتیجه میگیرد که فقدان توافق مورد نیاز، تاثیری بر خود موضوع (یعنی علم اقتصاد) که کتابچهها به آن پرداختهاند ندارد. بطور کلی تر در بین اقتصاددانان این نظر مطرح میشود که ارائه تعریفی خاص بیشتر بازتاب دهنده مسیری است که بنظر پدیدآورنده آن علم اقتصاد در آن تکامل مییابد و یا باید تکامل یابد.
مرکز اقتصادی یک شهر جهانی است که مرکز فعالیتهای تجاری و شرکتها میباشد. همچنین یک مرکز اقتصادی مقر بانکهای معروف جهان و یا بورسهای بزرگ است.

بازار بینالمللی
در پنجاه سال گذشته، گسترش مبادلات کالا آن هم تا این اندازه که فاصله و مسافت فرهنگها را به چند گام تبدیل کرده، به ذهن هیچ انسانی خطور نمیکرد. هر چند امروز همه این کم و بیش در همه جای دنیا اتفاق افتاده است. شعار خودکفایی، جای خود را به شعارهایی نظیر تلاش برای یافتن جایگاهی مناسب در بازار بینالمللی داده است. با توجه به این مسائل سازمان باید به صورت و شکلی از درک کامل محیط بازار بینالمللی برسند. این بازار در دو دهه اخیر تغییرات شگرفی داشته است که موجبات ایجاد فرصتها و موانع بسیاری شده است. حجم مبادلات بینالمللی در صنایع اتومبیل سازی، الکترونیک و غیره رشد چشمگیری داشته است. شرکتهای چند ملیتی علاوه بر گسترش فعالیتهای بازار یابی خود، امکانات تولید خود رد کشورهای مختلف را افزایش دادهاند که این گونه شرایط موجب ایجاد اقتصاد صنعتی در کشورهای جهان شده است و جهان را به سوی صنعتی شدن میکشاند. برخی کشورها صادرکنندگان عمده کالاهای صنعتی و سرمایه هستند. آنها مبادلات بسیاری با هم انجام میدهند و واردکنندگان مواد خام و کالاهای نیمه ساخته به شمار میآیند. همچنین این کشورها یا واردکنندگان بازار خوبی برای کالاهای صنعتی با ارزش افزوده کم و انواع گوناگون کالاهای مصرفیاند. هر چند بسیاری از کشورهای دنیا در تلاش هستند که از رقبا پیشی گیرند و بازار صادرات را به دست آورند.
سازمان تجارت جهانی
سازمان تجارت جهانی (به انگلیسی: World Trade Organization) (به شکل مخفف: WTO) یک سازمان بینالمللی است؛ که قوانین جهانی تجارت را تنظیم و اختلافات بین اعضا را حل و فصل میکند. اعضای سازمان تجارت جهانی کشورهایی هستند که موافقتنامههای (حدود ۳۰ موافقتنامه) این سازمان را امضا کردهاند. مقر سازمان تجارت جهانی در ژنو، سویس قرار دارد. تا مارس ۲۰۱۳، ۱۵۹ کشور عضو این سازمان شدهاند. تاجیکستان در حال حاضر جدیدترین عضو این سازمان محسوب میشود.
اهداف سازمان تجارت جهانی
اهدافی که سازمان تجارت جهانی برای خود تعریف کردهاست بدین شرح میباشد:
ارتقای سطح زندگی
تامین اشتغال کامل در کشورهای عضو
توسعه تولید و تجارت و بهرهوری بهینه از منابع جهانی
دستیابی به توسعه پایدار با بهرهبرداری بهینه از منابع
حفظ محیط زیست
افزایش سهم کشورهای در حال توسعه و کمتر توسعه یافته از رشد تجارت بینالمللی
اصول سازمان تجارت جهانی
این سازمان همچنین برای دستیابی به اهداف تعیین شده، اصولی را تدوین کردهاست که کشورهای عضو میبایست به این اصول پایبند باشند و درصورت پایبند نبودن، مجازاتهایی علیه این کشورها اعمال میشود. مهمترین این اصول عبارتاند از:
اصل عدم تبعیض و اصل دولت کاملة الوداد (به معنی (MOST FAVORED NATION (MFN) CLAUSE): طبق این اصل، اگر کشوری امتیاز بازرگانی یا تعرفهای را در مورد یکی از کشورهای عضو اعمال نماید، این امتیاز یا تعرفه میبایست در مورد تمام شرکای تجاری عضو سازمان تجارت جهانی تعمیم یابد. البته این اصل یک استثنا نیز دارد که به همگراییهای اقتصادی مانند اتحادیههای گمرکی بین چند کشور مربوط میشود. این استثنا بدین معناست که سازمان تجارت جهانی، سایر پیمانهای تجاری (مانند اتحادیه اروپا یا نفتا) را نیز به رسمیت میشناسد.
استفاده از محدودیتهای غیرتعرفهای در تجارت همچون سهمیهبندی و صدور پروانه واردات ممنوع است و کشورها تنها با استفاده از وضع تعرفههای گمرکی مجازند از صنایع داخلی حمایت نمایند.
پس از حذف موانع تجاری غیرتعرفهای، کشورها میبایست تعرفههای گمرکی خود را تثبیت نمایند و بهتدریج آن را کاهش دهند. البته این اصل نیز در مورد محصولات کشاورزی در کشورهایی که با مشکلات در پرداختها مواجه هستند، استثنا قایل شدهاست.
برای کمک به رقابت محصولات تولیدی در کشورهای در حال توسعه، برقراری نظام تعرفههای ترجیحی با هدف اعطای امتیازات تجاری به بعضی از فراوردههای این کشورها مجاز است.
کشورها مجاز به انجام هرگونه اقدامی که جنبه فروش زیرقیمت تمام شده (DUMPING) داشته باشد، نیستند.
لازم است کشورها در مورد کالاهای داخلی و وارداتی رفتار کاملاً یکسانی داشته باشند.
انجام مشورت در مورد سیاستهای بازرگانی با دیگر اعضا و حل وفصل اختلافات ناشی از روابط تجاری از طریق مذاکره.
ارکان سازمان تجارت جهانی
سازمان تجارت جهانی برای دستیابی به موافقتنامههای مورد تایید اعضا و نیز نظارت بر حسن انجام آنها از وجود ارکان مختلف تصمیمگیری، نظارتی، اجرایی و حقوقی بهره میبرد. این ارکان عبارتاند از: کنفرانس وزیران، شورای عمومی، رکن حل اختلاف، رکن بررسی خط مشی تجاری و شوراها.
کنفرانس وزیران
کنفرانس وزیران بالاترین رکن سازمان تجارت جهانی است و نمایندگان همه اعضا را دربر میگیرد. اختیارات کنفرانس وزیران عبارت است از: محقق ساختن کارکردهای سازمان، اتخاذ اقدامهای لازم در این راستا و تصمیمگیری در زمینه توافقنامههای تجارت چندجانبه در صورت درخواست هریک از اعضا.
جلسات کنفرانس وزیران حداقل هر دو سال یک بار تشکیل میشود. کنفرانس وزیران سازمان تجارت جهانی برای اولین بار در دسامبر سال ۱۹۹۶ در سنگاپور تشکیل شد. این کنفرانس همچنین در سالهای ۱۹۹۸ در ژنو، ۱۹۹۹ در سیاتل آمریکا، ۲۰۰۱ در دوحه قطر، ۲۰۰۳ در کنکان مکزیک و ۲۰۰۵ در هنگکنگ برگزار شد.
کنفرانس اول وزراWTO در سال ۱۹۹۶
کنفرانس افتتاحیه وزرا در سال ۱۹۹۵ در سنگاپور برگزار گردید. عدم توافق اقتصادهای کاملاً پیشرفته و در حال توسعه در این کنفرانس بر سر مسایل مطروحه عیان شد و به آنها عنوان " مسایل سنگاپور " را بخشید.
کنفرانس دوم وزراWTO در سال ۱۹۹۸
این کنفرانس در سوئیس برگزار شد.
کنفرانس سوم وزراWTO در سال ۱۹۹۹
این کنفرانس در سیاتل واشنگتن برگزار شد و به شکست انجامید تظاهرات گسترده و تلاش پلیس وگارد ملی برای کنترل جمعیت معترض توجه جهانیان را به خود جلب نمود.
کنفرانس چهارم وزراWTO در سال ۲۰۰۱
این کنفرانس در دوحه برگزار شد.
کنفرانس پنجم وزراWTO در سال ۲۰۰۳
این کنفرانس در کنکون مکزیکو و با هدف توافق برسر گفتگوهای دور دوحه انجام گرفت. ائتلاف کشور جنوب جی.۲ (به رهبری هند، چین و برزیل) با تقاضای شمالیها مبنی بر پذیرش به اصطلاح «مسایل سنگاپور» مخالفت کردند و خواستار پایان پرداخت یارانه کشاورزی در اتحادیه اروپایی و ایالات متحده شدند. مذاکرات بی هیچ نتیجهای متوقف شد.
کنفرانس ششم وزرا WTO در سال ۲۰۰۵
کنفرانس مذکور در هنگ کنگ و از ۱۳ دسامبر تا ۱۸ دسامبر سال ۲۰۰۵ برگزار گردید. اگر قرار بود مذاکرات دوحه پس از چهار سال پیشرفتی داشته باشد این کنفرانس بسیار جالبی بود این روند میشد به نتیجهگیری از دور جدید مذاکرات در سال ۲۰۰۶ منتهی شود. دراین کنفرانس کشورها تصمیم گرفتند تا پایان سال ۲۰۱۳ هر گونه یارانه برای صادرات محصولات کشاوری خود را قطع کنند و تا پایان سال ۲۰۰۶ نیز پرداخت یارانه برای صادرات پنبه را متوقف سازند. بعلاوه بحث کشورهای در حال توسعه این بود که باید به کالاهای بدون تعرفه و آزاد از کشورهای دارای کمترین سطح توسعه هم دسترسی داشته باشند. همه کالاها به جز تسلیحات نظامی از سوی اتحادیه اروپایی تا سقف ۳ درصد از خطوط تعرفهای معاف شدند. سایر مسایل مهم نیز به مذاکرات بیشتر وکامل شدن در پایان سال ۲۰۰۶ موکول شدند.
شورای عمومی
شورای عمومی، عالیترین رکن تصمیمگیری بعد از کنفرانس وزیران در سازمان تجارت جهانی است که درباره موضوعات روزمره و کارکردهای این سازمان نظر میدهد. مقر این شورا در ژنو قرار دارد و معمولاً هردو ماه یک بار تشکیل جلسه میدهد. شرکتکنندگان در جلسات شورای عمومی را نمایندگان همه اعضا (معمولاً سفرا یا معادل آنها) تشکیل میدهند. شورای عمومی مستقیماً به کنفرانس وزیران گزارش میدهد.
رکن حل اختلاف
ممکن است یک دولت عضو سازمان مدعی شود که عضو دیگری معاهده یا تعهدی را برخلاف مصالح وی نقض نمودهاست. در چنین شرایطی، شورای عمومی بهعنوان رکن حل اختلاف تشکیل جلسه میدهد.
رکن بررسی خط مشی تجاری
شورای عمومی، همچنین میتواند بهعنوان رکن بررسی خط مشی تجاری تشکیل جلسه دهد. این رکن ریاست، قوانین و رویه خاص خود را دارد و به تجدیدنظر در سیاستهای تجاری اعضا برای آماده کردن آن در مکانیزم بازنگری در سیاست تجاری میپردازد. در ابتدای هرسال ریاست و دو معاونت این رکن از بین اعضا برای یک سال انتخاب میگردند.
شوراها
شوراها برای اجرای وظایف سازمان تجارت جهانی و عموماً زیر نظر شورای عمومی تشکیل میشوند. این شوراها بهصورت تخصصی وظیفه بررسی و تدوین موافقتنامههای عمومی را بر عهده دارند. این شوراها عبارتاند از:
شورای تجارت کالا: شورای تجارت کالا وظیفهٔ بررسی و نظارت بر موافقتنامههای چندجانبه مربوط به تجارت کالا را برعهده دارد. سیزده موافقتنامه در زمینهٔ تجارت کالا به امضای اعضای سازمان تجارت جهانی رسیدهاست که مهمترین آنها، موافقتنامه عمومی تعرفه و تجارت و توافقات مربوط به آن میباشد. این شورا ۱۰ کمیته دارد که هرکدام در زمینه خاصی فعالیت میکند (مانند کشاورزی، دستیابی به بازار، یارانهها، اقدامات ضدفروش زیر قیمت تمام شده و غیره).
شورای تجارت خدمات: بررسی و نظارت بر موافقتنامه عمومی تجارت خدمات برعهدهٔ شورای تجارت خدمات است. شرکت در این شورا برای تمام اعضای سازمان تجارت جهانی آزاد است. کمیته خدمات مالی، کمیته تعهدات مشخص و گروههای کاری آیین نامههای داخلی و قواعد موافقتنامه عمومی تجارت خدمات، جزو ارکان متمم حاضر در این شوراست.
شورای جنبههای مرتبط با تجارت حقوق مالکیت فکری: حقوق مالکیت معنوی، حقوقی است که افراد بهواسطه خلق اندیشهها و ایدهها از آن برخوردارند. این شورا وظیفهٔ بررسی و نظارت بر کارکردهای موافقتنامههای مربوط به مالکیت معنوی را برعهده دارد.
کمیتهها و سایر بدنههای متمم: سه کمیتهٔ اصلی در سازمان تجارت جهانی وجود دارد:
کمیته تجارت و توسعه
کمیته محدودیتهای تراز پرداختها
کمیته بودجه، مالی و تشکیلاتی
وظایف این کمیتهها بر مبنای موافقتنامههای تجاری چندجانبه و مصوبات شورای عمومی تعریف میشود. عضویت در این کمیتهها برای تمامی اعضای سازمان تجارت جهانی آزاد است.
همچنین کمیتههای تجارت و محیط زیست و موافقتنامههای منطقهای تجاری نیز زیر نظر شورای عمومی فعالیت میکنند.
عضویت در سازمان تجارت جهانی
عضویت در سازمان تجارت جهانی مستلزم پذیرفتن اصول و معاهدات متعددی است که مورد قبول کشورهای عضو قرار گرفتهاست. این مراحل شامل تقاضای عضویت، پذیرش درخواست (الحاق به عنوان عضو ناظر)، تدوین گزارش سیاستهای تجاری کشور، تشکیل گروه کاری الحاق و در نهایت مذاکرات دوجانبه و چندجانبهای بهمنظور تعیین شرایط عضویت و حصول توافق برای الحاق میباشد. هم اکنون سازمان تجارت جهانی ۱۵۳ عضو دارد (نزدیک به تمامی ۱۲۳ کشوری که اجلاس اروگوئه شرکت کردند، امروز در این سازمان عضو دائم شدهاند) بیست و هفت بخش از اتحادیه اروپا نیز به عنوان نمایندگان اتحادیه حضور دارند اعضا میبایست در طی مراوداتی با دیگر کشورهای عضو تعامل داشته باشند و لزوم عضویت در سازمان این امر را تایید نمیکند که کشورها میتوانند در منطقه اقلیمی خود خودکفا باشند و یا به استقلال دیگر کشورها صدمهای وارد بیاورند.
براساس گزارش رویترز در ژوئیه ۲۰۱۲، کشورهایی که عضو سازمان تجارت جهانی نیستند شامل ایران، عراق، لیبی، سوریه، بلاروس، الجزایر، بوسنی، صربستان، سودان، ازبکستان و قزاقستان میشود.
عضویت ایران در سازمان تجارت جهانی
در حال حاضر اقتصاد دنیا به سازمان جهانی تجارت پیوسته است و این بدان معناست که ایران و چند کشور نحیف و کوچک از نظر اقتصادی و سیاسی هنوز به بزرگترین سازمان تصمیم گیر در خصوص فرایندهای تجاری در جهان نپیوستهاند و حق تصمیم گیری و قدرت تصمیم سازی در ساختار اقتصادی جهانی را دارا نیستند. سازمان تجارت جهانی امروز یکی از پایههای جهانی شدن، به ویژه در حوزه اقتصاد به شمار میرود. بدین سان، کشورهای مختلف تلاش میکنند برای تسریع روند جهانی شدن و استفاده از منافع آن، این سازمان بینالمللی را توسعه داده و جایگاهش را ارتقاء بخشند. از دیگر سو کشورهایی که عضو این سازمان نیستند نیز، تلاش مینمایند تا به عضویت آن درآمده و با استفاده از امتیازات عضویت در این نهاد بینالمللی به توسعه اقتصادی و صنعتی دست یابند.
یکی از این کشورها جمهوری اسلامی ایران است که از سال۱۹۹۵از این سازمان درخواست عضویت ناظر کرده و به مدت ده سال پشت درهای آن به انتظار نشسته است. با اینکه کشور ایران در موافقتنامههای قبلی حوزه تجارت مانند سازمان جهانی تجارت و گات، حضور تقریباً خوبی داشتهاست اما اکنون در خصوص سازمان تجارت جهانی این مساله تکرار نگشته و اکنون از متقاضیان الحاق به شمار میآید.اولین درخواست ایران برای پیوستن به سازمان تجارت جهانی در ۱۹ ژوئیه ۱۹۹۶ به این سازمان ارسال شد. ایران در ۲۶ مه ۲۰۰۵ به عنوان عضو ناظر سازمان تجارت جهانی پذیرفته شد. گروه کاری ایران برای پیوستن به این سازمان هنوز تشکیل نشدهاست. ایران در آبان ۱۳۸۸ متن گزارش رژیم تجاری خود را تقدیم دبیرخانه سازمان تجارت جهانی نمود. بعد از آن، گزارش رژیم تجاری ایران در میان اعضای سازمان تجارت جهانی توزیع گردید و اعضای سازمان تجارت جهانی سئوالات خود را از ایران بیان میدارند که سری اول سئوالات که شامل ۷۰۰ سئوال میباشد به وزارت بازرگانی ایران د اسفند ۱۳۸۸ ارسال گشت. اما در خصوص رئیس گروه کاری الحاق ایران به سازمان تجارت جهانی، با آنکه توافق بر سر رئیس گروه کاری الحاق ایران صورت گرفتهاست، ایالات متحده آمریکا از قرار گرفتن تعیین رئیس گروه کاری الحاق در دستور جلسه شورای عمومی سازمان تجارت جهانی جلوگیری مینماید.
پیشینه تدوین گزارش رژیم تجاری ایران
اولین ویرایش یادداشت نظامنامه تجارت خارجی (گزارش رژیم تجاری ایران) در سال ۱۳۷۸ تهیه شده که طی سنوات بعد متناسب با تغییرات در قوانین و مقررات گزارش اولیه به طور مکرر مورد بازبینی و تکمیل قرار گرفتهاست. دو ماه پس از پذیرش درخواست الحاق ایران توسط شورای عمومی سازمان جهانی تجارت در پنجم خردادماه سال ۱۳۸۴، آخرین ویرایش گزارش رژیم تجاری جهت بررسی و ارائه نظرات دستگاهها، انجام بررسیها و اعمال تغییرات و تعدیلات لازم در سال ۸۵ به دولت ارائه شد. بررسی درخواست عضویت ایران در سازمان جهانی تجارت ۹ سال به طول انجامید. به نحوی که تا پنج سال تقاضای عضویت ایران در شورای عمومی سازمان مطرح نشد و پس از طرح نیز تا چهار سال اجماع در این زمینه صورت نگرفت و در نهایت پس از ۹ سال درخواست ایران در پنج خرداد ۸۴ با اجماع کشورها مواجه و پذیرفته شد و ایران به عنوان عضو ناظر پذیرفته شد. تمام اینها در حالی است که میانگین زمان عضویت دیگر کشورهایی که سال ۱۹۹۵ به این سو، در سازمان عضو شدهاند چیزی حدود هفت سال بودهاست.
مراحل الحاق ایران به سازمان تجارت جهانی
ارائه درخواست الحاق ایران به دبیرخانه سازمان تجارت جهانی
تصویب درخواست الحاق ایران در شورای عمومی و تشکیل گروه کاری الحاق ایران
ارائه نظامنامه رژیم تجاری ایران به سازمان تجارت جهانی.
بررسی و پرسش در مورد گزارش و نظامنامه از ایران و همچنین بررسی شرایط و ضوابط مورد نظر که طی اولین نشست بعدی انجام خواهد گرفت
در این مرحله که مهمترین مرحله نیز محسوب میگردد، ایران با دیگر اعضا وارد مذاکرات چند جانبه میشود و به این ترتیب شرایط و ضوابطی که ایران ملزم به رعایت آنها در صورت عضو شدن در سازمان است، مورد بررسی قرار میگیرد.
در مرحله ششم که بیشتر اوقات در حین مرحله پیشین انجام میگیرد، مذاکرات دو جانبه بین ایران و دیگر اعضا صورت میگیرد که باید منجر به توافقی محکم گردد. این توافقات شامل تعهدات و امتیازاتی است که بایست بین کشورها رعایت گردد.
نتایج مذاکرات ایران در دو مرحله آخر شامل سه سند جداگانه خواهد بود که باید در نهایت به تصویب نهایی اعضای کارگروه برسد.
سند اول شامل خلاصه توافقات و شرایط پذیرش عضویت است.
سند دوم شامل خلاصه مذاکرات بین ایران و دیگر کشورهاست.
سند سوم شامل خلاصه مذاکرات دوجانبه بین ایران و کشورهای عضو دیگر است.
ودست آخر در مرحله ششم گزارشات نهایی به شورای عمومی سازمان ارایه و عضویت قطعی میگردد. قابل توجهاست که تمامی اسناد مربوط به الحاق هر کشور به سازمان جهانی تجارت در تمامی مراحل مورد بررسی در کارگروه، محرمانه بوده و تنها پس از تصویب شورای عمومی این سازمان قابل انتشار است. پس از تصویب نهایی اسناد الحاقی ایران به سازمان تجارت جهانی در شورای عمومی یا کنفرانس وزیران این سازمان، سه ماه به ایران مهلت داده میشود تا مصوبه شورای عمومی سازمان تجارت جهانی را در مجلس به تصویب برساند. پس از گذشت مهلت ۳۰ روزه، دولت باید این تائیدیه را به اطلاع دبیرخانه این سازمان برساند. پس از گذشت این مراحل، ایران به عضویت کامل و دائم در سازمان تجارت جهانی در خواهد آمد.
انتقادها
به عقیدهٔ مخالفان برنامههای سازمان تجارت جهانی، این سازمان، تریبونی است که از طریق آن کشورها میتوانند خواستهای شرکتهای خود را به کرسی بنشانند. هیچ کشوری به اندازهٔ امریکا در استفاده از سازمان تجارت جهانی برای گشودن بازارهای خارجی و دفاع از صنایع داخلیاش فعال نبودهاست. این سازمان بدون توجه به حقوق کارگران و حفظ محیط زیست، از قدرت خود برای واداشتن کشورها (ازجمله آمریکا) به فسخ سایر موافقت نامهها و لغو قوانین ملی (از همه معروفتر لغو قانون مربوط به حمایت از لاک پشتهای دریایی در خطر انقراض) به عنوان بخشی از مسئولیتاش استفاده میکند، با این استدلال که چنین «محدودیتهایی» موانعی در مقابل تجارت جهانی هستند. چنین مواضعی است که سازمان تجارت جهانی را نزد طرفداران محیط زیست و فعالان حقوق کارگری نامحبوب کردهاست. متن صفحه.
شاپور رواسانی معتقد است که دولتهای سرمایه داری استعماری در تلاش برای توسعه سلطه خود در زمینه تجارت و مبادله کالا سازمان تجارت جهانی را به صورت دستگاهی پدید آوردند که به کمک آن انحصارات بزرگ و دولتهای سرمایه داری استعماری میتوانند به صورت قانونی مبادله کالا و انتقال سرمایههای پولی در همه کشورها را قبضه نمایند و کشورهایی که عضویت در این سازمان را میپذیرند از نظر اقتصادی در همه زمینههای تجاری، تولیدی، و مالی تحت کنترل و نظارت کامل و شامل انحصارات بزرگ و دولتهای سرمایه داری استعماری قرار میگیرند و استقلال سیاسی آنها پوستهای است که مغز و محتوایی ندارد.
شرکتهای فراملیتی و نهادهای مالی طرفهای عمدهٔ ذینفع از قوانین و سازو کارهای اجرایی هستند که نهادهای مالی جهانی را رواج میدهند، گرچه این سیاستها را به عنوان منافع تمام شهروندان جهان عرضه میکنند. مقاومت در برابر پیامدهای غالباً واپس گرایانهٔ چنین سیاستهایی آشکارتر و سازمان یافتهتر شدهاست.
علم اقتصاد
علم اقتصاد (در انگلیسی Economics)، شاخهای از علوم اجتماعی است که به تحلیل تولید، توزیع و مصرف کالاها و خدمات میپردازد.
کانون توجه دانش اقتصاد بر این است که عوامل اقتصادی چگونه رفتار و تعامل میکنند و اقتصادهای مختلف چگونه کار میکنند. در این راستا، یک تقسیمبندی اولیه کتابهای پایهای اقتصاد، اقتصاد خرد در برابر اقتصاد کلان است. اقتصاد خرد، رفتار عوامل پایهای اقتصاد، شامل عوامل فردی مانند خانوارها و شرکتها و یا خریداران و فروشندگان را بررسی میکند. در مقابل اقتصاد کلان، کلیت اقتصاد و عوامل موثر بر آن شامل بیکاری، تورم، رشد اقتصادی و سیاست پولی و مالی را تحلیل میکند.
دیگر تقسیم بندیهای رایج علم اقتصاد، این رشته را به اقتصاد اثباتی (به انگلیسی: positive economics) (تعریف کننده "آنچه هست") در برابر اقتصاد هنجاری (به انگلیسی: normative economics) (دفاع از "آنچه که باید باشد")؛ اقتصاد نظری در مقابل اقتصاد کاربردی؛ اقتصاد عقلانی در برابر اقتصاد رفتاری؛ و اقتصاد جریان اصلی یا متداول (به انگلیسی: mainstream economics) (اقتصاد ارتدوکس که بیشتر با پیوند میان عقلانیت، فردگرایی و تعادل سروکار دارد) و اقتصاد دیگراندیش (به انگلیسی: heterodox economics) (که رادیکال است و با پیوند میان نهادها، تاریخ و ساختار اجتماعی سروکار دارد).
تحلیل اقتصادی در تمامی ابعاد جامعه کاربرد دارد، از بازرگانی، دارایی، مراقبت بهداشتی گرفته تا موضوعات متنوعی از قبیل جرم و جنایت، آموزش و پرورش، خانواده، حقوق، سیاست، مذهب، نهادهای اجتماعی، جنگ، و علوم پایه. در ابتدای شروع قرن بیست و یکم، از گسترش دامنه اقتصاد در علوم اجتماعی دیگر بعنوان امپریالیسم اقتصاد تعبیر شده است. در یکی دو دهه اخیر برخی از اقتصادددانان برای تاکید بیشتر بر پایدار نگاه داشتن محیط زیست شاخه اقتصاد محیط زیست تاسیس کردهاند و نیز مطالعاتی را در زمینه اقتصاد بومشناختی (به انگلیسی: Ecological economics)صورت دادهاند.
ریشه لغوی
واژه اقتصاد (به انگلیسی: economy) از واژه οἰκονομία (اُیکُنُمیا) در زبان یونان باستان گرفته شده که خود از ترکیب دو کلمه οἶκος (اُیکُس به معنای خانواده) و νόμος (نُمُس به معنای روش یا قانون) حاصل شده است. این دو کلمه روی هم معنای «قواعد خانه (خانوار)»را میدهند.
تاریخچه نام
اقتصاد سیاسی نام سنتی این رشته است که آنتوان دو مونکرتین نخستبار آن را عنوان کتاب خود ساخت.. این سنت تا قرن نوزدهم ادامه یافت، چنانکه جان استوارت میل کتابش را تحت عنوان «مبانی اقتصاد سیاسی» و دیوید ریکاردو تحت عنوان «اصول اقتصاد سیاسی و مالیت ستانی» نوشت. حتی مارکس که موضعی تهاجمی نسبت به دانش اقتصاد داشت کتابش را «نقد اقتصاد سیاسی» نام نهاد.
اما اقتصاددانان در اواخر قرن نوزدهم واژه "اقتصاد" (به انگلیسی: economics) را بعنوان فرم کوتاهتر "علوم اقتصادی" (به انگلیسی: economic science) پیشنهاد کردند تا از دلالت ضمنی این واژه بر منافع سیاسی محدود جلوگیری کرده باشند و همچنین به این واژه صورتی مشابه واژگان دیگر علوم مانند "ریاضیات" (به انگلیسی: mathematics)، "اخلاق" (به انگلیسی: ethics) و مانند آنها ببخشند.
تعاریف
تعاریف متفاوتی برای علم اقتصاد وجود دارد. برخی از تفاوتها بازتاب دهنده تکامل دیدگاهها درباره موضوع اقتصاد و یا دیدگاههای مختلف در میان اقتصاددانان است. آدام اسمیت در سال ۱۷۷۶ چیزی که در آن روزگار اقتصاد سیاسی خوانده میشد را اینگونه تعریف کرده است:
شاخهای از دانش یک دولتمرد یا قانونگزار با اهداف دوگانه فراهم کردن درآمد سرشار و معاش خوب برای مردم ... و تامین کردن درآمد برای دولت برای هزینه کردن در خدمات عمومی.
ژان باپتیست سه در ۱۸۰۳، همزمان با جدا کردن علم اقتصاد از کاربرد آن در سیاستگزاری عمومی (به انگلیسی: public policy)، آن را بعنوان علم تولید، توزیع و مصرف ثروت تعریف میکند. توماس کارلایل تاریخدان انگلیسی اصطلاح "دانش کسل کننده" را بعنوان صفتی طعنه آمیز برای اقتصاد کلاسیک وضع کرد، که در این زمینه بیشتر به تحلیل بدبینانه مالتوس ارتباط پیدا میکرد. جان استیوارت میل اقتصاد را در بستری اجتماعی بصورت ذیل تعریف میکند:
علمی که قوانین پدیدههایی در جامعه را دنبال میکند که از کارهای مختلف نوع بشر برای تولید ثروت برمیخیزد، تا جائی که این پدیدهها بوسیله تعقیب هدف دیگری متعین نشوند.
آلفرد مارشال در کتاب خود اصول علم اقتصاد (۱۸۹۰) تعریفی ارائه میدهد که تاکنون نیز ذکر شده است و تحلیل اقتصادی را از مقوله ثروت فراتر میبرد و از سطحی اجتماعی به سطح اقتصاد خرد میکشاند:
اقتصاد، مطالعه انسان است در کسب و کار معمولیاش در زندگی. اقتصاد به کاوش در این میپردازد که چگونه انسان درآمدش را کسب و آن را مصرف میکند. بنابراین، از یک جنبه مطالعه ثروت است و از جنبه مهم دیگر، بخشی از مطالعه خود انسان است.
لیونل رابینز اقتصاددان انگلیسی به تعریف مفهومی از اقتصاد پرداخت که "شاید مقبولترین تعریف جاری از اقتصاد باشد:
اقتصاد دانشی است که رفتار انسان را در رابطه با اهداف و وسائل کمیابی که قابلیت استفادههای دیگری نیز دارند، مطالعه میکند.
رابینز این تعریف را بعنوان تعریفی میشناسد که نه طبقه بندی کننده، "بمعنای انتخاب انواع معینی از رفتار"، بلکه بیشتر تحلیلی، بمعنای "تمرکز بر جنبههای مشخصی از رفتار است که تحت تاثیر کمیابی تحمیل میشوند".
برخی از نظراتی که متعاقباً درباره این تعریف ابراز شده، آن را بیش از حد گسترده و ناتوان از محدود کردن موضوع به تحلیل بازارها می دانند. به هرحال، از دهه ۱۹۶۰، به دلیل اینکه تئوری بیشینه ساختن رفتار (به انگلیسی: maximizing behavior) و مدلهای انتخاب عقلائی، دامنه علم اقتصاد را به حوزهها و موضوعاتی گسترش داد که قبلاً بعنوان رشتههایی مجزا تلقی میشدند، اینگونه نظرات و انتقادات فروکش کردند.
گری بکر، یکی از گسترش دهندگان علم اقتصاد به حوزههایی نوین، رویکرد خود را بعنوان "ادغام فرضیههای تئوری بیشینه ساختن رفتار، ترجیحات ثابت (به انگلیسی: stable preferences) و تعادل بازار که بصورتی بی ملاحظه و مصمم بکار گرفته میشد" تعریف میکند. یک تفسیر، این تعریف را تبدیل اقتصاد به یک رویکرد به جای یک موضوع علمی خوانده است؛ رویکردی که با این حال از خاص گرایی زیادی در زمینه "فرایند انتخاب و نوع تعامل اجتماعی که این تحلیل دربرمیگیرد" برخوردار است. منبع همان تفسیر، سلسلهای از تعاریف اقتصاد در کتابچههای اقتصادی را بررسی میکند و نتیجه میگیرد که فقدان توافق مورد نیاز، تاثیری بر خود موضوع (یعنی علم اقتصاد) که کتابچهها به آن پرداختهاند ندارد. بطور کلی تر در بین اقتصاددانان این نظر مطرح میشود که ارائه تعریفی خاص بیشتر بازتاب دهنده مسیری است که بنظر پدیدآورنده آن علم اقتصاد در آن تکامل مییابد و یا باید تکامل یابد.
2:49 pm
کاربرد برنامه نویسی
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند).

زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
المانها
تمام زبانهای بزنامه نویسی تعدادی بلوکهای ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف میشوند که ساختار و معنای مربوطه را توضیح میدهند.
دستور(
syntax)
فرم سطحی یک زبان برنامه نویسی دستور آن نامیده میشود. غالب زبانهای برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده میکنند. از طرف دیگر، برنامههایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبلها برای مشخص کردن برنامه استفاده میکنند. دستور یک زبان ترکیبات ممکن سمبلها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص میکند. معنایی که به یک ترکیب سمبلها داده میشود با معناشناسی اداره میشود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبانها متنی هستند، این مقاله دستور متنی را مورد بحث قرار میدهد.
دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف میشوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص میکند:
یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکستهای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی میتواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) میآید.
یک لیست تعدادی پرانتز است که میتواند صفر یا چند عبارت در خود داشته باشد.
"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثالهایی هستند از دنبالههای خوش فرم در این گرامر.
همه برنامههایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامههای درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامههایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.
به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:
"ایدههای بی رنگ سبز با خشم میخوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان میکند که نمیتواند درست باشد.
این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام میدهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);
گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی میتواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبانهای برنامه نویسی میتواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری ایستا و متحرک
در نوع گذاری ایستا تمام عبارات نوعهای خود را قبل از اجرای برنامه تعیین میکنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمیتوانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.
زبانهای نوع گذاری شده ایستا میتوانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوعها را در جایگاههای منتنی مشخص مینویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریفها را بر اساس متن استنباط میکند. غالب زبانهای مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری میشوند
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را میدهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل میکند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشتهای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان میکنند.
قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض میشوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار میبرند و منظورشان قوی، ایستایی نوع گذاری شدهاست، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شدهاست. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده میشود.
معناشناسی اجرا
وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیاتها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین میکند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.
برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی میشوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا میکنند.
کتابخانه هسته
اغلب زبانهای برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده میشوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازیهای زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتمها، داده ساختارها و مکانیزمهای ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار میکنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هستهای را مشخص میکنند که باید در تمام پیاده سازیها موجود باشند، و در زبانهای استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبانها به گونهای تعریف شدهاند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونهای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونهای از کلاس BlockContext کتابخانه میسازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان میباشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمیکنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازیهای زبان هستند.
خصوصیات
یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کنندههای زبان میتوانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب میتواند بگیرد، مانند مثالهای زیر:
تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص میشود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبانهای مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.
پیاده سازی
پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سختافزار و نرمافزار را فراهم میکند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش میتوان یک زبان را پیاده سازی کرد.
خروجی یک کامپایلر ممکن است با سختافزار و یا برنامهای به نام مفسر اجرا شود. در برخی پیاده سازیها که از مفسر استفاده میشود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازیهای زبان برنامه نویسی بیسیک کامپایل میکنند و سپس کد را خط به خط اجرا میکنند.
برنامههایی که مستقیماً روی سختافزار اجرا میشوند چندین برابر سریعتر از برنامههایی که با کمک نرمافزار اجرا میشوند، انجام میشوند.
یک تکنیک برای بهبود عملکرد برنامههای تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوکهای کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سختافزار ترجمه میکند.
تاریخچه
پیشرفتهای اولیه
اولین زبان برنامه نویسی به قبل از رایانههای مدرن باز میگردد. قرن ۱۹ دستگاههای نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثالهایی از زبانهای برنامه نویسی با حوزه مشخص شناخته میشوند. با شروع قرن بیستم، پانچ کارتها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتمها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.
در دهه ۴۰، اولین رایانههای دیجیتال که توسط برق تغذیه میشدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سالهای ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامههای زبان ماشین استفاده میکردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده میشوند جایگزین شد. در سالهای بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخههای به روز شده این برنامهها همچنان مورد استفاده قرار میگیرند، و هر کدام قویا توسعه زبانهای بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبانهای برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبانهای برنامه نویسی به شدت متاثر از محدودیتهای رابط بودند.
پالایش
دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثالهای عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبههای آن بهینه سازی ایدههای اولیه نسل سوم زبان برنامه نویسی بود:
APL برنامه نویسی آرایهای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایدههای خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی میکرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به
عنوان اولین زبان کاملاً شئ گرا معرفی شد.
C بین سالهای ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبانهای برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.
هر یک از این زبانها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبانها از تبار حداقل یکی از زبانهای فوق به شمار میآیند.
دهههای ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبانهای برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.
"ادسگر دیکسترا" در نامهای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبانهای سطح بالا حذف شود.
در دهههای ۶۰ و ۷۰ توسعهٔ تکنیکهایی صورت گرفت که اثر یک برنامه را کاهش میداد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.
یکپارچگی و رشد
دهه ۸۰ سالهای یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینههای گزافی صرف تحقیق در مورد زبان نسل پنجم میشد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثالهای جدید، تمام این تلاشها ایدههایی که در دهههای قبل حلق شده بودند را بهتر کرد.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق مدولها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستمهای مدولی برجستهای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبانهای دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستمهای مدولی غالباً با ساختارهای برنامه نویسی عام همراه شدهاند.
رشد سریع اینترنت در میانه دهه ۹۰ فرصتهای ایجاد زبانهای جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وبگاههای دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعهها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثالهای موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا میکند، هم در تحقیقات و هم در صنعت. جهتهای فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونههای جدید مدولی(mixin، نمایندهها، جنبهها) و تجمع پایگاه داده.
۴GLها نمونهای از زبانهایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه دادههای اسکالر را برگردانند، مجموعههایی را تغییر داده و بر میگردانند که برای اکثر زبانها متعارفند. Perl برای مثال، با "مدرک اینجا" خود میتواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
سنجش استفاده از زبان
مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفادهاست، و اینکه کاربرد چه معنی میدهد با توجه به زمینه تغییر میکند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبانها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامههای کاربردی، C در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند).

زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
المانها
تمام زبانهای بزنامه نویسی تعدادی بلوکهای ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف میشوند که ساختار و معنای مربوطه را توضیح میدهند.
دستور(
syntax)
فرم سطحی یک زبان برنامه نویسی دستور آن نامیده میشود. غالب زبانهای برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده میکنند. از طرف دیگر، برنامههایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبلها برای مشخص کردن برنامه استفاده میکنند. دستور یک زبان ترکیبات ممکن سمبلها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص میکند. معنایی که به یک ترکیب سمبلها داده میشود با معناشناسی اداره میشود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبانها متنی هستند، این مقاله دستور متنی را مورد بحث قرار میدهد.
دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف میشوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص میکند:
یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکستهای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی میتواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) میآید.
یک لیست تعدادی پرانتز است که میتواند صفر یا چند عبارت در خود داشته باشد.
"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثالهایی هستند از دنبالههای خوش فرم در این گرامر.
همه برنامههایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامههای درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامههایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.
به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:
"ایدههای بی رنگ سبز با خشم میخوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان میکند که نمیتواند درست باشد.
این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام میدهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);
گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی میتواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبانهای برنامه نویسی میتواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری ایستا و متحرک
در نوع گذاری ایستا تمام عبارات نوعهای خود را قبل از اجرای برنامه تعیین میکنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمیتوانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.
زبانهای نوع گذاری شده ایستا میتوانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوعها را در جایگاههای منتنی مشخص مینویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریفها را بر اساس متن استنباط میکند. غالب زبانهای مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری میشوند
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را میدهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل میکند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشتهای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان میکنند.
قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض میشوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار میبرند و منظورشان قوی، ایستایی نوع گذاری شدهاست، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شدهاست. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده میشود.
معناشناسی اجرا
وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیاتها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین میکند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.
برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی میشوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا میکنند.
کتابخانه هسته
اغلب زبانهای برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده میشوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازیهای زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتمها، داده ساختارها و مکانیزمهای ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار میکنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هستهای را مشخص میکنند که باید در تمام پیاده سازیها موجود باشند، و در زبانهای استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبانها به گونهای تعریف شدهاند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونهای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونهای از کلاس BlockContext کتابخانه میسازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان میباشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمیکنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.
عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازیهای زبان هستند.
خصوصیات
یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کنندههای زبان میتوانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب میتواند بگیرد، مانند مثالهای زیر:
تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص میشود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبانهای مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.
پیاده سازی
پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سختافزار و نرمافزار را فراهم میکند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش میتوان یک زبان را پیاده سازی کرد.
خروجی یک کامپایلر ممکن است با سختافزار و یا برنامهای به نام مفسر اجرا شود. در برخی پیاده سازیها که از مفسر استفاده میشود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازیهای زبان برنامه نویسی بیسیک کامپایل میکنند و سپس کد را خط به خط اجرا میکنند.
برنامههایی که مستقیماً روی سختافزار اجرا میشوند چندین برابر سریعتر از برنامههایی که با کمک نرمافزار اجرا میشوند، انجام میشوند.
یک تکنیک برای بهبود عملکرد برنامههای تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوکهای کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سختافزار ترجمه میکند.
تاریخچه
پیشرفتهای اولیه
اولین زبان برنامه نویسی به قبل از رایانههای مدرن باز میگردد. قرن ۱۹ دستگاههای نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثالهایی از زبانهای برنامه نویسی با حوزه مشخص شناخته میشوند. با شروع قرن بیستم، پانچ کارتها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتمها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.
در دهه ۴۰، اولین رایانههای دیجیتال که توسط برق تغذیه میشدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سالهای ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.
کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامههای زبان ماشین استفاده میکردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده میشوند جایگزین شد. در سالهای بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخههای به روز شده این برنامهها همچنان مورد استفاده قرار میگیرند، و هر کدام قویا توسعه زبانهای بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبانهای برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبانهای برنامه نویسی به شدت متاثر از محدودیتهای رابط بودند.
پالایش
دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثالهای عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبههای آن بهینه سازی ایدههای اولیه نسل سوم زبان برنامه نویسی بود:
APL برنامه نویسی آرایهای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایدههای خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی میکرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به
عنوان اولین زبان کاملاً شئ گرا معرفی شد.
C بین سالهای ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبانهای برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.
هر یک از این زبانها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبانها از تبار حداقل یکی از زبانهای فوق به شمار میآیند.
دهههای ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبانهای برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.
"ادسگر دیکسترا" در نامهای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبانهای سطح بالا حذف شود.
در دهههای ۶۰ و ۷۰ توسعهٔ تکنیکهایی صورت گرفت که اثر یک برنامه را کاهش میداد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.
یکپارچگی و رشد
دهه ۸۰ سالهای یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینههای گزافی صرف تحقیق در مورد زبان نسل پنجم میشد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثالهای جدید، تمام این تلاشها ایدههایی که در دهههای قبل حلق شده بودند را بهتر کرد.
یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستمهای بزرگ از طریق مدولها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستمهای مدولی برجستهای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبانهای دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستمهای مدولی غالباً با ساختارهای برنامه نویسی عام همراه شدهاند.
رشد سریع اینترنت در میانه دهه ۹۰ فرصتهای ایجاد زبانهای جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وبگاههای دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعهها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثالهای موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا میکند، هم در تحقیقات و هم در صنعت. جهتهای فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونههای جدید مدولی(mixin، نمایندهها، جنبهها) و تجمع پایگاه داده.
۴GLها نمونهای از زبانهایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه دادههای اسکالر را برگردانند، مجموعههایی را تغییر داده و بر میگردانند که برای اکثر زبانها متعارفند. Perl برای مثال، با "مدرک اینجا" خود میتواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
سنجش استفاده از زبان
مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفادهاست، و اینکه کاربرد چه معنی میدهد با توجه به زمینه تغییر میکند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبانها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامههای کاربردی، C در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
ساعت : 2:49 pm | نویسنده : admin
|
طراحی وب امیر |
مطلب قبلی