فناوری

فناوری یا تکنولوژی (به فرانسوی: technologie) شگردها وبه کاربردن ابزارها، دستگاه‌ها، ماده‌ها و فرایندهایی گره گشای دشواری‌های انسان است. فناوری فعالیتی انسانی است و از همین رو، از دانش و از مهندسی دیرینه تر است.






این اصطلاح بر مجموعهٔ «دانش» قابل دسترس برای ساختن ملزومات و مصنوعات از هر نوع، برای پرداختن به حرفه‌ها و مهارت‌های دستی (به استثنای انجا م کارهای مذهبی، جادویی، نظامی و یا آشپزی) و برای استخراج یا جمع آوری انواع مواد(به استثنای موادی که برای خوراک یا برای مراسم مذهبی یا جادویی مورد استفاده قرار می‌گیرند)دلالت دارد.
در مورد جوامعی که هم اکنون صنعتی اند یا جوامعی که در حال صنعتی شدن هستند این اصطلاح دلالت دارد بر همه یا بخش منظمی از آن مجموعه «دانش» که مربوط است به:







اصول علمی و اکتشافات
فرایندهای صنعتی موجود و پیشین، منابع نیرو و مواد، و روش‌های انتقال و ارتباط، که تصور می‌شود به تولید یا بهبود کالالها و خدمات مربوط باشند.

مفهوم تکنولوژی به صورت دانشی که به ساختن و بکار بردن ابزار و وسائل مربوط می‌شود، و دانش استفاده از مواد خام (به استثنای خوراک)
«نظام تکنولوژیک» یعنی «ابزار مادی و مجموعه‌ای از دانش» که «در اختیار افراد سهیم در یک اقتصاد قرار دارد».
کاربرد صنعتی نتایج علم که کار فن شناسان و مهندسان است و «علم» یا «علم محض» اختصاص داده شده‌است.
دلالت دارد بر فعالیت عملی در راه بهبود روش‌ها و وسائل صنعتی قدیمی بدون ارجاع به اصول علمی، یعنی گرایش به «اختراع اشیاء و فرایندهای جدید یا ایجاد بهبود در اشیاء و فرایندهای قدیمی تر.. و شاید اکثر اختراعات فنی و ترقیات بی هیچ نوع کمکی از سوی علم محض صورت گرفته‌است.
دلالت دارد بر مجموعه‌ای از دانش و مهارتی که مبشر اختراعات و ترقیات فنی بوده یا بالقوه قابل استفادهٔ آنها باشد.
واژه فناوری اغلب به نوآوری‌ها و نوابزارهایی اشاره دارد که از اصول و فرایندهای تازه یافتهٔ دانشی بهره می‌گیرند. از این رو مقولهٔ فناوری ممکن است در بدو مواجهه عجیب جلوه کند. لیکن چنین نیست. حتی نوآوری‌های بسیار کهن مانند چرخ هم نمونه‌هایی از فناوری بوده و به شمار می‌روند. از مصداقهای فناوری نزد قدما فوت کوزه‌گری بوده‌است.
فناوری همان تسلط و تبحر انجام کار است، فناوری توانایی انجام کار در تمامی سطوح و زمینه‌ها است. یعنی طراحی، ساخت، استفاده، تعمیر و نگهداری و تحقیق و توسعه و غیره می‌باشد.
امروزه بسیاری از فناوری‌ها در نتیجه پژوهش به دست می‌آیند و پژوهشگاه‌های فناوری زیادی در سراسر جهان بر پا شده‌است. تکنولوژی به معنای اصلی حداکثر استفاده از کمترین امکانات موجود می‌باشد. در کتاب مبانی و مدیریت فناوری اطلاعات آمده‌است:
فناوری یا همان تکنولوژی، که از دو لغت یونانی techne و logia تشکیل شده‌است که اولی به معنی هنر و دومی به معنی علم و دانش است.
فناوری به معنی کاربرد منظم معلومات علمی و دیگر آگاهی‌های نظام‌یافته برای انجام وظایف علمی است.
فناوری را می‌توان کلیهٔ دانش‌ها، فرایندها، ابزارها، روش‌ها و سیستم‌های به کار رفته در ساخت محصولات و ارائهٔ خدمات تعریف کرد.
فناوری کاربرد عملی دانش و ابزاری برای کمک به تلاش انسان است.
فناوری نوآورد (cutting-edge) به فناوری‌ای گفته می‌شود که به تازگی در بازار آمده و قابلیت‌های نوین و نوآورانه‌ای ارائه می‌کند.
یونیدو فناوری را کاربرد علوم در صنایع با استفاده از رویه‌ها و مطالعات منظم می‌داند
فرهنگ لاروس، فناوری را مطالعهٔ ابزارها، شیوه‌ها و روش‌های مورد انتظار و مورد استفاده در حوزه‌ها گوناگون صنعت می‌داند.
فناوری مجموعه‌ای از فرایندها، روش‌ها، فنون، ابزار، تجهیزات، ماشین‌آلات و مهارت‌هایی است که توسط آن‌ها کالایی ساخته شده و یا خدمتی ارائه می‌گردد.
فناوری عبارت است از کاربرد علوم در صنایع با استفاده از رویه‌ها و مطالعات منظم و جهت‌دار.
علام با مطالعهٔ طبیعت به بررسی رفتارهای طبیعی و فیزیکی پرداخته و به دنبال کشف پدیده‌ها است و در حالی‌که فناوری با به کارگیری ایده‌ها و دستاوردهای علمی، خدمات و کالای مورد نیاز بشر را ارائه می‌کند.
فناوری عامل تبدیل منابع طبیعی، سرمایه و نیروی انسانی به کالا و خدمات است که عناصر متشکله و یا ارکان آن عبارت است از: سخت‌افزار، انسان افزار یا نیروی انسانی متخصص، فناوری متبلور در اسناد و مدارک یا اطلاعات، سازمان‌ها یا نهادافزار.
تکنولوژی یا فناوری به معنای کاربرد منظم معلومات علمی و دیگر آگاهی‌های نظام یافته برای انجام وظایف عملی است. به بیان ساده تر، تکنولوژی کاربرد عملی دانش و ابزاری برای کمک به تلاش انسان است و تأثیر بسزایی بر توسعه جوامع بشری دارد.







تاثیر بر زندگی

یک پژوهش میدانی در مورد استفاده از نمایش‌گرهای الکترونیکی نشان می‌دهد که از هر ده نفر، شش نفر احساس می‌کنند که روزانه‌ وقتشان را بیش از حد در جلوی این دستگاه‌ها می‌گذرانند.آنها می‌گویند می‌خواهند یک زندگی ساده‌تر و آهسته‌تر داشته باشند.این پژوهش همچنین رویکرد فناوری به حیطه فردی، به سنت و جهانی‌شدن را بررسی کرده است. سه چهارم افراد شرکت‌کننده گفته‌اند که فکر می‌کنند جهان با سرعتی بیش از حد برای آنها در حال تغییر است.





تاریخ فناوری
تاریخ فناوری به بیان سیر زمانی اختراع و ساخت ابزار و وسائل مورد نیاز در زندگی انسان‌ها و جوامع بشری مبادرت می‌کند.






زیست‌فناوری

واژهٔ زیست‌فناوری (به انگلیسی: Biotechnology) (بیوتکنولوژی) نخستین بار در سال ۱۹۱۹ از سوی کارل ارکی (Karl Ereky) به مفهوم کاربرد دانش های پزشکی و زیستی و اثر مقابل آن در فناوری‌های ساخت بشر به کار برده شد. به طور کلی هر گونه کنش هوشمندانه بشر در آفرینش، بهبود و عرضه فراورده‌های گوناگون با استفاده از جانداران، به ویژه از طریق دستکاری آن‌ها در سطح مولکولی در حیطه این مهم‌ترین، پاک‌ترین و اقتصادی‌ترین فناوری سده حاضر، زیست‌فناوری، قرار می‌گیرد.

نام این دانش از این رو در ایران با نام "بیوتکنولوژی" شناخته میشود که این نامگذاری در تقریباً تمام کشورهای جهان با همین نام شناخته میشود.

زیست فناوری از جمله واژه‌های پر سرو صدای سال‌های اخیر است.این واژه را درست یا نادرست به مفهوم همه چیز برای مردم به کار می‌برند. بیوتکنولوژی را در یک تعریف کلی به کارگیری اندامگان یا ارگانیسم یا فرایندهای زیستی در صنایع تولیدی یا خدماتی دانسته‌اند. تعریف ساده این پدیده نوین عبارت است از دانشی که کاربرد یکپارچه زیست‌شیمی، میکروب‌شناسی و فناوری‌های تولید را در سامانه‌های زیستی به دلیل استفاده‌ای که در سرشت بین رشته‌ای علوم دارند مطالعه می‌کنند. در تعریف دیگر بیوتکنولوژی را چنین تشریح کرده‌اند:

