خدمات وب
با کمک فناوری خدمات وب (Web services) می‌شود سرویس‌ها و خدمتهای گوناگون را در روی اینترنت پراکنده کرد. منظور از خدمت، واحدی کوچک یا بزرگ از نرم‌افزار آماده به کار است که می‌تواند کار یا خدمتی را برای مشترکان خود انجام دهد.






میزبانی صفحات وب

میزبانی در واقع فضای مورد نیاز شما را برای ساخت وب‌گاه در اختیار شما قرار می‌دهد.






مزایای مربوط به خدمات وب'

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






استانداردهای خدمات وب
پروتکل دسترسی ساده به شیء (SOAP)

بر اساس پروتکل دستیابی ساده به شیء است که تمامی خدمات وب به گردش در می‌آید. منظور از پروتکل، مجموعه شرح قواعد و فرمت‌های مربوط به ارسال پیامهای مخابراتی از یک ماشین به ماشین دیگر است. SOAP پروتکل ساده‌ای ست که به منظور سازگاری (compatibility) با سکوهای (platforms) مختلف و نیز سیستم‌های عامل (operating systems) گوناگون نوشته شده است. هدف اساسی این پروتکل را باید امکان پذیری مخابرات ماشین به ماشین در محیط‌های محاسباتی نامتجانس (heterogeneous) ذکر کرد.






زبان توصیف خدمات وب (WSDL)

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

به وسیله فناوری شرح، کشف، و یکپارچه‌سازی فراگیر (Universal Description، Discovery، and Integration) می‌توان به انتشار و نیز جستجوی خدمات وب اقدام کرد. این فناوری، خدمات وب را سامان داده، و پس از شرح آن ها، اطلاعات بدست آمده را در یک جایگاه مرکزی قرار می‌دهد.

دراینجا بیشتر تاکیدمان برتعامل با منابعی است که حالتپذیر(Statefull) هستند به جای استفاده از پیغامها و یا عملیاتها.






انواع سبک‌های استفاده از وب سرویسها
روش فراخوانی از راه دور - RPC

وب سرویس‌های این نوع، توابع توزیع شده ای رااجرا می کنند که فراخوانی شان بسیار برای تولیدگرها آشناست، بطور معمول ساده‌ترین واحد این مدل فراخوانی یک عملیاتی است که یک wsdl در پی دارد روشهای دیگری که با کارکرد مشابه به عنوان شی RPC می توان نام برد، Object Management Group's (OMG) و Common Object Request Broker Architecture (CORBA) و Microsoft's Distributed Component Object Model (DCOM) و یا سان مایکروسیستم جاوا ست که همان (RMI)نامیده میشود.






معماری سرویس گرا - Service-oriented architecture

