زبان های برنامه نویسی

۲ مطلب با موضوع «هفته‌ی دوم» ثبت شده است

پایتون یک زبان آسان برای  یاد گرفتن و برای برنامه نویسی قدرتمند می باشد. داده ساختار های کارای سطح بالایی دارد که برای برنامه نویسی object-oriented مناسب می باشند. syntax  زیبا و  dynamic typing  و اینکه این زبان یک زبان مفسری است باعث می شود  این زبان برای نوشتن script و application های سریع مناسب باشد. پایتون یک زبان قابل گسترش می باشد به این معنی که اگر لازم باشد یک تکه کد خیلی سریع باشد می توان آن را با c یا  ++c  نوشت و آن را به برنامه ای که با زبان پایتون نوشته شده ترکیب کرد.

همچنین می توان از آن برای نوشتن script در زبان های دیگر استفاده کرد.


تاریخچه 

پیاده سازی زبان پایتون توسط   Guido van RossumدرCWI  در هلند، سال 1989 آغاز شد. این زبان error handling  بالا داشته .نویسنده ی اصلی این زبان Rossum  شناخته شد و نقش مرکزی این فرد در تعیین مسیر پایتون در لقبی که جامعیت پایتون به او دادند مشخص است که این لقب Benevolent Dictator for Life     می باشد.2.0 python  در 16 oct  سال 2000 با ویژگی های بزرگی مثل garbage collector و پشتیبانی Unicode .

 Rossum  در سال 1991  کد خود را با ورژن 0.9.0 انتشار عمومی داد .


انواع تایپ های موجود در پایتون


در پایتون همانند جاوا تایپ string وجود دارد و عملیات مختلفی می توان روی آن انجام داد. به طور مثال:

>>> 'machine'.upper()
'MACHINE'
>>> 'HELP'.lower()
'help'
>>> len('Help')
4 

انواع تایپ های built-in در پایتون :

1-list : در لیست ها اندیس منفی هم می توانیم داشته باشیم. و داده های داخل لیست می توانند انواع مختلفی داشته باشند حتی می توان لیست ای از لیست ها ایجاد کرد.

مثال ای از لیست و عملیات روی آن:

>>> lstOfLsts = [['a','b','c'],[1,2,3],['one','two','three']] 
>>> lstOfLsts[1][2] 
3
>>> lstOfLsts[0].pop()
'c'
>>> lstOfLsts
[['a', 'b'],[1, 2, 3],['one', 'two', 'three']]


2-tuples :  این داده ساختار شبیه لیست است با این تفاوت که فقط در هنگام ایجاد می توان به  آن  مقدار داد و مقدار آن غیر قابل تغییر می باشد. در syntax  هم تفاوت ای که دارند این است که در هنگام تعریف از پرانتز به جای براکت استفاده می شود.

>>> pair = (3,5)
>>> pair[0]
3
>>> x,y = pair
>>> x
3
>>> y
5 
>>> pair[1] = 6
TypeError: object does not support item assignment

3-set : در set عضو تکراری  نگه داشته نمی شود و syntax آن به صورت زیر است: 

>>> shapes = ['circle','square','triangle','circle']
>>> setOfShapes = set(shapes)
>>> setOfShapes 
set(['circle','square','triangle']) 