فنونی که از موجودات زنده برای ساخت یا تغییر محصولات، ارتقا کیفی گیاهان یا حیوانات و تغییر صفات میکروارگانیسم‎ها برای کاربردهای ویژه استفاده می‌کند. بیوتکنولوژی به لحاظ ویژگی‌های ذاتی خود دانشی بین رشته‌ای است. کاربرد این گونه دانش‌ها در مواردی است که ترکیب ایده‌های حاصل در طی همکاری چند رشته به تبلور قلمرویی با نظام جدید می‌انجامد و زمینه‌ها و روش‌شناسی خاص خود را دارد و در نهایت حاصل برهم‌کنش بخش‌های گوناگون زیست‌شناسی و مهندسی است. زیست‌فناوری در اصل هسته‌ای مرکزی و دارای دو جزء است: یک جزء آن در پی دستیابی به بهترین کاتالیزور برای یک فرایند یا عملکرد ویژه‌است و جزء دیگر سامانه یا واکنشگری است که کاتالیزورها در آن عمل می‌کنند.






پیدایش زیست‌فناوری

سابقه به‌کارگیری میکروارگانیسم‎ها برای تولید مواد خوراکی مانند سرکه، ماست و پنیر به بیش از ۸ هزار سال پیش برمی‌گردد. نقش میکروارگانیسم‌ها در تولید الکل و سرکه در سده پیش زمانی کشف شد که گروهی از بازرگانان فرانسوی در جستجوی روشی بودند تا از ترش شدن شراب و آبجو هنگام جابه‌جایی آن‌ها با کشتی به نقاط دور جلوگیری کنند. آنان از لویی پاستور درخواست کمک کردند. لویی پاستور پی برد که مخمرها در خلا قند را به الکل تبدیل می‌کنند. این فرایند بی‌هوازی تخمیر نام دارد. و نیز دریافت که ترشیدگی و آلودگی بر اثر فعالیت دسته باکتری اسید استیک که الکل را به سرکه تبدیل می‌کند روی می‌دهد.






کاربردهای سنتی زیست‌فناوری

کاربردهای سنتی بیوتکنولوژی شامل اصلاح نباتات و دام، تهیه نان، ماست و پنیر بوده‌است و پس از آن تولید پادزیست‌ها (آنتی بیوتیک‌ها)، انسولین انسانی و اینترفرون علوم آزمایشگاهی و هم‌اکنون با پیدایش فناوری DNA نوترکیب، دستکاری ژن‌ها و انتقال ژن از یک موجود زنده به دیگری یا به عبارت دیگر مهندسی ژنتیک، ظرفیت بهره‌گیری از این فناوری به گونه فزاینده‌ای افزایش یافته‌است.

در حال حاضر با توجه به افزایش بی رویه جمعیت و نیاز به تأمین مواد غذایی این جمعیت رو به تزاید، بیوتکنولوژی کشاورزی مورد توجه ویژه‌است و محصولات تراریخته گوناگون پرمحصول و مقاوم کشاورزی مانند ذرت، برنج، سویا، گوجه فرنگی، گندم تولید و به‌کارگیری تکنیک‌های نوین بیوتکنولوژی در افزایش تولید شیر و گوشت دام موثر واقع شده‌اند. تراریزش برنج چندسالی است که در ایران آغاز شده است ولی به دلیل سرسخت بودن برنج به تراریزش که خود از دشوار بودن کشت بافت آن ناشی می شود، این رویکرد متوقف شده است و به بسیاری از ارقام برنج بومی ایرانی تعمیم نیافته است. اگرچه تلاش های اندکی به منظور کشت بافت برخی از ارقام برنج بومی ایرانی صورت پذیرفته است، این مهم مستلزم تلاش بیشتر محققین در این زمینه می باشد.

تامین سلامت و بهداشت جمعیت بیش از شش میلیاردی ساکنان کره زمین از طریق تولید داروهای نوترکیب و واکسن‌ها، دستیابی به روش‌های درمان کم‌هزینه بیماری‌ها و یافتن درمان بیماری‌های بدون درمان و تشخیص سریع‌تر و مؤثرتر بیماری‌های گوناگون از جمله بیماری‌های ژنتیکی از وظایف بیوتکنولوژی پزشکی است.

همچنین رویکرد جدید به محیط زیست در قرن حاضر و در نظر گرفتن آن به عنوان یک جزء از سرمایه ملی کشورها و لزوم حفظ آن با به‌کارگیری بیوتکنولوژی از مهم‌ترین دغدغه‌های بشر در سده حاضر است. حذف مؤثر آلاینده‌های محیطی خطرناک از محیط زیست با استفاده از میکروارگانیسم‌های پالایشگر آلودگی و استفاده از فنون نگهداری ذخایر ژنتیکی کشور از جمله کاربردهای بیوتکنولوژی در زمینه محیط زیست است. کاربردهای بیوتکنولوژی در صنعت که به تولید محصولات با صرف هزینه و انرژی کمتر، ضایعات اندک می‌انجامد و از همه مهم‌تر، کمترین اثر سوء بر محیط زیست را برجا می‌گذارد، باعث شد که از این فناوری به عنوان یکی از پاکترین بخش‌های صنعت یاد شود. بیوتکنولوژی همچنین تولید محصولاتی که قبلأ از روش‌های دیگر امکان تولید آن وجود نداشته یا بسیار سخت و دشوار بوده‌است، ممکن ساخته‌است.






فراورده‌های زیست‌فناوری

فراورده‌های بدست آمده از صنعت زیست‌فناوری در دنیا فراوان بوده و در کشور ایران تا به امسال (۱۳۸۶) به کمتر از ۲۰ عدد محدود می‌شود.

۱- اینترفرون بتا-۱ای با نام‌های تجاری سینووکس Cinnovex و رسیژن ReciGen

۲- اینترفرون گاما با نام تجاری گاما ایمونکس

۳- آنزیمهای بیولوژی مولکولی مانند تک دی ان ای پلی مراز

۴- کیت‌های تشخیص مولکولی بیماریها

۵- کیت‌های الایزا مانند کیت الایزای تشخیص ایدز

۶- واکسن‌های نسل جدید مانند واکسن هپاتیت ب

۷- داروهای جدید که در شرف ورود به بازار داخلی هستند مانند اینترفرون آلفا و استرپتوکیناز و اریتروپوئتین و اینترفرون بتا یک بی

٨- داروهای جدید که وارد بازار داخلی شدند مانند آنژی پارس (Angipars)

9- هورمون محرک تخمکزایی (FSH)با نام سینال-اف و پاراتیروئید همورمون (PTH)با نام سینوپار و همچنین PEG-GCSF با نام پگاژن






پیشینه زیست‌فناوری در ایران

حدود ۳۰ سال از عمر این فناوری جدید می‌گذرد و ایران نیز سرمایه گذاری‌هایی را برای تربیت نیروی انسانی و ایجاد چند مرکز تحقیقاتی آغاز کرده‌است. مؤسسه تحقیقات واکسن و سرم‌سازی رازی و انستیتو پاستور از موسسات قدیمی ایران هستند که در زمینه تولید سرم و واکسن از زیست‌فناوری استفاده می‌کنند. اما اولین مرکز تخصصی بیوتکنولوژی دو دهه پیش در سازمان پژوهش‌های علمی و صنعتی ایران شکل گرفت. بعد از آن مرکز ملی تحقیقات مهندسی ژنتیک و مؤسسات تحقیقاتی دیگر در بخش‌های مختلف به خصوص دانشگاهها فعالتر شدند. در دهه ۷۰ گروهی از سوی وزارتخانه‌های علوم، جهاد کشاروزی و بهداشت و درمان به خارج اعزام شدند و با بازگشت این گروه، فعالیت‌های تحقیقاتی رونق گرفت. در سال ۱۳۷۹ گروه بیوتکنولوژی به درخواست متخصصان و به دستور محمد خاتمی، رئیس جمهور وقت، در وزارت علوم تشکیل شد و برنامه ملی بیوتکنولوژی نتایج فعالیت این گروه‌است.. شرکت سیناژن اولین و بزرگترین شرکت خصوصی بیوتکنولوژی در ایران است که از سال 1373 فعالیت خود را آغاز نموده است و تا سال 1392 بیش از 8 فراورده دارویی نوترکیب را وارد بازار نموده است.






فناوری اطلاعات

فناوری اطلاعات (فا) (به انگلیسی: Information Technology یا IT)، همان طور که به‌وسیله انجمن فناوری اطلاعات آمریکا (ITAA‎) تعریف شده‌است، «به مطالعه، طراحی، توسعه، پیاده‌سازی، پشتیبانی یا مدیریت سیستم‌های اطلاعاتی مبتنی بر رایانه، خصوصا برنامه‌های نرم‌افزاری و سخت‌افزار رایانه می‌پردازد». به طور کوتاه، فناوری اطلاعات با مسائلی مانند استفاده از رایانه‌های الکترونیکی و نرم‌افزار سروکار دارد تا تبدیل، ذخیره، حفاظت، پردازش، انتقال و بازیابی اطلاعات به شکلی مطمئن و امن انجام پذیرد.

اخیرا تغییر اندکی در این عبارت داده می‌شود تا این اصطلاح به طور روشن دایره ارتباطات مخابراتی را نیز شامل گردد. بنابراین عده‌ای بیشتر مایلند تا عبارت «فناوری اطلاعات و ارتباطات» (فاوا) (Information and Communications Technology) یا به اختصار ICT را به کار برند.






عناصر کاملا اصلی