وب سرویس‌ها را برای پیاده سازی معماری با رویکرد به مفاهیم معماری سرویس گرا (SOA) می توان اجرا کرد که مبتنی است بر ساده‌ترین واحدهای ارتباطی که همان پیغام‌ها میباشند در تقابل با اعمال (operation)، به همین دلیل است که غالباً با نام سرویس‌های پیغام گرا نامیده میشوند . این دست از وب سرویسها توسط اکثر تولیدکنندگان نرم‌افزار عمده در دنیا پشتیبانی می گردد، بر خلاف RPC در این مدل امکان اتصالات سست(loose coupling ) محقق تر است بدلیل اینکه تاکید بر روی CONTRACT ی است که WSDL تولید کرده به جای اینکه بروی جزئیات زمینه اجرا باشد.
نمایانگر حالت انتقال - (Representational state transfer (REST)

این مدل تلاشی است در جهت توصیف و یا ساخت معماری هایی که از http و یا پروتکل‌های مشابه ای استفاده می کنند که هدفشان محدود کردن واسطه(interface) هاست به استفاده از اعمال شناخته شده واستاندارد (مثل GET، POST، PUT، DELETE بروی HTTP) دراینجا بیشتر تاکیدمان برتعامل با منابعی است که حالتپذیر(State-full) هستند به جای استفاده از پیغامها و یا عملیاتها. یک معماری مبتنی بر REST که REST-full نامیده می‌شود می تواند برای تعریف یک پیغام سوپ از WSDL بروی HTTP استفاده کند یا می تواند یک کلاس انتزاعی باشد که صرفاً بروی سوپ بنا شده باشد، یا می تواند تماماً بدون هیچ استفاده ای از سوپ ساخته شود. WSDL ۲ نه تنها اتصال به همه متدهای ورژن یک را امکانپذیر می‌کند بلکه تمامی متدهای اتصال به http را پشتیبانی می‌کند، بنابراین به نظر می رسد که برای وب سرور هایی از نوع REST این اجرا بهترین باشد، هر جند که پشتیبانی از این مشخصات فنی معماری، درون کیت‌های برنامه نویسی روز دنیا هنوز ضعیف می باشد. این برنامه‌ها معمولاً به سمت تولید ابزارهایی برای WSDL ۱ تمایل دارند.







توسعه وب

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

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

1- توسعه تجارت الکترونیک

2- طراحی وب

3- توسعه محتوای وب

4- برنامه‌نویسی کاربر سو/کارپرداز

5- پیکره‌بندی کارپرداز وب

درمیان توسعه‌دهندگان حرفه‌ای وب، «توسعه وب» معمولاً فقط به جنبه‌های غیرگرافیکی ساخت وب‌گاه‌ها مانند برنامه‌نویسی و نشانه‌گذاری وب نسبت داده می‌شود. توسعه وب می‌تواند از توسعه ساده‌ترین برگه‌های ایستا (به انگلیسی Static Pages) با محتوای متن ساده تا پیچیده‌ترین نرم‌افزارهای مبتنی بر وب، تجارت‌های الکترونیکی یا خدمات شبکه‌های اجتماعی شامل شود.

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






توسعه وب به عنوان یک صنعت

از اواسط دهه 90 میلادی، توسعه وب به یکی از صنایع پررونق در جهان تبدیل شد. در سال 1995 میلادی تنها کمتر از 1000 شرکت توسعه وب در ایالات متحده آمریکا وجود داشتند این در حالی است که در سال 2005 میلادی این تعداد به بیش از 30000 شرکت رسید. انتظار می‌رود گستره صنعت توسعه وب در سال 2010، بیست درصد افزایش داشته باشد. رشد این صنعت تحت تاثیر شرکت‌های بزرگی است که می‌خواهند محصولات و خدمات خود را به مشتری‌ها بفروشند و تجارت خود را به وسیله وب خودکار کنند.

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






سکوها و ابزارهای توسعه وب

سکوها (Platforms) و ابزارهای توسعه وب بسیار پراهمیت هستند. برای انتشار رایگان و کمک به توسعه وب، سامانه‌های ترکیبی زیادی بوجود آمده‌اند. یکی از محبوب‌ترین سامانه‌های ترکیبی برای توسعه وب LAMP است که مخفف چهار واژه Linux (یک سیستم‌عامل متن‌باز)، Apache (یک راه‌انداز کارپرداز وب)، MySQL (یک فن‌آوری و سامانه مدیریت پایگاه داده) و PHP (یک زبان برنامه‌نویسی وب) است. سامانه ترکیبی LAMP معمولاً با هزینه کمی برای توسعه وب قابل استفاده است. سامانه ترکیبی LAMP، یکی از عواملی است که محبوبیت توسعه وب در جهان را افزایش داده است. عامل دیگر در توسعه وب، «نرم‌افزارهای توسعه وب» هستند که استفاده از آن‌ها بسیار آسان است. پرکاربردترین این نرم‌افزارها، WebDev، Adobe Dreamweaver، Microsoft Expression Studio (پیش‌ترMicrosoft Frontpage بود.) هستند. به شکل تقریبی هر کسی می‌تواند در مدت زمان کوتاهی با استفاده از این نوع نرم‌افزارها یک وب‌گاه طراحی کند. در هنگام استفاده از نرم‌افزارهای توسعه وب، نیازی به دانستن «زبان نشانه‌گذاری ابرمتن» (HTML) یا دیگر زبان‌های برنامه‌نویسی وب نیست اما برای تولید آثار حرفه‌ای تر، مقوله‌های مذکور توصیه می‌شود. نسل آینده ابزارهای توسعه وب برای تولید وب به عنوان راهی در جهت اجرای نرم‌افزارهای کاربردی به شکل برخطی از پیشرفت‌های نیرومندی در فن‌آوری‌های Microsoft .NET و LAMP استفاده می‌کنند. همینک توسعه‌دهندگان وب به تولید انواعی از نرم‌افزارهای کاربردی که به شکل خدمات وب ارائه می‌شوند، کمک می‌کنند تا بتوانند آنان را مانند نرم‌افزارهای کاربردی رومیزی رایانه، تجاری کنند.






تغییر روش ارتباطات با استفاده از توسعه وب

به جای اجرای کدهای قابل اجرا بر روی یک رایانه محلی، کاربران از نرم‌افزارهای کاربردی برخطی برای تولید محتوای جدید بهره می‌گیرند. این موضوع روش‌های نوینی را در ارتباطات بوجود آورده است و اجازه داده است تا مجال و فرصت‌های بیشتری برای تمرکز-زدایی اطلاعات و توزیع رسانه‌ها ایجاد گردد. نمونه‌های زیادی وجود دارند که تغییرات در روش ارتباطات و تجارت را با استفاده از صنعت توسعه وب، نشان می‌دهند. وب‌گاه‌های حراجی برخط مانند eBay، روش مصرف مصرف‌کنندگان و پرداخت برای خدمات و کالاها را تغییر داده‌اند. فروشنده‌های برخطی واسطه مانند Amazon.com و Buy.com، روش‌های خرید و تجربه کسب سود را برای مصرف کنندگان زیادی تغییر داده‌اند.

یک نمونه بسیار خوب دیگر برای تغییر روش ارتباطات با استفاده از توسعه وب، «وب‌نوشت» (به انگلیسی Blog) است. نرم‌افزارهای کاربردی وب مانند مووبل تایپ و وردپرس، به راحتی محیط‌های وب‌نویسی کاملی را برای وب‌گاه‌های شخصی ایجاد کرده‌اند. سامانه‌های متن‌باز مدیریت محتوا مانند Typo3، Xoops، Joomla! و Drupal، با بهره‌گیری از حالت‌های نوینی از ارتباطات، توسعه وب را گسترش داده‌اند.
نواحی هم‌نوع (به انگلیسی Typical Areas)







توسعه وب با استفاده از تعداد زیادی نواحی هم‌نوع امکان‌پذیر است که عبارتند از:

الف) برنامه‌نویسی سمت مشتری

