<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>مرجع تخصصی پروژه های دانشجویی</title>
	<atom:link href="http://www.poroge.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.poroge.com</link>
	<description>مرجع تخصصی انجام پروژه های دانشجویی و دانشگاهی</description>
	<lastBuildDate>Thu, 19 Aug 2010 18:45:27 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>فیلم آموزشی قسمت هفتم</title>
		<link>http://www.poroge.com/?p=1095</link>
		<comments>http://www.poroge.com/?p=1095#comments</comments>
		<pubDate>Mon, 02 Aug 2010 16:52:14 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[DXP Protel]]></category>
		<category><![CDATA[دیگر موارد]]></category>
		<category><![CDATA[مقالات]]></category>
		<category><![CDATA[DXP]]></category>
		<category><![CDATA[Protel]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[فارسی]]></category>
		<category><![CDATA[فیلم]]></category>
		<category><![CDATA[پروژه]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1095</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com">Protel Dxp 2004</a> قسمت هفتم محیط از سری آموزش protel dxp 2004 این آموزش از مقدماتی تا  پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته دانلود در  ادامه متن …</p>
<p><span id="more-1095"></span></p>
<p><a href="http://www.4shared.com/video/-GhVc0R7/Dars_7_wwwporogecom.html" target="_blank">دانلود قسمت هفتم</a></p>
<blockquote><p>شش قسمت قبلی آموزش در همین سایت موجود می باشد</p></blockquote>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="320" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.4shared.com/embed/352291457/2e69eebd" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="320" src="http://www.4shared.com/embed/352291457/2e69eebd" allowfullscreen="true"></embed></object></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com">Protel Dxp 2004</a> قسمت هفتم محیط از سری آموزش protel dxp 2004 این آموزش از مقدماتی تا  پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته دانلود در  ادامه متن …</p>
<p><span id="more-1095"></span></p>
<p><a href="http://www.4shared.com/video/-GhVc0R7/Dars_7_wwwporogecom.html" target="_blank">دانلود قسمت هفتم</a></p>
<blockquote><p>شش قسمت قبلی آموزش در همین سایت موجود می باشد</p></blockquote>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="320" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.4shared.com/embed/352291457/2e69eebd" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="320" src="http://www.4shared.com/embed/352291457/2e69eebd" allowfullscreen="true"></embed></object></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1095</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ورد پد ویندوز</title>
		<link>http://www.poroge.com/?p=1090</link>
		<comments>http://www.poroge.com/?p=1090#comments</comments>
		<pubDate>Sat, 31 Jul 2010 14:02:07 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[Visual C#.NET]]></category>
		<category><![CDATA[C#.net]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[ورد پد]]></category>
		<category><![CDATA[پروژه]]></category>
		<category><![CDATA[کد نویسی]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1090</guid>
		<description><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1091  aligncenter" title="wordpad" src="http://www.poroge.com/wp-content/uploads/2010/07/wordpad-300x239.jpg" alt="" width="300" height="239" /></a></p>
<p><a href="http://www.poroge.com">پروژه دانشجویی</a> برنامه ورد پد ویندوز با امکانات پیشرفته تحت زبان کد نویسی C#.net</p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1091  aligncenter" title="wordpad" src="http://www.poroge.com/wp-content/uploads/2010/07/wordpad-300x239.jpg" alt="" width="300" height="239" /></a></p>
<p><a href="http://www.poroge.com">پروژه دانشجویی</a> برنامه ورد پد ویندوز با امکانات پیشرفته تحت زبان کد نویسی C#.net</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1090</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>زبان‌های برنامه‌نویسی</title>
		<link>http://www.poroge.com/?p=1085</link>
		<comments>http://www.poroge.com/?p=1085#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:51:57 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[مقالات]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[زبان]]></category>
		<category><![CDATA[متن]]></category>
		<category><![CDATA[مقاله]]></category>
		<category><![CDATA[پروژه]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1085</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1086  aligncenter" title="computer programming" src="http://www.poroge.com/wp-content/uploads/2010/07/computerprogramming-300x224.jpg" alt="computer programming" width="300" height="224" /></p>
<p>زبان‌های برنامه‌نویسی ساختارهای زبانی‌ دستورمداری در رایانه‌ها هستند که به‌وسیلهٔ آنها می‌توان یک الگوریتم را به‌وسیلهٔ ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرم‌افزارهای جدید بوجود می‌آید. معمولاً هر زبان برنامه‌نویسی دارای یک محیط نرم‌افزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند. عموماً زبانهای برنامه نویسی را به پنج نسل تقسیم می‌کنند: &#8230;&#8230;</p>
<p><span id="more-1085"></span></p>
<p>* نسل اول زبان ماشین &#8211; زبان صفرو یک</p>
<p>* نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان</p>
<p>* نسل سوم زبانهایی مانند کوبول و پی ال وان و&#8230; -دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها</p>
<p>* نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها &#8211; نزدیک به محاوره‌های انسانی</p>
<p>* نسل پنج زبانهایی مانند prolog , ops5 &#8211; تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط برنامه نویس</p>
<p>یک زبان برنامه نویسی یک زیان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است.زبان‌های برنامه نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، و یا روشی برای ارتباط انسانند. بسیاری از زبان‌های برنامه نویسی تعدادی قالب از ویژگی‌های نوشته شده دستوری(syntax) و معنا شناسی (semantics) دارند، چرا که رایانه‌ها دستورات دقیقا مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شده‌اند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده سازی غالبی می‌باشند.(مانند Perl) اولین زبان برنامه نویسی به قبل از اختراع رایانه باز می‌گردد، و برای هدایت رفتار ماشین‌هایی مانند دستگاه‌های نساجی اتوماتیک و نوازنده‌های پیانو به کار می‌رفت. هزاران زبان برنامه نویسی خلق شده‌اند، بیشتر در زمینهٔ رایانه، زمینه‌ای که هر ساله بسیاری دیگر ایجاد می‌شوند.</p>
<p><strong>تقسیم‌بندی</strong></p>
<p>زبان‌های برنامه نویسی را می‌توان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد: الف)روش‌های برنامه نویسی ۱-زیر روالی ۲-ساخت یافته ۳-مدولار ۴-شئ گرا ب)نزدیکی به زبان ماشین ۱-سطح پایین ۲-سطح میانی ۳-سطح بالا ج)نوع ترجمه ۱-مفسری ۲-کامپایلری د)رابط برنامه نویسی ۱-مبتنی بر متن ۲-مبتنی بر گرافیک (ویژوال)</p>
<p><strong>تعاریف</strong></p>
<p>ویژگی‌هایی که غالبا برای تشکیل یک زبان برنامه نویسی مهم شمرده می‌شوند:</p>
<p>* تابع :یک زبان برنامه نویسی، زبانی است که برای نوشتن برنامه‌های رایانه‌ای به کار می‌رود که رایانه‌ای را برای انجام محاسبات یا اجرای الگوریتم و یا احتمالا کنترل دستگاه‌های خارجی مثل چاپگر، ربات و&#8230; درگیر می‌کنند.</p>
<p>* هدف: زبان‌های برنامه نویسی با زبان‌های طبیعی تفاوت دارند و آن اینکه زبان‌های طبیعی فقط برای فعل و انفعالات بین مردم به کار می‌روند، در حالیکه زبان‌های برنامه نویسی همچنین به انسانها اجازه می‌دهد که از طریق دستورات با ماشین‌ها ارتباط برقرار کنند. برخی زبان‌های برنامه نویسی بوسیله یک دستگاه استفاده می‌شوند تا دستگاه دیگری را کنترل کند. برای مثال برنامه‌های پست اسکریپت(post script) غالبا توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد می‌شوند.</p>
<p>* ساختارها: زبان‌های برنامه نویسی ممکن است ساختار‌هایی برای تعریف و تغییر داده ساختارها یا کنترل جریان اجرا داشته باشند.</p>
<p>* توان بیانگر: نظریه محاسبات، زبان‌ها را بوسیله محاسباتی که توان بیان آنها را دارند طبقه بندی می‌کند. تمام زبان‌های &#8220;کامل تورینگ&#8221; می‌توانند مجموعه یکسانی از الگوریتم‌ها را پیاده سازی کنند.ANSI/ISO SQL و Charity مثال‌هایی هستند از زبان‌هایی که کامل تورینگ نیستند، ولی غالبا زبان برنامه نویسی نامیده می‌شوند.</p>
<p>برخی مولفین اصطلاح&#8221; زبان برنامه نویسی&#8221; را محدود به آنهایی می‌کنند که می‌توانند تمام الگوریتم‌های ممکن را پیاده سازی کنند، گاهی اوقات اصطلاح&#8221; زبان رایانه&#8221; برای زبان‌های برنامه نویسی محدودتر به کار می‌رود. زبان‌های غیر محاسباتی، مانند زبان‌های مارک آپ(markup) HTML یا گرامرهای قراردادی مثل BNF، معمولا زبان برنامه نویسی محسوب نمی‌شوند. یک زبان برنامه نویسی(که می‌تواند کامل تورینگ نباشد) ممکن است در این زبان‌های غیر محاسباتی (میزبان) تعبیه شوند.</p>
<p><strong> </strong></p>
<p><strong>کاربرد</strong></p>
<p>زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک برنامه نویس از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده ترین عناصر موجود بیان می‌شوند(مفاهیم ابتدایی نامیده می‌شوند). زبان‌های برنامه نویسی با غالب زبان‌های انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها &#8220;دقیقا آنچه که به آنها گفته شده را انجام می‌دهند.&#8221; و نمی‌توانند &#8220;بفهمند&#8221; که نویسنده دقیقا چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند. برنامه‌های یک رایانه ممکن است در یک فرآیند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامه‌ها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند. بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آنها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه" کامل" شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود: • محدوده برنامه‌ها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستم‌های بسیار بزرگ نوشته شده توسط صدها برنامه نویس است • توانایی برنامه نویس‌ها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفه‌ای‌هایی که با پیچیدگی قابل توجهی کنار می‌آیند. • برنامه‌ها باید سرعت، اندازه و سادگی را بسته به سیستم‌ها از ریزپردازندها تا ابر رایانه‌ها متناسب نگه دارند. • برنامه‌ها ممکن است یک بار نوشته شوند و تا نسل‌ها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند. • در نهایت، برنامه نویس‌ها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.</p>
<p>یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.</p>
<p><strong>المان‌ها</strong></p>
<p>تمام زبان‌های بزنامه نویسی تعدادی بلوک‌های ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معنا شناسی و دستوری تعریف می‌شوند که ساختار و معنای مربوطه را توضیح می‌دهند.</p>
<p><strong>دستور(</strong><strong>syntax</strong><strong>)</strong></p>
<p>فرم سطحی یک زبان برنامه نویسی دستور آن نامیده می‌شود. غالب زبان‌های برنامه نویسی کاملا متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده می‌کنند. از طرف دیگر، برنامه‌هایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبل‌ها برای مشخص کردن برنامه استفاده می‌کنند. دستور یک زبان ترکیبات ممکن سمبل‌ها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص می‌کند. معنایی که به یک ترکیب سمبل‌ها داده می‌شود با معناشناسی اداره می‌شود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبان‌ها متنی هستند، این مقاله دستور متنی را مورد بحث قرار می‌دهد.</p>
<p>دستور زبان برنامه نویسی معمولا بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف می‌شوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom  ::= number | symbol number  ::= [+-]?['۰'-'۹']+ symbol  ::= ['A'-'Za'-'z'].* list  ::= &#8216;(&#8216; expression* &#8216;)&#8217; این گرامر موارد ذیل را مشخص می‌کند:</p>
<p>* یک عبارت یا atom است و یا یک لیست</p>
<p>* یک atom یا یک عدد است و یا یک سمبل</p>
<p>* یک عدد دنباله ناشکسته‌ای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی می‌تواند پیش از آن بیاید.</p>
<p>* یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) می‌آید.</p>
<p>* یک لیست تعدادی پرانتز است که می‌تواند صفر یا چند عبارت در خود داشته باشد.</p>
<p>&#8220;۱۲۳۴۵&#8221;، &#8220;()&#8221;، &#8220;(a b c۲۳۲ (۱))&#8221; مثال‌هایی هستند از دنباله‌های خوش فرم در این گرامر.</p>
<p>همه برنامه‌هایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامه‌های درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامه‌هایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقا مطلوب نویسنده آن نبوده باشد.</p>
<p>به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اتلاق کرد و یا ممکن است جمله نادرست باشد:</p>
<p>* &#8220;ایده‌های بی رنگ سبز با خشم می‌خوابند.&#8221;از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.</p>
<p>* &#8220;جان یک مجرد متاهل است.&#8221; از نظر دستوری درست است، ولی معنایی را بیان می‌کند که نمی‌تواند درست باشد.</p>
<p>این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام می‌دهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p-&gt;real,p-&gt;im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p-&gt;real * p-&gt;real + p-&gt;im * p-&gt;im);</p>
<p>گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی می‌تواند با جایگاهش در &#8220;سلسله مراتب چامسکی&#8221; طبقه بندی شود. دستور اغلب زبان‌های برنامه نویسی می‌تواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.</p>
<p><strong>معناشناسی ایستا</strong></p>
<p>معناشناسی ایستا محدودیت‌هایی بر روی ساختار مجاز متن‌ها تعیین می‌کند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیت‌هابه وسیله سیستم نوع گذاری انجام می‌شود.</p>
<p><strong>سیستم نوع گذاری</strong></p>
<p>یک سیستم نوع گذاری مشخص می‌کند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی می‌کند، چگونه می‌تواند آن نوع‌ها را تغییر دهد و رفتار متقابل آن‌ها چگونه‌است. این کارعموما توضیح داده ساختارهایی که می‌توانند در آن زبان ایجاد شوند را شامل می‌شود. طراحی و مطالعه سیستم‌های نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.</p>
<p><strong>زبان‌های نوع گذاری شده و بدون نوع گذاری</strong></p>
<p>یک زبان نوع گذاری شده‌است اگر مشخصات هر عملیات، نوع داده‌های قابل اجرا توسط آن را با نشان دادن نوع‌هایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، &#8220;این متن درون گیومه قرار دارد&#8221; یک رشته‌است. در غالب زبان‌های برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبان‌های برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامه‌ها رد کنند. در برخی زبان‌ها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامه‌ها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبان‌های نوع دار زبان‌های تک نوعند. این زبان‌ها غالبا اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالبا رشته‌های کاراکتری که هم برای داده‌های عددی و هم برای داده‌های سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبان‌های اسمبلی، این امکان را می‌دهد که هر عملیاتی روی هر داده‌ای انجام شود، که معمولا دنباله‌ای از بیت‌ها با طول‌های متفاوت در نظر گرفته می‌شوند. زبان‌های سطح بالا که بی نوع هستند شامل زبان‌های ساده رایانه‌ای و برخی از انواع زبان‌های نسل چهارم.</p>
<p>در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی می‌شوند(چک کردن یا رد کردن تمام عملیات‌ها)، غالب زبان‌های امروزی درجه‌ای از نوع گذاری را فراهم می‌کنند. بسیاری از زبان‌های تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم می‌کنند.</p>
<p><strong>نوع گذاری ایستا و متحرک</strong></p>
<p>در نوع گذاری ایستا تمام عبارات نوع‌های خود را قبل از اجرای برنامه تعیین می‌کنند(معمولا در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمی‌توانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.</p>
<p>زبان‌های نوع گذاری شده ایستا می‌توانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحا نوع‌ها را در جایگاه‌های منتنی مشخص می‌نویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریف‌ها را بر اساس متن استنباط می‌کند. غالب زبان‌های مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری می‌شوند</p>
<p><strong>نوع گذاری قوی و ضعیف</strong></p>
<p>نوع گذاری ضعیف این امکان را ایجاد می‌کند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.</p>
<p>نوع گذاری قوی مانع رخ دادن مشکل فوق می‌شود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا می‌شود. زبان‌هایی که نوع گذاری قوی دارند غالبا با نام &#8220;نوع-امن&#8221; و یا امن شناخته می‌شوند. تمام تعاریف جایگزین برای &#8220;ضعیف نوع گذاری شده&#8221; به زبان‌ها اشاره می‌کند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را می‌دهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل می‌کند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشته‌ای از حروف باشد. چنین تبدیلات ضمنی غالبا مفیدند، اما خطاهای برنامه نویسی را پنهان می‌کنند.</p>
<p>قوی و ایستا در حال حاضر عموما دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت &#8220;قوی نوع گذاری شده&#8221; را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.</p>
<p><strong>معناشناسی اجرا</strong></p>
<p>وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیات‌ها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین می‌کند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.</p>
<p>برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.</p>
<p><strong>کتابخانه هسته</strong></p>
<p>اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات &#8220;کتابخانه استاندارد&#8221; نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولا تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالبا با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک &#8220;بلاک&#8221;) نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختار‌های زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.</p>
<p><strong>عمل</strong></p>
<p>طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازی‌های زبان هستند.</p>
<p><strong>خصوصیات</strong></p>
<p>خصوصیات یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کننده‌های زبان می‌توانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب می‌تواند بگیرد، مانند مثال‌های زیر:</p>
<p>* تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولا با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)</p>
<p>* توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.</p>
<p>* پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحا در رفتار پیاده سازی مدل موجودند.</p>
<p><strong> </strong></p>
<p><strong>پیاده سازی</strong></p>
<p>پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سخت افزار و نرم افزار را فراهم می‌کند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش می‌توان یک زبان را پیاده سازی کرد.</p>
<p>خروجی یک کامپایلر ممکن است با سخت افزار و یا برنامه‌ای به نام مفسر اجرا شود. در برخی پیاده سازی‌ها که از مفسر استفاده می‌شود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازی‌های زبان برنامه نویسی بیسیک کامپایل می‌کنند و سپس کد را خط به خط اجرا می‌کنند.</p>
<p>برنامه‌هایی که مستقیما روی سخت افزار اجرا می‌شوند چندین برابر سریعتر از برنامه‌هایی که با کمک نرم افزار اجرا می‌شوند، انجام می‌شوند.</p>
<p>یک تکنیک برای بهبود عملکرد برنامه‌های تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقا قبل از اجرا، بلوک‌های کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سخت افزار ترجمه می‌کند.</p>
<p><strong>پیشرفت‌های اولیه</strong></p>
<p>اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.</p>
<p>در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.</p>
<p>کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.</p>
<p><strong>پالایش</strong></p>
<p>دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:</p>
<p>* APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.</p>
<p>* PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.</p>
<p>* در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به</p>
<p>عنوان اولین زبان کاملا شئ گرا معرفی شد.</p>
<p>* C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.</p>
<p>* Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.</p>
<p>* در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.</p>
<p>هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.</p>
<p>دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.</p>
<p>&#8220;ادسگر دیکسترا&#8221; در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.</p>
<p>در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.</p>
<p><strong>یکپارچگی و رشد</strong></p>
<p>دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.</p>
<p>یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالبا با ساختارهای برنامه نویسی عام همراه شده‌اند.</p>
<p>رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساسا نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.</p>
<p>۴GL ‌ها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با &#8220;مدرک اینجا&#8221; خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در &#8220;مدرک اینجا&#8221; استفاده کند.</p>
<p><strong>سنجش استفاده از زبان</strong></p>
<p>مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالبا روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولا برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:</p>
<p>* شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.</p>
<p>* تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.</p>
<p>* تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.</p>
<p>* شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.</p>
<p>طبقه بندی‌ها هیچ برنامه غالبی برای دسته بندی زبان‌های برنامه نویسی وجود ندارد. یک زبان مشخص معمولا یک زبان اجدادی ندارد. زبان‌ها معمولا با ترکیب المان‌های چند زبان پیشینه بوجود می‌آیند که هربار ایده‌های جدید درگردشند. ایده‌هایی که در یک زبان ایجاد می‌شوند در یک خانواده از زبان‌های مرتبط پخش می‌شوند، و سپس از بین خلاهای بین خانواده‌ها منتقل شده و در خانواده‌های دیگر ظاهر می‌شوند.</p>
<p>این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر می‌کند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق می‌کند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.</p>
<p>در نگاه کلی، زبان‌های برنامه نویسی به مثال‌های برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم می‌شوند. مثال‌ها شامل برنامه نویسی رویه‌ای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبان‌ها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبان‌های برنامه نویسی ممکن است همه منظوره باشند، زبان‌های برنامه نویسی سیستمی، زبان‌های اسکریپتی، زبان‌های محدوده مشخص، زبان‌های همزمان/ گسترده(و یا ترکیب اینها). برخی زبان‌های همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شده‌اند.</p>
<p>یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه نویسی دسته بندی شود. برای مثال، غالب زبان‌های برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.</p>
<p>زبان برنامه‏سازی نسل سوم (High Level Language)</p>
<p>زبان برنامه‏سازی نسل سوم (3GL)، بهبودیافته زبان برنامه‏سازی نسل دوم است. در حالی که هدف زبان‏های برنامه‏سازی نسل دوم، قرار دادن ساختار منطقی در زبان بوده است، در زبان‏های برنامه‏سازی نسل سوم، هدف این است که قابلیّت استفاده از زبان‏ها را به گونه‏ای بهبود بخشند که ساده‏تر شوند؛ یعنی به‏کارگیری آن راحت‏تر باشد که منجر به این امر می‏شود که انواع مناسبی از توابع طوری بازنویسی شوند که کارایی بهبود بخشد و قسمت عمده حجم کد برنامه به کلاس‏ها اختصاص یابد (مانند ویژوال بیسیک). پیشرفت زبان نسل سوم نسبت به نسل دوم در این است که از منظر کاربر، قابلیّت استفاده از زبان بهبود یافته است. این نسل، اوّلین بار در اواخر دهه 1950 طرّاحی شد و فرترن، الگول و کوبول، نمونه‏هایی اوّلیّه از این نوع زبان هستند. بیشتر زبان‏های امروزی (بیسیک، C، C++، C#، پاسکال و جاوا)، نیز زبان‏های نسل سوم هستند. اغلب زبان‏های 3GL، برنامه‏نویسی ساختاریافته را پشتیبانی می‏کنند.</p>
<p>زبان برنامه‏سازی نسل چهارم (Very High Level Language)</p>
<p>زبان برنامه‏سازی نسل چهارم (دهه‏های 1970 تا 1990) (به طور خلاصه: 4GL)، یک زبان یا محیط برنامه‏سازی است که با منظور خاصّی طرّاحی شده است، از قبیل توسعه نرم‏افزارهای تجاری – بازرگانی. در سیر تکاملی دانش کامپیوتر، زبان‏های نسل چهارم به دنبال نسل سوم، روندی صعودی در تجرید و قدرت بیان بالاتر را طی کردند. در این نسل، تلاش‏هایی صورت گرفت تا زبان‏های نسل پنجم تعریف شده و مورد استفاده قرار گیرند. زبان طبیعی، شیوه ساختار بلوکی زبان‏های برنامه‏سازی نسل سوم، فرآیند توسعه نرم‏افزار را بهبود بخشید. در هر صورت، روش‏های توسعه زبان‏های نسل سوم، کند و خطاپذیر بودند. مشخّص شد که برخی از برنامه‏های کاربردی را می‏توان خیلی سریع‏تر توسعه داد؛ بدین صورت: با افزودن زبان برنامه‏سازی سطح بالاتر و متدولوژی‏ای که هم‏ارز دستورالعمل‏های بسیار پیچیده نسل سوم را تولید می‏کند. در برخی جهات، مهندسی نرم‏افزار به‏وجود آمد تا توسعه زبان‏های نسل سوم را یاری دهد. طرح‏های مربوط به زبان‏های نسل چهارم و پنجم، بیشتر در حلّ مسائل و مهندسی سیستم‏ها تمرکز یافته‏اند. تمامی زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا تقلّاهای مربوط به برنامه‏نویسی، زمان و هزینه توسعه نرم‏افزار را کاهش دهند. آن‏ها همواره در این زمینه موفّق نبوده‏اند، بعضی اوقات، کدهای تولید شده، زیبا و قابل نگهداشت نمی‏شوند. با وجود این مشکل، استفاده از 4GL مناسب، می‏تواند به طور فوق‏العادّه‏ای موفّقیّت‏آمیز باشد، چنان‏چه با MARK-IV و MAPPER دیده شده است (به بخش تاریخچه مراجعه کنید، برای پیگیری باربری در راه‏آهن شهر سانتافه، مرکز ایالت نیومکزیکو امریکا، کارایی هشت برابر بیشتر از کوبول، برآورد شده است). بهبود قابلیّت استفاده در بعضی از زبان‏های 4GL (و محیط آن‏ها)، اکتشاف راه‏حل‏های ذهنی را نیز نسبت به زبان‏های 3GL، بهتر ساخته است. یک تعریف کمّی از 4GL توسّط Caper Jones به عنوان بخشی از کارش در تحلیل نقطه‏ای تابع، صورت پذیرفت. Jones، نسل‏های مختلف زبان‏های برنامه‏سازی را بر حسب قابلیّت تولید توسعه‏دهنده، تعریف کرد که به صورت نقاط تابع (Function Points) به ازای هر بُرج کاری (Staff-Month)، اندازه‏گیری می‏شد. یک 4GL به عنوان زبانی تعریف شده است که 12 تا 20 FP/SM را پشتیبانی می‏کند. این نکته با تقریبا 16 تا 27 خطّ کد در هر نقطه تابع پیاده‏سازی‏شده در یک 4GL، مرتبط می‏شود. زبان‏های نسل چهارم، اغلب با زبان‏های برنامه‏سازی با کاربرد خاص (DSL ها) سنجیده می‏شوند. برخی محقّقان این‏گونه بیان می‏کنند که 4GL ها، زیرمجموعه‏ای از DSL ها هستند. ماندگاری زبان اسمبلی را تا کنون در محیط‏های توسعه پیشرفته (MS Studio) در نظر بگیرید؛ همه تصوّر می‏کنند که این سیستم باید و شاید، ترکیبی از تمامی نسل‏ها به همراه کاربرد خیلی محدودی از قدیم باشد.</p>
<p>تاریخچه به هرحال، طبق آن‏چه در مقالات و مباحثات قدیمی بوده است، اصطلاح 4GL، اوّلین بار به طور رسمی توسّط James Martin در کتابش به نام «توسعه برنامه‏های کاربردی بدون برنامه‏نویسان» در سال 1982، به کار گرفته شد که به مشخّصه‏های زبان‏های غیررویّه‏ای و سطح بالا، اطلاق می‏شد. در برخی سبک‏های قدیمی، تولیدکننده برنامه گزارش (RPG) شرکت IBM، در سال 1960، (که با دقّت توسّط دیگران پیگیری می‏شد) اوّلین 4GL را توصیف کرد، از قبیل محصول انفورماتیک MARK-IV و MAPPER از Sperry (کاربرد داخلی 1969، انتشار 1979). چندین انگیزه برای شروع و رغبت برای ادامه دادن 4GL، وجود دارد. این اصطلاح ممکن است شامل مجموعه بزرگی از محصولات نرم‏افزاری باشد. آن همچنین می‏تواند، رهیافتی برای جستجوی خصوصیّات معنایی بزرگ‏تر و قدرت پیاده‏سازی، در نظر گرفته شود. مشابه آن‏چه 3GL قدرت بیشتری برای برنامه‏ساز ارائه کرد، همان‏طور 4GL محیط توسعه را برای جمعیّت وسیع‏تری گشود. تا حدّی، 4GL نمونه‏ای از پردازش جعبه سیاه (black box) است، (بدین معنی که) هر نسلی جلوتر از ماشین است. این خاصیّت دوم مستقیما با این امر مرتبط می‏شود که 4GL شامل خطاهایی است که (در بسیاری از موارد) برای اشکال‏زدایی، دشوارتر است. بر حسب کاربرد، یک 4GL، می‏تواند مبتنی بر تجارت باشد یا این‏که با حوزه‏های فنّی سروکار داشته باشد. جلوتر بودن از ماشین، بر نزدیکی به سطح کاربرد، دلالت دارد. با در نظر گرفتن ناهمخوانی مفاهیم و متدها در حوزه‏ها، محدودیّت‏های 4GL منجر به تشخیص نیاز به 5GL شده است. الگوی اوّلیّه ورودی برای 4GL، ورود داده‏ها با محدودیّت 72 کاراکتر (8 بایت برای توالی) کارت‏های منگنه را پشتیبانی می‏کرد به گونه‏ای که برچسب هر کارت، نوع تابع را مشخّص می‏کرد. با استفاده عاقلانه چندین کارت، سطح 4GL انواع زیادی از پردازش و گزارش‏گیری قابلیّت را ارائه کرد در حالی که قابلیّت معادل کدنویسی شده در یک 3GL، شامل شاید تمام جعبه یا بیشتر کارت‏ها می‏شد. استعاره (metaphor) 72 کاراکتری تا مدّتی ادامه یافت تا این‏که رابط‏های ترمینال و حافظه سخت‏افزاری افزایش یافت. حتّی با محدودیّت‏هایش، این رهیافت از کاربردهای بسیار سطح بالا پشتیبانی می‏کرد. وقتی رابط‏ها بهبود یافتند و افزایش طول statement ها و کار کردن با ورودی مبتنی بر گرامر ممکن شد، توان بیشتری روی کار آمد. نمونه‏ای از این مورد را می‏توان در Nomad یافت. نمونه‏ای دیگر از توان Nomad، در توضیحات Nicholas Rawlings برای موزه تاریخچه کامپیوتر درباره NCSS، دیده می‏شود. در گزارش او آمده است که James Martin از Rawlings، راه‏حلّ Nomad برای یک مسئله استاندارد به نام مسئله مهندس می‏خواهد: &#8220;افزایش 6 درصدی نرخ شغل مهندسین، متوسّط 7 یا بهتر دارد.&#8221; مارتین 12 صفحه کوبول و سپس تنها یک یا دو صفحه Mark IV از انفورماتیک را تهیّه کرد. Rawlings، تنها عبارت زیر را پیشنهاد کرد، اجرای عملیّات شروع شونده در یک زمان &#8230; سیر تکاملی 4GL، تحت تأثیر چندین عامل قرار گرفته بود: محدودیّت‏های سخت‏افزار و سیستم‏عامل، فشار زیادی را اِعمال کرد. هنگامی که 4GL برای اوّلین بار ارائه شد، ترکیبی ناهمگون از سخت‏افزار و سیستم‏های عامل، پشتیبانی از توسعه برنامه‏های مشتری را برعهده گرفت که مختصّ سیستمی برای تضمین فروش شده بود. نمونه‏ای از این مورد، سیستم MAPPER است که توسّط Sperry توسعه یافت. به‏هرحال، این مسئله به قبل برمی‏گردد که در ابتدا سیستم در بسیاری از برنامه‏های کاربردی موفّق بود و به پلات‏فرم‏های پیشرفته منتقل شد. آخرین متغیّر در سیستم اطّلاعاتی تجاری (BIS)، قرار دارد که Unisys را ارائه می‏کند. MARK-IV به عنوان VISION:BUILDER معروف است و توسّط مؤسّسات کامپیوتری ارائه شد. راه‏آهن شهر سانتافه برای توسعه یک سیستم از MAPPER استفاده کرد؛ در پروژه‏ای که نمونه اوّلیّه 4GL، نمونه‏گیری سریع و برنامه‏نویسی توسّط کاربران بود. در واقع خیلی آسان‏تر بود که استفاده از MAPPER را به متخصّصان راه‏آهن بیاموزد تا این‏که عملیّات ریزه‏کاری‏های راه‏آهن به برنامه‏نویسان آموخته شود. یکی از زبان‏های قدیمی (و قابل حمل) که خصوصیّات 4GL را نیز داراست، Ramis بود که توسّط Gerald C. Cohen در Mathematica یک شرکت نرم‏افزار ریاضی، توسعه یافت. کوهِن ریاضی را کنار گذاشت و اطّلاعاتی را پایه‏گذاری کرد تا یک 4GL تقریبا مبتنی بر گزارش‏گیری به نام Focus را بسازد. انواع بعدی 4GL وابسته به سیستم پایگاه داده بوده و با نمونه‏های اوّلیّه در کاربرد تکنیک‏ها و منابعی که از بهبود کلّی محاسبات با زمان نتیجه می‏شد، بسیار اختلاف داشتند. یک نکته جالب توجّه در مورد 4GL، تحقّق رابط‏های گرافیکی و همچنین استدلالاتی بوده است که توسّط کاربر از زبانی که به سختی درک می‏شد، انجام می‏گرفت.</p>
<p>انواع انواع مختلفی از 4GL ها وجود دارد:  برنامه‏سازی مبتنی بر جدول (بدون کد)، معمولا با فریم‏ورک و کتابخانه‏های زمان اجرا، اجرا می‏شود. به‏جای استفاده از کد، توسعه‏دهنده، منطقش را با انتخاب یک عملیّات در یک لیست از پیش تعریف شده یا فرمان‏های دست‏کاری جدول داده‏ها، تعریف می‏کند. به عبارت دیگر، به جای کدنویسی، توسعه‏دهنده از الگوریتم برنامه‏نویسی مبتنی بر جدول (Table-driven) استفاده می‏کند؛ نمونه‏ای مناسب از این نوع زبان 4GL، eDeveloper است. این نوع ابزار را می‏توان در توسعه برنامه‏های کاربردی تجارتی به کار برد که معمولا شامل یک بسته‏بندی هستند که امکان گزارش‏گیری و نیز دست‏کاری داده‏های تجاری را فراهم می‏سازد، بنابراین آن‏ها همراه با صفحه‏های GUI (رابط گرافیکی کاربر) و ویراستارهای گزارش‏گیری هستند. مجتمع‏سازی آن‏ها در صورت لزوم برای بیشتر عملیّات ویژه سخت‏افزار / سیستم‏عامل، معمولا با DLL های سطح پایین‏تر ناشی از یک 3GL معمولی ارائه می‏شود.  مولّدهای گزارش‏گیری، فرمت داده‏ها و گزارش‏هایی را که باید تولید شود، را تشریح می‏کنند. آن‏ها گزارش مورد نیاز را یا مستقیما تولید کرده یا این‏که آن‏ها برنامه‏ای تولید می‏کنند که این گزارش را تولید کند.  مشابها، مولّدهای فرم، تعاملات آنلاین را با کاربران سیستم برنامه کاربردی مدیریّت می‏کنند یا برنامه‏ای برای انجام این کار، تولید می‏کنند.  هدف بیشتر 4GL ها (که گاهی اوقات به آن‏ها محیط‏های نسل چهارم گفته می‏شود)، تولید اتوماتیک کلّ سیستم‏هاست شامل خروجی‏های ابزارهای CASE (مهندسی نرم‏افزار با کمک کامپیوتر)، مشخّصات اِسکرین‏ها و گزارش‏ها و همجنین در صورت امکان مشخّصات چند منطق پردازش اضافی.  4GL های مدیریّت داده‏ها از قبیل SAS، SPSS و Stata که فرمان‏های کدنویسی مصنوعی را برای دست‏کاری داده‏ها، بازسازی فایل، انتخاب موارد و مستندسازی داده‏ها را فراهم می‏کنند تا داده‏ها برای تحلیل آماری و گزارش‏گیری، آماده باشند. بعضی از 4GL ها ابزارهایی را فراهم کرده‏اند که ذکر مشخّصه‏های تمامی اطّلاعات مورد نیاز را تسهیل می‏سازد:  James Martin، متدولوژی مربوط به توسعه سیستم‏های مهندسی اطّلاعات ارائه کرد که موارد زیر را به صورت اتوماسیون داشت: امکان ورود نتایج تجزیه و تحلیل سیستم به شکل نمودار جریان داده‏ها (DFD)، نمودار ارتباط موجودیّت‏ها (ERD) و &#8230; از صدها هزار خطّ کوبول که شبانه تولید شده بود.  جدیدترین محصولات 4GL طرّاح اوراکل و suite توسعه‏دهنده آن در کمپانی اوراکل، بر این موضوع تمرکز یافته‏اند که تعاریف، فرم‏ها و برنامه‏های گزارش پایگاه داده را تولید کنند.</p>
<p>چند نمونه از زبان‏های نسل چهارم</p>
<p> کاربرد عمومی / چند بعدی: Agile Business Suite، Clipper، Cognos PowerHouse 4GL، DataFlex، Discovery Machine Modeler، Forté TOOL (transactional object-oriented language)، FoxPro، IBM Rational EGL (Enterprise Generation Language)، Omnis Studio SDK، Panther، PowerBuilder، SheerPower4GL (Microsoft Windows Only)، SQLWindows/Team Developer، WinDev، Up ! 5GL، Visual DataFlex (Microsoft Windows Only).</p>
<p> زبان‏های پرس‏وجوی پایگاه داده: FOCUS، Genero، SB+/SystemBuilder، Informix-4GL، NATURAL، Progress 4GL، SQL.</p>
<p> مولّدهای گزارش: BuildProfessional، GEMBase، IDL-PV/WAVE، LINC، Metafont، NATURAL، Oracle Reports، Progress 4GL Query/Results، Quest، Report Builder، RPG-II.</p>
<p> زبان‏های دست‏کاری داده‏ها، تحلیل و گزارش‏گیری داده‏ها: Ab Initio، ABAP، Aubit-4GL، Audit Command Language، Clarion Programming Language، CorVision، Culprit، ADS/Online (Plus transaction processing)، DASL، FOCUS، GraphTalk، IDL، IGOR Pro، Informix-4GL، LANSA، LabVIEW، MAPPER (Unisys/Sperry) now part of BIS، MARK-IV (Sterling/Informatics) now VISION:BUILDER of CA، Mathematica، MATLAB، NATURAL، Nomad، PL/SQL، Progress 4GL، PROIV، R، Ramis، S، SAS، SPSS، Stata، Synon، XBase++، SQR.</p>
<p> زبان‏های مسیل داده (Data-stream): APE، AVS، Iris Explorer.</p>
<p> توسعه برنامه‏های کاربردی GUI مبتنی بر پایگاه داده: Action Request System، Genexus، SB+/SystemBuilder، Progress Dynamics، UNIFACE، OutSystems.</p>
<p> نگارگرها و مولّدهای تصویر: ابزارهای کیس (CASE) FOURGEN برای توسعه برنامه‏های کاربردی سریع (RAD) توسّط Gillani، SB+/SystemBuilder، Oracle Forms، Progress 4GL ProVision، Unify Accell.</p>
<p> سازنده‏های GUI: 4th Dimension (نرم‏افزار)، eDeveloper، راهنمای MATLAB، Omnis Studio، OpenRoad، Progress 4GL AppBuilder، Revolution programming language، Sculptor 4GL.</p>
<p> زبان‏های توسعه وب: 1. ColdFusion 2. WaveMaker open source, browser-based development platform for Ajax development based on Dojo, Spring, Hibernate 3. OutSystems</p>
<p>زبان برنامه‏سازی نسل پنجم (زبان‏های هوشمند)</p>
<p>زبان برنامه‏سازی نسل پنجم (یا به‏طور خلاصه 5GL)، یک زبان برنامه‏سازی است که در حلّ مسائل، با استفاده از اِعمال قیود به برنامه، مبتنی شده است تا استفاده از الگوریتم‏نویسی توسّط برنامه‏نویس. اکثر زبان‏های مبتنی بر قیود و زبان‏های برنامه‏سازی منطقی و بعضی از زبان‏های اعلانی، زبان‏های نسل پنجم هستند. در حالی که زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا برنامه‏های خاصّی را بسازند، زبان‏های نسل پنجم طرّاحی شده‏اند تا کامپیوتر را مجبور سازند که مسئله داده شده را بدون برنامه‏نویس حل کند. در این روش، برنامه‏نویس باید تنها در مورد آن‏چه مسئله نیاز دارد تا حل شود و آن شرایطی که با آن‏ها مواجه می‏شود، بیندیشد و نیازی نیست تا در مورد چگونگی پیاده‏سازی یک زیربرنامه یا الگوریتم برای حلّ آن مسائل بیندیشد. زبان‏های برنامه‏سازی نسل پنجم، عمدتا در تحقیقات هوش مصنوعی مورد استفاده قرار می‏گیرند. پرولوگ، OPS5 و Mercury، نمونه‏هایی از زبان‏های نسل پنجم هستند. این نمونه از زبان‏ها به عنوان موج آینده در نظر گرفته شده بودند و برخی پیش‏بینی کردند که این زبان‏ها برای توسعه سیستم، جایگزین تمامی زبان‏ها، به‏جز زبان‏های سطح پایین می‏شوند. قابل ملاحظه‏تر این‏که، ژاپنی‏ها از سال 1982 تا 1993، بیشترین تحقیق و هزینه را در پروژه سیستم‏های کامپیوتری نسل پنجم صرف کردند؛ به این امید که یک شبکه کامپیوتری عظیم از ماشین‏ها با استفاده از این ابزار طرّاحی کنند. در هر صورت، هم‏چنان‏که برنامه‏های بزرگتر ساخته شد، عیوب این رهیافت بیشتر آشکار شد. آن‏گونه که، تعریف کردن یک سری شرط در یک مسئله خاص، منجر به الگوریتمی کارا برای حلّ آن می‏شود که همین خود، یک مسئله بسیار دشوار است. این مرحله بحرانی هنوز به صورت اتوماتیک درنیامده و هم‏چنان هوش انسان برنامه‏نویس را می‏طلبد. امروزه، زبان‏های نسل پنجم، به عنوان یک سطح زبان کامپیوتری، به خوبی پیش نرفته است. تعدادی از فروشندگان نرم‏افزار، در حال حاضر، ادّعا دارند که نرم‏افزار آن‏ها، نیازمندی‏های مربوط به برنامه‏سازی بصری 5GL را پشتیبانی می‏کند.</p>
<p>تصوّر غلط رایج هرچند وقت یک‏بار، فروشندگان در فضای توسعه برنامه‏های کاربردی، قابلیّت‏های 5GL (زبان‏های نسل پنجم) را ادّعا می‏کنند. در اغلب اوقات، آن‏ها واقعا 4GL هایی را با سطوح بالاتری از اتوماسیون و پایگاه داده، می‏فروشند. چون اطّلاع از 5GL، پایین است و این بدان علّت است که اغراق‏گویی‏های (hype) در دهه 80، خیلی سریع ناپدید شد و سرانجام آن پروژه‏ها همگی از قلم افتادند؛ همین امر راه را برای فروشندگان باز کرد تا دوباره از این اصطلاح (hype) در فروش ابزارهای جدیدشان استفاده کنند؛ بدون این‏که جدال و مباحثه‏ای درباره نسل‏های فعلی برنامه‏سازان داشته باشند. وسایل و ابزار آن‏ها عملا از بسته‏بندی 4GL با امتیاز RAD، ابزارهای CASE و استفاده از کدنویسی گرافیکی (که نسل کد را تسهیل می‏بخشد)، تشکیل شده است. گام بعدی برای دستیابی به قابلیّت‏های کامل 5GL، با رهیافت گرافیکی همراه است که برنامه‏سازی را تسهیل می‏سازد.</p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1086  aligncenter" title="computer programming" src="http://www.poroge.com/wp-content/uploads/2010/07/computerprogramming-300x224.jpg" alt="computer programming" width="300" height="224" /></p>
<p>زبان‌های برنامه‌نویسی ساختارهای زبانی‌ دستورمداری در رایانه‌ها هستند که به‌وسیلهٔ آنها می‌توان یک الگوریتم را به‌وسیلهٔ ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرم‌افزارهای جدید بوجود می‌آید. معمولاً هر زبان برنامه‌نویسی دارای یک محیط نرم‌افزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند. عموماً زبانهای برنامه نویسی را به پنج نسل تقسیم می‌کنند: &#8230;&#8230;</p>
<p><span id="more-1085"></span></p>
<p>* نسل اول زبان ماشین &#8211; زبان صفرو یک</p>
<p>* نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان</p>
<p>* نسل سوم زبانهایی مانند کوبول و پی ال وان و&#8230; -دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها</p>
<p>* نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها &#8211; نزدیک به محاوره‌های انسانی</p>
<p>* نسل پنج زبانهایی مانند prolog , ops5 &#8211; تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط برنامه نویس</p>
<p>یک زبان برنامه نویسی یک زیان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است.زبان‌های برنامه نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، و یا روشی برای ارتباط انسانند. بسیاری از زبان‌های برنامه نویسی تعدادی قالب از ویژگی‌های نوشته شده دستوری(syntax) و معنا شناسی (semantics) دارند، چرا که رایانه‌ها دستورات دقیقا مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شده‌اند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده سازی غالبی می‌باشند.(مانند Perl) اولین زبان برنامه نویسی به قبل از اختراع رایانه باز می‌گردد، و برای هدایت رفتار ماشین‌هایی مانند دستگاه‌های نساجی اتوماتیک و نوازنده‌های پیانو به کار می‌رفت. هزاران زبان برنامه نویسی خلق شده‌اند، بیشتر در زمینهٔ رایانه، زمینه‌ای که هر ساله بسیاری دیگر ایجاد می‌شوند.</p>
<p><strong>تقسیم‌بندی</strong></p>
<p>زبان‌های برنامه نویسی را می‌توان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد: الف)روش‌های برنامه نویسی ۱-زیر روالی ۲-ساخت یافته ۳-مدولار ۴-شئ گرا ب)نزدیکی به زبان ماشین ۱-سطح پایین ۲-سطح میانی ۳-سطح بالا ج)نوع ترجمه ۱-مفسری ۲-کامپایلری د)رابط برنامه نویسی ۱-مبتنی بر متن ۲-مبتنی بر گرافیک (ویژوال)</p>
<p><strong>تعاریف</strong></p>
<p>ویژگی‌هایی که غالبا برای تشکیل یک زبان برنامه نویسی مهم شمرده می‌شوند:</p>
<p>* تابع :یک زبان برنامه نویسی، زبانی است که برای نوشتن برنامه‌های رایانه‌ای به کار می‌رود که رایانه‌ای را برای انجام محاسبات یا اجرای الگوریتم و یا احتمالا کنترل دستگاه‌های خارجی مثل چاپگر، ربات و&#8230; درگیر می‌کنند.</p>
<p>* هدف: زبان‌های برنامه نویسی با زبان‌های طبیعی تفاوت دارند و آن اینکه زبان‌های طبیعی فقط برای فعل و انفعالات بین مردم به کار می‌روند، در حالیکه زبان‌های برنامه نویسی همچنین به انسانها اجازه می‌دهد که از طریق دستورات با ماشین‌ها ارتباط برقرار کنند. برخی زبان‌های برنامه نویسی بوسیله یک دستگاه استفاده می‌شوند تا دستگاه دیگری را کنترل کند. برای مثال برنامه‌های پست اسکریپت(post script) غالبا توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد می‌شوند.</p>
<p>* ساختارها: زبان‌های برنامه نویسی ممکن است ساختار‌هایی برای تعریف و تغییر داده ساختارها یا کنترل جریان اجرا داشته باشند.</p>
<p>* توان بیانگر: نظریه محاسبات، زبان‌ها را بوسیله محاسباتی که توان بیان آنها را دارند طبقه بندی می‌کند. تمام زبان‌های &#8220;کامل تورینگ&#8221; می‌توانند مجموعه یکسانی از الگوریتم‌ها را پیاده سازی کنند.ANSI/ISO SQL و Charity مثال‌هایی هستند از زبان‌هایی که کامل تورینگ نیستند، ولی غالبا زبان برنامه نویسی نامیده می‌شوند.</p>
<p>برخی مولفین اصطلاح&#8221; زبان برنامه نویسی&#8221; را محدود به آنهایی می‌کنند که می‌توانند تمام الگوریتم‌های ممکن را پیاده سازی کنند، گاهی اوقات اصطلاح&#8221; زبان رایانه&#8221; برای زبان‌های برنامه نویسی محدودتر به کار می‌رود. زبان‌های غیر محاسباتی، مانند زبان‌های مارک آپ(markup) HTML یا گرامرهای قراردادی مثل BNF، معمولا زبان برنامه نویسی محسوب نمی‌شوند. یک زبان برنامه نویسی(که می‌تواند کامل تورینگ نباشد) ممکن است در این زبان‌های غیر محاسباتی (میزبان) تعبیه شوند.</p>
<p><strong> </strong></p>
<p><strong>کاربرد</strong></p>
<p>زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک برنامه نویس از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده ترین عناصر موجود بیان می‌شوند(مفاهیم ابتدایی نامیده می‌شوند). زبان‌های برنامه نویسی با غالب زبان‌های انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها &#8220;دقیقا آنچه که به آنها گفته شده را انجام می‌دهند.&#8221; و نمی‌توانند &#8220;بفهمند&#8221; که نویسنده دقیقا چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند. برنامه‌های یک رایانه ممکن است در یک فرآیند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامه‌ها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند. بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آنها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه" کامل" شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود: • محدوده برنامه‌ها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستم‌های بسیار بزرگ نوشته شده توسط صدها برنامه نویس است • توانایی برنامه نویس‌ها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفه‌ای‌هایی که با پیچیدگی قابل توجهی کنار می‌آیند. • برنامه‌ها باید سرعت، اندازه و سادگی را بسته به سیستم‌ها از ریزپردازندها تا ابر رایانه‌ها متناسب نگه دارند. • برنامه‌ها ممکن است یک بار نوشته شوند و تا نسل‌ها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند. • در نهایت، برنامه نویس‌ها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.</p>
<p>یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.</p>
<p><strong>المان‌ها</strong></p>
<p>تمام زبان‌های بزنامه نویسی تعدادی بلوک‌های ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معنا شناسی و دستوری تعریف می‌شوند که ساختار و معنای مربوطه را توضیح می‌دهند.</p>
<p><strong>دستور(</strong><strong>syntax</strong><strong>)</strong></p>
<p>فرم سطحی یک زبان برنامه نویسی دستور آن نامیده می‌شود. غالب زبان‌های برنامه نویسی کاملا متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده می‌کنند. از طرف دیگر، برنامه‌هایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبل‌ها برای مشخص کردن برنامه استفاده می‌کنند. دستور یک زبان ترکیبات ممکن سمبل‌ها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص می‌کند. معنایی که به یک ترکیب سمبل‌ها داده می‌شود با معناشناسی اداره می‌شود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبان‌ها متنی هستند، این مقاله دستور متنی را مورد بحث قرار می‌دهد.</p>
<p>دستور زبان برنامه نویسی معمولا بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف می‌شوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom  ::= number | symbol number  ::= [+-]?['۰'-'۹']+ symbol  ::= ['A'-'Za'-'z'].* list  ::= &#8216;(&#8216; expression* &#8216;)&#8217; این گرامر موارد ذیل را مشخص می‌کند:</p>
<p>* یک عبارت یا atom است و یا یک لیست</p>
<p>* یک atom یا یک عدد است و یا یک سمبل</p>
<p>* یک عدد دنباله ناشکسته‌ای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی می‌تواند پیش از آن بیاید.</p>
<p>* یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) می‌آید.</p>
<p>* یک لیست تعدادی پرانتز است که می‌تواند صفر یا چند عبارت در خود داشته باشد.</p>
<p>&#8220;۱۲۳۴۵&#8221;، &#8220;()&#8221;، &#8220;(a b c۲۳۲ (۱))&#8221; مثال‌هایی هستند از دنباله‌های خوش فرم در این گرامر.</p>
<p>همه برنامه‌هایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامه‌های درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامه‌هایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقا مطلوب نویسنده آن نبوده باشد.</p>
<p>به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اتلاق کرد و یا ممکن است جمله نادرست باشد:</p>
<p>* &#8220;ایده‌های بی رنگ سبز با خشم می‌خوابند.&#8221;از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.</p>
<p>* &#8220;جان یک مجرد متاهل است.&#8221; از نظر دستوری درست است، ولی معنایی را بیان می‌کند که نمی‌تواند درست باشد.</p>
<p>این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام می‌دهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p-&gt;real,p-&gt;im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p-&gt;real * p-&gt;real + p-&gt;im * p-&gt;im);</p>
<p>گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی می‌تواند با جایگاهش در &#8220;سلسله مراتب چامسکی&#8221; طبقه بندی شود. دستور اغلب زبان‌های برنامه نویسی می‌تواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.</p>
<p><strong>معناشناسی ایستا</strong></p>
<p>معناشناسی ایستا محدودیت‌هایی بر روی ساختار مجاز متن‌ها تعیین می‌کند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیت‌هابه وسیله سیستم نوع گذاری انجام می‌شود.</p>
<p><strong>سیستم نوع گذاری</strong></p>
<p>یک سیستم نوع گذاری مشخص می‌کند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی می‌کند، چگونه می‌تواند آن نوع‌ها را تغییر دهد و رفتار متقابل آن‌ها چگونه‌است. این کارعموما توضیح داده ساختارهایی که می‌توانند در آن زبان ایجاد شوند را شامل می‌شود. طراحی و مطالعه سیستم‌های نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.</p>
<p><strong>زبان‌های نوع گذاری شده و بدون نوع گذاری</strong></p>
<p>یک زبان نوع گذاری شده‌است اگر مشخصات هر عملیات، نوع داده‌های قابل اجرا توسط آن را با نشان دادن نوع‌هایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، &#8220;این متن درون گیومه قرار دارد&#8221; یک رشته‌است. در غالب زبان‌های برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبان‌های برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامه‌ها رد کنند. در برخی زبان‌ها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامه‌ها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبان‌های نوع دار زبان‌های تک نوعند. این زبان‌ها غالبا اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالبا رشته‌های کاراکتری که هم برای داده‌های عددی و هم برای داده‌های سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبان‌های اسمبلی، این امکان را می‌دهد که هر عملیاتی روی هر داده‌ای انجام شود، که معمولا دنباله‌ای از بیت‌ها با طول‌های متفاوت در نظر گرفته می‌شوند. زبان‌های سطح بالا که بی نوع هستند شامل زبان‌های ساده رایانه‌ای و برخی از انواع زبان‌های نسل چهارم.</p>
<p>در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی می‌شوند(چک کردن یا رد کردن تمام عملیات‌ها)، غالب زبان‌های امروزی درجه‌ای از نوع گذاری را فراهم می‌کنند. بسیاری از زبان‌های تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم می‌کنند.</p>
<p><strong>نوع گذاری ایستا و متحرک</strong></p>
<p>در نوع گذاری ایستا تمام عبارات نوع‌های خود را قبل از اجرای برنامه تعیین می‌کنند(معمولا در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمی‌توانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.</p>
<p>زبان‌های نوع گذاری شده ایستا می‌توانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحا نوع‌ها را در جایگاه‌های منتنی مشخص می‌نویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریف‌ها را بر اساس متن استنباط می‌کند. غالب زبان‌های مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری می‌شوند</p>
<p><strong>نوع گذاری قوی و ضعیف</strong></p>
<p>نوع گذاری ضعیف این امکان را ایجاد می‌کند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.</p>
<p>نوع گذاری قوی مانع رخ دادن مشکل فوق می‌شود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا می‌شود. زبان‌هایی که نوع گذاری قوی دارند غالبا با نام &#8220;نوع-امن&#8221; و یا امن شناخته می‌شوند. تمام تعاریف جایگزین برای &#8220;ضعیف نوع گذاری شده&#8221; به زبان‌ها اشاره می‌کند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را می‌دهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل می‌کند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشته‌ای از حروف باشد. چنین تبدیلات ضمنی غالبا مفیدند، اما خطاهای برنامه نویسی را پنهان می‌کنند.</p>
<p>قوی و ایستا در حال حاضر عموما دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت &#8220;قوی نوع گذاری شده&#8221; را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.</p>
<p><strong>معناشناسی اجرا</strong></p>
<p>وقتی که داده مشخص شد، ماشین باید هدایت شود تا عملیات‌ها را روی داده انجام دهد. معناشناسی اجرا ی یک زبان تعیین می‌کند که چگونه و چه زمانی ساختارهای گوناگون یک زبان باید رفتار برنامه را ایجاد کنند.</p>
<p>برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.</p>
<p><strong>کتابخانه هسته</strong></p>
<p>اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات &#8220;کتابخانه استاندارد&#8221; نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولا تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالبا با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک &#8220;بلاک&#8221;) نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختار‌های زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.</p>
<p><strong>عمل</strong></p>
<p>طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازی‌های زبان هستند.</p>
<p><strong>خصوصیات</strong></p>
<p>خصوصیات یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کننده‌های زبان می‌توانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب می‌تواند بگیرد، مانند مثال‌های زیر:</p>
<p>* تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولا با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)</p>
<p>* توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.</p>
<p>* پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحا در رفتار پیاده سازی مدل موجودند.</p>
<p><strong> </strong></p>
<p><strong>پیاده سازی</strong></p>
<p>پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سخت افزار و نرم افزار را فراهم می‌کند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش می‌توان یک زبان را پیاده سازی کرد.</p>
<p>خروجی یک کامپایلر ممکن است با سخت افزار و یا برنامه‌ای به نام مفسر اجرا شود. در برخی پیاده سازی‌ها که از مفسر استفاده می‌شود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازی‌های زبان برنامه نویسی بیسیک کامپایل می‌کنند و سپس کد را خط به خط اجرا می‌کنند.</p>
<p>برنامه‌هایی که مستقیما روی سخت افزار اجرا می‌شوند چندین برابر سریعتر از برنامه‌هایی که با کمک نرم افزار اجرا می‌شوند، انجام می‌شوند.</p>
<p>یک تکنیک برای بهبود عملکرد برنامه‌های تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقا قبل از اجرا، بلوک‌های کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سخت افزار ترجمه می‌کند.</p>
<p><strong>پیشرفت‌های اولیه</strong></p>
<p>اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.</p>
<p>در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.</p>
<p>کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.</p>
<p><strong>پالایش</strong></p>
<p>دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:</p>
<p>* APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.</p>
<p>* PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.</p>
<p>* در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به</p>
<p>عنوان اولین زبان کاملا شئ گرا معرفی شد.</p>
<p>* C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.</p>
<p>* Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.</p>
<p>* در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.</p>
<p>هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.</p>
<p>دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.</p>
<p>&#8220;ادسگر دیکسترا&#8221; در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.</p>
<p>در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.</p>
<p><strong>یکپارچگی و رشد</strong></p>
<p>دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.</p>
<p>یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالبا با ساختارهای برنامه نویسی عام همراه شده‌اند.</p>
<p>رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساسا نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.</p>
<p>۴GL ‌ها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با &#8220;مدرک اینجا&#8221; خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در &#8220;مدرک اینجا&#8221; استفاده کند.</p>
<p><strong>سنجش استفاده از زبان</strong></p>
<p>مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالبا روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولا برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:</p>
<p>* شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.</p>
<p>* تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.</p>
<p>* تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.</p>
<p>* شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.</p>
<p>طبقه بندی‌ها هیچ برنامه غالبی برای دسته بندی زبان‌های برنامه نویسی وجود ندارد. یک زبان مشخص معمولا یک زبان اجدادی ندارد. زبان‌ها معمولا با ترکیب المان‌های چند زبان پیشینه بوجود می‌آیند که هربار ایده‌های جدید درگردشند. ایده‌هایی که در یک زبان ایجاد می‌شوند در یک خانواده از زبان‌های مرتبط پخش می‌شوند، و سپس از بین خلاهای بین خانواده‌ها منتقل شده و در خانواده‌های دیگر ظاهر می‌شوند.</p>
<p>این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر می‌کند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق می‌کند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.</p>
<p>در نگاه کلی، زبان‌های برنامه نویسی به مثال‌های برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم می‌شوند. مثال‌ها شامل برنامه نویسی رویه‌ای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبان‌ها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبان‌های برنامه نویسی ممکن است همه منظوره باشند، زبان‌های برنامه نویسی سیستمی، زبان‌های اسکریپتی، زبان‌های محدوده مشخص، زبان‌های همزمان/ گسترده(و یا ترکیب اینها). برخی زبان‌های همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شده‌اند.</p>
<p>یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه نویسی دسته بندی شود. برای مثال، غالب زبان‌های برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.</p>
<p>زبان برنامه‏سازی نسل سوم (High Level Language)</p>
<p>زبان برنامه‏سازی نسل سوم (3GL)، بهبودیافته زبان برنامه‏سازی نسل دوم است. در حالی که هدف زبان‏های برنامه‏سازی نسل دوم، قرار دادن ساختار منطقی در زبان بوده است، در زبان‏های برنامه‏سازی نسل سوم، هدف این است که قابلیّت استفاده از زبان‏ها را به گونه‏ای بهبود بخشند که ساده‏تر شوند؛ یعنی به‏کارگیری آن راحت‏تر باشد که منجر به این امر می‏شود که انواع مناسبی از توابع طوری بازنویسی شوند که کارایی بهبود بخشد و قسمت عمده حجم کد برنامه به کلاس‏ها اختصاص یابد (مانند ویژوال بیسیک). پیشرفت زبان نسل سوم نسبت به نسل دوم در این است که از منظر کاربر، قابلیّت استفاده از زبان بهبود یافته است. این نسل، اوّلین بار در اواخر دهه 1950 طرّاحی شد و فرترن، الگول و کوبول، نمونه‏هایی اوّلیّه از این نوع زبان هستند. بیشتر زبان‏های امروزی (بیسیک، C، C++، C#، پاسکال و جاوا)، نیز زبان‏های نسل سوم هستند. اغلب زبان‏های 3GL، برنامه‏نویسی ساختاریافته را پشتیبانی می‏کنند.</p>
<p>زبان برنامه‏سازی نسل چهارم (Very High Level Language)</p>
<p>زبان برنامه‏سازی نسل چهارم (دهه‏های 1970 تا 1990) (به طور خلاصه: 4GL)، یک زبان یا محیط برنامه‏سازی است که با منظور خاصّی طرّاحی شده است، از قبیل توسعه نرم‏افزارهای تجاری – بازرگانی. در سیر تکاملی دانش کامپیوتر، زبان‏های نسل چهارم به دنبال نسل سوم، روندی صعودی در تجرید و قدرت بیان بالاتر را طی کردند. در این نسل، تلاش‏هایی صورت گرفت تا زبان‏های نسل پنجم تعریف شده و مورد استفاده قرار گیرند. زبان طبیعی، شیوه ساختار بلوکی زبان‏های برنامه‏سازی نسل سوم، فرآیند توسعه نرم‏افزار را بهبود بخشید. در هر صورت، روش‏های توسعه زبان‏های نسل سوم، کند و خطاپذیر بودند. مشخّص شد که برخی از برنامه‏های کاربردی را می‏توان خیلی سریع‏تر توسعه داد؛ بدین صورت: با افزودن زبان برنامه‏سازی سطح بالاتر و متدولوژی‏ای که هم‏ارز دستورالعمل‏های بسیار پیچیده نسل سوم را تولید می‏کند. در برخی جهات، مهندسی نرم‏افزار به‏وجود آمد تا توسعه زبان‏های نسل سوم را یاری دهد. طرح‏های مربوط به زبان‏های نسل چهارم و پنجم، بیشتر در حلّ مسائل و مهندسی سیستم‏ها تمرکز یافته‏اند. تمامی زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا تقلّاهای مربوط به برنامه‏نویسی، زمان و هزینه توسعه نرم‏افزار را کاهش دهند. آن‏ها همواره در این زمینه موفّق نبوده‏اند، بعضی اوقات، کدهای تولید شده، زیبا و قابل نگهداشت نمی‏شوند. با وجود این مشکل، استفاده از 4GL مناسب، می‏تواند به طور فوق‏العادّه‏ای موفّقیّت‏آمیز باشد، چنان‏چه با MARK-IV و MAPPER دیده شده است (به بخش تاریخچه مراجعه کنید، برای پیگیری باربری در راه‏آهن شهر سانتافه، مرکز ایالت نیومکزیکو امریکا، کارایی هشت برابر بیشتر از کوبول، برآورد شده است). بهبود قابلیّت استفاده در بعضی از زبان‏های 4GL (و محیط آن‏ها)، اکتشاف راه‏حل‏های ذهنی را نیز نسبت به زبان‏های 3GL، بهتر ساخته است. یک تعریف کمّی از 4GL توسّط Caper Jones به عنوان بخشی از کارش در تحلیل نقطه‏ای تابع، صورت پذیرفت. Jones، نسل‏های مختلف زبان‏های برنامه‏سازی را بر حسب قابلیّت تولید توسعه‏دهنده، تعریف کرد که به صورت نقاط تابع (Function Points) به ازای هر بُرج کاری (Staff-Month)، اندازه‏گیری می‏شد. یک 4GL به عنوان زبانی تعریف شده است که 12 تا 20 FP/SM را پشتیبانی می‏کند. این نکته با تقریبا 16 تا 27 خطّ کد در هر نقطه تابع پیاده‏سازی‏شده در یک 4GL، مرتبط می‏شود. زبان‏های نسل چهارم، اغلب با زبان‏های برنامه‏سازی با کاربرد خاص (DSL ها) سنجیده می‏شوند. برخی محقّقان این‏گونه بیان می‏کنند که 4GL ها، زیرمجموعه‏ای از DSL ها هستند. ماندگاری زبان اسمبلی را تا کنون در محیط‏های توسعه پیشرفته (MS Studio) در نظر بگیرید؛ همه تصوّر می‏کنند که این سیستم باید و شاید، ترکیبی از تمامی نسل‏ها به همراه کاربرد خیلی محدودی از قدیم باشد.</p>
<p>تاریخچه به هرحال، طبق آن‏چه در مقالات و مباحثات قدیمی بوده است، اصطلاح 4GL، اوّلین بار به طور رسمی توسّط James Martin در کتابش به نام «توسعه برنامه‏های کاربردی بدون برنامه‏نویسان» در سال 1982، به کار گرفته شد که به مشخّصه‏های زبان‏های غیررویّه‏ای و سطح بالا، اطلاق می‏شد. در برخی سبک‏های قدیمی، تولیدکننده برنامه گزارش (RPG) شرکت IBM، در سال 1960، (که با دقّت توسّط دیگران پیگیری می‏شد) اوّلین 4GL را توصیف کرد، از قبیل محصول انفورماتیک MARK-IV و MAPPER از Sperry (کاربرد داخلی 1969، انتشار 1979). چندین انگیزه برای شروع و رغبت برای ادامه دادن 4GL، وجود دارد. این اصطلاح ممکن است شامل مجموعه بزرگی از محصولات نرم‏افزاری باشد. آن همچنین می‏تواند، رهیافتی برای جستجوی خصوصیّات معنایی بزرگ‏تر و قدرت پیاده‏سازی، در نظر گرفته شود. مشابه آن‏چه 3GL قدرت بیشتری برای برنامه‏ساز ارائه کرد، همان‏طور 4GL محیط توسعه را برای جمعیّت وسیع‏تری گشود. تا حدّی، 4GL نمونه‏ای از پردازش جعبه سیاه (black box) است، (بدین معنی که) هر نسلی جلوتر از ماشین است. این خاصیّت دوم مستقیما با این امر مرتبط می‏شود که 4GL شامل خطاهایی است که (در بسیاری از موارد) برای اشکال‏زدایی، دشوارتر است. بر حسب کاربرد، یک 4GL، می‏تواند مبتنی بر تجارت باشد یا این‏که با حوزه‏های فنّی سروکار داشته باشد. جلوتر بودن از ماشین، بر نزدیکی به سطح کاربرد، دلالت دارد. با در نظر گرفتن ناهمخوانی مفاهیم و متدها در حوزه‏ها، محدودیّت‏های 4GL منجر به تشخیص نیاز به 5GL شده است. الگوی اوّلیّه ورودی برای 4GL، ورود داده‏ها با محدودیّت 72 کاراکتر (8 بایت برای توالی) کارت‏های منگنه را پشتیبانی می‏کرد به گونه‏ای که برچسب هر کارت، نوع تابع را مشخّص می‏کرد. با استفاده عاقلانه چندین کارت، سطح 4GL انواع زیادی از پردازش و گزارش‏گیری قابلیّت را ارائه کرد در حالی که قابلیّت معادل کدنویسی شده در یک 3GL، شامل شاید تمام جعبه یا بیشتر کارت‏ها می‏شد. استعاره (metaphor) 72 کاراکتری تا مدّتی ادامه یافت تا این‏که رابط‏های ترمینال و حافظه سخت‏افزاری افزایش یافت. حتّی با محدودیّت‏هایش، این رهیافت از کاربردهای بسیار سطح بالا پشتیبانی می‏کرد. وقتی رابط‏ها بهبود یافتند و افزایش طول statement ها و کار کردن با ورودی مبتنی بر گرامر ممکن شد، توان بیشتری روی کار آمد. نمونه‏ای از این مورد را می‏توان در Nomad یافت. نمونه‏ای دیگر از توان Nomad، در توضیحات Nicholas Rawlings برای موزه تاریخچه کامپیوتر درباره NCSS، دیده می‏شود. در گزارش او آمده است که James Martin از Rawlings، راه‏حلّ Nomad برای یک مسئله استاندارد به نام مسئله مهندس می‏خواهد: &#8220;افزایش 6 درصدی نرخ شغل مهندسین، متوسّط 7 یا بهتر دارد.&#8221; مارتین 12 صفحه کوبول و سپس تنها یک یا دو صفحه Mark IV از انفورماتیک را تهیّه کرد. Rawlings، تنها عبارت زیر را پیشنهاد کرد، اجرای عملیّات شروع شونده در یک زمان &#8230; سیر تکاملی 4GL، تحت تأثیر چندین عامل قرار گرفته بود: محدودیّت‏های سخت‏افزار و سیستم‏عامل، فشار زیادی را اِعمال کرد. هنگامی که 4GL برای اوّلین بار ارائه شد، ترکیبی ناهمگون از سخت‏افزار و سیستم‏های عامل، پشتیبانی از توسعه برنامه‏های مشتری را برعهده گرفت که مختصّ سیستمی برای تضمین فروش شده بود. نمونه‏ای از این مورد، سیستم MAPPER است که توسّط Sperry توسعه یافت. به‏هرحال، این مسئله به قبل برمی‏گردد که در ابتدا سیستم در بسیاری از برنامه‏های کاربردی موفّق بود و به پلات‏فرم‏های پیشرفته منتقل شد. آخرین متغیّر در سیستم اطّلاعاتی تجاری (BIS)، قرار دارد که Unisys را ارائه می‏کند. MARK-IV به عنوان VISION:BUILDER معروف است و توسّط مؤسّسات کامپیوتری ارائه شد. راه‏آهن شهر سانتافه برای توسعه یک سیستم از MAPPER استفاده کرد؛ در پروژه‏ای که نمونه اوّلیّه 4GL، نمونه‏گیری سریع و برنامه‏نویسی توسّط کاربران بود. در واقع خیلی آسان‏تر بود که استفاده از MAPPER را به متخصّصان راه‏آهن بیاموزد تا این‏که عملیّات ریزه‏کاری‏های راه‏آهن به برنامه‏نویسان آموخته شود. یکی از زبان‏های قدیمی (و قابل حمل) که خصوصیّات 4GL را نیز داراست، Ramis بود که توسّط Gerald C. Cohen در Mathematica یک شرکت نرم‏افزار ریاضی، توسعه یافت. کوهِن ریاضی را کنار گذاشت و اطّلاعاتی را پایه‏گذاری کرد تا یک 4GL تقریبا مبتنی بر گزارش‏گیری به نام Focus را بسازد. انواع بعدی 4GL وابسته به سیستم پایگاه داده بوده و با نمونه‏های اوّلیّه در کاربرد تکنیک‏ها و منابعی که از بهبود کلّی محاسبات با زمان نتیجه می‏شد، بسیار اختلاف داشتند. یک نکته جالب توجّه در مورد 4GL، تحقّق رابط‏های گرافیکی و همچنین استدلالاتی بوده است که توسّط کاربر از زبانی که به سختی درک می‏شد، انجام می‏گرفت.</p>
<p>انواع انواع مختلفی از 4GL ها وجود دارد:  برنامه‏سازی مبتنی بر جدول (بدون کد)، معمولا با فریم‏ورک و کتابخانه‏های زمان اجرا، اجرا می‏شود. به‏جای استفاده از کد، توسعه‏دهنده، منطقش را با انتخاب یک عملیّات در یک لیست از پیش تعریف شده یا فرمان‏های دست‏کاری جدول داده‏ها، تعریف می‏کند. به عبارت دیگر، به جای کدنویسی، توسعه‏دهنده از الگوریتم برنامه‏نویسی مبتنی بر جدول (Table-driven) استفاده می‏کند؛ نمونه‏ای مناسب از این نوع زبان 4GL، eDeveloper است. این نوع ابزار را می‏توان در توسعه برنامه‏های کاربردی تجارتی به کار برد که معمولا شامل یک بسته‏بندی هستند که امکان گزارش‏گیری و نیز دست‏کاری داده‏های تجاری را فراهم می‏سازد، بنابراین آن‏ها همراه با صفحه‏های GUI (رابط گرافیکی کاربر) و ویراستارهای گزارش‏گیری هستند. مجتمع‏سازی آن‏ها در صورت لزوم برای بیشتر عملیّات ویژه سخت‏افزار / سیستم‏عامل، معمولا با DLL های سطح پایین‏تر ناشی از یک 3GL معمولی ارائه می‏شود.  مولّدهای گزارش‏گیری، فرمت داده‏ها و گزارش‏هایی را که باید تولید شود، را تشریح می‏کنند. آن‏ها گزارش مورد نیاز را یا مستقیما تولید کرده یا این‏که آن‏ها برنامه‏ای تولید می‏کنند که این گزارش را تولید کند.  مشابها، مولّدهای فرم، تعاملات آنلاین را با کاربران سیستم برنامه کاربردی مدیریّت می‏کنند یا برنامه‏ای برای انجام این کار، تولید می‏کنند.  هدف بیشتر 4GL ها (که گاهی اوقات به آن‏ها محیط‏های نسل چهارم گفته می‏شود)، تولید اتوماتیک کلّ سیستم‏هاست شامل خروجی‏های ابزارهای CASE (مهندسی نرم‏افزار با کمک کامپیوتر)، مشخّصات اِسکرین‏ها و گزارش‏ها و همجنین در صورت امکان مشخّصات چند منطق پردازش اضافی.  4GL های مدیریّت داده‏ها از قبیل SAS، SPSS و Stata که فرمان‏های کدنویسی مصنوعی را برای دست‏کاری داده‏ها، بازسازی فایل، انتخاب موارد و مستندسازی داده‏ها را فراهم می‏کنند تا داده‏ها برای تحلیل آماری و گزارش‏گیری، آماده باشند. بعضی از 4GL ها ابزارهایی را فراهم کرده‏اند که ذکر مشخّصه‏های تمامی اطّلاعات مورد نیاز را تسهیل می‏سازد:  James Martin، متدولوژی مربوط به توسعه سیستم‏های مهندسی اطّلاعات ارائه کرد که موارد زیر را به صورت اتوماسیون داشت: امکان ورود نتایج تجزیه و تحلیل سیستم به شکل نمودار جریان داده‏ها (DFD)، نمودار ارتباط موجودیّت‏ها (ERD) و &#8230; از صدها هزار خطّ کوبول که شبانه تولید شده بود.  جدیدترین محصولات 4GL طرّاح اوراکل و suite توسعه‏دهنده آن در کمپانی اوراکل، بر این موضوع تمرکز یافته‏اند که تعاریف، فرم‏ها و برنامه‏های گزارش پایگاه داده را تولید کنند.</p>
<p>چند نمونه از زبان‏های نسل چهارم</p>
<p> کاربرد عمومی / چند بعدی: Agile Business Suite، Clipper، Cognos PowerHouse 4GL، DataFlex، Discovery Machine Modeler، Forté TOOL (transactional object-oriented language)، FoxPro، IBM Rational EGL (Enterprise Generation Language)، Omnis Studio SDK، Panther، PowerBuilder، SheerPower4GL (Microsoft Windows Only)، SQLWindows/Team Developer، WinDev، Up ! 5GL، Visual DataFlex (Microsoft Windows Only).</p>
<p> زبان‏های پرس‏وجوی پایگاه داده: FOCUS، Genero، SB+/SystemBuilder، Informix-4GL، NATURAL، Progress 4GL، SQL.</p>
<p> مولّدهای گزارش: BuildProfessional، GEMBase، IDL-PV/WAVE، LINC، Metafont، NATURAL، Oracle Reports، Progress 4GL Query/Results، Quest، Report Builder، RPG-II.</p>
<p> زبان‏های دست‏کاری داده‏ها، تحلیل و گزارش‏گیری داده‏ها: Ab Initio، ABAP، Aubit-4GL، Audit Command Language، Clarion Programming Language، CorVision، Culprit، ADS/Online (Plus transaction processing)، DASL، FOCUS، GraphTalk، IDL، IGOR Pro، Informix-4GL، LANSA، LabVIEW، MAPPER (Unisys/Sperry) now part of BIS، MARK-IV (Sterling/Informatics) now VISION:BUILDER of CA، Mathematica، MATLAB، NATURAL، Nomad، PL/SQL، Progress 4GL، PROIV، R، Ramis، S، SAS، SPSS، Stata، Synon، XBase++، SQR.</p>
<p> زبان‏های مسیل داده (Data-stream): APE، AVS، Iris Explorer.</p>
<p> توسعه برنامه‏های کاربردی GUI مبتنی بر پایگاه داده: Action Request System، Genexus، SB+/SystemBuilder، Progress Dynamics، UNIFACE، OutSystems.</p>
<p> نگارگرها و مولّدهای تصویر: ابزارهای کیس (CASE) FOURGEN برای توسعه برنامه‏های کاربردی سریع (RAD) توسّط Gillani، SB+/SystemBuilder، Oracle Forms، Progress 4GL ProVision، Unify Accell.</p>
<p> سازنده‏های GUI: 4th Dimension (نرم‏افزار)، eDeveloper، راهنمای MATLAB، Omnis Studio، OpenRoad، Progress 4GL AppBuilder، Revolution programming language، Sculptor 4GL.</p>
<p> زبان‏های توسعه وب: 1. ColdFusion 2. WaveMaker open source, browser-based development platform for Ajax development based on Dojo, Spring, Hibernate 3. OutSystems</p>
<p>زبان برنامه‏سازی نسل پنجم (زبان‏های هوشمند)</p>
<p>زبان برنامه‏سازی نسل پنجم (یا به‏طور خلاصه 5GL)، یک زبان برنامه‏سازی است که در حلّ مسائل، با استفاده از اِعمال قیود به برنامه، مبتنی شده است تا استفاده از الگوریتم‏نویسی توسّط برنامه‏نویس. اکثر زبان‏های مبتنی بر قیود و زبان‏های برنامه‏سازی منطقی و بعضی از زبان‏های اعلانی، زبان‏های نسل پنجم هستند. در حالی که زبان‏های برنامه‏سازی نسل چهارم طرّاحی شده‏اند تا برنامه‏های خاصّی را بسازند، زبان‏های نسل پنجم طرّاحی شده‏اند تا کامپیوتر را مجبور سازند که مسئله داده شده را بدون برنامه‏نویس حل کند. در این روش، برنامه‏نویس باید تنها در مورد آن‏چه مسئله نیاز دارد تا حل شود و آن شرایطی که با آن‏ها مواجه می‏شود، بیندیشد و نیازی نیست تا در مورد چگونگی پیاده‏سازی یک زیربرنامه یا الگوریتم برای حلّ آن مسائل بیندیشد. زبان‏های برنامه‏سازی نسل پنجم، عمدتا در تحقیقات هوش مصنوعی مورد استفاده قرار می‏گیرند. پرولوگ، OPS5 و Mercury، نمونه‏هایی از زبان‏های نسل پنجم هستند. این نمونه از زبان‏ها به عنوان موج آینده در نظر گرفته شده بودند و برخی پیش‏بینی کردند که این زبان‏ها برای توسعه سیستم، جایگزین تمامی زبان‏ها، به‏جز زبان‏های سطح پایین می‏شوند. قابل ملاحظه‏تر این‏که، ژاپنی‏ها از سال 1982 تا 1993، بیشترین تحقیق و هزینه را در پروژه سیستم‏های کامپیوتری نسل پنجم صرف کردند؛ به این امید که یک شبکه کامپیوتری عظیم از ماشین‏ها با استفاده از این ابزار طرّاحی کنند. در هر صورت، هم‏چنان‏که برنامه‏های بزرگتر ساخته شد، عیوب این رهیافت بیشتر آشکار شد. آن‏گونه که، تعریف کردن یک سری شرط در یک مسئله خاص، منجر به الگوریتمی کارا برای حلّ آن می‏شود که همین خود، یک مسئله بسیار دشوار است. این مرحله بحرانی هنوز به صورت اتوماتیک درنیامده و هم‏چنان هوش انسان برنامه‏نویس را می‏طلبد. امروزه، زبان‏های نسل پنجم، به عنوان یک سطح زبان کامپیوتری، به خوبی پیش نرفته است. تعدادی از فروشندگان نرم‏افزار، در حال حاضر، ادّعا دارند که نرم‏افزار آن‏ها، نیازمندی‏های مربوط به برنامه‏سازی بصری 5GL را پشتیبانی می‏کند.</p>
<p>تصوّر غلط رایج هرچند وقت یک‏بار، فروشندگان در فضای توسعه برنامه‏های کاربردی، قابلیّت‏های 5GL (زبان‏های نسل پنجم) را ادّعا می‏کنند. در اغلب اوقات، آن‏ها واقعا 4GL هایی را با سطوح بالاتری از اتوماسیون و پایگاه داده، می‏فروشند. چون اطّلاع از 5GL، پایین است و این بدان علّت است که اغراق‏گویی‏های (hype) در دهه 80، خیلی سریع ناپدید شد و سرانجام آن پروژه‏ها همگی از قلم افتادند؛ همین امر راه را برای فروشندگان باز کرد تا دوباره از این اصطلاح (hype) در فروش ابزارهای جدیدشان استفاده کنند؛ بدون این‏که جدال و مباحثه‏ای درباره نسل‏های فعلی برنامه‏سازان داشته باشند. وسایل و ابزار آن‏ها عملا از بسته‏بندی 4GL با امتیاز RAD، ابزارهای CASE و استفاده از کدنویسی گرافیکی (که نسل کد را تسهیل می‏بخشد)، تشکیل شده است. گام بعدی برای دستیابی به قابلیّت‏های کامل 5GL، با رهیافت گرافیکی همراه است که برنامه‏سازی را تسهیل می‏سازد.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1085</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>کار آفرینی در عصر اطلاعات وارتباطات</title>
		<link>http://www.poroge.com/?p=1081</link>
		<comments>http://www.poroge.com/?p=1081#comments</comments>
		<pubDate>Tue, 27 Jul 2010 15:39:31 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[مقالات]]></category>
		<category><![CDATA[ارتباطات]]></category>
		<category><![CDATA[اطلاعات]]></category>
		<category><![CDATA[عصر]]></category>
		<category><![CDATA[كار آفريني]]></category>
		<category><![CDATA[کار]]></category>
		<category><![CDATA[کارآموزی]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1081</guid>
		<description><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1082  aligncenter" title="asr_ertebatat" src="http://www.poroge.com/wp-content/uploads/2010/07/asr_ertebatat-300x240.jpg" alt="" width="300" height="240" /></a></p>
<p><strong>چ</strong><strong>كيده</strong>:</p>
<p>ارابة فناوري<a href="http://www.poroge.com"> اطلاعات و ارتباطات</a> به سرعت به پيش مي‌تازد و جوامع دنيا را دستخوش تغييرات بنيادي مي‌كند. فعاليت‌ها، مشاغل، مهارت‌ها، فرهنگ‌ها، نيازها و&#8230; همه و همه تحت تاثير اين فناوري قرار گرفته و متحّول شده‌اند. عصر اطلاعات و اتباطات آغاز شده است. بي‌شك كارآفريني سهم عمده و نقش ويژه‌اي در توسعه اين فناوري‌ها داشته و دارد؛ اگرچه اين فناوري‌ها نيز خود بر كارآفريني تاثير گذار بوده و به عبارتي كارآفريني مدرن را بوجود آورده‌اند.</p>
<p>اين مقاله به بررسي روابط متقابل كارآفريني و فناوري اطلاعات و ارتباطات پرداخته و با  مثال‌هايي ويژگي‌هاي كارآفريني در عصر اطلاعات و ارتباطات را تبيين نموده است. همچنين پيشنهاداتي براي گسترش كارآفريني اطلاعات در كشور يا بهره‌برداري مناسب از آن نيز، در اين مقاله ارائه شده است.</p>
<p><span id="more-1081"></span></p>
<p><strong>مقدمـــه</strong>:</p>
<p>جهان در سال‌هاي اخير شاهد انقلاب اطلاعات وارتباطات بوده و تحولات اجتماعي عظيمي در آن به وجود آمده است، به طوري كه در اثر اين تحولات، قرن جاري به نام فناوري اطلاعات و ارتباطات به ثبت رسيده است. در عصر اطلاعات و ارتباطات سطح بينش و آگاهي مردم افزايش يافته وكلية فعاليت‌هاي جمعيت رو به انفجار دنيا با مزيتهاي اين عصر، در قالب شبكه‌هاي ارتباطي به تعادل رسيده و كنترل شده است. در اين عصر دنيا دهكده‌اي متصل است كه افراد آن در هر لحظه كه بخواهند به هر گوشه آن مي‌توانند مسافرت كنند، از اخبار آن مطلع شوند و يا بدان جا پيغام بفرستند. اينترنت، تلفن‌همراه، محاسبات ‌بي‌سيم، نرم‌افزار و سخت‌افزار، هوش مصنوعي و … پديده‌هاي اين عصر هستند. فناوري اطلاعات و ارتباطات بر كليه فعاليت‌هاي اجتماعي از جمله كارآفريني اثرگذاشته و در بسياري از آنها <a href="http://www.poroge.com">تحولات </a>اساسي بوجود آورده است. امروزه كارآفريني به شدت به بسترهاي فناوري اطلاعات وابسته است و از آن بهره زيادي مي‌گيرد. شايد اغراق نباشد اگر كارآفريني مدرن بدون فناوري اطلاعات را امري غيرممكن بدانيم. از سوي ديگر توسعه فناوري اطلاعات و ارتباطات خود مرهون كارآفريني است. فعاليت‌هاي كارآفرينانه باعث شناخت نيازها، خلق ايده‌ها و تولد فناوري‌‌ها مي‌شوند. كارآفريني موتور توسعه فناوري و خلق فناوري‌هاي جديد است. كشورهاي پيشرفته، سردمداران بهره‌گيري از كارآفريني و توسعه فناوري هستند. تحولات جهاني نشان مي‌دهد كه  فناوري اطلاعات و ارتباطات مهمترين زمينه فعاليت اين كشورها در قرن اخير شده است. كشورهاي در حال توسعه نيز به سرعت به سمت دستيابي ازفناوري اطلاعات و استفاده از آن حركت مي‌كنند. به عنوان مثال دولت كره ‌از پنج زمينه فعاليت تكنولوژيك خود يعني فناوري اطلاعات، بيوتكنولوژي، نانوتكنولوژي، فناوري‌هاي محيط ‌زيست و فناوري‌هاي فرهنگي به فناوري اطلاعات بالاترين اولويت را داده است. با اين اوصاف شايسته است كه كشور ما نيز با سرعت هرچه بيشتر فعاليت خود را در حوزه اين فناوري تعميق بخشد تا بتواند در دنياي رقابتي عصر اطلاعات حرفي براي گفتن داشته باشد. درعصري كه ماهيت كارها، ماهيت‌ مشاغل و ماهيت‌ مهارت‌هاي لازم عوض شده است، اين كارآفريني است كه به چالش طلبيده مي‌شود. در اين مقاله، ابتدا به بررسي ويژگي عصر اطلاعات و معرفي كارآفريني پرداخته، در ادامه  نقش فناوري اطلاعات و ارتباطات در كارآفريني و كارآفريني در فناوري اطلاعات و ارتباطات را بررسي كرده‌ايم.</p>
<h3><strong>2- فناوري اطلاعات و ارتباطات، ابزار عصر اطلاعات </strong><strong> </strong></h3>
<h5>امروزه اهميت فناوري اطلاعات و ارتباطات<a href="#_ftn1">[1]</a> به منظور افزايش سرعت و دقت فعاليت‌هاي مختلف سازمان‌ها و ارتباط اجزاي مختلف آن با يكديگر و در نتيجه بالا بردن بهره‌وري آنها به روشني مشخص شده است. خصوصاً سازمان‌هايي كه بخش‌هاي مختلف آن در مناطق جغرافيايي پراكنده و دور از يكديگر قرار گرفته‌اند و يا موسساتي كه موظف به انجام كارهاي متنوع و متعدد هستند، بسياري از مشكلات خود از طريق اين تكنولوژي‌ها رفع مي‌كنند.</h5>
<p>انقلاب اطلاعات و ارتباطات يكي از اصطلاحاتي است كه با رشد تكنولوژي‌هاي اطلاعاتي در كنار انقلاب صنعتي مفهوم پيدا كرده است. همان‌گونه كه در اثر انقلاب صنعتي، مجموعه‌اي از كارخانه‌ها، ابزار و ماشين‌آلات، اتومبيل‌ها و غيره به كمك انسان آمدند و بسيار از كارهاي بدني او را بر عهده گرفتند، انواع محصولات تكنولوژي اطلاعات، نيز شامل سخت افزارها و نرم‌افزارهاي كامپيوتري، شبكه‌هاي مخابراتي، سيستم‌هاي ماهواره‌ و غيره براي كمك به آن ‌دسته از مسايل انسان كه با اطلاعات سر و كار دارند بوجود آمده و توسعه يافتند.كاربردهاي اين تكنولوژي‌ها شامل انواع محاسبات و پردازش‌هاي روزمرّه، تجارت، اطلاع‌رساني، مسايل علمي، مديريت، ارتباط مستقيم از راه دور وغيره مي باشد.</p>
<p>تجارب گوناگون سازمان‌هاي مختلف در سطح دنيا نشان مي‌دهد كه تكنولوژي اطلاعات به راحتي بسياي از مشكلات سيستم‌هاي اطلاعاتي را رفع مي‌كند. تكنولوژي اطلاعات قابليت‌هاي زيادي در رفع مشكلات سازمان‌ها دارد. به عنوان نمونه به چند مورد از مزاياي تكنولوژي اطلاعات اشاره مي‌شود.</p>
<p><strong> </strong></p>
<p><strong> &lt; </strong><strong>افزايش سرعت</strong></p>
<p>محاسبه و پردازش سريع اطلاعات و انتقال فوري آن، زمان انجام كار را كاهش و در نتيجه بهره‌وري را افزايش مي‌دهد. تكنولوژي اطلاعات امكان جستجو و دستيابي سريع به اطلاعات را نيز فراهم مي‌كند.<strong> </strong></p>
<p><strong> &lt; </strong><strong>افزايش دقت</strong></p>
<p>در مشاغل مبتني بر انسان دقت انجام كار متغير است؛ درحاليكه تكنولوژي اطلاعات دقتي بالا و ثابت را تامين و تضمين مي‌كند. در انواع فعاليت‌هاي پردازشي و محاسباتي دقت كامپيوتر به مراتب بيشتر از انسان است.<strong> </strong></p>
<p><strong> &lt; </strong><strong>كاهش اندازة فيزيكي مخازن <a href="http://www.poroge.com">اطلاعات</a></strong></p>
<p>با توسعة تكنولوژي اطلاعات و بكارگيري آن ديگر لزومي به حمل و نگهداري حجم زيادي از كتاب‌هاي مرجع تخصصي وجود ندارد. به راحتي مي‌توان در هر ديسك فشرده اطلاعات چندين كتاب را ذخيره نمود. مركز تحقيقات كامپيوتر علوم اسلامي قم، از جمله مراكزي است كه به انجام اين وظيفه مشغول است.<strong></strong></p>
<p><strong> &lt; </strong><strong>رفع برخي از فسادهاي اداري</strong></p>
<p>استفاده از تكنولوژي اطلاعات شفافيت در انجام كارها را افزايش مي‌دهد و بسياري از واسطه‌ها را حذف مي‌كند. اين دو مزيت كليدي منجر به رفع برخي از فسادهاي اداري خصوصاً در سطوح پايين مي‌شوند.<strong></strong></p>
<p><strong> &lt; </strong><strong>ايجاد امكان كار تمام وقت</strong></p>
<p>به كمك تكنولوژي اطلاعات بسياري از استعلام‌ها و مراجعات افراد و غيره از طريق شبكه‌هاي كامپيوتري و به صورت خودكار انجام مي‌گيرد. بنابر اين مي‌توان به صورت 24/7<sup>(<a href="#_ftn2">[2]</a>)</sup> از آن بهره گرفت.</p>
<p><strong> &lt; </strong><strong>ايجاد امكان همكاري از راه دور</strong></p>
<p>مخابرات، تلفن، تله كنفرانس، ويدئو كنفرانس و همچنين سيستم‌هاي همكاري مشترك<a href="#_ftn3"></a> و غيره نمونه‌هايي از كاربردهاي تكنولوژي اطلاعات در اين زمينه هستند.</p>
<p><strong> &lt; </strong><strong>كاهش هزينه‌هاي سيستم يا سازمان</strong></p>
<p>با توجه به موارد فوق به خصوص افزايش سرعت كه باعث انجام تعداد كار بيشتر مي‌شود و انجام كار  تمام‌وقت، بهره‌وري سيستم افزايش مي‌يابد و در نتيجه باعث كاهش مقدار زيادي از هزينه‌ها مي‌گردد. <strong></strong></p>
<p>آنچه مسلّم است تكنولوژي اطلاعات به منزلة يك سلاح و ابزار جديد براي فعاليت جهان معاصر محسوب مي‌شود كه عدم استفاده از آن انزواي كشور و در نهايت حذف شدن از جامعة جهاني را به دنبال خواهد داشت.</p>
<h6>3- نقش كار آفرينان در توسعه تكنولوژي</h6>
<p>كارآفريني<a href="#_ftn5">[5]</a> اصطلاحي است كه در طول 300 سال گذشته توسط دانشمندان و صاحبنظران به‌ صورت‌هاي مختلفي تعريف شده است. به طور خلاصه كارآفريني فعاليتي است مخاطره‌آميز كه فردي در پي اجراي يك ايده معمولاً اقتصادي توجه نهادهاي سرمايه‌گذاري، علمي، صنعتي و غيره را جلب نموده و نيروي آنها را به سمت عملي نمودن ايده هدايت مي‌كند. بنابراين يك ايده كه بر اساس يك نياز اجتماعي شكل گرفته از ملزومات كارآفريني است. نتيجه كارآفريني علاوه بر نوآوري در محصولات جديد، حل نيازهاي اجتماعي، ايجاد اشتغال براي ديگران،  افزايش سودآوري شركت‌ها و افراد و توسعه تكنولوژي است. كارآفريني باعث رفع نيازها به كمك تكنولوژي‌هاي جديد مي‌گردد. بسياري از محصولات تكنولوژي‌هاي جديد خصوصاً در حوزه فناوري اطلاعات و ارتباطات، در اثر فعاليت‌هاي كارآفرينانه بوجود آمده‌اند. اكثر شركت‌هاي فعّال در حوزه تكنولوژي مخصوصاً شركت‌هاي مبتني بر خلاقيت و نوآوري<a href="#_ftn6">[6]</a> كه فناوري‌هاي جديد را خلق مي‌كنند و اصطلاحاً درلبة فناوري فعّالند، شركتهايي كارآفرين هستند.</p>
<p>افراد كارآفرين از ويژگي‌هاي شخصيتي خاصي برخوردارند. مخاطره‌پذيري، نوآوري و خلاقيت، مسؤوليت‌پذيري و اعتماد به نفس، توانايي ارتباطات قوي، واقعگرائي، هدفگرايي، تهاجمي بودن، تحمل ابهام و عدم قطعيت، خوشبيني و تعّهد و اعتقاد به مركز كنترل دروني بخشي از ويژگي‌هاي اين افراد است. هر فرد كارآفرين ممكن است تعدادي از اين ويژگي‌ها را داشته باشد و با شخصيت منحصر به فردي به كارآفريني بپردازد. شخصيت از ملزومات كارآفريني است توسعه كار آفريني نيازمند تربيت افراد كار آفرين مي‌باشد. در سرتاسر دنيا مراكز مختلفي براي آموزش و كارآفريني وجود دارد اگرچه برخي از افراد روحية كارآفريني بيشتر را وابسته به تحولات زندگي افراد در طول ساليان مختلف مي‌دانند ولي اين تناقضي با آموزش كارآفريني ندارد. در آموزش كارآفريني بايستي افرادي كه بصورت بالقوه از روحيه كارآفريني برخوردارند انتخاب شده و سپس شخصيت‌شان به فعلّيت برسد. علاوه بر اين روش‌هاي ديگري مثل انكوباتورها، براي تحريك كارآفريني وجود دارد كه افراد عملاً تا سطحي از كارآفريني هدايت مي‌شوند و يكباره به خارج پرتاب مي‌گردند و با حمايت‌ها و راهنماي‌هاي بعدي از آنها استفاده مي‌نمايند.</p>
<p>نقش دولت در توسعه كارآفريني، علاوه بر ايجاد  بسترهاي سخت‌افزاري، نرم‌افزاري و حمايتي از كارآفريني، شناسايي، آموزش و هدايت فعاليت‌هاي كارآفرينانه است. توسعه تكنولوژي بسيار وابسته به كارآفريني است و نبايد از آن غافل ماند.</p>
<h1><strong>4- فناوري اطلاعات و ارتباطات در كارآفريني</strong><strong></strong></h1>
<p>امروزه بر همه روشن شده است كه اطلاعات و ارتباطات دو قدرت مهم مي‌باشند. اين دو هم خود ارزش دارند و هم ارزش بوجود مي‌آورند. فردي كه از بازراهاي مختلف و قيمت اجناس در آن بازراها را اطلاع داشته باشد يا از گذشته و آينده بازار باخبر باشد، تصميمات بهتري براي رسيدن به سود بيشتري مي تواند بگيرد. اطلاعات علاوه بر ارزش ذاتي، جنبه ديگري دارد كه به دانش منتهي مي‌شود و در مكانيزم تصميم‌گيري و انجام بهتر آن اثر مي‌گذارد. ارتباطات نيز مانند اطلاعات ارزشمند بوده و ارزش افزوده‌اي متناسب با اندازه و نوع ارتباطات نصيب افراد مي‌كند. انسان‌هايي كه ارتباطات متنوع، بيشتر و قويتري دارند، كارهاي خود را بهتر پيش مي‌برند و زودتر به نتيجه مي‌رسانند. هدف از اين بخش بررسي تأثيرات فناوري اطلاعات در ارتباطات در كارآفريني است.</p>
<p>اطلاعات و ارتباطات دو ابزار اساسي مورد نياز هر فعّاليت كارآفريني است. كارآفريني در انزوا و بدون حمايت نهادها، سازمان‌ها و انسان‌ها امكان‌پذير نيست. كارآفريني مستلزم كشف يك نياز اجتماعي است. و كشف نيازهاي اجتماعي به شناخت اجتماع، نيازهاي آن و بافت فرهنگي و اجتماعي و اقتصادي آن وابسته مي‌باشد. در شناسايي نياز هر فعّاليت كارآفرينانه، ايده‌پرداز يا تئوريسين مي‌بايست نسبت به محيط بينش و بصيرت داشته باشد و بداند چه راه‌حل‌هايي براي رفع‌آن نياز، در نقاط ديگري از دنيا ارائه شده است. مطمئناً شناسايي نيازها و ارائه راحل‌ها بدون اطلاعات امكان‌پذير نخواهد بود. بنابراين اطلاعات و دانش مانند ارتباطات از ملزومات هر فعّاليت كارآفريني است.</p>
<p>فناوري اطلاعات و ارتباطات جديد تحولات شگرفي در دستيابي به اطلاعات بوجود آورده و بسترهاي ارتباطي قويتري را فراهم كرده است. اين فناوري‌ها اهّميت و ارزش اطلاعات و ارتباطات را بالا برده‌اند. در نتيجه كارآفريني نيز مانند ساير امور از مزيت‌هاي اين فناوري بهره برده‌ است. براي درك اهّميت اين فناوري‌ها در <a href="http://www.poroge.com">كارآفريني </a>به بررسي نظريه شبكه‌هاي اجتماعي مي‌پردازيم. طبق نظريه شبكه‌هاي اجتماعي كارآفريني، فرايندي است كه در شبكه متغيّري از روابط اجتماعي واقع شده است و اين روابط اجتماعي مي‌توانند رابطه كارآفرين را با منابع و فرصت‌ها محدود يا تسهيل نمايند (1).</p>
<p>شبكه‌ها داراي سه ويژگي تراكم، دسترس‌پذيري و مركزيت مي‌باشند، به كمك اين ويژگي اثر بخش شبكه‌ها سنجيده مي‌شوند. تراكم به كثرت ارتباطات بين افراد، دسترس‌پذيري به قلمرو شبكه و تعداد واسطه‌هاي ارتباطي يا گروه‌هاي مرتبط، و مركزيت به فاصله كلي فرد از تمامي افراد ديگر و تعداد افرادي كه مي‌توانند به وي دسترسي داشته باشند اطلاق مي‌گردد.</p>
<p>براساس قانون متكالف<a href="#_ftn7">[7]</a> ارزش هر شبكه برابر n<sup>2</sup> است، وقتي تعداد اعضاي متصل به آن n باشد. به عنوان مثال يك دستگاه تلفن به تنهايي ارزش كاربردي ندارد و وقتي دو دستگاه تلفن متّصل در يك شبكه داشته باشيم اين شبكه ارزش خاصي برابر يك  ارتباط دارد. اگر دستگاه تلفن‌هاي متصل به شبكه n عدد بشود امكان ارتباطات برابر<sup>2</sup><sup>n</sup> است، پس ارزش شبكه يا همان ارزش ارتباطات توان دوم تعداد اعضاي شبكه مي‌باشد. البته اين ارزش به شبكه تعلق دارد  و هر يك از افراد به ميزان و نوع ارتباطاتي كه در اين شبكه برقرار مي‌كند از ارزش آن بهره مي‌برند.</p>
<p>توسعة فناوري اطلاعات و ارتباطات باعث ايجاد شبكه‌اي عظيم با مقياس جهاني، (اينترنت) شده است و بنابراين علاوه بر افزايش و ارزش ويژگي‌هاي مورد ذكر در نظريه شبكه‌هاي اجتماعي، قابليت‌هاي ارتباطي جديدي مانند كنفرانس از راه دور و يا فعاليت‌هاي توزيع ‌شده را بوجود آورده و دسترسي آسان‌تر و سريع‌تر به اطلاعات را امكان‌پذير ساخته‌اند.</p>
<p>در كشورهاي پيشرفته اينترنت، يكي از مهمترين ابزراهاي كارآفرينان است و اين افراد از طريق اين شبكه بر قابليت‌هاي خود افروده و از مزاياي آن بهره مي‌گيرند. در كشور ما به خاطر عدم توسعة قوي و قابل توجه اينترنت شايد اين شبكه ابزار كارآفريني چندان قوي محسوب نگردد، درحاليكه تلفن همراه يكي از ابزارهاي مهم كارآفريني در ايران است. بدون تلفن همراه كارآفريني تقريباً معني ندارد. چرا كه تلفن همراه دسترسي به افراد را از زمان خاص و محل خاص به صورت 24 ساعته تقريباً مستقل از مكان تغيير داده و در نتيجه ارزش ارتباطات را بالا برده است. بنابراين كارآفريني كه به شدت ارتباطات قوي وابسته مي‌باشد، به اين ابزار نيازمند است. نمونه‌هايي از كارآفريني كه در كشور مشاهده مي‌شود مؤيد اين مطلب است. به عنوان مثال گروهي از دانشجويان يك دانشگاه كه در پي يك ايده تجاري به ساخت نرم‌افزار انتخاب رشته و تجاري‌سازي و عرضه آن در هنگام انتخاب رشته كنكور سراسري پرداخته بودند، در نهايت با خريد يا اجاره چند دستگاه تلفن همراه در خوابگاه دانشجويي، فرآيند انتخاب رشته را توسط شبكه‌اي كه در كل كشور ايجاد كرده بودند، مديريت مي‌كردند.</p>
<p>در آينده انواع نرم‌افزارها، خصوصاً نرم‌افزارهاي هوشمند نيز مورد استفاده كارآفرينان قرار خواهند گرفت. و اين افراد به كمك اين نرم‌افزارها فعّال خواهند بود، فرصت‌ها را بهتر شناسايي خواهند كرد و  اطلاعات دقيق‌تر و مناسب‌تري را جمع‌آوري خواهند نمود. دانش و مفاهيم بهتري را درك خواهند كرد و ارتباطات ساده‌تر و گسترده‌تري را برقرار خواهند نمود. نرم‌افزارهايي كه شخصيت و ويژگي‌هاي افراد مختلف را كشف و شناسايي كرده و بسته به موقعيت در ارتباط با هر يك، عكس‌‌العمل‌هاي مناسبي ارائه‌ خواهند نمود. اينترنت و شبكه‌هاي الكترونيكي يك بستر ارتباطي هستند.  برقراري ارتباط با هر فرد، شيوه‌هاي خاص او را مي‌طلبد كه الان تا حد زيادي از دسترس ما خارج است. خصوصاً اولين ارتباط بسيار مهم است. نرم‌افزارهاي هوشمند كمك خواهند كرد تا اولين ارتباط آخرين ارتباط نباشد.</p>
<p>5- كارآفريني در فناوري اطلاعات و ارتباطات</p>
<p>تحولاتي كه در سال‌هاي اخير در حوزه فناوري اطلاعات و ارتباطات بوجود آمده است و عصر اطلاعات را شكل داده و همچنان پيش مي‌تازد و در جوامع و فرهنگ‌ها دگرگوني ايجاد، مرهون تلاش افراد بسياري از جمله كارآفرينان است. كارآفرينان اطلاعات، شرايط عصر اطلاعات را شناخته و با كارآفريني خود ملزومات اين عصر را پيدا كرده و با شيوه‌هاي خاص خود آن را ايجاد مي‌كنند حتي بروز عصر اطلاعات هم از نتايج كارآفريني است. اينترنت بزرگترين و قويترين شبكه ارتباطي دنيا، نمونه‌اي روشن از كارآفريني است. در طول تاريخ كدام يك از كارآفرينان توانسته‌اند نيازي را كشف كنند كه پس از رفع آن تحوّلي در كل دنيا داده و بستري براي كارآفريني ساير افراد ايجاد نمايند. شايسته است اين  كارآفريني كه خود بستري براي كارآفريني ديگران شده است را ابركارآفريني بناميم در سالهاي اخير نمونه‌‌هاي بسياري از كارآفريني در اينترنت به ثبت رسيده است، از آنجايكه تاكنون چنين شبكه عظيمي در تاريخ بشر وجود نداشته است.  زمينه‌هاي فعاليت در آن بكر بوده و فرصت براي نوآوري و خلاقيت بسيار است. شركت‌هاي اينترنتي و شركت‌هاي <span style="text-decoration: underline;">Com</span> در چند سال اخير ايجاد، و به سرعت رشد كردند.</p>
<p>شركت‌هايي مانند Yahoo، ebay،Amazon  و ديگران در مدت كوتاهي توانسته‌اند ارزش بسياري را كسب نمايند. آمارها نشان مي‌دهد كه در طي 5 سال آخر قرن گذشته ارزش برخي از اين شركت‌ها بيش از 200 برابر شده است درحاليكه ميزان رشد سودآوري آنها كمتر از 10 برابر بوده است. كارآفريني در اينترنت به اين موارد خلاصه نمي‌شود و موارد بسياري خصوصاً در زمينه نرم‌افزارهاي مبتني بر شبكه و همچنين محتويات شبكه وجود دارد. كارآفرينی در شيوه‌هاي جذب مشتريان اينترنتي، بازاريابي اينترنتي، همكاري‌ها و شبكه‌هاي مجازی، الكترونيك، واقعيت مجازي، آموزش و كار از راه دور و … همه و همه گستردگي كارآفرينی در عصر اطلاعات را نشان مي‌دهند.</p>
<p>بازار گسترده اينترنت فرصت خوبي براي صادرات نرم‌افزار است. اينترنت شبكه‌اي مجازي است كه تا حد زيادي مستقل از محل مي باشد. اين شبكه بازاري بدون مرز است كه مي‌توان به راحتي در آن تجارت نمود. درخشش شركت‌هاي اينترنتي فرصت مناسبي براي صادرات نرم‌افزار است. براي اين منظور مي‌بايست  افراد كارآفرين با ايده‌هايي نو، شركت‌هايي اينترنتي را تاسيس كنند و پس از مدتي كه ارزش فوق‌العاده‌اي يافتند آنها را بفروشند. همان‌طور كه گفتيم سود‌آوري اين شركت‌ها  اهميت زيادي ندارد بلكه فروش آنها منبع درآمد و در نتيجه صادرات نرم افزاري خواهد بود.</p>
<p>«كار آفريني موتور توسعه فناوري اطلاعات و ارتباطات است» با كارآفريني است كه نيازها شناخته مي‌شود و با رفع نيازها پيشرفت حاصل مي‌شود. كشورهاي پيشرفته به اين دليل پيشرفته‌اند كه در فناوري پيشرفت كرده‌اند و توسط آن، هم اقتصاد جهان را در اختيار گرفته، هم قدرت نظامي شده‌اند و هم فرهنگ جهان را به سوي خواسته‌هاي خود هدايت مي‌كنند. كارآفريني اطلاعات <a href="#_ftn8">[8]</a>در سطوح مختلف <strong>الف- سخت‌افزار ب- نرم‌افزار  ج- اطلاعات    د-ارتباطات هـ- كاربرد،</strong> انجام‌پذير است. <strong></strong></p>
<p>در هريك از اين سطوح فرصت‌هاي بسياري براي كارآفريني وجود دارد. كه نيازمند حمايت مراكز سرمايه‌گذاري و تلاش‌هاي كارآفرينانه است. كارآفريني در حوزه اطلاعات بسيار راحت‌تر و عملي‌تر از كارآفريني در ساير حوزه‌هاست. به عنوان مثال در حوزه نيروگاه هسته‌اي به دليل كاربرد محدود، ايده‌هاي كمتري وجود دارد و به علاوه سرمايه‌گذاري فوق‌العاده زياد و درصد امكان‌پذيري كم، مانع هر فعّاليت كارآفرينانه است و درحاليكه در حوزه فناوري اطلاعات و ارتباطات كه درهمه جا گسترده شده است، ايده‌هاي بسياري خلق مي‌شود و ميزان سرمايه‌گذاري مورد نياز كه ايده‌ها را به نتيجه برسانند چندان زياد نيستند. بنابراين كارآفريني اطلاعات به راحتي انجام مي‌شود و اين خود دليلي بر سرعت نمايي رشد فناوري اطلاعات است.<strong> </strong></p>
<p><strong>6- نتيجه‌گيري </strong></p>
<p>ملاحظه شد كه فناوري اطلاعات و ارتباطات تحولات زيادي در كليه فعاليت‌هاي اجتماعي ازجمله كارآفريني بوجود آورده و به عنوان مهمترين ابزار كارآفريني مدرن مورد توجه قرار گرفته است. همچنين كارآفريني در فناوري اطلاعات پهنه وسيعي براي فعاليت دارد. كارآفريني لازمة توسعه فناوري و توسعه فناوري بستر كارآفريني است. براين اساس اهّميت نقش بسترسازي كارآفريني و وظيفه دولت مشخص مي‌شود. دولت بايد بستر كارآفريني در حوزه فناوري اطلاعات كه همان شبكه‌هاي ارتباطي و اطلاعاتي مي‌باشد را توسعه دهد و تقويت كند و امكان دسترسي آسان همگان به اين شبكه‌ها را فراهم نمايد. ضمن اينكه فرهنگ استفاده از شبكه‌ها را ايجاد كرده و گسترش دهد و قوانين و مقررات لازم را تدوين و اجرا نمايد.</p>
<p>فرار مغزها كه خصوصاً در فناوري‌هاي نو بيشتر رايج است، از نتايج ضعف كارآفريني در كشورهاي در حال توسعه است. بسياري از نيروهاي تحصيل كرده اين كشورها، صرفاً علمي بار آمده و تربيت شده‌اند و بايد توسط ديگران مديريت شوند؛ افرادي هم كه شخصيت  كارآفريني دارند بستر كارآفريني را در اين كشورها نمي‌يابند. جالب اينكه تمركز كشورهاي توسعه‌ يافته بيشتر بر فعّاليت‌هاي كارآفرينانه تربيت نيروهاي داخلي خود در اين حوزه است و از اين طريق نيروهاي متخصص خارجي را بكار مي‌گيرند و در راستاي اهداف خود از آنان بهره‌برداري مي‌كنند. كارآفرينان مي‌توانند مشاغلي در لبة تكنولوژي براي متخصصين داخل كشور ايجاد كنند و در اثر رضايت شغلي كه بوجود مي‌آورد علاوه بر كليه مزيت‌هاي كارآفريني از فرار مغزها نيز جلوگيري نمايد.</p>
<p>دولت بايد علاوه بر ايجاد بسترهاي سخت‌افزاري و نرم‌افزاري فناوري اطلاعات و ارتباطات و رفع موانع آن، زمينه‌هاي حمايت از فعاليت كارآفرينان را فراهم كند، نهادهاي سرمايه‌گذاري لازم را تاسيس نموده و با نهادهاي آموزشي، پژوهشي و انكوباتورها به صورت هدف‌دار افراد بالقوه كارآفرين متخصص را شناسايي كرده و كارآفريني را در آنها به فعلّيت برساند و از مزيت‌هاي اين انسان‌ها متعهد در پيشبرد اهداف كشور بهره بگيرد.</p>
<p>دولت در بند ب تبصره 11 ماده واحده قانون بودجه سال 80 مبلغ 5/1 ميليون تومان وام خود اشتغالي براي جوانان در نظر گرفته است. واقعيت اين است كه بسياري از جوانان بيكار مشكل‌شان داشتن اين مبلغ نيست بلكه مشكل آنها نداشتن راه‌حل يا آماده نبودن بسترهاي كارآفريني است. چقدر مناسب است كه در سال‌هاي آتي دولت بودجه را با هدايت صحيح صرف بسترسازي فعّاليت‌هاي كارآفرينانه نمايد و از اين طريق در فناوري‌هاي نو به خصوص فناوري اطلاعات و ارتباطات ايجاد اشتغال كند.</p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1082  aligncenter" title="asr_ertebatat" src="http://www.poroge.com/wp-content/uploads/2010/07/asr_ertebatat-300x240.jpg" alt="" width="300" height="240" /></a></p>
<p><strong>چ</strong><strong>كيده</strong>:</p>
<p>ارابة فناوري<a href="http://www.poroge.com"> اطلاعات و ارتباطات</a> به سرعت به پيش مي‌تازد و جوامع دنيا را دستخوش تغييرات بنيادي مي‌كند. فعاليت‌ها، مشاغل، مهارت‌ها، فرهنگ‌ها، نيازها و&#8230; همه و همه تحت تاثير اين فناوري قرار گرفته و متحّول شده‌اند. عصر اطلاعات و اتباطات آغاز شده است. بي‌شك كارآفريني سهم عمده و نقش ويژه‌اي در توسعه اين فناوري‌ها داشته و دارد؛ اگرچه اين فناوري‌ها نيز خود بر كارآفريني تاثير گذار بوده و به عبارتي كارآفريني مدرن را بوجود آورده‌اند.</p>
<p>اين مقاله به بررسي روابط متقابل كارآفريني و فناوري اطلاعات و ارتباطات پرداخته و با  مثال‌هايي ويژگي‌هاي كارآفريني در عصر اطلاعات و ارتباطات را تبيين نموده است. همچنين پيشنهاداتي براي گسترش كارآفريني اطلاعات در كشور يا بهره‌برداري مناسب از آن نيز، در اين مقاله ارائه شده است.</p>
<p><span id="more-1081"></span></p>
<p><strong>مقدمـــه</strong>:</p>
<p>جهان در سال‌هاي اخير شاهد انقلاب اطلاعات وارتباطات بوده و تحولات اجتماعي عظيمي در آن به وجود آمده است، به طوري كه در اثر اين تحولات، قرن جاري به نام فناوري اطلاعات و ارتباطات به ثبت رسيده است. در عصر اطلاعات و ارتباطات سطح بينش و آگاهي مردم افزايش يافته وكلية فعاليت‌هاي جمعيت رو به انفجار دنيا با مزيتهاي اين عصر، در قالب شبكه‌هاي ارتباطي به تعادل رسيده و كنترل شده است. در اين عصر دنيا دهكده‌اي متصل است كه افراد آن در هر لحظه كه بخواهند به هر گوشه آن مي‌توانند مسافرت كنند، از اخبار آن مطلع شوند و يا بدان جا پيغام بفرستند. اينترنت، تلفن‌همراه، محاسبات ‌بي‌سيم، نرم‌افزار و سخت‌افزار، هوش مصنوعي و … پديده‌هاي اين عصر هستند. فناوري اطلاعات و ارتباطات بر كليه فعاليت‌هاي اجتماعي از جمله كارآفريني اثرگذاشته و در بسياري از آنها <a href="http://www.poroge.com">تحولات </a>اساسي بوجود آورده است. امروزه كارآفريني به شدت به بسترهاي فناوري اطلاعات وابسته است و از آن بهره زيادي مي‌گيرد. شايد اغراق نباشد اگر كارآفريني مدرن بدون فناوري اطلاعات را امري غيرممكن بدانيم. از سوي ديگر توسعه فناوري اطلاعات و ارتباطات خود مرهون كارآفريني است. فعاليت‌هاي كارآفرينانه باعث شناخت نيازها، خلق ايده‌ها و تولد فناوري‌‌ها مي‌شوند. كارآفريني موتور توسعه فناوري و خلق فناوري‌هاي جديد است. كشورهاي پيشرفته، سردمداران بهره‌گيري از كارآفريني و توسعه فناوري هستند. تحولات جهاني نشان مي‌دهد كه  فناوري اطلاعات و ارتباطات مهمترين زمينه فعاليت اين كشورها در قرن اخير شده است. كشورهاي در حال توسعه نيز به سرعت به سمت دستيابي ازفناوري اطلاعات و استفاده از آن حركت مي‌كنند. به عنوان مثال دولت كره ‌از پنج زمينه فعاليت تكنولوژيك خود يعني فناوري اطلاعات، بيوتكنولوژي، نانوتكنولوژي، فناوري‌هاي محيط ‌زيست و فناوري‌هاي فرهنگي به فناوري اطلاعات بالاترين اولويت را داده است. با اين اوصاف شايسته است كه كشور ما نيز با سرعت هرچه بيشتر فعاليت خود را در حوزه اين فناوري تعميق بخشد تا بتواند در دنياي رقابتي عصر اطلاعات حرفي براي گفتن داشته باشد. درعصري كه ماهيت كارها، ماهيت‌ مشاغل و ماهيت‌ مهارت‌هاي لازم عوض شده است، اين كارآفريني است كه به چالش طلبيده مي‌شود. در اين مقاله، ابتدا به بررسي ويژگي عصر اطلاعات و معرفي كارآفريني پرداخته، در ادامه  نقش فناوري اطلاعات و ارتباطات در كارآفريني و كارآفريني در فناوري اطلاعات و ارتباطات را بررسي كرده‌ايم.</p>
<h3><strong>2- فناوري اطلاعات و ارتباطات، ابزار عصر اطلاعات </strong><strong> </strong></h3>
<h5>امروزه اهميت فناوري اطلاعات و ارتباطات<a href="#_ftn1">[1]</a> به منظور افزايش سرعت و دقت فعاليت‌هاي مختلف سازمان‌ها و ارتباط اجزاي مختلف آن با يكديگر و در نتيجه بالا بردن بهره‌وري آنها به روشني مشخص شده است. خصوصاً سازمان‌هايي كه بخش‌هاي مختلف آن در مناطق جغرافيايي پراكنده و دور از يكديگر قرار گرفته‌اند و يا موسساتي كه موظف به انجام كارهاي متنوع و متعدد هستند، بسياري از مشكلات خود از طريق اين تكنولوژي‌ها رفع مي‌كنند.</h5>
<p>انقلاب اطلاعات و ارتباطات يكي از اصطلاحاتي است كه با رشد تكنولوژي‌هاي اطلاعاتي در كنار انقلاب صنعتي مفهوم پيدا كرده است. همان‌گونه كه در اثر انقلاب صنعتي، مجموعه‌اي از كارخانه‌ها، ابزار و ماشين‌آلات، اتومبيل‌ها و غيره به كمك انسان آمدند و بسيار از كارهاي بدني او را بر عهده گرفتند، انواع محصولات تكنولوژي اطلاعات، نيز شامل سخت افزارها و نرم‌افزارهاي كامپيوتري، شبكه‌هاي مخابراتي، سيستم‌هاي ماهواره‌ و غيره براي كمك به آن ‌دسته از مسايل انسان كه با اطلاعات سر و كار دارند بوجود آمده و توسعه يافتند.كاربردهاي اين تكنولوژي‌ها شامل انواع محاسبات و پردازش‌هاي روزمرّه، تجارت، اطلاع‌رساني، مسايل علمي، مديريت، ارتباط مستقيم از راه دور وغيره مي باشد.</p>
<p>تجارب گوناگون سازمان‌هاي مختلف در سطح دنيا نشان مي‌دهد كه تكنولوژي اطلاعات به راحتي بسياي از مشكلات سيستم‌هاي اطلاعاتي را رفع مي‌كند. تكنولوژي اطلاعات قابليت‌هاي زيادي در رفع مشكلات سازمان‌ها دارد. به عنوان نمونه به چند مورد از مزاياي تكنولوژي اطلاعات اشاره مي‌شود.</p>
<p><strong> </strong></p>
<p><strong> &lt; </strong><strong>افزايش سرعت</strong></p>
<p>محاسبه و پردازش سريع اطلاعات و انتقال فوري آن، زمان انجام كار را كاهش و در نتيجه بهره‌وري را افزايش مي‌دهد. تكنولوژي اطلاعات امكان جستجو و دستيابي سريع به اطلاعات را نيز فراهم مي‌كند.<strong> </strong></p>
<p><strong> &lt; </strong><strong>افزايش دقت</strong></p>
<p>در مشاغل مبتني بر انسان دقت انجام كار متغير است؛ درحاليكه تكنولوژي اطلاعات دقتي بالا و ثابت را تامين و تضمين مي‌كند. در انواع فعاليت‌هاي پردازشي و محاسباتي دقت كامپيوتر به مراتب بيشتر از انسان است.<strong> </strong></p>
<p><strong> &lt; </strong><strong>كاهش اندازة فيزيكي مخازن <a href="http://www.poroge.com">اطلاعات</a></strong></p>
<p>با توسعة تكنولوژي اطلاعات و بكارگيري آن ديگر لزومي به حمل و نگهداري حجم زيادي از كتاب‌هاي مرجع تخصصي وجود ندارد. به راحتي مي‌توان در هر ديسك فشرده اطلاعات چندين كتاب را ذخيره نمود. مركز تحقيقات كامپيوتر علوم اسلامي قم، از جمله مراكزي است كه به انجام اين وظيفه مشغول است.<strong></strong></p>
<p><strong> &lt; </strong><strong>رفع برخي از فسادهاي اداري</strong></p>
<p>استفاده از تكنولوژي اطلاعات شفافيت در انجام كارها را افزايش مي‌دهد و بسياري از واسطه‌ها را حذف مي‌كند. اين دو مزيت كليدي منجر به رفع برخي از فسادهاي اداري خصوصاً در سطوح پايين مي‌شوند.<strong></strong></p>
<p><strong> &lt; </strong><strong>ايجاد امكان كار تمام وقت</strong></p>
<p>به كمك تكنولوژي اطلاعات بسياري از استعلام‌ها و مراجعات افراد و غيره از طريق شبكه‌هاي كامپيوتري و به صورت خودكار انجام مي‌گيرد. بنابر اين مي‌توان به صورت 24/7<sup>(<a href="#_ftn2">[2]</a>)</sup> از آن بهره گرفت.</p>
<p><strong> &lt; </strong><strong>ايجاد امكان همكاري از راه دور</strong></p>
<p>مخابرات، تلفن، تله كنفرانس، ويدئو كنفرانس و همچنين سيستم‌هاي همكاري مشترك<a href="#_ftn3"></a> و غيره نمونه‌هايي از كاربردهاي تكنولوژي اطلاعات در اين زمينه هستند.</p>
<p><strong> &lt; </strong><strong>كاهش هزينه‌هاي سيستم يا سازمان</strong></p>
<p>با توجه به موارد فوق به خصوص افزايش سرعت كه باعث انجام تعداد كار بيشتر مي‌شود و انجام كار  تمام‌وقت، بهره‌وري سيستم افزايش مي‌يابد و در نتيجه باعث كاهش مقدار زيادي از هزينه‌ها مي‌گردد. <strong></strong></p>
<p>آنچه مسلّم است تكنولوژي اطلاعات به منزلة يك سلاح و ابزار جديد براي فعاليت جهان معاصر محسوب مي‌شود كه عدم استفاده از آن انزواي كشور و در نهايت حذف شدن از جامعة جهاني را به دنبال خواهد داشت.</p>
<h6>3- نقش كار آفرينان در توسعه تكنولوژي</h6>
<p>كارآفريني<a href="#_ftn5">[5]</a> اصطلاحي است كه در طول 300 سال گذشته توسط دانشمندان و صاحبنظران به‌ صورت‌هاي مختلفي تعريف شده است. به طور خلاصه كارآفريني فعاليتي است مخاطره‌آميز كه فردي در پي اجراي يك ايده معمولاً اقتصادي توجه نهادهاي سرمايه‌گذاري، علمي، صنعتي و غيره را جلب نموده و نيروي آنها را به سمت عملي نمودن ايده هدايت مي‌كند. بنابراين يك ايده كه بر اساس يك نياز اجتماعي شكل گرفته از ملزومات كارآفريني است. نتيجه كارآفريني علاوه بر نوآوري در محصولات جديد، حل نيازهاي اجتماعي، ايجاد اشتغال براي ديگران،  افزايش سودآوري شركت‌ها و افراد و توسعه تكنولوژي است. كارآفريني باعث رفع نيازها به كمك تكنولوژي‌هاي جديد مي‌گردد. بسياري از محصولات تكنولوژي‌هاي جديد خصوصاً در حوزه فناوري اطلاعات و ارتباطات، در اثر فعاليت‌هاي كارآفرينانه بوجود آمده‌اند. اكثر شركت‌هاي فعّال در حوزه تكنولوژي مخصوصاً شركت‌هاي مبتني بر خلاقيت و نوآوري<a href="#_ftn6">[6]</a> كه فناوري‌هاي جديد را خلق مي‌كنند و اصطلاحاً درلبة فناوري فعّالند، شركتهايي كارآفرين هستند.</p>
<p>افراد كارآفرين از ويژگي‌هاي شخصيتي خاصي برخوردارند. مخاطره‌پذيري، نوآوري و خلاقيت، مسؤوليت‌پذيري و اعتماد به نفس، توانايي ارتباطات قوي، واقعگرائي، هدفگرايي، تهاجمي بودن، تحمل ابهام و عدم قطعيت، خوشبيني و تعّهد و اعتقاد به مركز كنترل دروني بخشي از ويژگي‌هاي اين افراد است. هر فرد كارآفرين ممكن است تعدادي از اين ويژگي‌ها را داشته باشد و با شخصيت منحصر به فردي به كارآفريني بپردازد. شخصيت از ملزومات كارآفريني است توسعه كار آفريني نيازمند تربيت افراد كار آفرين مي‌باشد. در سرتاسر دنيا مراكز مختلفي براي آموزش و كارآفريني وجود دارد اگرچه برخي از افراد روحية كارآفريني بيشتر را وابسته به تحولات زندگي افراد در طول ساليان مختلف مي‌دانند ولي اين تناقضي با آموزش كارآفريني ندارد. در آموزش كارآفريني بايستي افرادي كه بصورت بالقوه از روحيه كارآفريني برخوردارند انتخاب شده و سپس شخصيت‌شان به فعلّيت برسد. علاوه بر اين روش‌هاي ديگري مثل انكوباتورها، براي تحريك كارآفريني وجود دارد كه افراد عملاً تا سطحي از كارآفريني هدايت مي‌شوند و يكباره به خارج پرتاب مي‌گردند و با حمايت‌ها و راهنماي‌هاي بعدي از آنها استفاده مي‌نمايند.</p>
<p>نقش دولت در توسعه كارآفريني، علاوه بر ايجاد  بسترهاي سخت‌افزاري، نرم‌افزاري و حمايتي از كارآفريني، شناسايي، آموزش و هدايت فعاليت‌هاي كارآفرينانه است. توسعه تكنولوژي بسيار وابسته به كارآفريني است و نبايد از آن غافل ماند.</p>
<h1><strong>4- فناوري اطلاعات و ارتباطات در كارآفريني</strong><strong></strong></h1>
<p>امروزه بر همه روشن شده است كه اطلاعات و ارتباطات دو قدرت مهم مي‌باشند. اين دو هم خود ارزش دارند و هم ارزش بوجود مي‌آورند. فردي كه از بازراهاي مختلف و قيمت اجناس در آن بازراها را اطلاع داشته باشد يا از گذشته و آينده بازار باخبر باشد، تصميمات بهتري براي رسيدن به سود بيشتري مي تواند بگيرد. اطلاعات علاوه بر ارزش ذاتي، جنبه ديگري دارد كه به دانش منتهي مي‌شود و در مكانيزم تصميم‌گيري و انجام بهتر آن اثر مي‌گذارد. ارتباطات نيز مانند اطلاعات ارزشمند بوده و ارزش افزوده‌اي متناسب با اندازه و نوع ارتباطات نصيب افراد مي‌كند. انسان‌هايي كه ارتباطات متنوع، بيشتر و قويتري دارند، كارهاي خود را بهتر پيش مي‌برند و زودتر به نتيجه مي‌رسانند. هدف از اين بخش بررسي تأثيرات فناوري اطلاعات در ارتباطات در كارآفريني است.</p>
<p>اطلاعات و ارتباطات دو ابزار اساسي مورد نياز هر فعّاليت كارآفريني است. كارآفريني در انزوا و بدون حمايت نهادها، سازمان‌ها و انسان‌ها امكان‌پذير نيست. كارآفريني مستلزم كشف يك نياز اجتماعي است. و كشف نيازهاي اجتماعي به شناخت اجتماع، نيازهاي آن و بافت فرهنگي و اجتماعي و اقتصادي آن وابسته مي‌باشد. در شناسايي نياز هر فعّاليت كارآفرينانه، ايده‌پرداز يا تئوريسين مي‌بايست نسبت به محيط بينش و بصيرت داشته باشد و بداند چه راه‌حل‌هايي براي رفع‌آن نياز، در نقاط ديگري از دنيا ارائه شده است. مطمئناً شناسايي نيازها و ارائه راحل‌ها بدون اطلاعات امكان‌پذير نخواهد بود. بنابراين اطلاعات و دانش مانند ارتباطات از ملزومات هر فعّاليت كارآفريني است.</p>
<p>فناوري اطلاعات و ارتباطات جديد تحولات شگرفي در دستيابي به اطلاعات بوجود آورده و بسترهاي ارتباطي قويتري را فراهم كرده است. اين فناوري‌ها اهّميت و ارزش اطلاعات و ارتباطات را بالا برده‌اند. در نتيجه كارآفريني نيز مانند ساير امور از مزيت‌هاي اين فناوري بهره برده‌ است. براي درك اهّميت اين فناوري‌ها در <a href="http://www.poroge.com">كارآفريني </a>به بررسي نظريه شبكه‌هاي اجتماعي مي‌پردازيم. طبق نظريه شبكه‌هاي اجتماعي كارآفريني، فرايندي است كه در شبكه متغيّري از روابط اجتماعي واقع شده است و اين روابط اجتماعي مي‌توانند رابطه كارآفرين را با منابع و فرصت‌ها محدود يا تسهيل نمايند (1).</p>
<p>شبكه‌ها داراي سه ويژگي تراكم، دسترس‌پذيري و مركزيت مي‌باشند، به كمك اين ويژگي اثر بخش شبكه‌ها سنجيده مي‌شوند. تراكم به كثرت ارتباطات بين افراد، دسترس‌پذيري به قلمرو شبكه و تعداد واسطه‌هاي ارتباطي يا گروه‌هاي مرتبط، و مركزيت به فاصله كلي فرد از تمامي افراد ديگر و تعداد افرادي كه مي‌توانند به وي دسترسي داشته باشند اطلاق مي‌گردد.</p>
<p>براساس قانون متكالف<a href="#_ftn7">[7]</a> ارزش هر شبكه برابر n<sup>2</sup> است، وقتي تعداد اعضاي متصل به آن n باشد. به عنوان مثال يك دستگاه تلفن به تنهايي ارزش كاربردي ندارد و وقتي دو دستگاه تلفن متّصل در يك شبكه داشته باشيم اين شبكه ارزش خاصي برابر يك  ارتباط دارد. اگر دستگاه تلفن‌هاي متصل به شبكه n عدد بشود امكان ارتباطات برابر<sup>2</sup><sup>n</sup> است، پس ارزش شبكه يا همان ارزش ارتباطات توان دوم تعداد اعضاي شبكه مي‌باشد. البته اين ارزش به شبكه تعلق دارد  و هر يك از افراد به ميزان و نوع ارتباطاتي كه در اين شبكه برقرار مي‌كند از ارزش آن بهره مي‌برند.</p>
<p>توسعة فناوري اطلاعات و ارتباطات باعث ايجاد شبكه‌اي عظيم با مقياس جهاني، (اينترنت) شده است و بنابراين علاوه بر افزايش و ارزش ويژگي‌هاي مورد ذكر در نظريه شبكه‌هاي اجتماعي، قابليت‌هاي ارتباطي جديدي مانند كنفرانس از راه دور و يا فعاليت‌هاي توزيع ‌شده را بوجود آورده و دسترسي آسان‌تر و سريع‌تر به اطلاعات را امكان‌پذير ساخته‌اند.</p>
<p>در كشورهاي پيشرفته اينترنت، يكي از مهمترين ابزراهاي كارآفرينان است و اين افراد از طريق اين شبكه بر قابليت‌هاي خود افروده و از مزاياي آن بهره مي‌گيرند. در كشور ما به خاطر عدم توسعة قوي و قابل توجه اينترنت شايد اين شبكه ابزار كارآفريني چندان قوي محسوب نگردد، درحاليكه تلفن همراه يكي از ابزارهاي مهم كارآفريني در ايران است. بدون تلفن همراه كارآفريني تقريباً معني ندارد. چرا كه تلفن همراه دسترسي به افراد را از زمان خاص و محل خاص به صورت 24 ساعته تقريباً مستقل از مكان تغيير داده و در نتيجه ارزش ارتباطات را بالا برده است. بنابراين كارآفريني كه به شدت ارتباطات قوي وابسته مي‌باشد، به اين ابزار نيازمند است. نمونه‌هايي از كارآفريني كه در كشور مشاهده مي‌شود مؤيد اين مطلب است. به عنوان مثال گروهي از دانشجويان يك دانشگاه كه در پي يك ايده تجاري به ساخت نرم‌افزار انتخاب رشته و تجاري‌سازي و عرضه آن در هنگام انتخاب رشته كنكور سراسري پرداخته بودند، در نهايت با خريد يا اجاره چند دستگاه تلفن همراه در خوابگاه دانشجويي، فرآيند انتخاب رشته را توسط شبكه‌اي كه در كل كشور ايجاد كرده بودند، مديريت مي‌كردند.</p>
<p>در آينده انواع نرم‌افزارها، خصوصاً نرم‌افزارهاي هوشمند نيز مورد استفاده كارآفرينان قرار خواهند گرفت. و اين افراد به كمك اين نرم‌افزارها فعّال خواهند بود، فرصت‌ها را بهتر شناسايي خواهند كرد و  اطلاعات دقيق‌تر و مناسب‌تري را جمع‌آوري خواهند نمود. دانش و مفاهيم بهتري را درك خواهند كرد و ارتباطات ساده‌تر و گسترده‌تري را برقرار خواهند نمود. نرم‌افزارهايي كه شخصيت و ويژگي‌هاي افراد مختلف را كشف و شناسايي كرده و بسته به موقعيت در ارتباط با هر يك، عكس‌‌العمل‌هاي مناسبي ارائه‌ خواهند نمود. اينترنت و شبكه‌هاي الكترونيكي يك بستر ارتباطي هستند.  برقراري ارتباط با هر فرد، شيوه‌هاي خاص او را مي‌طلبد كه الان تا حد زيادي از دسترس ما خارج است. خصوصاً اولين ارتباط بسيار مهم است. نرم‌افزارهاي هوشمند كمك خواهند كرد تا اولين ارتباط آخرين ارتباط نباشد.</p>
<p>5- كارآفريني در فناوري اطلاعات و ارتباطات</p>
<p>تحولاتي كه در سال‌هاي اخير در حوزه فناوري اطلاعات و ارتباطات بوجود آمده است و عصر اطلاعات را شكل داده و همچنان پيش مي‌تازد و در جوامع و فرهنگ‌ها دگرگوني ايجاد، مرهون تلاش افراد بسياري از جمله كارآفرينان است. كارآفرينان اطلاعات، شرايط عصر اطلاعات را شناخته و با كارآفريني خود ملزومات اين عصر را پيدا كرده و با شيوه‌هاي خاص خود آن را ايجاد مي‌كنند حتي بروز عصر اطلاعات هم از نتايج كارآفريني است. اينترنت بزرگترين و قويترين شبكه ارتباطي دنيا، نمونه‌اي روشن از كارآفريني است. در طول تاريخ كدام يك از كارآفرينان توانسته‌اند نيازي را كشف كنند كه پس از رفع آن تحوّلي در كل دنيا داده و بستري براي كارآفريني ساير افراد ايجاد نمايند. شايسته است اين  كارآفريني كه خود بستري براي كارآفريني ديگران شده است را ابركارآفريني بناميم در سالهاي اخير نمونه‌‌هاي بسياري از كارآفريني در اينترنت به ثبت رسيده است، از آنجايكه تاكنون چنين شبكه عظيمي در تاريخ بشر وجود نداشته است.  زمينه‌هاي فعاليت در آن بكر بوده و فرصت براي نوآوري و خلاقيت بسيار است. شركت‌هاي اينترنتي و شركت‌هاي <span style="text-decoration: underline;">Com</span> در چند سال اخير ايجاد، و به سرعت رشد كردند.</p>
<p>شركت‌هايي مانند Yahoo، ebay،Amazon  و ديگران در مدت كوتاهي توانسته‌اند ارزش بسياري را كسب نمايند. آمارها نشان مي‌دهد كه در طي 5 سال آخر قرن گذشته ارزش برخي از اين شركت‌ها بيش از 200 برابر شده است درحاليكه ميزان رشد سودآوري آنها كمتر از 10 برابر بوده است. كارآفريني در اينترنت به اين موارد خلاصه نمي‌شود و موارد بسياري خصوصاً در زمينه نرم‌افزارهاي مبتني بر شبكه و همچنين محتويات شبكه وجود دارد. كارآفرينی در شيوه‌هاي جذب مشتريان اينترنتي، بازاريابي اينترنتي، همكاري‌ها و شبكه‌هاي مجازی، الكترونيك، واقعيت مجازي، آموزش و كار از راه دور و … همه و همه گستردگي كارآفرينی در عصر اطلاعات را نشان مي‌دهند.</p>
<p>بازار گسترده اينترنت فرصت خوبي براي صادرات نرم‌افزار است. اينترنت شبكه‌اي مجازي است كه تا حد زيادي مستقل از محل مي باشد. اين شبكه بازاري بدون مرز است كه مي‌توان به راحتي در آن تجارت نمود. درخشش شركت‌هاي اينترنتي فرصت مناسبي براي صادرات نرم‌افزار است. براي اين منظور مي‌بايست  افراد كارآفرين با ايده‌هايي نو، شركت‌هايي اينترنتي را تاسيس كنند و پس از مدتي كه ارزش فوق‌العاده‌اي يافتند آنها را بفروشند. همان‌طور كه گفتيم سود‌آوري اين شركت‌ها  اهميت زيادي ندارد بلكه فروش آنها منبع درآمد و در نتيجه صادرات نرم افزاري خواهد بود.</p>
<p>«كار آفريني موتور توسعه فناوري اطلاعات و ارتباطات است» با كارآفريني است كه نيازها شناخته مي‌شود و با رفع نيازها پيشرفت حاصل مي‌شود. كشورهاي پيشرفته به اين دليل پيشرفته‌اند كه در فناوري پيشرفت كرده‌اند و توسط آن، هم اقتصاد جهان را در اختيار گرفته، هم قدرت نظامي شده‌اند و هم فرهنگ جهان را به سوي خواسته‌هاي خود هدايت مي‌كنند. كارآفريني اطلاعات <a href="#_ftn8">[8]</a>در سطوح مختلف <strong>الف- سخت‌افزار ب- نرم‌افزار  ج- اطلاعات    د-ارتباطات هـ- كاربرد،</strong> انجام‌پذير است. <strong></strong></p>
<p>در هريك از اين سطوح فرصت‌هاي بسياري براي كارآفريني وجود دارد. كه نيازمند حمايت مراكز سرمايه‌گذاري و تلاش‌هاي كارآفرينانه است. كارآفريني در حوزه اطلاعات بسيار راحت‌تر و عملي‌تر از كارآفريني در ساير حوزه‌هاست. به عنوان مثال در حوزه نيروگاه هسته‌اي به دليل كاربرد محدود، ايده‌هاي كمتري وجود دارد و به علاوه سرمايه‌گذاري فوق‌العاده زياد و درصد امكان‌پذيري كم، مانع هر فعّاليت كارآفرينانه است و درحاليكه در حوزه فناوري اطلاعات و ارتباطات كه درهمه جا گسترده شده است، ايده‌هاي بسياري خلق مي‌شود و ميزان سرمايه‌گذاري مورد نياز كه ايده‌ها را به نتيجه برسانند چندان زياد نيستند. بنابراين كارآفريني اطلاعات به راحتي انجام مي‌شود و اين خود دليلي بر سرعت نمايي رشد فناوري اطلاعات است.<strong> </strong></p>
<p><strong>6- نتيجه‌گيري </strong></p>
<p>ملاحظه شد كه فناوري اطلاعات و ارتباطات تحولات زيادي در كليه فعاليت‌هاي اجتماعي ازجمله كارآفريني بوجود آورده و به عنوان مهمترين ابزار كارآفريني مدرن مورد توجه قرار گرفته است. همچنين كارآفريني در فناوري اطلاعات پهنه وسيعي براي فعاليت دارد. كارآفريني لازمة توسعه فناوري و توسعه فناوري بستر كارآفريني است. براين اساس اهّميت نقش بسترسازي كارآفريني و وظيفه دولت مشخص مي‌شود. دولت بايد بستر كارآفريني در حوزه فناوري اطلاعات كه همان شبكه‌هاي ارتباطي و اطلاعاتي مي‌باشد را توسعه دهد و تقويت كند و امكان دسترسي آسان همگان به اين شبكه‌ها را فراهم نمايد. ضمن اينكه فرهنگ استفاده از شبكه‌ها را ايجاد كرده و گسترش دهد و قوانين و مقررات لازم را تدوين و اجرا نمايد.</p>
<p>فرار مغزها كه خصوصاً در فناوري‌هاي نو بيشتر رايج است، از نتايج ضعف كارآفريني در كشورهاي در حال توسعه است. بسياري از نيروهاي تحصيل كرده اين كشورها، صرفاً علمي بار آمده و تربيت شده‌اند و بايد توسط ديگران مديريت شوند؛ افرادي هم كه شخصيت  كارآفريني دارند بستر كارآفريني را در اين كشورها نمي‌يابند. جالب اينكه تمركز كشورهاي توسعه‌ يافته بيشتر بر فعّاليت‌هاي كارآفرينانه تربيت نيروهاي داخلي خود در اين حوزه است و از اين طريق نيروهاي متخصص خارجي را بكار مي‌گيرند و در راستاي اهداف خود از آنان بهره‌برداري مي‌كنند. كارآفرينان مي‌توانند مشاغلي در لبة تكنولوژي براي متخصصين داخل كشور ايجاد كنند و در اثر رضايت شغلي كه بوجود مي‌آورد علاوه بر كليه مزيت‌هاي كارآفريني از فرار مغزها نيز جلوگيري نمايد.</p>
<p>دولت بايد علاوه بر ايجاد بسترهاي سخت‌افزاري و نرم‌افزاري فناوري اطلاعات و ارتباطات و رفع موانع آن، زمينه‌هاي حمايت از فعاليت كارآفرينان را فراهم كند، نهادهاي سرمايه‌گذاري لازم را تاسيس نموده و با نهادهاي آموزشي، پژوهشي و انكوباتورها به صورت هدف‌دار افراد بالقوه كارآفرين متخصص را شناسايي كرده و كارآفريني را در آنها به فعلّيت برساند و از مزيت‌هاي اين انسان‌ها متعهد در پيشبرد اهداف كشور بهره بگيرد.</p>
<p>دولت در بند ب تبصره 11 ماده واحده قانون بودجه سال 80 مبلغ 5/1 ميليون تومان وام خود اشتغالي براي جوانان در نظر گرفته است. واقعيت اين است كه بسياري از جوانان بيكار مشكل‌شان داشتن اين مبلغ نيست بلكه مشكل آنها نداشتن راه‌حل يا آماده نبودن بسترهاي كارآفريني است. چقدر مناسب است كه در سال‌هاي آتي دولت بودجه را با هدايت صحيح صرف بسترسازي فعّاليت‌هاي كارآفرينانه نمايد و از اين طريق در فناوري‌هاي نو به خصوص فناوري اطلاعات و ارتباطات ايجاد اشتغال كند.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1081</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>قابهای طراحی ۲</title>
		<link>http://www.poroge.com/?p=1077</link>
		<comments>http://www.poroge.com/?p=1077#comments</comments>
		<pubDate>Tue, 27 Jul 2010 13:43:52 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[دیگر موارد]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[قاب]]></category>
		<category><![CDATA[گرافیک]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1077</guid>
		<description><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1078  aligncenter" title="ghabe" src="http://www.poroge.com/wp-content/uploads/2010/07/ghabe-295x300.jpg" alt="" width="295" height="300" /></a></p>
<p>سری دوم از طرحها  و قابهای اسلامی برای کار در پروژه های طراحی به صورت رایگان در ادامه متن برای دانلود این مجموعه شامل 404 طرح گرافیکی می باشد.</p>
<p><span id="more-1077"></span></p>
<p><a href="http://www.4shared.com/file/ul-bxC2a/Ghab01_wwwporogecom.html" target="_blank">دانلود سری دوم قابهای اسلامی</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-medium wp-image-1078  aligncenter" title="ghabe" src="http://www.poroge.com/wp-content/uploads/2010/07/ghabe-295x300.jpg" alt="" width="295" height="300" /></a></p>
<p>سری دوم از طرحها  و قابهای اسلامی برای کار در پروژه های طراحی به صورت رایگان در ادامه متن برای دانلود این مجموعه شامل 404 طرح گرافیکی می باشد.</p>
<p><span id="more-1077"></span></p>
<p><a href="http://www.4shared.com/file/ul-bxC2a/Ghab01_wwwporogecom.html" target="_blank">دانلود سری دوم قابهای اسلامی</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1077</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>زبان مدلسازی یکسان شده</title>
		<link>http://www.poroge.com/?p=1072</link>
		<comments>http://www.poroge.com/?p=1072#comments</comments>
		<pubDate>Thu, 22 Jul 2010 18:13:51 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[مقالات]]></category>
		<category><![CDATA[MODELS]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[رشنال]]></category>
		<category><![CDATA[مدلسازی]]></category>
		<category><![CDATA[مقاله]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1072</guid>
		<description><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-full wp-image-1073  aligncenter" title="uml_logo" src="http://www.poroge.com/wp-content/uploads/2010/07/uml_logo.gif" alt="" width="294" height="209" /></a></p>
<p>از رشته مهندسی نرم افزار، زبان مدلسازی جهانی/ یکسان شده (UML) یک زبان خاص ویژوال استاندارد برای مدلسازی هدف است . UML یک زبان مدلسازی هدف کلی است که شامل نوتاسیون گرافیکی استفاده شده برای خلق یک مدل انتزاعی از یک سیستم است ، که به عنوان یک مدل UML مورد اشاره قرار می گیرد .</p>
<p><span id="more-1072"></span></p>
<p>1-شرح کلی</p>
<p>2-تاریخچه</p>
<p>3-روشها</p>
<p>4-مدلسازی</p>
<p>5-دیاگرام ها (نمودارها)</p>
<p>6-مفاهیم</p>
<p>7-نقدها</p>
<p>8-نقدها</p>
<p>9-رفرنس ها</p>
<p>10-مطالعه بیشتر</p>
<p>11-ارتباطات اضافی</p>
<p><strong> </strong></p>
<p><strong>شرح کلی :</strong></p>
<p>UML به طور رسمی در گروه مدیریت شئی (OMG) بوسیله این مدل UML یک ابر مدل تسهیلاتی ابر- شئی (MOF) تعریف می شود . همانند ویژگیهای دیگر مبنی بر MOF ، UML به توسعه دهندگان نرم افزاری اجازه می دهد تا بیشتر بر طراحی و معماری تمرکز و تأکید کنند .</p>
<p>مدلهای UML ممکن است به طور اتوماتیک به بقیه نمایش ها (مثلاً JAVA) بوسیله زیانهای تغییر شکل همانند QVT تغییر شکل یابند ، بوسیله OMG حمایت می شود.</p>
<p>UML قابل توسعه است ، مکانیسم های اساسی را برای اختصاصی کردن ارائه می دهد: فایل سوابق و کلیشه ها . معناشناختی توسعه بوسیله فایل های سوابق با تجدیدنظر عمده UML 2.0 بهبود یافته اند .</p>
<p><strong> </strong></p>
<p><strong>تاریخچه : </strong></p>
<p>بعد از اینکه Rational software corporation (شرکت نرم افزاری منطقی) James Rum Baugh را از ژنرال الکتریک در سال 1994 استخدام کرد ، شرکت به منبعی برای در رویکرد مدلسازی بسیار مشهود شئی محور روژ تبدیل شد :</p>
<p>Rum Baugh’s omt که برای آنالیز شئی محور (OOA) بهتر بود . و روش Grady Booch’s Booch که برای طرح شئی محور (OOD) بهتر بود . باهم Booch , Rum Baugh تلاش کردند که تا دو روش خودشان را باهم منطبق کنند و کار بر روی روش یکسان شده (Unified methody) شروع کردند .</p>
<p>آنها بزودی در کوشش هایشان بوسیله Ivar Jacobson همکاری کردند، Jacobson خالق روش ooSE است . Jacobson در سال 1995 به Rational  ، بعد از اینکه شرکت خودش Objectory بوسیله Rational  تصاحب شد ، ملحق شد . سه اسلوب شناس به طور دسته جمعی که به آنها Tree amigos گفته می شد ، چونکه آنها مشهور به استدلال و بحث غالباً با یکدیگر راجع به اولویت های اسلوب شناسی بودند .</p>
<p>در سال 1996 Rational به این نتیجه رسید که فراوانی زبانهای مدلسازی پذیرش تکنولوژی شئی را کند می کند ، بنابراین با قرارگرفتن مجدد کار بر unified method آنها کار خطیر Tree Amigos را با توسعه زبان unified mode ling (مدلسازی یکساله شده ) غیراختصاصی انجام دادند . نمادها و نمایش های از رقابت شرکت های object technology (تکنولوژی شئی) در طول OOPslA 96 مورد مشورت قرار گرفتند، و بیشتر باترجمه Rumbaugh , cappella از نسخه Joni mitchell’s clouds پیروز شد ، که پیروزی نوتاسیون OMT او را از استفاده از boxes (جعبه ها) برای نشان دادن طبقات در طول روش نوتاسیون Gradely Booch’s Booch نشان می دهد که از نمادهای cloud (ابری) استفاده کرد .</p>
<p>تحت رهبری فنی و تکنیکی Three Amigos یک کنسرسیوم بین المللی به نام شرکای UML در سال 1996 سازماندهی شد تا ویژگی Unified modeling language (UML) را تکمیل کند ، و آن را به عنوان پاسخی به OMG RFP مطرح نمود . ترسیم مشخصه</p>
<p>UML Partner’s UML 1.0 برای OMG در ژانویه 1997 مطرح شده بود. در طول همان ماده شرکای  UML یک Semantics Task Force (نیروی کار خطیر معناشناختی) با ریاست Criskobryn و اجرای Edeykholt را تشکیل داد تا معناشناختی ویژگی را قطعی و یکسره کند و آن را با تلاش های استانداردسازی دیگر یکپارچه و یکی کرد . نتیجه این کار، UML 1.1 به OMG در اگوست 1997 اهدا شد و بوسیله OMG در نوامبر 1997 پذیرفته شد .</p>
<p>به عنوان نوتاسیون مدلسازی ، تأثیر نوتاسیون OMT تسلط و تحکم دارد (مثلاً با استفاده از مستطیل ها برای دسته ها و شئی ها ) . گرچه نوتاسیون «ابری» Booch رها شده بود، توانایی و قابلیت Booch برای مشخص نمودن جزئیات طرح سطح پایین تر را دربرمی گرفت. نوتاسیون استفاده موردی از Objectory و نوتاسیون اجزاء از Booch با بقیه نوتاسیون یکی و متحد شده بودند ، اما ترکیب مغناطیسی نسبتاً در UML 1.1 ضعیف بود ، و واقعاً تا تجدیدنظر عمده UML 2.0 ثابت نشد .</p>
<p>مفاهیم بسیاری از روشهای OO و دیگر نیز با بی دقتی با UML با این هدف ادغام شدند که UML از همه روشهای OO حمایت خواهد کرد . برای مثال CRC Cards (حدود 1989 از kent Beck ward Cunningham ) و OORAM حفظ شده بودند . بسیاری دیگر خیلی با روشهایشان سهیم شدند که مدلهای زیادی از زمان دارای ویژگی می کند شامل Peter pircher , Tony Wassermann  با نوتاسیون (OOSD)object-oriented structured Design (طرح ساختاریافته شئی محور) (نه یک روش) Systems Design (طرح سیستم) با Ada متعلق به Ray Buhr آنالیز زمان بندی و استفاده موردی Archie Bowen آنالیز داده های Paul ward و David Harel’s Statecharts به عنوان گروهی برای اطمینان از پوشش وسیع در قلمرو سیستم های زمان واقعی تلاش کردند . در نتیجه UML در تنوعی از مشکلات مهندسی سفید است ، از فرایند تنها ، کارهای کاربر تنها برای سیستم های توزیع شده همزمان UML را غنی اما بزرگ می سازد .</p>
<p>Unified medaling language یک استاندارد بین المللی است :</p>
<p>پردازش توزیع شده باز – تکنولوژی اطلاعات 5- 20 : 1. 195 iso/iEC</p>
<p>104020 unified modeling language (VML)version</p>
<p>UML به طور مهمی رشد یافت از UML 1.1 چندین نسخه تجدیدنظر شده کم (1.5 و 1.4 و 1.3 UML) نقطه ضعف ها و نقص ها را با اولین نسخه UML که با تجدیدنظر عمده 2.o UML دنبال شد که بوسیله OMG در سال 2003 پذیرفته شده بود . چهار بخش برای مشخصه 2.x وجود دارد : ابرساختار که نوتاسیون و معناشناسی را برای نمودارها و اجزاء مدلشان تعریف می کند : مادون ساختار که متامدل دسته ای را تعریف می کند که براساس آن متامدل ابرساختار وجود دارد : object constraint Language (زبان محدودیت شئی) (OCL) برای تعریف قوانین برای اجزاء مدل و تغییر درونی نمودار UML (UML Dixgram interchange) که تعریف می کند چگونه ترکیب های نمودار UML2 مبادله می شوند . نسخه های فعلی این استانداردها به این شکل ساختار UML 20102 ، نسخه OCL 2.0 و نسخه تبادل نمودار UML 1.0 .</p>
<p>گرچه بسیاری از وسایل UML از بعضی ویژگیهای جدید UML2.x حمایت می کند، OMG هیچ قسمتی مناسب یا تست موضوعی مطابق با ویژگیهایش فراهم نمی آورد.</p>
<p><strong>روشها :</strong></p>
<p>UML به خودی خود یک روش نیست ؛ هرچند طراحی شده بود تا با روشهای توسعه نرم افزاری شئی گرا اصلی زمان خودش سازگار باشد (برای مثال objectory , Booch, OMT) زمانیکه UML تکامل پیدا کرد ، بعضی از این روشها برای استفاده از نوتاسیون جدید (برای مثال OMT) دوباره طراحی شدند و روشهای جدید براساس UML خلق شدند . بهترین مورد مشهور process Rational umified (RUP) است . روشهای مبنی بر UML زیاد دیگری همانند روش Abstraction , Dynamic systems Development method ، و بقیه برای تهیه راه حلهای بسیار خاص، یا بدست آوردن اهداف مختلف طراحی شده اند.</p>
<p><strong>مدلسازی :</strong></p>
<p>خیلی مهم است که بین مدل UML و مجموعه نموداری یک مجموعه مشخص شود. نمودار یک نمایش گرافیکی جزئی از یک مدل سیستم است . مدل همچنین دارای یک صفحه محمل معنایی است ، استنادی همانند موارد استفاده نوشتاری که نمودارها و اجزاء مدل را استخراج می کنند .</p>
<p>نمودارهای UML سه دیدگاه مختلف از مدل سیستم را نشان می دهند .</p>
<p>دیدگاه تجهیزات تابعی</p>
<p>بر تجهیزات تابعی سیستم از دیدگاه کاربر تأکید می کند .</p>
<p>شامل نمودارهای استفاده موردی است .</p>
<p>دید رفتار دینامیکی (پویار)</p>
<p>بر رفتار پویای سیستم با نشان دادن همکاریهائی میان اشیاء تمرکز می کنند تا حالات درونی از اشیاء تغییر می یابد .</p>
<p>شامل نمودارهای پی در پی، نمودارهای فعالیتی و نمودارهای دستگاه حالت است . مدلهای UML می توانند در میان وسایل UML با استفاده از فرمت مبادله XMI مبادله شوند.</p>
<p>نمودارها</p>
<p>UML 2.0 دارای 13 نوع نمودار است که می تواند به طور سلسله مراتبی طبقه بندی شود همانطور که در نمودار طبقه ی زیر نشان داده شده است :</p>
<p>نمودار صفحه 4</p>
<p>دیاگرام های ساختار بر این موضوع تأکید دارند که چه چیزهائی باید در سیستم مدلسازی شود.</p>
<p>نمودار طبقه ای</p>
<p>نمودار اجزاء</p>
<p>نمودار ساختار مرکب (در UML 2.x اضافه شده است )</p>
<p>نمودار به کارگیری</p>
<p>نمودار شئی</p>
<p>نمودار بسته ای</p>
<p>نمودارهای رفتاری براین امر تأکید دارند که چه چیزی باید در سیستمی که مدل سازی می شود اتفاق بیفتد :</p>
<p>نمودار فعالیت</p>
<p>نمودار دستگاه حالت</p>
<p>نمودار استفاده موردی</p>
<p>نمودارهای تأثیر متقابل، مجموعه فرعی از نمودارهای رفتاری، بر جریان کنترل داده ها در میان چیزها در سیستم در حال مدل سازی تاکید می کند .</p>
<p><strong>نمودار ارتباطات </strong></p>
<p>نمودار شرح اجمالی تأثیر متقابل (اضافه شده در UML 2.x)</p>
<p><strong>نمودار توالی </strong></p>
<p>نمودار زمان بندی (اضافه شده در UML 2.x)</p>
<p>Protocol state machine (دستگاه حالت پروتکل) یک تغییر فرعی از state machine است. شاید برای مدل سازی پروتکل های ارتباطات شبکه ای استفاده شود.</p>
<p>UML انواع جزء UML را براي يك نوع نمودار خاص محدود نمي كند . به طور كلي ، هر جزئي UML‌ ممكن است تقريباً‌ به همه انواع نمودارها نمايان شود. اين تغييرپذيري تا اندازه اي در UML2.0 محدود شده بود.</p>
<p>هماهنگ با سنت ترسيم هاي مهندسي ، نظريه هاي كه استفاده ، محدوديت ، يا قصد و نيت را شرح و توضيح مي دهد هميشه در نمودار UML مجاز است .</p>
<p><strong>مفاهيم </strong></p>
<p>UML از مفاهيم زيادي از بسياري از منابع استفاده مي كند براي فهرست قطعي ، لغت نامه اصطلاحات Unified medeling Language مراجعه كنيد. مفاهيم قابل توجه در اينجا نام برده مي شوند.</p>
<p>For structure</p>
<p>بازيگر ، صفت، دسته، جزء ، رابط، شئي ، بسته</p>
<p>For behavior</p>
<p>فعاليت ، واقعه ، پيغام ، روش ، عمليات ، حالت استفاده موردي</p>
<p>For relaibnships</p>
<p>مجموعه ، انجمن ، تركيب ، وابستگي ، كلي گوي ي(يا وراثت)</p>
<p><strong>بقيه مفاهيم </strong></p>
<p>پيش آگهي ، كيفيت نمادي را مشخص مي كند كه به آن متصل است. نوتاسيون فراواني كه با بودن ولسازي پايگاه داده ها مطابقت دارد . مثلاً 1,0..1,1..</p>
<p><strong> </strong></p>
<p><strong>نقش </strong></p>
<p><strong>نقد و انتقاد ما </strong></p>
<p>گرچه UML يك استاندارد مدلسازي بسيار استفاده شده و شناسايي شده است ، غالباً به خاطر نقص هاي زير مورد انتقاد قرار مي گيرد :</p>
<p>- bloat زبان ، UML اغلب به خاطر پيچيده و بي دليل بزرگ بودن مورد انتقاد قرار          مي گيرد. داراي نمودارهاي زياد و ساختارهاي زيادي است كه فراوان هستند يا بندرت استفاده مي شوند. اين انتقاد غالب اوقات  در UML 2.0 در مقايسه با UML 10D هدايت مي شود. چونكه نسخه هاي جديدتر شامل توافق هاي طراحي يا تعهد هستند.</p>
<p>- مشكلاتي در يادگيري و پذيرش . مشكلات ذكر شده در بالا مي توانند يادگيري و پذيرش UML را مشكل ساز كنند، به خصوص وقتي كه مهندساني فاقد مهارتهاي لازم به آن نياز دارند.</p>
<p>- تنها كد با كد در همزماني است. جنبه ديگري برقرار مي شود كه با سيستم مان كار          مي كند كه مهم هستند ، مدلهاي غيرزيبا. همانطور كه jack keevu‌ آن را به شكل موجز مطرح مي كند ، «كد ، طرح است» پيگيري اين عقيده و منجر به نياز براي روشهاي بهتر نرم افزار نوشتاري است.</p>
<p>UML داراي ارزش در روشهايي است كه مدلهائي را براي ايجاد منبع يا رمز قابل اجرا تكميل مي كند. اين هر چند ، ممكن است هنوز كافي نباشد. چونكه مشخص نيست كه UML 20 O&#8217;s Action Semantics‌ تكميل و اجراهاي Turing را نشان دهند. تمام مدلها اشتباه هستند، اما بعضي مدلها مفيد هستند.</p>
<p>تطابق نادرست امپدانس / امپدانس تراكمي . همانطور كه با هر سيستم فوتاسيوني است ، UML قادر به ارائه بعضي سيستم ها به شكل اختصاري يا كارآتري نسبت به بقيه است. بنابراين تهيه كننده در راستاي راه حلها جذب مي شود كه در بخش عرض قابليت هاي UML و زبان اجرا جاي مي گيرد. اين مشكل به طور خاصي مطرح مي شود اگر زبان اجرا به اصل شئي گراي ارتودوكس متصل نباشد، هنگاميكه مجموعه متقاطع بين UML و زبان اجرا ممكن است از آن مجموعه هم كوچكتر باشد.</p>
<p>ناسازگاري (تناقص) از نظر زيبايي شناختي. اين بحث بيان مي دارد كه تركيب خاص نوتاسيون انتزاعي (2D ovals , boxes,…) باعث مي شود UML به شكل ناهنجار و ناسازگار به نظر برسد و آن تلاش بيشتر مي توانست براي ايجاد يكساني و نمايش هاي لذت زيبايي شناختي انجام شوند.</p>
<p>تلاش براي تمام برنامه ريزان همه چيز است. UML يك زبان مدلسازي كلي هدف است كه سعي دارد به سازگاري با هر زبان اجراي احتمالي دست يابد. در زمينه يك پروژه خاص ، عملي ترين ويژگيهاي UML بايد براي استفاده بوسيله تيم طراحي براي تكميل هدف خاص آزاد و محدوديت زدايي شوند. به علاوه ، وسايل محدود كنندة دامنه UML تا محدوده اي خاص از طريق يك فرماليسم است كه كاملاً بوجود نمي آيد، و خودش موضوعي مورد انتقاد است.</p>
<p>فرمت مبادله به شكل (ناقص). در حاليكه استاندارد XMI (مبادله متا داده هاي XML) براي تسهيل مبادله مدلهاي UML طراحي مي شود ، به مقدار زيادي در مبادله عملي مدلهاي UML بدون تأثير است. تعريف مدل UML  در يك وسيله و سپس انتقال آن به وسيله اي ديكر به طور نمونه منجر به از دست دادن اطلاعات مي شود. اين بي اثري قابليت عمليات در چند محيط قابل استناد به دو دليل است : اولاً ، XML  از حق خودش بزرگتر و پيچيده تر است ، چونكه مدلي عنوان نمودن مشكل فني  مبهم تري نسبت به مدلهاي UML مبادله اي است. به طور خاصي ، تلاش دارد تا مكانيسمي براي تسهيل مبادله سه زبان مدلسازي دلبخواه تعريف شده بوسيله (MOF) OMG&#8217;S Meta-Object Facility فراهم آورد . دوماً‌ ، مشخصه مبادله دياگرام UML فاقد جزئيات كافي براي تسهيل مبادله مطمئن نوتاسيون UML بين وسايل مدلسازي است. چونكه UML يك زبان مدلسازي بصري است ، اين نقص براي مدلساز اين ضروري و اساس است كه نمي خواهند نمودارهايشان را دوباره ترسيم كنند.</p>
<p>بسياري از كارشناسان مدلسازي نقدهاي تند و تيزي از UML را نوشته اند ، شامل &#8220;The positirespin : UML &#8221; Bertrand meyer  و مقاله ي بوسيله Brian Henderson-sellers در كنفرانس MODELS / UML در ژنو، ايتاليا در اكتبر 2004 ارائه شد.</p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.poroge.com"><img class="size-full wp-image-1073  aligncenter" title="uml_logo" src="http://www.poroge.com/wp-content/uploads/2010/07/uml_logo.gif" alt="" width="294" height="209" /></a></p>
<p>از رشته مهندسی نرم افزار، زبان مدلسازی جهانی/ یکسان شده (UML) یک زبان خاص ویژوال استاندارد برای مدلسازی هدف است . UML یک زبان مدلسازی هدف کلی است که شامل نوتاسیون گرافیکی استفاده شده برای خلق یک مدل انتزاعی از یک سیستم است ، که به عنوان یک مدل UML مورد اشاره قرار می گیرد .</p>
<p><span id="more-1072"></span></p>
<p>1-شرح کلی</p>
<p>2-تاریخچه</p>
<p>3-روشها</p>
<p>4-مدلسازی</p>
<p>5-دیاگرام ها (نمودارها)</p>
<p>6-مفاهیم</p>
<p>7-نقدها</p>
<p>8-نقدها</p>
<p>9-رفرنس ها</p>
<p>10-مطالعه بیشتر</p>
<p>11-ارتباطات اضافی</p>
<p><strong> </strong></p>
<p><strong>شرح کلی :</strong></p>
<p>UML به طور رسمی در گروه مدیریت شئی (OMG) بوسیله این مدل UML یک ابر مدل تسهیلاتی ابر- شئی (MOF) تعریف می شود . همانند ویژگیهای دیگر مبنی بر MOF ، UML به توسعه دهندگان نرم افزاری اجازه می دهد تا بیشتر بر طراحی و معماری تمرکز و تأکید کنند .</p>
<p>مدلهای UML ممکن است به طور اتوماتیک به بقیه نمایش ها (مثلاً JAVA) بوسیله زیانهای تغییر شکل همانند QVT تغییر شکل یابند ، بوسیله OMG حمایت می شود.</p>
<p>UML قابل توسعه است ، مکانیسم های اساسی را برای اختصاصی کردن ارائه می دهد: فایل سوابق و کلیشه ها . معناشناختی توسعه بوسیله فایل های سوابق با تجدیدنظر عمده UML 2.0 بهبود یافته اند .</p>
<p><strong> </strong></p>
<p><strong>تاریخچه : </strong></p>
<p>بعد از اینکه Rational software corporation (شرکت نرم افزاری منطقی) James Rum Baugh را از ژنرال الکتریک در سال 1994 استخدام کرد ، شرکت به منبعی برای در رویکرد مدلسازی بسیار مشهود شئی محور روژ تبدیل شد :</p>
<p>Rum Baugh’s omt که برای آنالیز شئی محور (OOA) بهتر بود . و روش Grady Booch’s Booch که برای طرح شئی محور (OOD) بهتر بود . باهم Booch , Rum Baugh تلاش کردند که تا دو روش خودشان را باهم منطبق کنند و کار بر روی روش یکسان شده (Unified methody) شروع کردند .</p>
<p>آنها بزودی در کوشش هایشان بوسیله Ivar Jacobson همکاری کردند، Jacobson خالق روش ooSE است . Jacobson در سال 1995 به Rational  ، بعد از اینکه شرکت خودش Objectory بوسیله Rational  تصاحب شد ، ملحق شد . سه اسلوب شناس به طور دسته جمعی که به آنها Tree amigos گفته می شد ، چونکه آنها مشهور به استدلال و بحث غالباً با یکدیگر راجع به اولویت های اسلوب شناسی بودند .</p>
<p>در سال 1996 Rational به این نتیجه رسید که فراوانی زبانهای مدلسازی پذیرش تکنولوژی شئی را کند می کند ، بنابراین با قرارگرفتن مجدد کار بر unified method آنها کار خطیر Tree Amigos را با توسعه زبان unified mode ling (مدلسازی یکساله شده ) غیراختصاصی انجام دادند . نمادها و نمایش های از رقابت شرکت های object technology (تکنولوژی شئی) در طول OOPslA 96 مورد مشورت قرار گرفتند، و بیشتر باترجمه Rumbaugh , cappella از نسخه Joni mitchell’s clouds پیروز شد ، که پیروزی نوتاسیون OMT او را از استفاده از boxes (جعبه ها) برای نشان دادن طبقات در طول روش نوتاسیون Gradely Booch’s Booch نشان می دهد که از نمادهای cloud (ابری) استفاده کرد .</p>
<p>تحت رهبری فنی و تکنیکی Three Amigos یک کنسرسیوم بین المللی به نام شرکای UML در سال 1996 سازماندهی شد تا ویژگی Unified modeling language (UML) را تکمیل کند ، و آن را به عنوان پاسخی به OMG RFP مطرح نمود . ترسیم مشخصه</p>
<p>UML Partner’s UML 1.0 برای OMG در ژانویه 1997 مطرح شده بود. در طول همان ماده شرکای  UML یک Semantics Task Force (نیروی کار خطیر معناشناختی) با ریاست Criskobryn و اجرای Edeykholt را تشکیل داد تا معناشناختی ویژگی را قطعی و یکسره کند و آن را با تلاش های استانداردسازی دیگر یکپارچه و یکی کرد . نتیجه این کار، UML 1.1 به OMG در اگوست 1997 اهدا شد و بوسیله OMG در نوامبر 1997 پذیرفته شد .</p>
<p>به عنوان نوتاسیون مدلسازی ، تأثیر نوتاسیون OMT تسلط و تحکم دارد (مثلاً با استفاده از مستطیل ها برای دسته ها و شئی ها ) . گرچه نوتاسیون «ابری» Booch رها شده بود، توانایی و قابلیت Booch برای مشخص نمودن جزئیات طرح سطح پایین تر را دربرمی گرفت. نوتاسیون استفاده موردی از Objectory و نوتاسیون اجزاء از Booch با بقیه نوتاسیون یکی و متحد شده بودند ، اما ترکیب مغناطیسی نسبتاً در UML 1.1 ضعیف بود ، و واقعاً تا تجدیدنظر عمده UML 2.0 ثابت نشد .</p>
<p>مفاهیم بسیاری از روشهای OO و دیگر نیز با بی دقتی با UML با این هدف ادغام شدند که UML از همه روشهای OO حمایت خواهد کرد . برای مثال CRC Cards (حدود 1989 از kent Beck ward Cunningham ) و OORAM حفظ شده بودند . بسیاری دیگر خیلی با روشهایشان سهیم شدند که مدلهای زیادی از زمان دارای ویژگی می کند شامل Peter pircher , Tony Wassermann  با نوتاسیون (OOSD)object-oriented structured Design (طرح ساختاریافته شئی محور) (نه یک روش) Systems Design (طرح سیستم) با Ada متعلق به Ray Buhr آنالیز زمان بندی و استفاده موردی Archie Bowen آنالیز داده های Paul ward و David Harel’s Statecharts به عنوان گروهی برای اطمینان از پوشش وسیع در قلمرو سیستم های زمان واقعی تلاش کردند . در نتیجه UML در تنوعی از مشکلات مهندسی سفید است ، از فرایند تنها ، کارهای کاربر تنها برای سیستم های توزیع شده همزمان UML را غنی اما بزرگ می سازد .</p>
<p>Unified medaling language یک استاندارد بین المللی است :</p>
<p>پردازش توزیع شده باز – تکنولوژی اطلاعات 5- 20 : 1. 195 iso/iEC</p>
<p>104020 unified modeling language (VML)version</p>
<p>UML به طور مهمی رشد یافت از UML 1.1 چندین نسخه تجدیدنظر شده کم (1.5 و 1.4 و 1.3 UML) نقطه ضعف ها و نقص ها را با اولین نسخه UML که با تجدیدنظر عمده 2.o UML دنبال شد که بوسیله OMG در سال 2003 پذیرفته شده بود . چهار بخش برای مشخصه 2.x وجود دارد : ابرساختار که نوتاسیون و معناشناسی را برای نمودارها و اجزاء مدلشان تعریف می کند : مادون ساختار که متامدل دسته ای را تعریف می کند که براساس آن متامدل ابرساختار وجود دارد : object constraint Language (زبان محدودیت شئی) (OCL) برای تعریف قوانین برای اجزاء مدل و تغییر درونی نمودار UML (UML Dixgram interchange) که تعریف می کند چگونه ترکیب های نمودار UML2 مبادله می شوند . نسخه های فعلی این استانداردها به این شکل ساختار UML 20102 ، نسخه OCL 2.0 و نسخه تبادل نمودار UML 1.0 .</p>
<p>گرچه بسیاری از وسایل UML از بعضی ویژگیهای جدید UML2.x حمایت می کند، OMG هیچ قسمتی مناسب یا تست موضوعی مطابق با ویژگیهایش فراهم نمی آورد.</p>
<p><strong>روشها :</strong></p>
<p>UML به خودی خود یک روش نیست ؛ هرچند طراحی شده بود تا با روشهای توسعه نرم افزاری شئی گرا اصلی زمان خودش سازگار باشد (برای مثال objectory , Booch, OMT) زمانیکه UML تکامل پیدا کرد ، بعضی از این روشها برای استفاده از نوتاسیون جدید (برای مثال OMT) دوباره طراحی شدند و روشهای جدید براساس UML خلق شدند . بهترین مورد مشهور process Rational umified (RUP) است . روشهای مبنی بر UML زیاد دیگری همانند روش Abstraction , Dynamic systems Development method ، و بقیه برای تهیه راه حلهای بسیار خاص، یا بدست آوردن اهداف مختلف طراحی شده اند.</p>
<p><strong>مدلسازی :</strong></p>
<p>خیلی مهم است که بین مدل UML و مجموعه نموداری یک مجموعه مشخص شود. نمودار یک نمایش گرافیکی جزئی از یک مدل سیستم است . مدل همچنین دارای یک صفحه محمل معنایی است ، استنادی همانند موارد استفاده نوشتاری که نمودارها و اجزاء مدل را استخراج می کنند .</p>
<p>نمودارهای UML سه دیدگاه مختلف از مدل سیستم را نشان می دهند .</p>
<p>دیدگاه تجهیزات تابعی</p>
<p>بر تجهیزات تابعی سیستم از دیدگاه کاربر تأکید می کند .</p>
<p>شامل نمودارهای استفاده موردی است .</p>
<p>دید رفتار دینامیکی (پویار)</p>
<p>بر رفتار پویای سیستم با نشان دادن همکاریهائی میان اشیاء تمرکز می کنند تا حالات درونی از اشیاء تغییر می یابد .</p>
<p>شامل نمودارهای پی در پی، نمودارهای فعالیتی و نمودارهای دستگاه حالت است . مدلهای UML می توانند در میان وسایل UML با استفاده از فرمت مبادله XMI مبادله شوند.</p>
<p>نمودارها</p>
<p>UML 2.0 دارای 13 نوع نمودار است که می تواند به طور سلسله مراتبی طبقه بندی شود همانطور که در نمودار طبقه ی زیر نشان داده شده است :</p>
<p>نمودار صفحه 4</p>
<p>دیاگرام های ساختار بر این موضوع تأکید دارند که چه چیزهائی باید در سیستم مدلسازی شود.</p>
<p>نمودار طبقه ای</p>
<p>نمودار اجزاء</p>
<p>نمودار ساختار مرکب (در UML 2.x اضافه شده است )</p>
<p>نمودار به کارگیری</p>
<p>نمودار شئی</p>
<p>نمودار بسته ای</p>
<p>نمودارهای رفتاری براین امر تأکید دارند که چه چیزی باید در سیستمی که مدل سازی می شود اتفاق بیفتد :</p>
<p>نمودار فعالیت</p>
<p>نمودار دستگاه حالت</p>
<p>نمودار استفاده موردی</p>
<p>نمودارهای تأثیر متقابل، مجموعه فرعی از نمودارهای رفتاری، بر جریان کنترل داده ها در میان چیزها در سیستم در حال مدل سازی تاکید می کند .</p>
<p><strong>نمودار ارتباطات </strong></p>
<p>نمودار شرح اجمالی تأثیر متقابل (اضافه شده در UML 2.x)</p>
<p><strong>نمودار توالی </strong></p>
<p>نمودار زمان بندی (اضافه شده در UML 2.x)</p>
<p>Protocol state machine (دستگاه حالت پروتکل) یک تغییر فرعی از state machine است. شاید برای مدل سازی پروتکل های ارتباطات شبکه ای استفاده شود.</p>
<p>UML انواع جزء UML را براي يك نوع نمودار خاص محدود نمي كند . به طور كلي ، هر جزئي UML‌ ممكن است تقريباً‌ به همه انواع نمودارها نمايان شود. اين تغييرپذيري تا اندازه اي در UML2.0 محدود شده بود.</p>
<p>هماهنگ با سنت ترسيم هاي مهندسي ، نظريه هاي كه استفاده ، محدوديت ، يا قصد و نيت را شرح و توضيح مي دهد هميشه در نمودار UML مجاز است .</p>
<p><strong>مفاهيم </strong></p>
<p>UML از مفاهيم زيادي از بسياري از منابع استفاده مي كند براي فهرست قطعي ، لغت نامه اصطلاحات Unified medeling Language مراجعه كنيد. مفاهيم قابل توجه در اينجا نام برده مي شوند.</p>
<p>For structure</p>
<p>بازيگر ، صفت، دسته، جزء ، رابط، شئي ، بسته</p>
<p>For behavior</p>
<p>فعاليت ، واقعه ، پيغام ، روش ، عمليات ، حالت استفاده موردي</p>
<p>For relaibnships</p>
<p>مجموعه ، انجمن ، تركيب ، وابستگي ، كلي گوي ي(يا وراثت)</p>
<p><strong>بقيه مفاهيم </strong></p>
<p>پيش آگهي ، كيفيت نمادي را مشخص مي كند كه به آن متصل است. نوتاسيون فراواني كه با بودن ولسازي پايگاه داده ها مطابقت دارد . مثلاً 1,0..1,1..</p>
<p><strong> </strong></p>
<p><strong>نقش </strong></p>
<p><strong>نقد و انتقاد ما </strong></p>
<p>گرچه UML يك استاندارد مدلسازي بسيار استفاده شده و شناسايي شده است ، غالباً به خاطر نقص هاي زير مورد انتقاد قرار مي گيرد :</p>
<p>- bloat زبان ، UML اغلب به خاطر پيچيده و بي دليل بزرگ بودن مورد انتقاد قرار          مي گيرد. داراي نمودارهاي زياد و ساختارهاي زيادي است كه فراوان هستند يا بندرت استفاده مي شوند. اين انتقاد غالب اوقات  در UML 2.0 در مقايسه با UML 10D هدايت مي شود. چونكه نسخه هاي جديدتر شامل توافق هاي طراحي يا تعهد هستند.</p>
<p>- مشكلاتي در يادگيري و پذيرش . مشكلات ذكر شده در بالا مي توانند يادگيري و پذيرش UML را مشكل ساز كنند، به خصوص وقتي كه مهندساني فاقد مهارتهاي لازم به آن نياز دارند.</p>
<p>- تنها كد با كد در همزماني است. جنبه ديگري برقرار مي شود كه با سيستم مان كار          مي كند كه مهم هستند ، مدلهاي غيرزيبا. همانطور كه jack keevu‌ آن را به شكل موجز مطرح مي كند ، «كد ، طرح است» پيگيري اين عقيده و منجر به نياز براي روشهاي بهتر نرم افزار نوشتاري است.</p>
<p>UML داراي ارزش در روشهايي است كه مدلهائي را براي ايجاد منبع يا رمز قابل اجرا تكميل مي كند. اين هر چند ، ممكن است هنوز كافي نباشد. چونكه مشخص نيست كه UML 20 O&#8217;s Action Semantics‌ تكميل و اجراهاي Turing را نشان دهند. تمام مدلها اشتباه هستند، اما بعضي مدلها مفيد هستند.</p>
<p>تطابق نادرست امپدانس / امپدانس تراكمي . همانطور كه با هر سيستم فوتاسيوني است ، UML قادر به ارائه بعضي سيستم ها به شكل اختصاري يا كارآتري نسبت به بقيه است. بنابراين تهيه كننده در راستاي راه حلها جذب مي شود كه در بخش عرض قابليت هاي UML و زبان اجرا جاي مي گيرد. اين مشكل به طور خاصي مطرح مي شود اگر زبان اجرا به اصل شئي گراي ارتودوكس متصل نباشد، هنگاميكه مجموعه متقاطع بين UML و زبان اجرا ممكن است از آن مجموعه هم كوچكتر باشد.</p>
<p>ناسازگاري (تناقص) از نظر زيبايي شناختي. اين بحث بيان مي دارد كه تركيب خاص نوتاسيون انتزاعي (2D ovals , boxes,…) باعث مي شود UML به شكل ناهنجار و ناسازگار به نظر برسد و آن تلاش بيشتر مي توانست براي ايجاد يكساني و نمايش هاي لذت زيبايي شناختي انجام شوند.</p>
<p>تلاش براي تمام برنامه ريزان همه چيز است. UML يك زبان مدلسازي كلي هدف است كه سعي دارد به سازگاري با هر زبان اجراي احتمالي دست يابد. در زمينه يك پروژه خاص ، عملي ترين ويژگيهاي UML بايد براي استفاده بوسيله تيم طراحي براي تكميل هدف خاص آزاد و محدوديت زدايي شوند. به علاوه ، وسايل محدود كنندة دامنه UML تا محدوده اي خاص از طريق يك فرماليسم است كه كاملاً بوجود نمي آيد، و خودش موضوعي مورد انتقاد است.</p>
<p>فرمت مبادله به شكل (ناقص). در حاليكه استاندارد XMI (مبادله متا داده هاي XML) براي تسهيل مبادله مدلهاي UML طراحي مي شود ، به مقدار زيادي در مبادله عملي مدلهاي UML بدون تأثير است. تعريف مدل UML  در يك وسيله و سپس انتقال آن به وسيله اي ديكر به طور نمونه منجر به از دست دادن اطلاعات مي شود. اين بي اثري قابليت عمليات در چند محيط قابل استناد به دو دليل است : اولاً ، XML  از حق خودش بزرگتر و پيچيده تر است ، چونكه مدلي عنوان نمودن مشكل فني  مبهم تري نسبت به مدلهاي UML مبادله اي است. به طور خاصي ، تلاش دارد تا مكانيسمي براي تسهيل مبادله سه زبان مدلسازي دلبخواه تعريف شده بوسيله (MOF) OMG&#8217;S Meta-Object Facility فراهم آورد . دوماً‌ ، مشخصه مبادله دياگرام UML فاقد جزئيات كافي براي تسهيل مبادله مطمئن نوتاسيون UML بين وسايل مدلسازي است. چونكه UML يك زبان مدلسازي بصري است ، اين نقص براي مدلساز اين ضروري و اساس است كه نمي خواهند نمودارهايشان را دوباره ترسيم كنند.</p>
<p>بسياري از كارشناسان مدلسازي نقدهاي تند و تيزي از UML را نوشته اند ، شامل &#8220;The positirespin : UML &#8221; Bertrand meyer  و مقاله ي بوسيله Brian Henderson-sellers در كنفرانس MODELS / UML در ژنو، ايتاليا در اكتبر 2004 ارائه شد.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1072</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>پایگاه های داده</title>
		<link>http://www.poroge.com/?p=1051</link>
		<comments>http://www.poroge.com/?p=1051#comments</comments>
		<pubDate>Thu, 22 Jul 2010 17:11:32 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[مقالات]]></category>
		<category><![CDATA[اطلاعات]]></category>
		<category><![CDATA[بانك اطلاعاتي]]></category>
		<category><![CDATA[تكنولوژي]]></category>
		<category><![CDATA[داده]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[سيستمها]]></category>
		<category><![CDATA[مقاله]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1051</guid>
		<description><![CDATA[<p><a href="http://www.poroge.com"><img class="aligncenter size-medium wp-image-1052" title="Database" src="http://www.poroge.com/wp-content/uploads/2010/07/Database-300x276.gif" alt="" width="300" height="276" /></a></p>
<p>پيشرفت سريع علم كامپيوتر و كاربرد وسيعي كه اين تكنولوژي در كليه امور زندگي بشر دارد از يك سو و حجم زياد اطلاعات و نياز بشر به سرعت،دقت و انسجام اطلاعات از سوي ديگر ،موجب گرديد تا اينجا بانك هاي اطلاعاتي به عنوان يكي از موضوعات مهم و اساسي جامعه بشري مطرح شود. بانك اطلاعاتي با ساختار خاص خود،ذخيره ساختن اطلاعات را براحتي ممكن ساخته و كاربران مجاز نيز به سادگي به اطلاعات دسترسي مي يابند. سعي داريم شما را با مفهوم بانك اطلاعاتي،سيستم مديريت بانك اطلاعاتي و فوايد استفاده از اين سيستمها آشنا سازيم.</p>
<p><span id="more-1051"></span></p>
<p>داده ( Data ) و اطلاعات (‌ Information )</p>
<p>دو اصطلاح داده و اطلاعات كه بيشتر اوقات به جاي يكديگر برده مي شوند در سيستمهاي اطلاعاتي مفاهيم متفاوتي دارند. داده ها در اين سيستمهاي اطلاعاتي عبارتند از : كلمات و ارزشهاي واقعي كه از طريق مشاهده و تحقيق بدست مي آيند در حالي كه اطلاعات داده هاي پردازش شده مي باشند كه براي گيرنده قابل درك بوده و با دانستن آن شروع به تصميم گيري مي كند. به عبارت ديگر داده نمودي از وقايع، معلومات،رخدادها ،پديده ها و مفاهيم مي باشد در حاليكه اطلاعات تكوين و پردازش يا تفسير داده بوده و شامل خواص ارتباط دهندگي و انتقال دهندگي مي باشد.</p>
<p>موجوديت ( Entity )<br />
موجوديت مصداق كلي هر پديده،فرد يا شي ء يا مفهومي است كه مي خواهيم در مورد آن اطلاعاتي داشته باشيم به عنوان مثال اگر در نظر داريم يك سيستم پايگاه داده براي يك دبيرستان پياده سازي كنيم مواردي چون دانش آموزان ، دبيران، دروس ،كلاسها و &#8230;. جزء موجوديت هاي سيستم بشمار مي روند.</p>
<p>صفت خاصه ( Attribute )<br />
هر موجوديت از يكسري صفات تشكيل شده است كه داراي مقادير واقعي هستند و به عباراتي وجه تمايز يك موجوديت از موجوديت ديگر بشمار مي رود. به عنوان مثال در سيستم دانشگاه اگر موجوديت دانشجو را در نظر بگيريم مي توانيم صفات خاصه: نام ،نام خنوادگي،سن،سال تولد،رشته تحصيلي،سال ورود و &#8230; را برگزينيم و يا براي موجوديت درس: نوع موجوديت: درس صفات خاصه: كد درس،نام درس، تعداد واحد ‎ايجاد سيستم خودكار ذخيره و بازيابي داده ها دو روش كلي براي ذخيره ساختن و بازيابي خودكار داده ها وجود دارد:<br />
1-روش استفاده از سيستمهاي اطلاعاتي ساده يا روش غير بانك اطلاعاتي</p>
<p>2-روش استفاده از بانكهاي اطلاعاتي</p>
<p>روش غير بانك اطلاعاتي<br />
در اين روش ،داده ها در فايلهاي جداگانه اي قرار مي گيرند و براي استفاده از داده هاي موجود در آن فايلها،سيستمهاي جداگانه اي طراحي مي شوند. به اين نوع سيستمها سيستم پردازش فايل ( File-System ) گفته مي شود. در اين سيستمها هر برنامه ي كاربردي به فايل اطلاعاتي مربوط به خود مراجعه مي كند.</p>
<p>فايل 1« برنامه كاربردي 1 «كاربر 1</p>
<p>فايل 2« برنامه كاربردي 2 «كاربر 2</p>
<p>فايل 3« برنامه كاربردي 3 «كاربر 3<br />
در اين روش بسياري از داده هاي مورد نياز كاربر 1 در بين داده هاي در اختيار كاربر 2 و 3 وجود دارد و در نتيجه عدم تجمع داده ها و عدم وحدت ذخيره سازي اطلاعات مورد نياز كاربر 1 در فايل 1 با تكرار ذخيره سازي اطلاعات روبرو هستيم و اين به معني افزونگي داده است. از طرفي حفظ امنيت اين سيستم مشكل است در صورت ايجاد تغييراتي در فايل 1 در زمينه اطلاعات موجود در آن، برنامه كاربردي مربوط نيز بايد تغيير پيدا كند.</p>
<p>روش بانك اطلاعاتي<br />
در اين روش كليه داده ها به صورت مجتمع يا بانك ذخيره شده ولي هر كاربر ديد خاص خود را نسبت به داده ها دارد. در اين صورت كاربران مختلف مي توانند بصورت مشترك با بانك كار كنند همچنين افزونگي داده ها به حداقل ممكن كاهش مي يابد. در اين روش نرم افزار مديريت بانك اطلاعاتي ( DBMS ) به عنوان واسطه بين برنامه هاي كاربردي و بانك اطلاعاتي ايفاي نقش مي كند لذا امنيت داده ها در اين روش بيشتر است.</p>
<p>« برنامه كاربردي 1 «برنامه كاربردي1</p>
<p>فايل« DBMS « برنامه كاربردي 2 «برنامه كاربردي2</p>
<p>«برنامه كاربردي 3 «برنامه كاربردي 3</p>
<p>تعريف بانك اطلاعاتي ( Date Base )<br />
به صورت جامع مي توان گفت: « بانك اطلاعاتي يا پايگاه داده ها مجموعه اي سازمان يافته از اطلاعات و داده هاي مرتبط به هم است ” و در يك تعريف كاملتر بانك اطلاعاتي عبارت است از ” مجموعه اي از داده هاي ذخيره شده بصورت مجتمع و مبتني بر يك ساختار، با حداقل افزونگي، تحت كنترل متمركز كه استفاده از آن بصورت اشتراكي و همزمان نيز مسير مي باشد.»</p>
<p>•مجتمع و مبتني بر يك ساختار بدين معني است كه كل داده هاي عملياتي محيط مورد نظر در يك ساختار مشخص به صورت يكجا ذخيره شده باشند و لازمه هر تجمعي وجود يك ساختار است.<br />
•منظور از عدم افزونگي در يك تعبير ساده به حداقل رساندن ذخيره داده هاي تكراري و بهينه سازي استفاده از محيط هاي ذخيره اطلاعات مي باشد.<br />
سيستم مديريت بانك اطلاعات ( DBMS )<br />
DBMS مهمترين جزء نرم افزاري در سيستم بانك اطلاعاتي است كه به عنوان رابط بين بانك اطلاعاتي و كاربر عمل مي نمايد، به طوريكه كليه فايلهاي بانك اطلاعاتي فقط در اختيار اين نرم افزار قدرتمند قرار گرفته و كليه دستيابي ها به بانك از طريق DBMS صورت مي پذيرد. آنچه در مورد يك سيستم مديريت بانك اطلاعاتي اتفاق مي افتد عبارت است از :</p>
<p>1-كاربر با استفاده از بعضي زير زبان داده ها مانند SQL ( كه به تفضيل در فصل هاي آتي به آن اشاره خواهد شد) در خواست يك دسترسي مي نمايد.</p>
<p>2-DBMS در خواست مورد نظر را دريافت وآن را تحليل مي كند.<br />
3-DBMS بترتيب ديد كاربر از داده هاي ذخيره شده و حفظ امنيت داده در محيط بانك اطلاعاتي را</p>
<p>بازرسي و مرور مي كند. (‌كنترل امنيت و جامعيت داده ها )‌<br />
4-DBMS عملكردهاي لازم را براي داده هاي ذخيره شده اجرا مي كند.</p>
<p>فايل و داده ها« سيستم عامل « DBMS «برنامه هاي كاربران<br />
محيط DBMS<br />
اجزاء اصلي سيستم بانك اطلاعاتي عبارتند از : داده ها، سخت افزار، نرم افزار و كاربران كه در اين جا به تشريح آنها خواهيم پرداخت.<br />
داده ها ( Data )‌ داده كه قبلا به آن شاره گرديد از مهمترين اجزاء DBMS مي باشد. مجتمع و اشتراكي بودن داده ها به عنوان مزاياي اصلي سيستم پايگاه داده ها در محيط هاي بزرگ بشمار مي رود.</p>
<p>سخت افزار ( Hardware )</p>
<p>سخت افزار مورد نياز DBMS معمولا عبارتند از:</p>
<ol>
<li> سخت افزار ذخيره سازي داده: در عمليات ذخيره سازي اده ها در محيط هاي بانك اطلاعاتي از ديسكهاي سريع و با ظرفيت بالا استفاده مي شود.</li>
<li> سخت افزار پردازنده هاي مركزي: با پيشرفت فناوري انفورماتيك، سيستم هايي به بازار عرضه شده اند كه از نظر معماري پردازنده مركزي، حافظه اصلي و ساير قسمتها از پيكربندي ويژه اي جهت ذخيره و بازيابي اطلاعات برخوردارند و به لحاظ اين ويژگي ها كاربرد بيشتري در محيط هاي بانك اطلاعاتي خواهند داشت.</li>
<li> سخت افزار ارتباطي: مجموعه امكانات سخت افزاري كه براي برقراري ارتباط بين كامپيوترها و دستگاهها جانبي و همچنين مابين چندين كامپيوتر ( به صورت شبكه اي ) استفاده مي شوند را تحت عنوان سخت افزارهاي ارتباطي بانك هاي اطلاعاتي مي شناسند.</li>
</ol>
<p>نرم افزار ( Software )<br />
نرم افزار شامل خود DBMS و برنامه هاي كاربردي، سيستم عامل و نيز نرم افزارهاي شبكه اي است. براي استفاده DBMS در محيط شبكه عمدتا از برنامه هاي كاربردي نوشته شده به زبانهاي برنامه نويسي نسل سوم مانند C ، كوبول، پاسكال و &#8230;. و يا زبانهاي نسل چهارم مانند SQL استفاده مي شود. هدف نرم افزارهاي DBMS ارائه چهار ابزار اصلي است كه عبارتند از :</p>
<ol>
<li>زبانهاي پرس و جو (‌Query Language )</li>
<li>گزارش ها ( Report )</li>
<li>فرم ها ( Forms )</li>
<li>تصاوير ( Graphics )‌</li>
</ol>
<p>كاربران (‌Users )<br />
كاربران يا كساني كه به نحوي با سيستم در ارتباط هستند به چهار دسته مهم تقسيم مي شوند:<br />
1-مديران بانك اطلاعاتي يا DBA<br />
2-طراحان بانك اطلاعاتي يا DBD<br />
3-برنامه نويسان بانك اطلاعاتي يا DBP<br />
4-كاربران نهايي يا ساتفاده كنندگان سيستم ( End Users )</p>
<p>اصول معماري سيستم هاي بانك اطلاعاتي<br />
با توجه به گفته هاي بالا در مي يابيم كه سيستم بانك اطلاعاتي ،سيستمي چند سطحي است. اين سيستم بوسيله امكانات سيستم مديريت بانك اطلاعاتي ايجاد شده و در اختيار كاربران قرار مي گيرد. در نظر داشته باشيد كه اين سيستم چند سطحي داراي يك معماري خاص مي باشد كه بيانگر نحوه تعريف داده ها در سطوح مورد نظر است.</p>
<p>وظايف DBMS<br />
وظايف سيستم مديريت بانك اطلاعاتي بستگي به نوع كاربران آن دارد اين وظايف در چارچوب واحدهاي نرم افزاري طراحي و پياده سازي مي شوند. هر چند وظايف DBMS در سيستم هاي مختلف تا حدودر متفاوت است، اما به طور كلي اين وظايف عبارتند از:<br />
•تعريف داده ها<br />
•تامين امكان دستكاري داده ها<br />
•ايجاد ديكشنري داده ها</p>
<p>•كنترل امنيت و جامعيت داده ها</p>
<p>•ايجاد امكان بازيابي از بانك اطلاعاتي</p>
<p>•بهنگام سازي داده ها</p>
<p>•تامين امكان كنترل كارايي</p>
<p>•تامين تسهيلاتي براي كاربران به منطور توسعه سيستم<br />
براي انجام اين وظايف مي بايست واحدهاي نرم افزاري مربوط در سيستم مديريت بانك اطلاعاتي وجود داشته باشد. هر كدام از اين واحدها ممكن است مركب از چند واحد كوچكتر باشند. توجه داشته باشيد كه هر سيستم نيازمند يك بخش كنترلي است. در سيستم مديريت بانك اطلاعاتي ، مجموعه واحدهايي كه وظايف كنترلي را بر عهده دارند اصطلاحا به سيستم كنترل بانك اطلاعاتي معروف مي باشند. به طور كلي واحدهاي زير در سيستم كنترل بانك اطلاعاتي وجود دارند:<br />
•واحد نظارت بر اجراي برنامه كاربر</p>
<p>•واحد كامپايل كننده احكام و درخواستها</p>
<p>•واحد دستيابي به بانك فيزيكي</p>
<p>•واحد ثبت رويدادها و تغيراتي كه در بانك ايجاد مي شوند</p>
<p>زبان تعريف داده ها DDL<br />
همانطور كه اشاره شد تعريف داده ها يكي از وظايف DBMS است. DDL از زبانهاي فرعي داده اي جهت تعريف داده ها است كه از آن جهت تعريف صفحات مشخصه و خصوصيات يك بانك استفاده مي شود. ساختار ركوردها، تعريف فيلدها، محل فايلها و شيوه ذخيره سازي داده ها در بانك به وسيله احكام DDL انجام مي پذيرد.</p>
<p>زبان پردازش و مديريت داده ها DML<br />
تامين امكان دستكاري داده ها نيز از وظايف DBMS عنوان شد. زبان دستكاري ،پردازش و مديريت بانك اطلاعاتي به زباني گفته مي شود كه براي درج داده ها بروز رساني آنها و اجراي پرس و جو از يك بانك اطلاعاتي مورد استفاده قرار مي گيرد. اين زبانها اغلب داراي قابليت انجام محاسبات رياضي و آماري مي باشند كه به وسيله آنها عمليات گزارش گيري از بانك اطلاعاتي آسان تر خواهد شد.</p>
<p>ديكشنري داده ها<br />
يكي ديگر از وظايف DBMS ، ايجاد ديكشنري يا فرهنگ داده است. ديكشنري داده ها يكي از امكاناتي است كه در محيط هاي بانك اطلاعاتي در اختيار اداره كنندگان بانك قرار مي گيرد. ديكشنري داده ها كه به آن راهنماي سيستم نيز مي گويند در واقع بانكي در مورد خود بانك و داده هاي ذخيره شده در آن است. بطور كلي اطلاعات و محتواي ديكشنري داده ها بشرح زير مي باشد:<br />
• شرح ساختار و پيكر بندي فيزيكي بانك .</p>
<p>• تاريخ ايجاد داده ها .</p>
<p>• مكانسيم ورود داده ها به بانك .</p>
<p>• ارتباط بين برنامه هاي كاربردي و داده ها .</p>
<p>• مشخصات كاربران و چگونگي حق دستيابي آنها .<br />
آشنايي با جداول و اجزاء تشكيل دهنده آنها در بانك هاي اطلاعاتي<br />
جدول مهمترين ساختار داده اي در سيستم بانك هاي اطلاعاتي رابطه اي است (‌در ادامه اين فصل به تشريح سيستم هاي رابطه اي خواهيم پرداخت. ) جدول در سيستم رابطه اي تشكيل شده از چندين سطر و ستون مي باشد كه مقادير داده در هر سطر و ستون در طول زمان متغير خواهد بود. به طور كلي جداول ساختار بنيادين رابطه ها هستند. سطرهاي موجود در جداول را « ركورد» و ستونهاي آن را « فيلد» مي نامند.</p>
<p>ركورد<br />
ركورد يك ساختار داده اي متشكل از مجموعه فيلدهاست كه هر يك از اين فيلدها نام و نوع خاص خود را دارند. برخلاف يك آرايه كه تمام عناصر آن نمايانگر انواع يكساني از اطلاعات هستند و دستيابي به آنها با يك شاخص (‌ايندكس )‌انجام مي شود، عناصر يك ركورد نمايانگر انواع مختلفي از اطلاعات مي باشد كه بوسيله نامشان مورد دستيابي قرار مي گيرند.<br />
فيلد<br />
فيلد محلي است در يك ركورد كه نوع خاصي از داده ها در آن ذخيره مي شود. به عنوان مثال چنانچه قرار باشد براي ذخيره سازي اطلاعات كارمندان يك سازمان از جداول استفاده شود،ركورد اين جداول ممكن است فيلدهايي براي ذخيره سازي نام خانوادگي، نام، نشاني ،مدرك تحصيل و &#8230;. داشته باشد. فيلدها بوسيله بيشينه طول و نوع داده هايشان (‌كاراكتري ، عددي، تاريخ و &#8230; )‌ از يكديگر تميز داده مي شوند. توجه داشته باشيد كه امكان تعريف اين مشخصات معمولا در زبان تعريف داده ها (‌DDL )‌ قرار دارد.</p>
<p>آشنايي با روشهاي ارتباط و مدلهاي بانك هاي اطلاعاتي</p>
<p>سه مدل داده اي براي سيستم هاي بانك اطلاعاتي وجود دارد. لازمه هر مدل داده اي وجود يك ساختار داده اي است كه علاوه بر مدل داده عناصر ديگري را نيز در بردارد. عناصر مدل داده اي عبارتند از ساختارداده اي ، عملگرهاي عمل كننده روي ساختار و قواعد عام براي تامين جامعيت مي باشند. در ادامه اين بحث قصد داريم مدلهاي موجود را مورد مطالعه قرار دهيم. از آنجا كه بانك اطلاعاتي اوراكل مبتني بر مدل رابطه اي است، لذا بيشتر بحث خود را بر مدل رابطه اي معطوف مي داريم .</p>
<p>مدل سلسله مراتبي<br />
اين ساختار ،قديمي ترين مدل براي طراحي بانك هاي اطلاعاتي است، در اين ساختار داده ها و ارتباط بين آنها به كمك يك درختواره نمايش داده مي شوند. در رختواره گرافي است داراي يك ريشه و N گره كه در حالت بسته و غير چرخشي قرار دارد. منظور از حالت بسته اين است كه بين هر دو گره پيوندي وجود دارد كه يك مسير منطقي را از گرهي به گره ديگر تامين مي كند و هميشه از سطح بالاتر به سطح پايين تر است . غير چرخشي نيز يعني مسيري از گره سطح پايين تر به گره سطح بالاتر وجود ندارد. هر گره از هر سطح مي تواند تعدادي گره وابسته يا فرزند داشته باشد ولي هر گره فرزند فقط يك گره پدر دارد. هر گره از رختواره مي تواند ركوردي حاوي يك نوع موجوديت باشد. از آنجا كه ريشه سلسله مراتب، نقطه ورود به ساختار بوده و مسير منطقي از سمت بالاتر به سمت پايين تر است، براي عمليات بازيابي ، علاوه بر دستيابي به ريشه، امكان دستيابي به فرزند نيز بايد وجود داشته باشد. در بحث ذخيره سازي نيز اين سيستم داراي اشكال است.<br />
مدل شبكه اي<br />
در اين ساختار موجوديت ها به كمك انواع ركوردها،و ارتباطات به كمك پيوندهاي بين ركوردها نمايش داده مي شوند. چنانچه خواسته باشيم اين ساختار را با مفاهيم موجود در رختواره توضيح دهيم، بايد گفت كه در اين ساختار، هر گره فرزند مي تواند بيش از يك گره پدر داشته باشد. بنابراين به كمك اين ساختار مي توان ارتباطات يك به چند را نمايش داد. مدل شبكه اي پيچيده تر از مدل سلسله مراتبي است و به همان نسبت عمليات ذخيره و بازيابي پيچيده تري دارد.<br />
مدل رابطه اي<br />
پايگاه داده رابطه اي از ديد كاربران يك مجموعه از جدولهايي است كه به درستي قابل درك مي باشند. چهار مفهوم اساسي در اين مدل به شرح زير وجود دارد:<br />
1- جدول 2- ستونها 3- رديفها 4- فيلدها<br />
اين مدل داده ها را در روابط سازماندهي نموده و از قوانين رياضي تبعيت مي كند. صفات خاصه يك موجوديت در يك سيستم به عنوان يك رابطه در اين مدل مطرح مي شود. به عنوان مثال در سيستم دانشگاه مي توانيم رابطه دانشجو را در نظر بگيريم :</p>
<p>( شماره شناسنامه، سال ورود، رشته، نام ، شماره دانشجويي ) دانشجو<br />
صفت خاصه نام رابطه</p>
<p>اين رابطه بر طبق مدل رابطه اي بصورت زير نمايش داده مي شود:<br />
شماره شناسايي سال ورود رشته نام</p>
<p>1012 1379 كامپيوتر علي 245</p>
<p>2578 1380 رياضي حسين 265</p>
<p>3920 1379 آمار رضا 327</p>
<p>17 1381 كامپيوتر بهرام 493<br />
هر ستون در مدل رابطه اي همچنان كه در بالا مشاهده مي كنيد نشان دهنده يك صفت خاصه ( فيلد)‌ از يك نوع موجوديت ( دراين مثال دانشجو)‌ و هر سطر نمايانگر يك نمونه از يك موجوديت (‌ركورد)‌ مي باشد.</p>
<p>خواص ارتباطات رابطه اي</p>
<p>يك جدول يا رابطه شامل خواص زير است:</p>
<p>• رديفهاي تكراري در آن وجود ندارد.</p>
<p>• ترتيب رديفها مهم نيست.<br />
• ترتيب ستونها مهم نيست.</p>
<p>• مقادير اتميك (‌Atomic )‌ مي باشند ( يا به عبارتي همه مقادير صفات غير قابل تجزيه هستند.)</p>
<p>كليد در مدل رابطه اي</p>
<p>كليد در مدل رابطه اي صفت خاصه يا نام ستوني است كه براي هر كدام از سطرهاي مقدار منحصر بفردي دارد به عنوان مثال در رابطه دانشجو شماره دانشجويي مي تواند يك كليد باشد زيرا هر دانشجو شماره دانشجويي مخصوص به خود را دارد اما نام را نمي توان يك كليد در نظر گرفت . كليد مي تواند تركيبي از صفات باشد به عنوان مثال در رابطه دانشجو مجموعه نام و شماره شناسنامه نيز مي توانند به عنوان كليد در نظر گرفته شوند. كليد كانديد: از مجموعه كليدهايي كه مي توانيم براي يك رابطه در نظر بگيريم آنهايي كه در دو ويژگي زير صدق كنند به عنوان كليد كانديد در رابطه مذكور مطرح مي شوند.<br />
1- منحصر به فرد بودن: مقدار اين صفت براي هر سطر منحصر به فرد است.</p>
<p>2- خاصيت غير قابل كاهش بودن: هيچ زير مجموعه مناسبي از صفات تشكيل دهنده كليد. داراي</p>
<p>خاصيت منحصر به فرد بودن نباشد.<br />
به عنوان مثال اگر مجموعه دو صفت شماره دانشجويي و نام را به عنوان كليد در نظر بگيريم شرط اول در مورد اين كليد صادق است ولي شرط دوم برقرار نيست زيرا شماره دانشجويي به عنوان زير مجموعه اي از دو صفت شماره دانشجويي و نام داراي خاصيت منحصر به فرد بودن است. پس اين مجموعه كليد كانديد نيست. اما كليد اصلي، كليد كانديدي است كه توسط طراح بانك اطلاعاتي انتخاب و معرفي مي شود يا به عبارتي طراح بانك،يكي از كليدهاي كانديد را به عنوان كليد اصلي بر ميگزيند در تعيين كليد اصلي از بين كليدهاي كانديد بايد دو ضابطه زير را در نظر گرفت:<br />
1- در نظر گرفتن اهميت كليد اصلي نسبت به ساير كليدهاي كانديد كه در پاسخگويي به نيازهاي متنوع</p>
<p>كاربران از اهميت بيشتري برخوردار است.<br />
2- كوتاهتر بودن طول كليد كانديد از نظر طول رشته بايتي.</p>
<p>سيستم بانك اطلاعاي رابطه اي<br />
سيستم مديريت بانك اطلاعاتي رابطه اي داراي شرايط زير است:<br />
1- بانك اطلاعاتي مبتني بر رابطه ها ( بطوريكه كاربر بانك را بصورت مجموعه اي از جداول ببينيد. جداولي كه دو سطر تكراري در آن وجود ندارد. ترتيب رديفها و ستونها در آن مهم نيست و ستونها قابل تجزيه نيستند.)<br />
2- حداقل سه عمل زير روي جداول آن قابل انجام باشديا به عبارتي داراي عملگرهايي جهت انجام سه مورد زير بر روي جداول باشد.<br />
1) عملگري جهت انتخاب سطرهاي خاصي از بانك اطلاعاتي (‌ عملگر گزينش )‌</p>
<p>2) عملگري جهت انتخاب ستونهايي از بانك اطلاعاتي (‌ عملگر گزينش)‌</p>
<p>3) عملگري جهت تركيب دو جدول اطلاعاتي و ايجاد جدول جديد (‌ عملگر پيوند)‌</p>
<p>مزاياي مهم سيستم هاي بانك اطلاعاتي<br />
اهميت و اعتباري كه فن آوري بانكهاي اطلاعاتي در سالهاي اخير كسب كرده است به حدي است كه اينك به مثابه فن آوري برتر هم در محيط هاي تك كاربردي و هم در محيطهاي چند كاربردي ، بطور فراگير مورد استفاده قرار مي گيرد. مهمترين مزاياي سيستم بانك اطلاعاتي به شرح زير مي باشد:<br />
• وحدت ذخيره سازي داده هاي عملياتي .<br />
• كاهش افزونگي: در صورت عدم استفاده از سيستمهاي بدون پايگاه داده، به دليل آنكه هر برنامه كاربردي داراي فايلهاي خاص خودش مي باشد، تكرار اطلاعات در برنامه هاي كاربردي سبب افزونگي شده و موجب هدر رفتن فضاي منبع ذخيره سازي مي گردد.<br />
• پرهيز از ناسازگاري: با كنترل و كاهش افزونگي، سيستم پايگاه داده ها سازگاري و يكپارچگي داده ها را تضمين مي كند.<br />
• به اشتراك گذاتشتن داده ها: در سيستم پايگاه داده ها برنامه هاي كاربردي موجود قادر به اشتراك گذاردن داده ها در بانك اطلاعاتي بوده و برنامه هاي كاربردي جديد نيز مي توانند از اين داده ها استفاده كنند. در واقع عليرغم ديدگاههاي متفاوت كاربران، چند كاربر مي توانند در يك زمان به بانك دسترسي داشته باشند.<br />
• اعمال محدوديتهاي امنيتي : وجود سيستمهاي امنيتي در پايگاه داده ها كه از مهمترين مشخصه هاي اين گونه سيستمها است امكان اعمال كنترل هاي مختلف را براي هر نوع دسترسي (‌ بازيابي،اصلاح، حذف و غيره) بر روي بانك اطلاعاتي را فراهم مي كند.<br />
• ايجاد تعادل بين درخواستهاي تداخلي: در سيستمهاي بانك اطلاعاتي، ساختاري جهت دسترسي سريع به منبع ذخيره سازي وجود دارد كه بهترين و بهينه ترين امكانات را براي سيستم فراهم مي آورد.</p>
<p>خلاصه: در اين فصل شما را با مفهوم بانك اطلاعاتي ، اجزاء و عناصر مهم بانك اطلاعاتي و سيستم مديريت بانك اطلاعاتي آشنا ساختيم همچنين سه مدل سلسله مراتبي، شبكه اي و رابطه اي براي سيستم هاي بانك اطلاعاتي معرفي شد كه با بيان مزايا و تعريف مدل رابطه اي اهميت و لزوم استفاده از بانك هاي اطلاعاتي رابطه اي جهت طراحي نرم افزاري و سخت افزاري سيستم هاي اطلاعاتي مشاهده گرديد.</p>
<blockquote><p><a href="http://www.4shared.com/account/document/0Cj7rWu_/database-tahghighwwwporogecom.html?sId=tj0Dgtiu4vOMAO8g" target="_blank">دانلود فایل PDF</a></p></blockquote>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.poroge.com"><img class="aligncenter size-medium wp-image-1052" title="Database" src="http://www.poroge.com/wp-content/uploads/2010/07/Database-300x276.gif" alt="" width="300" height="276" /></a></p>
<p>پيشرفت سريع علم كامپيوتر و كاربرد وسيعي كه اين تكنولوژي در كليه امور زندگي بشر دارد از يك سو و حجم زياد اطلاعات و نياز بشر به سرعت،دقت و انسجام اطلاعات از سوي ديگر ،موجب گرديد تا اينجا بانك هاي اطلاعاتي به عنوان يكي از موضوعات مهم و اساسي جامعه بشري مطرح شود. بانك اطلاعاتي با ساختار خاص خود،ذخيره ساختن اطلاعات را براحتي ممكن ساخته و كاربران مجاز نيز به سادگي به اطلاعات دسترسي مي يابند. سعي داريم شما را با مفهوم بانك اطلاعاتي،سيستم مديريت بانك اطلاعاتي و فوايد استفاده از اين سيستمها آشنا سازيم.</p>
<p><span id="more-1051"></span></p>
<p>داده ( Data ) و اطلاعات (‌ Information )</p>
<p>دو اصطلاح داده و اطلاعات كه بيشتر اوقات به جاي يكديگر برده مي شوند در سيستمهاي اطلاعاتي مفاهيم متفاوتي دارند. داده ها در اين سيستمهاي اطلاعاتي عبارتند از : كلمات و ارزشهاي واقعي كه از طريق مشاهده و تحقيق بدست مي آيند در حالي كه اطلاعات داده هاي پردازش شده مي باشند كه براي گيرنده قابل درك بوده و با دانستن آن شروع به تصميم گيري مي كند. به عبارت ديگر داده نمودي از وقايع، معلومات،رخدادها ،پديده ها و مفاهيم مي باشد در حاليكه اطلاعات تكوين و پردازش يا تفسير داده بوده و شامل خواص ارتباط دهندگي و انتقال دهندگي مي باشد.</p>
<p>موجوديت ( Entity )<br />
موجوديت مصداق كلي هر پديده،فرد يا شي ء يا مفهومي است كه مي خواهيم در مورد آن اطلاعاتي داشته باشيم به عنوان مثال اگر در نظر داريم يك سيستم پايگاه داده براي يك دبيرستان پياده سازي كنيم مواردي چون دانش آموزان ، دبيران، دروس ،كلاسها و &#8230;. جزء موجوديت هاي سيستم بشمار مي روند.</p>
<p>صفت خاصه ( Attribute )<br />
هر موجوديت از يكسري صفات تشكيل شده است كه داراي مقادير واقعي هستند و به عباراتي وجه تمايز يك موجوديت از موجوديت ديگر بشمار مي رود. به عنوان مثال در سيستم دانشگاه اگر موجوديت دانشجو را در نظر بگيريم مي توانيم صفات خاصه: نام ،نام خنوادگي،سن،سال تولد،رشته تحصيلي،سال ورود و &#8230; را برگزينيم و يا براي موجوديت درس: نوع موجوديت: درس صفات خاصه: كد درس،نام درس، تعداد واحد ‎ايجاد سيستم خودكار ذخيره و بازيابي داده ها دو روش كلي براي ذخيره ساختن و بازيابي خودكار داده ها وجود دارد:<br />
1-روش استفاده از سيستمهاي اطلاعاتي ساده يا روش غير بانك اطلاعاتي</p>
<p>2-روش استفاده از بانكهاي اطلاعاتي</p>
<p>روش غير بانك اطلاعاتي<br />
در اين روش ،داده ها در فايلهاي جداگانه اي قرار مي گيرند و براي استفاده از داده هاي موجود در آن فايلها،سيستمهاي جداگانه اي طراحي مي شوند. به اين نوع سيستمها سيستم پردازش فايل ( File-System ) گفته مي شود. در اين سيستمها هر برنامه ي كاربردي به فايل اطلاعاتي مربوط به خود مراجعه مي كند.</p>
<p>فايل 1« برنامه كاربردي 1 «كاربر 1</p>
<p>فايل 2« برنامه كاربردي 2 «كاربر 2</p>
<p>فايل 3« برنامه كاربردي 3 «كاربر 3<br />
در اين روش بسياري از داده هاي مورد نياز كاربر 1 در بين داده هاي در اختيار كاربر 2 و 3 وجود دارد و در نتيجه عدم تجمع داده ها و عدم وحدت ذخيره سازي اطلاعات مورد نياز كاربر 1 در فايل 1 با تكرار ذخيره سازي اطلاعات روبرو هستيم و اين به معني افزونگي داده است. از طرفي حفظ امنيت اين سيستم مشكل است در صورت ايجاد تغييراتي در فايل 1 در زمينه اطلاعات موجود در آن، برنامه كاربردي مربوط نيز بايد تغيير پيدا كند.</p>
<p>روش بانك اطلاعاتي<br />
در اين روش كليه داده ها به صورت مجتمع يا بانك ذخيره شده ولي هر كاربر ديد خاص خود را نسبت به داده ها دارد. در اين صورت كاربران مختلف مي توانند بصورت مشترك با بانك كار كنند همچنين افزونگي داده ها به حداقل ممكن كاهش مي يابد. در اين روش نرم افزار مديريت بانك اطلاعاتي ( DBMS ) به عنوان واسطه بين برنامه هاي كاربردي و بانك اطلاعاتي ايفاي نقش مي كند لذا امنيت داده ها در اين روش بيشتر است.</p>
<p>« برنامه كاربردي 1 «برنامه كاربردي1</p>
<p>فايل« DBMS « برنامه كاربردي 2 «برنامه كاربردي2</p>
<p>«برنامه كاربردي 3 «برنامه كاربردي 3</p>
<p>تعريف بانك اطلاعاتي ( Date Base )<br />
به صورت جامع مي توان گفت: « بانك اطلاعاتي يا پايگاه داده ها مجموعه اي سازمان يافته از اطلاعات و داده هاي مرتبط به هم است ” و در يك تعريف كاملتر بانك اطلاعاتي عبارت است از ” مجموعه اي از داده هاي ذخيره شده بصورت مجتمع و مبتني بر يك ساختار، با حداقل افزونگي، تحت كنترل متمركز كه استفاده از آن بصورت اشتراكي و همزمان نيز مسير مي باشد.»</p>
<p>•مجتمع و مبتني بر يك ساختار بدين معني است كه كل داده هاي عملياتي محيط مورد نظر در يك ساختار مشخص به صورت يكجا ذخيره شده باشند و لازمه هر تجمعي وجود يك ساختار است.<br />
•منظور از عدم افزونگي در يك تعبير ساده به حداقل رساندن ذخيره داده هاي تكراري و بهينه سازي استفاده از محيط هاي ذخيره اطلاعات مي باشد.<br />
سيستم مديريت بانك اطلاعات ( DBMS )<br />
DBMS مهمترين جزء نرم افزاري در سيستم بانك اطلاعاتي است كه به عنوان رابط بين بانك اطلاعاتي و كاربر عمل مي نمايد، به طوريكه كليه فايلهاي بانك اطلاعاتي فقط در اختيار اين نرم افزار قدرتمند قرار گرفته و كليه دستيابي ها به بانك از طريق DBMS صورت مي پذيرد. آنچه در مورد يك سيستم مديريت بانك اطلاعاتي اتفاق مي افتد عبارت است از :</p>
<p>1-كاربر با استفاده از بعضي زير زبان داده ها مانند SQL ( كه به تفضيل در فصل هاي آتي به آن اشاره خواهد شد) در خواست يك دسترسي مي نمايد.</p>
<p>2-DBMS در خواست مورد نظر را دريافت وآن را تحليل مي كند.<br />
3-DBMS بترتيب ديد كاربر از داده هاي ذخيره شده و حفظ امنيت داده در محيط بانك اطلاعاتي را</p>
<p>بازرسي و مرور مي كند. (‌كنترل امنيت و جامعيت داده ها )‌<br />
4-DBMS عملكردهاي لازم را براي داده هاي ذخيره شده اجرا مي كند.</p>
<p>فايل و داده ها« سيستم عامل « DBMS «برنامه هاي كاربران<br />
محيط DBMS<br />
اجزاء اصلي سيستم بانك اطلاعاتي عبارتند از : داده ها، سخت افزار، نرم افزار و كاربران كه در اين جا به تشريح آنها خواهيم پرداخت.<br />
داده ها ( Data )‌ داده كه قبلا به آن شاره گرديد از مهمترين اجزاء DBMS مي باشد. مجتمع و اشتراكي بودن داده ها به عنوان مزاياي اصلي سيستم پايگاه داده ها در محيط هاي بزرگ بشمار مي رود.</p>
<p>سخت افزار ( Hardware )</p>
<p>سخت افزار مورد نياز DBMS معمولا عبارتند از:</p>
<ol>
<li> سخت افزار ذخيره سازي داده: در عمليات ذخيره سازي اده ها در محيط هاي بانك اطلاعاتي از ديسكهاي سريع و با ظرفيت بالا استفاده مي شود.</li>
<li> سخت افزار پردازنده هاي مركزي: با پيشرفت فناوري انفورماتيك، سيستم هايي به بازار عرضه شده اند كه از نظر معماري پردازنده مركزي، حافظه اصلي و ساير قسمتها از پيكربندي ويژه اي جهت ذخيره و بازيابي اطلاعات برخوردارند و به لحاظ اين ويژگي ها كاربرد بيشتري در محيط هاي بانك اطلاعاتي خواهند داشت.</li>
<li> سخت افزار ارتباطي: مجموعه امكانات سخت افزاري كه براي برقراري ارتباط بين كامپيوترها و دستگاهها جانبي و همچنين مابين چندين كامپيوتر ( به صورت شبكه اي ) استفاده مي شوند را تحت عنوان سخت افزارهاي ارتباطي بانك هاي اطلاعاتي مي شناسند.</li>
</ol>
<p>نرم افزار ( Software )<br />
نرم افزار شامل خود DBMS و برنامه هاي كاربردي، سيستم عامل و نيز نرم افزارهاي شبكه اي است. براي استفاده DBMS در محيط شبكه عمدتا از برنامه هاي كاربردي نوشته شده به زبانهاي برنامه نويسي نسل سوم مانند C ، كوبول، پاسكال و &#8230;. و يا زبانهاي نسل چهارم مانند SQL استفاده مي شود. هدف نرم افزارهاي DBMS ارائه چهار ابزار اصلي است كه عبارتند از :</p>
<ol>
<li>زبانهاي پرس و جو (‌Query Language )</li>
<li>گزارش ها ( Report )</li>
<li>فرم ها ( Forms )</li>
<li>تصاوير ( Graphics )‌</li>
</ol>
<p>كاربران (‌Users )<br />
كاربران يا كساني كه به نحوي با سيستم در ارتباط هستند به چهار دسته مهم تقسيم مي شوند:<br />
1-مديران بانك اطلاعاتي يا DBA<br />
2-طراحان بانك اطلاعاتي يا DBD<br />
3-برنامه نويسان بانك اطلاعاتي يا DBP<br />
4-كاربران نهايي يا ساتفاده كنندگان سيستم ( End Users )</p>
<p>اصول معماري سيستم هاي بانك اطلاعاتي<br />
با توجه به گفته هاي بالا در مي يابيم كه سيستم بانك اطلاعاتي ،سيستمي چند سطحي است. اين سيستم بوسيله امكانات سيستم مديريت بانك اطلاعاتي ايجاد شده و در اختيار كاربران قرار مي گيرد. در نظر داشته باشيد كه اين سيستم چند سطحي داراي يك معماري خاص مي باشد كه بيانگر نحوه تعريف داده ها در سطوح مورد نظر است.</p>
<p>وظايف DBMS<br />
وظايف سيستم مديريت بانك اطلاعاتي بستگي به نوع كاربران آن دارد اين وظايف در چارچوب واحدهاي نرم افزاري طراحي و پياده سازي مي شوند. هر چند وظايف DBMS در سيستم هاي مختلف تا حدودر متفاوت است، اما به طور كلي اين وظايف عبارتند از:<br />
•تعريف داده ها<br />
•تامين امكان دستكاري داده ها<br />
•ايجاد ديكشنري داده ها</p>
<p>•كنترل امنيت و جامعيت داده ها</p>
<p>•ايجاد امكان بازيابي از بانك اطلاعاتي</p>
<p>•بهنگام سازي داده ها</p>
<p>•تامين امكان كنترل كارايي</p>
<p>•تامين تسهيلاتي براي كاربران به منطور توسعه سيستم<br />
براي انجام اين وظايف مي بايست واحدهاي نرم افزاري مربوط در سيستم مديريت بانك اطلاعاتي وجود داشته باشد. هر كدام از اين واحدها ممكن است مركب از چند واحد كوچكتر باشند. توجه داشته باشيد كه هر سيستم نيازمند يك بخش كنترلي است. در سيستم مديريت بانك اطلاعاتي ، مجموعه واحدهايي كه وظايف كنترلي را بر عهده دارند اصطلاحا به سيستم كنترل بانك اطلاعاتي معروف مي باشند. به طور كلي واحدهاي زير در سيستم كنترل بانك اطلاعاتي وجود دارند:<br />
•واحد نظارت بر اجراي برنامه كاربر</p>
<p>•واحد كامپايل كننده احكام و درخواستها</p>
<p>•واحد دستيابي به بانك فيزيكي</p>
<p>•واحد ثبت رويدادها و تغيراتي كه در بانك ايجاد مي شوند</p>
<p>زبان تعريف داده ها DDL<br />
همانطور كه اشاره شد تعريف داده ها يكي از وظايف DBMS است. DDL از زبانهاي فرعي داده اي جهت تعريف داده ها است كه از آن جهت تعريف صفحات مشخصه و خصوصيات يك بانك استفاده مي شود. ساختار ركوردها، تعريف فيلدها، محل فايلها و شيوه ذخيره سازي داده ها در بانك به وسيله احكام DDL انجام مي پذيرد.</p>
<p>زبان پردازش و مديريت داده ها DML<br />
تامين امكان دستكاري داده ها نيز از وظايف DBMS عنوان شد. زبان دستكاري ،پردازش و مديريت بانك اطلاعاتي به زباني گفته مي شود كه براي درج داده ها بروز رساني آنها و اجراي پرس و جو از يك بانك اطلاعاتي مورد استفاده قرار مي گيرد. اين زبانها اغلب داراي قابليت انجام محاسبات رياضي و آماري مي باشند كه به وسيله آنها عمليات گزارش گيري از بانك اطلاعاتي آسان تر خواهد شد.</p>
<p>ديكشنري داده ها<br />
يكي ديگر از وظايف DBMS ، ايجاد ديكشنري يا فرهنگ داده است. ديكشنري داده ها يكي از امكاناتي است كه در محيط هاي بانك اطلاعاتي در اختيار اداره كنندگان بانك قرار مي گيرد. ديكشنري داده ها كه به آن راهنماي سيستم نيز مي گويند در واقع بانكي در مورد خود بانك و داده هاي ذخيره شده در آن است. بطور كلي اطلاعات و محتواي ديكشنري داده ها بشرح زير مي باشد:<br />
• شرح ساختار و پيكر بندي فيزيكي بانك .</p>
<p>• تاريخ ايجاد داده ها .</p>
<p>• مكانسيم ورود داده ها به بانك .</p>
<p>• ارتباط بين برنامه هاي كاربردي و داده ها .</p>
<p>• مشخصات كاربران و چگونگي حق دستيابي آنها .<br />
آشنايي با جداول و اجزاء تشكيل دهنده آنها در بانك هاي اطلاعاتي<br />
جدول مهمترين ساختار داده اي در سيستم بانك هاي اطلاعاتي رابطه اي است (‌در ادامه اين فصل به تشريح سيستم هاي رابطه اي خواهيم پرداخت. ) جدول در سيستم رابطه اي تشكيل شده از چندين سطر و ستون مي باشد كه مقادير داده در هر سطر و ستون در طول زمان متغير خواهد بود. به طور كلي جداول ساختار بنيادين رابطه ها هستند. سطرهاي موجود در جداول را « ركورد» و ستونهاي آن را « فيلد» مي نامند.</p>
<p>ركورد<br />
ركورد يك ساختار داده اي متشكل از مجموعه فيلدهاست كه هر يك از اين فيلدها نام و نوع خاص خود را دارند. برخلاف يك آرايه كه تمام عناصر آن نمايانگر انواع يكساني از اطلاعات هستند و دستيابي به آنها با يك شاخص (‌ايندكس )‌انجام مي شود، عناصر يك ركورد نمايانگر انواع مختلفي از اطلاعات مي باشد كه بوسيله نامشان مورد دستيابي قرار مي گيرند.<br />
فيلد<br />
فيلد محلي است در يك ركورد كه نوع خاصي از داده ها در آن ذخيره مي شود. به عنوان مثال چنانچه قرار باشد براي ذخيره سازي اطلاعات كارمندان يك سازمان از جداول استفاده شود،ركورد اين جداول ممكن است فيلدهايي براي ذخيره سازي نام خانوادگي، نام، نشاني ،مدرك تحصيل و &#8230;. داشته باشد. فيلدها بوسيله بيشينه طول و نوع داده هايشان (‌كاراكتري ، عددي، تاريخ و &#8230; )‌ از يكديگر تميز داده مي شوند. توجه داشته باشيد كه امكان تعريف اين مشخصات معمولا در زبان تعريف داده ها (‌DDL )‌ قرار دارد.</p>
<p>آشنايي با روشهاي ارتباط و مدلهاي بانك هاي اطلاعاتي</p>
<p>سه مدل داده اي براي سيستم هاي بانك اطلاعاتي وجود دارد. لازمه هر مدل داده اي وجود يك ساختار داده اي است كه علاوه بر مدل داده عناصر ديگري را نيز در بردارد. عناصر مدل داده اي عبارتند از ساختارداده اي ، عملگرهاي عمل كننده روي ساختار و قواعد عام براي تامين جامعيت مي باشند. در ادامه اين بحث قصد داريم مدلهاي موجود را مورد مطالعه قرار دهيم. از آنجا كه بانك اطلاعاتي اوراكل مبتني بر مدل رابطه اي است، لذا بيشتر بحث خود را بر مدل رابطه اي معطوف مي داريم .</p>
<p>مدل سلسله مراتبي<br />
اين ساختار ،قديمي ترين مدل براي طراحي بانك هاي اطلاعاتي است، در اين ساختار داده ها و ارتباط بين آنها به كمك يك درختواره نمايش داده مي شوند. در رختواره گرافي است داراي يك ريشه و N گره كه در حالت بسته و غير چرخشي قرار دارد. منظور از حالت بسته اين است كه بين هر دو گره پيوندي وجود دارد كه يك مسير منطقي را از گرهي به گره ديگر تامين مي كند و هميشه از سطح بالاتر به سطح پايين تر است . غير چرخشي نيز يعني مسيري از گره سطح پايين تر به گره سطح بالاتر وجود ندارد. هر گره از هر سطح مي تواند تعدادي گره وابسته يا فرزند داشته باشد ولي هر گره فرزند فقط يك گره پدر دارد. هر گره از رختواره مي تواند ركوردي حاوي يك نوع موجوديت باشد. از آنجا كه ريشه سلسله مراتب، نقطه ورود به ساختار بوده و مسير منطقي از سمت بالاتر به سمت پايين تر است، براي عمليات بازيابي ، علاوه بر دستيابي به ريشه، امكان دستيابي به فرزند نيز بايد وجود داشته باشد. در بحث ذخيره سازي نيز اين سيستم داراي اشكال است.<br />
مدل شبكه اي<br />
در اين ساختار موجوديت ها به كمك انواع ركوردها،و ارتباطات به كمك پيوندهاي بين ركوردها نمايش داده مي شوند. چنانچه خواسته باشيم اين ساختار را با مفاهيم موجود در رختواره توضيح دهيم، بايد گفت كه در اين ساختار، هر گره فرزند مي تواند بيش از يك گره پدر داشته باشد. بنابراين به كمك اين ساختار مي توان ارتباطات يك به چند را نمايش داد. مدل شبكه اي پيچيده تر از مدل سلسله مراتبي است و به همان نسبت عمليات ذخيره و بازيابي پيچيده تري دارد.<br />
مدل رابطه اي<br />
پايگاه داده رابطه اي از ديد كاربران يك مجموعه از جدولهايي است كه به درستي قابل درك مي باشند. چهار مفهوم اساسي در اين مدل به شرح زير وجود دارد:<br />
1- جدول 2- ستونها 3- رديفها 4- فيلدها<br />
اين مدل داده ها را در روابط سازماندهي نموده و از قوانين رياضي تبعيت مي كند. صفات خاصه يك موجوديت در يك سيستم به عنوان يك رابطه در اين مدل مطرح مي شود. به عنوان مثال در سيستم دانشگاه مي توانيم رابطه دانشجو را در نظر بگيريم :</p>
<p>( شماره شناسنامه، سال ورود، رشته، نام ، شماره دانشجويي ) دانشجو<br />
صفت خاصه نام رابطه</p>
<p>اين رابطه بر طبق مدل رابطه اي بصورت زير نمايش داده مي شود:<br />
شماره شناسايي سال ورود رشته نام</p>
<p>1012 1379 كامپيوتر علي 245</p>
<p>2578 1380 رياضي حسين 265</p>
<p>3920 1379 آمار رضا 327</p>
<p>17 1381 كامپيوتر بهرام 493<br />
هر ستون در مدل رابطه اي همچنان كه در بالا مشاهده مي كنيد نشان دهنده يك صفت خاصه ( فيلد)‌ از يك نوع موجوديت ( دراين مثال دانشجو)‌ و هر سطر نمايانگر يك نمونه از يك موجوديت (‌ركورد)‌ مي باشد.</p>
<p>خواص ارتباطات رابطه اي</p>
<p>يك جدول يا رابطه شامل خواص زير است:</p>
<p>• رديفهاي تكراري در آن وجود ندارد.</p>
<p>• ترتيب رديفها مهم نيست.<br />
• ترتيب ستونها مهم نيست.</p>
<p>• مقادير اتميك (‌Atomic )‌ مي باشند ( يا به عبارتي همه مقادير صفات غير قابل تجزيه هستند.)</p>
<p>كليد در مدل رابطه اي</p>
<p>كليد در مدل رابطه اي صفت خاصه يا نام ستوني است كه براي هر كدام از سطرهاي مقدار منحصر بفردي دارد به عنوان مثال در رابطه دانشجو شماره دانشجويي مي تواند يك كليد باشد زيرا هر دانشجو شماره دانشجويي مخصوص به خود را دارد اما نام را نمي توان يك كليد در نظر گرفت . كليد مي تواند تركيبي از صفات باشد به عنوان مثال در رابطه دانشجو مجموعه نام و شماره شناسنامه نيز مي توانند به عنوان كليد در نظر گرفته شوند. كليد كانديد: از مجموعه كليدهايي كه مي توانيم براي يك رابطه در نظر بگيريم آنهايي كه در دو ويژگي زير صدق كنند به عنوان كليد كانديد در رابطه مذكور مطرح مي شوند.<br />
1- منحصر به فرد بودن: مقدار اين صفت براي هر سطر منحصر به فرد است.</p>
<p>2- خاصيت غير قابل كاهش بودن: هيچ زير مجموعه مناسبي از صفات تشكيل دهنده كليد. داراي</p>
<p>خاصيت منحصر به فرد بودن نباشد.<br />
به عنوان مثال اگر مجموعه دو صفت شماره دانشجويي و نام را به عنوان كليد در نظر بگيريم شرط اول در مورد اين كليد صادق است ولي شرط دوم برقرار نيست زيرا شماره دانشجويي به عنوان زير مجموعه اي از دو صفت شماره دانشجويي و نام داراي خاصيت منحصر به فرد بودن است. پس اين مجموعه كليد كانديد نيست. اما كليد اصلي، كليد كانديدي است كه توسط طراح بانك اطلاعاتي انتخاب و معرفي مي شود يا به عبارتي طراح بانك،يكي از كليدهاي كانديد را به عنوان كليد اصلي بر ميگزيند در تعيين كليد اصلي از بين كليدهاي كانديد بايد دو ضابطه زير را در نظر گرفت:<br />
1- در نظر گرفتن اهميت كليد اصلي نسبت به ساير كليدهاي كانديد كه در پاسخگويي به نيازهاي متنوع</p>
<p>كاربران از اهميت بيشتري برخوردار است.<br />
2- كوتاهتر بودن طول كليد كانديد از نظر طول رشته بايتي.</p>
<p>سيستم بانك اطلاعاي رابطه اي<br />
سيستم مديريت بانك اطلاعاتي رابطه اي داراي شرايط زير است:<br />
1- بانك اطلاعاتي مبتني بر رابطه ها ( بطوريكه كاربر بانك را بصورت مجموعه اي از جداول ببينيد. جداولي كه دو سطر تكراري در آن وجود ندارد. ترتيب رديفها و ستونها در آن مهم نيست و ستونها قابل تجزيه نيستند.)<br />
2- حداقل سه عمل زير روي جداول آن قابل انجام باشديا به عبارتي داراي عملگرهايي جهت انجام سه مورد زير بر روي جداول باشد.<br />
1) عملگري جهت انتخاب سطرهاي خاصي از بانك اطلاعاتي (‌ عملگر گزينش )‌</p>
<p>2) عملگري جهت انتخاب ستونهايي از بانك اطلاعاتي (‌ عملگر گزينش)‌</p>
<p>3) عملگري جهت تركيب دو جدول اطلاعاتي و ايجاد جدول جديد (‌ عملگر پيوند)‌</p>
<p>مزاياي مهم سيستم هاي بانك اطلاعاتي<br />
اهميت و اعتباري كه فن آوري بانكهاي اطلاعاتي در سالهاي اخير كسب كرده است به حدي است كه اينك به مثابه فن آوري برتر هم در محيط هاي تك كاربردي و هم در محيطهاي چند كاربردي ، بطور فراگير مورد استفاده قرار مي گيرد. مهمترين مزاياي سيستم بانك اطلاعاتي به شرح زير مي باشد:<br />
• وحدت ذخيره سازي داده هاي عملياتي .<br />
• كاهش افزونگي: در صورت عدم استفاده از سيستمهاي بدون پايگاه داده، به دليل آنكه هر برنامه كاربردي داراي فايلهاي خاص خودش مي باشد، تكرار اطلاعات در برنامه هاي كاربردي سبب افزونگي شده و موجب هدر رفتن فضاي منبع ذخيره سازي مي گردد.<br />
• پرهيز از ناسازگاري: با كنترل و كاهش افزونگي، سيستم پايگاه داده ها سازگاري و يكپارچگي داده ها را تضمين مي كند.<br />
• به اشتراك گذاتشتن داده ها: در سيستم پايگاه داده ها برنامه هاي كاربردي موجود قادر به اشتراك گذاردن داده ها در بانك اطلاعاتي بوده و برنامه هاي كاربردي جديد نيز مي توانند از اين داده ها استفاده كنند. در واقع عليرغم ديدگاههاي متفاوت كاربران، چند كاربر مي توانند در يك زمان به بانك دسترسي داشته باشند.<br />
• اعمال محدوديتهاي امنيتي : وجود سيستمهاي امنيتي در پايگاه داده ها كه از مهمترين مشخصه هاي اين گونه سيستمها است امكان اعمال كنترل هاي مختلف را براي هر نوع دسترسي (‌ بازيابي،اصلاح، حذف و غيره) بر روي بانك اطلاعاتي را فراهم مي كند.<br />
• ايجاد تعادل بين درخواستهاي تداخلي: در سيستمهاي بانك اطلاعاتي، ساختاري جهت دسترسي سريع به منبع ذخيره سازي وجود دارد كه بهترين و بهينه ترين امكانات را براي سيستم فراهم مي آورد.</p>
<p>خلاصه: در اين فصل شما را با مفهوم بانك اطلاعاتي ، اجزاء و عناصر مهم بانك اطلاعاتي و سيستم مديريت بانك اطلاعاتي آشنا ساختيم همچنين سه مدل سلسله مراتبي، شبكه اي و رابطه اي براي سيستم هاي بانك اطلاعاتي معرفي شد كه با بيان مزايا و تعريف مدل رابطه اي اهميت و لزوم استفاده از بانك هاي اطلاعاتي رابطه اي جهت طراحي نرم افزاري و سخت افزاري سيستم هاي اطلاعاتي مشاهده گرديد.</p>
<blockquote><p><a href="http://www.4shared.com/account/document/0Cj7rWu_/database-tahghighwwwporogecom.html?sId=tj0Dgtiu4vOMAO8g" target="_blank">دانلود فایل PDF</a></p></blockquote>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1051</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>فیلم آموزشی قسمت ششم</title>
		<link>http://www.poroge.com/?p=1002</link>
		<comments>http://www.poroge.com/?p=1002#comments</comments>
		<pubDate>Tue, 20 Jul 2010 01:51:07 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[DXP Protel]]></category>
		<category><![CDATA[دیگر موارد]]></category>
		<category><![CDATA[مقالات]]></category>
		<category><![CDATA[DXP]]></category>
		<category><![CDATA[Protel]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[فارسی]]></category>
		<category><![CDATA[فیلم]]></category>
		<category><![CDATA[پروژه]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=1002</guid>
		<description><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946 aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com">Protel Dxp 2004</a> قسمت ششم محیط یا همان درس ششم از سری آموزش protel dxp 2004 این آموزش تا از مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته دانلود در ادامه متن …</p>
<p><span id="more-1002"></span></p>
<p><a href="http://www.4shared.com/video/-ZmDuLpq/Dars_6_wwwporogecom.html" target="_blank">دانلود قسمت ششم</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946 aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com">Protel Dxp 2004</a> قسمت ششم محیط یا همان درس ششم از سری آموزش protel dxp 2004 این آموزش تا از مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته دانلود در ادامه متن …</p>
<p><span id="more-1002"></span></p>
<p><a href="http://www.4shared.com/video/-ZmDuLpq/Dars_6_wwwporogecom.html" target="_blank">دانلود قسمت ششم</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=1002</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>فیلم آموزشی قسمت پنجم</title>
		<link>http://www.poroge.com/?p=991</link>
		<comments>http://www.poroge.com/?p=991#comments</comments>
		<pubDate>Mon, 19 Jul 2010 00:35:42 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[DXP Protel]]></category>
		<category><![CDATA[دیگر موارد]]></category>
		<category><![CDATA[مقالات]]></category>
		<category><![CDATA[DXP]]></category>
		<category><![CDATA[Protel]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[فارسی]]></category>
		<category><![CDATA[فیلم]]></category>
		<category><![CDATA[پروژه]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=991</guid>
		<description><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com" target="_self">Protel  Dxp 2004</a> قسمت پنجم protel dxp 2004 این آموزش  از  مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته  دانلود در ادامه متن …</p>
<p><span id="more-991"></span></p>
<p><a href="http://www.4shared.com/video/t43Qzztr/Dars_5_wwwporogecom.html" target="_blank">دانلود قسمت پنجم آموزش</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com" target="_self">Protel  Dxp 2004</a> قسمت پنجم protel dxp 2004 این آموزش  از  مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته  دانلود در ادامه متن …</p>
<p><span id="more-991"></span></p>
<p><a href="http://www.4shared.com/video/t43Qzztr/Dars_5_wwwporogecom.html" target="_blank">دانلود قسمت پنجم آموزش</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=991</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>فیلم آموزشی قسمت چهارم</title>
		<link>http://www.poroge.com/?p=985</link>
		<comments>http://www.poroge.com/?p=985#comments</comments>
		<pubDate>Mon, 19 Jul 2010 00:27:33 +0000</pubDate>
		<dc:creator>حسین صابونچی</dc:creator>
				<category><![CDATA[DXP Protel]]></category>
		<category><![CDATA[دیگر موارد]]></category>
		<category><![CDATA[مقالات]]></category>
		<category><![CDATA[DXP]]></category>
		<category><![CDATA[Protel]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[دانشجویی]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[رایگان]]></category>
		<category><![CDATA[فارسی]]></category>
		<category><![CDATA[فیلم]]></category>
		<category><![CDATA[پروژه]]></category>

		<guid isPermaLink="false">http://www.poroge.com/?p=985</guid>
		<description><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com" target="_self">Protel  Dxp 2004</a> قسمت  چهارم  protel dxp 2004 این آموزش  از  مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته  دانلود در ادامه متن …</p>
<p><span id="more-985"></span></p>
<p><a href="http://www.4shared.com/video/nNxef1zm/Dars_4_wwwporogecom.html" target="_blank">دانلود قسمت چهارم فیلم آموزشی</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a rel="attachment wp-att-946" href="http://www.poroge.com/?attachment_id=946"><img class="size-medium wp-image-946  aligncenter" title="Dxp" src="http://www.poroge.com/wp-content/uploads/2010/04/Dxp-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>فیلم آموزشی برنامه  <a href="http://www.poroge.com" target="_self">Protel  Dxp 2004</a> قسمت  چهارم  protel dxp 2004 این آموزش  از  مقدماتی تا پیشرفته می باشد که لینک دانلود آن به  روی سایت قرار گرفته  دانلود در ادامه متن …</p>
<p><span id="more-985"></span></p>
<p><a href="http://www.4shared.com/video/nNxef1zm/Dars_4_wwwporogecom.html" target="_blank">دانلود قسمت چهارم فیلم آموزشی</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.poroge.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.poroge.com/?feed=rss2&amp;p=985</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