فناوری اطلاعات متشکل از چهار عنصر اساسی انسان، ساز و کار، ابزار، ساختار است، به طوری که در این فناوری، اطلاعات از طریق زنجیره ارزشی که از بهم پیوستن این عناصر ایجاد می‌شود جریان یافته و پیوسته تعالی و تکامل سازمان را فراراه خود قرار می‌دهد:

انسان: منابع انسانی، مفاهیم و اندیشه، نوآوری
ساز و کار: قوانین، مقررات و روشها، سازوکارهای بهبود و رشد، سازوکارهای ارزش گذاری و مالی
ابزار: نرم‌افزار، سخت‌افزار، شبکه و ارتباطات
ساختار: سازمانی، فراسازمانی مرتبط، جهانی

بسیاری مفهوم فناوری اطلاعات را با کامپیوتر و انفورماتیک ادغام می‌کنند، این درحالیست که این‌ها ابزارهای فناوری اطلاعات می‌باشند نه تمامی آنچه که فناوری اطلاعات عرضه می‌کند. سید حامد خسروانی شریعتی در مقاله‌ای در همین زمینه آورده‌است که:" با فرض اینکه فناوری اطلاعات یک سیب باشد، کامپیوتر، شبکه، نرم‌افزار و دیگر ابزارهای مرتبط با این حوزه همانند دم سیب است که میوه توسط آن تغذیه می‌گردد، حال این خود سیب است که محصول اصلی است و هدف و نتیجه در آن خلاصه می‌گردد. "






زمینه‌های IT

امروزه معنای اصطلاح «فناوری اطلاعات» بسیار گسترده شده‌است و بسیاری از جنبه‌های محاسباتی و فناوری را دربر می‌گیرد و نسبت به گذشته شناخت این اصطلاح آسان‌تر شده‌است. چتر فناوری اطلاعات تقریباً بزرگ است و بسیاری از زمینه‌ها را پوشش می‌دهد. متخصص فناوری اطلاعات وظایف گوناگونی دارد، از نصب برنامه‌های کاربردی تا طراحی شبکه‌های پیچیده رایانه‌ای و پایگاه داده‌های اطلاعاتی. چند نمونه از زمینه‌های فعالیت متخصصین فناوری اطلاعات می‌تواند موارد زیر باشند: فناوری اطلاعات و علوم کتابداری و اطلاع رسانی ارتباط تنگاتنگی با هم دارند. Information Technology در ایران متولی اصلی فناوری اطلاعات و ارتباطات را وزارت ارتباطات و فناوری اطلاعات می‌دانند.






ابزارهای نرم‌افزاری مدیریت خدمات فناوری اطلاعات

با افزایش چشمگیر تنوع تجهیزات و خدمات مربوط به فناوری اطلاعات، مدیریت خدمات ارائه شده در این حوزه نیز با چالشهای فراوانی روبرو شده‌است. مدیریت رسیدگی به مشکلات و درخواستها، مدیریت تجهیزات و منابع در رابطه با خدمات پشتیبانی فنی و تخصیص آنها به کاربران، و همچنین نظارت، کنترل و برنامه ریز در این زمینه از جمله مواردی است که مدیران حوزه فناوری اطلاعات را بر آن می‌دارد تا برای خود ابزارهای سودمند و کارا تدارک ببینند. از جمله این ابزارها، می‌توان به نرم‌افزارهای مدیریت خدمات فناوری اطلاعات اشاره نمود که می‌توانند مدیران و کارشناسان و تکنسین‌ها را در این رابطه یاری نمایند.






فناوری اطلاعات در دانشگاه‌های ایران

در بیشتر کشورها این دانش در دانشگاه‌ها با عنوان رشته «فناوری اطلاعات» (Information Technology) شناخته می‌شود، در حالیکه در ایران بر اساس تصمیم سازمان آموزش عالی کشور عنوان «مهندسی فناوری اطلاعات» برای این رشته بکار برده می‌شود و رشته‌ای نیز تحت عنوان مهندسی فناوری اطلاعات و ارتباطات (ICT) به پیشنهاد وزارت ارتباطات و فناوری اطلاعات اخیراً در دانشگاههای ایران تدریس می‌شود همچنین رشته‌ای با عنوان فقط «فناوری اطلاعات» وجود ندارد. همچنین رشتهٔ میان‌رشته‌ای دیگری با عنوان رشته «مدیریت فناوری اطلاعات» در دانشگاه‌های ایران و دیگر کشورها وجود دارد که از ترکیب دو رشته "مدیریت" و «فناوری اطلاعات» به وجود آمده‌است. رشته مهندسی فناوری اطلاعات به چگونگی سازماندهی و ساماندهی داده‌ها می‌پردازد و رشته مدیریت فناوری اطلاعات به چگونگی تدوین سیستم و استفاده از داده‌ها می‌پردازد. هرکدام از این رشته‌ها دارای گرایش‌های ویژه خود هستند که در دانشگاه‌های ایران به شرح زیرند:







مهندسی فناوری اطلاعات:

تجارت الکترونیکی
سیستم‌های چندرسانه‌ای
مدیریت سیستم‌های اطلاعاتی
امنیت اطلاعات
شبکه‌های کامپیوتری
مهندسی فناوری اطلاعات (IT)







علم اطلاعات ودانش شناسی:

مدیریت اطلاعات
بازیابی اطلاعات ودانش
علم سنجی
اقتصاد و بازاریابی اطلاعات
مدیریت دانش







گرایش‌های رشته مدیریت فناوری اطلاعات:

مدیریت منابع اطلاعاتی
سیستم‌های اطلاعات پیشرفته
نظام کیفیت فراگیر
کسب و کار الکترونیک (کارشناسی ارشد)
مدیریت دانش (کارشناسی ارشد)
مدیریت رسانه (کارشناسی ارشد)
فناوری اطلاعات پزشکی (کاربرد فناوری اطلاعات در پزشکی)







گرایش‌های رشته مهندسی فناوری اطلاعات و ارتباطات:

مدیریت شبکه
دیتا و امنیت شبکه
ارتباطات سیار
مدیریت ارتباطات و فناوری اطلاعات
سیستمهای چند رسانه‌ای







دروس تخصصی مهندسی فناوری اطلاعات

درس‌های تخصصی کارشناسی مهندسی فناوری اطلاعات عبارتند از:

مبانی فناوری اطلاعات
مهندسی فناوری اطلاعات
تجارت الکترونیکی
مدیریت و کنترل پروژه‌های فناوری اطلاعات
برنامه‌ریزی استراتژیک فناوری اطلاعات
آموزش الکترونیکی
محیط‌های چند رسانه‌ای
پروژه فناوری اطلاعات
کارآموزی IT
گرافیک کامپیوتری
ریاضی







فناوری اطلاعات در ایران

در ایران همیشه بحث بر سر متولی اصلی فناوری اطلاعات وجود داشت تا با تغییر نام وزارت پست و تلگراف و تلفن در سال ۱۳۸۲ به وزارت ارتباطات و فناوری اطلاعات و مهمتر از آن ایجاد معاونت فناوری اطلاعات وزارت ارتباطات، خود را متولی اصلی فناوری اطلاعات در کشور مطرح ساخت. از این سال به بعد توسعه همه‌جانبه‌ای در این وزارتخانه صورت گرفت تا شرکتها و مراکز متعددی زیر مجموعه آن تشکل یافتند و هر یک از آنها با توانمندیها و فعالیتهای بسیار، تحولات فراوانی را شکل داده و باعث گسترش وضع ارتباطی کشور در بخش‌های پست و مخابرات شدند. معاونت فناوری اطلاعات به منظور تدوین راهبردها، سیاستها، برنامه‌های بلند مدت و اهداف کیفی و کمی بخش توسعه فناوری اطلاعات و ارائه آن به شورای عالی فناوری اطلاعات معاونتی تحت عنوان معاونت فناوری اطلاعات در ساختار سازمانی وزارت ارتباطات و فناوری اطلاعات در نظر گرفته شد. و کم‌کم سازمانهایی مثل سازمان فناوری اطلاعات و ارتباطات زیرساخت نیز در این رابطه شکل گرفتند.





مدیریت تکنولوژی

مدیریت تکنولوژی (Management Of Technology; MOT) تخصصی میان رشته‌ای است که علوم پایه، مهندسی،علوم انسانی و دانش و روش‌های مدیریت را یکپارچه می‌کند و بر تکنولوژی به عنوان عامل خلق ثروت توجه می‌شود. در تعریفی دیگر مدیریت تکنولوژی به مفهوم مدیریت سیستم‌هایی است که به ایجاد، کسب و استفاده از تکنولوژی کمک می‌کنند.

رشته مدیریت تکنولوژی برای اولین بار در سال 1981 توسط انستیتو تکنولوژی ماساچوست(MIT) در مقطع کارشناسی ارشد ارائه شد. از آن موقع تاکنون ده‌ها دانشگاه اقدام به ایجاد دوره‌های آموزشی متنوعی در مقاطع مختلف تحصیلی، شامل دوره‌های کوتاه‌مدت چندروزه تا دوره‌های دکترای تخصصی نموده‌اند و در حال حاضرصدها تشکل ملی و بین‌المللی اعم از انجمن‌های تخصصی، مؤسسات آموزشی، شرکت‌های مشاوره‌ای و مانند آنها در بخش مدیریت تکنولوژی، در کشورهای مختلف فعال می‌باشند.