■ ای‌جکس: روش‌های نوینی را در کاربرد جاوااسکریپت، پی‌اچ‌پی و دیگر زبان‌های برنامه‌نویسی برای بهبود تجربه کاربر فراهم کرده است.

■ فلش: نرم‌افزار Adobe Flash Player یک سکوی سمت مشتری قابل دسترس و آماده برای RIAها است. همچنین Flex 2 به Flash Player (نگارش 9 به بعد) این توانایی را داده است.

■ جاوااسکریپت: که رسماً EMCAScript نامیده می‌شود، یک ابزار برنامه‌نویسی سمت-کاربری آماده است.

■ مایکروسافت روشن‌نقره‌ای (به انگلیسی Microsoft Silverlight) یک افزونه مرورگر شرکت مایکروسافت است که توانایی خلق پویانمایی، گرافیک‌های برداری و ویدئوهای با وضوح تصویری بالا را داراست. این افزونه خود به وسیله زبان‌های برنامه‌نویسی .NET و XAML نوشته شده است.

ب ) برنامه‌نویسی سوی کارپرداز

■ ASP (محصولی از مایکروسافت)

■ ترکیب یخی (به انگلیسی ColdFusion – محصولی از شرکت Adobe و مایکرومدیا)

■ CGI و Perl (منبع باز)

■ جاوا به عنوان نمونه J2EE یا WebObject

■ لتوس دومنیو