4- dictionary :  داده ساختاری است که  یک نوع( object (key را نوع دیگری (value)  نظیر  می کند. key  باید یک type تغییز ناپذیر باشد ( string - tuple - number) باشد اما (value) هر نوع داده ای می تواند باشد.

>>> studentIds = {'knuth': 42.0, 'turing': 56.0}
>>> studentIds['turing']
56.0
ساختار های کنترلی


1-if 

در پایتون هم if یکی از ساختار های کنترلی محسوب می شود و همچنین از آن به عنوان switch -case  هم استفاده می شود.

کلمه ی کلیدی elif مختصر شده ی else if می باشد که مثال زبر استفاده از آن را نشان می دهد.

>>> x = int(raw_input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...      x = 0
...      print 'Negative changed to zero'
... elif x == 0:
...      print 'Zero'
... elif x == 1:
...      print 'Single'
... else:
...      print 'More'
...
More

2- for 

for  در پایتون با زبان های دیگر کمی متفاوت می باشد . در for  ،  می توان  در iteration  آن از item هایی از هر نوع استفاده کرد.مثلا لیست ای از string .

>>> for w in words[:]:  # Loop over a copy of the entire list.
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']


برخی از ویژگی های زبان پایتون


1-lambda function 

زبان پایتون اجازه تعریف function های بی نام در زمان اجرا می دهد. این امکان را با دستوری به نام lambda  فراهم می کند. lambda  در زبان پایتون دقیقا مثل lambda در  زبان های functional  نمی باشد.

قطعه کد زیر تفاوت lambda و function  معمولی را نشان می دهد.

>>> def f (x) : return x**2;
...
>>> print f(8)
64
>>>     
>>> g = lambda x : x**2
>>>
>>> print g(8)
64

2- for 


 همان طور که در مثال مشخص است این تابع و lambda مثل هم عمل می کنند . ولی در    return ، lambda   

وجود ندارد و همیشه در lambda یک statement وجود دارد که برگرداننده می شود.


3- multi -inheritance 

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

به طور مثال:

class First(object):
    def __init__(self):
        print "first"

class Second(object):
    def __init__(self):
        print "second"

class Third(First, Second):
    def __init__(self):
        super(Third, self).__init__()
        print "that's it"

 4- fixed format  

پایتون را می توان تقریبا در دسته ی زبان های fixed format   قرار داد البته به طور کامل fixed format  نیست چون اگر space  در بعضی موارد کم یا زیاد شود error  نمی گیرد ولی  با استفاده از tab  به جای کروشه دستور های موجود در for  یا  if  را مشخص می کند و وجود tab  برای این کار ضروری است .


5- اضافه کردن field 

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

class Student:
   pass

std = Student ()
std.name = "John Smith!"

اگر نام این field در زمان اجرا مشخص می شود:

field_name = ... #read from input
setattr (std, field_name, 5);
۲ نظر موافقین ۰ مخالفین ۰ ۰۴ آذر ۹۱ ، ۱۷:۰۷
فهیمه هاجری

جاوا اسکریپت که آن را به اختصار js نیز می‏نامند، زبانی اسکریپتی است که در بیشتر مرورگرهای وب به عنوان بخشی از مرورگر پیاده‏سازی شده است و هدف از آن بهبود بخشید واسط کابری و تولید صفحات پویای وب است. البته استفاده از جاوا اسکریپت تنها به وب محدود نمی‏شود. در زیر انواعی از این استفاده‏ها ذکر شده‏است:

  • در گوگل کروم برای تولید pluginها از این زبان استفاده می‏شود.
  • در نرم‏افزار geogebra برای رسم شکل‏های هندسی و یا تحلیل آن‏ها استفاده می‏شود.
  • در نرم‏افزار adobe acrobat اجازه‏ی استفاده از جاوا اسکریپت در فایل‏های pdf داده شده است.
تاریخچه
جاوا اسکریپت ابتدا در شرکت Netscape توسط Brendan Eich تولید شد. هدف از انجام این پروژه مقابله با مایکروسافت در حوزه‏ی اینترنت بود. شرکت Netscape می خواست نسخه‏ی قابل حمل جاوا را روی مشتری اجرا کند، نسخه‏ای که توسط یک مفسر اجرا شود. بنابراین ابتدا زبانی را ایجاد کردند که نام آن در هنگام ایجاد Mocha و در اولین توزیع، LiveScript بود که بعد از آن به JavaScript تغییر نام داد.

پس از آن، این زبان به سرعت فراگیر شد و مایکروسافت از آن برای اولین بار در مرورگرش، اینترنت اکسپلورر، در نسخه‏ی 3.0 در سال 1996 استفاده کرد.

هم چنین در همان سال، یعنی سال 1996، Netscape این زبان را برای استاندارد کردن به Ecma International فرستاد و ادامه‏ی این فرآیند منجر به نسخه‏ی استاندارد ECMAScript شد.

ویژگی‏ها

ساخت یافتگی و دستوری
جاوا اسکریپت بیشتر نحو ساختاری زبان C را پشتیبانی می کند، مانند: if، for، switchو ... . یک تفاوت این زبان با C این است که در این زبان استفاده از semi-colon اختیاری است.

typing پویا
در جاوا اسکریپت، مانند اکثر زبان‏های پویا، "نوع" به مقدار نسبت داده می‏شود و نه به متغیر. بنابراین نوع type checking این زبان به صورت ضعیف است(weak typing). برای مثال، متغیری مانند x می تواند در ابتدا مقدارش یک عدد صحیح باشد و سپس مقدار آن را به یک رشته تغییر دهیم و الی آخر. از ویژگی‏های جالب این زبان این است که قابلیت duck typing دارد. duck typing یعنی:

"اگر پرنده‏ای مثل اردک راه برود، مثل اردک شنا کند و صدایش مانند اردک باشد، من به آن می گویم اردک!"

منظور از این اصل در این جا این است که در صورتی که یک شی، متدی مانند شی دیگر داشته باشد، و کسی بخواهد از شی دوم استفاده کند، می تواند از شی اول نیز استفاده کند. برای مثال، این مفهوم در جاوا وجود ندارد. زیرا اگر شما در کلاستان، متدهایی به نام‏های next، hasNext و remove را پیاده‏سازی کنید، هم چنان نمی توانید نمونه‏های این کلاس را به متدی که ورودی‏اش iterator است پاس دهید، هر چند که تمام واسط آن را پیاده‏سازی می‏کند. اما در جاوا اسکریپت این چنین نیست. هر شی‏ی که متد مورد نیاز یا متد دیگر را فراهم کند، می تواند به عنوان ورودی آن قرار گیرد.

ارزیابی زمان-اجرا
از جمله ویژگی‏های جاوا اسکریپت وجود تابعی به نام جاوا eval است که می تواند رشته‏ای را که شامل کدی به همین زبان است را گرفته و مقدار آن را محاسبه کند.

"نوع‏ها" در جاوا اسکریپت
جاوا اسکریپت از انواع مقابل پشتیبانی می‏کند: عدد صحیح، رشته، بولین، آرایه و شی:
var x = 0 // note that semi colon is not important
var x = 0.5; // note dynamic typing var x = "JavaScript" var x = true var x = ["java", "script"] var x = {java: "java", script: "script"} // object

شی گرایی در جاوا اسکریپت

در جاوا اسکریپت، علی رغم بحث‏هایی که در مورد تفاوت‏های شی‏گرایی در جاوا اسکریپت و دیگر زبان‏ها وجود دارد، قابلیت‏های شی‏گرایی بسیار وسیعی موجود است.

برنامه‏نویسی prototype-based

برنامه‏نویسی prototype-based سبکی از برنامه‏نویسی شی‏گراست که در آن کلاس‏ها حضور ندارند و استفاده‏ی مجدد رفتارها طی فرآیندی انجام می‏پذیرد که اشیای موجود را به عنوان ماده‏ی اولیه بیاراییم.

اشیای مرکزی

جاوا اسکریپت اشیایی مرکزی دارد. نمونه‏هایی از این اشیا عبارت‏اند از: Math, Object, Array و String. 

کلاس‏ها

در جاوا اسکریپت کلاس به صورتی که در دیگر زبان‏های برنامه‏نویسی مانند جاوا وجود دارد، وجود ندارد. در عوض، جاوا اسکریپت از توابع به جای کلاس‏ها استفاده می کند:

function Person () {}

اشیا

برای ساخت یک شی از یک کلاس کافی است از new برای یک تابع استفاده کنیم؛ به مثال زیر توجه کنید:

var person1 = new Person ();
var person2 = new Person ();

سازنده

در جاوا اسکریپت، نیاز به نوشتن سازنده نیست، زیرا خود تابع در زمان ساخته شدن صدا زده می‏شود:

function Person () {
    alert ('Person instantiated');
}

صفت

خیلی شبیه C!

function Person (gender) {
    this.gender = gender;
    alert ('Person instantiated');
}

var person1 = new Person ("Male");

متدها

برای تعریف یک متد، کافی است به صورت زیر عمل کنیم:

function Person (gender) {
    this.gender = gender;
    alert ('Person instantiated');
}

Person.prototype.sayHello = function () {
    alert ('Hello');
}

var person1 = new Person ('Male');
person1.sayHello ();
وراثت
کافی است که کلاس مورد نظر را به prototype کلاس فرزند نسبت به دهیم. سپس سازنده را اصلاح کنیم:
function Student () {
    // Call the parent constructor
    Person.call(this);
}

// Inherit Person
Student.prototype = new Person ();

// Correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;

// Add sayGoodbye
Student.prototype.sayGoodbye = function () {
    alert ('goodbye');
}

var student1 = new Student ();
student1.sayHello (); // Inherited from Person
student1.sayGoodbye ();

منابع

ویکی پدیای جاوا اسکریپت

W3Schools

آموزش جاوا اسکریپت توسط موزیلا

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ آذر ۹۱ ، ۱۳:۰۱
نیما حمیدی