انجمن‌های تخصصی مرتبط با رشته مدیریت تکنولوژی عبارتند از:

IAMOT انجمن بین‌المللی مدیریت تکنولوژی
EUROMOT انجمن مدیریت تکنولوژی اروپا
IRAMOT انجمن مدیریت تکنولوژی ایران

هدف اصلی مدیریت تکنولوژی آن است که با شناخت صحیح ماهیت تحولات فنی، بالاخص در بخش تکنولوژی‌های پیشرفته تلاش نماید تحولات فوق را آنچنان ساماندهی نماید که نه تنها شرکت‌ها و بنگاه‌های مختلف بتوانند با اطمینان به تکنولوژی‌های خود اتکا نمایند، بلکه با فرصت‌طلبی، زمینه موفقیت آنها را در عرصة رقابت جهانی نیز فراهم نماید.

مدیریت تکنولوژی بر خلاف رشته‌های مدیریت صنایع و مهندسی صنایع که هدف اصلی خود را صرف بهبود و ارتقای کارایی تولید نموده‌است، سعی دارد با تمرکز بر روی "تکنولوژی" و فرایندهایی همچون تحقیق و توسعه، نوآوری، انتقال تکنولوژی و همکاری تکنولوژی، نحوة به‌کارگیری تکنولوژی‌های جدید و تعمیق تکنولوژی‌های موجود را در بنگاه‌های مختلف تولیدی و خدماتی، تعیین و مدیریت نماید. مباحث اصلی رشتة مدیریت تکنولوژی به‌خوبی نشانگر وجوه تمایز این رشته از سایر رشته‌های تخصصی است؛ مباحثی که برخی از مهم‌ترین آنها به‌شرح زیر هستند:

مدیریت نوآوری و تغییرات تکنولوژیک
مدیریت واحدهای تحقیق و توسعه
روش‌های ارزیابی تکنولوژی
روش‌های انتقال تکنولوژی
برنامه‌ریزی استراتژیک تکنولوژی







هم اکنون این رشته در مقطع کارشناسی ارشد در دانشگاه‌های:

دانشگاه صنعتی شریف، دانشکده مدیریت و اقتصاد، گروه مدیریت MBA

دانشگاه علم و صنعت ایران، دانشکده مهندسی پیشرفت، گروه مدیریت و فلسفه علم و تکنولوژی
دانشگاه تهران، دانشکده علوم و فنون نوین، گروه فناوری بین رشته‌ای
دانشگاه تهران، دانشکده مدیریت، گروه مدیریت صنعتی
دانشگاه علامه طباطبایی، دانشکده مدیریت و حسابداری، گروه مدیریت صنعتی
دانشگاه تربیت مدرس، دانشکده مدیریت و اقتصاد
دانشگاه آزاد اسلامی واحد علوم و تحقیقات، دانشکده مدیریت و اقتصاد
دانشگاه آزاد اسلامی واحد تهران جنوب، دانشکده مدیریت و حسابداری

ارائه می‌گردد.





علوم کاربردی

منظور از علوم کاربردی به کاربردن آگاهیهای علمی در یک محیط فیزیکی است.

رشته‌های مهندسی نزدیک‌ترین رابطه را با علوم کاربردی دارند. علوم کاربردی در پیشرفت فناوری نقش مهمی دارد. کاربرد آن در محیط‌های صنعتی معمولاً تحقیق و توسعه (R&D) خوانده می‌شود.

علوم کاربردی با علوم بنیادی فرق دارند از اینجهت که این علوم به توصیف پایه‌ای ترین اشیاء و نیروها می‌بردازند و تاکید کمی بر کاربرد عملی دارند.





واقعیت رایانه‌ای
فناوری واقعیّت رایانه‌ای (به انگلیسی: Computer-mediated reality) اشاره به توانایی برای اضافه کردن، کم کردن اطلاعات و یا در غیر این صورت دست‌کاری ادراک فرد از واقعیت از طریق استفاده از رایانه‌های پوشیدنی یا دستگاه دستی دارد. به عنوان مثالی از این فناوری می‌توان به EyeTap، (دوربینی به شکل عینک که می‌تواند تصاویری مجاری را به تصاویر واقعی قابل مشاهده اضافه کند و یا فیلم‌برداری کند.) اشاره کرد که مانند یک فیلتر بین واقعیّت و ادراک کاربر از واقعیّت استفاده می‌کند.





رایانه
رایانه یا کامپیوتر (به انگلیسی: computer) ماشینی است که از آن برای پردازش اطلاعات استفاده می‌شود.






نام

در زبان انگلیسی «کامپیوتر» به دستگاه خودکاری می‌گفتند که محاسبات ریاضی را انجام می‌داد. بر پایهٔ «واژه‌نامه ریشه‌یابی Barnhart Concise» واژهٔ کامپیوتر در سال ۱۶۴۶ به زبان انگلیسی وارد گردید که به معنی «شخصی که محاسبه می‌کند» بوده‌است و سپس از سال ۱۸۹۷ به ماشین‌های محاسبه مکانیکی گفته می‌شد. در هنگام جنگ جهانی دوم «کامپیوتر» به زنان نظامی انگلیسی و آمریکایی که کارشان محاسبه مسیرهای شلیک توپ‌های بزرگ جنگی به وسیله ابزار مشابهی بود، اشاره می‌کرد.

البته در اوایل دهه ۵۰ میلادی هنوز اصطلاح ماشین حساب (computing machines) برای معرفی این ماشین‌ها به‌کار می‌رفت. پس از آن عبارت کوتاه‌تر کامپیوتر (computer) به‌جای آن به‌کار گرفته شد. ورود این ماشین به ایران در اوائل دهه ۱۳۴۰ بود و در فارسی از آن زمان به آن «کامپیوتر» می‌گفتند. واژه رایانه در دو دهه اخیر در فارسی رایج شده است.

برابر این واژه در زبان‌های دیگر حتماً همان واژه زبان انگلیسی نیست. در زبان فرانسوی واژه "ordinateur"، که به معنی «سازمان‌ده» یا «ماشین مرتب‌ساز» است، به‌کار می‌رود. در اسپانیایی "ordenador" با معنایی مشابه استفاده می‌شود، همچنین در دیگر کشورهای اسپانیایی زبان computadora بصورت انگلیسی‌مآبانه‌ای ادا می‌شود. در پرتغالی واژه computador به‌کار می‌رود که از واژه computar گرفته شده و به معنای «محاسبه کردن» می‌باشد. در ایتالیایی واژه "calcolatore" که معنای ماشین حساب است بکار می‌رود که بیشتر روی ویژگی حسابگری منطقی آن تاکید دارد. در سوئدی رایانه "dator" خوانده می‌شود که از "data" (داده‌ها) برگرفته شده‌است. به فنلاندی "tietokone" خوانده می‌شود که به معنی «ماشین اطلاعات» می‌باشد. اما در زبان ایسلندی توصیف شاعرانه‌تری بکار می‌رود، «tölva» که واژه‌ای مرکب است و به معنای «زن پیشگوی شمارشگر» می‌باشد. در چینی رایانه «dian nao» یا «مغز برقی» خوانده می‌شود. در انگلیسی واژه‌ها و تعابیر گوناگونی استفاده می‌شود، به‌عنوان مثال دستگاه داده‌پرداز («data processing machine»).






معنای واژهٔ فارسی رایانه

واژهٔ رایانه از مصدر رایانیدن ساخته شده که در فارسی میانه به شکلِ rāyēnīdan و به معنای «سنجیدن، سبک و سنگین کردن، مقایسه کردن» یا «مرتّب کردن، نظم بخشیدن و سامان دادن» بوده‌است. این مصدر در زبان فارسی میانه یا همان پهلوی کاربرد فراوانی داشته و مشتق‌های زیادی نیز از آن گرفته شده بوده است. برایِ مصدر رایانیدن/ رایاندن در فرهنگ واژه دهخدا چنین آمده:







رایاندن
دَ (مص) رهنمائی نمودن به بیرون. هدایت کردن. (ناظم الاطباء).

شکلِ فارسی میانهٔ این واژه rāyēnīdan بوده و اگر می‌خواسته به فارسی نو برسد به شکل رایانیدن/ رایاندن درمی‌آمده. (بسنجید با واژه‌یِ فارسیِ میانه‌یِ āgāhēnīdan که در فارسیِ نو آگاهانیدن/ آگاهاندن شده‌است).

این واژه از ریشه‌یِ فرضیِ ایرانیِ باستانِ –radz* است که به معنایِ «مرتّب کردن» بوده. این ریشه به‌صورتِ –rad به فارسیِ باستان رسیده و به شکلِ rāy در فارسیِ میانه (پهلوی) به‌کار رفته. از این ریشه ستاک‌هایِ حالِ و واژه‌هایِ زیر در فارسیِ میانه و نو به‌کار رفته‌اند:

-ā-rādz-a*یِ ایرانیِ باستان> -ā-rāy ِ فارسی میانه که در واژه‌یِ آرایشِ فارسیِ نو دیده می‌شود.
-pati-rādz-a*یِ ایرانیِ باستان> -pē-rāy ِ فارسی میانه که در واژه‌یِ پیرایشِ فارسیِ نو دیده می‌شود؛ و
-rādz-ta*یِ ایرانیِ باستان> rāst ِ فارسی میانه که در واژه‌یِ راستِ فارسیِ نو دیده می‌شود.