■ PHP (منبع باز)

■ Ruby، به عنوان نمونه Ruby on Rails (منبع باز)

■ گفتگوی کوچک (به انگلیسی SmallTalk) به عنوان نمونه «کناردریا» (به انگلیسی Seaside)، AIDA/Web

■ SSJS: جاوااسکریپت سمت-کارپرداز به عنوان نمونه آپتانا ژاکسر (به انگلیسی Aptana Jaxer)، مازیلا رینو (به انگلیسی Mozilla Rhino )

■ گوی وبی (به انگلیسی Websphere – محصولی از IBM)

■ .NET (محصول مایکروسافت)

به هر حال دانستن زبان‌هایی مانند Ruby و Python به شکل جفتی همراه با دیگر خدمت دهنده پایگاه داده به غیر از MySQL کمتر پیش می‌آید. در زیر نمونه‌هایی از دیگر پایگاه‌های داده تحت استفاده در وب وجود دارند. برخی از توسعه‌دهندگان ترجیح می‌دهند از سامانه ترکیبی LAPR (عبارت است از: سیستم‌عامل لینوکس، راه‌انداز کارپرداز Apache، فن‌آوری پایگاه داده PostgreSQ و زبان برنامه‌نویسی وب Ruby on Rails) برای توسعه وب استفاده کنند.






فن‌آوری پایگاه داده

■ Apache Derby

■ DB2

■ پرنده آتشین (Firebird)

■ مایکروسافت اس کیو ال سرور (Microsoft SQL Server)

■ اس کیو ال من (MySQL)

■ Oracle

■ PostgreSQL

■ SQLite

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

■ طراحی گرافیک / طراحی وب

■ مدیریت محتوای صفحات وب

■ مدیریت برنامه نویسی و یکپارچه سازی و توسعه صفحات وب

■ تست استرسی وب سرور درمورد حجم ترافیک و ...

■ تست و آنالیز امنیتی وب سرور

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

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

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






ملاحظات امنیتی

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

برخی از این ملاحظات امنیتی به محیط خدمت‌دهنده بستگی دارد. (مانند خدمات اطلاعات اینترنت مایکروسافت و یا آپاچی) که رایانه را برای کار با زبان‌های برنامه‌نویسی مانند PHP، Ruby، Python، Perl یا ASP آماده می‌کنند. بنابراین لازم است که توسعه‌دهنده وب، خدمت‌دهنده مناسبی را برای کار خود انتخاب نماید. با این حال آزمایش دقیق نرم‌افزارهای کاربردی وب پیش از انتشار عمومی، از نفوذهای امنیتی جلوگیری می‌کند.

نگهداری یک خدمت‌دهنده وب دور از نفوذهای بدون مجوز، اغلب «محدودکردن درگاه خدمت‌دهنده» نامیده می‌شود. بسیاری از فن‌آوری‌ها هنگامی به اجرا درمی‌آیند، که اطلاعات به شکل امن از مکانی به مکان دیگر انتقال داده می‌شود. برای نمونه مجوزهای رمزگذاری متعلق به «لایه حفره امنیتی» (به انگلیسی Secure Socket Layer - SSL) که به واسطه اسناد معتبر منتشر می‌شوند، از کلاه‌برداری‌های اینترنتی جلوگیری می‌کند. بسیاری از توسعه‌دهندگان وب اغلب هنگام انتقال و ذخیره اطلاعات حساس، شکل‌های متفاوتی از رمزگذاری را بکار می‌برند. درک اولیه مفاهیم امنیتی فن‌آوری اطلاعات اغلب بخشی از دانش یک توسعه‌دهنده وب است. به خاطر حفره‌های امنیتی نو در نرم‌افزارهای کاربردی وب که پس از آزمایش و اجرای آن‌ها، پیدا می‌شوند، به‌روزرسانی‌های وصله‌های امنیتی به شکل مستمر برای این نرم‌افزارها منتشر می‌شود. توسعه‌دهندگان وب اغلب برای به روز نگه داشتن نرم‌افزارهای وب، تلاش می‌کنند وصله‌های امنیتی مطابق با وضعیت امنیتی جدید کشف و منتشر کنند.






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