این ریشه‌یِ ایرانی از ریشه‌یِ هندواروپاییِ -reĝ* به معنایِ «مرتّب کردن و نظم دادن» آمده‌است. از این ریشه در

هندی rāj-a به معنیِ «هدایت‌کننده، شاه» (یعنی کسی که نظم می‌دهد)؛
لاتینی rect-us به معنیِ «راست، مستقیم»،
فرانسه di-rect به معنیِ «راست، مستقیم»،
آلمانی richt به معنیِ «راست، مستقیم کردن» و
انگلیسی right به معنیِ «راست، مستقیم، درست»

برجای مانده‌است.

در فارسیِ نو پسوندِ -ـه (= /e/ در فارسی رسمی ایران و /a/ در فارسی رسمی افغانستان و تاجیکستان) را به ستاکِ حالِ فعل‌ها می‌چسبانند تا نامِ ابزارِ آن فعل‌ها به‌دست آید (البته با این فرمول مشتق‌های دیگری نیز ساخته می‌شود، امّا در اینجا تنها نامِ ابزار مدِّ نظر است)؛ برای نمونه از

مالـ- (یعنی ستاکِ حالِ مالیدن) + -ـه، ماله «ابزار مالیدنِ سیمان و گچِ خیس»
گیر- (یعنی ستاکِ حالِ گرفتن) + -ـه، گیره «ابزار گرفتن»
پوشـ- (یعنی ستاکِ حالِ پوشیدن) + -ـه، پوشه «ابزار پوشیدن» (خود را جایِ کاغذهایی بگذارید که پوشه را می‌پوشند!)
رسانـ- (یعنی ستاکِ حالِ رساندن) + -ـه، رسانه «ابزار رساندنِ اطّلاعات و برنامه‌هایِ دیداری و شنیداری»

حاصل می‌گردد.

در فارسیِ نو پسوندِ -ـه (= e- یا همان a-) را به ستاکِ حالِ "رایانیدن" یعنی رایانـ- چسبانده‌اند تا نامِ ابزارِ این فعل ساخته شود؛ یعنی "رایانه" به معنایِ «ابزارِ نظم بخشیدن و سازماندهی (ِ داده‌ها)» است.

سازندگان این واژه به واژه‌یِ فرانسویِ این مفهوم، یعنی ordinateurتوجّه داشته‌اند که در فرانسه از مصدرِ ordre«ترتیب و نظم دادن و سازمان بخشیدن» ساخته شده. به هرحال، معنادهیِ واژه‌یِ رایانه برایِ این دستگاه جامع‌تر و رساتر از کامپیوتر است. یادآور می‌شود که computerبه معنایِ «حسابگر» یا «مقایسه‌گر» است، حال آن‌که کارِ این دستگاه براستی فراتر از "حساب کردن" است.






تاریخچه

در گذشته دستگاه‌های مختلف مکانیکی ساده‌ای مثل خط‌کش محاسبه و چرتکه نیز رایانه خوانده می‌شدند. در برخی موارد از آن‌ها به‌عنوان رایانه قیاسی نام برده می‌شود. البته لازم به ذکر است که کاربرد واژهٔ رایانه آنالوگ در علوم مختلف بیش از این است که به چرتکه و خطکش محاسبه محدود شود. به طور مثال در علوم الکترونیک، مخابرات و کنترل روشی برای محاسبه مشتق و انتگرال توابع ریاضی و معادلات دیفرانسیل توسط تقویت کننده‌های عملیاتی، مقاومت، سلف و خازن متداول است که به مجموعهٔ سیستم مداری «رایانهٔ قیاسی» (آنالوگ) گفته می‌شود. چرا که برخلاف رایانه‌های رقمی، اعداد را نه به‌صورت اعداد در پایه دو بلکه به‌صورت کمیت‌های فیزیکی متناظر با آن اعداد نمایش می‌دهند. چیزی که امروزه از آن به‌عنوان «رایانه» یاد می‌شود در گذشته به عنوان «رایانه رقمی (دیجیتال)» یاد می‌شد تا آن‌ها را از انواع «رایانه قیاسی» جدا سازند.

به تصریح دانشنامه انگلیسی ویکی‌پدیا، بدیع‌الزمان ابوالعز بن اسماعیل بن رزاز جَزَری (درگذشتهٔ ۶۰۲ ق.) یکی از نخستین ماشین‌های اتوماتا را که جد رایانه‌های امروزین است، ساخته بوده‌است. این مهندس مکانیک مسلمان از دیاربکر در شرق آناتولی بوده‌است. رایانه یکی از دو چیز برجسته‌ای است که بشر در سدهٔ بیستم اختراع کرد. دستگاهی که بلز پاسکال در سال ۱۶۴۲ ساخت اولین تلاش در راه ساخت دستگاه‌های محاسب خودکار بود. پاسکال آن دستگاه را که پس از چرتکه دومیت ابزار ساخت بشر بود، برای یاری رساندن به پدرش ساخت. پدر وی حسابدار دولتی بود و با کمک این دستگاه می‌توانست همه اعدادشش رقمی را با هم جمع و تفریق کند.

لایبنیتز ریاضی‌دان آلمانی نیز از نخستین کسانی بود که در راه ساختن یک دستگاه خودکار محاسبه کوشش کرد. او در سال ۱۶۷۱ دستگاهی برای محاسبه ساخت که کامل شدن آن تا ۱۹۶۴ به درازا کشید. همزمان در انگلستان ساموئل مورلند در سال ۱۶۷۳ دستگاهی ساخت که جمع و تفریق و ضرب می‌کرد.

در سدهٔ هجدهم میلادی هم تلاش‌های فراوانی برای ساخت دستگاه‌های محاسب خودکار انجام شد که بیشترشان نافرجام بود. سرانجام در سال ۱۸۷۵ میلادی استیفن بالدوین نخستین دستگاه محاسب را که هر چهار عمل اصلی را انجام می‌داد، به نام خود ثبت کرد.

از جمله تلاش‌های نافرجامی که در این سده صورت گرفت، مربوط به چارلز ببیج ریاضی‌دان انگلیسی است. وی در آغاز این سده در سال ۱۸۱۰ در اندیشهٔ ساخت دستگاهی بود که بتواند بر روی اعداد بیست و شش رقمی محاسبه انجام دهد. او بیست سال از عمرش را در راه ساخت آن صرف کرد اما در پایان آن را نیمه‌کاره رها کرد تا ساخت دستگاهی دیگر که خود آن را دستگاه تحلیلی می‌نامید آغاز کند. او می‌خواست دستگاهی برنامه‌پذیر بسازد که همه عملیاتی را که می‌خواستند دستگاه برروی عددها انجام دهد، قبلا برنامه‌شان به دستگاه داده شده باشد. قرار بود عددها و درخواست عملیات برروی آن‌ها به یاری کارت‌های سوراخ‌دار وارد شوند. بابیچ در سال ۱۸۷۱ مرد و ساخت این دستگاه هم به پایان نرسید.

کارهای بابیچ به فراموشی سپرده شد تا این که در سال ۱۹۴۳ و در بحبوحه جنگ جهانی دوم دولت آمریکا طرحی سری برای ساخت دستگاهی را آغاز کرد که بتواند مکالمات رمزنگاری‌شدهٔ آلمانی‌ها را رمزبرداری کند. این مسئولیت را شرکت آی‌بی‌ام و دانشگاه هاروارد به عهده گرفتند که سرانجام به ساخت دستگاهی به نام ASCC در سال ۱۹۴۴ انجامید. این دستگاه پنج تنی که ۱۵ متر درازا و ۲٫۵ متر بلندی داشت، می‌توانست تا ۷۲ عدد ۲۴ رقمی را در خود نگاه دارد و با آن‌ها کار کند. دستگاه با نوارهای سوراخدار برنامه‌ریزی می‌شد و همهٔ بخش‌های آن مکانیکی یا الکترومکانیکی بود.






تعریف داده و اطلاعات

داده به آن دسته از ورودی‌های خام گفته می‌شود که برای پردازش به رایانه ارسال می‌شوند.

به داده‌های پردازش شده اطّلاعات می‌گویند.






رایانه‌ها چگونه کار می‌کنند؟

از زمان رایانه‌های اولیه که در سال ۱۹۴۱ ساخته شده بودند تا کنون فناوری‌های دیجیتالی رشد نموده‌است، معماری فون نوِیمن یک رایانه را به چهار بخش اصلی توصیف می‌کند: واحد محاسبه و منطق (Arithmetic and Logic Unit یا ALU)، واحد کنترل یا حافظه، و ابزارهای ورودی و خروجی (که جمعا I/O نامیده می‌شود). این بخش‌ها توسط اتصالات داخلی سیمی به نام گذرگاه (bus) با یکدیگر در پیوند هستند.






حافظه

در این سامانه، حافظه بصورت متوالی شماره گذاری شده در خانه‌ها است، هرکدام محتوی بخش کوچکی از داده‌ها می‌باشند. داده‌ها ممکن است دستورالعمل‌هایی باشند که به رایانه می‌گویند که چه کاری را انجام دهد باشد. خانه ممکن است حاوی اطلاعات مورد نیاز یک دستورالعمل باشد. اندازه هر خانه، وتعداد خانه‌ها، در رایانهٔ مختلف متفاوت است، همچنین فناوری‌های بکاررفته برای اجرای حافظه نیز از رایانه‌ای به رایانه دیگر در تغییر است (از بازپخش‌کننده‌های الکترومکانیکی تا تیوپ‌ها و فنرهای پر شده از جیوه و یا ماتریس‌های ثابت مغناطیسی و در آخر ترانزیستورهای واقعی و مدار مجتمع‌ها با میلیون‌ها فیوز نیمه هادی یا MOSFETهایی با عملکردی شبیه ظرفیت خازنی روی یک تراشه تنها).






پردازش

واحد محاسبه و منطق یا ALU دستگاهی است که عملیات پایه مانند چهار عمل اصلی حساب (جمع و تفریق و ضرب و تقسیم)، عملیات منطقی (و، یا، نقیض)، عملیات قیاسی (برای مثال مقایسه دو بایت برای شرط برابری) و دستورات انتصابی برای مقدار دادن به یک متغیر را انجام می‌دهد. این واحد جائیست که «کار واقعی» در آن صورت می‌پذیرد.

البته CPUها به دو دسته کلی RISC و CISC تقسیم بندی می‌شوند. نوع اول پردازش‌گرهای مبتنی بر اعمال ساده هستند و نوع دوم پردازشگرهای مبتنی بر اعمال پیچیده می‌باشند. پردازشگرهای مبتنی بر اعمال پیچیده در واحد محاسبه و منطق خود دارای اعمال و دستوراتی بسیار فراتر از چهار عمل اصلی یا منطقی می‌باشند. تنوع دستورات این دسته از پردازنده‌ها تا حدی است که توضیحات آن‌ها خود می‌تواند یک کتاب با قطر متوسط ایجاد کند. پردازنده‌های مبتنی بر اعمال ساده اعمال بسیار کمی را پوشش می‌دهند و در حقیقت برای برنامه‌نویسی برای این پردازنده‌ها بار نسبتاً سنگینی بر دوش برنامه‌نویس است. این پردازنده‌ها تنها حاوی ۴ عمل اصلی و اعمال منطقی ریاضی و مقایسه‌ای به علاوه چند دستور بی‌اهمیت دیگر می‌باشند. هرچند ذکر این نکته ضروری است که دستورات پیچیده نیز از ترکیب تعدادی دستور ساده تشکیل شده‌اند و برای پیاده‌سازی این دستورات در معماری‌های مختلف از پیاده‌سازی سخت‌افزاری (معماری CISC) و پیاده‌سازی نرم‌افزاری (معماری RISC) استفاده می‌شود.

(قابل ذکر است پردازنده‌های اینتل از نوع پردازنده مبتنی بر اعمال پیچیده می‌باشند.)

واحد کنترل همچنین این مطلب را که کدامین بایت از حافظه حاوی دستورالعمل فعلی اجرا شونده‌است را تعقیب می‌کند، سپس به واحد محاسبه و منطق اعلام می‌کند که کدام عمل اجرا و از حافظه دریافت شود و نتایج به بخش اختصاص داده شده از حافظه ارسال گردد. بعد از یک بار عمل، واحد کنترل به دستورالعمل بعدی ارجاع می‌کند (که معمولاً در خانه حافظه بعدی قرار دارد، مگر اینکه دستورالعمل جهش دستورالعمل بعدی باشد که به رایانه اعلام می‌کند دستورالعمل بعدی در خانه دیگر قرار گرفته‌است).






ورودی/خروجی

بخش ورودی/خروجی (I/O) این امکان را به رایانه می‌دهد تا اطلاعات را از جهان بیرون تهیه و نتایج آن‌ها را به همان جا برگرداند. محدوده فوق العاده وسیعی از دستگاه‌های ورودی/خروجی وجود دارد، از خانواده آشنای صفحه‌کلیدها، نمایشگرها، نَرم‌دیسک گرفته تا دستگاه‌های کمی غریب مانند رایابین‌ها (webcams). (از سایر ورودی/خروجی‌ها می‌توان موشواره mouse، قلم نوری، چاپگرها (printer)، اسکنرها، انواع لوح‌های فشرده(CD, DVD) را نام برد).

چیزی که تمامی دستگاه‌های عمومی در آن اشتراک دارند این است که آن‌ها رمزکننده اطلاعات از نوعی به نوع دیگر که بتواند مورد استفاده سیستم‌های رایانه دیجیتالی قرار گیرد، هستند. از سوی دیگر، دستگاه‌های خروجی آن اطلاعات به رمز شده را رمزگشایی می‌کنند تا کاربران آن‌ها را دریافت نمایند. از این رو یک سیستم رایانه دیجیتالی یک نمونه از یک سامانه داده‌پردازی می‌باشد.






دستورالعمل‌ها

هر رایانه تنها دارای یک مجموعه کم تعداد از دستورالعمل‌های ساده و تعریف شده می‌باشد. از انواع پرکاربردشان می‌توان به دستورالعمل «محتوای خانه ۱۲۳ را در خانه ۴۵۶ کپی کن!»، «محتوای خانه ۶۶۶ را با محتوای خانه ۰۴۲ جمع کن، نتایج را در خانه ۰۱۳ کن!»، «اگر محتوای خانه ۹۹۹ برابر با صفر است، به دستورالعمل واقع در خانه ۳۴۵ رجوع کن!».