پیوند ورودی
پیوند ورودی یا بک‌لینک (به انگلیسی: Backlink یا Inlink) به ابرپیوند یک وب‌گاه به وب‌گاه دیگر می‌گویند که یکی از موارد تعیین‌کننده‌ی میزان بهینه‌سازی موتور جستجو می‌باشد.






بانکداری الکترونیک

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

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

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

مولر (۲۰۰۸)، بانک‌داری الکترونیک را استفاده بانک‌ها از اینترنت برای ارائه خدمات بانکی به مشتریان و استفاده مشتریان از اینترنت برای ساماندهی، کنترل و انجام تراکنش بر روی حسابهای بانکی خود تعریف می‌کند. با این حال، برخی از صاحبنظران تعریف کلی تری ارائه کرده‌اند و استفاده از سایر ابزارها و کانالهای الکترونیک نظیر تلفن همراه، تلفن و تلویزیون دیجیتال به منظور اطلاعرسانی، ایجاد ارتباط و انجام تراکنش بانکی را نیز مشمول تعریف بانک‌داری الکترونیک دانسته‌اند. مهمترین کانال‌های بانکداری الکترونیک عبارتند از:

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

تاریخچه

پول الکترونیک، برای نخستین بار در سال ۱۹۱۸ در کشور آمریکا توسط بانک‌های فدرال رزرو (Federal Reserve Banks) مورد استفاده قرار گرفت. این بانک‌ها، پرداخت و انتقال وجوه را با استفاده از تلگراف در دستور کار خود قرار دادند. این بانک بعدها با توسعه موسسات تهاتری خودکار (در سال ۱۹۷۲)، زمینه استفاده گسترده از پول الکترونیک را فراهم کرد.

اولین تجربه ساخت دستگاه خودپرداز به سال ۱۹۳۹ برمی‌گردد. این دستگاه که توسط سه مخترع به نام‌های لاتر، جرج و سیمجیان ساخته شد، مورد توجه بانک‌ها و سازمان‌ها قرار نگرفت. با وجود این تجربه ناموفق، سه مخترع دیگر با نام‌های دان وتزل، تام بارنز و جرج چستین در سال ۱۹۶۸، ساخت دستگاه خودپرداز را با مفهومی جدید آغاز کردند. ساخت اولین نمونه آنها، پنج میلیون دلار هزینه در بر داشت. محصول این پروژه در سال ۱۹۷۳ به عنوان اولین دستگاه خودپرداز در بانک کمیکال (Chemical Bank) در شهر نیویورک نصب شد. اولین نسل از دستگاه‌های خودپرداز، به صورت آفلاین کار می‌کردند و پول به صورت خودکار از حساب مشتریان کسر نمی‌شد. بنابراین فقط مشتریان ویژه‌ای که از اعتبار خاصی برخوردار بودند، مجاز به استفاده از این دستگاه‌ها بودند.