دستورالعمل‌ها در داخل رایانه بصورت اعداد مشخص شده‌اند - مثلاً کد دستور العمل (copy instruction) برابر ۰۰۱ می‌تواند باشد. مجموعه معین دستورالعمل‌های تعریف شده که توسط یک رایانه ویژه پشتیبانی می‌شود را زبان ماشین می‌نامند. در واقعیت، اشخاص معمولاً به زبان ماشین دستورالعمل نمی‌نویسند بلکه بیشتر به نوعی از انواع سطح بالای زبان‌های برنامه‌نویسی، برنامه‌نویسی می‌کنند تا سپس توسط برنامه ویژه‌ای (تفسیرگرها (interpreters) یا همگردان‌ها (compilers) به دستورالعمل ویژه ماشین تبدیل گردد. برخی زبان‌های برنامه‌نویسی از نوع بسیار شبیه و نزدیک به زبان ماشین که اسمبلر (یک زبان سطح پایین) نامیده می‌شود، استفاده می‌کنند؛ همچنین زبان‌های سطح بالای دیگری نیز مانند پرولوگ نیز از یک زبان انتزاعی و چکیده که با زبان ماشین تفاوت دارد بجای دستورالعمل‌های ویژه ماشین استفاده می‌کنند.






معماری‌ها

در رایانه‌های معاصر واحد محاسبه و منطق را به همراه واحد کنترل در یک مدار مجتمع که واحد پردازشی مرکزی (CPU) نامیده می‌شود، جمع نموده‌اند. عموما، حافظه رایانه روی یک مدار مجتمع کوچک نزدیک CPU قرار گرفته. اکثریت قاطع بخش‌های رایانه تشکیل شده‌اند از سامانه‌های فرعی (به عنوان نمونه، منبع تغذیه رایانه) و یا دستگاه‌های ورودی/خروجی.

برخی رایانه‌های بزرگ‌تر چندین CPU و واحد کنترل دارند که بصورت هم‌زمان با یکدیگر درحال کارند. این‌گونه رایانه‌ها بیشتر برای کاربردهای پژوهشی و محاسبات علمی بکار می‌روند.

کارایی رایانه‌ها بنا به تئوری کاملاً درست است. رایانه داده‌ها و دستورالعمل‌ها را از حافظه‌اش واکشی (fetch) می‌کند. دستورالعمل‌ها اجرا می‌شوند، نتایج ذخیره می‌شوند، دستورالعمل بعدی واکشی می‌شود. این رویه تا زمانی که رایانه خاموش شود ادامه پیدا می‌کند. واحد پردازنده مرکزی در رایانه‌های شخصی امروزی مانند پردازنده‌های شرکت ای-ام-دی و شرکت اینتل از معماری موسوم به خط لوله استفاده می‌شود و در زمانی که پردازنده در حال ذخیره نتیجه یک دستور است مرحله اجرای دستور قبلی و مرحله واکشی دستور قبل از آن را آغاز می‌کند. همچنین این رایانه‌ها از سطوح مختلف حافظه نهانگاهی استفاده می‌کنند که در زمان دسترسی به حافظه اصلی صرفه‌جویی کنند.






برنامه‌ها

برنامه رایانه‌ای فهرست‌های بزرگی از دستورالعمل‌ها (احتمالاً به همراه جدول‌هائی از داده) برای اجرا روی رایانه هستند. خیلی از رایانه‌ها حاوی میلیون‌ها دستورالعمل هستند، و بسیاری از این دستورها به تکرار اجرا می‌شوند. یک رایانه شخصی نوین نوعی (درسال ۲۰۰۳) می‌تواند در ثانیه میان ۲ تا ۳ میلیارد دستورالعمل را پیاده نماید. رایانه‌ها این مقدار محاسبه را صرف انجام دستورالعمل‌های پیچیده نمی‌کنند. بیشتر میلیون‌ها دستورالعمل ساده را که توسط اشخاص باهوشی «برنامه نویسان» در کنار یکدیگر چیده شده‌اند را اجرا می‌کنند. برنامه‌نویسان خوب مجموعه‌هایی از دستورالعمل‌ها را توسعه می‌دهند تا یکسری از وظایف عمومی را انجام دهند (برای نمونه، رسم یک نقطه روی صفحه) و سپس آن مجموعه دستورالعمل‌ها را برای دیگر برنامه‌نویسان در دسترس قرار می‌دهند. (اگر مایلید «یک برنامه‌نویس خوب» باشید به این مطلب مراجعه نمایید.)

رایانه‌های امروزه، قادرند چندین برنامه را در آن واحد اجرا نمایند. از این قابلیت به عنوان چندکارگی (multitasking) نام برده می‌شود. در واقع، CPU یک رشته دستورالعمل‌ها را از یک برنامه اجرا می‌کند، سپس پس از یک مقطع ویژه زمانی دستورالعمل‌هایی از یک برنامه دیگر را اجرا می‌کند. این فاصله زمانی اکثرا به‌عنوان یک برش زمانی (time slice) نام برده می‌شود. این ویژگی که CPU زمان اجرا را بین برنامه‌ها تقسیم می‌کند، این توهم را بوجود می‌آورد که رایانه هم‌زمان مشغول اجرای چند برنامه‌است. این شبیه به چگونگی نمایش فریم‌های یک فیلم است، که فریم‌ها با سرعت بالا در حال حرکت هستند و به نظر می‌رسد که صفحه ثابتی تصاویر را نمایش می‌دهد. سیستم‌عامل همان برنامه‌ای است که این اشتراک زمانی را بین برنامه‌های دیگر تعیین می‌کند.






سیستم‌عامل

کامپیوتر همیشه نیاز دارد تا برای بکار انداختنش حداقل یک برنامه روی آن در حال اجرا باشد. تحت عملکردهای عادی این برنامه همان سیستم‌عامل یا OS که مخفف واژه‌های Operating System است. سیستم یا سامانه عامل بر اساس پیشفرض‌ها تصمیم می‌گیرد که کدام برنامه برای انجام چه وظیفه‌ای اجرا شود، چه زمان، از کدام منابع (مثل حافظه، ورودی/خروجی و...) استفاده شود. همچنین سیستم‌عامل یک لایه انتزاعی بین سخت‌افزار و برنامه‌های دیگر که می‌خواهند از سخت‌افزار استفاده کنند، می‌باشد، که این امکان را به برنامه نویسان می‌دهد تا بدون اینکه جزئیات ریز هر قطعه الکترونیکی از سخت‌افزار را بدانند بتوانند برای آن قطعه برنامه‌نویسی نمایند. در گذشته یک اصطلاح متداول بود که گفته می‌شد با تمام این وجود کامپیوترها نمی‌توانند برخی از مسائل را حل کنند که به این مسائل حل نشدنی گفته می‌شود مانند مسائلی که در مسیر حلشان در حلقه بی‌نهایت می‌افتند. به همین دلیل نیاز است که با کمک روشهای خاص بطور مثال به چند بخش تقسیم نمودن مساله یا روشهای متداول دیگر از رخ دادن این خطا تا حد امکان جلوگیری نمود. از جمله سیستم عامل‌های امروزی می‌توان به مایروسافت ویندوز، مکینتاش اپل و لینوکس و بی اس دی اشاره کرد.






کاربردهای رایانه

نخستین رایانه‌های رقمی، با قیمت‌های زیاد و حجم بزرگشان، در اصل محاسبات علمی را انجام می‌دادند، انیاک یک رایانهٔ قدیمی ایالات متحده اصولاً طراحی شده تا محاسبات پرتابه‌ای توپخانه و محاسبات مربوط به جدول چگالی نوترونی را انجام دهد. (این محاسبات بین دسامبر ۱۹۴۱ تا ژانویه ۱۹۴۶ روی حجمی بالغ بر یک میلیون کارت پانچ انجام پذیرفت! که این خود طراحی و سپس تصمیم نادرست بکارگرفته شده را نشان می‌دهد) بسیاری از ابررایانه‌های امروزی صرفاً برای کارهای ویژهٔ محاسبات جنگ‌افزار هسته‌ای استفاده می‌گردد.

CSIR Mk I نیز که نخستین رایانه استرالیایی بود برای ارزیابی میزان بارندگی در کوه‌های اسنوئی (Snowy)این کشور بکاررفت، این محاسبات در چارچوب یک پروژه عظیم تولید برقابی انجام گرفت.

برخی رایانه‌ها نیز برای انجام رمزگشایی بکارگرفته می‌شد، برای مثال Colossus که در جریان جنگ جهانی دوم ساخته شد، جزو اولین کامپیوترهای برنامه‌پذیر بود (البته ماشین تورینگ کامل نبود). هرچند رایانه‌های بعدی می‌توانستند برنامه‌ریزی شوند تا شطرنج بازی کنند یا تصویر نمایش دهند و سایر کاربردها را نشان دهد.

سیاست‌مداران و شرکت‌های بزرگ نیز رایانه‌های اولیه را برای خودکارسازی بسیاری از مجموعه‌های داده و پردازش کارهایی که قبلا توسط انسان‌ها انجام می‌گرفت، بکار بستند - برای مثال، نگهداری و بروزرسانی حساب‌ها و دارایی‌ها. در موسسات پژوهشی نیز دانشمندان رشته‌های مختلف شروع به استفاده از رایانه برای مقاصدشان نمودند.

کاهش پیوسته قیمت‌های رایانه باعث شد تا سازمان‌های کوچک‌تر نیز بتوانند آن‌ها را در اختیار بگیرند. بازرگانان، سازمان‌ها، و سیاست‌مداران اغلب تعداد زیادی از کامپیوترهای کوچک را برای تکمیل وظایفی که قبلا برای تکمیلشان نیاز به رایانه بزرگ (mainframe) گران‌قیمت و بزرگ بود، به کار بگیرند. مجموعه‌هایی از رایانه‌های کوچک‌تر در یک محل اغلب به‌عنوان خادم سر (server farm) نام برده می‌شود.

با اختراع ریزپردازنده‌ها در دههٔ ۱۹۷۰ این امکان که بتوان رایانه‌هایی بسیار ارزان قیمت را تولید نمود بوجود آمد. رایانه‌های شخصی برای انجام وظایف بسیاری محبوب گشتند، از جمله کتابداری، نوشتن و چاپ مستندات. محاسبات پیش بینی‌ها و کارهای تکراری ریاضی توسط صفحات گسترده (spreadsheet)، ارتباطات توسط پست الکترونیک، و اینترنت. حضور گسترده رایانه‌ها و سفارشی کردن آسانشان باعث شد تا در امورات بسیار دیگری بکارگرفته شوند.

در همان زمان، رایانه‌های کوچک، که معمولاً با یک برنامه ثابت ارائه می‌شدند، راهشان را بسوی کاربردهای دیگری باز می‌نمودند، کاربردهایی چون لوازم خانگی، خودروها، هواپیماها، و ابزار صنعتی. این پردازشگرهای جاسازی شده کنترل رفتارهای آن لوازم را ساده‌تر کردند، همچنین امکان انجام رفتارهای پیچیده را نیز فراهم نمودند (برای نمونه، ترمزهای ضدقفل در خودروه). با شروع قرن بیست و یکم، اغلب دستگاه‌های الکتریکی، اغلب حالت‌های انتقال نیرو، اغلب خطوط تولید کارخانه‌ها توسط رایانه‌ها کنترل می‌شوند. اکثر مهندسان پیش بینی می‌کنند که این روند همچنان به پیش برود... یکی از کارهایی که می‌توان به‌وسیله رایانه انجام داد برنامه گیرنده ماهواره‌است.

نیز تنها ۴۹۵ دلار قیمت داشت! قیمت آن کامپیوتر نیز ۳٬۰۰۵ دلار بود و IBM در آن زمان توانست ۶۷۱٬۵۳۷ دستگاه از آن را بفروشد.
11:46 pm
کاربرد برنامه نویسی

زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک برنامه نویس از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده‌ترین عناصر موجود بیان می‌شوند(مفاهیم ابتدایی نامیده می‌شوند).





زبان‌های برنامه نویسی با غالب زبان‌های انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبان‌های طبیعی برای ارتباط با دیگر انسان‌ها، نویسندگان و گویندگان می‌توانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانه‌ها "دقیقاً آنچه که به آنها گفته شده را انجام می‌دهند." و نمی‌توانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بوده‌است] البته امروزه برنامه‌هایی برای انجام این کار تولید شده‌اند و تلاش‌های بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص می‌کند. برنامه‌های یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامه‌ها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامه‌ای استفاده می‌شود، زبان اسکریپت می‌گویند. بسیاری از زبان‌ها کنار گذاشته شده‌اند، برای رفع نیازهای جدید جایگزین شده‌اند، با برنامه‌های دیگر ترکیب شده‌اند و در نهایت استعمال آنها متوقف شده‌است. با وجود اینکه تلاش‌هایی برای طراحی یک زبان رایانه" کامل" شده‌است که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبان‌های رایانه‌ای گسترده از گستردگی زمینه‌هایی که زبان‌ها استفاده می‌شوند، ناشی می‌شود:

محدوده برنامه‌ها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستم‌های بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویس‌ها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفه‌ای‌هایی که با پیچیدگی قابل توجهی کنار می‌آیند.
برنامه‌ها باید سرعت، اندازه و سادگی را بسته به سیستم‌ها از ریزپردازندها تا ابر رایانه‌ها متناسب نگه دارند.
برنامه‌ها ممکن است یک بار نوشته شوند و تا نسل‌ها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویس‌ها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.

یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت‌افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.



المان‌ها
تمام زبان‌های بزنامه نویسی تعدادی بلوک‌های ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف می‌شوند که ساختار و معنای مربوطه را توضیح می‌دهند.
دستور(
syntax)

فرم سطحی یک زبان برنامه نویسی دستور آن نامیده می‌شود. غالب زبان‌های برنامه نویسی کاملاً متنی اند؛ و از دنبالهٔ متون شامل کلمات، اعداد، نشانگذاری، بسیار شبیه زبان نوشتاری طبیعی استفاده می‌کنند. از طرف دیگر، برنامه‌هایی نیز وجود دارند که بیشتر گرافیکی اند، و از روابط بصری بین سمبل‌ها برای مشخص کردن برنامه استفاده می‌کنند. دستور یک زبان ترکیبات ممکن سمبل‌ها برای ایجاد یک برنامهٔ درست را از نظر دستوری مشخص می‌کند. معنایی که به یک ترکیب سمبل‌ها داده می‌شود با معناشناسی اداره می‌شود(قراردادی یا نوشته شده در پیاده سازی منبع). از آنجا که اغلب زبان‌ها متنی هستند، این مقاله دستور متنی را مورد بحث قرار می‌دهد.

دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف می‌شوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص می‌کند:

یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکسته‌ای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی می‌تواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) می‌آید.
یک لیست تعدادی پرانتز است که می‌تواند صفر یا چند عبارت در خود داشته باشد.

"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثال‌هایی هستند از دنباله‌های خوش فرم در این گرامر.

همه برنامه‌هایی که از لحاظ دستوری درست هستند، از نظر معنا درست نیستند. بسیاری از برنامه‌های درست دستوری، بد فرم اند، با توجه به قوانین زبان؛ و ممکن است (بسته به خصوصیات زبان و درست بودن پیاده سازی) به خطای ترجمه و یا استثنا(exception) منتج شود. در برخی موارد، چنین برنامه‌هایی ممکن است رفتار نامشخصی از خود نشان دهند. حتی اگر یک برنامه در یک زبان به خوبی بیان شده باشد، ممکن است دقیقاً مطلوب نویسنده آن نبوده باشد.

به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:

"ایده‌های بی رنگ سبز با خشم می‌خوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان می‌کند که نمی‌تواند درست باشد.

این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام می‌دهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);

گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی می‌تواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبان‌های برنامه نویسی می‌تواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.




معناشناسی ایستا
معناشناسی ایستا محدودیت‌هایی بر روی ساختار مجاز متن‌ها تعیین می‌کند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیت‌ها به وسیله سیستم نوع گذاری انجام می‌شود.


سیستم نوع گذاری
یک سیستم نوع گذاری مشخص می‌کند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی می‌کند، چگونه می‌تواند آن نوع‌ها را تغییر دهد و رفتار متقابل آن‌ها چگونه‌است. این کارعموما توضیح داده ساختارهایی که می‌توانند در آن زبان ایجاد شوند را شامل می‌شود. طراحی و مطالعه سیستم‌های نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبان‌های نوع گذاری شده و بدون نوع گذاری

یک زبان نوع گذاری شده‌است اگر مشخصات هر عملیات، نوع داده‌های قابل اجرا توسط آن را با نشان دادن نوع‌هایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشته‌است. در غالب زبان‌های برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبان‌های برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامه‌ها رد کنند. در برخی زبان‌ها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامه‌ها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبان‌های نوع دار زبان‌های تک نوعند. این زبان‌ها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشته‌های کاراکتری که هم برای داده‌های عددی و هم برای داده‌های سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبان‌های اسمبلی، این امکان را می‌دهد که هر عملیاتی روی هر داده‌ای انجام شود، که معمولاً دنباله‌ای از بیت‌ها با طول‌های متفاوت در نظر گرفته می‌شوند. زبان‌های سطح بالا که بی نوع هستند شامل زبان‌های ساده رایانه‌ای و برخی از انواع زبان‌های نسل چهارم.

در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی می‌شوند(چک کردن یا رد کردن تمام عملیات‌ها)، غالب زبان‌های امروزی درجه‌ای از نوع گذاری را فراهم می‌کنند. بسیاری از زبان‌های تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم می‌کنند.



نوع گذاری ایستا و متحرک

در نوع گذاری ایستا تمام عبارات نوع‌های خود را قبل از اجرای برنامه تعیین می‌کنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمی‌توانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.


زبان‌های نوع گذاری شده ایستا می‌توانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوع‌ها را در جایگاه‌های منتنی مشخص می‌نویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریف‌ها را بر اساس متن استنباط می‌کند. غالب زبان‌های مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری می‌شوند



نوع گذاری قوی و ضعیف

نوع گذاری ضعیف این امکان را ایجاد می‌کند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.

نوع گذاری قوی مانع رخ دادن مشکل فوق می‌شود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا می‌شود. زبان‌هایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته می‌شوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبان‌ها اشاره می‌کند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را می‌دهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل می‌کند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشته‌ای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان می‌کنند.

قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.



معناشناسی اجرا

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

برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.


کتابخانه هسته
اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.


عمل
طراحان زبان و کاربران باید مصنوعاتی ایجاد کنند تا برنامه نویسی را در عمل ممکن سازند و کنترل کنند. مهمترین این مصنوعات خصوصیات و پیاده سازی‌های زبان هستند.



خصوصیات

یک زبان برنامه نویسی باید تعریفی فراهم کند که کاربران و پیاده کننده‌های زبان می‌توانند از آن استفاده کنند تا مشخص کنند که رفتار یک برنامه درست است. با داشتن کد منبع: خصوصیات یک زبان برنامه نویسی چندین قالب می‌تواند بگیرد، مانند مثال‌های زیر:

تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.


پیاده سازی

پیاده سازی یک زبان برنامه نویسی امکان اجرای آن برنامه را روی پیکربندی مشخصی از سخت‌افزار و نرم‌افزار را فراهم می‌کند. بطور وسیع، دو راه رسیدن به پیاده سازی زبان برنامه نویسی وجود دارد. کامپایل کردن و تفسیر کردن. بطور کلی با هر بک از ابن دو روش می‌توان یک زبان را پیاده سازی کرد.

خروجی یک کامپایلر ممکن است با سخت‌افزار و یا برنامه‌ای به نام مفسر اجرا شود. در برخی پیاده سازی‌ها که از مفسر استفاده می‌شود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازی‌های زبان برنامه نویسی بیسیک کامپایل می‌کنند و سپس کد را خط به خط اجرا می‌کنند.

برنامه‌هایی که مستقیماً روی سخت‌افزار اجرا می‌شوند چندین برابر سریعتر از برنامه‌هایی که با کمک نرم‌افزار اجرا می‌شوند، انجام می‌شوند.

یک تکنیک برای بهبود عملکرد برنامه‌های تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوک‌های کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سخت‌افزار ترجمه می‌کند.



تاریخچه
پیشرفت‌های اولیه

اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.

در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.

کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.



پالایش

دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:

APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به

عنوان اولین زبان کاملاً شئ گرا معرفی شد.

C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.

هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.

دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.

"ادسگر دیکسترا" در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.

در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.




یکپارچگی و رشد

دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.

یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالباً با ساختارهای برنامه نویسی عام همراه شده‌اند.

رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.

۴GLها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با "مدرک اینجا" خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.




سنجش استفاده از زبان

مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولاً برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.
تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.
شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.

طبقه بندی‌ها هیچ برنامه غالبی برای دسته بندی زبان‌های برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبان‌ها معمولاً با ترکیب المان‌های چند زبان پیشینه بوجود می‌آیند که هربار ایده‌های جدید درگردشند. ایده‌هایی که در یک زبان ایجاد می‌شوند در یک خانواده از زبان‌های مرتبط پخش می‌شوند، و سپس از بین خلاهای بین خانواده‌ها منتقل شده و در خانواده‌های دیگر ظاهر می‌شوند.

این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر می‌کند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق می‌کند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.

در نگاه کلی، زبان‌های برنامه نویسی به مثال‌های برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم می‌شوند. مثال‌ها شامل برنامه نویسی رویه‌ای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبان‌ها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبان‌های برنامه نویسی ممکن است همه منظوره باشند، زبان‌های برنامه نویسی سیستمی، زبان‌های اسکریپتی، زبان‌های محدوده مشخص، زبان‌های همزمان/ گسترده(و یا ترکیب اینها). برخی زبان‌های همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شده‌اند.

یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه نویسی دسته بندی شود. برای مثال، غالب زبان‌های برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
ساعت : 11:46 pm | نویسنده : admin | طراحی وب امیر | مطلب قبلی
طراحی وب امیر | next page | next page