منادی سرویس‌های بانکداری خانگی مدرن سرویس‌های بانکداری از راه دور از طریق رسانه‌های الکترونیکی در اوایل دهه هشتاد بودند. در اواخر دهه هشتاد کلمه آنلاین محبوب شد و به استفاده از یک پایانه، صفحه کلید، و صفحه نمایش برای دسترسی به سیستم بانکی از طریق یک خط تلفن اطلاق می‌شد. کلمه بانکداری خانگی همچنین می‌تواند به استفاده از یک صفحه کلید کوچک عددی برای فرستادن صدا از طریق خط تلفن به وسیله دستورالعمل‌هایی برای بانک اطلاق شود. سرویس‌های آنلاین در سال ۱۹۸۱ در نیویورک شروع به کار کردند زمانی که چهار بانک بزرگ شهر سرویس‌های بانکداری خانگی را به وسیله سیستم ویدئوتکس (Videotex) ارائه کردند. به دلیل شکست تجاری تکنولوژی videotext این سرویس‌های بانکداری هرگز محبوب نشد به جز در فرانسه –جایی که استفاده از videotext به وسیله شرکت telecom تامین مالی می‌شد- و انگلستان – که سیستم prestel استفاده می‌شد. اولین سرویس‌های بانکداری آنلاین خانگی در انگلستان به وسیله شرکت ساخت و ساز ناتینگهام (NBS) در سال ۱۹۸۳ پایه ریزی شد. سیستمی که استفاده می‌شد بر پایهٔ سیستم prestel انگلیسی بود و از یک رایانه – مثل BBC Micro- یا صفحه کلید متصل به سیستم تلفن و دستگاه تلویزیون استفاده می‌کرد. این سیستم (که ارتباط خانگی-homelink- نامیده می‌شد) مشاهده آنلاین صورتحسابها، انتقالات بانکی و پرداخت قبوض را ممکن می‌ساخت. برای انجام انتقال بانکی یا پرداخت قبوض، باید یک دستورالعمل نوشته شده حاوی جزئیات دریافت کننده موردنظر به NBS فرستاده شود و آنجا اطلاعات وارد سیستم homelink شود. اغلب دریافت کنندگان، شرکت‌های گاز و برق و تلفن و حساب‌هایی در بانک‌های دیگر بودند. اطلاعات پرداخت انجام شده از طریق Prestel توسط دارنده حساب وارد سیستم NBS می‌شود. یک چک توسط NBS برای دریافت کننده وجه فرستاده می‌شود و یک اطلاعیه حاوی جزئیات پرداخت نیز برای دارنده حساب فرستاده می‌شود. سیستم BACS بعدها برای انتقال مستقیم مستقیم پرداختی ابداع و استفاده شد. موسسه اعتباری فدرال استنفورد اولین موسسه‌ای بود که در اکتبر سال ۱۹۹۴ سرویس‌های بانکداری اینترتی را به همه اعضای خود ارائه کرد.
خدمات بانک‌داری الکترونیک

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

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

ویژگی‌ها

شیوه‌های بانک داری آنلاین ویژگی‌ها و قابلیت‌های مشترک بسیاری دارند ولی اغلب همچنین دارای ویژگی‌هایی با کارکرد خاص هستند. ویژگی‌های مشترک به چند دسته تقسیم می‌شوند:

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

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

پشتیبانی از چندین کاربر با سطوح مجوز متفاوت
فرایند موافقت تراکنش
انتقال سیمی

ویژگی‌هایی که به طور عادی منحصر به بانکداری اینترنتی هستند شامل:

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

شاخه‌های بانکداری الکترونیک

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







مزایای بانک‌داری الکترونیک

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

براساس تحقیقات موسسه Data Monitor مهم‌ترین مزایای بانکداری الکترونیک عبارت‌اند از: تمرکز بر کانال‌های توزیع جدید، ارائه خدمات اصلاح شده به مشتریان و استفاده از راهبردهای تجارت الکترونیک. البته مزایای بانکداری الکترونیک از دیدگاه‌های کوتاه مدت، میان مدت و بلند مدت نیز قابل بررسی است. رقابت یکسان، نگهداری و جذب مشتریان از جمله مزایای بانکداری الکترونیک در کوتاه مدت (کمتر از یکسال) هستند. در میان مدت (کمتر از ۱۸ ماه) مزایای بانکداری الکترونیک عبارت‌اند از: یکپارچه سازی کانالهای مختلف، مدیریت اطلاعات، گستردگی طیف مشتریان، هدایت مشتریان به سوی کانال‌های مناسب با ویژگی‌های مطلوب و کاهش هزینه‌ها، کاهش هزینه پردازش معاملات، ارائه خدمات به مشتریان بازار هدف و ایجاد در آمد نیز از جمله مزایای بلند مدت بانکداری الکترونیک هستند.






خلاصه مزایا

۱- امکان دسترسی مشتریان به دریافت خدمات بانکی بدون حضور فیزیکی با ارتباطات ایمن. ۲- استفاده از اینترنت برای ارائه عملیات و سرویس‌های بانکی و اعمال تغییرات انواع حسابهای مشتری. ۳- ارائه مستقیم خدمات و عملیات بانکی جدید و سنتی به مشتریان از طریق کانال‌های ارتباطی متقابل الکترونیک.






گستره جهانی

براساس گزارش تحقیقاتی موسسه Data Monitor (مرکز تجزیه و تحلیل اطلاعات بانکداری در اروپا) آمار استفاده کنندگان از سیستم‌های بانکداری الکترونیک در هشت کشور فرانسه، آلمان، هلند، اسپانیا، سوئد، سوئیس و انگلیس از ۴٫۵ میلیون نفر در سال ۱۹۹۹ به حدود ۲۲ میلیون نفر در سال ۲۰۰۴ رسیده است. در سال ۲۰۰۵ بیش از ۷۵ درصد شرکتهای فعال در کشورهای توسعه یافته حداقل یکی از خدمات بانکداری الکترونیکی استفاده می‌کنند. امنیت حساب کاربران۲. امکان مراجعه به بانک در هر زمان ومکان۳. باعث رشوپویای اقتصادهرکشور






امنیت

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

سیستم PIN/TAN که PIN نشان دهنده یک رمز عبور برای ورود است و TAN نشان دهنده رمزهای عبور یکبار مصرف است که برای اعتباربخشی و امنیت تراکنش هاست. TANها به شیوه‌های گوناگونی توزیع می‌شوند که معمولترینش اینست که یک لیست از TANها توسط نامه پستی به کاربر بانکداری آنلاین فرستاده می‌شود. امن‌ترین راه استفاده از TANها اینست که آنها رو بر حسب نیاز توسط یک نشان امنیتی تولید کنیم. این TANهای تولید شده توسط نشانه، وابسته به زمان و یک راز امنیتی واحد که در نشانه امنیتی ذخیره شده (که تاییدیه ۲عاملی خوانده می‌شود) هستند. معمولاً بانکداری آنلاین با PIN/TAN از طریق مرورگرهایی که از ارتباطات امن SSL استفاده می‌کنند انجام می‌شود بنابراین نیازی به رمزنگاری اضافه‌ای نیست.
بانکداری آنلاین مبتنی بر امضا که تمام تراکنش‌ها امضا شده و به طور رقمی رمزنگاری می‌شوند. کلیدها برای تولید امضا و رمزنگاری می‌تواند روی کارتهای اعتباری یا هر نوع رسانه حافظه دار بسته به نوع پیاده سازی آن ذخیره شوند.







حملات

بیشتر حملات به بانکداری آنلاین امروزه بر پایه فریب کاربر برای دزدیدن اطلاعات ورود و TANهای معتبر است. یک مثال شناخته شده برای این حملات ساخت صفحه مشابه یک سایت برای فریب کاربر است تا با وارد کردن اطلاعات شخصی خود آنها را در اختیار دزدان قرار دهد. همچنین نوشتن اسکریپت سایت‌های عبور و یا استفاده از ضبط کننده‌های کیبورد (تروجان‌ها) هم به عنوان راه‌هایی برای سرقت اطلاعات افراد به کار می‌رود. یک روش برای حمله به بانکداری آنلاین مبتنی بر امضا اینست که نرم‌افزار مورد استفاده را جوری دستکاری کنند که روی صفححه نمایش تراکنش صحیح را نشان دهد ولی در پشت صحنه، یک تراکنش دروغین امضا شود. گزارش اخیرتکنولوژی FDIC که از گردآوری و همگردانی گزارش فعالیت فایلهای مشکوک بانک‌ها، هر ۳ ماه یکبار تشکیل می‌شود، ۵۳۶ مورد جرائم رایانه‌ای را لیست کرده که به طور میانگین، هر کدام باعث ۳۰۰۰۰ دلار ضرر شده است. این رقم در چارک دوم سال ۲۰۰۷ به ۱۶ میلیون دلار افزایش یافته است. تخلفات رایانه‌ای بین چارک اول و دوم سال ۲۰۰۷ ۱۵۰ درصد افزایش داشته است. گزارش‌ها حاکیست در ۸۰ درصد موارد منبع تجاوز نامعلوم است ولی در حین بانکداری آنلاین انجام گرفته است.







اقدامات متقابل

اقدامات متقابل زیادی وجود دارند که سعی می‌کنند از تجاوز جلوگیری کنند. گواهینامه دیجیتال برای مقابله با صفحات مشابه دروغین به کار می‌روند، استفاده از کارتخوان‌های گروه ۳ تلاشی برای جلوگیری از دستکاری تراکنش‌ها به وسیله نرم‌افزار در انواع روش‌های بانکداری آنلاین مبتنی بر امضا است. برای محافظت سیستمشان از تروجان‌ها، کاربران باید از نرم‌افزارهای تشخیص دهنده ویروس استفاده کنند و مراقب نرم‌افزارهای دانلودی و فایل‌های پیوستی به ایمیل‌ها باشند. در سال ۲۰۰۱ موسسه FFIEC راهنمای تشخیص هویت چندمعیاره (MFA) رامنتشر کرد و از آن پس، تا اواخر ۲۰۰۶ نیاز به حضور در محل بود.







تبادل الکترونیکی داده
تبادل داده‌های تجاری تحت استانداردی خاص که مورد توافق طرفین باشد از یک رایانه به رایانه دیگر بدون دخالت متصدی را تبادل الکترونیکی داده گویند. معتبرترین شیوه تبادل الکترونیکی داده یی دی آی (EDI) نام دارد که اولین بار در سال ۱۹۷۰ میلادی (برابر با ۱۳۴۹ شمسی) توسط شبکه‌های افزاینده ارزش موسوم به VAN برای جایگزینی انتقال داده به‌وسیله مودم و یا سیستم‌های متداول کاغذی ارائه شد. خدمت ارائه شده از استاندارد X۱۲ تعریف شده توسط موسسه ملی استاندارد آمریکا موسوم به ANSI برای تعریف داده‌ها استفاده می‌کرد که هنوز مورد استفاده در آمریکای شمالی و سایر نقاط دنیا می‌باشد. بعدها سازمان ملل استاندارد دیگری را به نام EDIFACT معرفی و به اعضا پیشنهاد کرد که بیشتر در اروپا متداول می‌باشد.
لازم به تذکر است که تبادل الکترونیکی داده مستقل از استاندرد تعریف داده و یا پروتکل انتقال داده می‌باشد ولی برخی به غلط آن را فقط مختص استانداردهای X۱۲ و EDIFACT می‌داند در حالی که با پیدایش اینترنت و XML فصل نوینی در تبادل الکترونیکی داده گشوده شده‌است.






مزایا

تسریع در انجام امور تجاری
کاهش هزینه
افزایش درآمد
کاهش خطا







معایب

هزینه اولیه پیاده سازی
نیاز به نیروی انسانی ماهر

استانداردهای تعریف داده‌های تجاری

اگر چه دو استاندارد ASC X۱۲ و UN EDIFACT از متداول‌ترین استانداردهای داده می‌باشند که به طور گسترده در سراسر دنیا مورد استفاده قرار گرفته‌اند ولی با پیدایش XML استانداردهای دیگری که خاص مجموعه کاری مشخصی هستند طراحی و عرضه شدند.

EDI
ASC X۱۲ - اولین استاندارد داده الکترونیکی که توسط سازمان استاندارد ملی آمریکا ارائه شد. این استاندارد بطور عمده در آمریکا شمالی مورد استفاده قرار میگرد.
UN EDIFACT - استاندارد عرضه شده توسط سازمان ملل که بطور عمده در اروپا مورد استفاده قرار میگرد.
HIPAA
XML
ebXML
RosettaNet
cXML







پروتکل‌های انتقال داده‌های تجاری

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

BISYNC

پروتکلهای بر مبنا اینترنت

AS۱
AS۲
AS۳
GISB







مرحله پیاده سازی

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







مرحله عملیاتی

سناریوی ساده زیر مراحل تولید تا ارسال داده را شرح می‌دهد.

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

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





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

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

یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت‌افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط 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 در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولاً برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

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

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

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

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

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